diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 9b8327c..c946122 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -2742,6 +2742,19 @@
         </activity>
 
         <activity
+            android:name="Settings$PremiumSmsAccessActivity"
+            android:label="@string/premium_sms_access"
+            android:exported="true">
+            <intent-filter>
+                <action android:name="android.settings.PREMIUM_SMS_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <data android:scheme="package" />
+            </intent-filter>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                       android:value="com.android.settings.applications.specialaccess.premiumsms.PremiumSmsAccess" />
+        </activity>
+
+        <activity
             android:name="Settings$SoundSettingsActivity"
             android:label="@string/sound_settings"
             android:icon="@drawable/ic_homepage_sound"
@@ -3446,21 +3459,6 @@
             </intent-filter>
         </activity>
 
-        <activity-alias
-            android:name="MediaOutputSlice"
-            android:label="@string/media_output_panel_title"
-            android:exported="true"
-            android:targetActivity=".panel.SettingsPanelActivity">
-                <intent-filter>
-                    <action android:name="com.android.settings.panel.action.MEDIA_OUTPUT" />
-                    <category android:name="android.intent.category.DEFAULT" />
-                </intent-filter>
-                <intent-filter>
-                    <action android:name="com.android.settings.panel.action.MEDIA_OUTPUT_GROUP" />
-                    <category android:name="android.intent.category.DEFAULT" />
-                </intent-filter>
-        </activity-alias>
-
         <provider android:name=".slices.SettingsSliceProvider"
                   android:authorities="com.android.settings.slices;android.settings.slices"
                   android:exported="true"
diff --git a/res/drawable/ic_airplane_safe_networks_24dp.xml b/res/drawable/ic_airplane_safe_networks_24dp.xml
new file mode 100644
index 0000000..6c0d9f7
--- /dev/null
+++ b/res/drawable/ic_airplane_safe_networks_24dp.xml
@@ -0,0 +1,35 @@
+<!--
+  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
+  -->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24"
+        android:viewportHeight="24"
+        android:tint="?android:attr/colorControlNormal">
+    <path
+        android:fillColor="#FFFFFFFF"
+        android:pathData="M16,17.5V16l-5.89,-3.75V8.12C10.11,7.5 9.61,7 9,7S7.89,7.5 7.89,8.12v4.12L2,16v1.5l5.89,-1.88v4.12l-1.47,1.12V22L9,21.25L11.58,22v-1.12l-1.47,-1.12v-4.12L16,17.5z"/>
+    <path
+        android:fillColor="#FFFFFFFF"
+        android:pathData="M18.05,9.59C17.69,9.22 17.19,9 16.64,9c-0.55,0 -1.05,0.22 -1.41,0.59L16.64,11L18.05,9.59z"/>
+    <path
+        android:fillColor="#FFFFFFFF"
+        android:pathData="M16.64,7.5c0.96,0 1.84,0.39 2.47,1.03l1.42,-1.42c-1,-1 -2.37,-1.61 -3.89,-1.61s-2.89,0.62 -3.89,1.61l1.42,1.42C14.8,7.89 15.67,7.5 16.64,7.5z"/>
+    <path
+        android:fillColor="#FFFFFFFF"
+        android:pathData="M16.64,4c1.93,0 3.68,0.79 4.95,2.05L23,4.64C21.37,3.01 19.12,2 16.64,2c-2.49,0 -4.74,1.01 -6.36,2.64l1.42,1.42C12.96,4.79 14.71,4 16.64,4z"/>
+</vector>
diff --git a/res/drawable/ic_signal_strength_zero_bar_no_internet.xml b/res/drawable/ic_signal_strength_zero_bar_no_internet.xml
new file mode 100644
index 0000000..f38a368
--- /dev/null
+++ b/res/drawable/ic_signal_strength_zero_bar_no_internet.xml
@@ -0,0 +1,34 @@
+<?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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24.0"
+    android:viewportHeight="24.0"
+    android:tint="?android:attr/colorControlNormal">
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="M2,22l16,0l0,-2l-11,0l13,-13l0,1l2,0l0,-6z"
+        android:strokeAlpha="0.3"
+        android:fillAlpha="0.3"/>
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="M20,10h2v8h-2z"/>
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="M20,20h2v2h-2z"/>
+</vector>
\ No newline at end of file
diff --git a/res/layout-land/choose_lock_pattern.xml b/res/layout-land/choose_lock_pattern.xml
index df40ed4..29c3350 100644
--- a/res/layout-land/choose_lock_pattern.xml
+++ b/res/layout-land/choose_lock_pattern.xml
@@ -37,7 +37,7 @@
             android:layout_width="0dip"
             android:layout_height="match_parent"
             android:layout_weight="1.0"
-            android:layout_marginStart="?attr/sudMarginSides"
+            android:layout_marginStart="?attr/sudMarginStart"
             android:layout_marginBottom="@dimen/sud_content_frame_padding_bottom"
             android:clipChildren="false"
             android:clipToPadding="false"
diff --git a/res/layout-land/confirm_lock_password.xml b/res/layout-land/confirm_lock_password.xml
index 7872585..775f9ad 100644
--- a/res/layout-land/confirm_lock_password.xml
+++ b/res/layout-land/confirm_lock_password.xml
@@ -33,16 +33,16 @@
             style="@style/SudDescription.Glif"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:layout_marginStart="?attr/sudMarginSides"
-            android:layout_marginEnd="?attr/sudMarginSides" />
+            android:layout_marginStart="?attr/sudMarginStart"
+            android:layout_marginEnd="?attr/sudMarginEnd" />
 
         <Button
             android:id="@+id/forgotButton"
             style="@style/SudGlifButton.Secondary"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_marginStart="?attr/sudMarginSides"
-            android:layout_marginEnd="?attr/sudMarginSides"
+            android:layout_marginStart="?attr/sudMarginStart"
+            android:layout_marginEnd="?attr/sudMarginEnd"
             android:layout_gravity="center"
             android:visibility="gone" />
 
@@ -75,8 +75,8 @@
             style="@style/SudGlifButton.Secondary"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_marginStart="?attr/sudMarginSides"
-            android:layout_marginEnd="?attr/sudMarginSides"
+            android:layout_marginStart="?attr/sudMarginStart"
+            android:layout_marginEnd="?attr/sudMarginEnd"
             android:layout_marginBottom="80dp"
             android:layout_gravity="center_horizontal"
             android:text="@string/cancel" />
diff --git a/res/layout-land/confirm_lock_pattern.xml b/res/layout-land/confirm_lock_pattern.xml
index 861c00a..1fd6824 100644
--- a/res/layout-land/confirm_lock_pattern.xml
+++ b/res/layout-land/confirm_lock_pattern.xml
@@ -58,16 +58,16 @@
                     style="@style/SudDescription.Glif"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:layout_marginStart="?attr/sudMarginSides"
-                    android:layout_marginEnd="?attr/sudMarginSides" />
+                    android:layout_marginStart="?attr/sudMarginStart"
+                    android:layout_marginEnd="?attr/sudMarginEnd" />
 
                 <Button
                     android:id="@+id/cancelButton"
                     style="@style/SetupWizardButton.Negative"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:layout_marginStart="?attr/sudMarginSides"
-                    android:layout_marginEnd="?attr/sudMarginSides"
+                    android:layout_marginStart="?attr/sudMarginStart"
+                    android:layout_marginEnd="?attr/sudMarginEnd"
                     android:text="@string/cancel" />
 
                 <Button
@@ -75,8 +75,8 @@
                     style="@style/SudGlifButton.Secondary"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:layout_marginStart="?attr/sudMarginSides"
-                    android:layout_marginEnd="?attr/sudMarginSides"
+                    android:layout_marginStart="?attr/sudMarginStart"
+                    android:layout_marginEnd="?attr/sudMarginEnd"
                     android:layout_gravity="center"
                     android:visibility="gone" />
 
@@ -91,8 +91,8 @@
                     android:id="@+id/errorText"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:layout_marginStart="?attr/sudMarginSides"
-                    android:layout_marginEnd="?attr/sudMarginSides"
+                    android:layout_marginStart="?attr/sudMarginStart"
+                    android:layout_marginEnd="?attr/sudMarginEnd"
                     android:layout_marginBottom="24dp"
                     android:gravity="center_vertical"/>
 
diff --git a/res/layout-land/confirm_lock_pattern_normal.xml b/res/layout-land/confirm_lock_pattern_normal.xml
index ded8d1a..7a59894 100644
--- a/res/layout-land/confirm_lock_pattern_normal.xml
+++ b/res/layout-land/confirm_lock_pattern_normal.xml
@@ -58,16 +58,16 @@
                     android:id="@+id/sud_layout_description"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:layout_marginStart="?attr/sudMarginSides"
-                    android:layout_marginEnd="?attr/sudMarginSides" />
+                    android:layout_marginStart="?attr/sudMarginStart"
+                    android:layout_marginEnd="?attr/sudMarginEnd" />
 
                 <Button
                     android:id="@+id/cancelButton"
                     style="@style/SetupWizardButton.Negative"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:layout_marginStart="?attr/sudMarginSides"
-                    android:layout_marginEnd="?attr/sudMarginSides"
+                    android:layout_marginStart="?attr/sudMarginStart"
+                    android:layout_marginEnd="?attr/sudMarginEnd"
                     android:text="@string/cancel" />
 
                 <Space
@@ -81,8 +81,8 @@
                     android:id="@+id/errorText"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:layout_marginStart="?attr/sudMarginSides"
-                    android:layout_marginEnd="?attr/sudMarginSides"
+                    android:layout_marginStart="?attr/sudMarginStart"
+                    android:layout_marginEnd="?attr/sudMarginEnd"
                     android:layout_marginBottom="24dp"
                     android:gravity="center_vertical"/>
             </LinearLayout>
diff --git a/res/layout-land/fingerprint_enroll_enrolling.xml b/res/layout-land/fingerprint_enroll_enrolling.xml
index 3b77b84..184c9c6 100644
--- a/res/layout-land/fingerprint_enroll_enrolling.xml
+++ b/res/layout-land/fingerprint_enroll_enrolling.xml
@@ -42,7 +42,7 @@
                 android:layout_width="0dp"
                 android:layout_weight="1"
                 android:layout_height="match_parent"
-                android:layout_marginStart="?attr/sudMarginSides"
+                android:layout_marginStart="?attr/sudMarginStart"
                 android:layout_marginBottom="@dimen/sud_content_frame_padding_bottom"
                 android:clipChildren="false"
                 android:clipToPadding="false"
diff --git a/res/layout-land/fingerprint_enroll_find_sensor.xml b/res/layout-land/fingerprint_enroll_find_sensor.xml
index fe9b3d7..5d3e851 100644
--- a/res/layout-land/fingerprint_enroll_find_sensor.xml
+++ b/res/layout-land/fingerprint_enroll_find_sensor.xml
@@ -34,7 +34,7 @@
             android:layout_width="0dp"
             android:layout_weight="1"
             android:layout_height="match_parent"
-            android:layout_marginStart="?attr/sudMarginSides"
+            android:layout_marginStart="?attr/sudMarginStart"
             android:layout_marginBottom="@dimen/sud_content_frame_padding_bottom"
             android:clipChildren="false"
             android:clipToPadding="false"
diff --git a/res/layout-land/wifi_dpp_qrcode_scanner_fragment.xml b/res/layout-land/wifi_dpp_qrcode_scanner_fragment.xml
index 240dbb5..95fef90 100644
--- a/res/layout-land/wifi_dpp_qrcode_scanner_fragment.xml
+++ b/res/layout-land/wifi_dpp_qrcode_scanner_fragment.xml
@@ -33,8 +33,8 @@
             style="@style/TextAppearance.SudGlifBody"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_marginStart="?attr/sudMarginSides"
-            android:layout_marginEnd="?attr/sudMarginSides"
+            android:layout_marginStart="?attr/sudMarginStart"
+            android:layout_marginEnd="?attr/sudMarginEnd"
             android:textAlignment="center"/>
 
         <LinearLayout
@@ -63,8 +63,8 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="16dp"
-                android:layout_marginStart="?attr/sudMarginSides"
-                android:layout_marginEnd="?attr/sudMarginSides"
+                android:layout_marginStart="?attr/sudMarginStart"
+                android:layout_marginEnd="?attr/sudMarginEnd"
                 android:textAlignment="center"
                 android:visibility="invisible"/>
 
diff --git a/res/layout/adb_qrcode_scanner_fragment.xml b/res/layout/adb_qrcode_scanner_fragment.xml
index 9a337d9..5b83cb2 100644
--- a/res/layout/adb_qrcode_scanner_fragment.xml
+++ b/res/layout/adb_qrcode_scanner_fragment.xml
@@ -41,8 +41,8 @@
                 style="@style/TextAppearance.SudGlifBody"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_marginStart="?attr/sudMarginSides"
-                android:layout_marginEnd="?attr/sudMarginSides"
+                android:layout_marginStart="?attr/sudMarginStart"
+                android:layout_marginEnd="?attr/sudMarginEnd"
                 android:textAlignment="center"
                 android:accessibilityLiveRegion="polite"/>
 
@@ -72,8 +72,8 @@
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_marginTop="16dp"
-                    android:layout_marginStart="?attr/sudMarginSides"
-                    android:layout_marginEnd="?attr/sudMarginSides"
+                    android:layout_marginStart="?attr/sudMarginStart"
+                    android:layout_marginEnd="?attr/sudMarginEnd"
                     android:textAlignment="center"
                     android:visibility="invisible"/>
 
diff --git a/res/layout/choose_lock_pattern_common.xml b/res/layout/choose_lock_pattern_common.xml
index 0a2294f..556bdd0 100644
--- a/res/layout/choose_lock_pattern_common.xml
+++ b/res/layout/choose_lock_pattern_common.xml
@@ -74,7 +74,8 @@
                 style="@style/SudDescription.Glif"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:layout_marginHorizontal="?attr/sudMarginSides"
+                android:layout_marginStart="?attr/sudMarginStart"
+                android:layout_marginEnd="?attr/sudMarginEnd"
                 android:minLines="2" />
 
             <TextView android:id="@+id/headerText"
@@ -82,7 +83,8 @@
                 android:layout_height="wrap_content"
                 android:minLines="2"
                 android:gravity="center"
-                android:paddingHorizontal="?attr/sudMarginSides"
+                android:paddingStart="?attr/sudMarginStart"
+                android:paddingEnd="?attr/sudMarginEnd"
                 android:textSize="12sp" />
 
             <com.google.android.setupdesign.view.FillContentLayout
diff --git a/res/layout/confirm_lock_password_base.xml b/res/layout/confirm_lock_password_base.xml
index a0935bf..a1525b7 100644
--- a/res/layout/confirm_lock_password_base.xml
+++ b/res/layout/confirm_lock_password_base.xml
@@ -51,16 +51,16 @@
                 style="@style/SudDescription.Glif"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:layout_marginStart="?attr/sudMarginSides"
-                android:layout_marginEnd="?attr/sudMarginSides" />
+                android:layout_marginStart="?attr/sudMarginStart"
+                android:layout_marginEnd="?attr/sudMarginEnd" />
 
             <Button
                 android:id="@+id/forgotButton"
                 style="@style/SudGlifButton.Secondary"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_marginStart="?attr/sudMarginSides"
-                android:layout_marginEnd="?attr/sudMarginSides"
+                android:layout_marginStart="?attr/sudMarginStart"
+                android:layout_marginEnd="?attr/sudMarginEnd"
                 android:layout_gravity="center"
                 android:visibility="gone" />
         </LinearLayout>
@@ -108,8 +108,8 @@
             style="@style/SudGlifButton.Secondary"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_marginStart="?attr/sudMarginSides"
-            android:layout_marginEnd="?attr/sudMarginSides"
+            android:layout_marginStart="?attr/sudMarginStart"
+            android:layout_marginEnd="?attr/sudMarginEnd"
             android:layout_marginBottom="80dp"
             android:layout_gravity="center_horizontal"
             android:text="@string/cancel" />
diff --git a/res/layout/confirm_lock_password_normal.xml b/res/layout/confirm_lock_password_normal.xml
index 9021f24..089ecdc 100644
--- a/res/layout/confirm_lock_password_normal.xml
+++ b/res/layout/confirm_lock_password_normal.xml
@@ -32,8 +32,8 @@
             style="@style/SudDescription.Glif"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:layout_marginStart="?attr/sudMarginSides"
-            android:layout_marginEnd="?attr/sudMarginSides" />
+            android:layout_marginStart="?attr/sudMarginStart"
+            android:layout_marginEnd="?attr/sudMarginEnd" />
 
         <Space
             android:layout_width="match_parent"
@@ -78,8 +78,8 @@
             style="@style/SudGlifButton.Secondary"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_marginStart="?attr/sudMarginSides"
-            android:layout_marginEnd="?attr/sudMarginSides"
+            android:layout_marginStart="?attr/sudMarginStart"
+            android:layout_marginEnd="?attr/sudMarginEnd"
             android:layout_marginBottom="80dp"
             android:layout_gravity="center_horizontal"
             android:text="@string/cancel" />
diff --git a/res/layout/confirm_lock_pattern_base.xml b/res/layout/confirm_lock_pattern_base.xml
index 9a37eaa..895bb8a 100644
--- a/res/layout/confirm_lock_pattern_base.xml
+++ b/res/layout/confirm_lock_pattern_base.xml
@@ -52,16 +52,16 @@
                 style="@style/SudDescription.Glif"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:layout_marginStart="?attr/sudMarginSides"
-                android:layout_marginEnd="?attr/sudMarginSides" />
+                android:layout_marginStart="?attr/sudMarginStart"
+                android:layout_marginEnd="?attr/sudMarginEnd" />
 
             <Button
                 android:id="@+id/cancelButton"
                 style="@style/SudGlifButton.Secondary"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_marginStart="?attr/sudMarginSides"
-                android:layout_marginEnd="?attr/sudMarginSides"
+                android:layout_marginStart="?attr/sudMarginStart"
+                android:layout_marginEnd="?attr/sudMarginEnd"
                 android:layout_marginBottom="80dp"
                 android:text="@string/cancel" />
 
@@ -70,8 +70,8 @@
                 style="@style/SudGlifButton.Secondary"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_marginStart="?attr/sudMarginSides"
-                android:layout_marginEnd="?attr/sudMarginSides"
+                android:layout_marginStart="?attr/sudMarginStart"
+                android:layout_marginEnd="?attr/sudMarginEnd"
                 android:layout_gravity="center"
                 android:visibility="gone" />
 
@@ -107,7 +107,8 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_gravity="center_horizontal"
-                android:layout_marginHorizontal="?attr/sudMarginSides"
+                android:paddingStart="?attr/sudMarginStart"
+                android:paddingEnd="?attr/sudMarginEnd"
                 android:layout_marginTop="12dp"
                 android:gravity="center_vertical"/>
 
diff --git a/res/layout/confirm_lock_pattern_normal_base.xml b/res/layout/confirm_lock_pattern_normal_base.xml
index 7e2cf8e..7c1502d 100644
--- a/res/layout/confirm_lock_pattern_normal_base.xml
+++ b/res/layout/confirm_lock_pattern_normal_base.xml
@@ -51,8 +51,8 @@
                 android:id="@+id/sud_layout_description"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:layout_marginStart="?attr/sudMarginSides"
-                android:layout_marginEnd="?attr/sudMarginSides" />
+                android:layout_marginStart="?attr/sudMarginStart"
+                android:layout_marginEnd="?attr/sudMarginEnd" />
 
         </LinearLayout>
 
@@ -86,7 +86,8 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_gravity="center_horizontal"
-                android:layout_marginHorizontal="?attr/sudMarginSides"
+                android:layout_marginStart="?attr/sudMarginStart"
+                android:layout_marginEnd="?attr/sudMarginEnd"
                 android:layout_marginTop="12dp"
                 android:gravity="center_vertical"/>
 
@@ -95,8 +96,8 @@
                 style="@style/SudGlifButton.Secondary"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_marginStart="?attr/sudMarginSides"
-                android:layout_marginEnd="?attr/sudMarginSides"
+                android:layout_marginStart="?attr/sudMarginStart"
+                android:layout_marginEnd="?attr/sudMarginEnd"
                 android:layout_marginBottom="80dp"
                 android:text="@string/cancel" />
 
diff --git a/res/layout/emergency_gesture_number_override_dialog.xml b/res/layout/emergency_gesture_number_override_dialog.xml
index 6ac8ad0..429cff8 100644
--- a/res/layout/emergency_gesture_number_override_dialog.xml
+++ b/res/layout/emergency_gesture_number_override_dialog.xml
@@ -32,7 +32,8 @@
             android:imeOptions="actionDone"
             android:inputType="numberSigned"
             android:layout_width="match_parent"
-            android:layout_height="wrap_content"/>
+            android:layout_height="wrap_content"
+            android:minHeight="@dimen/min_tap_target_size"/>
 
         <LinearLayout
             android:layout_width="match_parent"
diff --git a/res/layout/emergency_gesture_switch_bar.xml b/res/layout/emergency_gesture_switch_bar.xml
index 30c32f5..2524601 100644
--- a/res/layout/emergency_gesture_switch_bar.xml
+++ b/res/layout/emergency_gesture_switch_bar.xml
@@ -20,7 +20,8 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_height="wrap_content"
     android:layout_width="match_parent"
-    android:orientation="vertical">
+    android:orientation="vertical"
+    android:importantForAccessibility="no">
 
     <com.android.settings.widget.SwitchBar
         android:id="@+id/switch_bar"
diff --git a/res/layout/panel_slice_slider_row_large_icon.xml b/res/layout/panel_slice_slider_row_large_icon.xml
deleted file mode 100644
index fa5c4cd..0000000
--- a/res/layout/panel_slice_slider_row_large_icon.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?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:id="@+id/slice_slider_layout"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:orientation="vertical">
-
-    <androidx.slice.widget.SliceView
-        android:id="@+id/slice_view"
-        style="@style/Widget.SliceView.Panel.Slider.LargeIcon"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:paddingStart="0dp"
-        android:paddingEnd="0dp"/>
-</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/settings_homepage_container.xml b/res/layout/settings_homepage_container.xml
index f210c54..fe119c6 100644
--- a/res/layout/settings_homepage_container.xml
+++ b/res/layout/settings_homepage_container.xml
@@ -57,6 +57,41 @@
         android:layout_height="wrap_content"
         android:touchscreenBlocksFocus="false"
         android:keyboardNavigationCluster="false">
-        <include layout="@layout/search_bar"/>
+        <LinearLayout
+            android:id="@+id/app_bar_container"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed">
+
+            <LinearLayout
+                android:id="@+id/contextual_suggestion_content"
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/suggestion_height"
+                android:paddingHorizontal="@dimen/suggestion_padding_horizontal"
+                android:paddingBottom="@dimen/suggestion_padding_bottom"
+                android:orientation="vertical"
+                android:gravity="bottom"
+                android:visibility="gone">
+
+                <TextView
+                    android:id="@+id/suggestion_title"
+                    android:text="@string/settings_label"
+                    style="@style/ContextualSuggestionText"/>
+
+                <Button
+                    android:id="@+id/suggestion_button"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="@dimen/suggestion_button_margin_top"
+                    android:paddingHorizontal="@dimen/suggestion_button_padding_horizontal"
+                    android:visibility="gone"
+                    style="@style/ActionPrimaryButton"/>
+
+            </LinearLayout>
+
+            <include layout="@layout/search_bar"/>
+
+        </LinearLayout>
     </com.google.android.material.appbar.AppBarLayout>
 </androidx.coordinatorlayout.widget.CoordinatorLayout>
diff --git a/res/layout/storage_wizard_init.xml b/res/layout/storage_wizard_init.xml
index 8d9870f..e1e78331 100644
--- a/res/layout/storage_wizard_init.xml
+++ b/res/layout/storage_wizard_init.xml
@@ -41,7 +41,7 @@
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
-                android:layout_marginStart="@dimen/sud_glif_margin_sides"
+                android:layout_marginStart="@dimen/sud_glif_margin_start"
                 android:orientation="vertical">
                 <TextView
                     android:layout_width="match_parent"
@@ -108,7 +108,7 @@
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
-                android:layout_marginStart="@dimen/sud_glif_margin_sides"
+                android:layout_marginStart="@dimen/sud_glif_margin_start"
                 android:orientation="vertical">
                 <TextView
                     android:layout_width="match_parent"
diff --git a/res/layout/wifi_dpp_add_device_fragment.xml b/res/layout/wifi_dpp_add_device_fragment.xml
index 8ad6391..3eef1ab 100644
--- a/res/layout/wifi_dpp_add_device_fragment.xml
+++ b/res/layout/wifi_dpp_add_device_fragment.xml
@@ -33,8 +33,8 @@
             style="@style/TextAppearance.SudGlifBody"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_marginStart="?attr/sudMarginSides"
-            android:layout_marginEnd="?attr/sudMarginSides"
+            android:layout_marginStart="?attr/sudMarginStart"
+            android:layout_marginEnd="?attr/sudMarginEnd"
             android:textAlignment="center"
             android:accessibilityLiveRegion="polite"/>
 
diff --git a/res/layout/wifi_dpp_choose_saved_wifi_network_fragment.xml b/res/layout/wifi_dpp_choose_saved_wifi_network_fragment.xml
index 534f32e..10b4702 100644
--- a/res/layout/wifi_dpp_choose_saved_wifi_network_fragment.xml
+++ b/res/layout/wifi_dpp_choose_saved_wifi_network_fragment.xml
@@ -33,8 +33,8 @@
             style="@style/TextAppearance.SudGlifBody"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_marginStart="?attr/sudMarginSides"
-            android:layout_marginEnd="?attr/sudMarginSides"
+            android:layout_marginStart="?attr/sudMarginStart"
+            android:layout_marginEnd="?attr/sudMarginEnd"
             android:textAlignment="center"
             android:accessibilityLiveRegion="polite"/>
 
diff --git a/res/layout/wifi_dpp_qrcode_generator_fragment.xml b/res/layout/wifi_dpp_qrcode_generator_fragment.xml
index 1d9656c..d283bfd 100644
--- a/res/layout/wifi_dpp_qrcode_generator_fragment.xml
+++ b/res/layout/wifi_dpp_qrcode_generator_fragment.xml
@@ -33,8 +33,8 @@
             style="@style/TextAppearance.SudGlifBody"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_marginStart="?attr/sudMarginSides"
-            android:layout_marginEnd="?attr/sudMarginSides"
+            android:layout_marginStart="?attr/sudMarginStart"
+            android:layout_marginEnd="?attr/sudMarginEnd"
             android:textAlignment="center"
             android:accessibilityLiveRegion="polite"/>
 
diff --git a/res/layout/wifi_dpp_qrcode_scanner_fragment.xml b/res/layout/wifi_dpp_qrcode_scanner_fragment.xml
index 3d1e99b..209619c 100644
--- a/res/layout/wifi_dpp_qrcode_scanner_fragment.xml
+++ b/res/layout/wifi_dpp_qrcode_scanner_fragment.xml
@@ -33,8 +33,8 @@
             style="@style/TextAppearance.SudGlifBody"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_marginStart="?attr/sudMarginSides"
-            android:layout_marginEnd="?attr/sudMarginSides"
+            android:layout_marginStart="?attr/sudMarginStart"
+            android:layout_marginEnd="?attr/sudMarginEnd"
             android:textAlignment="center"
             android:accessibilityLiveRegion="polite"/>
 
@@ -64,8 +64,8 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="16dp"
-                android:layout_marginStart="?attr/sudMarginSides"
-                android:layout_marginEnd="?attr/sudMarginSides"
+                android:layout_marginStart="?attr/sudMarginStart"
+                android:layout_marginEnd="?attr/sudMarginEnd"
                 android:textAlignment="center"
                 android:visibility="invisible"/>
 
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 65d11a9..77afb05 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6-adresse"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Gestoorde netwerke"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Intekeninge"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Ander netwerke"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP-instellings"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Wi‑Fi se gevorderde instellngs is nie vir hierdie gebruiker beskikbaar nie"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Stoor"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Vee toegangspunt uit"</string>
     <string name="menu_new" msgid="6571230342655509006">"Nuwe toegangspunt"</string>
     <string name="menu_save" msgid="6611465355127483100">"Stoor"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Gooi weg"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Kanselleer"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Die naamveld kan nie leeg wees nie."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"Die APN kan nie leeg wees nie."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Programme kan teruggestel word"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Stel terug: Wi-Fi, mobiel en Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Dit sal alle netwerkinstellings terugstel, insluitend:\n\n"<li>"Wi‑Fi"</li>\n<li>"Mobiele data"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Vee uit"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Vee afgelaaide SIM-kaarte uit"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Kontak jou diensverskaffer om plaasvervanger-SIM-kaarte af te laai. Dit sal nie enige mobieletoestel-diensplanne kanselleer nie."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Dit sal geen mobielediensplanne kanselleer nie. Kontak jou diensverskaffer om vervanging-SIM\'s af te laai."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Stel instellings terug"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Stel alle netwerkinstellings terug? Jy kan nie hierdie handeling ontdoen nie."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Stel alle netwerkinstellings terug en vee afgelaaide SIM-kaarte uit? Jy kan nie hierdie handeling ontdoen nie."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Tablet is meer as gewoonlik gebruik"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Toestel is meer as gewoonlik gebruik"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Battery kan gouer as gewoonlik afloop"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Bewaar tans batterygesondheid"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Optimeer tans vir batterygesondheid"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Battery word tydelik beperk. Tik om meer te wete te kom."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Jou foon is meer as normaalweg gebruik. Jou battery kan gouer as verwag afloop.\n\nTopprogramme volgens batterygebruik:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Jou tablet is meer as normaalweg gebruik. Jou battery kan gouer as verwag afloop.\n\nTopprogramme volgens batterygebruik:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Maksimum aantal sigbare datastelle"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Stel terug na verstekwaardes"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Outovul-ontwikkelaaropsies is teruggestel"</string>
+    <string name="location_category" msgid="3496759112306219062">"Ligging"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Statusbalkligging-aanduier"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Wys vir alle liggings, insluitend netwerk en konnektiwiteit"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Dwing vol GNSS-metings af"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Spoor alle GNSS-konstellasies en -frekwensies na sonder enige dienssiklussering"</string>
     <string name="device_theme" msgid="5027604586494772471">"Toesteltema"</string>
     <string name="default_theme" msgid="4815428567082263639">"Verstek"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Netwerknaam"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Onderbreek kennisgewings om gefokus te bly"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Kenmerk is nie beskikbaar nie"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Hierdie kenmerk is afgeskakel omdat dit jou foon stadiger maak"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Dwing vol GNSS-metings af"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Spoor alle GNSS-konstellasies en -frekwensies na sonder enige dienssiklussering"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Wys altyd omvaldialoog"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Wys dialoog elke keer as \'n program omval"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Kies ANGLE-geaktiveerde program"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Met Wi-fi-oproepe kan jy oproepe oor niediensverskaffer-netwerke soos sommige wi-fi-netwerke maak en ontvang."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Oproepe"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"voorkeur"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"verkies oproepe"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"verkies SMS"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"nie beskikbaar nie"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Geen SIM nie"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Voorkeure"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Koppel aan publieke netwerke"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"netwerkverbinding, internet, draadloos, data, wifi, wi-fi, wi fi, sellulêr, mobiel, selfoondiensverskaffer, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Nie beskikbaar nie omdat slaaptydmodus aan is"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Terugstelling van kennisgewingbelangrikheid is voltooi."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Programme"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Onvertroude toestel wil toegang tot jou boodskappe hê. Tik vir besonderhede."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Gee toegang tot boodskappe?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"\'n Onvertroude Bluetooth-toestel, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], wil toegang tot jou boodskappe hê.\n\nJy het nog nooit aan [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] gekoppel nie."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Onvertroude toestel wil toegang tot jou kontakte en oproeprekord hê. Tik vir besonderhede."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Gee toegang tot kontakte en oproeprekord?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"\'n Onvertroude Bluetooth-toestel, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], wil toegang tot jou kontakte en oproeprekord hê. Dit sluit in data oor inkomende en uitgaande oproepe.\n\nJy het nog nooit aan [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] gekoppel nie."</string>
 </resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 9d01312..b6a1d67 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"የIPv6 አድራሻዎች"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"የተቀመጡ አውታረ መረቦች"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"የደንበኝነት ምዝገባዎች"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"ሌሎች አውታረ መረቦች"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP ቅንብሮች"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"የላቁ የWi‑Fi ቅንብሮች ለዚህ ተጠቃሚ አይገኙም"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"አስቀምጥ"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"APN ሰርዝ"</string>
     <string name="menu_new" msgid="6571230342655509006">"አዲስ APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"አስቀምጥ"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"ጣለው"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"ይቅር"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"የስም መስክ ባዶ ሊሆን አይችልም"</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN ባዶ መሆን አይችልም።"</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"መተግበሪያዎች ዳግም ሊጀመሩ ይችላሉ"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Wi-Fi፣ ተንቀሳቃሽ ስልክ እና ብሉቱዝን ዳግም አስጀምር"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"የሚከተሉትን ጨምሮ ይህ ሁሉንም የአውታረ መረብ ቅንብሮችን ዳግም ያቀናብራል፦\n\n"<li>"Wi‑Fi"</li>\n<li>"የተንቀሳቃሽ ስልክ ውሂብ"</li>\n<li>"ብሉቱዝ"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"ደምስስ"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"የወረዱ ሲሞችን ይደምስሱ"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"ምትክ ሲሞችን ለማውረድ፣ የእርስዎን አገልግሎት አቅራቢ ያነጋግሩ። ይህ ማናቸውም የተንቀሳቃሽ ስልክ አገልግሎት ዕቅዶችን አይሰርዝም።"</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"ይህ ማናቸውም የተንቀሳቃሽ ስልክ አገልግሎት ዕቅዶችን አይሰርዝም። ተተኪ ሲሞችን ለማውረድ፣ የአገልግሎት አቅራቢዎን ያነጋግሩ።"</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"ቅንብሮችን ዳግም ያቀናብሩ"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"ሁሉም አውታረ መረብ ቅንብሮች ዳግም ይጀምሩ? ይህን እርምጃ መቀልበስ አይችሉም።"</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"ሁሉም የአውታረ መረብ ቅንብሮች ዳግም ይቀናበሩ እና የወረዱ ሲሞች ይደምሰሱ? ይህን ተግባር መቀልበስ አይችሉም።"</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"ጡባዊው ከተለመደው በላይ ስራ ላይ ውሏል"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"መሣሪያው ከተለመደው በላይ ስራ ላይ ውሏል"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"ባትሪ ከተጠበቀው ጊዜ ቀድሞ ሊያልቅ ይችላል"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"የባትሪ ጤናን መጠበቅ"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"ለባትሪ ጤና ማመቻቸት"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"ባትሪ ለጊዜው ተገድቧል። የበለጠ ለመረዳት መታ ያድርጉ።"</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"የእርስዎ ስልክ ከመደበኛው በላይ ሥራ ላይ ውሏል። የእርስዎ ባትሪ ከተጠበቀው ቀድሞ ሊያልቅ ይችል ይሆናል።\n\nበባትሪ አጠቃቀም ረገድ ከፍተኛ መተግበሪያዎች፦"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"የእርስዎ ጡባዊ ከመደበኛው በላይ ሥራ ላይ ውሏል። የእርስዎ ባትሪ ከተጠበቀው ቀድሞ ሊያልቅ ይችል ይሆናል።\n\nበባትሪ አጠቃቀም ረገድ ከፍተኛ መተግበሪያዎች፦"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"ከፍተኛ የሚታዩ የውሂብ ስብስቦች"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"ወደ ነባሪ እሴቶች ዳግም አስጀምር"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"የራስ-ሙላ ገንቢ አማራጮች ዳግም ተጀምረዋል"</string>
+    <string name="location_category" msgid="3496759112306219062">"አካባቢ"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"የሁኔታ አሞሌ አከባቢ አመልካች"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"አውታረመረብ እና ግንኙነትን ጨምሮ ለሁሉም አካባቢዎች አሳይ"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"ሙሉ የGNSS መለኪያዎች አስገድድ"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"ሁሉንም የGNSS ህብረ ፎቶዎችን እና ድግምግሞሾችን ያለምንም የሥራ ብስክሌት ግልቢያ ዱካቸውን ይከታተሉ"</string>
     <string name="device_theme" msgid="5027604586494772471">"የመሣሪያ ገጽታ"</string>
     <string name="default_theme" msgid="4815428567082263639">"ነባሪ"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"የአውታረ መረብ ስም"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"ትኩረት እንደሰጡ ለመቆየት ማሳወቂያዎችን ባሉበት አቁም"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"ባህሪ አይገኝም"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"የእርስዎን ስልክ ፍጥነት ስለሚቀንስ ይህ ባህሪ ጠፍቷል"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"ሙሉ የGNSS መለኪያዎች አስገድድ"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"ሁሉንም የGNSS ህብረ ፎቶዎችን እና ድግምግሞሾችን ያለምንም የሥራ ብስክሌት ግልቢያ ዱካቸውን ይከታተሉ"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"የስንክል ንግግር ሳጥንን ሁልጊዜ አሳይ"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"መተግበሪያ በሚሰናከልበት እያንዳንዱ ጊዜ የንግግር ሳጥን አሳይ"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"በANGLE የነቃ መተግበሪያ ይምረጡ"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"የWi‑Fi ጥሪ እንደ አንዳንድ የWi-Fi አውታረ መረቦች ያሉ የአገልግሎት አቅራቢ ባልሆኑ አውታረ መረቦች ላይ ጥሪዎችን እንዲያደርጉ እና እንዲቀበሉ ያስችልዎታል።"</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"ጥሪዎች"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"ኤስኤምኤስ"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"የተመረጡ"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"ጥሪዎች ተመርጠዋል"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"ኤስኤምኤስ ተመርጧል"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"አይገኝም"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"SIM የለም"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"ምርጫዎች"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"ከይፋዊ አውታረ መረቦች ጋር አገናኝ"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"የአውታረ መረብ ግንኙነት በይነመረብ፣ ገመድ-አልባ፣ ውሂብ፣ wifi፣ wi-fi፣ wi fi፣ ተንቀሳቃሽ ስልክ፣ ሞባይል፣ የተንቀሳቃሽ ስልክ አገልግሎት አቅራቢ፣ 4ጂ፣ 3ጂ፣ 2ጂ፣ lte፣ ኤልቲኢ"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"የመኝታ ሰዓት ሁነታ ስለበራ የማይገኝ"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"የማሳወቂያ አስፈላጊነት ዳግም አስጀምር ተጠናቅቋል።"</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"መተግበሪያዎች"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"እምነት የማይጣልበት መሣሪያ መልዕክቶችዎን መድረስ ይፈልጋል። ዝርዝሮችን ለማግኘት መታ ያድርጉ"</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"የመልዕክቶች መዳረሻ ይፈቀድ?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"እምነት የማይጣልበት የብሉቱዝ መሣሪ፣ [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>]፣ መልዕክቶችዎን መድረስ ይፈልጋል።\n\nከዚህ በፊት ከ[<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] ጋር አልተገናኙም።"</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"እምነት የማይጣልበት መሣሪያ እውቂያዎችዎን እና የጥሪ ምዝግብ ማስታወሻውን መድረስ ይፈልጋል። ዝርዝሮችን ለማግኘት መታ ያድርጉ"</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"የእውቂያዎች እና የጥሪ ምዝግብ ማስታወሻ መዳረሻ ይፈቀድ?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"እምነት የማይጣልበት የብሉቱዝ መሣሪያ፣ [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>]፣ እውቂያዎችዎን እና የጥሪ ምዝግብ ማስታወሻን መድረስ ይፈልጋል። ይህ ስለ ገቢ እና ወጪ ጥሪዎች ውሂብን ያካትታል።\n\n ከዚህ በፊት ከ[<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] ጋር አልተገናኙም።"</string>
 </resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 563c3e0..4b41b76 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -1102,8 +1102,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"‏عناوين IPv6"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"الشبكات المحفوظة"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"الاشتراكات"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"الشبكات الأخرى"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"‏إعدادات IP"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"‏إعدادات Wi‑Fi المتقدمة ليست متاحة لهذا المستخدم."</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"حفظ"</string>
@@ -1681,7 +1680,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"‏حذف APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"اسم نقطة وصول جديد"</string>
     <string name="menu_save" msgid="6611465355127483100">"حفظ"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"إلغاء"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"إلغاء"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"لا يمكن أن يكون حقل الاسم فارغًا."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"‏لا يمكن أن يكون APN فارغًا."</string>
@@ -1696,8 +1695,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"يمكن إعادة ضبط التطبيقات."</string>
     <string name="reset_network_title" msgid="1395494440355807616">"‏إعادة ضبط شبكة Wi-Fi والجوّال والبلوتوث"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"‏سيؤدي هذا إلى إعادة ضبط كل إعدادات الشبكة، بما فيها:\n\n"<li>"شبكة Wi‑Fi"</li>\n<li>"بيانات الجوّال"</li>\n<li>"البلوتوث"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"محو البيانات"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"‏محو بيانات شرائح SIM التي تم تنزيلها"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"‏لتنزيل شرائح SIM بديلة، يمكنك التواصل مع مشغّل شبكة الجوّال. لن يؤدي ذلك إلى إلغاء أيّ خطة من خطط خدمة الجوّال."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"‏لن يؤدي هذا إلى إلغاء أيّ خطة من خطط خدمة الجوّال. لتنزيل شرائح SIM بديلة، يمكنك التواصل مع مشغّل شبكة الجوّال."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"إعادة ضبط الإعدادات"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"هل تريد إعادة ضبط جميع إعدادات الشبكة؟ لا يمكنك التراجع عن هذا الإجراء."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"‏هل تريد إعادة ضبط كل إعدادات الشبكة ومحو بيانات شريحة SIM التي تم تنزيلها؟ لا يمكنك التراجع عن هذا الإجراء."</string>
@@ -2580,7 +2580,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"الجهاز اللوحي المستخدَم أكثر من المعتاد"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"الجهاز المستخدَم أكثر من المعتاد"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"قد تنفد البطارية قبل الوقت المعتاد."</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"الحفاظ على سلامة البطارية"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"التحسين لسلامة البطارية"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"تأثير محدود على البطارية مؤقتًا، انقر لمعرفة مزيد من المعلومات."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"تم استخدام هاتفك أكثر من المعتاد. قد ينفذ شحن البطارية قبل الوقت المتوقَّع.\n\nالتطبيقات الأكثر استخدامًا للبطارية:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"تم استخدام جهازك اللوحي أكثر من المعتاد. قد ينفذ شحن البطارية قبل الوقت المتوقَّع.\n\nالتطبيقات الأكثر استخدامًا للبطارية:"</string>
@@ -4971,6 +4971,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"الحد الأقصى لعدد مجموعات البيانات المرئية"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"إعادة الضبط على القيم التلقائية"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"تمّت إعادة ضبط الملء التلقائي لخيارات مطوّري البرامج"</string>
+    <string name="location_category" msgid="3496759112306219062">"الموقع الجغرافي"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"مؤشر الموقع الجغرافي في شريط الحالة"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"إظهار المؤشر لكل المواقع الجغرافية، وأيضًا من خلال الشبكة وإمكانية الاتصال"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"‏فرض كامل لقياسات GNSS"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"‏تتبّع جميع مجموعات وفترات تكرار GNSS التي لا تحتوي على دورات عمل"</string>
     <string name="device_theme" msgid="5027604586494772471">"مظهر الجهاز"</string>
     <string name="default_theme" msgid="4815428567082263639">"تلقائي"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"اسم الشبكة"</string>
@@ -4987,8 +4992,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"إيقاف الإشعارات مؤقتًا للحفاظ على التركيز"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"الميزة غير متوفرة"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"تم إيقاف هذه الميزة لأنها تبطئ هاتفك."</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"‏فرض كامل لقياسات GNSS"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"‏تتبّع جميع مجموعات وفترات تكرار GNSS التي لا تحتوي على دورات عمل"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"عرض مربع حوار الأعطال دائمًا"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"عرض مربع الحوار في كل مرة يتعطل فيها تطبيق"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"‏اختيار التطبيق الذي يستخدم ANGLE"</string>
@@ -5384,6 +5387,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"‏تسمح لك ميزة \"الاتصال عبر Wi-Fi\" بإجراء مكالمات وتلقّيها عبر شبكات غير تابعة لمشغّلي شبكات الجوّال."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"المكالمات"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"مفضّلة"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"المكالمات مفضّلة"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"الرسائل القصيرة مفضّلة"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"غير متاحة"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"‏بلا شريحة SIM"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"التفضيلات"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"‏الاتصال بشبكات Wi-Fi عامة"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"‏الاتصال بالشبكة، الإنترنت، لاسلكي، بيانات، wifi، wi-fi، wi fi، خلوي، جهاز جوّال، مشغل شبكة الجوال، جيل رابع، جيل ثالث، جيل ثاني، lte"</string>
@@ -5392,4 +5400,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"الميزة غير متاحة لأن وضع \"وقت النوم\" مفعّل."</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"اكتملت عملية إعادة ضبط درجة الأهمية الخاصة بالإشعارات."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"التطبيقات"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"يريد جهاز غير موثوق الوصول إلى رسائلك. انقر للحصول على التفاصيل."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"هل تريد السماح بالوصول إلى الرسائل؟"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"يريد جهاز غير موثوق يتضمّن بلوتوث، [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>]، الوصول إلى رسائلك.\n\nلم يتم ربطك بالجهاز [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] في السابق."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"يريد جهاز غير موثوق الوصول إلى جهات الاتصال وسجلّ المكالمات. انقر للحصول على التفاصيل."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"هل تريد السماح بالوصول إلى جهات الاتصال وسجلّ المكالمات؟"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"يريد جهاز غير موثوق يتضمّن بلوتوث، [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>]، الوصول إلى جهات الاتصال وسجلّ المكالمات. يتضمن ذلك الوصول إلى بيانات عن المكالمات الواردة والصادرة.\n\nلم يتم ربطك بالجهاز [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] في السابق."</string>
 </resources>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index 1e14342..2b52ef1 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 ঠিকনাবোৰ"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"ছেভ কৰি ৰখা নেটৱৰ্কসমূহ"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"গ্ৰাহকভুক্তি"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"অন্য নেটৱৰ্ক"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"আইপি ছেটিংসমূহ"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"এই ব্যৱহাৰকাৰীৰ বাবে ৱাই-ফাইৰ উচ্চখাপৰ ছেটিংসমূহ উপলব্ধ নহয়"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"ছেভ কৰক"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"এপিএন মচক"</string>
     <string name="menu_new" msgid="6571230342655509006">"নতুন এপিএন"</string>
     <string name="menu_save" msgid="6611465355127483100">"ছেভ কৰক"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"অগ্ৰাহ্য কৰক"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"বাতিল কৰক"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"নামৰ ঠাইখন খালী থাকিব নোৱাৰে"</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"এপিএন খালী থাকিব নোৱাৰে।"</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"এপ্‌সমূহ ৰিছেট কৰিব পাৰি"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"ৱাই-ফাই, ম’বাইল আৰু ব্লুটুথ ৰিছেট কৰক"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"ইয়ে :\n\n"<li>"ৱাই-ফাই"</li>\n<li>"ম\'বাইল ডেটা"</li>\n<li>"ব্লুটুথ"</li>"কে আদি কৰি সকলো নেটৱৰ্ক ছেটিং ৰিছেট কৰিব"</string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"মচক"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"ডাউনল’ড কৰা ছিমবোৰ মচক"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"বিকল্প ছিম ডাউনল’ড কৰিবলৈ আপোনাৰ বাহকৰ সৈতে যোগাযোগ কৰক। ই কোনো ম’বাইল সেৱাৰ আঁচনি বাতিল নকৰে।"</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"ই কোনো ম’বাইল সেৱাৰ আঁচনি বাতিল নকৰে। সলনি কৰা ছিম ডাউনল’ড কৰিবলৈ আপোনাৰ বাহকৰ সৈতে যোগাযোগ কৰক।"</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"ছেটিংসমূহ ৰিছেট কৰক"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"সকলো নেটৱৰ্কৰ ছেটিংসমূহ ৰিছেট কৰিবনে? আপুনি এই কাৰ্যটো আনডু কৰিব নোৱাৰিব।"</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"সকলো নেটৱৰ্ক ছেটিং ৰিছেট কৰিবনে আৰু সকলো ডাউনল’ড কৰা ছিম মচিবনে? আপুনি এই কাৰ্য আনডু কৰিব নোৱাৰিব।"</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"টেবলেট সামান্য অৱস্থাতকৈ বেছি ব্যৱহাৰ কৰা হ’ল"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"ডিভাইচ সামান্য অৱস্থাতকৈ বেছি ব্যৱহাৰ কৰা হ’ল"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"বেটাৰি আনদিনাতকৈ আগতেই শেষ হ’ব পাৰে"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"বেটাৰীৰ অৱস্থাৰ সংৰক্ষণ"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"বেটাৰীৰ অৱস্থা অপ্টিমাইজ কৰি থকা হৈছে"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"বেটাৰী সাময়িকভাৱে সীমিত কৰা হৈছে। অধিক জানিবলৈ টিপক।"</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"আপোনাৰ ফ’নটো স্বাভাৱিকতকৈ বেছি ব্যৱহাৰ কৰা হৈছে। আপোনাৰ বেটাৰি আশা কৰাতকৈ আগতেই শেষ হ’ব পাৰে।\n\nআটাইতকৈ বেছি বেটাৰি ব্যৱহাৰ কৰা এপ্‌সমূহ:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"আপোনাৰ টেবলেটটো স্বাভাৱিকতকৈ বেছি ব্যৱহাৰ কৰা হৈছে। আপোনাৰ বেটাৰি আশা কৰাতকৈ আগতেই শেষ হ’ব পাৰে।\n\nআটাইতকৈ বেছি বেটাৰি ব্যৱহাৰ কৰা এপ্‌সমূহ:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"দেখিব পৰা অধিকতম ডেটাছেট"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"ডিফ’ল্ট মানলৈ ৰিছেট কৰক"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"বিকাশকৰ্তাৰ স্বয়ংপূৰ্তি হোৱা বিকল্পসমূহ ৰিছেট কৰা হৈছে"</string>
+    <string name="location_category" msgid="3496759112306219062">"অৱস্থান"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"স্থিতি দণ্ডত অৱস্থানৰ সূচক"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"নেটৱৰ্ক আৰু সংযোগকে ধৰি আটাইবোৰ অৱস্থানৰ বাবে দেখুৱাওক"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"সম্পূৰ্ণ জিএনএছএছ পৰিমাপ প্ৰয়োগ কৰক"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"কোনো উপযোগীতা অনুপাতৰ সহায় নোলোৱাকৈ GNSS কনষ্টেলেশ্বন আৰু ফ্ৰিকুৱেন্সী নিৰীক্ষণ কৰক"</string>
     <string name="device_theme" msgid="5027604586494772471">"ডিভাইচৰ থিম"</string>
     <string name="default_theme" msgid="4815428567082263639">"ডিফ\'ল্ট"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"নেটৱৰ্কৰ নাম"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"মনোযোগ বৰ্তাই ৰাখিবলৈ জাননী বন্ধ কৰক"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"সুবিধাসমূহ উপলব্ধ নহয়"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"এই সুবিধাটোৱে আপোনাৰ ফ\'নটোৰ কার্যকলাপ লেহেমীয়া কৰে বাবে ইয়াক অফ কৰা হৈছে"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"সম্পূৰ্ণ জিএনএছএছ পৰিমাপ প্ৰয়োগ কৰক"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"কোনো উপযোগীতা অনুপাতৰ সহায় নোলোৱাকৈ GNSS কনষ্টেলেশ্বন আৰু ফ্ৰিকুৱেন্সী নিৰীক্ষণ কৰক"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"সদায় ক্ৰেশ্ব ডায়ল\'গ দেখুৱাওক"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"কোনো এপ্ ক্ৰেশ্ব হ\'লে প্ৰতিবাৰতে ডায়ল\'গ দেখুৱাওক"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"ANGLE সক্ষম কৰি ৰখা এপ্লিকেশ্বন বাছনি কৰক"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"ৱাই-ফাই কলিঙৰ সুবিধাটোৱে আপোনাক কিছুমান ৱাই-ফাই নেটৱৰ্কৰ দৰে বাহক বহিৰ্ভূত নেটৱৰ্কৰ জৰিয়তে কল কৰিবলৈ আৰু লাভ কৰিবলৈ সুবিধা দিয়ে।"</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"কল"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"এছএমএছ"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"অগ্ৰাধিকাৰ দিয়া"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"কলক অগ্ৰাধিকাৰ দিয়া হৈছে"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"এছএমএছক অগ্ৰাধিকাৰ দিয়া হৈছে"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"উপলব্ধ নহয়"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"ছিম নাই"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"অগ্ৰাধিকাৰ"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"ৰাজহুৱা নেটৱৰ্কসমূহৰ সৈতে সংযোগ কৰক"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"নেটৱৰ্ক সংযোগ, ইণ্টাৰনেট, বেতাঁৰ, ডেটা, ৱাইফাই, ৱাই-ফাই, ৱাই ফাই, চেলুলাৰ, ম’বাইল, চেল কেৰিয়াৰ, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"শোৱাৰ সময়ৰ ম’ড অন হৈ থকাৰ বাবে উপলব্ধ নহয়"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"জাননীৰ গুৰুত্ব ৰিছেট কৰাটো সম্পূৰ্ণ হৈছে।"</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"এপ্‌"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"অবিশ্বস্ত ডিভাইচে আপোনাৰ বাৰ্তাসমূহ এক্সেছ কৰিব বিচাৰিছে। সবিশেষ জানিবলৈ টিপক।"</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"বাৰ্তাৰ এক্সেছ দিবনে?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"এটা অবিশ্বস্ত ব্লুটুথ ডিভাইচ, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>]এ, আপোনাৰ বাৰ্তাসমূহ এক্সেছ কৰিব বিচাৰিছে।\n\nআপুনি আগতে [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]ৰ সৈতে সংযোগ কৰা নাই।"</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"অবিশ্বস্ত ডিভাইচে আপোনাৰ সম্পৰ্কসূচী আৰু কল লগ এক্সেছ কৰিব বিচাৰিছে। সবিশেষ জানিবলৈ টিপক।"</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"সম্পৰ্কসূচী আৰু কল লগ এক্সেছ কৰিবলৈ দিবনে?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"এটা অবিশ্বস্ত ব্লুটুথ ডিভাইচ, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>]এ, আপোনাৰ সম্পৰ্কসূচী আৰু কল লগ এক্সেছ কৰিব বিচাৰিছে। ইয়াত অন্তৰ্গামী আৰু বহিৰ্গামী কল সম্পৰ্কীয় ডেটা অন্তৰ্ভুক্ত।\n\nআপুনি আগতে [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]ৰ সৈতে সংযোগ কৰা নাই।"</string>
 </resources>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index 676d958..3e10a02 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 ünvanları"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Saxlanmış şəbəkələr"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Abunəliklər"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Digər şəbəkələr"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP ayarları"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Təkmilləşmiş Wi‑Fi ayarları bu istifadəçi üçün əlçatmazdır"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Yadda saxlayın"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"APN silin"</string>
     <string name="menu_new" msgid="6571230342655509006">"Yeni APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Yadda saxla"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Kənarlaşdır"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Ləğv edin"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Ad sahəsi boş ola bilməz."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN boş ola bilməz."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Tətbiqlər sıfırlana bilər"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Wi-Fi, mobil və Bluetooth\'u sıfırlayın"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Bununla bütün şəbəkə ayarları sıfırlanacaq, bura daxildir:\n\n"<li>"Wi‑Fi"</li>\n<li>"Mobil data"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Silin"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Endirilən SIM-ləri silin"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Yedək SIM-i endirmək üçün operatorla əlaqə saxlayın. Bu, hər hansı mobil xidmət planını ləğv etməyəcək."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Bununla hər hansı mobil xidmət planı ləğv edilməyəcək. Əvəzedici SIM\'ləri endirmək üçün operatorunuzla əlaqə saxlayın."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Ayarları sıfırlayın"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Bütün şəbəkə ayarları sıfırlansın? Bu əməliyyatı geri qaytara bilməzsiniz."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Bütün şəbəkə ayarları sıfırlanıb, endirilən SIM-lər silinsin? Bu əməliyyatı geri qaytara bilməzsiniz."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Planşet hədindən çox istifadə etdi"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Cihaz həddindən çox istifadə etdi"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Batareya həmişə olduğundan daha tez bitə bilər"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Batareyanın vəziyyəti saxlanılır"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Enerjiyə qənaət üçün optimallaşdırma"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Batareya müvəqqəti məhdudlaşdırılıb. Ətraflı məlumat üçün toxunun."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Telefon həddindən artıq çox işlədilib. Batareya gözləniləndən tez bitə bilər.\n\nƏn çox batareya işlədən tətbiqlər:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Planşet həddindən artıq çox işlədilib. Batareya gözləniləndən tez bitə bilər.\n\nƏn çox batareya işlədən tətbiqlər:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Maksimum görünən datasetlər"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Defolt dəyərlərə sıfırlayın"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Avto doldurma developer seçimləri sıfırlanıb"</string>
+    <string name="location_category" msgid="3496759112306219062">"Məkan"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Status bölməsi məkan göstəricisi"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Şəbəkə və bağlantı daxil olmaqla bütün məkanlar üçün göstərin"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Tam GNSS ölçülərini icra edin"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"İş sistemi olmadan bütün GNSS qruplaşmaları və tezliklərini izləyin"</string>
     <string name="device_theme" msgid="5027604586494772471">"Cihaz teması"</string>
     <string name="default_theme" msgid="4815428567082263639">"Defolt"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Şəbəkə adı"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Foksulanmağa davam etmək üçün bildirişləri dayandırın"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Funksiya əlçatan deyil"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Bu funksiya telefonu yavaşlatdığı üçün deaktiv edilib"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Tam GNSS ölçülərini icra edin"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"İş sistemi olmadan bütün GNSS qruplaşmaları və tezliklərini izləyin"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Xəta dialoqunu həmişə göstərin"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Tətbiqdə xəta baş verdiyi zaman dialoqu göstərin"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"ANGLE aktiv olan tətbiq seçin"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Wi-Fi zəngi bəzi Wi‑Fi şəbəkələri kimi operator olmayan şəbəkələr üzərindən zəng etmək və qəbul etməyinizə imkan verir."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Zənglər"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"tərcih edilənlər"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"tərcih edilən zənglər"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"SMS tərcih edilir"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"əlçatmazdır"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"SIM yoxdur"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Tərcihlər"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"İctimai şəbəkələrə qoşulun"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"şəbəkə bağlantısı, internet, simsiz, data, wifi, wi-fi, wi fi, mobil şəbəkə, mobil, mobil operator, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Yuxu vaxtı rejimi aktiv olduğuna görə əlçatan deyil"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Bildiriş əhəmiyyətinin sıfırlanması tamamlandı."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Tətbiqlər"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Güvənsiz cihaz mesajlarınıza giriş etmək istəyir. Detallar üçün toxunun."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Mesajlara girişə icazə verilsin?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Güvənsiz Bluetooth cihazı [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>] mesajlarınıza giriş etmək istəyir.\n\nDaha öncə [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] cihazına qoşulmamısınız."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Güvənsiz cihaz kontaktlarınıza və zəng siyahınıza giriş etmək istəyir. Detallar üçün toxunun."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Kontaktlara və zəng siyahısına girişə icazə verilsin?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Güvənsiz Bluetooth cihazı [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>] kontaktlarınıza və zəng siyahınıza giriş etmək istəyir. Gələn və gedən zənglər barədə data buna daxildir.\n\nDaha öncə [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] cihazına qoşulmamısınız."</string>
 </resources>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 2a5d957..11c8bce 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -1042,8 +1042,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 adrese"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Sačuvane mreže"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Pretplate"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Ostale mreže"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP podešavanja"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Napredna podešavanja Wi‑Fi mreže nisu dostupna za ovog korisnika"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Sačuvaj"</string>
@@ -1618,7 +1617,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Izbriši naziv pristupne tačke"</string>
     <string name="menu_new" msgid="6571230342655509006">"Nov naziv pristupne tačke"</string>
     <string name="menu_save" msgid="6611465355127483100">"Sačuvaj"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Odbaci"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Otkaži"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Polje Naziv ne sme da bude prazno."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"Polje Naziv pristupne tačke ne sme da bude prazno."</string>
@@ -1633,8 +1632,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Aplikacije mogu da se resetuju"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Resetuj WiFi, mobilnu mrežu i Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Ovim resetujete sva podešavanja mreže, uključujući:\n\n"<li>"Wi‑Fi"</li>\n<li>"Mobilne podatke"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Obriši"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Obriši preuzete SIM kartice"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Da biste preuzeli zamenske SIM kartice, kontaktirajte mobilnog operatera. Time se neće otkazati nijedan tarifni paket."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Ovim ne otkazujete nijedan tarifni paket. Da biste preuzimali rezervne SIM kartice, obratite se mobilnom operateru."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Resetuj podešavanja"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Želite li da resetujete sva podešavanja mreže? Ova radnja ne može da se opozove."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Želite li da resetujete podešavanja mreže i obrišete preuzete SIM kartice? Ova radnja ne može da se opozove."</string>
@@ -2487,7 +2487,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Tablet ste koristili duže nego obično"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Uređaj ste koristili duže nego obično"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Baterija može da se isprazni ranije nego obično"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Održava se stanje baterije"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Optimizuje se radi dobrog stanja baterije"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Baterija je trenutno ograničena. Dodirnite da biste saznali više."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Uređaj ste koristili duže nego obično. Baterija može da se isprazni ranije od očekivanog.\n\nAplikacije sa najvećom potrošnjom baterije:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Tablet ste koristili duže nego obično. Baterija može da se isprazni ranije od očekivanog.\n\nAplikacije sa najvećom potrošnjom baterije:"</string>
@@ -4731,6 +4731,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Maksimalan broj vidljivih skupova podataka"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Resetuj na podrazumevane vrednosti"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Opcije za programera za automatsko popunjavanje su resetovane"</string>
+    <string name="location_category" msgid="3496759112306219062">"Lokacija"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Indikator lokacije statusne trake"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Prikaži sve lokacije, uključujući mrežu i povezivanje"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Prinudno pokreni puna GNSS merenja"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Prati sve GNSS konstalacije i frekvencije bez ciklusa rada"</string>
     <string name="device_theme" msgid="5027604586494772471">"Tema uređaja"</string>
     <string name="default_theme" msgid="4815428567082263639">"Podrazumevana"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Naziv mreže"</string>
@@ -4747,8 +4752,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Pauzirajte obaveštenja radi bolje koncentracije"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Funkcija nije dostupna"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Ova funkcija je isključena jer usporava telefon"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Prinudno pokreni puna GNSS merenja"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Prati sve GNSS konstalacije i frekvencije bez ciklusa rada"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Uvek prikazuj dijalog o otkazivanju"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Prikaži dijalog svaki put kada aplikacija otkaže"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Izaberi aplikaciju omogućenu za ANGLE"</string>
@@ -5135,6 +5138,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Pozivanje preko WiFi-ja vam omogućava da primate i upućujete pozive preko mreža koje ne pripadaju mobilnom operateru, na primer, nekih WiFi mreža."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Pozivi"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"prednost"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"prednost imaju pozivi"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"prednost ima SMS"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"nedostupno"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Nema SIM kartice"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Podešavanja"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Povežite se sa javnim mrežama"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"mrežna veza, internet, bežično, podaci, wifi, wi-fi, wi fi, mobilni telefon, mobilni, mobilni operater, 4g, 3g, 2g, lte"</string>
@@ -5143,4 +5151,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Nedostupno je jer je noćni režim uključen"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Resetovanje važnosti obaveštenja je dovršeno."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Aplikacije"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Nepouzdani uređaj želi da pristupa porukama. Dodirnite za detalje."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Želite li da dozvolite pristup porukama?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Nepouzdani Bluetooth uređaj, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], želi da pristupa porukama.\n\nRanije se niste povezivali sa uređajem [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Nepouzdani uređaj želi da pristupa kontaktima i evidenciji poziva. Dodirnite za detalje."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Želite li da dozvolite pristup kontaktima i evidenciji poziva?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Nepouzdani Bluetooth uređaj, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], želi da pristupa kontaktima i evidenciji poziva. To obuhvata podatke o dolaznim i odlaznim pozivima.\n\nRanije se niste povezivali sa uređajem [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
 </resources>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index e2fdbff..875967b 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -1062,8 +1062,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6-адрасы"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Захаваныя сеткі"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Падпіскі"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Іншыя сеткі"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"Налады IP"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Пашыраныя налады Wi-Fi не даступныя для гэтага карыстальніка"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Захаваць"</string>
@@ -1639,7 +1638,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Выдаліць APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"Новы APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Захаваць"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Адхіліць"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Скасаваць"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Поле «Імя» не можа быць пустым."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"Значэнне APN не можа быць пустым."</string>
@@ -1654,8 +1653,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Праграмы могуць быць скінуты"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Скінуць налады Wi-Fi, мабільнай перадачы даных і Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Гэта прывядзе да скіду ўсіх налад сеткі, у тым ліку:\n\n"<li>"Wi‑Fi"</li>\n<li>"мабільнай перадачы даных"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Сцерці даныя"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Сцерці даныя спампаваных SIM"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Каб спампаваць SIM на замену, звярніцеся да аператара. Гэта не прывядзе да скасавання тарыфных планаў."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Гэта дзеянне не прывядзе да скасавання тарыфных планаў. Каб спампаваць новыя SIM-карты, звярніцеся да аператара."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Скід налад"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Скінуць усе налады сеткі? Гэта дзеянне нельга адрабіць."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Скінуць усе налады сеткі і сцерці ўсе даныя смампаваных SIM? Гэта дзеянне нельга адрабіць."</string>
@@ -2518,7 +2518,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Планшэт выкарыстоўваецца больш, чым звычайна"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Прылада выкарыстоўваецца больш, чым звычайна"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Акумулятар можа разрадзіцца хутчэй, чым звычайна"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Павелічэнне тэрміну службы акумулятара"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Аптымізацыя стану акумулятара"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Зарад акумулятара часова абмежаваны. Націсніце, каб даведацца больш."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Тэлефон выкарыстоўваецца больш, чым звычайна. Акумулятар хутка разрадзіцца.\n\nПраграмы з самым высокім спажываннем энергіі:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Планшэт выкарыстоўваецца больш, чым звычайна. Акумулятар хутка разрадзіцца.\n\nПраграмы з самым высокім спажываннем энергіі:"</string>
@@ -4811,6 +4811,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Максімальная колькасць бачных набораў даных"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Скінуць значэнні да стандартных"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Аўтазапаўненне параметраў распрацоўшчыка было скінута"</string>
+    <string name="location_category" msgid="3496759112306219062">"Месцазнаходжанне"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Індыкатар месцазнаходжання на панэлі стану"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Паказваць для ўсіх месцазнаходжанняў, у тым ліку для месцазнаходжання ў сетцы і месцаў падключэння"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Прымусова правесці поўныя вымярэнні GNSS"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Адсочваць усе групы і частоты GNSS з выключаным працоўным цыклам"</string>
     <string name="device_theme" msgid="5027604586494772471">"Тэма прылады"</string>
     <string name="default_theme" msgid="4815428567082263639">"Стандартная"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Назва сеткі"</string>
@@ -4827,8 +4832,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Прыпыніце апавяшчэнні, каб яны не адцягвалі ўвагу"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Функцыя недаступная"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Гэта функцыя выключана, таму што яна запавольвае працу вашага тэлефона"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Прымусова правесці поўныя вымярэнні GNSS"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Адсочваць усе групы і частоты GNSS з выключаным працоўным цыклам"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Заўсёды паказваць дыялогавыя вокны з памылкамі"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Паказваць дыялогавае акно кожны раз, калі адбываецца збой праграмы"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Выбраць праграму з падтрымкай ANGLE"</string>
@@ -5218,6 +5221,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Wi-Fi-тэлефанія дазваляе рабіць і прымаць выклікі праз сеткі, якія не належаць аператарам, напрыклад праз некаторыя сеткі Wi‑Fi."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Выклікі"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"прыярытэтны"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"прыярытэтныя выклікі"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"прыярытэтныя SMS"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"недаступны"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Няма SIM-карты"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Параметры"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Падключацца да агульнадаступных сетак"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"падключэнне да сеткі, інтэрнэт, бесправадны, даныя, wifi, wi-fi, wi fi, сотавая сетка, мабільны, аператар сотавай сувязі, 4g, 3g, 2g, lte"</string>
@@ -5226,4 +5234,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Недаступна, бо ўключаны начны рэжым"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Скід налад важнасці апавяшчэнняў завершаны."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Праграмы"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Падазроная прылада запытвае доступ да вашых паведамленняў. Націсніце, каб убачыць больш інфармацыі."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Дазволіць доступ да паведамленняў?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Падазроная прылада з Bluetooth, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], запытвае доступ да вашых паведамленняў.\n\nРаней вы не падключаліся да прылады [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Падазроная прылада запытвае доступ да кантактаў і журнала выклікаў. Націсніце, каб убачыць больш інфармацыі."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Дазволіць доступ да кантактаў і журнала выклікаў?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Падазроная прылада з Bluetooth, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], запытвае доступ да кантактаў і журнала выклікаў, у тым ліку да даных пра ўваходныя і выходныя выклікі.\n\nРаней вы не падключаліся да прылады [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
 </resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 9af67f9..08f6d6f 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 адреси"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Запазени мрежи"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Абонаменти"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Други мрежи"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"Настройки за IP"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Разширените настройки за Wi-Fi не са налице за този потребител"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Запазване"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Изтриване на името на точката за достъп (APN)"</string>
     <string name="menu_new" msgid="6571230342655509006">"Ново име на точка за достъп (APN)"</string>
     <string name="menu_save" msgid="6611465355127483100">"Запазване"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Отхвърляне"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Отказ"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Полето за име трябва да се попълни."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"Името на точката за достъп (APN) трябва да се попълни."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Приложенията могат да бъдат нулирани"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Нулиране на настройките за Wi-Fi, мобилни данни и Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Така ще нулирате всички мрежови настройки, включително тези за:\n\n"<li>"Wi‑Fi;"</li>\n<li>"мобилни данни;"</li>\n<li>"Bluetooth."</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Изтриване на данните"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Изтеглени SIM карти: Изтриване"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"За да изтеглите SIM карти за замяна, свържете се с оператора си. Плановете за мобилни услуги няма да бъдат анулирани."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Плановете за мобилни услуги няма да бъдат анулирани. Обърнете се към оператора си, за да изтеглите резервни SIM карти."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Нулиране на настройките"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Да се нулират ли всички настройки за мрежата? Не можете да отмените това действие."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Да се нулират ли всички мрежови настройки и да се изтрият изтеглените SIM карти? Не можете да отмените това действие."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Таблетът е използван повече от обикновено"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Устройството е използвано повече от обикновено"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Батерията може да се изтощи по-рано от обикновено"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Запазване на състоянието на батерията"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Оптимизиране за състоянието на батерията"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Батерията е временно ограничена. Докоснете, за да научите повече."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Телефонът ви е използван повече от обикновено. Батерията може да се изтощи по-рано от очакваното.\n\nПриложения с най-висок разход на батерията:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Таблетът ви е използван повече от обикновено. Батерията може да се изтощи по-рано от очакваното.\n\nПриложения с най-висок разход на батерията:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Максимален брой видими набори от данни"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Възстановяване на стандартните стойности"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Опциите за автоматично попълване за програмисти са нулирани"</string>
+    <string name="location_category" msgid="3496759112306219062">"Местоположение"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Индикатор за местоположението в лентата на състоянието"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Показване за всички местоположения, включително от мрежата и други връзки"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Налагане на пълно проследяване на измерванията с GNSS"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Проследяване на всички констелации и честоти на GNSS без използване на коефициент на запълване"</string>
     <string name="device_theme" msgid="5027604586494772471">"Тема на устройството"</string>
     <string name="default_theme" msgid="4815428567082263639">"Стандартно"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Име на мрежата"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Поставете известията на пауза, за да не ви разсейват"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Функцията не е налице"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Тази функция бе изключена, защото забавя телефона ви"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Налагане на пълно проследяване на измерванията с GNSS"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Проследяване на всички констелации и честоти на GNSS без използване на коефициент на запълване"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Диалоговият прозорец за сривове да се показва винаги"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Диалоговият прозорец да се показва всеки път, когато дадено приложение претърпи срив"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Избиране на активирано за ANGLE приложение"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Функцията за обаждания през Wi-Fi ви дава възможност да извършвате и получавате обаждания през мрежи, които не са на мобилни оператори, като например някои Wi-Fi мрежи."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Обаждания"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"предпочитани"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"предпочитат се обаждания"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"предпочитат се SMS съобщения"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"не е налице"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Няма SIM карта"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Предпочитания"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Свързване с обществени мрежи"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"връзка с мрежата, интернет, безжична мрежа, данни, Wi-Fi, мобилни данни, мобилна мрежа, мобилен оператор, 4G, 3G, 2G, LTE"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Не е налице, тъй като режимът „Време за сън“ е включен"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Нулирането на настройките за важност на известията завърши."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Приложения"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Ненадеждно устройство иска достъп до съобщенията ви. Докоснете за подробности."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Да се разреши ли достъпът до съобщенията?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Ненадеждно устройство с Bluetooth (<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>) иска достъп до съобщенията ви.\n\nДосега не сте се свързвали с(ъс) <xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Ненадеждно устройство иска достъп до контактите и списъка с обажданията ви. Докоснете за подробности."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Да се разреши ли достъпът до контактите и списъка с обажданията?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Ненадеждно устройство с Bluetooth (<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>) иска достъп до контактите и списъка с обажданията ви. Това включва данни за входящите и изходящите обаждания.\n\nДосега не сте се свързвали с(ъс) <xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>."</string>
 </resources>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index f803e6d..a307ea8 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 অ্যাড্রেসগুলি"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"সেভ করা নেটওয়ার্ক"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"সাবস্ক্রিপশন"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"অন্য নেটওয়ার্ক"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP সেটিংস"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"এই ব্যবহারকারীর জন্য ওয়াই-ফাই এর উন্নত সেটিংস উপলব্ধ নয়"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"সেভ করুন"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"APN মুছে দিন"</string>
     <string name="menu_new" msgid="6571230342655509006">"নতুন APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"সেভ করুন"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"খারিজ করুন"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"বাতিল করুন"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"নাম ফিল্ডটি খালি থাকতে পারে না।"</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN খালি থাকতে পারে না।"</string>
@@ -1612,8 +1611,11 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"অ্যাপ রিসেট করা যেতে পারে"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"ওয়াই-ফাই, মোবাইল ও ব্লুটুথ রিসেট"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"এগুলি সহ সমস্ত নেটওয়ার্ক সেটিংস আবার সেট করবে:\n\n"<li>"ওয়াই ফাই "</li>\n<li>"সেলুলার ডেটা "</li>\n<li>"ব্লুটুথ"</li></string>
+    <!-- no translation found for erase_euicc_data_button (728078969563311737) -->
+    <skip />
     <string name="reset_esim_title" msgid="6152167073280852849">"ডাউনলোড করা সিম মুছে ফেলা"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"পরিবর্ত সিম ডাউনলোড করতে আপনার পরিষেবা প্রদানকারীর সাথে যোগাযোগ করুন। এটি মোবাইল পরিষেবার কোনও প্ল্যান বাতিল করবে না।"</string>
+    <!-- no translation found for reset_esim_desc (3662444090563399131) -->
+    <skip />
     <string name="reset_network_button_text" msgid="2281476496459610071">"সেটিংস রিসেট করুন"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"সব নেটওয়ার্ক সেটিংস রিসেট করবেন? আগের সেটিংসে আর ফিরে যেতে পারবেন না।"</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"সব নেটওয়ার্ক সেটিংস রিসেট করতে ও ডাউনলোড করা সিম মুছে ফেলতে চান? এটি আগের অবস্থায় আর ফিরিয়ে আনা যাবে না।"</string>
@@ -2456,7 +2458,8 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"ট্যাবলেট স্বাভাবিকের চেয়ে বেশি ব্যবহৃত হয়েছে"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"ডিভাইস স্বাভাবিকের চেয়ে বেশি ব্যবহৃত হয়েছে"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"প্রত্যাশিত সময়ের আগেই চার্জ শেষ হয়ে যেতে পারে"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"ব্যাটারির চার্জ সাশ্রয় করা হচ্ছে"</string>
+    <!-- no translation found for battery_tip_limited_temporarily_title (7152799456221596915) -->
+    <skip />
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"ব্যাটারির ব্যবহার কিছুক্ষণের জন্য সীমিত করা হয়েছে। আরও জানতে ট্যাপ করুন।"</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"আপনার ফোন স্বাভাবিকের চেয়ে বেশি ব্যবহার হয়েছে। প্রত্যাশিত সময়ের আগেই ব্যাটারির চার্জ শেষ হয়ে যেতে পারে।\n\nব্যাটারি বেশি ব্যবহার করে এমন অ্যাপ:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"আপনার ট্যাবলেট স্বাভাবিকের চেয়ে বেশি ব্যবহার হয়েছে। প্রত্যাশিত সময়ের আগেই ব্যাটারির চার্জ শেষ হয়ে যেতে পারে।\n\nব্যাটারি বেশি ব্যবহার করে এমন অ্যাপ:"</string>
@@ -4651,6 +4654,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"সবচেয়ে বেশিবার দেখা ডেটাসেট"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"ডিফল্ট মানে রিসেট করুন"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"অটো-ফিল ডেভেলপার বিকল্প রিসেট করা হয়েছে"</string>
+    <string name="location_category" msgid="3496759112306219062">"লোকেশন"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"স্ট্যাটাস বার লোকেশন সূচক"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"নেটওয়ার্ক ও কানেক্টিভিটি সমেত সব লোকেশন দেখুন"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"GnssMeasurement সম্পূর্ণভাবে ট্র্যাক করুন"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"ডিউটি-সাইক্লিং বাদে সমস্ত কন্সটেলেশন এবং ফ্রিকোয়েন্সি ট্র্যাক করুন"</string>
     <string name="device_theme" msgid="5027604586494772471">"ডিভাইসের থিম"</string>
     <string name="default_theme" msgid="4815428567082263639">"ডিফল্ট"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"নেটওয়ার্কের নাম"</string>
@@ -4667,8 +4675,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"যাতে বিরক্ত হতে না হয় তার জন্য বিজ্ঞপ্তি পজ করুন"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"ফিচারটি উপলভ্য নেই"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"এই ফিচারটি বন্ধ করা হয়েছে কারণ এটি আপনার ফোনের স্পিড কমিয়ে দেয়"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"GnssMeasurement সম্পূর্ণভাবে ট্র্যাক করুন"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"ডিউটি-সাইক্লিং বাদে সমস্ত কন্সটেলেশন এবং ফ্রিকোয়েন্সি ট্র্যাক করুন"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"প্রত্যেকবার ক্র্যাশ ডায়ালগ দেখাতে দিন"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"কোনও অ্যাপ ক্র্যাশ করলে প্রত্যেকবার ডায়ালগ দেখাতে দিন"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"ANGLE চালু আছে এমন অ্যাপ বেছে নিন"</string>
@@ -4896,14 +4902,10 @@
     <string name="dsds_activation_failure_title" msgid="4467364110584914794">"সিম চালু করা যাচ্ছে না"</string>
     <string name="dsds_activation_failure_body_msg1" msgid="6303921196869256391">"সিম কার্ডটি বের করে আবার ইনসার্ট করুন। এতেও সমস্যা ঠিক না হলে, ডিভাইস রিস্টার্ট করুন।"</string>
     <string name="dsds_activation_failure_body_msg2" msgid="73044349546544410">"সিমটি আবার চালু করার চেষ্টা করুন। এতেও সমস্যা ঠিক না হলে, ডিভাইস রিস্টার্ট করুন।"</string>
-    <!-- no translation found for sim_setup_channel_id (8797972565087458515) -->
-    <skip />
-    <!-- no translation found for post_dsds_reboot_notification_title_with_carrier (3308827462185135307) -->
-    <skip />
-    <!-- no translation found for post_dsds_reboot_notification_text (7533428378211541410) -->
-    <skip />
-    <!-- no translation found for sim_card_label (5632157635124050923) -->
-    <skip />
+    <string name="sim_setup_channel_id" msgid="8797972565087458515">"নেটওয়ার্ক চালু করা"</string>
+    <string name="post_dsds_reboot_notification_title_with_carrier" msgid="3308827462185135307">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> চালু আছে"</string>
+    <string name="post_dsds_reboot_notification_text" msgid="7533428378211541410">"সিম সেটিংস আপডেট করতে ট্যাপ করুন"</string>
+    <string name="sim_card_label" msgid="5632157635124050923">"সিম কার্ড"</string>
     <string name="erase_sim_dialog_title" msgid="881253002169177016">"এই ডাউনলোড করা সিম মুছে ফেলতে চান?"</string>
     <string name="erase_sim_dialog_text" msgid="753031064269699885">"এই সিম মুছে দিলে এই ডিভাইসে <xliff:g id="CARRIER_NAME_A">%1$s</xliff:g> পরিষেবা আর পাওয়া যাবে না।\n\n<xliff:g id="CARRIER_NAME_B">%1$s</xliff:g> পরিষেবা কিন্তু বাতিল হবে না।"</string>
     <string name="erase_sim_confirm_button" msgid="8309115684335320541">"মুছুন"</string>
@@ -5056,14 +5058,29 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"ওয়াই-ফাই কলিংয়ের সাহায্যে ওয়াই-ফাই নেটওয়ার্কের মতো কিছু পরিষেবা প্রদানকারী নয় এমন নেটওয়ার্ক ব্যবহার করে কল করতে এবং কল রিসিভ করতে পারবেন।"</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"কল"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"এসএমএস"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"পছন্দসই"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"কল করা যেতে পারে"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"এসএমএস করা যেতে পারে"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"উপলভ্য নেই"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"কোনও সিম নেই"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"অভিরুচি"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"সর্বজনীন নেটওয়ার্কে কানেক্ট করুন"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"নেটওয়ার্ক কানেকশন, ইন্টারনেট, ওয়্যারলেস, ডেটা, ওয়াই-ফাই, ওয়াই-ফাই, ওয়াই-ফাই, মোবাইল ডেটা, মোবাইল, মোবাইল পরিষেবা প্রদানকারী, 4g, 3g, 2g, lte"</string>
-    <!-- no translation found for view_airplane_safe_networks (7390511371040078514) -->
-    <skip />
-    <!-- no translation found for turn_off_airplane_mode (1334192337050190071) -->
-    <skip />
+    <string name="view_airplane_safe_networks" msgid="7390511371040078514">"বিমানে ব্যবহার করার মতো নেটওয়ার্ক দেখুন"</string>
+    <string name="turn_off_airplane_mode" msgid="1334192337050190071">"বিমান মোড বন্ধ করুন"</string>
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"বেডটাইম মোড চালু থাকায় এই সুবিধা উপলভ্য নয়"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"বিজ্ঞপ্তির দেখানোর অগ্রাধিকার রিসেট করার প্রক্রিয়া সম্পূর্ণ হয়েছে।"</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"অ্যাপ"</string>
+    <!-- no translation found for bluetooth_message_access_notification_content (2986108412562309009) -->
+    <skip />
+    <!-- no translation found for bluetooth_message_access_dialog_title (9009836130395061579) -->
+    <skip />
+    <!-- no translation found for bluetooth_message_access_dialog_content (6004506637437582983) -->
+    <skip />
+    <!-- no translation found for bluetooth_phonebook_access_notification_content (4280361621526852063) -->
+    <skip />
+    <!-- no translation found for bluetooth_phonebook_access_dialog_title (7624607995928968721) -->
+    <skip />
+    <!-- no translation found for bluetooth_phonebook_access_dialog_content (2235876209172857819) -->
+    <skip />
 </resources>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index fae1b16..ab26f46 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -1042,8 +1042,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 adrese"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Sačuvane mreže"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Pretplate"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Druge mreže"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP postavke"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Napredne WiFi postavke nisu dostupne za ovog korisnika"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Sačuvaj"</string>
@@ -1618,7 +1617,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Izbriši APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"Novi APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Sačuvaj"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Odbaci"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Otkaži"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Polje Ime ne može ostati prazno."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"Naziv pristupne tačke ne može biti prazan."</string>
@@ -1633,8 +1632,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Aplikacije se mogu vratiti na zadano"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Vrati WiFi, mobilnu i Bluetooth vezu na zadano"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Sve postavke mreže vratit će se na zadano, uključujući:\n\n"<li>"WiFi"</li>\n<li>"Prijenos podataka na mobilnoj mreži"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Izbriši"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Izbriši preuzete SIM-ove"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Za preuzimanje zamjenskih SIM-ova, obratite se svom mobilnom operateru. Ovim se neće otkazati nijedan paket mobilne usluge."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Ovim se neće otkazati paketi mobilnih usluga. Da preuzmete zamjenske SIM-ove, kontaktirajte svog mobilnog operatera."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Vrati postavke na zadano"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Vratiti sve postavke mreže na zadano? Ovu radnju ne možete poništiti."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Vratiti sve postavke mreže na zadano i izbrisati preuzete SIM-ove? Ovu radnju ne možete poništiti."</string>
@@ -2487,7 +2487,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Koristili ste tablet više nego obično"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Koristili ste uređaj više nego obično"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Baterija bi vam se mogla isprazniti brže nego obično"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Očuvanje stanja baterije"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Optimiziranje radi očuvanja baterije"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Baterija je privremeno ograničena. Dodirnite da saznate više."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Vaš telefon je korišten više nego obično. Baterija se može istrošiti brže nego što je predviđeno.\n\nAplikacije koje najviše troše bateriju:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Vaš tablet je korišten više nego obično. Baterija se može istrošiti brže nego što je predviđeno.\n\nAplikacije koje najviše troše bateriju:"</string>
@@ -4731,6 +4731,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Maksimalan broj vidljivih kompleta podataka"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Vraćanje na zadane vrijednosti"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Opcije za programere za automatsko popunjavanje su vraćene na zadane postavke"</string>
+    <string name="location_category" msgid="3496759112306219062">"Lokacija"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Pokazatelj lokacije na statusnoj traci"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Prikaz za sve lokacije, uključujući mreže i povezivost"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Prisilno omogući potpuno GNSS mjerenje"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Praćenje svih konstelacija i frekvencija GNSS-a bez ciklusa rada"</string>
     <string name="device_theme" msgid="5027604586494772471">"Tema uređaja"</string>
     <string name="default_theme" msgid="4815428567082263639">"Zadano"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Naziv mreže"</string>
@@ -4747,8 +4752,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Pauzirajte obavještenja da ostanete fokusirani"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Funkcija nije dostupna"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Ova funkcija je isključena jer usporava vaš telefon"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Prisilno omogući potpuno GNSS mjerenje"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Praćenje svih konstelacija i frekvencija GNSS-a bez ciklusa rada"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Uvijek prikaži dijaloški okvir za pad aplikacije"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Prikaz dijaloškog okvira pri svakom padu aplikacije"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Odaberite aplikaciju u kojoj je omogućen ANGLE"</string>
@@ -5135,6 +5138,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Pozivanje putem WiFi-ja vam omogućava da uspostavite i primate pozive putem mreža koje ne pripadaju mobilnom operateru, kao što su neke WiFi mreže."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Pozivi"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"preferirano"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"preferiraju se pozivi"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"preferiraju se SMS-ovi"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"nedostupno"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Nema SIM-a"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Postavke"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Povežite se s javnim mrežama"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"mrežna veza, internet, bežični, podaci, wifi, wi-fi, wi fi, celularni, mobilni, mobilni operater, 4g, 3g, 2g, lte"</string>
@@ -5143,4 +5151,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Nedostupno jer je uključen način rada za spavanje"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Poništavanje važnosti obavještenja je završeno."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Aplikacije"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Nepouzdani uređaj želi pristupiti vašim porukama. Dodirnite za detalje."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Dozvoliti pristup porukama?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Nepouzdani Bluetooth uređaj, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], želi pristupiti vašim porukama.\n\nNiste se prije povezivali s uređajem [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Nepouzdani uređaj želi pristupiti vašim kontaktima i zapisniku poziva. Dodirnite za detalje."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Dozvoliti pristup kontaktima i zapisniku poziva?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Nepouzdani Bluetooth uređaj, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], želi pristupiti vašim kontaktima i zapisniku poziva. To obuhvata podatke o dolaznim i odlaznim pozivima.\n\nNiste se prije povezivali s uređajem [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
 </resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index dc8c34d..4072467 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"Adreces IPv6"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Xarxes desades"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Subscripcions"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Altres xarxes"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"Configuració IP"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"La configuració avançada de la Wi‑Fi no està disponible per a aquest usuari"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Desa"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Suprimeix l\'APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"APN nou"</string>
     <string name="menu_save" msgid="6611465355127483100">"Desa"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Descarta"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Cancel·la"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"El camp Nom no pot ser buit."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"L\'APN no pot ser buit."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Les aplicacions es poden restablir"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Restableix Wi-Fi, dades mòbils i Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Es restabliran totes les opcions de configuració de la xarxa, inclosos:\n\n"<li>"la Wi‑Fi"</li>\n<li>"les dades mòbils"</li>\n<li>"el Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Esborra"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Esborra les SIM baixades"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Per baixar targetes SIM de substitució, contacta amb el teu operador de telefonia mòbil. Aquesta acció no cancel·larà cap dels plans de servei mòbil."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Aquesta acció no cancel·larà cap dels plans de servei mòbil. Per baixar targetes SIM de substitució, contacta amb el teu operador."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Restableix la configuració"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Vols restablir totes les opcions de configuració de la xarxa? Aquesta acció no es pot desfer."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Vols restablir totes les opcions de configuració de la xarxa i esborrar les targetes SIM baixades? Aquesta acció no es pot desfer."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"La tauleta s\'ha utilitzat més del que és habitual"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"El dispositiu s\'ha utilitzat més del que és habitual"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Pot ser que la bateria s\'esgoti massa ràpid"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"S\'està mantenint el bon estat de la bateria"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"S\'està optimitzant per a l\'estat de la bateria"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Bateria limitada temporalment. Toca per obtenir més informació."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"El telèfon s\'ha fet servir més del que és habitual i és possible que la bateria s\'esgoti abans del previst.\n\nAplicacions que han consumit més bateria:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"La tauleta s\'ha fet servir més del que és habitual i és possible que la bateria s\'esgoti abans del previst.\n\nAplicacions que han consumit més bateria:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Màxim de conjunts de dades visibles"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Restableix els valors predeterminats"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"S\'han restablert les opcions d\'emplenament automàtic per a desenvolupadors"</string>
+    <string name="location_category" msgid="3496759112306219062">"Ubicació"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Indicador d\'ubicació de la barra d\'estat"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Mostra per a totes les ubicacions, incloses la xarxa i la connectivitat"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Força mesuraments de GNSS complets"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Fes un seguiment de totes les freqüències i constel·lacions de GNSS sense cicle de treball"</string>
     <string name="device_theme" msgid="5027604586494772471">"Tema del dispositiu"</string>
     <string name="default_theme" msgid="4815428567082263639">"Predeterminat"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Nom de la xarxa"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Posa en pausa les notificacions per centrar l\'atenció"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Funció no disponible"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Aquesta funció s\'ha desactivat perquè alenteix el telèfon"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Força mesuraments de GNSS complets"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Fes un seguiment de totes les freqüències i constel·lacions de GNSS sense cicle de treball"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Mostra sempre el quadre de diàleg de bloqueig"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Mostra el quadre de diàleg cada vegada que una aplicació es bloquegi"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Selecciona l\'aplicació compatible amb ANGLE"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"La funció Trucades per Wi‑Fi et permet fer i rebre trucades per xarxes sense operador, com ara algunes xarxes Wi‑Fi."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Trucades"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"preferit"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"es prefereixen les trucades"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"es prefereixen els SMS"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"no disponible"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"No hi ha cap SIM"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Preferències"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Connecta\'t a xarxes públiques"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"connexió a la xarxa, internet, sense fil, dades, wifi, wi‑fi, wi fi, mòbils, mòbil, operador de telefonia mòbil, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"No està disponible perquè el mode d\'hora de dormir està activat"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"S\'ha completat el restabliment de la importància de les notificacions."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Aplicacions"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Un dispositiu que no és de confiança vol accedir als teus missatges. Toca per veure més informació."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Vols permetre l\'accés als missatges?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Un dispositiu Bluetooth que no és de confiança, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], vol accedir als teus missatges. \n\nNo t\'has connectat a [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] abans."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Un dispositiu que no és de confiança vol accedir als teus contactes i al registre de trucades. Toca per veure més informació."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Vols permetre l\'accés als contactes i al registre de trucades?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Un dispositiu Bluetooth que no és de confiança, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], vol accedir als teus contactes i al registre de trucades. Això inclou dades sobre les trucades entrants i sortints.\n\nNo t\'has connectat a [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] abans."</string>
 </resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index b94395d..1dc2e95 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -1062,8 +1062,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"Adresy IPv6"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Uložené sítě"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Odběry"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Ostatní sítě"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"Nastavení IP adresy"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Rozšířená nastavení sítě Wi-Fi nejsou pro tohoto uživatele dostupná."</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Uložit"</string>
@@ -1639,7 +1638,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Smazat přístupový bod"</string>
     <string name="menu_new" msgid="6571230342655509006">"Nový přístupový bod"</string>
     <string name="menu_save" msgid="6611465355127483100">"Uložit"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Zahodit"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Zrušit"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Pole Jméno nesmí být prázdné."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"Název přístupového bodu nesmí být prázdný."</string>
@@ -1654,8 +1653,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Aplikace lze resetovat"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Resetovat Wi-Fi, data a Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Budou resetována nastavení všech sítí, včetně následujících:\n\n"<li>"Wi‑Fi"</li>\n<li>"Mobilní data"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Vymazat"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Vymazat stažení SIM karty"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Chcete-li stáhnout náhradní SIM kartu, kontaktujte operátora. Tímto krokem nebude zrušen mobilní tarif."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Tímto krokem nebude zrušen mobilní tarif. Pokud chcete stáhnout náhradní SIM karty, obraťte se na svého operátora."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Obnovit nastavení"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Chcete resetovat všechna nastavení sítí? Tuto akci nelze vrátit zpět."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Obnovit všechna síťová nastavení a vymazat stažené SIM karty? Tuto akci nelze vrátit zpět."</string>
@@ -2518,7 +2518,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Tablet byl využíván víc než obvykle"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Zařízení bylo využíváno víc než obvykle"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Baterie se možná vybije dříve než obvykle"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Uchování výdrže baterie"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Optimalizace pro výdrž baterie"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Baterie je dočasně omezena. Klepnutím zobrazíte další informace."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Telefon byl využíván víc než obvykle. Baterie se možná vybije dříve, než bylo očekáváno.\n\nAplikace, které nejvíce spotřebovávají baterii:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Tablet byl využíván víc než obvykle. Baterie se možná vybije dříve, než bylo očekáváno.\n\nAplikace, které nejvíce spotřebovávají baterii:"</string>
@@ -4811,6 +4811,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Max. viditelných datových sad"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Resetovat na výchozí hodnoty"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Možnosti automatického vyplňování pro vývojáře byly resetovány"</string>
+    <string name="location_category" msgid="3496759112306219062">"Poloha"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Indikátor polohy na stavovém řádku"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Zobrazit u všech poloh (včetně polohy zjištěné ze sítě a připojení)"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Vynutit úplné měření GNSS"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Sledovat všechny konstelace a frekvence GNSS bez cyklického vypínání a zapínání"</string>
     <string name="device_theme" msgid="5027604586494772471">"Motiv zařízení"</string>
     <string name="default_theme" msgid="4815428567082263639">"Výchozí"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Název sítě"</string>
@@ -4827,8 +4832,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Pokud nechcete být rušeni, oznámení pozastavte"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Funkce není k dispozici"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Tato funkce byla vypnuta, protože zpomaluje telefon"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Vynutit úplné měření GNSS"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Sledovat všechny konstelace a frekvence GNSS bez cyklického vypínání a zapínání"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Vždy zobrazit dialog o pádu"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Zobrazit dialog při každém pádu aplikace"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Vyberte aplikaci podporující ANGLE"</string>
@@ -5218,6 +5221,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Volání přes Wi-Fi umožňuje uskutečňovat a přijímat hovory ze sítí nespravované operátory, jako jsou některé sítě Wi-Fi."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Volání"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"preferované"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"preferované hovory"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"preferované SMS"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"není k dispozici"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Žádná SIM karta"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Předvolby"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Připojovat k veřejným sítím"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"připojení k síti, internet, bezdrátové, data, wifi, wi-fi, wi fi, mobilní síť, mobilní operátor, 4g, 3g, 2g, lte"</string>
@@ -5226,4 +5234,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Nedostupné, protože je zapnutý režim večerky"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Reset důležitosti oznámení byl dokončen."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Aplikace"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Nedůvěryhodné zařízení žádá o přístup k vašim zprávám. Podrobnosti zobrazíte klepnutím."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Chcete povolit přístup ke zprávám?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Nedůvěryhodné zařízení Bluetooth [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>] žádá o přístup k vašim zprávám.\n\nK zařízení [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] jste se ještě nikdy nepřipojili."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Nedůvěryhodné zařízení žádá o přístup k vašim kontaktům a seznamu hovorů. Podrobnosti zobrazíte klepnutím."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Chcete povolit přístup ke kontaktům a seznamu hovorů?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Nedůvěryhodné zařízení Bluetooth [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>] žádá o přístup k vašim kontaktům a seznamu hovorů. To zahrnuje data o příchozích a odchozích hovorech.\n\nK zařízení [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] jste se ještě nikdy nepřipojili."</string>
 </resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index b7860ae..c90a66e 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6-adresser"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Gemte netværk"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Abonnementer"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Andre netværk"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP-indstillinger"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Avancerede Wi-Fi-indstillinger er ikke tilgængelige for denne bruger"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Gem"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Slet adgangspunkt"</string>
     <string name="menu_new" msgid="6571230342655509006">"Nyt adgangspunkt"</string>
     <string name="menu_save" msgid="6611465355127483100">"Gem"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Kassér"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Luk"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Feltet Navn skal udfyldes."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"Du skal angive et adgangspunkt."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Apps kan nulstilles"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Nulstil Wi-Fi, mobil og Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Denne handling nulstiller alle netværksindstillinger, bl.a.:\n\n"<li>"Wi‑Fi"</li>\n<li>"Mobildata"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Ryd"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Ryd downloadede SIM-kort"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Kontakt dit mobilselskab for at downloade nye SIM-kort. Mobilabonnementer opsiges ikke."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Mobilabonnementer opsiges ikke. Kontakt dit mobilselskab for at downloade nye SIM-kort."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Nulstil indstillinger"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Vil du nulstille alle netværksindstillinger? Denne handling kan ikke fortrydes."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Vil du nulstille alle netværksindstillingerne og rydde downloadede SIM-kort? Denne handling kan ikke fortrydes."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Din tablet er blevet brugt mere end normalt"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Enheden er blevet brugt mere end normalt"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Batteriet aflades muligvis hurtigere end normalt"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Sådan får du mest muligt ud af dit batteri"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Optimerer på baggrund af batteritilstanden"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Batteriet er midlertidigt begrænset. Tryk for at få flere oplysninger."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Din telefon er blevet brugt mere end normalt. Dit batteri aflades muligvis hurtigere end forventet.\n\nHer kan du se apps sorteret efter batteriforbrug:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Din tablet er blevet brugt mere end normalt. Dit batteri aflades muligvis hurtigere end forventet.\n\nHer kan du se apps sorteret efter batteriforbrug:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Højeste antal synlige datasæt"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Nulstil til standardværdierne"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Udviklerindstillingerne for autofyld blev nulstillet"</string>
+    <string name="location_category" msgid="3496759112306219062">"Placering"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Placeringsindikator i statusbjælke"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Vis i forbindelse med alle placeringer, herunder netværk og forbindelse"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Gennemtving fuld GNSS-måling"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Registrer alle GNSS-konstellationer og -frekvenser uden opgavegennemløb"</string>
     <string name="device_theme" msgid="5027604586494772471">"Enhedstema"</string>
     <string name="default_theme" msgid="4815428567082263639">"Standard"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Netværksnavn"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Sæt notifikationer på pause, så du kan koncentrere dig"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Funktionen er ikke tilgængelig"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Denne funktion er blevet deaktiveret, fordi den gør din telefon langsom"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Gennemtving fuld GNSS-måling"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Registrer alle GNSS-konstellationer og -frekvenser uden opgavegennemløb"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Vis altid dialogboks med nedbrud"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Vis dialogboks, hver gang en app går ned"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Vælg ANGLE-aktiveret app"</string>
@@ -5052,6 +5055,16 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Med Wi-Fi-opkald kan du foretage og modtage opkald via netværk, der ikke er mobilnetværk, f.eks. Wi‑Fi-netværk."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Opkald"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"Sms"</string>
+    <!-- no translation found for calls_sms_preferred (6016477652522583496) -->
+    <skip />
+    <!-- no translation found for calls_sms_calls_preferred (252913858812799809) -->
+    <skip />
+    <!-- no translation found for calls_sms_sms_preferred (5826706870873784062) -->
+    <skip />
+    <!-- no translation found for calls_sms_unavailable (4055729705246556529) -->
+    <skip />
+    <!-- no translation found for calls_sms_no_sim (2336377399761819718) -->
+    <skip />
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Præferencer"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Opret forbindelse til offentlige netværk"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"netværksforbindelse, internet, trådløs, data, wifi, wi-fi, mobilnetværk, mobil, mobilselskab, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5073,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Ikke tilgængelig, da sengetidstilstand er aktiveret"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Vigtigheden af notifikationer blev nulstillet."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Apps"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"En ikke-godkendt enhed vil gerne have adgang til dine beskeder. Tryk for at få flere oplysninger."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Vil du give adgang til beskeder?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"En ikke-godkendt Bluetooth-enhed, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], vil gerne have adgang til dine beskeder.\n\nDu har ikke oprettet forbindelse til [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] før."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"En ikke-godkendt enhed vil gerne have adgang til dine kontakter og din opkaldsliste. Tryk for at få flere oplysninger."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Vil du give adgang til kontakter og opkaldsliste?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"En ikke-godkendt Bluetooth-enhed, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], vil gerne have adgang til dine kontakter og din opkaldsliste. Dette omfatter data om indgående og udgående opkald.\n\nDu har ikke oprettet forbindelse til [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] før."</string>
 </resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 36b529a..dc99c3a 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -1023,8 +1023,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6-Adressen"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Gespeicherte WLANs"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Abos"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Andere Netzwerke"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP-Einstellungen"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Erweiterte WLAN-Einstellungen sind für diesen Nutzer nicht verfügbar"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Speichern"</string>
@@ -1598,7 +1597,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"APN löschen"</string>
     <string name="menu_new" msgid="6571230342655509006">"Neuer APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Speichern"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Verwerfen"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Abbrechen"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Das Namensfeld darf nicht leer sein."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN darf nicht leer sein."</string>
@@ -1613,8 +1612,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Apps können zurückgesetzt werden"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"WLAN, mobile Daten &amp; Bluetooth zurücksetzen"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Hierdurch werden sämtliche Netzwerkeinstellungen zurückgesetzt, einschließlich:\n\n"<li>"WLAN"</li>\n<li>"Mobile Daten"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Löschen"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Heruntergeladene SIMs löschen"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Wenn du Ersatz-SIMs herunterladen möchtest, wende dich an deinen Mobilfunkanbieter. Dein Mobilfunkvertrag wird dadurch nicht gekündigt."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Dein Mobilfunkvertrag wird dadurch nicht gekündigt. Wende dich an deinen Mobilfunkanbieter, um Ersatz-SIMs herunterzuladen."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Einstellungen zurücksetzen"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Sämtliche Netzwerkeinstellungen zurücksetzen? Dieser Vorgang kann nicht rückgängig gemacht werden."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Alle Netzwerkeinstellungen zurücksetzen und heruntergeladene SIMs löschen? Dieser Vorgang kann nicht rückgängig gemacht werden."</string>
@@ -2457,7 +2457,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Tablet mehr als üblich genutzt"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Gerät mehr als üblich genutzt"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Der Akku könnte früher als üblich leer sein"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Akkuzustand erhalten"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Optimierung des Akkuzustands"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Akku vorübergehend eingeschränkt. Für weitere Informationen tippen."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Dein Smartphone wurde intensiver als üblich genutzt. Der Akku könnte deshalb früher als erwartet leer sein.\n\nApps mit höchstem Akkuverbrauch:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Dein Tablet wurde intensiver als üblich genutzt. Der Akku könnte deshalb früher als erwartet leer sein.\n\nApps mit höchstem Akkuverbrauch:"</string>
@@ -4652,6 +4652,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Maximale Zahl sichtbarer Datensätze"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Auf Standardwerte zurücksetzen"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Die Optionen für automatisches Ausfüllen für Entwickler wurden zurückgesetzt"</string>
+    <string name="location_category" msgid="3496759112306219062">"Standort"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Standortanzeige in der Statusleiste"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Für alle Standorte anzeigen, einschließlich Netzwerk und Verbindung"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Vollständige GNSS-Messung erzwingen"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Alle GNSS-Konstellationen und -Frequenzen ohne GNSS-Zyklus erfassen"</string>
     <string name="device_theme" msgid="5027604586494772471">"Gerätedesign"</string>
     <string name="default_theme" msgid="4815428567082263639">"Standard"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Netzwerkname"</string>
@@ -4668,8 +4673,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Zur besseren Konzentration Benachrichtigungen pausieren"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Funktion nicht verfügbar"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Diese Funktion wurde deaktiviert, weil sie dein Smartphone langsamer macht"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Vollständige GNSS-Messung erzwingen"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Alle GNSS-Konstellationen und -Frequenzen ohne GNSS-Zyklus erfassen"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Bei Absturz immer Absturz-Dialogfeld anzeigen"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Bei App-Abstürzen immer Dialogfeld anzeigen"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"ANGLE-App auswählen"</string>
@@ -4897,14 +4900,10 @@
     <string name="dsds_activation_failure_title" msgid="4467364110584914794">"SIM kann nicht aktiviert werden"</string>
     <string name="dsds_activation_failure_body_msg1" msgid="6303921196869256391">"Nimm die SIM heraus und lege sie dann wieder ein. Sollte das Problem weiterhin bestehen, starte das Gerät neu."</string>
     <string name="dsds_activation_failure_body_msg2" msgid="73044349546544410">"Versuche, die SIM noch einmal zu aktivieren. Sollte das Problem weiterhin bestehen, starte das Gerät neu."</string>
-    <!-- no translation found for sim_setup_channel_id (8797972565087458515) -->
-    <skip />
-    <!-- no translation found for post_dsds_reboot_notification_title_with_carrier (3308827462185135307) -->
-    <skip />
-    <!-- no translation found for post_dsds_reboot_notification_text (7533428378211541410) -->
-    <skip />
-    <!-- no translation found for sim_card_label (5632157635124050923) -->
-    <skip />
+    <string name="sim_setup_channel_id" msgid="8797972565087458515">"Netzwerkaktivierung"</string>
+    <string name="post_dsds_reboot_notification_title_with_carrier" msgid="3308827462185135307">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> ist aktiviert"</string>
+    <string name="post_dsds_reboot_notification_text" msgid="7533428378211541410">"Tippe, um die SIM-Einstellungen zu aktualisieren"</string>
+    <string name="sim_card_label" msgid="5632157635124050923">"SIM-Karte"</string>
     <string name="erase_sim_dialog_title" msgid="881253002169177016">"Diese heruntergeladene SIM löschen?"</string>
     <string name="erase_sim_dialog_text" msgid="753031064269699885">"Wenn du diese SIM löschst, wird der <xliff:g id="CARRIER_NAME_A">%1$s</xliff:g>-Dienst von diesem Gerät entfernt.\n\nDer Mobilfunkvertrag bei <xliff:g id="CARRIER_NAME_B">%1$s</xliff:g> wird dadurch nicht gekündigt."</string>
     <string name="erase_sim_confirm_button" msgid="8309115684335320541">"Löschen"</string>
@@ -5057,14 +5056,23 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Mit WLAN-Telefonie kannst du Anrufe über Netzwerke ohne Mobilfunkanbieter starten und empfangen, wie etwa über einige WLAN-Netzwerke."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Anrufe"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"bevorzugt"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"Anrufe bevorzugt"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"SMS bevorzugt"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"nicht verfügbar"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Keine SIM-Karte"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Einstellungen"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Mit öffentlichen Netzwerken verbinden"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"netzwerkverbindung, internet, kabellos, drahtlos, daten, wlan, w-lan, mobilfunk, mobil, mobilfunkanbieter, 4g, 3g, 2g, lte"</string>
-    <!-- no translation found for view_airplane_safe_networks (7390511371040078514) -->
-    <skip />
-    <!-- no translation found for turn_off_airplane_mode (1334192337050190071) -->
-    <skip />
+    <string name="view_airplane_safe_networks" msgid="7390511371040078514">"Flugsichere Netzwerke anzeigen"</string>
+    <string name="turn_off_airplane_mode" msgid="1334192337050190071">"Flugmodus deaktivieren"</string>
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Nicht verfügbar, weil der Modus „Schlafenszeit“ aktiviert ist"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Die Wichtigkeit von Benachrichtigungen wurde zurückgesetzt."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Apps"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Ein nicht vertrauenswürdiges Gerät fordert Zugriff auf deine Nachrichten an. Weitere Informationen."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Möchtest du den Zugriff auf Nachrichten zulassen?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Ein nicht vertrauenswürdiges Bluetooth-Gerät, <xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>, fordert Zugriff auf deine Nachrichten an.\n\nDu warst bisher noch nicht mit <xliff:g id="DEVICE_NAME_1">%2$s</xliff:g> verbunden."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Ein nicht vertrauenswürdiges Gerät fordert Zugriff auf deine Kontakte und deine Anrufliste an. Weitere Informationen."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Möchtest du den Zugriff auf Kontakte und Anrufliste zulassen?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Ein nicht vertrauenswürdiges Bluetooth-Gerät, <xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>, fordert Zugriff auf deine Kontakte und deine Anrufliste an. Dazu gehören auch Daten über ein- und ausgehende Anrufe.\n\nDu warst bisher noch nicht mit <xliff:g id="DEVICE_NAME_1">%2$s</xliff:g> verbunden."</string>
 </resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 0e2c17a..fe8f6fc 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"Διευθύνσεις IPv6"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Αποθηκευμένα δίκτυα"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Συνδρομές"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Άλλα δίκτυα"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"Ρυθμίσεις IP"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Οι σύνθετες ρυθμίσεις Wi‑Fi δεν είναι διαθέσιμες για αυτόν το χρήστη"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Αποθ/ση"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Διαγραφή APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"Νέο APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Αποθ/ση"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Απόρριψη"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Ακύρωση"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Το πεδίο Όνομα δεν μπορεί να είναι κενό."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"Το APN δεν μπορεί να είναι κενό."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Μπορεί να γίνει επαναφορά των εφαρμογών"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Επαναφ. Wi-Fi/mobile/Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Με αυτόν τον τρόπο θα γίνει επαναφορά όλων των ρυθμίσεων δικτύου, μεταξύ των οποίων για:\n\n"<li>"Wi‑Fi"</li>\n<li>"Δεδομένα κινητής τηλεφωνίας"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Διαγραφή"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Διαγραφή ληφθεισών SIM"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Για λήψη SIM αντικατάστασης, επικοινωνήστε με την εταιρεία κινητής τηλεφωνίας σας. Με αυτήν την ενέργεια, δεν θα ακυρωθεί κάποιο πρόγραμμα υπηρεσιών κινητής τηλεφωνίας."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Με αυτήν την ενέργεια, δεν θα ακυρωθεί κανένα πρόγραμμα υπηρεσιών κινητής τηλεφωνίας. Για τη λήψη SIM αντικατάστασης, επικοινωνήστε με την εταιρεία κινητής τηλεφωνίας σας."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Επαναφορά ρυθμίσεων"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Επαναφορά όλων των ρυθμίσεων δικτύου; Δεν μπορείτε να αναιρέσετε αυτή την ενέργεια."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Να γίνει επαναφορά όλων των ρυθμίσεων δικτύου και διαγραφή όλων των SIM των οποίων έγινε λήψη; Δεν μπορείτε να αναιρέσετε αυτή την ενέργεια."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Το tablet χρησιμοποιείται περισσότερο από το συνηθισμένο"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Η συσκευή χρησιμοποιείται περισσότερο από το συνηθισμένο"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Η μπαταρία μπορεί να εξαντληθεί νωρίτερα από το συνηθισμένο"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Διατήρηση της υγείας της μπαταρίας"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Βελτιστοποίηση για τη διατήρηση της καλής κατάστασης της μπαταρίας"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Η μπαταρία περιορίστηκε προσωρινά. Πατήστε για να μάθετε περισσότερα."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Το τηλέφωνό σας έχει χρησιμοποιηθεί περισσότερο από το συνηθισμένο. Η μπαταρία μπορεί να εξαντληθεί πιο σύντομα από το αναμενόμενο.\n\nΚορυφαίες εφαρμογές βάσει χρήσης μπαταρίας:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Το tablet έχει χρησιμοποιηθεί περισσότερο από το συνηθισμένο. Η μπαταρία μπορεί να εξαντληθεί πιο σύντομα από το αναμενόμενο.\n\nΚορυφαίες εφαρμογές βάσει χρήσης μπαταρίας:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Μέγιστα ορατά σύνολα δεδομένων"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Επαναφορά στις προεπιλεγμένες τιμές"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Έγινε επαναφορά των επιλογών προγραμματιστή αυτόματης συμπλήρωσης"</string>
+    <string name="location_category" msgid="3496759112306219062">"Τοποθεσία"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Ένδειξη τοποθεσίας στη γραμμή κατάστασης"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Εμφάνιση για όλες τις τοποθεσίες, συμπεριλαμβανομένου του δικτύου και της συνδεσιμότητας"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Αναγκαστικές πλήρεις μετρήσεις GNSS"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Παρακολούθηση όλων των πανοραμικών συνθέσεων και των συχνοτήτων GNSS χωρίς κύκλο λειτουργιών"</string>
     <string name="device_theme" msgid="5027604586494772471">"Θέμα συσκευής"</string>
     <string name="default_theme" msgid="4815428567082263639">"Προεπιλογή"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Όνομα δικτύου"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Θέστε σε παύση τις ειδοποιήσεις για να παραμένετε συγκεντρωμένοι"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Η λειτουργία δεν είναι διαθέσιμη"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Αυτή η λειτουργία απενεργοποιήθηκε επειδή καθυστερεί το τηλέφωνό σας"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Αναγκαστικές πλήρεις μετρήσεις GNSS"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Παρακολούθηση όλων των πανοραμικών συνθέσεων και των συχνοτήτων GNSS χωρίς κύκλο λειτουργιών"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Να εμφανίζεται πάντα το παράθυρο διαλόγου σφάλματος"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Να εμφανίζεται το παράθυρο διαλόγου κάθε φορά που παρουσιάζεται σφάλμα σε κάποια εφαρμογή"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Επιλογή εφαρμογής με δυνατότητα χρήσης ANGLE"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Με τη λειτουργία Κλήση Wi-Fi μπορείτε να πραγματοποιείτε και να λαμβάνετε κλήσεις μέσω δικτύων που δεν ανήκουν στην εταιρεία κινητής τηλεφωνίας, όπως ορισμένα δίκτυα Wi-Fi."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Κλήσεις"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"προτιμώνται"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"προτιμώνται οι κλήσεις"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"προτιμώνται τα SMS"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"μη διαθέσιμη"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Δεν υπάρχει SIM"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Προτιμήσεις"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Σύνδεση σε δημόσια δίκτυα"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"σύνδεση δικτύου, διαδίκτυο, ασύρματο, δεδομένα, wifi, wi-fi, wi fi, δίκτυο κινητής τηλεφωνίας, κινητό, εταιρεία κινητής τηλεφωνίας, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Μη διαθέσιμη επιλογή επειδή η λειτουργία ώρας ύπνου είναι ενεργή."</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Η επαναφορά σημασίας ειδοποίησης ολοκληρώθηκε."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Εφαρμογές"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Μια μη αξιόπιστη συσκευή θέλει να αποκτήσει πρόσβαση στα μηνύματά σας. Πατήστε για λεπτομέρειες."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Να επιτρέπεται η πρόσβαση σε μηνύματα;"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Μια μη αξιόπιστη συσκευή Bluetooth, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], θέλει να αποκτήσει πρόσβαση στα μηνύματά σας.\n\nΔεν έχετε συνδεθεί στη συσκευή [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] στο παρελθόν."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Μια μη αξιόπιστη συσκευή θέλει να αποκτήσει πρόσβαση στις επαφές και το αρχείο καταγραφής κλήσεων. Πατήστε για λεπτομέρειες."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Να επιτρέπεται η πρόσβαση στις επαφές και στο αρχείο καταγραφής κλήσεων;"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Μια μη αξιόπιστη συσκευή Bluetooth, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], θέλει να αποκτήσει πρόσβαση στις επαφές και το αρχείο καταγραφής κλήσεων. Αυτό περιλαμβάνει δεδομένα σχετικά με τις εισερχόμενες και τις εξερχόμενες κλήσεις.\n\nΔεν έχετε συνδεθεί στη συσκευή [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] στο παρελθόν."</string>
 </resources>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 406f497..3393b17 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 addresses"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Saved networks"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Subscriptions"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Other networks"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP settings"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Wi‑Fi advanced settings are not available for this user"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Save"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Delete APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"New APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Save"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Discard"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Cancel"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"The Name field can\'t be empty."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"The APN cannot be empty."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Apps can be reset"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Reset wi-fi, mobile and Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"This will reset all network settings, including:\n\n"<li>"Wi‑Fi"</li>\n<li>"Mobile data"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Erase"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Erase downloaded SIMs"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"To download replacement SIMs, contact your carrier. This won\'t cancel any mobile service plans."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"This won’t cancel any mobile service plans. To download replacement SIMs, contact your operator."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Reset settings"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Reset all network settings? You can\'t undo this action."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Reset all network settings and erase downloaded SIMs? You can\'t undo this action."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Tablet used more than usual"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Device used more than usual"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Battery may run out earlier than usual"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Preserving battery health"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Optimising for battery health"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Battery limited temporarily. Tap to learn more."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Your phone has been used more than usual. Your battery may run out sooner than expected.\n\nTop apps by battery usage:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Your tablet has been used more than usual. Your battery may run out sooner than expected.\n\nTop apps by battery usage:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Max visible datasets"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Reset to default values"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Auto-fill developer options have been reset"</string>
+    <string name="location_category" msgid="3496759112306219062">"Location"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Status bar location indicator"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Show for all locations, including network and connectivity"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Force full GNSS measurements"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Track all GNSS constellations and frequencies with no duty cycling"</string>
     <string name="device_theme" msgid="5027604586494772471">"Device theme"</string>
     <string name="default_theme" msgid="4815428567082263639">"Default"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Network name"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Pause notifications to stay focused"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Feature not available"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"This feature has been turned off because it slows down your phone"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Force full GNSS measurements"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Track all GNSS constellations and frequencies with no duty cycling"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Always show crash dialogue"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Show dialogue every time an app crashes"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Select ANGLE enabled app"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Wi‑Fi calling allows you to make and receive calls over non‑operator networks, such as some Wi‑Fi networks."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Calls"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"preferred"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"calls preferred"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"SMS preferred"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"unavailable"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"No SIM"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Preferences"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Connect to public networks"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"network connection, internet, wireless, data, wifi, wi-fi, wi fi, cellular, mobile, mobile operator, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Unavailable because bedtime mode is on"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Reset notification importance completed."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Apps"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Untrusted device wants to access your messages. Tap for details."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Allow access to messages?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"An untrusted Bluetooth device, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], wants to access your messages.\n\nYou haven’t connected to [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] before."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Untrusted device wants to access your contacts and call log. Tap for details."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Allow access to contacts and call log?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"An untrusted Bluetooth device, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], wants to access your contacts and call log. This includes data about incoming and outgoing calls.\n\nYou haven’t connected to [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] before."</string>
 </resources>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index 1967f5d..8f1ea0a 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 addresses"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Saved networks"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Subscriptions"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Other networks"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP settings"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Wi‑Fi advanced settings are not available for this user"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Save"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Delete APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"New APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Save"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Discard"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Cancel"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"The Name field can\'t be empty."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"The APN cannot be empty."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Apps can be reset"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Reset Wi-Fi, mobile and Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"This will reset all network settings, including:\n\n"<li>"Wi‑Fi"</li>\n<li>"Mobile data"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Erase"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Erase downloaded SIMs"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"To download replacement SIMs, contact your carrier. This won\'t cancel any mobile service plans."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"This won’t cancel any mobile service plans. To download replacement SIMs, contact your operator."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Reset settings"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Reset all network settings? You can\'t undo this action."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Reset all network settings and erase downloaded SIMs? You can\'t undo this action."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Tablet used more than usual"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Device used more than usual"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Battery may run out earlier than usual"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Preserving battery health"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Optimising for battery health"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Battery limited temporarily. Tap to learn more."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Your phone has been used more than usual. Your battery may run out sooner than expected.\n\nTop apps by battery usage:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Your tablet has been used more than usual. Your battery may run out sooner than expected.\n\nTop apps by battery usage:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Max visible datasets"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Reset to default values"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Auto-fill developer options have been reset"</string>
+    <string name="location_category" msgid="3496759112306219062">"Location"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Status bar location indicator"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Show for all locations, including network and connectivity"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Force full GNSS measurements"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Track all GNSS constellations and frequencies with no duty cycling"</string>
     <string name="device_theme" msgid="5027604586494772471">"Device theme"</string>
     <string name="default_theme" msgid="4815428567082263639">"Default"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Network name"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Pause notifications to stay focused"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Feature not available"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"This feature has been turned off because it slows down your phone"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Force full GNSS measurements"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Track all GNSS constellations and frequencies with no duty cycling"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Always show crash dialogue"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Show dialogue every time an app crashes"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Select ANGLE enabled app"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Wi‑Fi calling allows you to make and receive calls over non‑operator networks, such as some Wi‑Fi networks."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Calls"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"preferred"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"calls preferred"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"SMS preferred"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"unavailable"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"No SIM"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Preferences"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Connect to public networks"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"network connection, internet, wireless, data, wifi, wi-fi, wi fi, cellular, mobile, mobile operator, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Unavailable because bedtime mode is on"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Reset notification importance completed."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Apps"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Untrusted device wants to access your messages. Tap for details."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Allow access to messages?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"An untrusted Bluetooth device, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], wants to access your messages.\n\nYou haven’t connected to [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] before."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Untrusted device wants to access your contacts and call log. Tap for details."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Allow access to contacts and call log?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"An untrusted Bluetooth device, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], wants to access your contacts and call log. This includes data about incoming and outgoing calls.\n\nYou haven’t connected to [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] before."</string>
 </resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 52e21cf..fa94b82 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 addresses"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Saved networks"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Subscriptions"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Other networks"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP settings"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Wi‑Fi advanced settings are not available for this user"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Save"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Delete APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"New APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Save"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Discard"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Cancel"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"The Name field can\'t be empty."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"The APN cannot be empty."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Apps can be reset"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Reset Wi-Fi, mobile &amp; Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"This will reset all network settings, including:\n\n"<li>"Wi‑Fi"</li>\n<li>"Mobile data"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Erase"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Erase downloaded SIMs"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"To download replacement SIMs, contact your operator. This won’t cancel any mobile service plans."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"This won’t cancel any mobile service plans. To download replacement SIMs, contact your operator."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Reset settings"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Reset all network settings? You can’t undo this action."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Reset all network settings and delete downloaded SIMs? You can’t undo this action."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Tablet used more than usual"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Device used more than usual"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Battery may run out earlier than usual"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Preserving battery health"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Optimising for battery health"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Battery limited temporarily. Tap to learn more."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Your phone has been used more than usual. Your battery may run out sooner than expected.\n\nTop apps by battery usage:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Your tablet has been used more than usual. Your battery may run out sooner than expected.\n\nTop apps by battery usage:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Max visible datasets"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Reset to default values"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Auto-fill developer options have been reset"</string>
+    <string name="location_category" msgid="3496759112306219062">"Location"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Status bar location indicator"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Show for all locations, including network and connectivity"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Force full GNSS measurements"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Track all GNSS constellations and frequencies with no duty cycling"</string>
     <string name="device_theme" msgid="5027604586494772471">"Device theme"</string>
     <string name="default_theme" msgid="4815428567082263639">"Default"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Network name"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Pause notifications to stay focused"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Feature not available"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"This feature has been turned off because it slows down your phone"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Force full GNSS measurements"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Track all GNSS constellations and frequencies with no duty cycling"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Always show crash dialogue"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Show dialogue every time an app crashes"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Select ANGLE enabled app"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Wi‑Fi calling allows you to make and receive calls over non‑operator networks, such as some Wi‑Fi networks."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Calls"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"preferred"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"calls preferred"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"SMS preferred"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"unavailable"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"No SIM"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Preferences"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Connect to public networks"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"network connection, internet, wireless, data, wifi, wi-fi, wi fi, cellular, mobile, mobile operator, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Unavailable because bedtime mode is on"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Reset notification importance completed."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Apps"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Untrusted device wants to access your messages. Tap for details."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Allow access to messages?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"An untrusted Bluetooth device, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], wants to access your messages.\n\nYou haven’t connected to [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] before."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Untrusted device wants to access your contacts and call log. Tap for details."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Allow access to contacts and call log?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"An untrusted Bluetooth device, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], wants to access your contacts and call log. This includes data about incoming and outgoing calls.\n\nYou haven’t connected to [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] before."</string>
 </resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 1f2060e..66ce5da 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 addresses"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Saved networks"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Subscriptions"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Other networks"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP settings"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Wi‑Fi advanced settings are not available for this user"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Save"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Delete APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"New APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Save"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Discard"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Cancel"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"The Name field can\'t be empty."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"The APN cannot be empty."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Apps can be reset"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Reset Wi-Fi, mobile and Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"This will reset all network settings, including:\n\n"<li>"Wi‑Fi"</li>\n<li>"Mobile data"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Erase"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Erase downloaded SIMs"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"To download replacement SIMs, contact your operator. This won’t cancel any mobile service plans."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"This won’t cancel any mobile service plans. To download replacement SIMs, contact your operator."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Reset settings"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Reset all network settings? You can’t undo this action."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Reset all network settings and delete downloaded SIMs? You can’t undo this action."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Tablet used more than usual"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Device used more than usual"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Battery may run out earlier than usual"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Preserving battery health"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Optimising for battery health"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Battery limited temporarily. Tap to learn more."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Your phone has been used more than usual. Your battery may run out sooner than expected.\n\nTop apps by battery usage:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Your tablet has been used more than usual. Your battery may run out sooner than expected.\n\nTop apps by battery usage:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Max visible datasets"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Reset to default values"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Auto-fill developer options have been reset"</string>
+    <string name="location_category" msgid="3496759112306219062">"Location"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Status bar location indicator"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Show for all locations, including network and connectivity"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Force full GNSS measurements"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Track all GNSS constellations and frequencies with no duty cycling"</string>
     <string name="device_theme" msgid="5027604586494772471">"Device theme"</string>
     <string name="default_theme" msgid="4815428567082263639">"Default"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Network name"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Pause notifications to stay focused"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Feature not available"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"This feature has been turned off because it slows down your phone"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Force full GNSS measurements"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Track all GNSS constellations and frequencies with no duty cycling"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Always show crash dialogue"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Show dialogue every time an app crashes"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Select ANGLE enabled app"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Wi‑Fi calling allows you to make and receive calls over non‑operator networks, such as some Wi‑Fi networks."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Calls"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"preferred"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"calls preferred"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"SMS preferred"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"unavailable"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"No SIM"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Preferences"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Connect to public networks"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"network connection, internet, wireless, data, wifi, wi-fi, wi fi, cellular, mobile, mobile operator, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Unavailable because bedtime mode is on"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Reset notification importance completed."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Apps"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Untrusted device wants to access your messages. Tap for details."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Allow access to messages?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"An untrusted Bluetooth device, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], wants to access your messages.\n\nYou haven’t connected to [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] before."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Untrusted device wants to access your contacts and call log. Tap for details."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Allow access to contacts and call log?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"An untrusted Bluetooth device, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], wants to access your contacts and call log. This includes data about incoming and outgoing calls.\n\nYou haven’t connected to [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] before."</string>
 </resources>
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
index efc05f2..ca37379 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‏‎‏‎‏‎‎‎‏‏‎‎‏‏‏‎‎‎‎‏‎‎‎‎‎‎‎‏‏‎‏‏‏‏‏‏‎‎‎‎‎‏‏‎‏‎‏‏‎‎‏‏‎‏‎‎‏‎‏‏‎IPv6 addresses‎‏‎‎‏‎"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‏‏‏‎‏‏‏‏‏‎‏‏‏‎‏‏‎‏‎‎‎‎‏‏‏‏‎‎‎‎‎‏‏‎‎‎‎‎‏‏‏‏‏‎‏‎‎‏‏‏‏‎‏‎‏‏‎‏‏‏‎Saved networks‎‏‎‎‏‎"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‎‏‎‎‎‏‎‎‎‎‎‏‎‎‎‎‎‏‎‏‏‎‎‏‎‎‎‎‏‎‏‎‏‎‏‏‏‏‎‏‏‎‏‎‏‏‏‎‏‏‎‏‎‎‎‎‏‎‎‎‎Subscriptions‎‏‎‎‏‎"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‏‏‏‎‎‏‏‏‏‏‎‎‏‏‏‎‏‏‏‏‏‎‎‎‎‏‏‏‎‏‏‏‏‏‎‏‎‏‏‎‏‏‎‎‎‏‏‏‏‎‏‏‎‏‎Other networks‎‏‎‎‏‎"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‎‎‎‏‏‎‎‏‏‏‎‎‎‎‎‏‏‎‏‏‏‏‎‎‎‏‏‎‎‎‏‏‏‎‎‎‎‏‎‏‏‏‏‎‎‎‎‎‎‎‎‎‏‎‏‏‏‏‏‏‎IP settings‎‏‎‎‏‎"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‏‎‎‎‏‏‎‎‎‎‎‎‎‎‏‎‏‏‎‎‏‏‏‎‏‏‏‎‏‏‎‏‎‏‎‏‎‎‎‎‎‎‎‏‏‏‎‎‎‎‏‎‎‎‎‏‎‏‎‎‎Wi‑Fi advanced settings are not available for this user‎‏‎‎‏‎"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‏‎‎‎‎‎‎‎‏‎‎‎‎‏‎‎‏‎‏‏‎‎‎‎‎‎‎‏‏‎‎‎‎‏‎‎‎‎‏‎‎‏‎‏‎‎‎‎‏‎‏‎‎‏‎‎‎‎‏‎‎Save‎‏‎‎‏‎"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‏‎‎‎‎‎‎‏‎‏‏‏‎‎‏‏‎‏‏‏‎‎‏‎‎‎‎‏‎‎‏‎‎‎‏‎‎‏‎‎‏‎‎‎‏‏‏‎‎‎‏‎Delete APN‎‏‎‎‏‎"</string>
     <string name="menu_new" msgid="6571230342655509006">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‏‎‏‏‎‎‏‏‎‎‎‏‏‎‏‏‎‎‏‏‎‎‏‎‏‏‏‎‎‏‎‎‎‏‏‏‎‏‎‎‎‎‎‎‎‎‎‎‎‎‏‎‎‎‎‎‏‏‏‎‎New APN‎‏‎‎‏‎"</string>
     <string name="menu_save" msgid="6611465355127483100">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‏‎‏‏‏‏‎‎‎‎‎‎‏‎‏‎‎‏‎‎‏‎‏‏‎‏‏‎‎‎‏‎‎‎‎‏‎‎‏‎‏‏‎‎‏‏‏‎‏‎‏‎‏‏‎‏‏‏‎‎‎Save‎‏‎‎‏‎"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‏‏‏‎‏‏‎‎‏‏‏‏‏‎‎‏‏‎‎‎‎‎‎‏‏‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‎‏‏‎‎‎‎‎‏‎‎‏‎‏‏‏‎‏‎‏‎Discard‎‏‎‎‏‎"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‎‎‎‎‏‎‎‏‏‏‏‏‏‎‎‎‏‎‎‏‎‎‎‎‏‎‎‏‎‎‎‏‎‎‎‏‏‏‎‏‎‏‎‏‎‏‎‏‎‎‏‎‏‏‏‏‎‏‏‏‎Cancel‎‏‎‎‏‎"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‎‎‎‏‎‏‏‏‎‏‏‎‎‏‎‎‏‎‏‏‎‏‎‎‎‎‏‏‏‎‎‎‎‏‏‎‎‎‏‏‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‎‎The Name field can’t be empty.‎‏‎‎‏‎"</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‎‎‎‏‎‎‏‏‎‏‏‏‏‏‏‎‎‎‏‏‎‏‏‎‎‎‏‎‏‎‏‎‎‎‎‎‎‎‏‎‎‎‎‏‎‎‎‏‏‎‎‎‏‏‎The APN can’t be empty.‎‏‎‎‏‎"</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‎‏‏‎‏‏‏‎‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‎‏‏‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‏‎‎‏‏‎‏‏‎‎‎‎‎‎‎Apps can be reset‎‏‎‎‏‎"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‎‎‏‏‎‏‎‏‏‏‎‏‏‏‎‎‏‎‏‎‏‏‎‎‏‏‎‎‏‏‎‎‎‎‏‏‎‏‏‏‎‎‎‎‏‏‎‎‎‎‎‏‏‎‎‎‎‎‎‎‎Reset Wi-Fi, mobile &amp; Bluetooth‎‏‎‎‏‎"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‎‏‏‏‏‎‏‏‏‎‎‎‎‎‏‏‏‏‎‏‎‎‏‏‏‏‎‎‎‎‏‎‎‎‎‏‏‎‎‎‎‏‎‎‎‎‎‏‏‎‏‎‏‏‏‎‏‎‏‏‎‎This will reset all network settings, including:‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎"<li>"‎‏‎‎‏‏‏‎Wi‑Fi‎‏‎‎‏‏‎"</li>"‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎"<li>"‎‏‎‎‏‏‏‎Mobile data‎‏‎‎‏‏‎"</li>"‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎"<li>"‎‏‎‎‏‏‏‎Bluetooth‎‏‎‎‏‏‎"</li>"‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‎‏‎‏‎‎‎‎‏‏‎‏‎‏‎‏‎‎‏‏‏‏‏‏‏‎‏‏‏‎‎‎‏‏‏‎‏‎‏‎‎‎‎‎‎‏‏‏‎‏‏‏‎‎‏‏‏‏‎‎‏‎Erase‎‏‎‎‏‎"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‎‏‎‏‎‏‏‎‎‎‎‎‏‏‏‎‎‎‏‏‎‏‎‏‏‎‏‏‏‎‎‎‏‎‎‏‏‏‎‎‎‎‏‎‏‎‎‎‎‎‏‏‎‏‏‏‎‎‎‏‎Erase downloaded SIMs‎‏‎‎‏‎"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‏‎‏‏‎‎‎‏‎‎‏‎‎‎‏‏‎‎‎‏‎‎‎‏‎‎‎‎‎‏‏‎‎‏‏‏‎‎‎‎‎‏‏‎‎‏‎‏‎‎‎‏‎‏‎‏‏‏‏‎‎To download replacement SIMs, contact your carrier. This won’t cancel any mobile service plans.‎‏‎‎‏‎"</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‎‎‏‎‏‏‎‏‎‎‏‏‏‎‎‏‏‏‎‏‎‏‏‏‏‏‏‎‏‏‏‏‎‎‏‏‏‏‎‎‎‎‏‎‏‎‎‎‏‏‎‏‏‏‎‏‏‎‏‏‎This won’t cancel any mobile service plans. To download replacement SIMs, contact your carrier.‎‏‎‎‏‎"</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‏‏‏‏‏‎‏‎‏‎‎‏‎‏‏‎‏‏‏‎‏‏‎‎‏‎‎‏‎‎‏‎‎‏‏‎‏‏‏‎‎‎‎‎‏‎‏‏‎‏‏‏‏‏‎‏‎‏‏‏‎Reset settings‎‏‎‎‏‎"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‏‎‎‏‏‎‎‏‏‏‎‎‏‏‏‎‎‎‏‏‏‏‏‏‎‎‎‎‎‎‏‏‏‎‏‏‎‏‏‏‏‏‎‎‏‎‎‏‎‏‎‏‏‏‎‏‏‎‎‏‎Reset all network settings? You can’t undo this action.‎‏‎‎‏‎"</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‏‎‎‎‏‏‏‏‏‎‏‏‏‏‏‏‎‎‏‏‎‎‎‏‏‎‏‏‎‎‎‎‎‏‏‎‏‏‏‏‏‎‏‎‏‎‎‏‏‎‏‎‏‎‎‎Reset all network settings and erase downloaded SIMs? You can’t undo this action.‎‏‎‎‏‎"</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‎‏‏‎‎‎‏‎‏‏‏‎‏‎‎‏‎‎‎‏‎‎‎‎‏‎‎‎‏‎‏‎‎‏‏‎‏‎‏‎‏‎‏‎‏‎‎‎‎‏‎‏‏‏‎‎‏‏‎‎‎Tablet used more than usual‎‏‎‎‏‎"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‏‎‏‏‎‏‎‎‎‏‏‎‏‎‎‎‎‎‎‏‎‎‏‏‏‏‎‎‎‏‏‎‎‎‏‎‏‎‏‎‎‎‎‎‏‎‏‏‏‏‎‏‏‎‏‏‏‎‎‏‎Device used more than usual‎‏‎‎‏‎"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‏‎‏‎‎‏‎‏‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‏‏‏‎‏‏‎‎‏‎‎‏‎‏‏‎‏‏‏‏‏‏‎‎‎‎‎‏‎‎‏‎‏‎‏‏‎‎Battery may run out earlier than usual‎‏‎‎‏‎"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‎‎‎‏‎‎‎‎‎‏‎‏‎‏‏‎‎‎‏‏‏‎‎‏‎‏‎‏‏‏‏‏‏‏‏‎‏‏‎‎‏‎‎‎‎‎‎‏‏‏‎‎‎‏‎‎‏‏‏‏‎Preserving battery health‎‏‎‎‏‎"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‎‎‏‏‎‏‎‎‎‎‏‏‏‏‎‏‏‎‎‏‎‎‏‏‎‏‎‏‎‏‎‏‎‎‎‏‏‎‏‏‎‎‏‎‎‎‎‎‏‏‎‎‏‏‏‏‎‎‏‏‎Optimizing for battery health‎‏‎‎‏‎"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‏‏‏‎‏‏‏‎‎‎‏‎‎‎‎‏‏‏‏‏‏‎‎‎‎‎‎‏‎‏‎‎‏‎‏‎‏‎‎‎‎‎‏‎‎‏‎‎‏‎‎‏‎‎‎‏‏‎‎‏‎Battery limited temporarily. Tap to learn more.‎‏‎‎‏‎"</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‎‎‎‎‏‏‏‏‏‎‎‎‏‏‎‏‏‏‎‏‎‎‎‎‎‏‏‏‎‏‏‎‎‏‎‎‎‏‏‏‏‏‏‏‎‎‏‎‏‎‏‏‎‏‏‏‏‏‏‎‎Your phone has been used more than usual. Your battery may run out sooner than expected.‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎Top apps by battery usage:‎‏‎‎‏‎"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‎‏‏‎‏‎‎‏‏‎‎‏‎‏‏‎‏‏‏‏‎‏‏‏‎‏‏‎‏‎‏‏‏‎‏‏‏‏‎‎‏‎‎‎‎‎‏‎‏‎‏‎‎‎‏‏‏‏‏‎‎Your tablet has been used more than usual. Your battery may run out sooner than expected.‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎Top apps by battery usage:‎‏‎‎‏‎"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‎‏‎‎‏‏‏‏‏‎‎‏‏‎‏‏‎‏‎‎‎‏‎‏‏‏‏‎‎‏‏‏‏‏‎‎‏‏‎‏‎‏‏‎‎‎‏‏‎‏‏‏‏‎‏‎‎‏‎‏‎Max visible datasets‎‏‎‎‏‎"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‏‎‎‏‎‎‏‎‏‏‎‎‎‏‎‏‏‏‎‏‏‎‎‎‏‎‎‎‎‏‏‏‎‎‏‏‎‎‏‎‎‎‏‏‏‎‎‎‎‏‏‎‎‏‏‏‎‎‎‎‎Reset to default values‎‏‎‎‏‎"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‎‎‎‏‏‎‏‏‎‏‏‏‏‏‏‎‎‏‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‎‏‎‏‎‎‎‏‎‎‏‏‎‎‏‎‎‎‏‎‎‎‏‎‏‎‏‎Autofill developer options have been reset‎‏‎‎‏‎"</string>
+    <string name="location_category" msgid="3496759112306219062">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‎‎‎‎‏‎‎‎‎‏‏‎‏‏‏‏‏‎‏‏‏‏‏‎‎‎‏‎‏‏‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‎‏‏‎‎‎‎‎‏‏‎‏‏‎‎Location‎‏‎‎‏‎"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‏‏‎‎‎‏‎‏‏‏‏‎‏‎‎‏‎‎‎‎‏‎‎‏‎‎‏‎‏‎‎‏‏‏‏‏‏‏‎‎‎‎‏‎‎‎‎‏‎‏‎‏‎‎‎‎‏‎‏‏‎Status bar location indicator‎‏‎‎‏‎"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‎‏‎‎‎‎‎‎‏‎‏‎‎‎‏‎‏‎‎‎‎‏‏‎‎‏‎‎‏‎‎‎‎‎‏‏‎‎‎‏‎‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‏‎‏‎‏‎Show for all locations, including network and connectivity‎‏‎‎‏‎"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‎‎‎‎‏‎‏‏‏‏‏‎‏‏‏‏‏‏‎‏‎‎‎‎‎‏‎‏‏‏‎‎‏‎‏‏‎‏‎‏‏‎‏‎‏‎‎‎‏‎‎‎‎‎‎‎‏‏‎‏‎Force full GNSS measurements‎‏‎‎‏‎"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‎‏‎‏‎‏‎‎‏‏‏‏‏‎‎‏‏‏‏‎‎‏‎‏‏‏‏‏‏‎‏‏‏‎‎‏‎‏‎‎‏‏‎‏‎‎‏‎‏‏‎‏‏‏‏‏‏‏‏‏‎Track all GNSS constellations and frequencies with no duty cycling‎‏‎‎‏‎"</string>
     <string name="device_theme" msgid="5027604586494772471">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‎‏‎‏‏‏‎‎‎‏‎‏‏‎‏‎‎‎‏‏‏‎‏‏‏‎‏‏‏‏‏‎‏‎‎‏‎‎‏‎‎‏‎‏‎‏‎‎‎‏‎‎‏‏‏‏‎‏‏‏‎Device theme‎‏‎‎‏‎"</string>
     <string name="default_theme" msgid="4815428567082263639">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‎‎‏‎‏‏‎‏‎‎‏‏‏‏‎‏‎‏‏‎‏‏‎‎‎‏‎‎‏‎‏‏‏‏‏‎‎‎‏‏‎‏‎‎‏‏‏‎‎‏‎‎‎‏‎‏‎‏‏‏‎Default‎‏‎‎‏‎"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‎‏‏‏‎‏‎‎‏‎‎‏‎‏‎‎‏‎‏‏‎‏‎‏‎‏‎‏‎‏‎‎‎‏‎‎‎‏‏‏‏‏‎‏‎‎‎‏‎‏‎‏‏‎‏‎‏‏‏‎‎‎Network name‎‏‎‎‏‎"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‎‎‏‏‏‏‏‎‎‎‎‏‏‎‏‎‏‎‏‎‏‏‎‏‎‏‏‎‏‏‎‏‎‏‏‎‎‏‎‏‏‏‎‏‏‏‏‏‎‏‏‎‎‎‏‎Pause notifications to stay focused‎‏‎‎‏‎"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‎‎‏‏‎‎‏‏‏‏‏‎‏‏‏‏‏‏‏‏‎‎‏‎‎‎‏‎‏‎‏‏‎‎‏‏‏‎‏‏‎‎‏‎‏‏‏‎‏‎‎‏‏‏‎‏‎‎‏‏‎Feature not available‎‏‎‎‏‎"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‏‏‏‏‏‎‏‏‎‏‎‏‎‏‎‎‎‎‎‏‏‏‎‎‏‏‏‎‏‏‎‏‎‎‎‏‎‎‎‏‏‏‏‏‏‎‎‎‏‏‏‎‏‏‎‎‎‏‎‎‎This feature has been turned off because it slows down your phone‎‏‎‎‏‎"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‎‎‎‎‏‎‏‏‏‏‏‎‏‏‏‏‏‏‎‏‎‎‎‎‎‏‎‏‏‏‎‎‏‎‏‏‎‏‎‏‏‎‏‎‏‎‎‎‏‎‎‎‎‎‎‎‏‏‎‏‎Force full GNSS measurements‎‏‎‎‏‎"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‎‏‎‏‎‏‎‎‏‏‏‏‏‎‎‏‏‏‏‎‎‏‎‏‏‏‏‏‏‎‏‏‏‎‎‏‎‏‎‎‏‏‎‏‎‎‏‎‏‏‎‏‏‏‏‏‏‏‏‏‎Track all GNSS constellations and frequencies with no duty cycling‎‏‎‎‏‎"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‎‏‏‏‏‎‎‎‏‎‏‏‎‏‏‏‏‎‏‎‏‏‏‏‎‎‎‎‎‏‏‏‎‎‎‎‎‏‏‏‎‏‎‏‏‏‏‎‎‎‏‎‏‏‎‎‏‏‎‏‎Always show crash dialog‎‏‎‎‏‎"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‎‎‎‏‎‎‎‏‏‏‏‎‏‎‎‎‎‏‎‏‎‎‏‎‏‏‎‎‎‏‎‎‎‏‏‏‎‎‎‏‏‎‏‏‏‎‎‏‎‏‏‎‏‎‎‏‎‏‏‏‎Show dialog every time an app crashes‎‏‎‎‏‎"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‎‎‏‏‏‏‏‎‎‎‏‏‏‏‏‏‎‎‎‏‏‏‎‏‏‎‎‏‏‏‏‏‏‎‏‏‎‎‎‏‏‎‎‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‎Select ANGLE enabled app‎‏‎‎‏‎"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‏‎‏‏‎‏‏‎‏‏‏‏‎‏‏‏‏‏‏‎‎‏‏‎‏‏‏‏‎‏‎‏‏‏‎‏‎‎‎‏‏‏‏‏‏‏‎‎‎‏‏‎‎‎‎Wi‑Fi calling allows you to make and receive calls over non‑carrier networks such as some Wi‑Fi networks.‎‏‎‎‏‎"</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‎‏‏‎‎‎‎‏‏‎‎‎‏‎‎‏‎‎‎‏‏‎‏‎‏‏‎‎‏‎‎‏‎‎‎‏‎‎‎‎‎‏‎‎‏‏‏‏‎‏‏‎‎‎‎Calls‎‏‎‎‏‎"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‎‏‎‎‎‏‏‏‏‎‎‏‎‎‎‎‎‏‎‏‏‎‎‏‎‎‎‏‎‎‏‏‎‎‏‎‎‏‎‏‏‎‏‏‎‎‏‏‎‎‏‏‎‎‎‎‏‎‏‏‎SMS‎‏‎‎‏‎"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‎‎‏‏‎‏‏‏‏‏‏‎‏‏‎‏‎‎‏‎‏‎‎‎‏‏‎‎‎‏‎‏‏‏‎‏‏‎‏‎‏‏‏‏‎‏‎‎‎‏‎‏‏‏‎‎‏‎‎‎‎preferred‎‏‎‎‏‎"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‎‏‎‏‏‏‎‎‎‎‎‏‎‏‎‎‎‎‏‏‏‏‏‎‏‎‎‎‎‏‎‎‎‏‎‎‏‎‏‎‎‏‏‏‏‎‏‏‎‏‎‏‏‎‏‎‎‎‎‎‏‎calls preferred‎‏‎‎‏‎"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‎‎‎‎‏‏‎‏‏‏‎‎‏‎‎‏‏‏‏‏‎‎‎‎‎‏‏‏‎‎‏‎‎‎‎‎‏‏‎‎‎‎‏‎‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‎‎SMS preferred‎‏‎‎‏‎"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‏‎‎‎‎‏‎‎‏‎‎‎‏‏‎‏‏‎‎‎‏‎‏‎‏‏‎‏‏‏‎‎‎‎‏‎‎‎‏‏‏‎‎‎‏‎‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎unavailable‎‏‎‎‏‎"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‎‎‎‎‎‎‏‏‎‏‏‎‎‎‏‏‏‏‎‏‎‏‏‎‏‏‏‎‏‏‏‎‎‏‏‏‎‎‎‎‎‏‏‎‏‏‏‎‏‏‎‎‎‎‏‎‎‎‏‏‎‎No SIM‎‏‎‎‏‎"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‎‎‏‏‏‎‎‏‏‎‎‎‎‏‎‏‎‎‏‏‎‏‎‎‎‏‏‎‏‏‏‎‎‎‏‏‏‎‎‎‏‎‏‎‎‎‏‎‎‎‏‏‏‏‎Preferences‎‏‎‎‏‎"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‎‏‎‎‎‏‎‎‎‎‎‏‎‏‎‎‎‏‏‎‎‏‏‏‏‎‏‏‏‏‎‎‎‏‏‏‎‏‎‎‎‏‏‏‎‎‎‏‏‎‏‏‏‏‎‎‏‏‎‎‏‎Connect to public networks‎‏‎‎‏‎"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‎‏‏‎‎‏‏‏‎‏‏‎‎‏‏‎‏‎‏‎‏‏‏‎‏‏‏‏‏‎‎‏‎‏‎‎‎‎‎‏‏‎‎network connection, internet, wireless, data, wifi, wi-fi, wi fi, cellular, mobile, cell carrier, 4g, 3g, 2g, lte‎‏‎‎‏‎"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‏‏‎‎‏‎‏‎‎‏‎‎‎‏‎‎‏‎‏‎‎‎‎‏‏‎‏‎‏‏‏‎‎‏‎‎‎‎‎‎‎‎‎‎‏‎‎‎‏‏‎‏‎‏‎‏‏‎‎‎‎Unavailable because bedtime mode is on‎‏‎‎‏‎"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‎‎‎‏‏‏‏‎‎‏‎‏‏‏‏‎‏‎‎‏‏‎‏‎‎‎‏‏‏‏‎‏‎‏‏‏‎‏‎‎‏‎‎‏‏‏‏‏‎‎‎‎‎‎‏‏‎‏‎‏‎Reset notification importance completed.‎‏‎‎‏‎"</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‎‏‏‎‏‎‏‏‎‎‎‎‏‎‎‏‏‎‏‎‏‎‏‏‎‎‎‏‎‎‎‎‏‏‏‎‎‏‏‎‏‎‎‏‏‏‎‏‏‎‎‏‎‎‏‏‎‏‎‏‎‎Apps‎‏‎‎‏‎"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‎‏‎‎‏‎‏‏‏‎‎‎‎‏‏‎‎‏‎‎‏‏‏‎‎‎‏‏‏‏‎‏‏‎‏‏‏‏‎‎‏‎‏‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‎‎‏‎Untrusted device wants to access your messages. Tap for details.‎‏‎‎‏‎"</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‎‎‎‏‎‎‏‎‏‎‏‏‏‏‎‎‎‏‏‏‎‎‏‎‏‏‏‎‏‎‎‏‎‏‎‏‏‎‏‎‏‏‏‏‏‎‏‎‏‎‎‏‎‏‏‎Allow access to messages?‎‏‎‎‏‎"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‎‎‏‏‎‏‎‏‎‏‎‎‎‏‎‎‏‎‏‎‏‏‏‏‏‎‎‏‎‎‏‏‎‏‏‏‏‏‏‏‎‎‎‏‎‎‏‏‏‏‏‎‏‎‎‎‎‏‏‏‎An untrusted Bluetooth device, [‎‏‎‎‏‏‎<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>‎‏‎‎‏‏‏‎], wants to access your messages.‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎You haven’t connected to [‎‏‎‎‏‏‎<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>‎‏‎‎‏‏‏‎] before.‎‏‎‎‏‎"</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‏‎‏‏‎‏‏‎‎‏‏‎‏‏‏‎‎‏‏‎‎‎‏‏‎‏‏‏‎‏‏‎‏‎‎‏‎‏‎‏‎‎‏‎‏‎‏‏‎‎‎‏‏‏‎‏‏‏‏‏‎Untrusted device wants to access your contacts and call log. Tap for details.‎‏‎‎‏‎"</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‏‎‏‎‎‎‎‎‎‎‎‏‏‎‎‏‎‎‏‎‎‏‏‎‏‎‎‏‏‎‎‏‏‏‏‎‎‏‎‏‏‏‏‏‏‏‎‎‎‎‏‎‎‎‏‎Allow access to contacts and call log?‎‏‎‎‏‎"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‏‏‏‏‎‎‎‎‎‏‏‏‎‏‏‎‏‏‎‏‏‎‎‏‎‎‎‎‏‏‏‎‏‎‎‏‎‏‏‏‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‏‎‏‏‎An untrusted Bluetooth device, [‎‏‎‎‏‏‎<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>‎‏‎‎‏‏‏‎], wants to access your contacts and call log. This includes data about incoming and outgoing calls.‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎You haven’t connected to [‎‏‎‎‏‏‎<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>‎‏‎‎‏‏‏‎] before.‎‏‎‎‏‎"</string>
 </resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index cb055a6..5ae9844 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"Direcciones IPv6"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Redes guardadas"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Suscripciones"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Otras redes"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"Configuración de IP"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"La configuración avanzada de Wi‑Fi no está disponible para este usuario"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Guardar"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Eliminar APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"APN nuevo"</string>
     <string name="menu_save" msgid="6611465355127483100">"Guardar"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Descartar"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Cancelar"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"El campo Nombre no puede estar vacío."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"El APN no puede estar vacío."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Se pueden restablecer las apps"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Restablecer configuración de Wi-Fi, datos móviles y Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Se restablecerán las opciones de configuración de todas las redes, lo que incluye:\n\n"<li>"Wi‑Fi"</li>\n<li>"Datos móviles"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Borrar"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Borrar tarjeta SIM descargada"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Para descargar tarjetas SIM de reemplazo, comunícate con tu proveedor. Esta acción no cancelará ningún plan de servicio móvil."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Esta acción no cancelará ningún plan de servicio móvil. Para descargar tarjetas SIM de reemplazo, comunícate con tu proveedor."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Restablecer configuración"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"¿Quieres restablecer toda la configuración de red? No podrás deshacer esta acción."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"¿Quieres restablecer toda la configuración de red y borrar las tarjetas SIM descargadas? No podrás deshacer esta acción."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"La tablet se usó más de lo habitual"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"El dispositivo se usó más de lo habitual"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"La batería podría agotarse antes de lo habitual"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Cómo preservar el estado de la batería"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Optimizando el estado de la batería"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Batería limitada temporalmente. Presiona para obtener más información."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"El teléfono se usó más de lo habitual. Es posible que la batería se agote antes de lo esperado.\n\nEstas son las apps que más batería consumen:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"La tablet se usó más de lo habitual. Es posible que la batería se agote antes de lo esperado.\n\nEstas son las apps que más batería consumen:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Máximo de conjuntos de datos visibles"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Restablecer valores predeterminados"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Se restablecieron las opciones de autocompletar para desarrolladores"</string>
+    <string name="location_category" msgid="3496759112306219062">"Ubicación"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Indicador de ubicación de la barra de estado"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Mostrar para todas las ubicaciones, incluidas la red y la conectividad"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Forzar dimensiones GNSS completas"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Seguir todas las frecuencias y constelaciones de GNSS sin ciclo de funciones"</string>
     <string name="device_theme" msgid="5027604586494772471">"Tema del dispositivo"</string>
     <string name="default_theme" msgid="4815428567082263639">"Predeterminado"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Nombre de la red"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Pausa las notificaciones para concentrarte"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Función no disponible"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Se desactivó esta función porque ralentiza el teléfono"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Forzar dimensiones GNSS completas"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Seguir todas las frecuencias y constelaciones de GNSS sin ciclo de funciones"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Mostrar siempre el cuadro de diálogo de bloqueos"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Mostrar el cuadro de diálogo cada vez que falle una app"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Seleccionar app compatible con ANGLE"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Con las Llamadas por Wi‑Fi, puedes llamar y recibir llamadas a través de redes que no son de proveedores, como algunas redes Wi‑Fi."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Llamadas"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"preferencia"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"preferencia para llamadas"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"preferencia para SMS"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"no disponible"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"No hay ninguna tarjeta SIM"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Preferencias"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Conectarse a redes públicas"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"conexión de red, internet, inalámbrico, datos, wifi, wi-fi, wi fi, datos móviles, móvil, proveedor de telefonía, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"No disponible cuando el modo hora de dormir está activado"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Se restableció la prioridad de notificaciones."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Apps"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Un dispositivo que no es de confianza quiere acceder a tus mensajes. Presiona para ver más detalles"</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"¿Quieres permitir el acceso a los mensajes?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Un dispositivo Bluetooth que no es de confianza, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], quiere acceder a tus mensajes.\n\nNo te conectaste a [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] antes."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Un dispositivo que no es de confianza quiere acceder a tus contactos y al registro de llamadas. Presiona para ver más detalles"</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"¿Quieres permitir el acceso a los contactos y al registro de llamadas?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Un dispositivo Bluetooth que no es de confianza, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], quiere acceder a tus contactos y al registro de llamadas. Esto incluye datos sobre llamadas entrantes y salientes.\n\nNo te conectaste a [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] antes."</string>
 </resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 3880e70..cbc38df 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -769,7 +769,7 @@
     <string name="bluetooth_dock_settings_remember" msgid="6993526033095292609">"Ajustes de recordatorio"</string>
     <string name="bluetooth_max_connected_audio_devices_string" msgid="3114156958598821615">"Máximo de dispositivos de audio conectados por Bluetooth"</string>
     <string name="bluetooth_max_connected_audio_devices_dialog_title" msgid="4056811727247312473">"Selecciona el número máximo de dispositivos de audio conectados por Bluetooth"</string>
-    <string name="wifi_display_settings_title" msgid="6451625615274960175">"Enviar pantalla"</string>
+    <string name="wifi_display_settings_title" msgid="6451625615274960175">"Enviar"</string>
     <string name="keywords_wifi_display_settings" msgid="5753883229564422679">"proyectar"</string>
     <string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Habilitar pantalla inalámbrica"</string>
     <string name="wifi_display_no_devices_found" msgid="7904877793677102805">"No hay dispositivos cercanos."</string>
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"Direcciones IPv6"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Redes guardadas"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Suscripciones"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Otras redes"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"Ajustes de IP"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Este usuario no puede utilizar los ajustes avanzados de Wi‑Fi"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Guardar"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Eliminar APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"Nuevo APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Guardar"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Descartar"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Cancelar"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"El campo Nombre no puede estar vacío."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"El campo APN no puede estar vacío."</string>
@@ -1612,8 +1611,11 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Las aplicaciones se pueden reiniciar"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Recuperar Wi-Fi, red móvil y Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Se recuperarán todos los ajustes de red, como:\n\n"<li>"Wi‑Fi"</li>\n<li>"Datos móviles"</li>\n<li>"Bluetooth"</li></string>
+    <!-- no translation found for erase_euicc_data_button (728078969563311737) -->
+    <skip />
     <string name="reset_esim_title" msgid="6152167073280852849">"Borrar las SIM descargadas"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Para descargar SIM de sustitución, ponte en contacto con tu operador. Esta acción no cancelará ningún plan de servicios móviles."</string>
+    <!-- no translation found for reset_esim_desc (3662444090563399131) -->
+    <skip />
     <string name="reset_network_button_text" msgid="2281476496459610071">"Recuperar ajustes"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"¿Quieres restablecer la configuración de red? No podrás deshacer esta acción."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"¿Quieres recuperar todos los ajustes de red y borrar todas las SIM descargadas? No podrás deshacer esta acción."</string>
@@ -2456,7 +2458,8 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"El tablet se ha usado más de lo normal"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"El dispositivo se ha usado más de lo normal"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Quizás se agote la batería antes de lo normal"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Preservando estado de la batería"</string>
+    <!-- no translation found for battery_tip_limited_temporarily_title (7152799456221596915) -->
+    <skip />
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Batería limitada temporalmente. Toca para ver más información."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Tu teléfono se ha usado más de lo normal y es posible te quedes sin batería antes de lo esperado.\n\nEstas son las aplicaciones que más batería consumen:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Tu tablet se ha usado más de lo normal y es posible te quedes sin batería antes de lo esperado.\n\nEstas son las aplicaciones que más batería consumen:"</string>
@@ -4651,6 +4654,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Número máximo de conjuntos de datos visibles"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Restablecer valores predeterminados"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Se ha restablecido la opción de autocompletar las opciones del desarrollador"</string>
+    <string name="location_category" msgid="3496759112306219062">"Ubicación"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Indicador de ubicación en la barra de estado"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Mostrar con todas las ubicaciones, incluidas la red y la conectividad"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Forzar mediciones de GNSS completas"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Registrar todas las frecuencias y constelaciones de GNSS sin ciclo de servicio"</string>
     <string name="device_theme" msgid="5027604586494772471">"Tema del dispositivo"</string>
     <string name="default_theme" msgid="4815428567082263639">"Predeterminado"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Nombre de la red"</string>
@@ -4667,8 +4675,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Pausa las notificaciones para concentrarte"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Función no disponible"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Esta función se ha desactivado porque ralentiza el teléfono"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Forzar mediciones de GNSS completas"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Registrar todas las frecuencias y constelaciones de GNSS sin ciclo de servicio"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Mostrar siempre el cuadro de diálogo de fallos"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Mostrar el cuadro de diálogo cuando una aplicación falle"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Seleccionar una aplicación para usar ANGLE"</string>
@@ -5052,6 +5058,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Con las llamadas por Wi‑Fi, puedes llamar y recibir llamadas por redes que no son de operadores, como ciertas redes Wi‑Fi."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Llamadas"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"preferida"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"preferida para las llamadas"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"preferida para los SMS"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"no disponible"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Sin tarjeta SIM"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Preferencias"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Conectarse a redes públicas"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"conexión de red, internet, inalámbrico, datos, wifi, wi-fi, wi fi, datos móviles, móvil, operador de telefonía, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5071,16 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"No disponible porque el modo Descanso está activado"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Borrado de la importancia de las notificaciones completado."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Aplicaciones"</string>
+    <!-- no translation found for bluetooth_message_access_notification_content (2986108412562309009) -->
+    <skip />
+    <!-- no translation found for bluetooth_message_access_dialog_title (9009836130395061579) -->
+    <skip />
+    <!-- no translation found for bluetooth_message_access_dialog_content (6004506637437582983) -->
+    <skip />
+    <!-- no translation found for bluetooth_phonebook_access_notification_content (4280361621526852063) -->
+    <skip />
+    <!-- no translation found for bluetooth_phonebook_access_dialog_title (7624607995928968721) -->
+    <skip />
+    <!-- no translation found for bluetooth_phonebook_access_dialog_content (2235876209172857819) -->
+    <skip />
 </resources>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index 79100f5..e294c19 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6-aadressid"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Salvestatud võrgud"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Tellimused"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Muud võrgud"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP-seaded"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"WiFi täpsemad seaded pole selle kasutaja jaoks saadaval"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Salvesta"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Kustuta pääsupunktinimi"</string>
     <string name="menu_new" msgid="6571230342655509006">"Uus pääsupunkt"</string>
     <string name="menu_save" msgid="6611465355127483100">"Salvesta"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Loobu"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Tühista"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Nimeväli ei tohi tühi olla."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN ei saa olla tühi."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Rakendused saab lähtestada"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Lähtesta WiFi, mobiilne andmeside ja Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"See lähtestab kõik võrguseaded, sh:\n\n"<li>"WiFi"</li>\n<li>"Mobiilne andmeside"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Kustuta"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Kustuta allalaaditud SIM-id"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Asendus-SIM-kaartide allalaadimiseks võtke ühendust operaatoriga. See ei tühista mobiilsideteenuse pakette."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"See ei tühista mobiilsideteenuse pakette. Asendus-SIM-kaartide allalaadimiseks võtke ühendust operaatoriga."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Lähtesta seaded"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Kas soovite kõik võrguseaded lähtestada? Seda toimingut ei saa tagasi võtta."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Kas soovite kõik võrguseaded lähtestada ja allalaaditud SIM-id kustutada? Seda toimingut ei saa tagasi võtta."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Tahvelarvutit on kasutatud tavapärasest rohkem"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Seadet on kasutatud tavapärasest rohkem"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Aku võib tavapärasest kiiremini tühjaks saada"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Akutase säästmine"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Optimeerimine aku seisukorra põhjal"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Akutase on ajutiselt piiratud. Lisateabe saamiseks puudutage."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Teie telefoni on kasutatud tavapärasest rohkem. Aku võib oodatust kiiremini tühjaks saada.\n\nEnim akut kasutanud rakendused:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Teie tahvelarvutit on kasutatud tavapärasest rohkem. Aku võib oodatust kiiremini tühjaks saada.\n\nEnim akut kasutanud rakendused:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Max nähtavate andmekomplektide arv"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Vaikeväärtustele lähtestamine"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Arendaja automaattäite valikud on lähtestatud"</string>
+    <string name="location_category" msgid="3496759112306219062">"Asukoht"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Olekuriba asukohanäidik"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Kuva kõikide asukohtade puhul (sh võrk ja ühenduvus)"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Jõusta GNSS-i täielikud mõõtmistulemused"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Jälgi kõiki GNSS-i radu ja sagedusi ilma töötsüklita"</string>
     <string name="device_theme" msgid="5027604586494772471">"Seadme teema"</string>
     <string name="default_theme" msgid="4815428567082263639">"Vaikeseade"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Võrgu nimi"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Keskendumiseks peatage märguanded"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Funktsioon pole saadaval"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"See funktsioon on välja lülitatud, kuna see muudab teie telefoni aeglaseks"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Jõusta GNSS-i täielikud mõõtmistulemused"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Jälgi kõiki GNSS-i radu ja sagedusi ilma töötsüklita"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Kuva alati kokkujooksmise dialoog"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Dialoog kuvatakse alati, kui rakendus kokku jookseb"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Valige rakendus, milles ANGLE on lubatud"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"WiFi-kõned võimaldavad teil helistada ja kõnesid vastu võtta operaatoriväliste võrkude kaudu (nt mõned WiFi-võrgud)."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Kõned"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"eelistatud"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"eelistatud on kõned"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"eelistatud on SMS-id"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"pole saadaval"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"SIM-kaarti pole"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Eelistused"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Ühenda avalike võrkudega"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"võrguühendus, internet, juhtmeta, andmeside, wifi, wi-fi, wi fi, mobiilside, mobiilsideoperaator, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Pole saadaval, kuna uneaja režiim on sisse lülitatud"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Märguande olulisuse lähtestamine viidi lõpule."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Rakendused"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Ebausaldusväärne seade soovib saada juurdepääsu teie sõnumitele. Puudutage üksikasjade nägemiseks."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Kas lubada juurdepääs sõnumitele?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Ebausaldusväärne Bluetooth-seade [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>] soovib saada juurdepääsu teie sõnumitele.\n\nTe pole seadmega [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] varem ühendust loonud."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Ebausaldusväärne seade soovib saada juurdepääsu teie kontaktidele ja kõnelogile. Puudutage üksikasjade nägemiseks."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Kas lubada juurdepääs kontaktidele ja kõnelogile?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Ebausaldusväärne Bluetooth-seade [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>] soovib saada juurdepääsu teie kontaktidele ja kõnelogile. See hõlmab andmeid sissetulevate ja väljuvate kõnede kohta.\n\nTe pole seadmega [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] varem ühendust loonud."</string>
 </resources>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index b5d063c..905d11f 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 helbideak"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Gordetako sareak"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Harpidetzak"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Beste sare batzuk"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IParen ezarpenak"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Erabiltzaile honek ezin ditu erabili Wi-Fi aurreratuaren ezarpenak"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Gorde"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Ezabatu APNa"</string>
     <string name="menu_new" msgid="6571230342655509006">"APN berria"</string>
     <string name="menu_save" msgid="6611465355127483100">"Gorde"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Baztertu"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Utzi"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Izena eremuak ezin du hutsik egon."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APNak ezin du hutsik egon."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Berrezar daitezke aplikazioak"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Berrezarri wifi, Bluetooth eta sare mugikorrak"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Hori eginez gero, sare guztien ezarpenak berrezarriko dira, besteak beste: \n\n"<li>"Wifia"</li>\n<li>"Datu-konexioa"</li>\n<li>"Bluetooth-a"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Ezabatu eduki guztia"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Ezabatu deskargatutako SIMen edukia"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Ordezko SIM txartelak deskargatzeko, jarri operadorearekin harremanetan. Ez da utziko bertan behera mugikorraren zerbitzu-planik."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Ez da utziko bertan behera mugikorraren zerbitzu-planik. Ordezko SIMak deskargatzeko, jarri harremanetan operadorearekin."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Berrezarri ezarpenak"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Sareko ezarpen guztiak berrezarri nahi dituzu? Ezin da desegin ekintza hori."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Sareko ezarpen guztiak berrezarri eta deskargatutako SIM txartelen datu guztiak ezabatu nahi dituzu? Ezin da desegin ekintza hori."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Tableta ohi baino gehiago erabili da"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Gailua ohi baino gehiago erabili da"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Baliteke bateria ohi baino lehenago agortzea"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Bateriaren egoera ona mantentzen"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Optimizatzen, bateria egoera onean mantentzeko"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Bateria mugatuta egongo da aldi batez. Informazio gehiago lortzeko, sakatu hau."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Telefonoa ohi baino gehiago erabili da. Baliteke bateria espero baino lehenago agortzea.\n\nBateria gehien erabili duten aplikazioak:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Tableta ohi baino gehiago erabili da. Baliteke bateria espero baino lehenago agortzea.\n\nBateria gehien erabili duten aplikazioak:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Ikusgai dauden gehieneko datu multzoak"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Berrezarri balio lehenetsiak"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Garatzaileak ez ditu berrezarri betetze automatikoko aukerak"</string>
+    <string name="location_category" msgid="3496759112306219062">"Kokapena"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Kokapen-adierazlearen egoera-barra"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Erakutsi kokapen guztietan, sarea eta konektagarritasuna barne"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Behartu GNSS neurketa osoak gauzatzera"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Egin GNSS konstelazio eta maiztasun guztien jarraipena, eginbeharren ziklorik gabe"</string>
     <string name="device_theme" msgid="5027604586494772471">"Gailuaren gaia"</string>
     <string name="default_theme" msgid="4815428567082263639">"Lehenetsia"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Sarearen izena"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Pausatu jakinarazpenak arreta ez galtzeko"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Eginbidea ez dago erabilgarri"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Eginbidea desaktibatu egin da, telefonoa moteltzen duelako"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Behartu GNSS neurketa osoak gauzatzera"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Egin GNSS konstelazio eta maiztasun guztien jarraipena, eginbeharren ziklorik gabe"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Erakutsi beti hutsegiteen leihoak"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Erakutsi leiho bat aplikazioren batek huts egiten duen bakoitzean"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Hautatu ANGLE-rekin bateragarria den aplikazio bat"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Wifi bidezko deiekin, deiak egin eta jaso ahalko dituzu operadore batenak ez diren sareen bitartez (adibidez, zenbait wifi-sare)."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Deiak"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMSa"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"hobetsiak"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"deiak hobesten dira"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"SMSak hobesten dira"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"ez dago erabilgarri"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Ez dago SIM txartelik"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Hobespenak"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Konektatu sare publikoetara"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"sareko konexioa, internet, hari gabeko konexioak, datuak, wifia, mugikorra, telefono mugikorra, operadorea, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Ez dago erabilgarri, lo egiteko garaiaren modua aktibatuta dagoelako"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Berrezarri da jakinarazpenen garrantzia."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Aplikazioak"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Fidagarria ez den gailu batek zure mezuak atzitu nahi ditu. Sakatu xehetasunak ikusteko."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Mezuak atzitzeko baimena eman nahi diozu?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Fidagarria ez den Bluetooth bidezko gailu batek ([<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>]) zure mezuak atzitu nahi ditu.\n\nEz zara inoiz konektatu [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] gailura."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Fidagarria ez den gailu batek zure kontaktuak eta deien historia atzitu nahi ditu. Sakatu xehetasunak ikusteko."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Kontaktuak eta deien historia atzitzeko baimena eman nahi diozu?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Fidagarria ez den Bluetooth bidezko gailu batek ([<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>]) zure kontaktuak eta deien historia atzitu nahi ditu. Hor sartzen dira jasotako eta egindako deiei buruzko datuak.\n\nEz zara inoiz konektatu [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] gailura."</string>
 </resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 8895e6e..f801e7c 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"‏نشانی‌های IPv6"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"شبکه‌های ذخیره‌شده"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"اشتراک‌ها"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"شبکه‌های دیگر"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"‏تنظیمات IP"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"‏تنظیمات پیشرفته Wi‑Fi برای این کاربر در دسترس نیست"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"ذخیره"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"حذف نام نقطه دستیابی"</string>
     <string name="menu_new" msgid="6571230342655509006">"نام نقطه دستیابی جدید"</string>
     <string name="menu_save" msgid="6611465355127483100">"ذخیره"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"صرف‌نظر"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"لغو"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"قسمت نام نباید خالی باشد."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"نام نقطه دستیابی نمی‌تواند خالی باشد."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"برنامه‌ها را می‌توان بازنشانی کرد"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"‏بازنشانی Wi-Fi، داده شبکه همراه و بلوتوث"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"‏این کار همه تنظیمات شبکه را بازنشانی می‌کند، ازجمله:\n\n"<li>"Wi-Fi‏"</li>\n<li>"داده شبکه تلفن همراه"</li>\n<li>"بلوتوث"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"پاک‌سازی"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"پاک‌سازی سیم‌کارت‌های بارشده"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"برای بارگیری سیم‌کارت‌های جایگزین، با شرکت مخابراتی‌تان تماس بگیرید. با این کار، هیچ‌یک از طرح‌های سرویس دستگاه همراه لغو نمی‌شود."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"با این کار، هیچ‌یک از طرح‌های سرویس تلفن همراه لغو نمی‌شود. برای بارگیری سیم‌کارت‌های جایگزین، با شرکت مخابراتی‌تان تماس بگیرید."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"بازنشانی تنظیمات"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"همه تنظیمات شبکه بازنشانی شود؟ این کنش واگرد نمی‌شود."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"همه تنظیمات شبکه بازنشانی شود و سیم‌کارت‌های بارگیری‌شده پاک‌سازی شود؟ این کنش واگرد نمی‌شود."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"رایانه لوحی بیشتر از حد معمول استفاده شده است"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"دستگاه بیشتر از حد معمول استفاده شده است"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"ممکن است شارژ باتری زودتر از معمول تمام شود"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"حفظ سلامت باتری"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"بهینه‌سازی برای سلامت باتری"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"باتری موقتاً محدود شده است. برای اطلاعات بیشتر، ضربه بزنید."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"از تلفنتان بیش‌ازحد معمول استفاده شده است. ممکن است باتری آن زودتر از موعد موردانتظار تمام شود.\n\nبرنامه‌های برتر براساس مصرف باتری:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"از رایانه لوحی بیش از حد معمول استفاده شده است. ممکن است باتری آن زودتر از موعد موردانتظار تمام شود.\n\nبرنامه‌های برتر براساس مصرف باتری:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"حداکثر مجموعه داده‌های مرئی"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"بازنشانی به مقادیر پیش‌فرض"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"گزینه‌های برنامه‌نویس تکمیل خودکار بازنشانی شد"</string>
+    <string name="location_category" msgid="3496759112306219062">"مکان"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"نشانگر مکان در نوار وضعیت"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"برای همه مکان‌ها نشان داده شود، ازجمله شبکه و اتصال"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"‏اجرای کامل اندازه‌گیری GNSS"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"بدون دوره کاری، همه دسته عکس‌های پانوراما و فرکانس‌ها را ردیابی کنید."</string>
     <string name="device_theme" msgid="5027604586494772471">"طرح زمینه دستگاه"</string>
     <string name="default_theme" msgid="4815428567082263639">"پیش‌فرض"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"نام شبکه"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"توقف موقت اعلان‌ها برای متمرکز ماندن"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"ویژگی دردسترس نیست."</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"این ویژگی غیرفعال شده است چون سرعت تلفنتان را کاهش می‌دهد"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"‏اجرای کامل اندازه‌گیری GNSS"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"بدون دوره کاری، همه دسته عکس‌های پانوراما و فرکانس‌ها را ردیابی کنید."</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"همیشه کادر گفتگوی خرابی نمایش داده شود"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"نمایش کادر گفتگو هنگامی که برنامه‌ای خراب می‌شود"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"‏برنامه دارای ANGLE فعال انتخاب کنید"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"‏«تماس ازطریق Wi-Fi» امکان برقراری و دریافت تماس ازطریق شبکه‌های غیرمخابراتی را (برای مثل برخی از شبکه‌های Wi-Fi) به شما می‌دهد."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"تماس"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"پیامک"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"دارای اولویت"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"اولویت با تماس"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"اولویت با پیامک"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"دردسترس نیست"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"سیم‌کارتی وجود ندارد"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"اولویت‌ها"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"اتصال به شبکه‌های عمومی"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"‏اتصال شبکه، اینترنت، بی‌سیم، داده، wifi،‏ wi-fi، ‏wi fi، شبکه تلفن همراه، تلفن همراه، شرکت مخابراتی تلفن همراه، 4g،‏ 3g،‏ 2g،‏ lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"دردسترس نیست زیرا «حالت وقت خواب» روشن است"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"بازنشاندن اهمیت اعلان تکمیل شد."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"برنامه‌ها"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"دستگاه غیرمطمئنی می‌خواهد به پیام‌هایتان دسترسی داشته باشد. برای دیدن جزئیات، ضربه بزنید."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"دسترسی به پیام‌ها مجاز شود؟"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"دستگاه بلوتوث غیرمطمئنی، [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>]، می‌خواهد به پیام‌هایتان دسترسی داشته باشد.\n\nتاکنون به [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] متصل نشده‌اید."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"دستگاه غیرمطمئنی می‌خواهد به مخاطبین و گزارش تماس شما دسترسی داشته باشد. برای دیدن جزئیات، ضربه بزنید."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"دسترسی به مخاطبین و گزارش تماس مجاز شود؟"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"دستگاه بلوتوث غیرمطمئنی، [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>]، می‌خواهد به مخاطبین و گزارش تماس شما دسترسی داشته باشد. این شامل داده‌های مربوط به تماس‌های ورودی و خروجی می‌شود.\n\nتاکنون به [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] متصل نشده‌اید."</string>
 </resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 25a6d81..150f98b 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6-osoitteet"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Tallennetut verkot"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Tilaukset"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Muut verkot"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP-asetukset"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Wi‑Fi-lisäasetukset eivät ole tämän käyttäjän käytettävissä."</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Tallenna"</string>
@@ -1053,7 +1052,7 @@
     <string name="wifi_p2p_cancel_connect_message" msgid="2409074184473879809">"Haluatko peruuttaa laitteelle <xliff:g id="PEER_NAME">%1$s</xliff:g> lähetetyn yhteydenmuodostuskutsun?"</string>
     <string name="wifi_p2p_delete_group_message" msgid="4880242270742385699">"Unohdetaanko tämä ryhmä?"</string>
     <string name="wifi_hotspot_checkbox_text" msgid="1549663436920597006">"Wi‑Fi-hotspot"</string>
-    <string name="wifi_hotspot_off_subtext" msgid="2751383134504362078">"Internetyhteyttä tai sisältöä ei jaeta muiden laitteiden kanssa."</string>
+    <string name="wifi_hotspot_off_subtext" msgid="2751383134504362078">"Internetyhteyttä tai sisältöä ei jaeta muille laitteille."</string>
     <string name="wifi_hotspot_tethering_on_subtext" product="tablet" msgid="5832429443898690152">"Tabletin internetyhteys jaetaan hotspotin kautta"</string>
     <string name="wifi_hotspot_tethering_on_subtext" product="default" msgid="5451921191609178326">"Puhelimen internetyhteys jaetaan hotspotin kautta"</string>
     <string name="wifi_hotspot_on_local_only_subtext" msgid="965051079784031636">"Sovellus jakaa sisältöä – jos haluat jakaa internetyhteyden, sammuta hotspot ja käynnistä se uudelleen"</string>
@@ -1064,9 +1063,9 @@
     <string name="wifi_hotspot_password_title" msgid="9096340919454296786">"Hotspotin salasana"</string>
     <string name="wifi_hotspot_ap_band_title" msgid="560262446129195042">"AP-taajuus"</string>
     <string name="wifi_hotspot_footer_info_regular" msgid="6620216295510397461">"Hotspot-ominaisuudella voit luoda muille laitteillesi Wi-Fi-verkon. Ominaisuus jakaa internetyhteyden muille laitteille mobiilidatayhteydellä. Lisämaksuja mobiilidatan käytöstä voidaan periä."</string>
-    <string name="wifi_hotspot_footer_info_local_only" msgid="3813311942370920903">"Sovellukset voivat luoda hotspotin ja jakaa sisältöä lähellä olevien laitteiden kanssa."</string>
+    <string name="wifi_hotspot_footer_info_local_only" msgid="3813311942370920903">"Sovellukset voivat luoda hotspotin ja jakaa sisältöä lähellä oleville laitteille."</string>
     <string name="wifi_hotspot_auto_off_title" msgid="8855711787485504882">"Laita hotspot pois päältä automaattisesti"</string>
-    <string name="wifi_hotspot_auto_off_summary" msgid="8283656069997871354">"Kun laitteita ei ole yhdistetty"</string>
+    <string name="wifi_hotspot_auto_off_summary" msgid="8283656069997871354">"Kun laitteita ei ole yhdistettynä"</string>
     <string name="wifi_tether_starting" msgid="8879874184033857814">"Otetaan yhteyspiste käyttöön..."</string>
     <string name="wifi_tether_stopping" msgid="4416492968019409188">"Poistetaan yhteyspiste käytöstä..."</string>
     <string name="wifi_tether_enabled_subtext" msgid="5085002421099821056">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> on aktiivinen"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Poista APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"Uusi APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Tallenna"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Hylkää"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Peru"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Nimi-kenttä ei voi olla tyhjä."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN ei voi olla tyhjä."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Sovellukset voidaan nollata"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Nollaa Wi-Fin, mobiiliverkon ja Bluetoothin asetukset"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Tämä nollaa kaikki verkkoasetukset, esimerkiksi seuraavat:\n\n"<li>"Wi‑Fi"</li>\n<li>"Mobiilidata"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Tyhjennä"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Tyhjennä ladatut SIM-kortit"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Jos haluat ladata korvaavia SIM-kortteja, ota yhteyttä operaattoriin. Tämä ei peruuta liittymäsopimustasi."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Tämä ei peruuta liittymäsopimustasi. Jos haluat ladata korvaavia SIM-kortteja, ota yhteyttä operaattoriin."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Nollaa asetukset"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Nollataanko kaikki verkkoasetukset? Toimintoa ei voi kumota."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Haluatko nollata kaikki verkkoasetukset ja tyhjentää ladatut SIM-kortit? Toimintoa ei voi kumota."</string>
@@ -1672,7 +1672,7 @@
     <string name="tether_settings_summary_hotspot_and_bluetooth_and_ethernet" msgid="4104425838594994441">"Hotspot, Bluetooth, Ethernet"</string>
     <string name="tether_settings_summary_usb_and_bluetooth_and_ethernet" msgid="5880591133984166550">"USB, Bluetooth, Ethernet"</string>
     <string name="tether_settings_summary_all" msgid="7565193614882005775">"Hotspot, USB, Bluetooth, Ethernet"</string>
-    <string name="tether_settings_summary_off" msgid="2526164899130351968">"Internetyhteyttä ei jaeta muiden laitteiden kanssa."</string>
+    <string name="tether_settings_summary_off" msgid="2526164899130351968">"Internetyhteyttä ei jaeta muille laitteille."</string>
     <string name="tethering_interface_options" msgid="7575535888135143650">"Puhelimen käyttäminen modeemina"</string>
     <string name="disable_wifi_hotspot_title" msgid="2167985468585290478">"Älä käytä Wi-Fi-hotspotia"</string>
     <string name="disable_wifi_hotspot_when_usb_on" msgid="220439059794714583">"Jaa verkkoyhteys vain USB:n kautta"</string>
@@ -1694,8 +1694,8 @@
     <string name="bluetooth_untether_blank" msgid="5087548945727762308">"Jaettu internetyhteys katkaistaan laitteesta <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
     <string name="ethernet_tether_checkbox_text" msgid="959743110824197356">"Ethernetin jakaminen"</string>
     <string name="ethernet_tethering_subtext" product="default" msgid="5998100693350351694">"Jaa puhelimen internetyhteys Ethernetillä"</string>
-    <string name="tethering_footer_info" msgid="6782375845587483281">"Hotspot- ja yhteyden jako ‑ominaisuuksien avulla voit jakaa internetyhteyden muille laitteille mobiilidatayhteydellä. Sovellukset voivat myös luoda hotspotin ja jakaa sisältöä lähellä olevien laitteiden kanssa."</string>
-    <string name="tethering_footer_info_sta_ap_concurrency" msgid="2079039077487477676">"Jaa internetyhteys muille laitteille Wi-Fin tai mobiilidatan avulla hotspotilla tai käyttämällä puhelinta modeemina. Sovellukset voivat myös luoda hotspotin ja jakaa sisältöä lähellä olevien laitteiden kanssa."</string>
+    <string name="tethering_footer_info" msgid="6782375845587483281">"Hotspot- ja yhteyden jako ‑ominaisuuksien avulla voit jakaa internetyhteyden muille laitteille mobiilidatayhteydellä. Sovellukset voivat myös luoda hotspotin ja jakaa sisältöä lähellä oleville laitteille."</string>
+    <string name="tethering_footer_info_sta_ap_concurrency" msgid="2079039077487477676">"Jaa internetyhteys muille laitteille Wi-Fin tai mobiilidatan avulla hotspotilla tai käyttämällä puhelinta modeemina. Sovellukset voivat myös luoda hotspotin ja jakaa sisältöä lähellä oleville laitteille."</string>
     <string name="tethering_help_button_text" msgid="2823655011510912001">"Ohjeet"</string>
     <string name="network_settings_title" msgid="4663717899931613176">"Mobiiliverkko"</string>
     <string name="manage_mobile_plan_title" msgid="5616930513733409064">"Mobiilisopimus"</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Tablettia on käytetty tavallista enemmän"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Laitetta on käytetty tavallista enemmän"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Akku voi loppua odotettua aiemmin"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Huolehditaan akun kunnosta"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Akun kunnon optimointi"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Akun käyttöä rajoitettu tilapäisesti. Lue lisää napauttamalla."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Puhelinta käytetty tavallista enemmän. Akku voi loppua odotettua aiemmin.\n\nAkkua eniten käyttäneet sovellukset:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Tablettia on käytetty tavallista enemmän. Akku voi loppua odotettua aiemmin.\n\nAkkua eniten käyttäneet sovellukset:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Näkyvien data-aineistojen enimmäismäärä"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Palauta oletusarvot"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Automaattisen täytön kehittäjäasetukset palautettu"</string>
+    <string name="location_category" msgid="3496759112306219062">"Sijainti"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Tilapalkin sijaintiosoitin"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Näytä kaikista sijainneista (myös verkko ja yhteydet)"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Pakota täydet GNSS-mitat"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Seuraa kaikkia GNSS-kuvioita ja ‑taajuuksia, joissa ei ole pulssisuhdetta."</string>
     <string name="device_theme" msgid="5027604586494772471">"Laitteen teema"</string>
     <string name="default_theme" msgid="4815428567082263639">"Oletus"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Verkon nimi"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Keskeytä ilmoitukset, jotta voit keskittyä"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Ominaisuutta ei ole saatavilla"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Tämä ominaisuus on poistettu käytöstä, koska se hidastaa puhelintasi."</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Pakota täydet GNSS-mitat"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Seuraa kaikkia GNSS-kuvioita ja ‑taajuuksia, joissa ei ole pulssisuhdetta."</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Näytä aina kaatumisikkuna"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Näytä valintaikkuna aina, kun sovellus kaatuu."</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Valitse ANGLE-yhteensopiva sovellus"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Wi-Fi-puheluilla voit soittaa ja vastaanottaa puheluita muun kuin operaattorin verkon (esim. joidenkin Wi-Fi-verkkojen) kautta."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Puhelut"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"Tekstiviestit"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"ensisijainen"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"ensisijainen: puhelut"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"ensisijainen: tekstiviestit"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"ei saatavilla"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Ei SIM-korttia"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Valinnat"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Yhdistä julkisiin verkkoihin"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"verkkoyhteys, internet, langaton, data, langaton yhteys, Wi-Fi, Wi Fi, datayhteys, mobiili, puhelinoperaattori, 4g, 3g, 2g, LTE"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Ei käytettävissä, koska Nukkuma-aikamoodi on päällä"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Ilmoitusten tärkeys nollattu"</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Sovellukset"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Epäluotettava laite pyytää pääsyä viesteihisi. Katso lisätietoja napauttamalla."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Sallitaanko pääsy viesteihin?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Epäluotettava Bluetooth-laite, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], pyytää pääsyä viesteihisi.\n\n[<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] ei ole ennen ollut yhteydessä laitteeseesi."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Epäluotettava laite pyytää pääsyä yhteystietoihisi ja puhelulokiisi. Katso lisätietoja napauttamalla."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Sallitaanko pääsy yhteystietoihin ja puhelulokiin?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Epäluotettava Bluetooth-laite, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], pyytää pääsyä yhteystietoihisi ja puhelulokiisi. Tämä sisältää datan saapuvista ja lähtevistä puheluista.\n\n[<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] ei ole ennen ollut yhteydessä laitteeseesi."</string>
 </resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 7279516..f652f33 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -25,7 +25,6 @@
     <string name="device_info_default" msgid="1406619232867343310">"Inconnu"</string>
     <plurals name="show_dev_countdown" formatted="false" msgid="1646187747875476269">
       <item quantity="one">Plus que <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> étape pour devenir concepteur.</item>
-      <item quantity="many">You are now <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> steps away from being a developer.</item>
       <item quantity="other">Plus que <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> étapes pour devenir concepteur.</item>
     </plurals>
     <string name="show_dev_on" msgid="2840850085134853754">"Vous êtes maintenant concepteur!"</string>
@@ -209,7 +208,6 @@
     <string name="add_a_language" msgid="2126220398077503271">"Ajouter une langue"</string>
     <plurals name="dlg_remove_locales_title" formatted="false" msgid="2845515796732609837">
       <item quantity="one">Supprimer la langue sélectionnée?</item>
-      <item quantity="many">Remove selected languages?</item>
       <item quantity="other">Supprimer les langues sélectionnées?</item>
     </plurals>
     <string name="dlg_remove_locales_message" msgid="8110560091134252067">"Le texte s\'affichera dans une autre langue."</string>
@@ -302,7 +300,6 @@
     <string name="location_settings_summary_location_off" msgid="4797932754681162262">"Désactivé"</string>
     <plurals name="location_settings_summary_location_on" formatted="false" msgid="1019959038518185676">
       <item quantity="one">Activé : <xliff:g id="COUNT_1">%1$d</xliff:g> application a accès à la position</item>
-      <item quantity="many">On - <xliff:g id="COUNT_1">%1$d</xliff:g> apps have access to location</item>
       <item quantity="other">Activé : <xliff:g id="COUNT_1">%1$d</xliff:g> applications ont accès à la position</item>
     </plurals>
     <string name="location_settings_loading_app_permission_stats" msgid="6054103701535557342">"Chargement en cours…"</string>
@@ -401,7 +398,6 @@
     <string name="fingerprint_enable_keyguard_toggle_title" msgid="5451094461919440992">"verrouillage de l\'écran"</string>
     <plurals name="security_settings_fingerprint_preference_summary" formatted="false" msgid="988602245530967106">
       <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> empreinte digitale configurée</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> fingerprints set up</item>
       <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> empreintes digitales configurées</item>
     </plurals>
     <string name="security_settings_fingerprint_preference_summary_none" msgid="1044059475710838504"></string>
@@ -628,23 +624,19 @@
     <string name="lock_failed_attempts_now_wiping_dialog_dismiss" msgid="170155081899679669">"Ignorer"</string>
     <plurals name="lockpassword_password_too_short" formatted="false" msgid="2192234965414232157">
       <item quantity="one">Doit contenir au moins <xliff:g id="COUNT_1">%d</xliff:g> caractère</item>
-      <item quantity="many">Must be at least <xliff:g id="COUNT_1">%d</xliff:g> characters</item>
       <item quantity="other">Doit contenir au moins <xliff:g id="COUNT_1">%d</xliff:g> caractères</item>
     </plurals>
     <plurals name="lockpassword_pin_too_short" formatted="false" msgid="6817086810898414162">
       <item quantity="one">Le NIP doit contenir au moins <xliff:g id="COUNT_1">%d</xliff:g> chiffre</item>
-      <item quantity="many">PIN must be at least <xliff:g id="COUNT_1">%d</xliff:g> digits</item>
       <item quantity="other">Le NIP doit contenir au moins <xliff:g id="COUNT_1">%d</xliff:g> chiffres</item>
     </plurals>
     <string name="lockpassword_continue_label" msgid="2507983991979547816">"Continuer"</string>
     <plurals name="lockpassword_password_too_long" formatted="false" msgid="8118091957172967677">
       <item quantity="one">Doit contenir moins de <xliff:g id="NUMBER_1">%d</xliff:g> caractère</item>
-      <item quantity="many">Must be fewer than <xliff:g id="NUMBER_1">%d</xliff:g> characters</item>
       <item quantity="other">Doit contenir moins de <xliff:g id="NUMBER_1">%d</xliff:g> caractères</item>
     </plurals>
     <plurals name="lockpassword_pin_too_long" formatted="false" msgid="8706992338720310765">
       <item quantity="one">Doit contenir moins de <xliff:g id="NUMBER_1">%d</xliff:g> chiffre</item>
-      <item quantity="many">Must be fewer than <xliff:g id="NUMBER_1">%d</xliff:g> digits</item>
       <item quantity="other">Doit contenir moins de <xliff:g id="NUMBER_1">%d</xliff:g> chiffres</item>
     </plurals>
     <string name="lockpassword_pin_recently_used" msgid="6650277060998923465">"L\'administrateur de l\'appareil ne permet pas l\'utilisation d\'un NIP récent"</string>
@@ -654,37 +646,30 @@
     <string name="lockpassword_password_requires_symbol" msgid="6178512486154701321">"Doit contenir au moins un symbole"</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="2385916409676839024">
       <item quantity="one">Doit contenir au moins <xliff:g id="COUNT">%d</xliff:g> lettre</item>
-      <item quantity="many">Must contain at least <xliff:g id="COUNT">%d</xliff:g> letters</item>
       <item quantity="other">Doit contenir au moins <xliff:g id="COUNT">%d</xliff:g> lettres</item>
     </plurals>
     <plurals name="lockpassword_password_requires_lowercase" formatted="false" msgid="2057467885488612701">
       <item quantity="one">Doit contenir au moins <xliff:g id="COUNT">%d</xliff:g> lettre minuscule</item>
-      <item quantity="many">Must contain at least <xliff:g id="COUNT">%d</xliff:g> lowercase letters</item>
       <item quantity="other">Doit contenir au moins <xliff:g id="COUNT">%d</xliff:g> lettres minuscules</item>
     </plurals>
     <plurals name="lockpassword_password_requires_uppercase" formatted="false" msgid="4541266279643052025">
       <item quantity="one">Doit contenir au moins <xliff:g id="COUNT">%d</xliff:g> lettre majuscule</item>
-      <item quantity="many">Must contain at least <xliff:g id="COUNT">%d</xliff:g> uppercase letters</item>
       <item quantity="other">Doit contenir au moins <xliff:g id="COUNT">%d</xliff:g> lettres majuscules</item>
     </plurals>
     <plurals name="lockpassword_password_requires_numeric" formatted="false" msgid="70617964591376248">
       <item quantity="one">Doit contenir au moins <xliff:g id="COUNT">%d</xliff:g> chiffre</item>
-      <item quantity="many">Must contain at least <xliff:g id="COUNT">%d</xliff:g> numerical digits</item>
       <item quantity="other">Doit contenir au moins <xliff:g id="COUNT">%d</xliff:g> chiffres</item>
     </plurals>
     <plurals name="lockpassword_password_requires_symbols" formatted="false" msgid="7981236881269921943">
       <item quantity="one">Doit contenir au moins <xliff:g id="COUNT">%d</xliff:g> caractère spécial</item>
-      <item quantity="many">Must contain at least <xliff:g id="COUNT">%d</xliff:g> special symbols</item>
       <item quantity="other">Doit contenir au moins <xliff:g id="COUNT">%d</xliff:g> caractères spéciaux</item>
     </plurals>
     <plurals name="lockpassword_password_requires_nonletter" formatted="false" msgid="1567877061888948467">
       <item quantity="one">Doit contenir au moins <xliff:g id="COUNT">%d</xliff:g> caractère autre qu\'une lettre</item>
-      <item quantity="many">Must contain at least <xliff:g id="COUNT">%d</xliff:g> non-letter characters</item>
       <item quantity="other">Doit contenir au moins <xliff:g id="COUNT">%d</xliff:g> caractères autres qu\'une lettre</item>
     </plurals>
     <plurals name="lockpassword_password_requires_nonnumerical" formatted="false" msgid="5056743974888384475">
       <item quantity="one">Doit contenir au moins <xliff:g id="COUNT">%d</xliff:g> caractère non numérique</item>
-      <item quantity="many">Must contain at least <xliff:g id="COUNT">%d</xliff:g> non-numerical characters</item>
       <item quantity="other">Doit contenir au moins <xliff:g id="COUNT">%d</xliff:g> caractères non numériques</item>
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="5341218079730167191">"L\'administrateur de l\'appareil ne permet pas l\'utilisation d\'un mot de passe récent"</string>
@@ -700,7 +685,6 @@
     <string name="number_of_device_admins_none" msgid="152926922020437312">"Aucune application active"</string>
     <plurals name="number_of_device_admins" formatted="false" msgid="2528735319390151989">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> application active</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> active apps</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> applications actives</item>
     </plurals>
     <string name="manage_trust_agents" msgid="6410149930029992356">"Agents de confiance"</string>
@@ -708,7 +692,6 @@
     <string name="manage_trust_agents_summary" msgid="6423843123607674286">"Aucun"</string>
     <plurals name="manage_trust_agents_summary_on" formatted="false" msgid="5438047398376802735">
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> agent de confiance actif</item>
-      <item quantity="many"><xliff:g id="COUNT">%d</xliff:g> active trust agents</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> agent(s) de confiance actif(s)</item>
     </plurals>
     <string name="bluetooth_quick_toggle_title" msgid="5955341060378240781">"Bluetooth"</string>
@@ -1017,17 +1000,14 @@
     <string name="wifi_forget_dialog_message" msgid="8419499588321940243">"Tous les mots de passe de ce réseau seront supprimés"</string>
     <plurals name="wifi_saved_access_points_summary" formatted="false" msgid="2802436466732147888">
       <item quantity="one">%d réseau</item>
-      <item quantity="many">%d networks</item>
       <item quantity="other">%d réseaux</item>
     </plurals>
     <plurals name="wifi_saved_passpoint_access_points_summary" formatted="false" msgid="5802057518058840450">
       <item quantity="one">%d abonnement</item>
-      <item quantity="many">%d subscriptions</item>
       <item quantity="other">%d abonnements</item>
     </plurals>
     <plurals name="wifi_saved_all_access_points_summary" formatted="false" msgid="5125849180309374451">
       <item quantity="one">%d réseau et abonnement</item>
-      <item quantity="many">%d networks &amp; subscriptions</item>
       <item quantity="other">%d réseaux et abonnements</item>
     </plurals>
     <string name="wifi_advanced_titlebar" msgid="1234150304285575798">"Paramètres Wi-Fi avancés"</string>
@@ -1042,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"Adresses IPv6"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Réseaux enregistrés"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Abonnements"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Autres réseaux"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"Paramètres IP"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Les paramètres Wi-Fi avancés ne sont pas accessibles pour cet utilisateur"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Enregistrer"</string>
@@ -1360,7 +1339,6 @@
     <string name="wrong_pin_code_pukked" msgid="3414172752791445033">"NIP de carte SIM incorrect. Vous devez maintenant communiquer avec votre fournisseur de services pour déverrouiller votre appareil."</string>
     <plurals name="wrong_pin_code" formatted="false" msgid="4054088588731305475">
       <item quantity="one">Le NIP de la carte SIM incorrect. Il vous reste <xliff:g id="NUMBER_1">%d</xliff:g> tentative.</item>
-      <item quantity="many">Incorrect SIM PIN code, you have <xliff:g id="NUMBER_1">%d</xliff:g> remaining attempts.</item>
       <item quantity="other">Le NIP de la carte SIM incorrect. Il vous reste <xliff:g id="NUMBER_1">%d</xliff:g> tentatives.</item>
     </plurals>
     <string name="wrong_pin_code_one" msgid="6924852214263071441">"NIP de module SIM incorrect. Il vous reste une tentative. Après cela, vous devrez communiquer avec votre fournisseur de services pour déverrouiller votre appareil."</string>
@@ -1618,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Supprimer l\'APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"Nouveau nom point d\'accès"</string>
     <string name="menu_save" msgid="6611465355127483100">"Enregistrer"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Supprimer"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Annuler"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Le champ « Nom » est obligatoire."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"L\'APN est obligatoire."</string>
@@ -1633,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Les applications peuvent être réinitialisées"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Réinitialiser les paramètres Wi-Fi, cellulaires et Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Cette opération entraîne la réinitialisation de tous les paramètres réseau, y compris :\n\n"<li>"Le Wi‑Fi"</li>\n<li>"Les données cellulaires"</li>\n<li>"Le Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Effacer"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Effacer cartes SIM téléchargées"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Pour télécharger une carte SIM de remplacement, communiquez avec votre fournisseur de services. Cela n\'annulera aucun forfait de services cellulaires."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Cela n\'annulera aucun forfait de services cellulaires. Pour télécharger une carte SIM de remplacement, communiquez avec votre fournisseur de services."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Réinitialiser les paramètres"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Réinitialiser tous les paramètres réseau? Cette action est irréversible."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Réinitialiser tous les paramètres réseau et effacer les cartes SIM téléchargées? Vous ne pouvez pas annuler cette action."</string>
@@ -1742,7 +1721,6 @@
     <string name="location_app_permission_summary_location_off" msgid="2711822936853500335">"Le signalement de position est désactivé"</string>
     <plurals name="location_app_permission_summary_location_on" formatted="false" msgid="8286873148858526214">
       <item quantity="one"> <xliff:g id="PERMITTED_LOCATION_APP_COUNT_2">%1$d</xliff:g> application sur <xliff:g id="TOTAL_LOCATION_APP_COUNT_3">%2$d</xliff:g> a accès à la position</item>
-      <item quantity="many"> <xliff:g id="PERMITTED_LOCATION_APP_COUNT_2">%1$d</xliff:g> of <xliff:g id="TOTAL_LOCATION_APP_COUNT_3">%2$d</xliff:g> apps have access to location</item>
       <item quantity="other"> <xliff:g id="PERMITTED_LOCATION_APP_COUNT_2">%1$d</xliff:g> applications sur <xliff:g id="TOTAL_LOCATION_APP_COUNT_3">%2$d</xliff:g> ont accès à la position</item>
     </plurals>
     <string name="location_category_recent_location_access" msgid="7880996987927703141">"Accès récents à la position"</string>
@@ -1903,7 +1881,6 @@
     <string name="recent_app_category_title" msgid="189758417804427533">"Applications récemment ouvertes"</string>
     <plurals name="see_all_apps_title" formatted="false" msgid="6864581406735745400">
       <item quantity="one">Afficher %1$d application</item>
-      <item quantity="many">See all %1$d apps</item>
       <item quantity="other">Afficher %1$d applications</item>
     </plurals>
     <string name="forgot_password_title" msgid="3967873480875239885">"Contacter l\'administrateur informatique"</string>
@@ -1924,7 +1901,6 @@
     <string name="cache_size_label" msgid="313456088966822757">"Cache"</string>
     <plurals name="uri_permissions_text" formatted="false" msgid="8212425823423508096">
       <item quantity="one">%d élément</item>
-      <item quantity="many">%d items</item>
       <item quantity="other">%d éléments</item>
     </plurals>
     <string name="clear_uri_btn_text" msgid="4828117421162495134">"Supprimer l\'accès"</string>
@@ -2288,7 +2264,6 @@
     <string name="accessibility_hearingaid_active_device_summary" msgid="509703438222873967">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> est actif"</string>
     <plurals name="show_number_hearingaid_count" formatted="false" msgid="776000580683647556">
       <item quantity="one"><xliff:g id="NUMBER_DEVICE_COUNT_1">%1$d</xliff:g> prothèse auditive enregistrée</item>
-      <item quantity="many"><xliff:g id="NUMBER_DEVICE_COUNT_1">%1$d</xliff:g> saved hearing aids</item>
       <item quantity="other"><xliff:g id="NUMBER_DEVICE_COUNT_1">%1$d</xliff:g> prothèses auditives enregistrées</item>
     </plurals>
     <string name="accessibility_summary_shortcut_enabled" msgid="4030427268146752644">"Raccourci activé"</string>
@@ -2308,22 +2283,18 @@
     <string name="daltonizer_mode_tritanomaly_summary" msgid="2837137091067433059">"Bleu-jaune"</string>
     <plurals name="accessibilty_autoclick_preference_subtitle_short_delay" formatted="false" msgid="5354221071353645263">
       <item quantity="one">Court (<xliff:g id="CLICK_DELAY_LABEL_1">%1$s</xliff:g> seconde)</item>
-      <item quantity="many">Short (<xliff:g id="CLICK_DELAY_LABEL_1">%1$s</xliff:g> seconds)</item>
       <item quantity="other">Court (<xliff:g id="CLICK_DELAY_LABEL_1">%1$s</xliff:g> secondes)</item>
     </plurals>
     <plurals name="accessibilty_autoclick_preference_subtitle_medium_delay" formatted="false" msgid="1550891909800510628">
       <item quantity="one">Moyen (<xliff:g id="CLICK_DELAY_LABEL_1">%1$s</xliff:g> seconde)</item>
-      <item quantity="many">Medium (<xliff:g id="CLICK_DELAY_LABEL_1">%1$s</xliff:g> seconds)</item>
       <item quantity="other">Moyen (<xliff:g id="CLICK_DELAY_LABEL_1">%1$s</xliff:g> secondes)</item>
     </plurals>
     <plurals name="accessibilty_autoclick_preference_subtitle_long_delay" formatted="false" msgid="2230755548820485984">
       <item quantity="one">Long (<xliff:g id="CLICK_DELAY_LABEL_1">%1$s</xliff:g> seconde)</item>
-      <item quantity="many">Long (<xliff:g id="CLICK_DELAY_LABEL_1">%1$s</xliff:g> seconds)</item>
       <item quantity="other">Long (<xliff:g id="CLICK_DELAY_LABEL_1">%1$s</xliff:g> secondes)</item>
     </plurals>
     <plurals name="accessibilty_autoclick_delay_unit_second" formatted="false" msgid="4537791441118261556">
       <item quantity="one"><xliff:g id="CLICK_DELAY_LABEL_2">%1$s</xliff:g> seconde</item>
-      <item quantity="many"><xliff:g id="CLICK_DELAY_LABEL_2">%1$s</xliff:g> seconds</item>
       <item quantity="other"><xliff:g id="CLICK_DELAY_LABEL_2">%1$s</xliff:g> secondes</item>
     </plurals>
     <string name="accessibility_vibration_summary" msgid="27904038683405084">"Sonnerie : <xliff:g id="SUMMARY_RING">%1$s</xliff:g>. Notifications : <xliff:g id="SUMMARY_NOTIFICATION">%2$s</xliff:g>. Toucher : <xliff:g id="SUMMARY_TOUCH">%3$s</xliff:g>."</string>
@@ -2396,12 +2367,10 @@
     <string name="print_settings_summary_no_service" msgid="6721731154917653862">"Désactivé"</string>
     <plurals name="print_settings_summary" formatted="false" msgid="1034273609054146099">
       <item quantity="one"><xliff:g id="COUNT">%1$d</xliff:g> service d\'impression actif</item>
-      <item quantity="many"><xliff:g id="COUNT">%1$d</xliff:g> print services on</item>
       <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> services d\'impression actifs</item>
     </plurals>
     <plurals name="print_jobs_summary" formatted="false" msgid="3933688846338306536">
       <item quantity="one"><xliff:g id="COUNT">%1$d</xliff:g> tâche d\'impression</item>
-      <item quantity="many"><xliff:g id="COUNT">%1$d</xliff:g> print jobs</item>
       <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> tâches d\'impression</item>
     </plurals>
     <string name="print_settings_title" msgid="7680498284751129935">"Services d\'impression"</string>
@@ -2487,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"La tablette a été sollicitée plus que d\'habitude"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"L\'appareil a été sollicité plus que d\'habitude"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"La pile pourrait s\'épuiser plus tôt que d\'habitude"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Préservation de la pile"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Optimisation en fonction de la santé de la pile"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Pile limitée temporairement. Touchez ici pour en savoir plus."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Votre téléphone a été sollicité plus que d\'habitude. Sa pile pourrait s\'épuiser plus rapidement que prévu.\n\nVoici les applications qui ont utilisé le plus d\'énergie :"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Votre tablette a été sollicitée plus que d\'habitude. Sa pile pourrait s\'épuiser plus rapidement que prévu.\n\nVoici les applications qui ont utilisé le plus d\'énergie :"</string>
@@ -2495,27 +2464,22 @@
     <string name="battery_tip_dialog_message_footer" msgid="986542164372177504">"Inclut les activités énergivores en arrière-plan"</string>
     <plurals name="battery_tip_restrict_title" formatted="false" msgid="3108195491484891588">
       <item quantity="one">Restreindre %1$d application</item>
-      <item quantity="many">Restrict %1$d apps</item>
       <item quantity="other">Restreindre %1$d applications</item>
     </plurals>
     <plurals name="battery_tip_restrict_handled_title" formatted="false" msgid="5862649927574803958">
       <item quantity="one">%2$d application récemment restreinte</item>
-      <item quantity="many">%2$d apps recently restricted</item>
       <item quantity="other">%2$d applications récemment restreintes</item>
     </plurals>
     <plurals name="battery_tip_restrict_summary" formatted="false" msgid="3328499737453686910">
       <item quantity="one">%2$d application sollicite beaucoup la pile en arrière-plan</item>
-      <item quantity="many">%2$d apps have high background battery usage</item>
       <item quantity="other">%2$d applications sollicitent beaucoup la pile en arrière-plan</item>
     </plurals>
     <plurals name="battery_tip_restrict_handled_summary" formatted="false" msgid="3036853535034350991">
       <item quantity="one">Cette application ne peut pas fonctionner en arrière-plan</item>
-      <item quantity="many">These apps can\'t run in the background</item>
       <item quantity="other">Ces applications ne peuvent pas fonctionner en arrière-plan</item>
     </plurals>
     <plurals name="battery_tip_restrict_app_dialog_title" formatted="false" msgid="7897944678619251740">
       <item quantity="one">Restreindre %1$d application?</item>
-      <item quantity="many">Restrict %1$d apps?</item>
       <item quantity="other">Restreindre %1$d applications?</item>
     </plurals>
     <string name="battery_tip_restrict_app_dialog_message" msgid="137856003724730751">"Pour économiser la pile, empêchez <xliff:g id="APP">%1$s</xliff:g> de l\'utiliser en arrière-plan. Il se peut que cette application ne fonctionne pas correctement et que les notifications soient retardées."</string>
@@ -2536,7 +2500,6 @@
     <string name="restricted_app_title" msgid="6585080822121007436">"Applications restreintes"</string>
     <plurals name="restricted_app_summary" formatted="false" msgid="6059772951505411003">
       <item quantity="one">Limitation de l\'utilisation de la pile pour %1$d application</item>
-      <item quantity="many">Limiting battery usage for %1$d apps</item>
       <item quantity="other">Limitation de l\'utilisation de la pile pour %1$d applications</item>
     </plurals>
     <string name="restricted_app_time_summary" msgid="3097721884155913252">"Application restreinte : <xliff:g id="TIME">%1$s</xliff:g>"</string>
@@ -2547,7 +2510,6 @@
     <string name="battery_manager_off" msgid="673547668722420924">"Désactivé"</string>
     <plurals name="battery_manager_app_restricted" formatted="false" msgid="6714534362166394848">
       <item quantity="one">%1$d application restreinte</item>
-      <item quantity="many">%1$d apps restricted</item>
       <item quantity="other">%1$d applications restreintes</item>
     </plurals>
     <string name="battery_header_title_alternate" msgid="8371821625994616659">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" "<font size="20">"<xliff:g id="UNIT">%</xliff:g>"</font></small>""</string>
@@ -2816,7 +2778,6 @@
     <string name="notification_history_dismiss" msgid="6180321217375722918">"Récemment ignorées"</string>
     <plurals name="notification_history_count" formatted="false" msgid="1859304685071321991">
       <item quantity="one"><xliff:g id="NUMBER_1">%d</xliff:g> notification</item>
-      <item quantity="many"><xliff:g id="NUMBER_1">%d</xliff:g> notifications</item>
       <item quantity="other"><xliff:g id="NUMBER_1">%d</xliff:g> notifications</item>
     </plurals>
     <string name="sound_category_call_ringtone_vibrate_title" msgid="9090693401915654528">"Sonnerie et vibreur pour les appels"</string>
@@ -3066,23 +3027,19 @@
     <string name="done_button" msgid="6269449526248267">"Terminé"</string>
     <plurals name="ssl_ca_cert_dialog_title" formatted="false" msgid="5491460811755938449">
       <item quantity="one">Faire confiance au certificat ou le supprimer</item>
-      <item quantity="many">Trust or remove certificates</item>
       <item quantity="other">Faire confiance aux certificats ou les supprimer</item>
     </plurals>
     <plurals name="ssl_ca_cert_info_message_device_owner" formatted="false" msgid="2788832560436163252">
       <item quantity="one"><xliff:g id="MANAGING_DOMAIN_1">%s</xliff:g> a installé une autorité de certification sur votre appareil, ce qui peut leur permettre de surveiller son activité réseau, y compris les courriels, les applications et les sites Web sécurisés.\n\nPour en savoir plus sur ce certificat, communiquez avec votre administrateur.</item>
-      <item quantity="many"><xliff:g id="MANAGING_DOMAIN_1">%s</xliff:g> has installed certificate authorities on your device, which may allow them to monitor your device network activity, including emails, apps, and secure websites.\n\nFor more information about these certificates, contact your admin.</item>
       <item quantity="other"><xliff:g id="MANAGING_DOMAIN_1">%s</xliff:g> a installé des autorités de certification sur votre appareil, ce qui peut leur permettre de surveiller son activité réseau, y compris les courriels, les applications et les sites Web sécurisés.\n\nPour en savoir plus sur ces certificats, communiquez avec votre administrateur.</item>
     </plurals>
     <plurals name="ssl_ca_cert_info_message" formatted="false" msgid="3989916958347169622">
       <item quantity="one"><xliff:g id="MANAGING_DOMAIN_1">%s</xliff:g> a installé une autorité de certification pour votre profil professionnel, ce qui peut leur permettre de surveiller l\'activité du réseau, y compris les courriels, les applications et les sites Web sécurisés.\n\nPour en savoir plus sur ce certificat, communiquez avec votre administrateur.</item>
-      <item quantity="many"><xliff:g id="MANAGING_DOMAIN_1">%s</xliff:g> has installed certificate authorities for your work profile, which may allow them to monitor work network activity, including emails, apps, and secure websites.\n\nFor more information about these certificates, contact your admin.</item>
       <item quantity="other"><xliff:g id="MANAGING_DOMAIN_1">%s</xliff:g> a installé des autorités de certification pour votre profil professionnel, ce qui peut leur permettre de surveiller l\'activité du réseau, y compris les courriels, les applications et les sites Web sécurisés.\n\nPour en savoir plus sur ces certificats, communiquez avec votre administrateur.</item>
     </plurals>
     <string name="ssl_ca_cert_warning_message" msgid="4374052724815563051">"Un tiers peut surveiller votre activité réseau, y compris les courriels, les applications et les sites Web sécurisés. \n\nUn certificat de confiance installé sur votre appareil rend cela possible."</string>
     <plurals name="ssl_ca_cert_settings_button" formatted="false" msgid="125941406175485894">
       <item quantity="one">Vérifier le certificat</item>
-      <item quantity="many">Check certificates</item>
       <item quantity="other">Vérifier les certificats</item>
     </plurals>
     <string name="user_settings_title" msgid="6550866465409807877">"Plusieurs utilisateurs"</string>
@@ -3260,7 +3217,6 @@
     <string name="dashboard_title" msgid="5660733037244683387">"Paramètres"</string>
     <plurals name="settings_suggestion_header_summary_hidden_items" formatted="false" msgid="6585075562837786847">
       <item quantity="one">Afficher %d élément masqué</item>
-      <item quantity="many">Show %d hidden items</item>
       <item quantity="other">Afficher %d éléments masqués</item>
     </plurals>
     <string name="network_dashboard_title" msgid="788543070557731240">"Réseau et Internet"</string>
@@ -3412,7 +3368,7 @@
     <string name="boot_sounds_title" msgid="5033062848948884111">"Activation par les sons"</string>
     <string name="live_caption_title" msgid="8617086825712756983">"Transcription instantanée"</string>
     <string name="live_caption_summary" msgid="2898451867595161809">"Ajouter automatiquement des sous-titres aux contenus multimédias"</string>
-    <string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Aucun}=1{1 horaire programmé}one{# horaire programmé}many{# schedules set}other{# horaires programmés}}"</string>
+    <string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Aucun}=1{1 horaire programmé}one{# horaire programmé}other{# horaires programmés}}"</string>
     <string name="zen_mode_settings_title" msgid="682676757791334259">"Ne pas déranger"</string>
     <string name="zen_mode_settings_summary" msgid="6040862775514495191">"Recevez uniquement les notifications des personnes et des applications importantes"</string>
     <string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Limiter les interruptions"</string>
@@ -3483,9 +3439,9 @@
     <string name="zen_mode_sound_summary_on" msgid="9077659040104989899">"Activé"</string>
     <string name="zen_mode_duration_summary_always_prompt" msgid="7658172853423383037">"Toujours demander"</string>
     <string name="zen_mode_duration_summary_forever" msgid="5551992961329998606">"Jusqu\'à la désactivation"</string>
-    <string name="zen_mode_duration_summary_time_hours" msgid="2602655749780428308">"{count,plural, =1{1 heure}one{# heure}many{# hours}other{# heures}}"</string>
-    <string name="zen_mode_duration_summary_time_minutes" msgid="5755536844016835693">"{count,plural, =1{1 minute}one{# minute}many{# minutes}other{# minutes}}"</string>
-    <string name="zen_mode_sound_summary_off" msgid="7350437977839985836">"{count,plural, =0{Désactivé}=1{Désactivé : 1 horaire peut s\'activer automatiquement}one{Désactivé : # horaire peut s\'activer automatiquement}many{Off / # schedules can turn on automatically}other{Désactivé : # horaires peuvent s\'activer automatiquement}}"</string>
+    <string name="zen_mode_duration_summary_time_hours" msgid="2602655749780428308">"{count,plural, =1{1 heure}one{# heure}other{# heures}}"</string>
+    <string name="zen_mode_duration_summary_time_minutes" msgid="5755536844016835693">"{count,plural, =1{1 minute}one{# minute}other{# minutes}}"</string>
+    <string name="zen_mode_sound_summary_off" msgid="7350437977839985836">"{count,plural, =0{Désactivé}=1{Désactivé : 1 horaire peut s\'activer automatiquement}one{Désactivé : # horaire peut s\'activer automatiquement}other{Désactivé : # horaires peuvent s\'activer automatiquement}}"</string>
     <string name="zen_category_behavior" msgid="3214056473947178507">"Ce qui peut interrompre le mode Ne pas déranger"</string>
     <string name="zen_category_people" msgid="8252926021894933047">"Personnes"</string>
     <string name="zen_category_apps" msgid="1167374545618451925">"Applications"</string>
@@ -3627,7 +3583,6 @@
     <string name="priority_conversation_count_zero" msgid="3862289535537564713">"Aucune conversation prioritaire"</string>
     <plurals name="priority_conversation_count" formatted="false" msgid="4229447176780862649">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> conversation prioritaire</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> priority conversations</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> conversations prioritaires</item>
     </plurals>
     <string name="important_conversations" msgid="1233893707189659401">"Conversations prioritaires"</string>
@@ -3669,12 +3624,10 @@
     <string name="default_notification_assistant" msgid="243718059890346442">"Notifications adaptatives"</string>
     <plurals name="notifications_sent_daily" formatted="false" msgid="1479283620504341566">
       <item quantity="one">~<xliff:g id="NUMBER_1">%d</xliff:g> notification par jour</item>
-      <item quantity="many">~<xliff:g id="NUMBER_1">%d</xliff:g> notifications per day</item>
       <item quantity="other">~<xliff:g id="NUMBER_1">%d</xliff:g> notifications par jour</item>
     </plurals>
     <plurals name="notifications_sent_weekly" formatted="false" msgid="4913443431857170519">
       <item quantity="one">~<xliff:g id="NUMBER_1">%d</xliff:g> notification par semaine</item>
-      <item quantity="many">~<xliff:g id="NUMBER_1">%d</xliff:g> notifications per week</item>
       <item quantity="other">~<xliff:g id="NUMBER_1">%d</xliff:g> notifications par semaine</item>
     </plurals>
     <string name="notifications_sent_never" msgid="9081278709126812062">"Jamais"</string>
@@ -3683,7 +3636,6 @@
     <string name="manage_notification_access_summary_zero" msgid="7528633634628627431">"Les applications ne peuvent pas lire les notifications."</string>
     <plurals name="manage_notification_access_summary_nonzero" formatted="false" msgid="3703008881487586312">
       <item quantity="one">%d application peut lire les notifications</item>
-      <item quantity="many">%d apps can read notifications</item>
       <item quantity="other">%d application peuvent lire les notifications</item>
     </plurals>
     <string name="notification_assistant_title" msgid="6983941403582134437">"Notifications adaptatives"</string>
@@ -3730,7 +3682,6 @@
     <string name="interact_across_profiles_number_of_connected_apps_none" msgid="8573289199942092964">"Aucune application associée"</string>
     <plurals name="interact_across_profiles_number_of_connected_apps" formatted="false" msgid="6991750455661974772">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> application connectée</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> apps connected</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> applications connectées</item>
     </plurals>
     <string name="interact_across_profiles_install_work_app_title" msgid="2821669067014436056">"Pour connecter ces applications, installez <xliff:g id="NAME">%1$s</xliff:g> dans votre profil professionnel"</string>
@@ -3747,7 +3698,6 @@
     <string name="notification_channels_other" msgid="18159805343647908">"Autre"</string>
     <plurals name="notification_group_summary" formatted="false" msgid="483490958130993160">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> catégorie</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> categories</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> catégories</item>
     </plurals>
     <string name="no_channels" msgid="4716199078612071915">"Cette application n\'a publié aucune notification"</string>
@@ -3756,12 +3706,10 @@
     <string name="app_notification_listing_summary_zero" msgid="2988400013221120744">"Activé pour toutes les applications"</string>
     <plurals name="app_notification_listing_summary_others" formatted="false" msgid="1506127395400503717">
       <item quantity="one">Désactivé pour <xliff:g id="COUNT_1">%d</xliff:g> application</item>
-      <item quantity="many">Off for <xliff:g id="COUNT_1">%d</xliff:g> apps</item>
       <item quantity="other">Désactivé pour <xliff:g id="COUNT_1">%d</xliff:g> applications</item>
     </plurals>
     <plurals name="deleted_channels" formatted="false" msgid="5963473421547029532">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> catégorie supprimée</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> categories deleted</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> catégories supprimées</item>
     </plurals>
     <string name="notification_toggle_on" msgid="1624283327379059003">"Activées"</string>
@@ -3834,7 +3782,7 @@
     <string name="zen_mode_from_all_conversations" msgid="3447000451361857061">"Toutes les conversations"</string>
     <string name="zen_mode_from_important_conversations" msgid="528050873364229253">"Conversations prioritaires"</string>
     <string name="zen_mode_from_no_conversations" msgid="3924593219855567165">"Aucune"</string>
-    <string name="zen_mode_conversations_count" msgid="3199310723073707153">"{count,plural, =0{Aucune}=1{1 conversation}one{# conversation}many{# conversations}other{# conversations}}"</string>
+    <string name="zen_mode_conversations_count" msgid="3199310723073707153">"{count,plural, =0{Aucune}=1{1 conversation}one{# conversation}other{# conversations}}"</string>
     <string name="zen_mode_people_calls_messages_section_title" msgid="6815202112413762206">"Qui peut provoquer des interruptions"</string>
     <string name="zen_mode_calls_title" msgid="2078578043677037740">"Appels"</string>
     <string name="zen_mode_calls" msgid="7653245854493631095">"Appels"</string>
@@ -3843,7 +3791,7 @@
     <string name="zen_mode_calls_footer" msgid="2008079711083701243">"Pour vous assurer que les appels autorisés émettent un son, vérifiez si votre appareil est réglé pour sonner"</string>
     <string name="zen_mode_custom_calls_footer" msgid="6521283204577441053">"Pendant « <xliff:g id="SCHEDULE_NAME">%1$s</xliff:g> », les appels entrants sont bloqués. Vous pouvez régler les paramètres pour permettre à vos amis, à votre famille ou à d\'autres contacts de vous joindre."</string>
     <string name="zen_mode_starred_contacts_title" msgid="630299631659575589">"Contacts marqués d\'une étoile"</string>
-    <string name="zen_mode_starred_contacts_summary_contacts" msgid="1629467178444895094">"{count,plural,offset:2 =0{Aucun}=1{{contact_1}}=2{{contact_1} et {contact_2}}=3{{contact_1}, {contact_2} et {contact_3}}one{{contact_1}, {contact_2} et # autre}many{{contact_1}, {contact_2}, and # others}other{{contact_1}, {contact_2} et # autres}}"</string>
+    <string name="zen_mode_starred_contacts_summary_contacts" msgid="1629467178444895094">"{count,plural,offset:2 =0{Aucun}=1{{contact_1}}=2{{contact_1} et {contact_2}}=3{{contact_1}, {contact_2} et {contact_3}}one{{contact_1}, {contact_2} et # autre}other{{contact_1}, {contact_2} et # autres}}"</string>
     <string name="zen_mode_starred_contacts_empty_name" msgid="2906404745550293688">"(Sans nom)"</string>
     <string name="zen_mode_messages" msgid="7315084748885170585">"Messages"</string>
     <string name="zen_mode_messages_list" msgid="5431014101342361882">"messages"</string>
@@ -3853,7 +3801,7 @@
     <string name="zen_mode_custom_messages_footer" msgid="7545180036949550830">"Pendant « <xliff:g id="SCHEDULE_NAME">%1$s</xliff:g> », les messages entrants sont bloqués. Vous pouvez régler les paramètres pour permettre à vos amis, à votre famille ou à d\'autres contacts de vous joindre."</string>
     <string name="zen_mode_all_messages_summary" msgid="3756267858343104554">"Tous les messages peuvent vous parvenir"</string>
     <string name="zen_mode_all_calls_summary" msgid="7337907849083824698">"Tous les appels peuvent vous parvenir"</string>
-    <string name="zen_mode_contacts_count" msgid="6568631261119795799">"{count,plural, =0{Aucun}=1{1 contact}one{# contact}many{# contacts}other{# contacts}}"</string>
+    <string name="zen_mode_contacts_count" msgid="6568631261119795799">"{count,plural, =0{Aucun}=1{1 contact}one{# contact}other{# contacts}}"</string>
     <string name="zen_mode_from_anyone" msgid="6027004263046694174">"Tout le monde"</string>
     <string name="zen_mode_from_contacts" msgid="2989933306317064818">"Contacts"</string>
     <string name="zen_mode_from_starred" msgid="8616516644241652287">"Contacts marqués d\'une étoile"</string>
@@ -3891,13 +3839,13 @@
     <string name="zen_mode_bypassing_apps_summary_all" msgid="4684544706511555744">"Toutes les notifications"</string>
     <string name="zen_mode_bypassing_apps_summary_some" msgid="5315750826830358230">"Quelques notifications"</string>
     <string name="zen_mode_bypassing_apps_footer" msgid="1454862989340760124">"Les personnes sélectionnées peuvent toujours vous joindre, même si vous n\'autorisez pas les applications à provoquer des interruptions"</string>
-    <string name="zen_mode_bypassing_apps_subtext" msgid="5258652366929842710">"{count,plural,offset:2 =0{Aucune application ne peut provoquer d\'interruption}=1{{app_1} peut provoquer des interruptions}=2{{app_1} et {app_2} peuvent provoquer des interruptions}=3{{app_1}, {app_2} et {app_3} peuvent provoquer des interruptions}one{{app_1}, {app_2} et # autre application peuvent provoquer des interruptions}many{{app_1}, {app_2}, and # more can interrupt}other{{app_1}, {app_2} et # autres applications peuvent provoquer des interruptions}}"</string>
+    <string name="zen_mode_bypassing_apps_subtext" msgid="5258652366929842710">"{count,plural,offset:2 =0{Aucune application ne peut provoquer d\'interruption}=1{{app_1} peut provoquer des interruptions}=2{{app_1} et {app_2} peuvent provoquer des interruptions}=3{{app_1}, {app_2} et {app_3} peuvent provoquer des interruptions}one{{app_1}, {app_2} et # autre application peuvent provoquer des interruptions}other{{app_1}, {app_2} et # autres applications peuvent provoquer des interruptions}}"</string>
     <string name="zen_mode_bypassing_apps_title" msgid="371050263563164059">"Applications"</string>
     <string name="zen_mode_bypassing_apps_all_summary" msgid="5197566190120503132">"Toutes les notifications"</string>
     <string name="zen_mode_bypassing_apps_some_summary" msgid="1514572070650411509">"Quelques notifications"</string>
     <string name="zen_mode_bypassing_app_channels_header" msgid="4011017798712587373">"Notifications qui peuvent provoquer des interruptions"</string>
     <string name="zen_mode_bypassing_app_channels_toggle_all" msgid="1449462656358219116">"Autoriser toutes les notifications"</string>
-    <string name="zen_mode_other_sounds_summary" msgid="8784400697494837032">"{count,plural,offset:2 =0{Rien ne peut provoquer d\'interruption}=1{{sound_category_1} peut provoquer des interruptions}=2{{sound_category_1} et {sound_category_2} peuvent provoquer des interruptions}=3{{sound_category_1}, {sound_category_2} et {sound_category_3} peuvent provoquer des interruptions}one{{sound_category_1}, {sound_category_2} et # autre application peuvent provoquer des interruptions}many{{sound_category_1}, {sound_category_2}, and # more can interrupt}other{{sound_category_1}, {sound_category_2} et # autres applications peuvent provoquer des interruptions}}"</string>
+    <string name="zen_mode_other_sounds_summary" msgid="8784400697494837032">"{count,plural,offset:2 =0{Rien ne peut provoquer d\'interruption}=1{{sound_category_1} peut provoquer des interruptions}=2{{sound_category_1} et {sound_category_2} peuvent provoquer des interruptions}=3{{sound_category_1}, {sound_category_2} et {sound_category_3} peuvent provoquer des interruptions}one{{sound_category_1}, {sound_category_2} et # autre application peuvent provoquer des interruptions}other{{sound_category_1}, {sound_category_2} et # autres applications peuvent provoquer des interruptions}}"</string>
     <string name="zen_mode_sounds_none" msgid="6557474361948269420">"Rien ne peut provoquer d\'interruption"</string>
     <string name="zen_mode_people_none" msgid="4613147461974255046">"Personne ne peut provoquer d\'interruption"</string>
     <string name="zen_mode_people_some" msgid="9101872681298810281">"Certaines personnes peuvent provoquer des interruptions"</string>
@@ -3923,12 +3871,10 @@
     <string name="zen_mode_summary_alarms_only_indefinite" msgid="910047326128154945">"Ne recevoir que les alarmes sans limite de temps"</string>
     <plurals name="zen_mode_summary_alarms_only_by_minute" formatted="false" msgid="1900512966361163390">
       <item quantity="one">Alarmes seulement pendant <xliff:g id="DURATION">%1$d</xliff:g> minute, jusqu\'à <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g></item>
-      <item quantity="many">Change to alarms only for <xliff:g id="DURATION">%1$d</xliff:g> minutes (until <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="other">Alarmes seulement pendant <xliff:g id="DURATION">%1$d</xliff:g> minutes, jusqu\'à <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g></item>
     </plurals>
     <plurals name="zen_mode_summary_alarms_only_by_hour" formatted="false" msgid="955991428001659124">
       <item quantity="one">Alarmes seulement pendant <xliff:g id="DURATION">%1$d</xliff:g> heure, jusqu\'à <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g></item>
-      <item quantity="many">Change to alarms only for <xliff:g id="DURATION">%1$d</xliff:g> hours until <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g></item>
       <item quantity="other">Alarmes seulement pendant <xliff:g id="DURATION">%1$d</xliff:g> heures, jusqu\'à <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g></item>
     </plurals>
     <string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Ne recevoir que les alarmes jusqu\'à <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
@@ -4014,22 +3960,18 @@
     <string name="notification_summary_channel" msgid="8459033623057872803">"<xliff:g id="CHANNEL_NAME">%1$s</xliff:g> • <xliff:g id="GROUP_NAME">%2$s</xliff:g>"</string>
     <plurals name="notifications_categories_off" formatted="false" msgid="1385401442703692986">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> catégorie désactivée</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> categories turned off</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> catégories désactivées</item>
     </plurals>
     <plurals name="permissions_summary" formatted="false" msgid="5015472550875144481">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> autorisations accordées</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> permissions granted</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> autorisations accordées</item>
     </plurals>
     <plurals name="runtime_permissions_summary" formatted="false" msgid="2091022049141391855">
       <item quantity="one"><xliff:g id="COUNT_2">%d</xliff:g> autorisation accordée sur <xliff:g id="COUNT_3">%d</xliff:g></item>
-      <item quantity="many"><xliff:g id="COUNT_2">%d</xliff:g> of <xliff:g id="COUNT_3">%d</xliff:g> permissions granted</item>
       <item quantity="other"><xliff:g id="COUNT_2">%d</xliff:g> autorisations accordées sur <xliff:g id="COUNT_3">%d</xliff:g></item>
     </plurals>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="5888624648943937645">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> autorisation supplémentaire</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> additional permissions</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> autorisations supplémentaires</item>
     </plurals>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="7456745929035665029">"Aucune autorisation accordée"</string>
@@ -4059,7 +4001,6 @@
     <string name="domain_urls_apps_summary_off" msgid="2534980824850890416">"Aucune application ouvrant des liens compatibles"</string>
     <plurals name="domain_urls_apps_summary_on" formatted="false" msgid="7864816862441985323">
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> application ouvrant des liens compatibles</item>
-      <item quantity="many"><xliff:g id="COUNT">%d</xliff:g> apps opening supported links</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> applications ouvrant des liens compatibles</item>
     </plurals>
     <string name="app_link_open_always" msgid="9167065494930657503">"Autoriser l\'application à gérer les liens pris en charge"</string>
@@ -4067,7 +4008,6 @@
     <string name="app_link_open_never" msgid="5299808605386052350">"Ne pas autoriser l\'application à ouvrir les liens"</string>
     <plurals name="app_link_open_always_summary" formatted="false" msgid="1816161439007251694">
       <item quantity="one">L\'application revendique <xliff:g id="COUNT_1">%d</xliff:g> lien</item>
-      <item quantity="many">App claims to handle <xliff:g id="COUNT_1">%d</xliff:g> links</item>
       <item quantity="other">L\'application revendique <xliff:g id="COUNT_1">%d</xliff:g> liens</item>
     </plurals>
     <string name="open_supported_links_footer" msgid="3188808142432787933">"L\'application réclame les liens suivants :"</string>
@@ -4110,12 +4050,10 @@
     <string name="hide_extra_apps" msgid="7313907836289865123">"Afficher utilisation des applis"</string>
     <plurals name="power_high_usage_summary" formatted="false" msgid="573433136005336970">
       <item quantity="one"><xliff:g id="NUMBER">%2$d</xliff:g> application se comporte de manière anormale</item>
-      <item quantity="many"><xliff:g id="NUMBER">%2$d</xliff:g> apps behaving abnormally</item>
       <item quantity="other"><xliff:g id="NUMBER">%2$d</xliff:g> applications se comportent de manière anormale</item>
     </plurals>
     <plurals name="power_high_usage_title" formatted="false" msgid="8013115866788425817">
       <item quantity="one">Application qui draine la pile</item>
-      <item quantity="many">Apps draining battery</item>
       <item quantity="other">Applications qui drainent la pile</item>
     </plurals>
     <string name="high_power_filter_on" msgid="447849271630431531">"Non optimisée"</string>
@@ -4193,7 +4131,6 @@
     <string name="memory_usage_apps" msgid="5776108502569850579">"Mémoire utilisée par les applications"</string>
     <plurals name="memory_usage_apps_summary" formatted="false" msgid="1355637088533572208">
       <item quantity="one"><xliff:g id="COUNT">%1$d</xliff:g> application a utilisé de la mémoire au cours de la période suivante : <xliff:g id="DURATION_1">%2$s</xliff:g></item>
-      <item quantity="many"><xliff:g id="COUNT">%1$d</xliff:g> apps used memory in the last <xliff:g id="DURATION_1">%2$s</xliff:g></item>
       <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> applications ont utilisé de la mémoire au cours de la période suivante : <xliff:g id="DURATION_1">%2$s</xliff:g></item>
     </plurals>
     <string name="running_frequency" msgid="7260225121706316639">"Fréquence"</string>
@@ -4268,7 +4205,6 @@
     <string name="data_usage_wifi_format" msgid="7644390582649568117">"<xliff:g id="AMOUNT">^1</xliff:g> utilisés sur Wi‑Fi"</string>
     <plurals name="notification_summary" formatted="false" msgid="7638388920823212470">
       <item quantity="one">Désactivé pour <xliff:g id="COUNT">%d</xliff:g> application</item>
-      <item quantity="many">Off for <xliff:g id="COUNT">%d</xliff:g> apps</item>
       <item quantity="other">Désactivé pour <xliff:g id="COUNT">%d</xliff:g> applications</item>
     </plurals>
     <string name="notification_summary_none" msgid="9179312319023988089">"Activées pour toutes les applications"</string>
@@ -4335,12 +4271,10 @@
     <string name="suggestions_more_title" msgid="240124526378997009">"+<xliff:g id="ID_1">%1$d</xliff:g> autre(s)"</string>
     <plurals name="suggestions_collapsed_title" formatted="false" msgid="5023679825210836444">
       <item quantity="one"><xliff:g id="COUNT">%1$d</xliff:g> suggestion</item>
-      <item quantity="many"><xliff:g id="COUNT">%1$d</xliff:g> suggestions</item>
       <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> suggestions</item>
     </plurals>
     <plurals name="suggestions_collapsed_summary" formatted="false" msgid="3789011332018516832">
       <item quantity="one">+<xliff:g id="COUNT">%1$d</xliff:g> suggestion</item>
-      <item quantity="many">+<xliff:g id="COUNT">%1$d</xliff:g> suggestions</item>
       <item quantity="other">+<xliff:g id="COUNT">%1$d</xliff:g> suggestions</item>
     </plurals>
     <string name="suggestion_remove" msgid="6753986344585367776">"Supprimer"</string>
@@ -4370,7 +4304,6 @@
     <string name="network_restrictions" msgid="8385824604048229846">"Restrictions réseau"</string>
     <plurals name="network_restrictions_summary" formatted="false" msgid="3875128958788008975">
       <item quantity="one"><xliff:g id="COUNT">%1$d</xliff:g> restriction</item>
-      <item quantity="many"><xliff:g id="COUNT">%1$d</xliff:g> restrictions</item>
       <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> restrictions</item>
     </plurals>
     <string name="operator_warning" msgid="5672761970087591211">"Le suivi de consommation de données du fournisseur de services peut différer de celui de l\'appareil"</string>
@@ -4386,7 +4319,6 @@
     <string name="data_usage_other_apps" msgid="5649047093607329537">"Autres applications incluses dans l\'utilisation"</string>
     <plurals name="data_saver_unrestricted_summary" formatted="false" msgid="3316296488378947221">
       <item quantity="one"><xliff:g id="COUNT">%1$d</xliff:g> application est autorisée à ignorer les restrictions lorsque la fonction Économiseur de données est activée</item>
-      <item quantity="many"><xliff:g id="COUNT">%1$d</xliff:g> apps allowed to use unrestricted data when Data Saver is on</item>
       <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> applications sont autorisées à ignorer les restrictions lorsque la fonction Économiseur de données est activée</item>
     </plurals>
     <string name="data_usage_title" msgid="4039024073687469094">"Données primaires"</string>
@@ -4399,7 +4331,6 @@
     <string name="data_usage_chart_no_data_content_description" msgid="5481968839079467231">"Aucune donnée durant cette période"</string>
     <plurals name="billing_cycle_days_left" formatted="false" msgid="661792524671718753">
       <item quantity="one">Il reste %d jour</item>
-      <item quantity="many">%d days left</item>
       <item quantity="other">Il reste %d jours</item>
     </plurals>
     <string name="billing_cycle_none_left" msgid="1694844019159277504">"Aucun temps restant"</string>
@@ -4473,7 +4404,6 @@
     <string name="special_access" msgid="1767980727423395147">"Accès spéciaux applis"</string>
     <plurals name="special_access_summary" formatted="false" msgid="4995506406763570815">
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> application peut utiliser les données sans restriction</item>
-      <item quantity="many"><xliff:g id="COUNT">%d</xliff:g> apps can use unrestricted data</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> applications peuvent utiliser les données sans restriction</item>
     </plurals>
     <string name="special_access_more" msgid="132919514147475846">"En voir plus"</string>
@@ -4512,17 +4442,14 @@
     <string name="cross_profile_calendar_summary" msgid="8856185206722860069">"Afficher les événements professionnels dans l\'agenda personnel"</string>
     <plurals name="hours" formatted="false" msgid="1853396353451635458">
       <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> heure</item>
-      <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> hours</item>
       <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> heures</item>
     </plurals>
     <plurals name="minutes" formatted="false" msgid="6244503272924425418">
       <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> minute</item>
-      <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> minutes</item>
       <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minutes</item>
     </plurals>
     <plurals name="seconds" formatted="false" msgid="4237020272336995370">
       <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> seconde</item>
-      <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> seconds</item>
       <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> secondes</item>
     </plurals>
     <string name="automatic_storage_manager_settings" msgid="519158151463974656">"Gérer l\'espace de stockage"</string>
@@ -4647,7 +4574,6 @@
     <string name="enterprise_privacy_apps_count_estimation_info" msgid="7959907857710107792">"Le nombre d\'applications est estimé. Il peut exclure les applications installées à partir d\'une source autre que la boutique Google Play Store."</string>
     <plurals name="enterprise_privacy_number_packages_lower_bound" formatted="false" msgid="5403847001419529018">
       <item quantity="one">Minimum de <xliff:g id="COUNT_1">%d</xliff:g> application</item>
-      <item quantity="many">Minimum <xliff:g id="COUNT_1">%d</xliff:g> apps</item>
       <item quantity="other">Minimum de <xliff:g id="COUNT_1">%d</xliff:g> applications</item>
     </plurals>
     <string name="enterprise_privacy_location_access" msgid="8023838718108456971">"Autorisations de localisation"</string>
@@ -4656,7 +4582,6 @@
     <string name="enterprise_privacy_enterprise_set_default_apps" msgid="7498546659083996300">"Applications par défaut"</string>
     <plurals name="enterprise_privacy_number_packages" formatted="false" msgid="8568544906431825430">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> application</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> apps</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> applications</item>
     </plurals>
     <string name="enterprise_privacy_input_method" msgid="3278314982700662246">"Clavier par défaut"</string>
@@ -4670,7 +4595,6 @@
     <string name="enterprise_privacy_ca_certs_work" msgid="4318941788592655561">"Certificats de confiance installés dans votre profil professionnel"</string>
     <plurals name="enterprise_privacy_number_ca_certs" formatted="false" msgid="6459725295322004179">
       <item quantity="one">Minimum de <xliff:g id="COUNT_1">%d</xliff:g> certificat CA</item>
-      <item quantity="many">Minimum <xliff:g id="COUNT_1">%d</xliff:g> CA certificates</item>
       <item quantity="other">Minimum de <xliff:g id="COUNT_1">%d</xliff:g> certificats CA</item>
     </plurals>
     <string name="enterprise_privacy_lock_device" msgid="464054894363899866">"L\'administrateur peut verrouiller l\'appareil et réinitialiser le mot de passe"</string>
@@ -4679,7 +4603,6 @@
     <string name="enterprise_privacy_failed_password_wipe_work" msgid="2537582942554484170">"Nombre maximal de tentatives d\'entrée du mot de passe avant de supprimer les données du profil professionnel"</string>
     <plurals name="enterprise_privacy_number_failed_password_wipe" formatted="false" msgid="8811973918944217791">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> tentative</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> attempts</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> tentatives</item>
     </plurals>
     <string name="do_disclosure_generic" msgid="3067459392402324538">"Cet appareil est géré par votre organisation."</string>
@@ -4688,20 +4611,17 @@
     <string name="learn_more" msgid="3534519107947510952">"En savoir plus"</string>
     <plurals name="default_camera_app_title" formatted="false" msgid="8112432929729136399">
       <item quantity="one">Application d\'appareil photo</item>
-      <item quantity="many">Camera apps</item>
       <item quantity="other">Applications d\'appareil photo</item>
     </plurals>
     <string name="default_calendar_app_title" msgid="1870095225089706093">"Application d\'agenda"</string>
     <string name="default_contacts_app_title" msgid="7740028900741944569">"Application de contacts"</string>
     <plurals name="default_email_app_title" formatted="false" msgid="8338194872609410234">
       <item quantity="one">Application de client de courriel</item>
-      <item quantity="many">Email client apps</item>
       <item quantity="other">Applications de client de courriel</item>
     </plurals>
     <string name="default_map_app_title" msgid="7569231732944853320">"Application de carte"</string>
     <plurals name="default_phone_app_title" formatted="false" msgid="4222188821845826493">
       <item quantity="one">Application de téléphone</item>
-      <item quantity="many">Phone apps</item>
       <item quantity="other">Applications de téléphone</item>
     </plurals>
     <string name="app_names_concatenation_template_2" msgid="8320181646458855457">"<xliff:g id="FIRST_APP_NAME">%1$s</xliff:g> et <xliff:g id="SECOND_APP_NAME">%2$s</xliff:g>"</string>
@@ -4731,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Nombre maximal d\'ensembles de données"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Réinitialiser aux valeurs par défaut"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Les options de remplissage automatique du concepteur ont été réinitialisées"</string>
+    <string name="location_category" msgid="3496759112306219062">"Localisation"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Indicateur de localisation dans la barre d\'état"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Afficher pour tous les lieux, y compris le réseau et la connectivité"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Forcer les mesures GNSS complètes"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Faire le suivi de toutes les constellations et les fréquences GNSS sans cycle de tâches"</string>
     <string name="device_theme" msgid="5027604586494772471">"Thème de l\'appareil"</string>
     <string name="default_theme" msgid="4815428567082263639">"Par défaut"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Nom du réseau"</string>
@@ -4747,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Suspendre les notifications pour rester concentré"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Cette fonctionnalité n\'est pas accessible"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Cette fonctionnalité a été désactivée, car elle ralentit votre téléphone"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Forcer les mesures GNSS complètes"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Faire le suivi de toutes les constellations et les fréquences GNSS sans cycle de tâches"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Toujours afficher la fenêtre de plantage"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Afficher la fenêtre chaque fois qu\'une application plante"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Sélectionnez l\'application compatible avec ANGLE"</string>
@@ -4894,7 +4817,6 @@
     <string name="mobile_network_summary_add_a_network" msgid="9079866102827526779">"Ajouter un réseau"</string>
     <plurals name="mobile_network_summary_count" formatted="false" msgid="5173633860800230925">
       <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> carte SIM</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> SIMs</item>
       <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> cartes SIM</item>
     </plurals>
     <string name="default_for_calls" msgid="2788950217176988034">"Valeur par défaut pour les appels"</string>
@@ -5029,13 +4951,11 @@
     <string name="permission_bar_chart_details" msgid="5816698018592357088">"Tout afficher dans le tableau de bord"</string>
     <plurals name="permission_bar_chart_label" formatted="false" msgid="4853396794340896078">
       <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> application</item>
-      <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> apps</item>
       <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> applications</item>
     </plurals>
     <string name="accessibility_usage_title" msgid="9190967143518779145">"Usage des fonctions d\'accessibilité"</string>
     <plurals name="accessibility_usage_summary" formatted="false" msgid="6910643986958263005">
       <item quantity="one"><xliff:g id="SERVICE_COUNT">%1$d</xliff:g> application a l\'accès complet à votre appareil</item>
-      <item quantity="many"><xliff:g id="SERVICE_COUNT">%1$d</xliff:g> apps have full access to your device</item>
       <item quantity="other"><xliff:g id="SERVICE_COUNT">%1$d</xliff:g> applications ont l\'accès complet à votre appareil</item>
     </plurals>
     <string name="media_output_panel_title" msgid="5920946795078065159">"Changer de sortie"</string>
@@ -5135,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"La fonctionnalité d\'appels Wi-Fi vous permet d\'effectuer des appels sur des réseaux autres que des réseaux cellulaires, comme des réseaux Wi‑Fi."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Appels"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"Messages texte"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"préféré"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"appels préférés"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"messages texte préférés"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"non accessible"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Aucune carte SIM"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Préférences"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Se connecter aux réseaux publics"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"connexion réseau, internet, sans fil, données, wifi, wi-fi, wi fi, cellulaire, mobile, fournisseur cellulaire, 4g, 3g, 2g, lte"</string>
@@ -5143,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Cette fonctionnalité n\'est pas accessible parce que le mode Nuit est activé"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"L\'importance de la notification a bien été réinitialisée."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Applications"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Un appareil non vérifié souhaite accéder à vos messages. Touchez l\'écran pour en savoir plus."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Autoriser l\'accès aux messages?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Un appareil Bluetooth non vérifié, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], souhaite accéder à vos messages.\n\nVous ne vous êtes jamais connecté à [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] auparavant."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Un appareil non vérifié veut accéder à vos contacts et à votre journal d\'appels. Touchez l\'écran pour en savoir plus."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Autoriser l\'accès aux contacts et au journal d\'appels?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Un appareil Bluetooth non vérifié, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], souhaite accéder à vos contacts et à votre journal d\'appels. Cela comprend des données concernant les appels entrants et sortants.\n\nVous ne vous êtes jamais connecté à [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] auparavant."</string>
 </resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index ebd1b18..a2f0b23 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -25,7 +25,6 @@
     <string name="device_info_default" msgid="1406619232867343310">"Inconnu"</string>
     <plurals name="show_dev_countdown" formatted="false" msgid="1646187747875476269">
       <item quantity="one">Plus que <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> étape pour devenir développeur.</item>
-      <item quantity="many">You are now <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> steps away from being a developer.</item>
       <item quantity="other">Plus que <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> étapes pour devenir développeur.</item>
     </plurals>
     <string name="show_dev_on" msgid="2840850085134853754">"Vous êtes désormais un développeur !"</string>
@@ -209,7 +208,6 @@
     <string name="add_a_language" msgid="2126220398077503271">"Ajouter une langue"</string>
     <plurals name="dlg_remove_locales_title" formatted="false" msgid="2845515796732609837">
       <item quantity="one">Supprimer la langue sélectionnée ?</item>
-      <item quantity="many">Remove selected languages?</item>
       <item quantity="other">Supprimer les langues sélectionnées ?</item>
     </plurals>
     <string name="dlg_remove_locales_message" msgid="8110560091134252067">"Le texte s\'affichera dans une autre langue."</string>
@@ -302,7 +300,6 @@
     <string name="location_settings_summary_location_off" msgid="4797932754681162262">"Désactivé"</string>
     <plurals name="location_settings_summary_location_on" formatted="false" msgid="1019959038518185676">
       <item quantity="one">Activée - <xliff:g id="COUNT_1">%1$d</xliff:g> application a accès à votre position</item>
-      <item quantity="many">On - <xliff:g id="COUNT_1">%1$d</xliff:g> apps have access to location</item>
       <item quantity="other">Activée - <xliff:g id="COUNT_1">%1$d</xliff:g> applications ont accès à votre position</item>
     </plurals>
     <string name="location_settings_loading_app_permission_stats" msgid="6054103701535557342">"Chargement…"</string>
@@ -401,7 +398,6 @@
     <string name="fingerprint_enable_keyguard_toggle_title" msgid="5451094461919440992">"verrouillage de l\'écran"</string>
     <plurals name="security_settings_fingerprint_preference_summary" formatted="false" msgid="988602245530967106">
       <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> empreinte digitale configurée</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> fingerprints set up</item>
       <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> empreintes digitales configurées</item>
     </plurals>
     <string name="security_settings_fingerprint_preference_summary_none" msgid="1044059475710838504"></string>
@@ -628,23 +624,19 @@
     <string name="lock_failed_attempts_now_wiping_dialog_dismiss" msgid="170155081899679669">"Ignorer"</string>
     <plurals name="lockpassword_password_too_short" formatted="false" msgid="2192234965414232157">
       <item quantity="one">Le mot de passe doit comporter au moins <xliff:g id="COUNT_1">%d</xliff:g> caractère</item>
-      <item quantity="many">Must be at least <xliff:g id="COUNT_1">%d</xliff:g> characters</item>
       <item quantity="other">Le mot de passe doit comporter au moins <xliff:g id="COUNT_1">%d</xliff:g> caractères</item>
     </plurals>
     <plurals name="lockpassword_pin_too_short" formatted="false" msgid="6817086810898414162">
       <item quantity="one">Le code doit comporter au moins <xliff:g id="COUNT_1">%d</xliff:g> chiffre</item>
-      <item quantity="many">PIN must be at least <xliff:g id="COUNT_1">%d</xliff:g> digits</item>
       <item quantity="other">Le code doit comporter au moins <xliff:g id="COUNT_1">%d</xliff:g> chiffres</item>
     </plurals>
     <string name="lockpassword_continue_label" msgid="2507983991979547816">"Continuer"</string>
     <plurals name="lockpassword_password_too_long" formatted="false" msgid="8118091957172967677">
       <item quantity="one">Le mot de passe doit contenir moins de <xliff:g id="NUMBER_1">%d</xliff:g> caractère</item>
-      <item quantity="many">Must be fewer than <xliff:g id="NUMBER_1">%d</xliff:g> characters</item>
       <item quantity="other">Le mot de passe doit contenir moins de <xliff:g id="NUMBER_1">%d</xliff:g> caractères</item>
     </plurals>
     <plurals name="lockpassword_pin_too_long" formatted="false" msgid="8706992338720310765">
       <item quantity="one">Le code doit contenir moins de <xliff:g id="NUMBER_1">%d</xliff:g> chiffre</item>
-      <item quantity="many">Must be fewer than <xliff:g id="NUMBER_1">%d</xliff:g> digits</item>
       <item quantity="other">Le code doit contenir moins de <xliff:g id="NUMBER_1">%d</xliff:g> chiffres</item>
     </plurals>
     <string name="lockpassword_pin_recently_used" msgid="6650277060998923465">"L\'administrateur de l\'appareil n\'autorise pas l\'utilisation d\'un code récent"</string>
@@ -654,37 +646,30 @@
     <string name="lockpassword_password_requires_symbol" msgid="6178512486154701321">"Veuillez inclure au moins un symbole."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="2385916409676839024">
       <item quantity="one">Le mot de passe doit comporter au moins <xliff:g id="COUNT">%d</xliff:g> lettre</item>
-      <item quantity="many">Must contain at least <xliff:g id="COUNT">%d</xliff:g> letters</item>
       <item quantity="other">Le mot de passe doit comporter au moins <xliff:g id="COUNT">%d</xliff:g> lettres</item>
     </plurals>
     <plurals name="lockpassword_password_requires_lowercase" formatted="false" msgid="2057467885488612701">
       <item quantity="one">Le mot de passe doit comporter au moins <xliff:g id="COUNT">%d</xliff:g> lettre minuscule</item>
-      <item quantity="many">Must contain at least <xliff:g id="COUNT">%d</xliff:g> lowercase letters</item>
       <item quantity="other">Le mot de passe doit comporter au moins <xliff:g id="COUNT">%d</xliff:g> lettres minuscules</item>
     </plurals>
     <plurals name="lockpassword_password_requires_uppercase" formatted="false" msgid="4541266279643052025">
       <item quantity="one">Le mot de passe doit comporter au moins <xliff:g id="COUNT">%d</xliff:g> lettre majuscule</item>
-      <item quantity="many">Must contain at least <xliff:g id="COUNT">%d</xliff:g> uppercase letters</item>
       <item quantity="other">Le mot de passe doit comporter au moins <xliff:g id="COUNT">%d</xliff:g> lettres majuscules</item>
     </plurals>
     <plurals name="lockpassword_password_requires_numeric" formatted="false" msgid="70617964591376248">
       <item quantity="one">Le mot de passe doit comporter au moins <xliff:g id="COUNT">%d</xliff:g> chiffre</item>
-      <item quantity="many">Must contain at least <xliff:g id="COUNT">%d</xliff:g> numerical digits</item>
       <item quantity="other">Le mot de passe doit comporter au moins <xliff:g id="COUNT">%d</xliff:g> chiffres</item>
     </plurals>
     <plurals name="lockpassword_password_requires_symbols" formatted="false" msgid="7981236881269921943">
       <item quantity="one">Le mot de passe doit comporter au moins <xliff:g id="COUNT">%d</xliff:g> symbole spécial</item>
-      <item quantity="many">Must contain at least <xliff:g id="COUNT">%d</xliff:g> special symbols</item>
       <item quantity="other">Le mot de passe doit comporter au moins <xliff:g id="COUNT">%d</xliff:g> symboles spéciaux</item>
     </plurals>
     <plurals name="lockpassword_password_requires_nonletter" formatted="false" msgid="1567877061888948467">
       <item quantity="one">Le mot de passe doit comporter au moins <xliff:g id="COUNT">%d</xliff:g> caractère autre qu\'une lettre</item>
-      <item quantity="many">Must contain at least <xliff:g id="COUNT">%d</xliff:g> non-letter characters</item>
       <item quantity="other">Le mot de passe doit comporter au moins <xliff:g id="COUNT">%d</xliff:g> caractères autre qu\'une lettre</item>
     </plurals>
     <plurals name="lockpassword_password_requires_nonnumerical" formatted="false" msgid="5056743974888384475">
       <item quantity="one">Doit contenir au moins <xliff:g id="COUNT">%d</xliff:g> caractère non numérique</item>
-      <item quantity="many">Must contain at least <xliff:g id="COUNT">%d</xliff:g> non-numerical characters</item>
       <item quantity="other">Doit contenir au moins <xliff:g id="COUNT">%d</xliff:g> caractères non numériques</item>
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="5341218079730167191">"L\'administrateur de l\'appareil n\'autorise pas l\'utilisation d\'un mot de passe récent"</string>
@@ -700,7 +685,6 @@
     <string name="number_of_device_admins_none" msgid="152926922020437312">"Aucune application active"</string>
     <plurals name="number_of_device_admins" formatted="false" msgid="2528735319390151989">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> application active</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> active apps</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> applications actives</item>
     </plurals>
     <string name="manage_trust_agents" msgid="6410149930029992356">"Agents de confiance"</string>
@@ -708,7 +692,6 @@
     <string name="manage_trust_agents_summary" msgid="6423843123607674286">"Aucun"</string>
     <plurals name="manage_trust_agents_summary_on" formatted="false" msgid="5438047398376802735">
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> agent de confiance actif</item>
-      <item quantity="many"><xliff:g id="COUNT">%d</xliff:g> active trust agents</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> agents de confiance actifs</item>
     </plurals>
     <string name="bluetooth_quick_toggle_title" msgid="5955341060378240781">"Bluetooth"</string>
@@ -1017,17 +1000,14 @@
     <string name="wifi_forget_dialog_message" msgid="8419499588321940243">"Tous les mots de passe pour ce réseau seront supprimés"</string>
     <plurals name="wifi_saved_access_points_summary" formatted="false" msgid="2802436466732147888">
       <item quantity="one">%d réseau</item>
-      <item quantity="many">%d networks</item>
       <item quantity="other">%d réseaux</item>
     </plurals>
     <plurals name="wifi_saved_passpoint_access_points_summary" formatted="false" msgid="5802057518058840450">
       <item quantity="one">%d abonnement</item>
-      <item quantity="many">%d subscriptions</item>
       <item quantity="other">%d abonnements</item>
     </plurals>
     <plurals name="wifi_saved_all_access_points_summary" formatted="false" msgid="5125849180309374451">
       <item quantity="one">%d réseau et abonnement</item>
-      <item quantity="many">%d networks &amp; subscriptions</item>
       <item quantity="other">%d réseaux et abonnements</item>
     </plurals>
     <string name="wifi_advanced_titlebar" msgid="1234150304285575798">"Paramètres Wi-Fi avancés"</string>
@@ -1042,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"Adresses IPv6"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Réseaux enregistrés"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Abonnements"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Autres réseaux"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"Paramètres IP"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Les paramètres Wi-Fi avancés ne sont pas disponibles pour cet utilisateur."</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Enregistrer"</string>
@@ -1360,7 +1339,6 @@
     <string name="wrong_pin_code_pukked" msgid="3414172752791445033">"Code PIN de la carte SIM incorrect. Vous devez désormais contacter votre opérateur pour déverrouiller votre appareil."</string>
     <plurals name="wrong_pin_code" formatted="false" msgid="4054088588731305475">
       <item quantity="one">Code PIN de la carte SIM erroné. Il vous reste <xliff:g id="NUMBER_1">%d</xliff:g> tentative.</item>
-      <item quantity="many">Incorrect SIM PIN code, you have <xliff:g id="NUMBER_1">%d</xliff:g> remaining attempts.</item>
       <item quantity="other">Code PIN de la carte SIM erroné. Il vous reste <xliff:g id="NUMBER_1">%d</xliff:g> tentatives.</item>
     </plurals>
     <string name="wrong_pin_code_one" msgid="6924852214263071441">"Code PIN de la carte SIM incorrect. Il vous reste 1 tentative. Après cela, vous devrez contacter votre opérateur pour déverrouiller votre appareil."</string>
@@ -1618,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Supprimer l\'APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"Nouvel APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Enregistrer"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Annuler"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Annuler"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Le champ \"Nom\" est obligatoire."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"L\'APN est obligatoire."</string>
@@ -1633,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Vous pouvez réinitialiser les applications"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Réinitialiser le Wi-Fi, les données mobiles et le Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Tous les paramètres réseau seront réinitialisés, y compris les suivants :\n\n"<li>"Wi‑Fi"</li>\n<li>"Données mobiles"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Effacer"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Effacer les cartes SIM téléchargées"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Pour télécharger des cartes SIM de remplacement, contactez votre opérateur. Cela n\'entraînera la résiliation d\'aucun forfait mobile."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Cela n\'entraînera la résiliation d\'aucun forfait mobile. Pour télécharger des cartes SIM de remplacement, contactez votre opérateur."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Réinitialiser les paramètres"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Réinitialiser tous les paramètres du réseau ? Cette action est irréversible."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Réinitialiser tous les paramètres réseau et effacer les cartes SIM téléchargées ? Cette action est irréversible."</string>
@@ -1742,7 +1721,6 @@
     <string name="location_app_permission_summary_location_off" msgid="2711822936853500335">"La localisation est désactivée"</string>
     <plurals name="location_app_permission_summary_location_on" formatted="false" msgid="8286873148858526214">
       <item quantity="one"> <xliff:g id="PERMITTED_LOCATION_APP_COUNT_2">%1$d</xliff:g> application sur <xliff:g id="TOTAL_LOCATION_APP_COUNT_3">%2$d</xliff:g> a accès à votre position</item>
-      <item quantity="many"> <xliff:g id="PERMITTED_LOCATION_APP_COUNT_2">%1$d</xliff:g> of <xliff:g id="TOTAL_LOCATION_APP_COUNT_3">%2$d</xliff:g> apps have access to location</item>
       <item quantity="other"> <xliff:g id="PERMITTED_LOCATION_APP_COUNT_2">%1$d</xliff:g> applications sur <xliff:g id="TOTAL_LOCATION_APP_COUNT_3">%2$d</xliff:g> ont accès à votre position</item>
     </plurals>
     <string name="location_category_recent_location_access" msgid="7880996987927703141">"Accès récent à votre position"</string>
@@ -1903,7 +1881,6 @@
     <string name="recent_app_category_title" msgid="189758417804427533">"Applications ouvertes récemment"</string>
     <plurals name="see_all_apps_title" formatted="false" msgid="6864581406735745400">
       <item quantity="one">Afficher l\'application</item>
-      <item quantity="many">See all %1$d apps</item>
       <item quantity="other">Afficher les %1$d applications</item>
     </plurals>
     <string name="forgot_password_title" msgid="3967873480875239885">"Contacter votre administrateur informatique"</string>
@@ -1924,7 +1901,6 @@
     <string name="cache_size_label" msgid="313456088966822757">"Cache"</string>
     <plurals name="uri_permissions_text" formatted="false" msgid="8212425823423508096">
       <item quantity="one">%d élément</item>
-      <item quantity="many">%d items</item>
       <item quantity="other">%d éléments</item>
     </plurals>
     <string name="clear_uri_btn_text" msgid="4828117421162495134">"Supprimer l\'accès"</string>
@@ -2288,7 +2264,6 @@
     <string name="accessibility_hearingaid_active_device_summary" msgid="509703438222873967">"Appareil \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\" actif"</string>
     <plurals name="show_number_hearingaid_count" formatted="false" msgid="776000580683647556">
       <item quantity="one"><xliff:g id="NUMBER_DEVICE_COUNT_1">%1$d</xliff:g> appareil auditif enregistré</item>
-      <item quantity="many"><xliff:g id="NUMBER_DEVICE_COUNT_1">%1$d</xliff:g> saved hearing aids</item>
       <item quantity="other"><xliff:g id="NUMBER_DEVICE_COUNT_1">%1$d</xliff:g> appareils auditifs enregistrés</item>
     </plurals>
     <string name="accessibility_summary_shortcut_enabled" msgid="4030427268146752644">"Raccourci activé"</string>
@@ -2308,22 +2283,18 @@
     <string name="daltonizer_mode_tritanomaly_summary" msgid="2837137091067433059">"Bleu-jaune"</string>
     <plurals name="accessibilty_autoclick_preference_subtitle_short_delay" formatted="false" msgid="5354221071353645263">
       <item quantity="one">Court (<xliff:g id="CLICK_DELAY_LABEL_1">%1$s</xliff:g> seconde)</item>
-      <item quantity="many">Short (<xliff:g id="CLICK_DELAY_LABEL_1">%1$s</xliff:g> seconds)</item>
       <item quantity="other">Court (<xliff:g id="CLICK_DELAY_LABEL_1">%1$s</xliff:g> seconde)</item>
     </plurals>
     <plurals name="accessibilty_autoclick_preference_subtitle_medium_delay" formatted="false" msgid="1550891909800510628">
       <item quantity="one">Moyen (<xliff:g id="CLICK_DELAY_LABEL_1">%1$s</xliff:g> seconde)</item>
-      <item quantity="many">Medium (<xliff:g id="CLICK_DELAY_LABEL_1">%1$s</xliff:g> seconds)</item>
       <item quantity="other">Moyen (<xliff:g id="CLICK_DELAY_LABEL_1">%1$s</xliff:g> seconde)</item>
     </plurals>
     <plurals name="accessibilty_autoclick_preference_subtitle_long_delay" formatted="false" msgid="2230755548820485984">
       <item quantity="one">Long (<xliff:g id="CLICK_DELAY_LABEL_1">%1$s</xliff:g> seconde)</item>
-      <item quantity="many">Long (<xliff:g id="CLICK_DELAY_LABEL_1">%1$s</xliff:g> seconds)</item>
       <item quantity="other">Long (<xliff:g id="CLICK_DELAY_LABEL_1">%1$s</xliff:g> seconde)</item>
     </plurals>
     <plurals name="accessibilty_autoclick_delay_unit_second" formatted="false" msgid="4537791441118261556">
       <item quantity="one"><xliff:g id="CLICK_DELAY_LABEL_2">%1$s</xliff:g> seconde</item>
-      <item quantity="many"><xliff:g id="CLICK_DELAY_LABEL_2">%1$s</xliff:g> seconds</item>
       <item quantity="other"><xliff:g id="CLICK_DELAY_LABEL_2">%1$s</xliff:g> seconde</item>
     </plurals>
     <string name="accessibility_vibration_summary" msgid="27904038683405084">"Sonnerie : <xliff:g id="SUMMARY_RING">%1$s</xliff:g>, Notification : <xliff:g id="SUMMARY_NOTIFICATION">%2$s</xliff:g>, Appui : <xliff:g id="SUMMARY_TOUCH">%3$s</xliff:g>"</string>
@@ -2396,12 +2367,10 @@
     <string name="print_settings_summary_no_service" msgid="6721731154917653862">"Désactivé"</string>
     <plurals name="print_settings_summary" formatted="false" msgid="1034273609054146099">
       <item quantity="one"><xliff:g id="COUNT">%1$d</xliff:g> service d\'impression activé</item>
-      <item quantity="many"><xliff:g id="COUNT">%1$d</xliff:g> print services on</item>
       <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> services d\'impression activés</item>
     </plurals>
     <plurals name="print_jobs_summary" formatted="false" msgid="3933688846338306536">
       <item quantity="one"><xliff:g id="COUNT">%1$d</xliff:g> tâche d\'impression</item>
-      <item quantity="many"><xliff:g id="COUNT">%1$d</xliff:g> print jobs</item>
       <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> tâches d\'impression</item>
     </plurals>
     <string name="print_settings_title" msgid="7680498284751129935">"Services d\'impression"</string>
@@ -2487,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Tablette plus utilisée que d\'habitude"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Appareil plus utilisé que d\'habitude"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"La batterie pourrait s\'épuiser plus tôt que prévu"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Préservation de la batterie"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Optimisation pour préserver la batterie"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Batterie limitée temporairement. Appuyez sur cette notification pour en savoir plus."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Votre téléphone a été plus utilisé que d\'habitude. Il est possible que vous arriviez à court de batterie plus vite que prévu.\n\nClassement des applis par utilisation de la batterie :"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Votre tablette a été plus utilisée que d\'habitude. Il est possible que vous arriviez à court de batterie plus vite que prévu.\n\nClassement des applis par utilisation de la batterie :"</string>
@@ -2495,27 +2464,22 @@
     <string name="battery_tip_dialog_message_footer" msgid="986542164372177504">"Inclut les activités en arrière-plan qui sollicitent fortement la batterie"</string>
     <plurals name="battery_tip_restrict_title" formatted="false" msgid="3108195491484891588">
       <item quantity="one">Limiter %1$d application</item>
-      <item quantity="many">Restrict %1$d apps</item>
       <item quantity="other">Limiter %1$d applications</item>
     </plurals>
     <plurals name="battery_tip_restrict_handled_title" formatted="false" msgid="5862649927574803958">
       <item quantity="one">%2$d application récemment limitée</item>
-      <item quantity="many">%2$d apps recently restricted</item>
       <item quantity="other">%2$d applications récemment limitées</item>
     </plurals>
     <plurals name="battery_tip_restrict_summary" formatted="false" msgid="3328499737453686910">
       <item quantity="one">%2$d application sollicite beaucoup la batterie en arrière-plan</item>
-      <item quantity="many">%2$d apps have high background battery usage</item>
       <item quantity="other">%2$d applications sollicitent beaucoup la batterie en arrière-plan</item>
     </plurals>
     <plurals name="battery_tip_restrict_handled_summary" formatted="false" msgid="3036853535034350991">
       <item quantity="one">Cette application ne peut pas s\'exécuter en arrière-plan</item>
-      <item quantity="many">These apps can\'t run in the background</item>
       <item quantity="other">Ces applications ne peuvent pas s\'exécuter en arrière-plan</item>
     </plurals>
     <plurals name="battery_tip_restrict_app_dialog_title" formatted="false" msgid="7897944678619251740">
       <item quantity="one">Restreindre l\'application ?</item>
-      <item quantity="many">Restrict %1$d apps?</item>
       <item quantity="other">Restreindre les %1$d applications ?</item>
     </plurals>
     <string name="battery_tip_restrict_app_dialog_message" msgid="137856003724730751">"Pour économiser la batterie, empêchez <xliff:g id="APP">%1$s</xliff:g> de l\'utiliser en arrière-plan. Cette application peut ne pas fonctionner correctement et ses notifications risquent d\'être retardées."</string>
@@ -2536,7 +2500,6 @@
     <string name="restricted_app_title" msgid="6585080822121007436">"Applications dont l\'accès est limité"</string>
     <plurals name="restricted_app_summary" formatted="false" msgid="6059772951505411003">
       <item quantity="one">Limitation de l\'utilisation de la batterie pour %1$d application</item>
-      <item quantity="many">Limiting battery usage for %1$d apps</item>
       <item quantity="other">Limitation de l\'utilisation de la batterie pour %1$d applications</item>
     </plurals>
     <string name="restricted_app_time_summary" msgid="3097721884155913252">"Limitée <xliff:g id="TIME">%1$s</xliff:g>"</string>
@@ -2547,7 +2510,6 @@
     <string name="battery_manager_off" msgid="673547668722420924">"Désactivé"</string>
     <plurals name="battery_manager_app_restricted" formatted="false" msgid="6714534362166394848">
       <item quantity="one">%1$d application limitée</item>
-      <item quantity="many">%1$d apps restricted</item>
       <item quantity="other">%1$d applications limitées</item>
     </plurals>
     <string name="battery_header_title_alternate" msgid="8371821625994616659">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" "<font size="20">"<xliff:g id="UNIT">%</xliff:g>"</font></small>""</string>
@@ -2816,7 +2778,6 @@
     <string name="notification_history_dismiss" msgid="6180321217375722918">"Notifications ignorées récemment"</string>
     <plurals name="notification_history_count" formatted="false" msgid="1859304685071321991">
       <item quantity="one"><xliff:g id="NUMBER_1">%d</xliff:g> notification</item>
-      <item quantity="many"><xliff:g id="NUMBER_1">%d</xliff:g> notifications</item>
       <item quantity="other"><xliff:g id="NUMBER_1">%d</xliff:g> notifications</item>
     </plurals>
     <string name="sound_category_call_ringtone_vibrate_title" msgid="9090693401915654528">"Sonnerie et vibreur pour les appels"</string>
@@ -3066,23 +3027,19 @@
     <string name="done_button" msgid="6269449526248267">"OK"</string>
     <plurals name="ssl_ca_cert_dialog_title" formatted="false" msgid="5491460811755938449">
       <item quantity="one">Considérer le certificat comme fiable ou le supprimer</item>
-      <item quantity="many">Trust or remove certificates</item>
       <item quantity="other">Considérer les certificats comme fiables ou les supprimer</item>
     </plurals>
     <plurals name="ssl_ca_cert_info_message_device_owner" formatted="false" msgid="2788832560436163252">
       <item quantity="one"><xliff:g id="MANAGING_DOMAIN_1">%s</xliff:g> a installé une autorité de certification sur votre appareil afin de contrôler l\'activité réseau de l\'appareil, y compris les e-mails, les applications et les sites Web sécurisés.\n\nPour en savoir plus sur ce certificat, contactez votre administrateur.</item>
-      <item quantity="many"><xliff:g id="MANAGING_DOMAIN_1">%s</xliff:g> has installed certificate authorities on your device, which may allow them to monitor your device network activity, including emails, apps, and secure websites.\n\nFor more information about these certificates, contact your admin.</item>
       <item quantity="other"><xliff:g id="MANAGING_DOMAIN_1">%s</xliff:g> a installé des autorités de certification sur votre appareil afin de contrôler l\'activité réseau de l\'appareil, y compris les e-mails, les applications et les sites Web sécurisés.\n\nPour en savoir plus sur ces certificats, contactez votre administrateur.</item>
     </plurals>
     <plurals name="ssl_ca_cert_info_message" formatted="false" msgid="3989916958347169622">
       <item quantity="one"><xliff:g id="MANAGING_DOMAIN_1">%s</xliff:g> a installé une autorité de certification pour votre profil professionnel afin de contrôler l\'activité sur le réseau, y compris les e-mails, les applications et les sites Web sécurisés.\n\nPour en savoir plus sur ce certificat, contactez votre administrateur.</item>
-      <item quantity="many"><xliff:g id="MANAGING_DOMAIN_1">%s</xliff:g> has installed certificate authorities for your work profile, which may allow them to monitor work network activity, including emails, apps, and secure websites.\n\nFor more information about these certificates, contact your admin.</item>
       <item quantity="other"><xliff:g id="MANAGING_DOMAIN_1">%s</xliff:g> a installé des autorités de certification pour votre profil professionnel afin de contrôler l\'activité sur le réseau, y compris les e-mails, les applications et les sites Web sécurisés.\n\nPour en savoir plus sur ces certificats, contactez votre administrateur.</item>
     </plurals>
     <string name="ssl_ca_cert_warning_message" msgid="4374052724815563051">"Des tiers ont la possibilité de surveiller votre activité sur le réseau, y compris en ce qui concerne les e-mails, les applications et les sites Web sécurisés.\n\nUn certificat de confiance installé sur votre appareil rend cela possible."</string>
     <plurals name="ssl_ca_cert_settings_button" formatted="false" msgid="125941406175485894">
       <item quantity="one">Vérifier le certificat</item>
-      <item quantity="many">Check certificates</item>
       <item quantity="other">Vérifier les certificats</item>
     </plurals>
     <string name="user_settings_title" msgid="6550866465409807877">"Utilisateurs multiples"</string>
@@ -3260,7 +3217,6 @@
     <string name="dashboard_title" msgid="5660733037244683387">"Paramètres"</string>
     <plurals name="settings_suggestion_header_summary_hidden_items" formatted="false" msgid="6585075562837786847">
       <item quantity="one">Afficher %d élément masqué</item>
-      <item quantity="many">Show %d hidden items</item>
       <item quantity="other">Afficher %d éléments masqués</item>
     </plurals>
     <string name="network_dashboard_title" msgid="788543070557731240">"Réseau et Internet"</string>
@@ -3412,7 +3368,7 @@
     <string name="boot_sounds_title" msgid="5033062848948884111">"Sons de mise en route"</string>
     <string name="live_caption_title" msgid="8617086825712756983">"Sous-titres instantanés"</string>
     <string name="live_caption_summary" msgid="2898451867595161809">"Sous-titres automatiques"</string>
-    <string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Aucune}=1{1 planification définie}one{# planification définie}many{# schedules set}other{# planifications définies}}"</string>
+    <string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Aucune}=1{1 planification définie}one{# planification définie}other{# planifications définies}}"</string>
     <string name="zen_mode_settings_title" msgid="682676757791334259">"Ne pas déranger"</string>
     <string name="zen_mode_settings_summary" msgid="6040862775514495191">"Ne recevoir des notifications que des personnes et applications importantes"</string>
     <string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Limiter les interruptions"</string>
@@ -3483,9 +3439,9 @@
     <string name="zen_mode_sound_summary_on" msgid="9077659040104989899">"Activé"</string>
     <string name="zen_mode_duration_summary_always_prompt" msgid="7658172853423383037">"Toujours demander"</string>
     <string name="zen_mode_duration_summary_forever" msgid="5551992961329998606">"Jusqu\'à la désactivation"</string>
-    <string name="zen_mode_duration_summary_time_hours" msgid="2602655749780428308">"{count,plural, =1{1 heure}one{# heure}many{# hours}other{# heures}}"</string>
-    <string name="zen_mode_duration_summary_time_minutes" msgid="5755536844016835693">"{count,plural, =1{1 minute}one{# minute}many{# minutes}other{# minutes}}"</string>
-    <string name="zen_mode_sound_summary_off" msgid="7350437977839985836">"{count,plural, =0{Désactivé}=1{Désactivé/1 planification peut être activée automatiquement}one{Désactivé/# planification peut être activée automatiquement}many{Off / # schedules can turn on automatically}other{Désactivé/# planifications peuvent être activées automatiquement}}"</string>
+    <string name="zen_mode_duration_summary_time_hours" msgid="2602655749780428308">"{count,plural, =1{1 heure}one{# heure}other{# heures}}"</string>
+    <string name="zen_mode_duration_summary_time_minutes" msgid="5755536844016835693">"{count,plural, =1{1 minute}one{# minute}other{# minutes}}"</string>
+    <string name="zen_mode_sound_summary_off" msgid="7350437977839985836">"{count,plural, =0{Désactivé}=1{Désactivé/1 planification peut être activée automatiquement}one{Désactivé/# planification peut être activée automatiquement}other{Désactivé/# planifications peuvent être activées automatiquement}}"</string>
     <string name="zen_category_behavior" msgid="3214056473947178507">"Ce qui peut interrompre le mode Ne pas déranger"</string>
     <string name="zen_category_people" msgid="8252926021894933047">"Personnes"</string>
     <string name="zen_category_apps" msgid="1167374545618451925">"Applications"</string>
@@ -3627,7 +3583,6 @@
     <string name="priority_conversation_count_zero" msgid="3862289535537564713">"Aucune conversation prioritaire"</string>
     <plurals name="priority_conversation_count" formatted="false" msgid="4229447176780862649">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> conversation prioritaire</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> priority conversations</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> conversations prioritaires</item>
     </plurals>
     <string name="important_conversations" msgid="1233893707189659401">"Conversations prioritaires"</string>
@@ -3669,12 +3624,10 @@
     <string name="default_notification_assistant" msgid="243718059890346442">"Notifications intelligentes"</string>
     <plurals name="notifications_sent_daily" formatted="false" msgid="1479283620504341566">
       <item quantity="one">Environ <xliff:g id="NUMBER_1">%d</xliff:g> notification par jour</item>
-      <item quantity="many">~<xliff:g id="NUMBER_1">%d</xliff:g> notifications per day</item>
       <item quantity="other">Environ <xliff:g id="NUMBER_1">%d</xliff:g> notifications par jour</item>
     </plurals>
     <plurals name="notifications_sent_weekly" formatted="false" msgid="4913443431857170519">
       <item quantity="one">Environ <xliff:g id="NUMBER_1">%d</xliff:g> notification par semaine</item>
-      <item quantity="many">~<xliff:g id="NUMBER_1">%d</xliff:g> notifications per week</item>
       <item quantity="other">Environ <xliff:g id="NUMBER_1">%d</xliff:g> notifications par semaine</item>
     </plurals>
     <string name="notifications_sent_never" msgid="9081278709126812062">"Jamais"</string>
@@ -3683,7 +3636,6 @@
     <string name="manage_notification_access_summary_zero" msgid="7528633634628627431">"Les applications ne peuvent pas lire les notifications."</string>
     <plurals name="manage_notification_access_summary_nonzero" formatted="false" msgid="3703008881487586312">
       <item quantity="one">%d application peut lire les notifications.</item>
-      <item quantity="many">%d apps can read notifications</item>
       <item quantity="other">%d applications peuvent lire les notifications.</item>
     </plurals>
     <string name="notification_assistant_title" msgid="6983941403582134437">"Notifications intelligentes"</string>
@@ -3730,7 +3682,6 @@
     <string name="interact_across_profiles_number_of_connected_apps_none" msgid="8573289199942092964">"Aucune application associée"</string>
     <plurals name="interact_across_profiles_number_of_connected_apps" formatted="false" msgid="6991750455661974772">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> application associée</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> apps connected</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> applications associées</item>
     </plurals>
     <string name="interact_across_profiles_install_work_app_title" msgid="2821669067014436056">"Pour connecter ces applications, installez <xliff:g id="NAME">%1$s</xliff:g> dans votre profil professionnel"</string>
@@ -3747,7 +3698,6 @@
     <string name="notification_channels_other" msgid="18159805343647908">"Autres"</string>
     <plurals name="notification_group_summary" formatted="false" msgid="483490958130993160">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> catégorie</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> categories</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> catégories</item>
     </plurals>
     <string name="no_channels" msgid="4716199078612071915">"Cette application n\'a publié aucune notification"</string>
@@ -3756,12 +3706,10 @@
     <string name="app_notification_listing_summary_zero" msgid="2988400013221120744">"Activées pour toutes les applications"</string>
     <plurals name="app_notification_listing_summary_others" formatted="false" msgid="1506127395400503717">
       <item quantity="one">Désactivé pour <xliff:g id="COUNT_1">%d</xliff:g> application</item>
-      <item quantity="many">Off for <xliff:g id="COUNT_1">%d</xliff:g> apps</item>
       <item quantity="other">Désactivé pour <xliff:g id="COUNT_1">%d</xliff:g> applications</item>
     </plurals>
     <plurals name="deleted_channels" formatted="false" msgid="5963473421547029532">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> catégorie supprimée</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> categories deleted</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> catégories supprimées</item>
     </plurals>
     <string name="notification_toggle_on" msgid="1624283327379059003">"Activées"</string>
@@ -3834,7 +3782,7 @@
     <string name="zen_mode_from_all_conversations" msgid="3447000451361857061">"Toutes les conversations"</string>
     <string name="zen_mode_from_important_conversations" msgid="528050873364229253">"Conversations prioritaires"</string>
     <string name="zen_mode_from_no_conversations" msgid="3924593219855567165">"Aucune"</string>
-    <string name="zen_mode_conversations_count" msgid="3199310723073707153">"{count,plural, =0{Aucune}=1{1 conversation}one{# conversation}many{# conversations}other{# conversations}}"</string>
+    <string name="zen_mode_conversations_count" msgid="3199310723073707153">"{count,plural, =0{Aucune}=1{1 conversation}one{# conversation}other{# conversations}}"</string>
     <string name="zen_mode_people_calls_messages_section_title" msgid="6815202112413762206">"Personnes qui peuvent interrompre le mode Ne pas déranger"</string>
     <string name="zen_mode_calls_title" msgid="2078578043677037740">"Appels"</string>
     <string name="zen_mode_calls" msgid="7653245854493631095">"Appels"</string>
@@ -3843,7 +3791,7 @@
     <string name="zen_mode_calls_footer" msgid="2008079711083701243">"Pour que le téléphone sonne lorsque vous recevez un appel autorisé, assurez-vous d\'avoir activé la sonnerie"</string>
     <string name="zen_mode_custom_calls_footer" msgid="6521283204577441053">"Les appels entrants sont bloqués pendant la plage horaire \"<xliff:g id="SCHEDULE_NAME">%1$s</xliff:g>\". Vous pouvez ajuster les paramètres pour que vos proches ou d\'autres contacts puissent quand même vous joindre."</string>
     <string name="zen_mode_starred_contacts_title" msgid="630299631659575589">"Contacts favoris"</string>
-    <string name="zen_mode_starred_contacts_summary_contacts" msgid="1629467178444895094">"{count,plural,offset:2 =0{Aucun}=1{{contact_1}}=2{{contact_1} et {contact_2}}=3{{contact_1}, {contact_2} et {contact_3}}one{{contact_1}, {contact_2} et # autre contact favori}many{{contact_1}, {contact_2}, and # others}other{{contact_1}, {contact_2} et # autres contacts favoris}}"</string>
+    <string name="zen_mode_starred_contacts_summary_contacts" msgid="1629467178444895094">"{count,plural,offset:2 =0{Aucun}=1{{contact_1}}=2{{contact_1} et {contact_2}}=3{{contact_1}, {contact_2} et {contact_3}}one{{contact_1}, {contact_2} et # autre contact favori}other{{contact_1}, {contact_2} et # autres contacts favoris}}"</string>
     <string name="zen_mode_starred_contacts_empty_name" msgid="2906404745550293688">"(Sans nom)"</string>
     <string name="zen_mode_messages" msgid="7315084748885170585">"Messages"</string>
     <string name="zen_mode_messages_list" msgid="5431014101342361882">"messages"</string>
@@ -3853,7 +3801,7 @@
     <string name="zen_mode_custom_messages_footer" msgid="7545180036949550830">"Les messages entrants sont bloqués pour \"<xliff:g id="SCHEDULE_NAME">%1$s</xliff:g>\". Vous pouvez ajuster les paramètres pour que vos proches ou d\'autres contacts puissent quand même vous joindre."</string>
     <string name="zen_mode_all_messages_summary" msgid="3756267858343104554">"Vous recevez tous les messages"</string>
     <string name="zen_mode_all_calls_summary" msgid="7337907849083824698">"Vous recevez tous les appels"</string>
-    <string name="zen_mode_contacts_count" msgid="6568631261119795799">"{count,plural, =0{Aucun}=1{1 contact}one{# contact}many{# contacts}other{# contacts}}"</string>
+    <string name="zen_mode_contacts_count" msgid="6568631261119795799">"{count,plural, =0{Aucun}=1{1 contact}one{# contact}other{# contacts}}"</string>
     <string name="zen_mode_from_anyone" msgid="6027004263046694174">"Tout le monde"</string>
     <string name="zen_mode_from_contacts" msgid="2989933306317064818">"Contacts"</string>
     <string name="zen_mode_from_starred" msgid="8616516644241652287">"Contacts favoris"</string>
@@ -3891,13 +3839,13 @@
     <string name="zen_mode_bypassing_apps_summary_all" msgid="4684544706511555744">"Toutes les notifications"</string>
     <string name="zen_mode_bypassing_apps_summary_some" msgid="5315750826830358230">"Certaines notifications"</string>
     <string name="zen_mode_bypassing_apps_footer" msgid="1454862989340760124">"Les personnes sélectionnées peuvent vous contacter, même si vous n\'autorisez pas les applications à interrompre le mode Ne pas déranger"</string>
-    <string name="zen_mode_bypassing_apps_subtext" msgid="5258652366929842710">"{count,plural,offset:2 =0{Aucune application ne peut interrompre le mode Ne pas déranger}=1{{app_1} peut interrompre le mode Ne pas déranger}=2{{app_1} et {app_2} peuvent interrompre le mode Ne pas déranger}=3{{app_1}, {app_2} et {app_3} peuvent interrompre le mode Ne pas déranger}one{{app_1}, {app_2} et # autre application peuvent interrompre le mode Ne pas déranger}many{{app_1}, {app_2}, and # more can interrupt}other{{app_1}, {app_2} et # autres applications peuvent interrompre le mode Ne pas déranger}}"</string>
+    <string name="zen_mode_bypassing_apps_subtext" msgid="5258652366929842710">"{count,plural,offset:2 =0{Aucune application ne peut interrompre le mode Ne pas déranger}=1{{app_1} peut interrompre le mode Ne pas déranger}=2{{app_1} et {app_2} peuvent interrompre le mode Ne pas déranger}=3{{app_1}, {app_2} et {app_3} peuvent interrompre le mode Ne pas déranger}one{{app_1}, {app_2} et # autre application peuvent interrompre le mode Ne pas déranger}other{{app_1}, {app_2} et # autres applications peuvent interrompre le mode Ne pas déranger}}"</string>
     <string name="zen_mode_bypassing_apps_title" msgid="371050263563164059">"Applications"</string>
     <string name="zen_mode_bypassing_apps_all_summary" msgid="5197566190120503132">"Toutes les notifications"</string>
     <string name="zen_mode_bypassing_apps_some_summary" msgid="1514572070650411509">"Certaines notifications"</string>
     <string name="zen_mode_bypassing_app_channels_header" msgid="4011017798712587373">"Notifications qui peuvent interrompre le mode Ne pas déranger"</string>
     <string name="zen_mode_bypassing_app_channels_toggle_all" msgid="1449462656358219116">"Autoriser toutes les notifications"</string>
-    <string name="zen_mode_other_sounds_summary" msgid="8784400697494837032">"{count,plural,offset:2 =0{Rien ne peut interrompre le mode Ne pas déranger}=1{{sound_category_1} peut interrompre le mode Ne pas déranger}=2{{sound_category_1} et {sound_category_2} peuvent interrompre le mode Ne pas déranger}=3{{sound_category_1}, {sound_category_2} et {sound_category_3} peuvent interrompre le mode Ne pas déranger}one{{sound_category_1}, {sound_category_2} et # autre son peuvent interrompre le mode Ne pas déranger}many{{sound_category_1}, {sound_category_2}, and # more can interrupt}other{{sound_category_1}, {sound_category_2} et # autres sons peuvent interrompre le mode Ne pas déranger}}"</string>
+    <string name="zen_mode_other_sounds_summary" msgid="8784400697494837032">"{count,plural,offset:2 =0{Rien ne peut interrompre le mode Ne pas déranger}=1{{sound_category_1} peut interrompre le mode Ne pas déranger}=2{{sound_category_1} et {sound_category_2} peuvent interrompre le mode Ne pas déranger}=3{{sound_category_1}, {sound_category_2} et {sound_category_3} peuvent interrompre le mode Ne pas déranger}one{{sound_category_1}, {sound_category_2} et # autre son peuvent interrompre le mode Ne pas déranger}other{{sound_category_1}, {sound_category_2} et # autres sons peuvent interrompre le mode Ne pas déranger}}"</string>
     <string name="zen_mode_sounds_none" msgid="6557474361948269420">"Rien ne peut interrompre le mode Ne pas déranger"</string>
     <string name="zen_mode_people_none" msgid="4613147461974255046">"Personne ne peut interrompre le mode Ne pas déranger"</string>
     <string name="zen_mode_people_some" msgid="9101872681298810281">"Certaines personnes peuvent interrompre le mode Ne pas déranger"</string>
@@ -3923,12 +3871,10 @@
     <string name="zen_mode_summary_alarms_only_indefinite" msgid="910047326128154945">"Ne recevoir que les alarmes sans limite de temps"</string>
     <plurals name="zen_mode_summary_alarms_only_by_minute" formatted="false" msgid="1900512966361163390">
       <item quantity="one">Ne recevoir que les alarmes pendant <xliff:g id="DURATION">%1$d</xliff:g> minute jusqu\'à <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g></item>
-      <item quantity="many">Change to alarms only for <xliff:g id="DURATION">%1$d</xliff:g> minutes (until <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="other">Ne recevoir que les alarmes pendant <xliff:g id="DURATION">%1$d</xliff:g> minutes jusqu\'à <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g></item>
     </plurals>
     <plurals name="zen_mode_summary_alarms_only_by_hour" formatted="false" msgid="955991428001659124">
       <item quantity="one">Ne recevoir que les alarmes pendant <xliff:g id="DURATION">%1$d</xliff:g> heure jusqu\'à <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g></item>
-      <item quantity="many">Change to alarms only for <xliff:g id="DURATION">%1$d</xliff:g> hours until <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g></item>
       <item quantity="other">Ne recevoir que les alarmes pendant <xliff:g id="DURATION">%1$d</xliff:g> heures jusqu\'à <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g></item>
     </plurals>
     <string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Ne recevoir que les alarmes jusqu\'à <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
@@ -4014,22 +3960,18 @@
     <string name="notification_summary_channel" msgid="8459033623057872803">"<xliff:g id="CHANNEL_NAME">%1$s</xliff:g> • <xliff:g id="GROUP_NAME">%2$s</xliff:g>"</string>
     <plurals name="notifications_categories_off" formatted="false" msgid="1385401442703692986">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> catégorie désactivée</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> categories turned off</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> catégories désactivées</item>
     </plurals>
     <plurals name="permissions_summary" formatted="false" msgid="5015472550875144481">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> autorisation accordée</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> permissions granted</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> autorisations accordées</item>
     </plurals>
     <plurals name="runtime_permissions_summary" formatted="false" msgid="2091022049141391855">
       <item quantity="one"><xliff:g id="COUNT_2">%d</xliff:g> autorisation accordée sur <xliff:g id="COUNT_3">%d</xliff:g></item>
-      <item quantity="many"><xliff:g id="COUNT_2">%d</xliff:g> of <xliff:g id="COUNT_3">%d</xliff:g> permissions granted</item>
       <item quantity="other"><xliff:g id="COUNT_2">%d</xliff:g> autorisations accordées sur <xliff:g id="COUNT_3">%d</xliff:g></item>
     </plurals>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="5888624648943937645">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> autorisation supplémentaire</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> additional permissions</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> autorisations supplémentaires</item>
     </plurals>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="7456745929035665029">"Aucune autorisation accordée"</string>
@@ -4059,7 +4001,6 @@
     <string name="domain_urls_apps_summary_off" msgid="2534980824850890416">"Aucune application ouvrant des liens compatibles"</string>
     <plurals name="domain_urls_apps_summary_on" formatted="false" msgid="7864816862441985323">
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> application ouvrant des liens compatibles</item>
-      <item quantity="many"><xliff:g id="COUNT">%d</xliff:g> apps opening supported links</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> applications ouvrant des liens compatibles</item>
     </plurals>
     <string name="app_link_open_always" msgid="9167065494930657503">"Autoriser l\'application à ouvrir les liens compatibles"</string>
@@ -4067,7 +4008,6 @@
     <string name="app_link_open_never" msgid="5299808605386052350">"Ne pas autoriser l\'application à ouvrir les liens compatibles"</string>
     <plurals name="app_link_open_always_summary" formatted="false" msgid="1816161439007251694">
       <item quantity="one">L\'application revendique <xliff:g id="COUNT_1">%d</xliff:g> lien</item>
-      <item quantity="many">App claims to handle <xliff:g id="COUNT_1">%d</xliff:g> links</item>
       <item quantity="other">L\'application revendique <xliff:g id="COUNT_1">%d</xliff:g> liens</item>
     </plurals>
     <string name="open_supported_links_footer" msgid="3188808142432787933">"L\'application revendique les liens suivants :"</string>
@@ -4110,12 +4050,10 @@
     <string name="hide_extra_apps" msgid="7313907836289865123">"Afficher utilisation appli"</string>
     <plurals name="power_high_usage_summary" formatted="false" msgid="573433136005336970">
       <item quantity="one"><xliff:g id="NUMBER">%2$d</xliff:g> application a un comportement anormal</item>
-      <item quantity="many"><xliff:g id="NUMBER">%2$d</xliff:g> apps behaving abnormally</item>
       <item quantity="other"><xliff:g id="NUMBER">%2$d</xliff:g> applications ont un comportement anormal</item>
     </plurals>
     <plurals name="power_high_usage_title" formatted="false" msgid="8013115866788425817">
       <item quantity="one">Une application décharge la batterie</item>
-      <item quantity="many">Apps draining battery</item>
       <item quantity="other">Des applications déchargent la batterie</item>
     </plurals>
     <string name="high_power_filter_on" msgid="447849271630431531">"Non optimisées"</string>
@@ -4193,7 +4131,6 @@
     <string name="memory_usage_apps" msgid="5776108502569850579">"Mémoire utilisée par les applications"</string>
     <plurals name="memory_usage_apps_summary" formatted="false" msgid="1355637088533572208">
       <item quantity="one"><xliff:g id="COUNT">%1$d</xliff:g> application a utilisé de la mémoire au cours de la période suivante : <xliff:g id="DURATION_1">%2$s</xliff:g>.</item>
-      <item quantity="many"><xliff:g id="COUNT">%1$d</xliff:g> apps used memory in the last <xliff:g id="DURATION_1">%2$s</xliff:g></item>
       <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> applications ont utilisé de la mémoire au cours de la période suivante : <xliff:g id="DURATION_1">%2$s</xliff:g>.</item>
     </plurals>
     <string name="running_frequency" msgid="7260225121706316639">"Fréquence"</string>
@@ -4268,7 +4205,6 @@
     <string name="data_usage_wifi_format" msgid="7644390582649568117">"<xliff:g id="AMOUNT">^1</xliff:g> utilisés sur le réseau Wi-Fi"</string>
     <plurals name="notification_summary" formatted="false" msgid="7638388920823212470">
       <item quantity="one">Désactivé pour <xliff:g id="COUNT">%d</xliff:g> application</item>
-      <item quantity="many">Off for <xliff:g id="COUNT">%d</xliff:g> apps</item>
       <item quantity="other">Désactivé pour <xliff:g id="COUNT">%d</xliff:g> applications</item>
     </plurals>
     <string name="notification_summary_none" msgid="9179312319023988089">"Activées pour toutes les applications"</string>
@@ -4335,12 +4271,10 @@
     <string name="suggestions_more_title" msgid="240124526378997009">"+<xliff:g id="ID_1">%1$d</xliff:g> autres"</string>
     <plurals name="suggestions_collapsed_title" formatted="false" msgid="5023679825210836444">
       <item quantity="one"><xliff:g id="COUNT">%1$d</xliff:g> suggestion</item>
-      <item quantity="many"><xliff:g id="COUNT">%1$d</xliff:g> suggestions</item>
       <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> suggestions</item>
     </plurals>
     <plurals name="suggestions_collapsed_summary" formatted="false" msgid="3789011332018516832">
       <item quantity="one">+<xliff:g id="COUNT">%1$d</xliff:g> suggestion</item>
-      <item quantity="many">+<xliff:g id="COUNT">%1$d</xliff:g> suggestions</item>
       <item quantity="other">+<xliff:g id="COUNT">%1$d</xliff:g> suggestions</item>
     </plurals>
     <string name="suggestion_remove" msgid="6753986344585367776">"Supprimer"</string>
@@ -4370,7 +4304,6 @@
     <string name="network_restrictions" msgid="8385824604048229846">"Restrictions sur le réseau"</string>
     <plurals name="network_restrictions_summary" formatted="false" msgid="3875128958788008975">
       <item quantity="one"><xliff:g id="COUNT">%1$d</xliff:g> restriction</item>
-      <item quantity="many"><xliff:g id="COUNT">%1$d</xliff:g> restrictions</item>
       <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> restrictions</item>
     </plurals>
     <string name="operator_warning" msgid="5672761970087591211">"Le suivi de consommation de votre opérateur peut différer de celui qui est effectué sur votre appareil."</string>
@@ -4386,7 +4319,6 @@
     <string name="data_usage_other_apps" msgid="5649047093607329537">"Autres applications incluses dans la consommation"</string>
     <plurals name="data_saver_unrestricted_summary" formatted="false" msgid="3316296488378947221">
       <item quantity="one"><xliff:g id="COUNT">%1$d</xliff:g> application est autorisée à utiliser des données sans restrictions lorsque l\'économiseur de données est activé</item>
-      <item quantity="many"><xliff:g id="COUNT">%1$d</xliff:g> apps allowed to use unrestricted data when Data Saver is on</item>
       <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> applications sont autorisées à utiliser des données sans restrictions lorsque l\'économiseur de données est activé</item>
     </plurals>
     <string name="data_usage_title" msgid="4039024073687469094">"Données principales"</string>
@@ -4399,7 +4331,6 @@
     <string name="data_usage_chart_no_data_content_description" msgid="5481968839079467231">"Aucune donnée disponible pour cette plage de dates"</string>
     <plurals name="billing_cycle_days_left" formatted="false" msgid="661792524671718753">
       <item quantity="one">%d jour restant</item>
-      <item quantity="many">%d days left</item>
       <item quantity="other">%d jours restants</item>
     </plurals>
     <string name="billing_cycle_none_left" msgid="1694844019159277504">"Le cycle de facturation est arrivé à échéance"</string>
@@ -4473,7 +4404,6 @@
     <string name="special_access" msgid="1767980727423395147">"Accès spécifiques des applications"</string>
     <plurals name="special_access_summary" formatted="false" msgid="4995506406763570815">
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> application peut utiliser les données sans restrictions</item>
-      <item quantity="many"><xliff:g id="COUNT">%d</xliff:g> apps can use unrestricted data</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> applications peuvent utiliser les données sans restrictions</item>
     </plurals>
     <string name="special_access_more" msgid="132919514147475846">"En savoir plus"</string>
@@ -4512,17 +4442,14 @@
     <string name="cross_profile_calendar_summary" msgid="8856185206722860069">"Afficher les événements professionnels dans votre agenda personnel"</string>
     <plurals name="hours" formatted="false" msgid="1853396353451635458">
       <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> heure</item>
-      <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> hours</item>
       <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> heures</item>
     </plurals>
     <plurals name="minutes" formatted="false" msgid="6244503272924425418">
       <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> minute</item>
-      <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> minutes</item>
       <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minutes</item>
     </plurals>
     <plurals name="seconds" formatted="false" msgid="4237020272336995370">
       <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> seconde</item>
-      <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> seconds</item>
       <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> secondes</item>
     </plurals>
     <string name="automatic_storage_manager_settings" msgid="519158151463974656">"Gérer l\'espace de stockage"</string>
@@ -4647,7 +4574,6 @@
     <string name="enterprise_privacy_apps_count_estimation_info" msgid="7959907857710107792">"Le nombre d\'applications est une estimation. Il est possible qu\'il n\'inclue pas les applications installées sans passer par le Play Store."</string>
     <plurals name="enterprise_privacy_number_packages_lower_bound" formatted="false" msgid="5403847001419529018">
       <item quantity="one">Au moins <xliff:g id="COUNT_1">%d</xliff:g> application</item>
-      <item quantity="many">Minimum <xliff:g id="COUNT_1">%d</xliff:g> apps</item>
       <item quantity="other">Au moins <xliff:g id="COUNT_1">%d</xliff:g> applications</item>
     </plurals>
     <string name="enterprise_privacy_location_access" msgid="8023838718108456971">"Autorisations de localisation"</string>
@@ -4656,7 +4582,6 @@
     <string name="enterprise_privacy_enterprise_set_default_apps" msgid="7498546659083996300">"Applications par défaut"</string>
     <plurals name="enterprise_privacy_number_packages" formatted="false" msgid="8568544906431825430">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> application</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> apps</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> applications</item>
     </plurals>
     <string name="enterprise_privacy_input_method" msgid="3278314982700662246">"Clavier par défaut"</string>
@@ -4670,7 +4595,6 @@
     <string name="enterprise_privacy_ca_certs_work" msgid="4318941788592655561">"Certificats de confiance dans votre profil professionnel"</string>
     <plurals name="enterprise_privacy_number_ca_certs" formatted="false" msgid="6459725295322004179">
       <item quantity="one">Au moins <xliff:g id="COUNT_1">%d</xliff:g> certificat CA</item>
-      <item quantity="many">Minimum <xliff:g id="COUNT_1">%d</xliff:g> CA certificates</item>
       <item quantity="other">Au moins <xliff:g id="COUNT_1">%d</xliff:g> certificats CA</item>
     </plurals>
     <string name="enterprise_privacy_lock_device" msgid="464054894363899866">"L\'administrateur peut verrouiller l\'appareil et réinitialiser le mot de passe"</string>
@@ -4679,7 +4603,6 @@
     <string name="enterprise_privacy_failed_password_wipe_work" msgid="2537582942554484170">"Tentatives de saisie du mot de passe avant la suppression des données du profil professionnel"</string>
     <plurals name="enterprise_privacy_number_failed_password_wipe" formatted="false" msgid="8811973918944217791">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> tentative</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> attempts</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> tentatives</item>
     </plurals>
     <string name="do_disclosure_generic" msgid="3067459392402324538">"Cet appareil est géré par votre organisation."</string>
@@ -4688,20 +4611,17 @@
     <string name="learn_more" msgid="3534519107947510952">"En savoir plus"</string>
     <plurals name="default_camera_app_title" formatted="false" msgid="8112432929729136399">
       <item quantity="one">Appareil photo</item>
-      <item quantity="many">Camera apps</item>
       <item quantity="other">Appareil photo</item>
     </plurals>
     <string name="default_calendar_app_title" msgid="1870095225089706093">"Agenda"</string>
     <string name="default_contacts_app_title" msgid="7740028900741944569">"Contacts"</string>
     <plurals name="default_email_app_title" formatted="false" msgid="8338194872609410234">
       <item quantity="one">Client de messagerie</item>
-      <item quantity="many">Email client apps</item>
       <item quantity="other">Client de messagerie</item>
     </plurals>
     <string name="default_map_app_title" msgid="7569231732944853320">"Cartes"</string>
     <plurals name="default_phone_app_title" formatted="false" msgid="4222188821845826493">
       <item quantity="one">Téléphone</item>
-      <item quantity="many">Phone apps</item>
       <item quantity="other">Téléphone</item>
     </plurals>
     <string name="app_names_concatenation_template_2" msgid="8320181646458855457">"<xliff:g id="FIRST_APP_NAME">%1$s</xliff:g>, <xliff:g id="SECOND_APP_NAME">%2$s</xliff:g>"</string>
@@ -4731,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Nombre maximal d\'ensembles de données visibles"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Rétablir les valeurs par défaut"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Les options de saisie automatique du développeur ont été réinitialisées"</string>
+    <string name="location_category" msgid="3496759112306219062">"Localisation"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Indicateur de localisation dans la barre d\'état"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Afficher pour tous les emplacements, y compris le réseau et la connectivité"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Forcer les mesures GNSS complètes"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Effectuer le suivi de toutes les fréquences et constellations GNSS sans rapport cyclique"</string>
     <string name="device_theme" msgid="5027604586494772471">"Thème de l\'appareil"</string>
     <string name="default_theme" msgid="4815428567082263639">"Par défaut"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Nom du réseau"</string>
@@ -4747,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Suspendre les notifications pour rester concentré"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Fonctionnalité non disponible"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Cette fonctionnalité a été désactivée, car elle ralentit votre téléphone"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Forcer les mesures GNSS complètes"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Effectuer le suivi de toutes les fréquences et constellations GNSS sans rapport cyclique"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Toujours afficher une boîte de dialogue en cas de plantage"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Afficher une boîte de dialogue chaque fois qu\'une application plante"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Sélectionner une application compatible avec ANGLE"</string>
@@ -4894,7 +4817,6 @@
     <string name="mobile_network_summary_add_a_network" msgid="9079866102827526779">"Ajouter un réseau"</string>
     <plurals name="mobile_network_summary_count" formatted="false" msgid="5173633860800230925">
       <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> carte SIM</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> SIMs</item>
       <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> cartes SIM</item>
     </plurals>
     <string name="default_for_calls" msgid="2788950217176988034">"Utiliser par défaut pour les appels"</string>
@@ -5029,13 +4951,11 @@
     <string name="permission_bar_chart_details" msgid="5816698018592357088">"Tout afficher dans le tableau de bord"</string>
     <plurals name="permission_bar_chart_label" formatted="false" msgid="4853396794340896078">
       <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> application</item>
-      <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> apps</item>
       <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> applications</item>
     </plurals>
     <string name="accessibility_usage_title" msgid="9190967143518779145">"Utilisation de l\'accessibilité"</string>
     <plurals name="accessibility_usage_summary" formatted="false" msgid="6910643986958263005">
       <item quantity="one"><xliff:g id="SERVICE_COUNT">%1$d</xliff:g> application bénéficie d\'un accès complet à votre appareil</item>
-      <item quantity="many"><xliff:g id="SERVICE_COUNT">%1$d</xliff:g> apps have full access to your device</item>
       <item quantity="other"><xliff:g id="SERVICE_COUNT">%1$d</xliff:g> applications bénéficient d\'un accès complet à votre appareil</item>
     </plurals>
     <string name="media_output_panel_title" msgid="5920946795078065159">"Changer de sortie"</string>
@@ -5135,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"La fonctionnalité Appels Wi-Fi vous permet de passer et de recevoir des appels sur des réseaux non gérés par des opérateurs, comme certains réseaux Wi‑Fi."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Appels"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"mode préféré"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"appels préférés"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"SMS préférés"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"non disponible"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Aucune carte SIM"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Préférences"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Se connecter aux réseaux publics"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"connexion réseau, internet, sans fil, données, wifi, wi-fi, wi fi, cellulaire, mobile, opérateur mobile, 4g, 3g, 2g, lte"</string>
@@ -5143,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Indisponible, car le mode Heure du coucher est activé"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"L\'importance de la notification a bien été réinitialisée."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Applications"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Un appareil non vérifié souhaite accéder à vos messages. Appuyez ici pour plus de détails."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Autoriser l\'accès aux messages ?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Un appareil Bluetooth non vérifié, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], souhaite accéder à vos messages.\n\nVous ne vous êtes jamais connecté à [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] auparavant."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Un appareil non vérifié souhaite accéder à vos contacts et à votre journal d\'appels. Appuyez ici pour plus de détails."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Autoriser l\'accès aux contacts et au journal d\'appels ?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Un appareil Bluetooth non vérifié, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], souhaite accéder à vos contacts et à votre journal d\'appels. Ceci inclut des données concernant les appels entrants et sortants.\n\nVous ne vous êtes jamais connecté à [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] auparavant."</string>
 </resources>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 95a0342..8b0e44b 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"Enderezos IPv6"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Redes gardadas"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Subscricións"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Outras redes"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"Configuración IP"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"A configuración avanzada da wifi non está dispoñible para este usuario"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Gardar"</string>
@@ -1185,7 +1184,7 @@
     <string name="brightness" msgid="6216871641021779698">"Nivel de brillo"</string>
     <string name="brightness_title" msgid="5457874893085305155">"Brillo"</string>
     <string name="brightness_summary" msgid="6309641759293018049">"Axusta o brillo da pantalla"</string>
-    <string name="auto_brightness_title" msgid="4239324728760986697">"Brillo automático"</string>
+    <string name="auto_brightness_title" msgid="4239324728760986697">"Brillo intelixente"</string>
     <string name="auto_brightness_summary" msgid="1737148869232725883">"O brillo da pantalla axústase ao contorno"</string>
     <string name="auto_brightness_summary_on" msgid="2748088951224387004">"Activado"</string>
     <string name="auto_brightness_summary_off" msgid="8077066192887677956">"Desactivado"</string>
@@ -1204,7 +1203,7 @@
     <string name="auto_brightness_off_summary" msgid="4993150980274474226">"Non axustar á luz dispoñible"</string>
     <string name="auto_brightness_very_high_summary" msgid="2784981315548144255">"Maior consumo de batería"</string>
     <string name="auto_brightness_disclaimer" msgid="1868395832774087351">"Optimiza o nivel de brillo segundo a luz dispoñible. Cando estea activado, poderás axustar o brillo temporalmente."</string>
-    <string name="auto_brightness_description" msgid="6807117118142381193">"O brillo da pantalla axustarase automaticamente segundo o ambiente e as actividades que leves a cabo. Podes mover o control desprazable de forma manual para que o brillo automático recoñeza as túas preferencias."</string>
+    <string name="auto_brightness_description" msgid="6807117118142381193">"O brillo da pantalla axustarase automaticamente segundo o ambiente e as actividades que leves a cabo. Podes mover o control desprazable de forma manual para que o brillo intelixente recoñeza as túas preferencias."</string>
     <string name="display_white_balance_title" msgid="2624544323029364713">"Balance de brancos da pantalla"</string>
     <string name="display_white_balance_summary" msgid="7625456704950209050"></string>
     <string name="peak_refresh_rate_title" msgid="1878771412897140903">"Smooth Display"</string>
@@ -1292,7 +1291,7 @@
     <string name="screensaver_settings_current" msgid="390472865895976891">"Protector de pantalla actual"</string>
     <string name="screensaver_settings_dream_start" msgid="6486360145976995856">"Iniciar agora"</string>
     <string name="screensaver_settings_button" msgid="6159236558934930238">"Configuración"</string>
-    <string name="automatic_brightness" msgid="4599827881929079513">"Brillo automático"</string>
+    <string name="automatic_brightness" msgid="4599827881929079513">"Brillo intelixente"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Levantar para acender"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Pantalla en suspensión"</string>
     <string name="ambient_display_category_triggers" msgid="1216640141609270011">"Cando mostrar a pantalla"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Eliminar APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"Novo APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Gardar"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Descartar"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Cancelar"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"O nome do campo non pode quedar baleiro."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"O APN non pode estar baleiro."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Pódense restablecer as aplicacións"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Restablecer wifi, rede móbil e Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Con esta selección, restableceranse todas as opcións de configuración de rede, entre elas as referentes a:\n\n"<li>"Wifi"</li>\n<li>"Datos móbiles"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Borrar"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Borrar SIM descargadas"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Para descargar tarxetas SIM de substitución, ponte en contacto co teu operador. Non se cancelará ningún dos plans de servizos móbiles que teñas."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Non se cancelará ningún dos plans de servizos móbiles que teñas. Para descargar tarxetas SIM de substitución, ponte en contacto co teu operador."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Restablecer configuración"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Queres restablecer toda a configuración de rede? Non se pode desfacer esta acción."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Queres restablecer todas as opcións de configuración de rede e borrar as SIM descargadas? Non se pode desfacer esta acción."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Utilizouse a tableta máis do normal"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Utilizouse o dispositivo máis do normal"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"A batería pode esgotarse antes do normal"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Mantendo batería en bo estado"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Optimización en curso para manter a batería en bo estado"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Batería limitada temporalmente. Toca para obter máis información."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"O teu teléfono utilizouse máis do habitual. A batería pode esgotarse antes do previsto.\n\nAplicacións que máis batería consomen:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"A túa tableta utilizouse máis do habitual. A batería pode esgotarse antes do previsto.\n\nAplicacións que máis batería consomen:"</string>
@@ -3307,7 +3307,7 @@
     <string name="keywords_lock_screen_notif" msgid="6363144436467429932">"notificación da pantalla de bloqueo, notificacións"</string>
     <string name="keywords_face_settings" msgid="1360447094486865058">"cara"</string>
     <string name="keywords_fingerprint_settings" msgid="7345121109302813358">"impresión dixital, engadir impresión dixital"</string>
-    <string name="keywords_display_auto_brightness" msgid="7162942396941827998">"atenuar pantalla, pantalla táctil, batería, brillo intelixente, brillo dinámico, brillo automático"</string>
+    <string name="keywords_display_auto_brightness" msgid="7162942396941827998">"atenuar pantalla, pantalla táctil, batería, brillo intelixente, brillo dinámico, brillo intelixente"</string>
     <string name="keywords_display_adaptive_sleep" msgid="8003895686008403685">"atenuar pantalla, modo de suspensión, batería, tempo de espera, atención, visualización, pantalla, inactividade"</string>
     <string name="keywords_auto_rotate" msgid="7914655570000378975">"xirar, voltear, xiro, retrato, orientación, horizontal, vertical"</string>
     <string name="keywords_system_update_settings" msgid="5769003488814164931">"actualizar, actualización, Android"</string>
@@ -3483,9 +3483,9 @@
     <string name="advanced_section_header" msgid="6003255455888626056">"Configuración avanzada"</string>
     <string name="profile_section_header" msgid="4970209372372610799">"Notificacións do traballo"</string>
     <string name="smart_notifications_title" msgid="8995288376897952015">"Notificacións intelixentes"</string>
-    <string name="asst_capability_prioritizer_title" msgid="1181272430009156556">"Prioridade das notificacións automáticas"</string>
+    <string name="asst_capability_prioritizer_title" msgid="1181272430009156556">"Prioridade das notificacións intelixentes"</string>
     <string name="asst_capability_prioritizer_summary" msgid="954988212366568737">"Define automaticamente como discretas as notificacións de prioridade baixa"</string>
-    <string name="asst_capability_ranking_title" msgid="312998580233257581">"Clasificación automática das notificacións"</string>
+    <string name="asst_capability_ranking_title" msgid="312998580233257581">"Clasificación intelixente das notificacións"</string>
     <string name="asst_capability_ranking_summary" msgid="2293524677144599450">"Clasifica as notificacións automaticamente por relevancia"</string>
     <string name="asst_feedback_indicator_title" msgid="5169801869752395354">"Comentarios sobre notificacións intelixentes"</string>
     <string name="asst_feedback_indicator_summary" msgid="5862082842073307900">"Indica axustes realizados nas notificacións e mostra a opción de enviar comentarios ao sistema"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Máximo de conxuntos de datos visibles"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Restablecer valores predeterminados"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Restablecéronse as opcións para programadores da función de autocompletar"</string>
+    <string name="location_category" msgid="3496759112306219062">"Localización"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Indicador de localización da barra de estado"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Mostrar para todas as localizacións, como a rede e a conectividade"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Forzar medicións completas de GNSS"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Realiza un seguimento de todas as frecuencias e constelacións de satélites de GNSS sen ciclos"</string>
     <string name="device_theme" msgid="5027604586494772471">"Tema do dispositivo"</string>
     <string name="default_theme" msgid="4815428567082263639">"Predeterminado"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Nome da rede"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Pon en pausa as notificacións para concentrarte"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Función non dispoñible"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Desactivouse esta función porque fai que o teléfono vaia máis lento"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Forzar medicións completas de GNSS"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Realiza un seguimento de todas as frecuencias e constelacións de satélites de GNSS sen ciclos"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Mostrar sempre o cadro de diálogo de fallos"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Mostra o cadro de diálogo cada vez que falla unha aplicación"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Seleccionar aplicación compatible con ANGLE"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Coa función Chamadas por wifi podes facer e recibir chamadas a través de redes que non pertencen a ningún operador, como algunhas redes wifi."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Chamadas"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"prefírense"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"prefírense as chamadas"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"prefírense as SMS"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"non dispoñibles"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Sen SIM"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Preferencias"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Conectarse a redes públicas"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"conexión de rede, Internet, sen fíos, datos, wifi, móbil, operador, 4G, 3G, 2G, LTE"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Non está dispoñible porque o modo hora de durmir está activado"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Completouse o restablecemento da importancia das notificacións."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Aplicacións"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Un dispositivo non fiable quere acceder ás túas mensaxes. Toca para obter información."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Queres permitir o acceso ás mensaxes?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Un dispositivo Bluetooth non fiable, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], quere acceder ás túas mensaxes.\n\nNunca antes te conectaras a [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Un dispositivo non fiable quere acceder aos teus contactos e ao rexistro de chamadas. Toca para obter información."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Queres permitir o acceso aos contactos e ao rexistro de chamadas?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Un dispositivo Bluetooth non fiable, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], quere acceder aos teus contactos e ao rexistro de chamadas, incluídos os datos relacionados coas chamadas entrantes e saíntes.\n\nNunca antes te conectaras a [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
 </resources>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index 04b323a..f6fed4e 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 સરનામા"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"સાચવેલા નેટવર્ક"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"સબ્સ્ક્રિપ્શન"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"અન્ય નેટવર્ક"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP સેટિંગ"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"આ વપરાશકર્તા માટે વાઇ-ફાઇ વિગતવાર સેટિંગ્સ ઉપલબ્ધ નથી"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"સાચવો"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"APN કાઢી નાખો"</string>
     <string name="menu_new" msgid="6571230342655509006">"નવું APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"સાચવો"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"નિકાળો"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"રદ કરો"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"નામ ફીલ્ડ ખાલી હોઈ શકતું નથી."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN ખાલી હોઇ શકતું નથી."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"ઍપ રીસેટ થઈ શકે છે"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"વાઇ-ફાઇ, મોબાઇલ અને બ્લૂટૂથ રીસેટ કરો"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"આ બધા નેટવર્ક સેટિંગ રીસેટ કરશે, જેમાં આનો સમાવેશ છે: \n\n"<li>"Wi‑Fi"</li>\n<li>"મોબાઇલ ડેટા"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"કાઢી નાખો"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"ડાઉનલોડ કરેલાં સિમ કાઢી નખાશે"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"બદલીને લેવાના સિમ ડાઉનલોડ કરવા માટે, તમારા કૅરિઅરનો સંપર્ક કરો. આનાથી કોઈપણ મોબાઇલ સેવા પ્લાન રદ થશે નહીં."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"આનાથી કોઈપણ મોબાઇલ સેવા પ્લાન રદ થશે નહીં. બદલીના SIM કાર્ડ ડાઉનલોડ કરવા માટે, તમારા મોબાઇલ ઑપરેટરનો સંપર્ક કરો."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"સેટિંગ્સ ફરીથી સેટ કરો"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"બધાં નેટવર્ક સેટિંગ રીસેટ કરીએ? તમે આ ક્રિયા માટે કરેલો છેલ્લો ફેરફાર રદ કરી શકશો નહીં."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"બધા નેટવર્ક સેટિંગ રીસેટ કરીએ અને ડાઉનલોડ કરેલાં સિમ કાઢી નાખીએ? તમે આ ક્રિયા માટે કરેલો છેલ્લો ફેરફાર રદ કરી શકશો નહીં."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"સામાન્ય કરતાં વધુ ઉપયોગમાં લેવાયેલું ટૅબ્લેટ"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"સામાન્ય કરતાં વધુ ઉપયોગમાં લેવાયેલું ઉપકરણ"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"બૅટરી સામાન્ય કરતાં વહેલી સમાપ્ત થઈ શકે છે"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"બૅટરીની આવરદા વધારે છે"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"બૅટરીની ક્ષમતા વધારવા ઑપ્ટિમાઇઝ કરી રહ્યાં છીએ"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"બૅટરીનો વપરાશ હંગામી રૂપે મર્યાદિત છે. વધુ જાણવા માટે ટૅપ કરો."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"તમારો ફોન સામાન્ય કરતાં વધુ ઉપયોગમાં લેવાયો છે. તમારી બૅટરી અપેક્ષા કરતાં વહેલી ખલાસ થઈ શકે છે.\n\nબૅટરી વપરાશ અનુસાર ટોચની ઍપ:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"તમારું ટૅબ્લેટ સામાન્ય કરતાં વધુ ઉપયોગમાં લેવાયું છે. તમારી બૅટરી અપેક્ષા કરતાં વહેલી ખલાસ થઈ શકે છે.\n\nબૅટરી વપરાશ અનુસાર ટોચની ઍપ:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"જોઈ શકાતા મહત્તમ ડેટાસેટની સંખ્યા"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"ડિફૉલ્ટ મૂલ્યો પર રીસેટ કરો"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"ઑટોમૅટિક રીતે ભરવાના ડેવલપરના વિકલ્પો રીસેટ કરવામાં આવ્યા છે"</string>
+    <string name="location_category" msgid="3496759112306219062">"સ્થાન"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"સ્ટેટસ બાર પર સ્થાન સૂચક"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"નેટવર્ક અને કનેક્ટિવિટી સહિત બધા સ્થાનો માટે બતાવો"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"સંપૂર્ણ GNSS માપને લાગુ કરો"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"કોઈપણ ડ્યૂટી-સાઈક્લિંગ વગર બધા GNSS તારામંડળો અને આવર્તનો ટ્રૅક કરો"</string>
     <string name="device_theme" msgid="5027604586494772471">"ઉપકરણની થીમ"</string>
     <string name="default_theme" msgid="4815428567082263639">"ડિફૉલ્ટ"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"નેટવર્કનું નામ"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"ધ્યાન કેન્દ્રિત કરવા માટે નોટિફિકેશન થોભાવો"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"સુવિધા ઉપલબ્ધ નથી"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"આ સુવિધા બંધ કરવામાં આવી છે કારણ કે તે તમારા ફોનની કામ કરવાની ગતિ ધીમી કરે છે"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"સંપૂર્ણ GNSS માપને લાગુ કરો"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"કોઈપણ ડ્યૂટી-સાઈક્લિંગ વગર બધા GNSS તારામંડળો અને આવર્તનો ટ્રૅક કરો"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"હંમેશા ક્રૅશ સંવાદ બતાવો"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"જયારે પણ કોઈ ઍપ ક્રૅશ થાય ત્યારે સંવાદ બતાવો"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"ANGLE દ્વારા ચાલુ ઍપ્લિકેશન પસંદ કરો"</string>
@@ -4896,14 +4899,10 @@
     <string name="dsds_activation_failure_title" msgid="4467364110584914794">"સિમ કાર્ડ સક્રિય કરી શકાતું નથી"</string>
     <string name="dsds_activation_failure_body_msg1" msgid="6303921196869256391">"સિમ કાર્ડ કાઢી નાખો અને તેને ફરીથી દાખલ કરો. તેમ છતાં સમસ્યા આવે, તો તમારું ડિવાઇસ ફરી શરૂ કરો."</string>
     <string name="dsds_activation_failure_body_msg2" msgid="73044349546544410">"સિમ કાર્ડ ફરીથી ચાલુ કરવાનો પ્રયાસ કરો. તેમ છતાં સમસ્યા આવે, તો તમારું ડિવાઇસ ફરી શરૂ કરો."</string>
-    <!-- no translation found for sim_setup_channel_id (8797972565087458515) -->
-    <skip />
-    <!-- no translation found for post_dsds_reboot_notification_title_with_carrier (3308827462185135307) -->
-    <skip />
-    <!-- no translation found for post_dsds_reboot_notification_text (7533428378211541410) -->
-    <skip />
-    <!-- no translation found for sim_card_label (5632157635124050923) -->
-    <skip />
+    <string name="sim_setup_channel_id" msgid="8797972565087458515">"નેટવર્કનું સક્રિયકરણ"</string>
+    <string name="post_dsds_reboot_notification_title_with_carrier" msgid="3308827462185135307">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> સક્રિય છે"</string>
+    <string name="post_dsds_reboot_notification_text" msgid="7533428378211541410">"સિમના સેટિંગ અપડેટ કરવા માટે ટૅપ કરો"</string>
+    <string name="sim_card_label" msgid="5632157635124050923">"સિમ કાર્ડ"</string>
     <string name="erase_sim_dialog_title" msgid="881253002169177016">"આ ડાઉનલોડ કરેલું સિમ કાઢી નાખીએ?"</string>
     <string name="erase_sim_dialog_text" msgid="753031064269699885">"આ સિમ કાઢી નાખવાથી આ ડિવાઇસમાંથી <xliff:g id="CARRIER_NAME_A">%1$s</xliff:g> સેવા કાઢી નાખવામાં આવશે.\n\n<xliff:g id="CARRIER_NAME_B">%1$s</xliff:g> માટેની સેવા રદ નહીં થાય."</string>
     <string name="erase_sim_confirm_button" msgid="8309115684335320541">"કાઢી નાખો"</string>
@@ -5056,14 +5055,23 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"અમુક વાઇ-ફાઇ નેટવર્ક જેમ કે મોબાઇલ ઑપરેટર વિનાના નેટવર્ક પરથી વાઇ-ફાઇ કૉલિંગની સેવા તમને કૉલ કરવાની અને મેળવવાની સુવિધા આપે છે."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"કૉલ"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"પસંદ કરેલું"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"કૉલ માટે પસંદ કરેલું સિમ કાર્ડ"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"SMS માટે પસંદ કરેલું સિમ કાર્ડ"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"ઉપલબ્ધ નથી"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"કોઈ સિમ કાર્ડ નથી"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"પસંદગીઓ"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"સાર્વજનિક નેટવર્ક સાથે કનેક્ટ કરો"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"નેટવર્ક કનેક્શન, ઇન્ટરનેટ, વાયરલેસ, ડેટા, વાઇ-ફાઇ, સેલ્યુલર, મોબાઇલ, સેલ, મોબાઇલ ઑપરેટર, 4G, 3G, 2G, LTE"</string>
-    <!-- no translation found for view_airplane_safe_networks (7390511371040078514) -->
-    <skip />
-    <!-- no translation found for turn_off_airplane_mode (1334192337050190071) -->
-    <skip />
+    <string name="view_airplane_safe_networks" msgid="7390511371040078514">"એરપ્લેન મોડમાં ઉપયોગ માટે સુરક્ષિત નેટવર્ક જુઓ"</string>
+    <string name="turn_off_airplane_mode" msgid="1334192337050190071">"એરપ્લેન મોડ બંધ કરો"</string>
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"ઉપલબ્ધ નથી કારણ કે બેડટાઇમ મોડ ચાલુ છે"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"નોટિફિકેશનનું મહત્ત્વ રીસેટ કરવાની પ્રક્રિયા પૂર્ણ થઈ."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"ઍપ"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"અવિશ્વસનીય ડિવાઇસ તમારા સંદેશા ઍક્સેસ કરવા માગે છે. વિગતો માટે ટૅપ કરો."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"સંદેશા ઍક્સેસ કરવાની મંજૂરી આપીએ?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"અવિશ્વસનીય બ્લૂટૂથ ડિવાઇસ, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], તમારા સંદેશા ઍક્સેસ કરવા માગે છે.\n\nતમે પહેલાં ક્યારેય [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] સાથે કનેક્ટ થયા નથી."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"અવિશ્વસનીય ડિવાઇસ તમારા સંપર્કો અને કૉલ લૉગ ઍક્સેસ કરવા માગે છે. વિગતો માટે ટૅપ કરો."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"સંપર્કો અને કૉલ લૉગ ઍક્સેસ કરવાની મંજૂરી આપીએ?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"અવિશ્વસનીય બ્લૂટૂથ ડિવાઇસ, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], તમારા સંપર્કો અને કૉલ લૉગ ઍક્સેસ કરવા માગે છે. આમાં ઇનકમિંગ અને આઉટગોઇંગ કૉલ વિશેનો ડેટા શામેલ છે.\n\nતમે પહેલાં ક્યારેય [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] સાથે કનેક્ટ થયા નથી."</string>
 </resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 6244b45..aca9822 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 पते"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"सेव किए गए नेटवर्क"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"सदस्यता"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"अन्य नेटवर्क"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"आईपी सेटिंग"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"वाई-फ़ाई की बेहतर सेटिंग इस उपयोगकर्ता के लिए मौजूद नहीं हैं"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"सेव करें"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"APN मिटाएं"</string>
     <string name="menu_new" msgid="6571230342655509006">"नया APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"सेव करें"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"रद्द करें"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"रद्द करें"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"नाम फ़ील्‍ड खाली मत छोड़िए."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN खाली नहीं हो सकता."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"ऐप्लिकेशन रीसेट किए जा सकते हैं"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"वाई-फ़ाई, मोबाइल और ब्लूटूथ रीसेट करें"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"इससे सभी नेटवर्क सेटिंग रीसेट हो जाएंगी, जिनमें ये भी शामिल हैं:\n\n"<li>"वाई-फ़ाई"</li>\n<li>"मोबाइल डेटा"</li>\n<li>"ब्लूटूथ"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"हमेशा के लिए मिटाएं"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"डाउनलोड किए गए सिम मिटाएं"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"दूसरा सिम डाउनलोड करने के लिए अपने मोबाइल और इंटरनेट सेवा देने वाली कंपनी से संपर्क करें. इससे कोई भी मोबाइल सेवा प्लान रद्द नहीं होगा."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"इससे मोबाइल सेवा का कोई भी प्लान रद्द नहीं होगा. दूसरा सिम डाउनलोड करने के लिए, मोबाइल और इंटरनेट सेवा देने वाली कंपनी से संपर्क करें."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"सेटिंग रीसेट करें"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"नेटवर्क की सभी सेटिंग रीसेट करें? आप इस कार्रवाई को पहले जैसा नहीं कर सकते."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"क्या आप नेटवर्क से जुड़ी सभी सेटिंग और डाउनलोड किए गए सिम रीसेट करना चाहते हैं? आप इस कार्रवाई को पहले जैसा नहीं कर सकते."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"टैबलेट को सामान्य से ज़्यादा इस्तेमाल किया गया"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"डिवाइस को सामान्य से ज़्यादा इस्तेमाल किया गया"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"हो सकता है कि बैटरी सामान्य समय से पहले खत्म हो जाए"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"बैटरी की परफ़ॉर्मेंस बेहतर बनाई जा रही है"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"बैटरी की परफ़ॉर्मेंस बेहतर करने के लिए, ऑप्टिमाइज़ किया जा रहा है"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"कुछ समय के लिए, बैटरी पूरी तरह से चार्ज नहीं होगी. ज़्यादा जानने के लिए टैप करें."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"आपका फ़ोन सामान्य से ज़्यादा इस्तेमाल किया गया है. आपके फ़ोन की बैटरी समय से पहले खत्म हो सकती है.\n\nसबसे ज़्यादा बैटरी इस्तेमाल करने वाले ऐप्लिकेशन:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"आपका टैबलेट सामान्य से ज़्यादा इस्तेमाल हुआ है. आपके टैबलेट की बैटरी समय से पहले खत्म हो सकती है.\n\nसबसे ज़्यादा बैटरी इस्तेमाल करने वाले ऐप्लिकेशन:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"दिखने वाले डेटा सेट की ज़्यादा से ज़्यादा संख्या"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"डिफ़ॉल्ट मान पर रीसेट करें"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"डेवलपर के लिए अपने आप भरने की सुविधा (ऑटो फ़िल) सेटिंग और टूल रीसेट हो गए हैं"</string>
+    <string name="location_category" msgid="3496759112306219062">"जगह"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"स्टेटस बार पर जगह की जानकारी दिखाने वाला संकेत"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"सभी जगह की जानकारी दिखाएं. इसके लिए, नेटवर्क और कनेक्टिविटी का भी इस्तेमाल करें"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"जीएनएसएस माप को हर हाल में लागू करें"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"बिना ड्यूटी-साइक्लिंग के जीएनएसएस के सभी तारामंडल (कॉन्स्टलेशन) और फ़्रीक्वेंसी ट्रैक करें"</string>
     <string name="device_theme" msgid="5027604586494772471">"डिवाइस की थीम"</string>
     <string name="default_theme" msgid="4815428567082263639">"डिफ़ॉल्ट"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"नेटवर्क का नाम"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"ध्यान भटकने से रोकने के लिए डिवाइस की सूचनाओं को कुछ समय के लिए रोकें"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"सुविधा उपलब्ध नहीं है"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"यह सुविधा बंद कर दी गई है क्योंकि इससे आपका फ़ोन धीमा हो जाता है"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"जीएनएसएस माप को हर हाल में लागू करें"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"बिना ड्यूटी-साइक्लिंग के जीएनएसएस के सभी तारामंडल (कॉन्स्टलेशन) और फ़्रीक्वेंसी ट्रैक करें"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"क्रैश होने की सूचना हर बार दिखाएं"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"जब भी कोई ऐप्लिकेशन क्रैश हो, उसकी सूचना दिखाएं"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"कोण की सुविधा वाला ऐप्लिकेशन चुनें"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"वाई-फ़ाई कॉलिंग आपको ऐसे नेटवर्क से कॉल करने और उन पर कॉल पाने की सुविधा देती है जो सिम का इस्तेमाल नहीं करते, जैसे कुछ वाई-फ़ाई नेटवर्क."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"कॉल"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"मैसेज (एसएमएस)"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"इस सिम का इस्तेमाल किया जाए"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"कॉल के लिए इस सिम का इस्तेमाल किया जाए"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"मैसेज (एसएमएस) के लिए इस सिम का इस्तेमाल किया जाए"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"उपलब्ध नहीं है"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"कोई सिम कार्ड नहीं लगाया गया है"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"प्राथमिकताएं"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"सार्वजनिक नेटवर्क से कनेक्ट करें"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"नेटवर्क कनेक्शन, इंटरनेट, वायरलेस, डेटा, वाईफ़ाई, सेल्युलर, मोबाइल, मोबाइल और इंटरनेट सेवा देने वाली कंपनी, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"बेडटाइम मोड चालू होने पर यह सुविधा काम नहीं करती है"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"सूचनाओं की प्राथमिकता को रीसेट करने की प्रक्रिया पूरी हुई."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"ऐप्लिकेशन"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"एक डिवाइस आपके मैसेज ऐक्सेस करना चाहता है, लेकिन इस डिवाइस पर भरोसा नहीं किया जा सकता. जानकारी के लिए टैप करें."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"क्या आप मैसेज का ऐक्सेस देना चाहते हैं?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"एक ब्लूटूथ डिवाइस, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], आपके मैसेज ऐक्सेस करना चाहता है, लेकिन इस डिवाइस पर भरोसा नहीं किया जा सकता.\n\nआपने इसे पहले कभी [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] से कनेक्ट नहीं किया है."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"एक डिवाइस, आपके संपर्क और कॉल लॉग ऐक्सेस करना चाहता है. जानकारी के लिए टैप करें."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"क्या आप अपने संपर्क और कॉल लॉग का ऐक्सेस देना चाहते हैं?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"एक ब्लूटूथ डिवाइस, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], आपके संपर्क और कॉल लॉग ऐक्सेस करना चाहता है, लेकिन इस डिवाइस पर भरोसा नहीं किया जा सकता. इसमें आपके किए गए कॉल (आउटगोइंग) और आने वाले कॉल (इनकमिंग) से जुड़ा डेटा भी शामिल है.\n\nआपने पहले कभी अपने [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] को इससे कनेक्ट नहीं किया है."</string>
 </resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index f42ca50..2f4fddc 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -1042,8 +1042,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 adrese"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Spremljene mreže"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Pretplate"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Ostale mreže"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP postavke"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Napredne postavke Wi‑Fi-ja nisu dostupne za ovog korisnika"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Spremi"</string>
@@ -1618,7 +1617,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Izbriši APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"Novi APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Spremi"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Odbaci"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Odustani"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Polje naziva ne može biti prazno."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN ne može biti prazan."</string>
@@ -1633,8 +1632,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Aplikacije se mogu vratiti na zadano"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Poništi Wi-Fi, mobilnu mrežu i Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Ovime će se poništiti sve postavke mreže, uključujući:\n\n"<li>"Wi‑Fi"</li>\n<li>"mobilne podatke"</li>\n<li>"Bluetooth."</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Izbriši"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Izbriši preuzete SIM-ove"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Da biste preuzeli zamjenske SIM-ove, obratite se mobilnom operateru. Time se neće otkazati paketi mobilnih usluga."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Time se neće poništiti ugovori o mobilnim uslugama. Za preuzimanje zamjenskih SIM-ova obratite se mobilnom operateru."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Poništi postavke"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Želite li poništiti sve postavke mreže? Ta se radnja ne može poništiti."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Želite li vratiti sve postavke mreže na zadano i izbrisati preuzete SIM-ove? Ta se radnja ne može poništiti."</string>
@@ -2487,7 +2487,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Tablet se upotrebljava više nego obično"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Uređaj se upotrebljava više nego obično"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Baterija bi se mogla isprazniti brže nego obično"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Očuvanje zdravlja baterije"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Optimiziranje radi zdravlja baterije"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Baterija je privremeno ograničena. Dodirnite da biste saznali više."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Vaš se telefon upotrebljavao više nego obično. Baterija bi se mogla isprazniti brže nego što očekujete.\n\nAplikacije koje najviše troše bateriju:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Vaš se tablet upotrebljavao više nego obično. Baterija bi se mogla isprazniti brže nego što očekujete.\n\nAplikacije koje najviše troše bateriju:"</string>
@@ -4731,6 +4731,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Maksimalan broj vidljivih skupova podataka"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Vrati na zadane vrijednosti"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Opcije automatskog popunjavanja za razvojne programere vraćene su na zadano"</string>
+    <string name="location_category" msgid="3496759112306219062">"Lokacija"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Pokazivač lokacije trake statusa"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Prikaži za sve lokacije, uključujući mrežu i povezivost"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Primijeni potpuna mjerenja GNSS-a"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Prati sve konstelacije i frekvencije GNSS-a bez određivanja radnog omjera"</string>
     <string name="device_theme" msgid="5027604586494772471">"Tema uređaja"</string>
     <string name="default_theme" msgid="4815428567082263639">"Zadano"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Naziv mreže"</string>
@@ -4747,8 +4752,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Pauzirajte obavijesti da biste ostali usredotočeni"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Značajka nije dostupna"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Ta je značajka isključena jer usporava telefon"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Primijeni potpuna mjerenja GNSS-a"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Prati sve konstelacije i frekvencije GNSS-a bez određivanja radnog omjera"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Uvijek prikaži dijaloški okvir o rušenju"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Prikaži dijaloški okvir svaki put kada se aplikacija sruši"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Upotrijebite aplikaciju omogućenu za ANGLE"</string>
@@ -5135,6 +5138,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Wi‑Fi pozivi omogućuju vam da upućujete i odgovarate na pozive putem mreža koje ne pripadaju mobilnom operateru, kao što su neke Wi-Fi mreže."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Pozivi"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"preferirano"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"preferiraju se pozivi"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"preferiraju se SMS-ovi"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"nije dostupno"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Nema SIM kartice"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Postavke"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Poveži se s javnim mrežama"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"mrežna veza, internet, bežično, podaci, wifi, wi-fi, wi fi, mobilno, mobilni uređaj, mobilni operater, 4 g, 3 g, 2 g, lte"</string>
@@ -5143,4 +5151,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Nije dostupno jer je uključen način rada u vrijeme spavanja"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Dovršeno je vraćanje važnosti obavijesti na zadano."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Aplikacije"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Nepouzdani uređaj želi pristupiti vašim porukama. Dodirnite da biste vidjeli pojedinosti."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Dopustiti pristup porukama?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Nepouzdani Bluetooth uređaj [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>] želi pristupiti vašim porukama.\n\nDo sad se niste povezali s uređajem [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Nepouzdani uređaj želi pristupiti vašim kontaktima i zapisniku poziva. Dodirnite da biste vidjeli pojedinosti."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Dopustiti pristup kontaktima i zapisniku poziva?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Nepouzdani Bluetooth uređaj [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>] želi pristupiti vašim kontaktima i zapisniku poziva. To uključuje podatke o dolaznim i odlaznim pozivima.\n\nDo sad se niste povezali s uređajem [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
 </resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 958e62c..fdd2ced 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6-címek"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Mentett hálózatok"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Előfizetések"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Egyéb hálózatok"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP-beállítások"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"A speciális Wi-Fi-beállítások nem állnak rendelkezésre ennél a felhasználónál"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Mentés"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"APN törlése"</string>
     <string name="menu_new" msgid="6571230342655509006">"Új APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Mentés"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Elvetés"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Mégse"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"A Név mező nem lehet üres."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"Az APN nem lehet üres."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Az Alkalmazások alaphelyzetbe állítható"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"A Wi-Fi, a mobiladatok és a Bluetooth beállításainak visszaállítása"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Az összes hálózati beállítást visszaállítja, például a következőket:\n\n"<li>"Wi‑Fi"</li>\n<li>"Mobiladat"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Törlés"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Letöltött SIM-ek törlése"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Csere SIM letöltése érdekében forduljon szolgáltatójához. Ezzel nem szűnik meg egyetlen mobil-előfizetési csomag sem."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Ezzel nem szűnik meg egyetlen mobil-előfizetési csomag sem. Csere-SIM letöltése érdekében forduljon szolgáltatójához."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Beállítások visszaállítása"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Alaphelyzetbe állítja az összes hálózati beállítást? Ez a művelet nem vonható vissza."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Visszaállítja az összes hálózati beállítást, és törli a letöltött SIM-eket? Ez a művelet nem vonható vissza."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"A táblagépet többet használja a megszokottnál"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Az eszközt többet használja a megszokottnál"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Az akkumulátor a szokásosnál hamarabb lemerülhet"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Az akkumulátor élettartamának megőrzése"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Akkumulátor-élettartam optimalizálása"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Az akkumulátor ideiglenesen korlátozva. A részletekért koppintson."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"A telefont többet használta a megszokottnál. A vártnál hamarabb lemerülhet az akkumulátor.\n\nAz akkumulátort leginkább igénybe vevő alkalmazások:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"A táblagépet többet használta a megszokottnál. A vártnál hamarabb lemerülhet az akkumulátor.\n\nAz akkumulátort leginkább igénybe vevő alkalmazások:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Maximális látható adatkészletek"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Alapértelmezett értékek visszaállítása"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Az automatikus kitöltésre vonatkozó fejlesztői beállítások vissza lettek állítva"</string>
+    <string name="location_category" msgid="3496759112306219062">"Hely"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Helyadathasználat jelzése az állapotsoron"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Megjelenítés minden helyadathasználat esetén (pl. hálózat és kapcsolódás)"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Teljes GNSS-mérés indítása"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Az összes GNSS-műhold és -frekvencia nyomon követése aktívciklus-szabályozás nélkül"</string>
     <string name="device_theme" msgid="5027604586494772471">"Eszköztéma"</string>
     <string name="default_theme" msgid="4815428567082263639">"Alapértelmezett"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Hálózat neve"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Az összpontosításhoz szüneteltetheti az értesítéseket"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"A funkció nem áll rendelkezésre"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"A rendszer kikapcsolta ezt a funkciót, mert lelassítja a telefont"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Teljes GNSS-mérés indítása"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Az összes GNSS-műhold és -frekvencia nyomon követése aktívciklus-szabályozás nélkül"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Összeomlási párbeszédablak megjelenítése minden alkalommal"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Mindig megjeleníti a párbeszédablakot, amikor valamelyik alkalmazás összeomlik"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"ANGLE-kompatibilis alkalmazás kiválasztása"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"A Wi-Fi-hívás funkció segítségével hívásokat indíthat és fogadhat nem szolgáltatói hálózatokon, így például bizonyos Wi-Fi-hálózatokon."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Hívások"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"előnyben részesített"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"hívások előnyben részesítése"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"SMS-ek előnyben részesítése"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"nem áll rendelkezésre"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"SIM-kártya nélkül"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Beállítások"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Csatlakozás nyilvános hálózatokhoz"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"hálózati kapcsolat, internet, vezeték nélküli, mobiladat, adat, wifi, wi-fi, mobil, mobiltelefon, szolgáltató, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Nem áll rendelkezésre, mert be van kapcsolva az alvásidő mód"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Értesítés fontosságának visszaállítása befejezve."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Alkalmazások"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Egy nem megbízható eszköz hozzá szeretne férni az Ön üzeneteihez. Koppintson a részletekért."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Engedélyezi az üzenetekhez való hozzáférést?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Egy nem megbízható Bluetooth-eszköz ([<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>]) hozzá szeretne férni az Ön üzeneteihez.\n\nEddig még nem csatlakozott a következő eszközhöz: [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Egy nem megbízható eszköz hozzá szeretne férni az Ön névjegyeihez és hívásnaplójához. Koppintson a részletekért."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Engedélyezi a névjegyeihez és a hívásnaplójához való hozzáférést?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Egy nem megbízható Bluetooth-eszköz ([<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>]) hozzá szeretne férni az Ön névjegyeihez és hívásnaplójához. Ide tartoznak a bejövő és kimenő hívások adatai is.\n\nEddig még nem csatlakozott a következő eszközhöz: [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
 </resources>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 4369c12..de8669c 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 հասցեներ"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Պահված ցանցեր"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Բաժանորդագրումներ"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Այլ ցանցեր"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP կարգավորումներ"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Wi-Fi-ի լրացուցիչ կարգավորումներն անհասանելի են այս օգտատիրոջը"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Պահել"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Ջնջել APN-ը"</string>
     <string name="menu_new" msgid="6571230342655509006">"Նոր APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Պահել"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Հրաժարվել"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Չեղարկել"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Անվանման դաշտը պետք է լրացված լինի:"</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN-ը չի կարող դատարկ լինել:"</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Հավելվածների կարգավորումները կարելի է զրոյացնել"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Զրոյացնել Wi-Fi-ի, բջջային թրաֆիկի և Bluetooth-ի կարգավորումները"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Արդյունքում կզրոյացվեն բոլոր ցանցային կարգավորումները, ներառյալ հետևյալը՝\n\n"<li>"Wi‑Fi"</li>\n<li>"Բջջային ինտերնետ"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Ջնջել"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Ջնջել ներբեռնված SIM-երը"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Նոր SIM քարտ ներբեռնելու համար դիմեք ձեր օպերատորին։ Բջջային կապի սակագնային պլանները չեն չեղարկվի:"</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Բջջային կապի սակագնային պլանները չեն չեղարկվի։ Նոր SIM քարտ ներբեռնելու համար դիմեք ձեր օպերատորին։"</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Զրոյացնել կարգավորումները"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Զրոյացնե՞լ ցանցի բոլոր կարգավորումները: Այս գործողությունը հնարավոր չի լինի հետարկել:"</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Զրոյացնե՞լ ցանցի բոլոր կարգավորումները և ջնջել ներբեռնված SIM քարտերի տվյալները։ Այս գործողությունը չեք կարող հետարկել:"</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Պլանշետը սովորականից շատ է էներգիա օգտագործել"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Սարքը սովորականից շատ է էներգիա օգտագործել"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Մարտկոցի լիցքը կարող է սովորականից շուտ սպառվել"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Մարտկոցի ծառայության ժամկետի երկարացում"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Օպտիմալացում՝ մարտկոցի ծառայության ժամկետը երկարացնելու համար"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Մարտկոցը ժամանակավորապես սահմանափակված է։ Հպեք՝ ավելին իմանալու համար։"</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Ձեր հեռախոսը սովորականից շատ է էներգիա օգտագործել։ Մարտկոցի լիցքը կարող է սպասվածից շուտ սպառվել։\n\nԱմենից շատ էներգիա սպառող հավելվածներն են՝"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Ձեր պլանշետը սովորականից շատ է էներգիա օգտագործել։ Մարտկոցի լիցքը կարող է սպասվածից շուտ սպառվել։\n\nԱմենից շատ էներգիա սպառող հավելվածներն են՝"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Տեսանելի տվյալակազմերի առավելագույն քանակը"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Վերականգնել կանխադրված արժեքները"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Ինքնալրացման կարգավորումները զրոյացվեցին"</string>
+    <string name="location_category" msgid="3496759112306219062">"Տեղադրություն"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Տեղադրության ցուցիչ կարգավիճակի գոտում"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Ցուցադրել բոլոր վայրերի համար (ներառյալ ցանցի ու կապակցման միջոցով որոշվողները)"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"GNSS-ի չափումների ամբողջական բեռնում"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Հետագծել GNSS-ի բոլոր սխեմաներն ու հաճախականությունները՝ առանց աշխատաշրջանի"</string>
     <string name="device_theme" msgid="5027604586494772471">"Սարքի թեման"</string>
     <string name="default_theme" msgid="4815428567082263639">"Կանխադրված"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Ցանցի անունը"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Չցուցադրել շեղող ծանուցումները"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Գործառույթն անհասանելի է"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Այս գործառույթն անջատվել է, քանի որ այն դանդաղեցնում էր ձեր հեռախոսի աշխատանքը"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"GNSS-ի չափումների ամբողջական բեռնում"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Հետագծել GNSS-ի բոլոր սխեմաներն ու հաճախականությունները՝ առանց աշխատաշրջանի"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Միշտ ցույց տալ խափանման մասին ծանուցումը"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Ցույց տալ ծանուցումը հավելվածի խափանման դեպքում"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Ընտրեք ANGLE-ի աջակցմամբ հավելված"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"«Զանգեր Wi-Fi-ով» գործառույթը թույլ է տալիս ստանալ և կատարել զանգերը ոչ բջջային ցանցերի (օրինակ՝ որոշ Wi‑Fi ցանցերի) միջոցով։"</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Զանգեր"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"նախընտրելի"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"նախընտրելի զանգեր"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"նախընտրելի SMS-ներ"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"անհասանելի է"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"SIM քարտ չկա"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Կարգավորումներ"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Միանալ հանրային ցանցերին"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"կապ, համացանց, անլար, ինտերնետ, wifi, wi-fi, wi fi, բջջային, շարժական, բջջային օպերատոր, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Անհասանելի է, քանի որ քնի ռեժիմը միացված է"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Ծանուցումների կարևորության կարգավորումները զրոյացվեցին։"</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Հավելվածներ"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Մի ոչ վստահելի սարք ուզում է հասանելիություն ստանալ ձեր հաղորդագրություններին։ Հպեք՝ ավելին իմանալու համար։"</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Հասանելի դարձնե՞լ հաղորդագրությունները"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"[<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>] սարքը, որը ոչ վստահելի Bluetooth սարք է, ուզում է հասանելիություն ստանալ ձեր հաղորդագրություններին։\n\nԴուք նախկինում չեք միացել [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] սարքին։"</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Մի ոչ վստահելի սարք ուզում է հասանելիություն ստանալ ձեր կոնտակտներին և զանգերի մատյանին։ Հպեք՝ ավելին իմանալու համար։"</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Հասանելի դարձնե՞լ կոնտակտներն ու զանգերի մատյանը"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"[<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>] սարքը, որը ոչ վստահելի Bluetooth սարք է, ուզում է հասանելիություն ստանալ ձեր կոնտակտներին և զանգերի մատյանին, որը ներառում է մուտքային և ելքային զանգերի մասին տվյալներ։\n\nԴուք նախկինում չեք միացել [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] սարքին։"</string>
 </resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index fdaf2c3..27e096e 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"Alamat IPv6"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Jaringan tersimpan"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Langganan"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Jaringan lain"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"Setelan IP"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Setelan lanjutan Wi-Fi tidak tersedia untuk pengguna ini"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Simpan"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Hapus APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"APN baru"</string>
     <string name="menu_save" msgid="6611465355127483100">"Simpan"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Buang"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Batal"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Bidang Nama wajib diisi."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN wajib diisi."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Aplikasi dapat direset"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Reset Wi-Fi, data seluler &amp; Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Tindakan ini akan mereset semua setelan jaringan, termasuk:\n\n"<li>"Wi‑Fi"</li>\n<li>"Data seluler"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Hapus"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Hapus SIM hasil download"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Untuk mendownload SIM pengganti, hubungi operator Anda. Tindakan ini tidak akan membatalkan paket pembelian layanan seluler apa pun."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Tindakan ini tidak akan membatalkan paket pembelian seluler apa pun. Untuk mendownload SIM pengganti, hubungi operator Anda."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Reset setelan"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Reset semua setelan jaringan? Anda tidak dapat mengurungkan tindakan ini."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Reset semua setelan jaringan dan hapus SIM yang didownload? Anda tidak dapat mengurungkan tindakan ini."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Tablet digunakan lebih lama dari biasanya"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Perangkat digunakan lebih lama dari biasanya"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Baterai mungkin lebih cepat habis daripada biasanya"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Mempertahankan kesehatan baterai"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Mengoptimalkan untuk kesehatan baterai"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Daya baterai terbatas untuk sementara. Ketuk untuk mempelajari lebih lanjut."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Ponsel dipakai lebih lama dari biasanya. Baterai mungkin lebih cepat habis dari perkiraan.\n\nAplikasi yang paling banyak menggunakan baterai:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Tablet digunakan lebih sering dari biasanya. Baterai mungkin lebih cepat habis dari yang diperkirakan.\n\nAplikasi yang paling banyak menggunakan baterai:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Jumlah set data maks yang terlihat"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Reset ke nilai default"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Opsi developer IsiOtomatis telah direset"</string>
+    <string name="location_category" msgid="3496759112306219062">"Lokasi"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Status bar indikator lokasi"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Tampilkan untuk semua lokasi, termasuk jaringan dan konektivitas"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Paksa ukuran GNSS penuh"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Lacak semua konstelasi dan frekuensi GNSS tanpa siklus tugas"</string>
     <string name="device_theme" msgid="5027604586494772471">"Tema perangkat"</string>
     <string name="default_theme" msgid="4815428567082263639">"Default"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Nama jaringan"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Jeda notifikasi agar tetap fokus"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Fitur tidak tersedia"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Fitur ini telah dinonaktifkan karena memperlambat ponsel Anda"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Paksa ukuran GNSS penuh"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Lacak semua konstelasi dan frekuensi GNSS tanpa siklus tugas"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Selalu tampilkan dialog error"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Tampilkan dialog setiap kali aplikasi tidak bekerja"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Pilih aplikasi yang berkemampuan ANGLE"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Dengan Panggilan Wi-Fi, Anda dapat melakukan dan menerima panggilan melalui jaringan non-operator seperti jaringan Wi-Fi tertentu."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Panggilan Telepon"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"pilihan"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"panggilan pilihan"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"SMS pilihan"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"tidak tersedia"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Tidak ada SIM"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Preferensi"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Hubungkan ke jaringan publik"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"koneksi jaringan, internet, nirkabel, data, wifi, wi-fi, wi fi, seluler, (perangkat) seluler, operator seluler, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Tidak tersedia karena mode waktu tidur diaktifkan"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Reset nilai penting notifikasi selesai."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Aplikasi"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Perangkat tidak tepercaya ingin mengakses pesan Anda. Ketuk untuk melihat detailnya."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Izinkan akses ke pesan?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Perangkat Bluetooth yang tidak tepercaya, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], ingin mengakses pesan Anda.\n\nAnda belum pernah terhubung ke [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] sebelumnya."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Perangkat yang tidak tepercaya ingin mengakses kontak dan log panggilan Anda. Ketuk untuk melihat detailnya."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Izinkan akses ke kontak dan log panggilan?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Perangkat Bluetooth yang tidak tepercaya, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], ingin mengakses kontak dan log panggilan Anda. Ini mencakup data tentang panggilan masuk dan keluar.\n\nAnda belum pernah terhubung ke [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] sebelumnya."</string>
 </resources>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index aec7cd1..ba88954 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6-tölur"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Vistuð net"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Áskriftir"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Önnur netkerfi"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP-stillingar"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Ítarlegar Wi‑Fi stillingar eru ekki í boði fyrir þennan notanda"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Vista"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Eyða aðgangsstað"</string>
     <string name="menu_new" msgid="6571230342655509006">"Nýr aðgangsstaður"</string>
     <string name="menu_save" msgid="6611465355127483100">"Vista"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Fleygja"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Hætta við"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Reiturinn fyrir heiti má ekki vera auður."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"Heiti aðgangsstaðar má ekki vera autt."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Hægt er að endurstilla forrit"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Endurstilla Wi-Fi, farsímagögn og Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Þetta mun endurstilla allar netkerfisstillingar, þar á meðal:\n\n"<li>"Wi‑Fi"</li>\n<li>"Farsímagögn"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Eyða"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Eyða sóttum SIM-kortum"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Til að sækja ný SIM-kort þarftu að hafa samband við símafyrirtækið þitt. Þetta segir ekki upp neinni áskrift hjá símafyrirtæki."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Þetta segir ekki upp neinni áskrift hjá símafyrirtæki. Til að sækja ný SIM-kort þarftu að hafa samband við símafyrirtækið þitt."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Endurstilla"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Endurstilla allar netstillingar? Ekki er hægt að afturkalla þessa aðgerð."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Viltu endurstilla allar netstillingar og hreinsa sótt SIM? Ekki er hægt að afturkalla þessa aðgerð."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Spjaldtölva notuð meira en venjulega"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Tæki notað meira en venjulega"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Rafhlaðan gæti tæmst fyrr en venjulega"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Stuðlar að rafhlöðuendingu"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Fínstillir fyrir rafhlöðuendingu"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Rafhlaða takmörkuð tímabundið. Ýttu til að fá frekari upplýsingar."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Síminn hefur verið notaður meira en venjulega. Rafhlaðan gæti tæmst fyrr en ella.\n\nForrit með mestu rafhlöðunotkunina:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Spjaldtölvan hefur verið notuð meira en venjulega. Rafhlaðan gæti tæmst fyrr en ella.\n\nForrit með mestu rafhlöðunotkunina:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Hámark sýnilegra gagnasafna"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Endurstilla á sjálfgildi"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Forritunarkostir sjálfvirkrar endurstillingar hafa verið endurstilltir"</string>
+    <string name="location_category" msgid="3496759112306219062">"Staðsetning"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Staðsetningarvísir stöðustiku"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Birta fyrir allar staðsetningar, þ. á m. netkerfi og tengigetu"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Full GNSS-mæling"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Rekja öll GNSS söfn og tíðnir með engum vinnulotum"</string>
     <string name="device_theme" msgid="5027604586494772471">"Þema tækisins"</string>
     <string name="default_theme" msgid="4815428567082263639">"Sjálfgefið"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Heiti nets"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Gera hlé á tilkynningum svo þær trufli ekki"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Eiginleikinn er ekki í boði"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Slökkt hefur verið á þessum eiginleika því hann hægir á símanum"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Full GNSS-mæling"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Rekja öll GNSS söfn og tíðnir með engum vinnulotum"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Sýna alltaf hrunglugga"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Sýna glugga í hvert sinn sem forrit hrynur"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Velja forrit sem styður ANGLE"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Með Wi-Fi símtölum geturðu hringt og svarað símtölum utan farsímakerfis, t.d. á sumum Wi-Fi netum."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Símtöl"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"í forgangi"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"símtöl í forgangi"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"SMS í forgangi"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"ekki tiltækt"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Ekkert SIM-kort"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Kjörstillingar"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Tengjast opnum netum"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"nettenging, internetið, þráðlaust, gögn, wifi, wi-fi, wi fi, farsímakerfi, farsími, símafyrirtæki, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Ekki í boði vegna þess að kveikt er á háttatímastillingu"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Endurstilling forgangs tilkynninga tókst."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Forrit"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Ótraust tæki vill fá aðgang að skilaboðunum þínum. Ýttu til að fá frekari upplýsingar."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Leyfa aðgang að skilaboðum?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Ótraust Bluetooth-tæki, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], vill fá aðgang að skilaboðunum þínum.\n\nÞú hefur ekki tengst [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] áður."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Ótraust tæki vill fá aðgang að tengiliðunum þínum og símtalaskránni. Ýttu til að fá frekari upplýsingar."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Leyfa aðgang að tengiliðum og símtalaskrá?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Ótraust Bluetooth-tæki, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], vill fá aðgang að tengiliðum þínum og símtalaskrá. Þetta felur í sér gögn um móttekin og hringd símtöl.\n\nÞú hefur ekki tengst [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] áður."</string>
 </resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 7377068..5e08e69 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"Indirizzi IPv6"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Reti salvate"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Iscrizioni"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Altre reti"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"Impostazioni IP"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Le impostazioni Wi‑Fi avanzate non sono disponibili per questo utente"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Salva"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Elimina APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"Nuovo APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Salva"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Ignora"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Annulla"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Il campo Nome non può essere vuoto."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"Il campo APN non può essere vuoto."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Le app possono essere reimpostate"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Reimposta Wi-Fi, dati mobili e Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Verranno reimpostate tutte le impostazioni di rete, tra cui:\n\n"<li>"Wi‑Fi"</li>\n<li>"Dati mobili"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Resetta"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Cancella SIM scaricate"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Per scaricare le SIM sostitutive, contatta il tuo operatore. Ciò non annullerà alcun piano di servizio mobile."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Gli eventuali piani di servizio mobile non verranno annullati. Per scaricare SIM sostitutive, contatta il tuo operatore."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Reimposta"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Ripristinare tutte le impostazioni della rete? Questa azione non può essere annullata."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Reimpostare tutte le impostazioni di rete e resettare tutte le SIM scaricate? Questa azione non può essere annullata."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Tablet utilizzato più del solito"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Dispositivo usato più del solito"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"La batteria potrebbe esaurirsi prima del solito"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Preservare l\'integrità della batteria"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Ottimizzazione per integrità batteria"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Batteria momentaneamente limitata. Tocca per scoprire di più."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Hai utilizzato il telefono più del solito. La batteria potrebbe esaurirsi prima del previsto.\n\nApp con il maggior consumo di batteria:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Hai utilizzato il tablet più del solito. La batteria potrebbe esaurirsi prima del previsto.\n\nApp con il maggiore consumo di batteria:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Set di dati visibili massimi"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Reimposta i valori predefiniti"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Le opzioni di compilazione automatica per gli sviluppatori sono state reimpostate"</string>
+    <string name="location_category" msgid="3496759112306219062">"Posizione"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Indicatore di posizione nella barra di stato"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Mostra per tutte le posizioni, incluse quelle rilevate tramite rete e connettività"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Forza esecuzione completa delle misurazioni GNSS"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Monitora tutte le costellazioni e le frequenze GNSS senza ciclo di lavoro utile"</string>
     <string name="device_theme" msgid="5027604586494772471">"Tema del dispositivo"</string>
     <string name="default_theme" msgid="4815428567082263639">"Valore predefinito"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Nome della rete"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Metti in pausa le notifiche per mantenere la concentrazione"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Funzionalità non disponibile"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Questa funzionalità è stata disattivata perché rallenta il telefono"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Forza esecuzione completa delle misurazioni GNSS"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Monitora tutte le costellazioni e le frequenze GNSS senza ciclo di lavoro utile"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Mostra sempre finestra di dialogo di arresti anomali"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Mostra finestra di dialogo a ogni arresto anomalo delle app"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Seleziona le app che supportano ANGLE"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"La funzionalità Chiamate Wi-Fi consente di effettuare e ricevere chiamate tramite reti non dell\'operatore, come alcune reti Wi-Fi."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Chiamate"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"Preferiti"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"Chiamate preferite"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"SMS preferiti"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"Non disponibili"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Nessuna SIM rilevata"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Preferenze"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Connetti a reti pubbliche"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"connessione rete, internet, wireless, dati, wifi, wi-fi, wi fi, cellulare, dispositivo mobile, operatore cellulare, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Non disponibili perché la modalità Riposo è attiva"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Reimpostazione dell\'importanza delle notifiche completata."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"App"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Un dispositivo non attendibile richiede l\'accesso ai tuoi messaggi. Tocca per conoscere i dettagli."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Vuoi consentire l\'accesso ai messaggi?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Un dispositivo Bluetooth non attendibile, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], richiede l\'accesso ai tuoi messaggi.\n\nNon hai mai effettuato la connessione al dispositivo [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Un dispositivo non attendibile richiede l\'accesso ai tuoi contatti e al tuo registro chiamate. Tocca per conoscere i dettagli."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Vuoi consentire l\'accesso a contatti e registro chiamate?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Un dispositivo Bluetooth non attendibile, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], richiede l\'accesso ai tuoi contatti e al tuo registro chiamate, inclusi i dati relativi a chiamate in arrivo e in uscita.\n\nNon hai mai effettuato la connessione al dispositivo [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
 </resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index a2b8d9b..2421999 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -1062,8 +1062,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"‏כתובות IPv6"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"רשתות שנשמרו"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"מינויים"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"רשתות אחרות"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"‏הגדרות IP"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"‏הגדרות Wi-Fi מתקדמות אינן זמינות למשתמש הזה"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"שמירה"</string>
@@ -1639,7 +1638,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"‏מחיקת APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"‏הוספת APN חדש"</string>
     <string name="menu_save" msgid="6611465355127483100">"שמירה"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"מחיקה"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"ביטול"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"השדה \'שם\' לא יכול להיות ריק."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"‏ה-APN לא יכול להיות ריק."</string>
@@ -1654,8 +1653,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"אפשר לאפס את האפליקציות"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"‏איפוס ההגדרות של Wi-Fi, חבילת גלישה ו-Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"‏פעולה זו תאפס את כל הגדרות הרשת, כולל:\n\n"<li>"Wi‑Fi"</li>\n<li>"חבילת גלישה"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"מחיקה"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"‏מחיקת כרטיסי SIM שהורדת"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"‏כדי להוריד כרטיסי SIM חלופיים יש לפנות אל הספק. הפעולה הזו לא תבטל חבילות גלישה קיימות."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"‏פעולה זו לא תבטל אף אחריות מורחבת בתשלום. כדי להוריד כרטיסי SIM חלופיים, יש לפנות לספק חבילת הסלולר."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"איפוס הגדרות"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"לאפס את כל הגדרות הרשת? לא ניתן לבטל את הפעולה הזו."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"‏לאפס את כל הגדרות הרשת ולמחוק את כרטיסי ה-SIM שהורדת? לא ניתן לבטל את הפעולה הזו."</string>
@@ -1694,8 +1694,8 @@
     <string name="tether_settings_title_wifi" msgid="4327056146425282159">"נקודה לשיתוף אינטרנט"</string>
     <string name="tether_settings_title_bluetooth" msgid="8878813702520141084">"‏שיתוף אינטרנט דרך Bluetooth"</string>
     <string name="tether_settings_title_usb_bluetooth" msgid="4437274151658505496">"שיתוף אינטרנט בין ניידים"</string>
-    <string name="tether_settings_title_all" msgid="6807525590937697228">"נקודה לשיתוף אינטרנט ושיתוף אינטרנט בין ניידים"</string>
-    <string name="tether_settings_summary_hotspot_on_tether_on" msgid="6110241048260139633">"נקודה לשיתוף אינטרנט פועלת, שיתוף אינטרנט בין ניידים"</string>
+    <string name="tether_settings_title_all" msgid="6807525590937697228">"‏שיתוף אינטרנט (hotspot ו-tethering)"</string>
+    <string name="tether_settings_summary_hotspot_on_tether_on" msgid="6110241048260139633">"‏שיתוף האינטרנט פועל (hotspot ו-tethering)"</string>
     <string name="tether_settings_summary_hotspot_on_tether_off" msgid="5057598961245943644">"נקודה לשיתוף אינטרנט פועלת"</string>
     <string name="tether_settings_summary_hotspot_off_tether_on" msgid="7181518138494995888">"שיתוף אינטרנט"</string>
     <string name="tether_settings_disabled_on_data_saver" msgid="9054069463426952689">"‏לא ניתן לשתף אינטרנט בין ניידים או להשתמש בנקודה ניידת לשיתוף אינטרנט כשחוסך הנתונים (Data Saver) פועל."</string>
@@ -1726,7 +1726,7 @@
     <string name="disable_wifi_hotspot_when_usb_and_bluetooth_and_ethernet_on" msgid="3934609816834760008">"‏שיתוף אינטרנט רק באמצעות USB, ‏Bluetooth ו-Ethernet"</string>
     <string name="usb_title" msgid="1157283449840612901">"USB"</string>
     <string name="usb_tethering_button_text" msgid="7364633823180913777">"‏שיתוף אינטרנט דרך USB"</string>
-    <string name="usb_tethering_subtext" product="default" msgid="3168636595109044213">"‏שיתוף בחיבור לאינטרנט של הטלפון דרך USB"</string>
+    <string name="usb_tethering_subtext" product="default" msgid="3168636595109044213">"‏שיתוף האינטרנט של הטלפון דרך USB"</string>
     <string name="usb_tethering_subtext" product="tablet" msgid="1749659335004856576">"‏שיתוף בחיבור לאינטרנט של הטאבלט דרך USB"</string>
     <string name="bluetooth_tether_checkbox_text" msgid="6108398414967813545">"‏שיתוף אינטרנט דרך Bluetooth"</string>
     <string name="bluetooth_tethering_subtext" product="tablet" msgid="2023654677593885805">"‏שיתוף החיבור לאינטרנט של הטאבלט דרך Bluetooth"</string>
@@ -1734,10 +1734,10 @@
     <string name="bluetooth_tethering_off_subtext_config" msgid="6941934844527406581">"‏החיבור לאינטרנט של <xliff:g id="DEVICE_NAME">%1$d</xliff:g> זה משותף דרך Bluetooth"</string>
     <string name="bluetooth_tethering_overflow_error" msgid="5292358672240161566">"לא ניתן לשתף אינטרנט בין למעלה מ-<xliff:g id="MAXCONNECTION">%1$d</xliff:g> מכשירים."</string>
     <string name="bluetooth_untether_blank" msgid="5087548945727762308">"קשירת <xliff:g id="DEVICE_NAME">%1$s</xliff:g> תבוטל."</string>
-    <string name="ethernet_tether_checkbox_text" msgid="959743110824197356">"‏שיתוף אינטרנט עם Ethernet"</string>
+    <string name="ethernet_tether_checkbox_text" msgid="959743110824197356">"‏שיתוף אינטרנט דרך Ethernet"</string>
     <string name="ethernet_tethering_subtext" product="default" msgid="5998100693350351694">"‏שיתוף החיבור לאינטרנט של הטלפון דרך Ethernet"</string>
     <string name="tethering_footer_info" msgid="6782375845587483281">"אפשר להשתמש בנקודה לשיתוף אינטרנט ובשיתוף אינטרנט בין ניידים כדי לאפשר למכשירים אחרים להתחבר לאינטרנט דרך חבילת הגלישה שלך. ניתן גם להשתמש באפליקציות כדי ליצור נקודה לשיתוף אינטרנט ולשתף תכנים בין מכשירים שנמצאים בקרבת מקום."</string>
-    <string name="tethering_footer_info_sta_ap_concurrency" msgid="2079039077487477676">"‏ניתן להשתמש בנקודה לשיתוף אינטרנט ובשיתוף אינטרנט בין מכשירים כדי לאפשר למכשירים אחרים להתחבר לאינטרנט דרך ה-Wi-Fi או דרך חבילת הגלישה שלך. ניתן גם להשתמש באפליקציות כדי ליצור נקודה לשיתוף אינטרנט ולשתף תכנים בין מכשירים שנמצאים בקרבת מקום."</string>
+    <string name="tethering_footer_info_sta_ap_concurrency" msgid="2079039077487477676">"‏נקודה לשיתוף אינטרנט (Hotspot) ושיתוף אינטרנט בין מכשירים (tethering) מאפשרים למכשירים אחרים להתחבר לאינטרנט דרך Wi-Fi או דרך חבילת הגלישה שלך. יש גם אפליקציות שמאפשרות ליצור נקודה לשיתוף אינטרנט ולשתף תכנים עם מכשירים קרובים."</string>
     <string name="tethering_help_button_text" msgid="2823655011510912001">"עזרה"</string>
     <string name="network_settings_title" msgid="4663717899931613176">"רשתות סלולריות"</string>
     <string name="manage_mobile_plan_title" msgid="5616930513733409064">"תכנית לנייד"</string>
@@ -2518,7 +2518,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"הטאבלט נמצא בשימוש יותר מהרגיל"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"המכשיר נמצא בשימוש יותר מהרגיל"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"ייתכן שהסוללה תתרוקן מוקדם מהרגיל"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"שמירה על תקינות הסוללה"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"מופעלת אופטימיזציה לשמירה על תקינות הסוללה"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"הסוללה מוגבלת באופן זמני. למידע נוסף יש להקיש."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"השתמשת בטלפון יותר מהרגיל. ייתכן שהסוללה תתרוקן מוקדם מהצפוי.\n\nהאפליקציות המובילות לפי שימוש בסוללה:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"השתמשת בטאבלט יותר מהרגיל. ייתכן שהסוללה תתרוקן מוקדם מהצפוי.\n\nהאפליקציות המובילות לפי שימוש בסוללה:"</string>
@@ -3653,7 +3653,7 @@
     <string name="lock_screen_notifications_interstitial_message_profile" msgid="1456262034599029028">"איך להציג התראות פרופיל כשהמכשיר נעול?"</string>
     <string name="lock_screen_notifications_interstitial_title_profile" msgid="6950124772255324448">"התראות פרופיל"</string>
     <string name="notifications_title" msgid="4221655533193721131">"התראות"</string>
-    <string name="app_notifications_title" msgid="248374669037385148">"התראות אפליקציה"</string>
+    <string name="app_notifications_title" msgid="248374669037385148">"התראות של האפליקציה"</string>
     <string name="notification_channel_title" msgid="8859880871692797611">"קטגוריית התראות"</string>
     <string name="notification_group_title" msgid="7525666535695631538">"קבוצת קטגוריות של התראות"</string>
     <string name="notification_importance_title" msgid="1545158655988342703">"התנהגות"</string>
@@ -4367,7 +4367,7 @@
     <string name="condition_turn_on" msgid="3911077299444314791">"הפעלה"</string>
     <string name="condition_expand_show" msgid="1501084007540953213">"הצג"</string>
     <string name="condition_expand_hide" msgid="8347564076209121058">"הסתר"</string>
-    <string name="condition_hotspot_title" msgid="7903918338790641071">"הנקודה לשיתוף אינטרנט פעילה"</string>
+    <string name="condition_hotspot_title" msgid="7903918338790641071">"‏נקודת ה-hotspot פעילה"</string>
     <string name="condition_airplane_title" msgid="5847967403687381705">"מצב טיסה מופעל"</string>
     <string name="condition_airplane_summary" msgid="1964500689287879888">"הרשתות לא זמינות"</string>
     <string name="condition_zen_title" msgid="7674761111934567490">"מצב \'נא לא להפריע\' מופעל"</string>
@@ -4811,6 +4811,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"מקסימום מערכי נתונים גלויים"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"איפוס לערכי ברירת המחדל"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"האפשרויות למפתחים למילוי האוטומטי אופסו"</string>
+    <string name="location_category" msgid="3496759112306219062">"מיקום"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"אינדיקטור מיקום של שורת סטטוס"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"הצגת כל המיקומים, כולל רשת וקישוריות"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"‏אילוץ של הרצה מלאה של מדידות Gnss"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"‏מעקב אחר כל מערכות הניווט והתדרים של GNSS ללא מחזור פעילות"</string>
     <string name="device_theme" msgid="5027604586494772471">"עיצוב המכשיר"</string>
     <string name="default_theme" msgid="4815428567082263639">"ברירת מחדל"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"שם הרשת"</string>
@@ -4827,8 +4832,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"אפשר להשהות את ההתראות כדי שלא יפריעו לך"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"התכונה לא זמינה"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"התכונה הזו הושבתה מפני שהיא מאטה את הטלפון שלך"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"‏אילוץ של הרצה מלאה של מדידות Gnss"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"‏מעקב אחר כל מערכות הניווט והתדרים של GNSS ללא מחזור פעילות"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"הצג תמיד דו-שיח של קריסות מחשב"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"הצג דו-שיח בכל פעם שאפליקציה קורסת"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"‏בחירת אפליקציה המותאמת ל-ANGLE"</string>
@@ -5218,6 +5221,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"‏התכונה שיחות Wi-Fi מאפשרת להתקשר ולקבל שיחות באמצעות רשתות שאינן רשתות הספקים, כמו רשתות Wi‑Fi מסוימות."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"שיחות"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"מועדפות"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"שיחות מועדפות"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"‏הודעות SMS מועדפות"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"לא זמין"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"‏אין כרטיס SIM"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"העדפות"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"חיבור לרשתות ציבוריות"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"‏חיבור לרשת, אינטרנט, אלחוטי, נתונים, Wi-Fi, wi-fi, wi fi, סלולרי, נייד, ספק סלולרי, 4g,‏ 3g,‏ 2g,‏ lte"</string>
@@ -5226,4 +5234,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"אינו זמין כאשר מצב שינה מופעל"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"הושלם איפוס הגדרת החשיבות של ההתראות."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"אפליקציות"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"מכשיר לא מהימן מבקש לקבל גישה להודעות. יש להקיש לקבלת פרטים."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"להעניק גישה להודעות?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"‏מכשיר Bluetooth לא מהימן, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], מבקש גישה להודעות.\n\nלא התחברת בעבר למכשיר [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"מכשיר לא מהימן מבקש גישה לאנשי הקשר וליומן השיחות. יש להקיש לקבלת פרטים."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"להעניק גישה לאנשי הקשר וליומן השיחות?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"‏מכשיר Bluetooth לא מהימן, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], מבקש גישה לאנשי הקשר וליומן השיחות. הגישה תכלול גם נתונים על שיחות נכנסות ויוצאות.\n\nלא התחברת בעבר למכשיר [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
 </resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 5188a5f..b4eb687 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 アドレス"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"保存済みネットワーク"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"サブスクリプション"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"その他のネットワーク"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP 設定"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"このユーザーは Wi‑Fi 詳細設定を利用できません"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"保存"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"APNを削除"</string>
     <string name="menu_new" msgid="6571230342655509006">"新しい APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"保存"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"破棄"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"キャンセル"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"[名前]フィールドは必須です。"</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APNは必ず指定してください。"</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"アプリをリセットできます"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Wi-Fi、モバイル、Bluetooth をリセット"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"以下を含む、すべてのネットワーク設定がリセットされます。\n\n"<li>"Wi‑Fi"</li>\n<li>"モバイルデータ"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"消去"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"ダウンロードされた eSIM の消去"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"別の eSIM をダウンロードするには、携帯通信会社にお問い合わせください。この操作でモバイルのサービスプランが解約されることはありません。"</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"この操作でモバイルのサービスプランが解約されることはありません。交換用 SIM のダウンロードについては、携帯通信会社にお問い合わせください。"</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"設定をリセット"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"すべてのネットワーク設定をリセットしますか？この操作を取り消すことはできません。"</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"すべてのネットワーク設定をリセットして、ダウンロードされた eSIM を消去しますか？この操作を取り消すことはできません。"</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"タブレットの電池使用量が通常より多くなっています"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"デバイスの電池使用量が通常より多くなっています"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"電池が通常より早くなくなる可能性があります"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"電池の状態を維持する"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"電池の状態を最適化"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"電池の使用が一時的に制限されています。タップして詳細をご確認ください。"</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"スマートフォンの電池使用量が通常より多いため、予想より早く電池がなくなる可能性があります。\n\n電池を多く使用しているアプリ:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"タブレットの電池使用量が通常より多いため、予想より早く電池がなくなる可能性があります。\n\n電池を多く使用しているアプリ:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"表示するデータセットの最大数"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"デフォルト値にリセット"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"自動入力の開発者向けオプションをリセットしました"</string>
+    <string name="location_category" msgid="3496759112306219062">"場所"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"ステータスバーの場所インジケーター"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"ネットワークや接続を含め、すべての場所で表示されます"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"GNSS 計測の完全な実行"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"デューティ サイクリングを無効にした状態で、すべての GNSS コンステレーションと頻度をトラッキングします"</string>
     <string name="device_theme" msgid="5027604586494772471">"デバイスのテーマ"</string>
     <string name="default_theme" msgid="4815428567082263639">"デフォルト"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"ネットワーク名"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"集中するために通知を一時停止する"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"この機能はご利用いただけません"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"この機能はスマートフォンのパフォーマンスを低下させるため OFF になっています"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"GNSS 計測の完全な実行"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"デューティ サイクリングを無効にした状態で、すべての GNSS コンステレーションと頻度をトラッキングします"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"クラッシュ ダイアログを常に表示"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"アプリのクラッシュが発生するごとにダイアログを表示します"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"ANGLE 対応のアプリを選択してください"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Wi-Fi 通話では、携帯通信会社以外のネットワーク（一部の Wi-Fi ネットワークなど）を利用して通話の発信と着信を行えます。"</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"通話"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"優先"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"通話優先"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"SMS 優先"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"使用不可"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"SIM なし"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"設定"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"パブリック ネットワークに接続する"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"ネットワーク接続, インターネット, ワイヤレス, データ, wifi, Wi-Fi, ワイファイ, 携帯, モバイル, 携帯通信会社, 4G, 3G, 2G, LTE"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"おやすみ時間モードが ON のため利用できません"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"通知の重要度をリセットしました。"</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"アプリ"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"信頼できないデバイスがメッセージにアクセスしようとしています。タップして詳細をご確認ください。"</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"メッセージへのアクセスを許可しますか？"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"信頼できない Bluetooth デバイス「<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>」がメッセージにアクセスしようとしています。\n\nこれまでに「<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>」に接続したことはありません。"</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"信頼できないデバイスが連絡先と通話履歴にアクセスしようとしています。タップして詳細をご確認ください。"</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"連絡先と通話履歴へのアクセスを許可しますか？"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"信頼できない Bluetooth デバイス「<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>」が連絡先と通話履歴にアクセスしようとしています。これには着信や発信に関するデータも含まれます。\n\nこれまでに「<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>」に接続したことはありません。"</string>
 </resources>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index bc2353a..64e214d 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 მისამართები"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"დამახსოვრ.ქსელები"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"გამოწერები"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"სხვა ქსელები"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP პარამეტრები"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"გაფართოებული Wi‑Fi პარამეტრები ამ მომხმარებლისთვის მიუწვდომელია"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"შენახვა"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"APN-ის წაშლა"</string>
     <string name="menu_new" msgid="6571230342655509006">"ახალი APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"შენახვა"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"გაუქმება"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"გაუქმება"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"სახელის ველი არ შეიძლება იყოს ცარიელი."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN არ უნდა იყოს ცარიელი."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"შესაძლებელია აპების გადაყენება"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Wi-Fi-ს, მობილური ინტერნეტის და Bluetooth კავშირის გადაყენება"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"ეს ქმედება ქსელის ყველა პარამეტრს გადააყენებს, მათ შორის, შემდეგს:\n\n"<li>"Wi‑Fi"</li>\n<li>"მობილური ინტერნეტი"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"ამოშლა"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"ჩამოტვირთული SIM-ების ამოშლა"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"შემცვლელი SIM ბარათების ჩამოსატვირთად დაუკავშირდით თქვენს ოპერატორს. ეს ქმედება არ გააუქმებს მობილური მომსახურების მოქმედ გეგმებს."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"ეს არ გააუქმებს მობილური სერვისის მოქმედ გეგმებს. ჩამნაცვლებელი SIM-ების ჩამოსატვირთად დაუკავშირდით თქვენს ოპერატორს."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"პარამეტრების ჩამოყრა"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"გსურთ ქსელის ყველა პარამეტრის გადაყენება? ამ მოქმედებას ვერ გააუქმებთ."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"გსურთ ქსელის ყველა პარამეტრის გადაყენება და ჩამოტვირთული SIM ბარათების ამოშლა? ამ მოქმედებას ვერ გააუქმებთ."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"ტაბლეტი ჩვეულებრივზე მეტად მოიხმარება"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"მოწყობილობა ჩვეულებრივზე მეტად მოიხმარება"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"ბატარეა შესაძლოა ჩვეულებრივზე ადრე დაიცალოს"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"ბატარეის გამართულობის შენარჩუნება"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"ოპტიმიზაცია ბატარეის გამართულობისთვის"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"ბატარეა დროებით შეზღუდულია. შეეხეთ, რომ შეიტყოთ მეტი."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"თქვენი ტელეფონი ჩვეულებრივზე მეტად მოიხმარებოდა. ბატარეა შესაძლოა მოსალოდნელზე ადრე დაიცალოს.\n\nაპები, რომლებიც ბატარეას ყველაზე მეტად მოიხმარს:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"თქვენი ტაბლეტი ჩვეულებრივზე მეტად მოიხმარებოდა. ბატარეა შესაძლოა მოსალოდნელზე ადრე დაიცალოს.\n\nაპები, რომლებიც ბატარეას ყველაზე მეტად მოიხმარს:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"მონაცემთა ნაკრებების მაქსიმალური რაოდენობა"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"ნაგულისხმევ მნიშვნელობებზე გადაყენება"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"ავტომატური შევსების დეველოპერის პარამეტრები გადაყენებულია"</string>
+    <string name="location_category" msgid="3496759112306219062">"მდებარეობა"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"მდებარეობის ინდიკატორი სტატუსის ზოლში"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"ხმოვანი სიგნალები ყველა მდებარეობისთვის, ქსელის და კავშირის ჩათვლით"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"სრული GNSS გაზომვის განხორციელების იძულება"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"ყველა GNSS კონსტელაციისა და სიხშირის აღრიცხვა, დატვირთვის კოეფიციენტის გარეშე"</string>
     <string name="device_theme" msgid="5027604586494772471">"მოწყობილობის თემა"</string>
     <string name="default_theme" msgid="4815428567082263639">"ნაგულისხმევი"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"ქსელის სახელი"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"შეტყობინებების დაპაუზება კონცენტრირების შესანარჩუნებლად"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"ფუნქცია მიუწვდომელია"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"ეს ფუნქცია გამოირთო, რადგან ის ტელეფონს ანელებს"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"სრული GNSS გაზომვის განხორციელების იძულება"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"ყველა GNSS კონსტელაციისა და სიხშირის აღრიცხვა, დატვირთვის კოეფიციენტის გარეშე"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"ავარიულად გათიშვის დიალოგური ფანჯრის ყოველთვის ჩვენება"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"დიალოგური ფანჯრის ყოველთვის ჩვენება, როცა აპი ავარიულად ითიშება"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"აირჩიეთ ANGLE-ის მხარდაჭერის მქონე აპი"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Wi-Fi დარეკვა საშუალებას გაძლევთ, დარეკოთ და მიიღოთ ზარები არაოპერატორის ქსელების, მაგალითად, ზოგიერთი Wi-Fi ქსელის მეშვეობით."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"ზარები"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"უპირატესი"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"უპირატესია ზარები"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"უპირატესია SMS"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"მიუწვდომელი"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"SIM არ არის"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"პრიორიტეტები"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"საჯარო ქსელებთან დაკავშირება"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"ქსელთან კავშირი, ინტერნეტი, უსადენო, მონაცემები, wifi, wi-fi, wi fi, ფიჭური, მობილური, ფიჭური ოპერატორი, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"მიუწვდომელია, რადგან ჩართულია ძილის დროის რეჟიმი"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"შეტყობინების მნიშვნელობის გადაყენება დასრულებულია."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"აპები"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"არასანდო მოწყობილობას თქვენს შეტყობინებებზე წვდომა სურს. შეეხეთ დეტალების სანახავად."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"დაუშვებთ შეტყობინებებზე წვდომას?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"არასანდო Bluetooth მოწყობილობას, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], თქვენს შეტყობინებებზე წვდომა სურს.\n\nაქამდე [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]-ს არ დაკავშირებიხართ."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"არასანდო მოწყობილობას თქვენს კონტაქტებსა და ზარების ჟურნალზე წვდომა სურს. შეეხეთ დეტალების სანახავად."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"დაუშვებთ წვდომას კონტაქტებსა და ზარების ჟურნალზე?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"არასანდო Bluetooth მოწყობილობას, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], თქვენს კონტაქტებსა და ზარების ჟურნალზე წვდომა სურს. ეს მოიცავს მონაცემებს შემომავალი და გამავალი ზარების შესახებ.\n\nაქამდე [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]-ს არ დაკავშირებიხართ."</string>
 </resources>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index 162f331..a785e88 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 мекенжайлары"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Сақталған желілер"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Жазылымдар"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Басқа желілер"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP параметрлері"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Wi-Fi кеңейтілген параметрлері осы пайдаланушы үшін қолжетімді емес"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Сақтау"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"APN жою"</string>
     <string name="menu_new" msgid="6571230342655509006">"Жаңа APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Сақтау"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Өшіру"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Бас тарту"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Атау жақтауы бос болмауы тиіс."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN (Apple хабар жіберу қызметі )бос болмауы тиіс."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Қолданбаларды бастапқы күйге қайтаруға болады."</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Wi-Fi, мобильдік деректер және Bluetooth параметрлерін бастапқы күйіне қайтару"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Мұның нәтижесінде барлық желі параметрлері бастапқы күйіне қайтарылады, соның ішінде:\n\n"<li>"Wi‑Fi"</li>\n<li>"мобильдік деректер"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Жою"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Жүктеп алынған SIM карталарын тазарту"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Жаңа SIM карталарын жүктеп алу үшін операторға хабарласыңыз. Мобильдік қызмет жоспарларынан бас тартылмайды."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Бұл әрекет нәтижесінде мобильдік тарифтерден бас тартылмайды. Жаңа SIM карталарын жүктеп алу үшін операторға хабарласыңыз."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Параметрлерді бастапқы күйге қайтару"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Барлық желі параметрлері бастапқы күйіне қайтарылсын ба? Бұл әрекетті қайтару мүмкін емес."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Барлық желі параметрлері бастапқы күйіне қайтарылып, жүктеп алынған SIM карталары өшірілсін бе? Бұл әрекет кері қайтарылмайды."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Планшет әдеттегіден көп қолданылды"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Құрылғы әдеттегіден көп қолданылды"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Батареяның заряды тез бітуі мүмкін."</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Батареяның жұмысқа қабілеттігін сақтау"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Батареяның жұмыс істеу қабілеті оңтайландырылуда"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Батарея жұмысы уақытша шектелген. Толығырақ ақпарат алу үшін түртіңіз."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Телефоныңыз әдеттегіден көп қолданылды. Батареяның заряды тез бітуі мүмкін.\n\nБатареяны ең көп пайдаланатын қолданбалар:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Планшетіңіз әдеттегіден көп пайдаланылды. Батареяның заряды тез бітуі мүмкін.\n\nБатареяны ең көп пайдаланатын қолданбалар:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Көрсетілетін деректердің максималды көлемі"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Әдепкі мәндерге қайтару"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Автотолтыру бойынша Developer Options бастапқы күйіне қайтарылды"</string>
+    <string name="location_category" msgid="3496759112306219062">"Орын"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Күй жолағындағы орын индикаторы"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Желі және байланысты қоса алғанда, барлық орындар үшін көрсету"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"GNSS толық өлшемдерін қосу"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Жұмыс циклінсіз барлық GNSS тізбектері мен жиіліктерін қадағалау"</string>
     <string name="device_theme" msgid="5027604586494772471">"Құрылғы тақырыбы"</string>
     <string name="default_theme" msgid="4815428567082263639">"Әдепкі"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Желі атауы"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Алаңдататын хабарландыруларды кідірту"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Функция қолжетімді емес."</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Бұл функция өшірілді, себебі телефоныңыздың жұмысына кедергі келтіреді."</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"GNSS толық өлшемдерін қосу"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Жұмыс циклінсіз барлық GNSS тізбектері мен жиіліктерін қадағалау"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Ақау туралы хабарларды әрдайым көрсету"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Қолданбада ақау болған сайын, диалог көрсету"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"ANGLE қолдайтын қолданбаны таңдау"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Wi-Fi қоңыраулары оператордан өзге желілер арқылы (мысалы, кейбір Wi‑Fi желілері) қоңырау шалуға не қабылдауға мүмкіндік береді."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Қоңыраулар"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"таңдаулы"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"қоңыраулар таңдалған"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"SMS таңдалған"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"қолжетімді емес"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"SIM картасы жоқ"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Параметрлер"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Қоғамдық жерлердегі желілерге қосылу"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"желі байланысы, интернет, сымсыз байланыс, деректер, wifi, Wi-Fi, Wi Fi, ұялы, мобильдік, ұялы байланыс операторы, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Ұйықтау уақыты режимі қосулы болғандықтан, қолжетімді емес."</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Хабарландырулардың маңыздылық параметрлерін бастапқы күйге қайтару аяқталды."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Қолданбалар"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Күдікті құрылғы хабарларыңызды пайдаланғысы келеді. Толық мәлімет алу үшін түртіңіз."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Хабарларды пайдалануға рұқсат берілсін бе?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Күдікті Bluetooth құрылғысы ([<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>]) хабарларыңызды пайдаланғысы келеді.\n\nСіз бұрын-соңды [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] құрылғысына қосылмағансыз."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Күдікті құрылғы контактілер тізімі мен қоңыраулар журналын пайдаланғысы келеді. Толық мәлімет алу үшін түртіңіз."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Контактілер тізімі мен қоңыраулар журналын пайдалануға рұқсат берілсін бе?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Күдікті Bluetooth құрылғысы ([<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>]) контактілер тізімі мен қоңыраулар журналын пайдаланғысы келеді. Оған кіріс және шығыс қоңыраулары деректері кіреді.\n\nСіз бұрын-соңды [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] құрылғысына қосылмағансыз."</string>
 </resources>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index 008aedb..2b0507c 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"អាសយដ្ឋាន IPv6"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"បណ្ដាញ​ដែលបាន​រក្សាទុក"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"ការ​ជាវ"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"បណ្តាញផ្សេងទៀត"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"ការ​កំណត់ IP"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"ការកំណត់កម្រិតខ្ពស់នៃ Wi‑Fi មិនអាចប្រើបានសម្រាប់អ្នកប្រើនេះទេ"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"រក្សាទុក"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"លុប APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"APN ថ្មី"</string>
     <string name="menu_save" msgid="6611465355127483100">"រក្សាទុក"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"បោះបង់"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"បោះបង់"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"វាល​ឈ្មោះ​មិន​អាច​ទទេ។"</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN មិន​អាច​ទទេ។"</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"អាច​កំណត់​កម្មវិធី​ឡើងវិញ​បាន"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"កំណត់ Wi-Fi ឧបករណ៍ចល័ត និងប៊្លូធូសឡើងវិញ"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"វា​នឹង​កំណត់​ការកំណត់​បណ្តាញ​ទាំងអស់​ឡើងវិញ រួម​មាន៖\n\n"<li>"Wi‑Fi"</li>\n<li>"ទិន្នន័យ​ទូរសព្ទចល័ត"</li>\n<li>"ប៊្លូធូស"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"លុប"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"លុប​ស៊ីម​ដែលបាន​ទាញយក"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"ដើម្បី​ទាញយក​ស៊ីមជំនួស សូម​ទាក់ទង​ក្រុមហ៊ុន​សេវាទូរសព្ទរបស់​អ្នក។ សកម្មភាព​នេះ​នឹង​មិន​បោះបង់​គម្រោង​សេវាទូរសព្ទចល័ត​ណាមួយ​ឡើយ។"</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"សកម្មភាពនេះ​នឹងមិនបោះបង់​គម្រោង​សេវាទូរសព្ទចល័ត​ណាមួយឡើយ។ ដើម្បី​ទាញយក​ស៊ីមជំនួស សូម​ទាក់ទង​ក្រុមហ៊ុន​សេវាទូរសព្ទរបស់​អ្នក។"</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"កំណត់ការកំណត់ឡើងវិញ"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"កំណត់ការកំណត់​បណ្ដាញ​ទាំងអស់​ឡើងវិញ? អ្នកមិន​អាចត្រឡប់​សកម្មភាពនេះ​វិញបានទេ។"</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"កំណត់ការកំណត់បណ្តាញទាំងអស់ឡើងវិញ និង​លុប​ស៊ីមដែលបាន​ទាញយក? អ្នកមិន​អាចត្រឡប់​សកម្មភាពនេះ​វិញបានទេ។"</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"ថេប្លេត​ត្រូវបានប្រើប្រាស់ច្រើន​ជាង​ធម្មតា"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"ឧបករណ៍​ត្រូវបានប្រើប្រាស់​ច្រើន​ជាង​ធម្មតា"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"អាចនឹងឆាប់​អស់​ថ្ម​​ជាងធម្មតា"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"ការរក្សា​គុណភាពថ្ម"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"កំពុងបង្កើនប្រសិទ្ធភាព​គុណភាពថ្ម"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"បានដាក់កម្រិតថ្ម​ជាបណ្ដោះអាសន្ន។ សូមចុច ដើម្បី​ស្វែងយល់​បន្ថែម។"</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"ទូរសព្ទរបស់អ្នក​ត្រូវបាន​ប្រើប្រាស់​ច្រើន​ជាងធម្មតា។ ថ្ម​របស់អ្នក​អាច​នឹង​ឆាប់អស់ជាង​ការរំពឹងទុក។\n\nកម្មវិធី​ដែល​ប្រើប្រាស់​ច្រើន​បំផុត តាមរយៈ​ការប្រើប្រាស់​ថ្ម៖"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"ថេប្លេតរបស់អ្នក​ត្រូវបាន​ប្រើប្រាស់​ច្រើន​ជាងធម្មតា។ ថ្ម​របស់អ្នក​អាច​នឹង​ឆាប់អស់ជាង​ការរំពឹងទុក។\n\nកម្មវិធី​ដែល​ប្រើប្រាស់​ច្រើន​បំផុត តាមរយៈ​ការប្រើប្រាស់​ថ្ម៖"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"សំណុំទិន្នន័យ​មើល​ឃើញ​អតិបរមា"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"កំណត់​ឡើងវិញទៅ​តម្លៃ​លំនាំដើម"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"បំពេញ​ជម្រើស​អ្នកអភិវឌ្ឍន៍ដែលបាន​កំណត់​ឡើងវិញ"</string>
+    <string name="location_category" msgid="3496759112306219062">"ទីតាំង"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"សូចនាករ​ទីតាំង​នៅលើរបារស្ថានភាព"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"បង្ហាញ​ទីតាំង​ទាំងអស់ រួមទាំង​បណ្ដាញ និងការតភ្ជាប់"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"ជំរុញការវាស់ GNSS ពេញលេញ"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"តាមដានក្រុមរូបថត និងហ្រេ្វកង់ GNSS ទាំងអស់​ដែល​គ្មាន​ការបែង​ចែក​រយៈពេល​ដំណើរការ"</string>
     <string name="device_theme" msgid="5027604586494772471">"រចនាប័ទ្ម​ឧបករណ៍"</string>
     <string name="default_theme" msgid="4815428567082263639">"លំ​នាំ​ដើម"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"ឈ្មោះ​បណ្តាញ"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"ផ្អាក​ការជូនដំណឹង​ដើម្បីផ្តោត​អារម្មណ៍"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"មិនអាចប្រើ​មុខងារនេះបានទេ"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"មុខងារនេះ​ត្រូវបានបិទ ដោយសារវា​ធ្វើឱ្យទូរសព្ទរបស់អ្នក​ដើរយឺត"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"ជំរុញការវាស់ GNSS ពេញលេញ"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"តាមដានក្រុមរូបថត និងហ្រេ្វកង់ GNSS ទាំងអស់​ដែល​គ្មាន​ការបែង​ចែក​រយៈពេល​ដំណើរការ"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"បង្ហាញ​ប្រអប់បញ្ចូល​នៃ​ការ​គាំង​ជានិច្ច"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"បង្ហាញ​ប្រអប់បញ្ចូល​រាល់ពេលដែល​កម្មវិធី​គាំង"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"ជ្រើសរើស​កម្មវិធី​ដែលអាច​ប្រើ ANGLE"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"ការហៅតាម Wi-Fi អនុញ្ញាតឱ្យអ្នក​ហៅ និងទទួលទូរសព្ទ​តាម​បណ្ដាញដែលមិនមាន​ប្រភពមកពីក្រុមហ៊ុនសេវាទូរសព្ទ​ដូចជា បណ្ដាញ Wi‑Fi មួយចំនួនជាដើម។"</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"ការហៅទូរសព្ទ"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"សារ SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"ជាអាទិភាព"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"ការហៅទូរសព្ទ​ជាអាទិភាព"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"SMS ជាអាទិភាព"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"មិនអាចប្រើ​បានទេ"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"មិនមានស៊ីមទេ"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"ចំណូលចិត្ត"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"ភ្ជាប់ជាមួយ​បណ្ដាញសាធារណៈ"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"ការតភ្ជាប់បណ្ដាញ, អ៊ីនធឺណិត, ឥតខ្សែ, ទិន្នន័យ, wifi, wi-fi, wi fi, បណ្ដាញចល័ត, ឧបករណ៍​ចល័ត, ក្រុមហ៊ុន​សេវាទូរសព្ទចល័ត, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"មិនអាច​ប្រើបានទេ ដោយសារ​បើកមុខងារ​ម៉ោងគេង"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"បានបញ្ចប់​ការកំណត់កម្រិតសំខាន់​នៃការជូនដំណឹង​ឡើងវិញ។"</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"កម្មវិធី"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"ឧបករណ៍​ដែលមិនគួរឱ្យទុកចិត្ត​ចង់ចូលប្រើ​សារ​របស់អ្នក។ សូមចុច​ដើម្បី​ទទួលបាន​ព័ត៌មាន​លម្អិត។"</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"អនុញ្ញាតឱ្យ​ចូលប្រើសារឬ?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"ឧបករណ៍​ប៊្លូធូស​ដែលមិនគួរឱ្យទុកចិត្ត [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>] ចង់ចូលប្រើ​សារ​របស់អ្នក។\n\nអ្នកមិនបានភ្ជាប់ទៅ [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] ពីមុនទេ។"</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"ឧបករណ៍​ដែលមិនគួរឱ្យទុកចិត្ត​ចង់ចូលប្រើ​ទំនាក់ទំនង និងកំណត់ហេតុហៅទូរសព្ទ​របស់អ្នក។ សូមចុច​ដើម្បី​ទទួលបាន​ព័ត៌មាន​លម្អិត។"</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"អនុញ្ញាតឱ្យ​ចូលប្រើទំនាក់ទំនង និងកំណត់ហេតុហៅទូរសព្ទឬ?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"ឧបករណ៍​ប៊្លូធូស​ដែលមិនគួរឱ្យទុកចិត្ត [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>] ចង់ចូលប្រើ​ទំនាក់ទំនង និងកំណត់ហេតុហៅ​ទូរសព្ទ​របស់អ្នក។ សកម្មភាពនេះ​រួមបញ្ចូលទិន្នន័យ​អំពី​ការហៅចូល និងការហៅចេញ។\n\nអ្នកមិនបានភ្ជាប់ទៅ [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] ពីមុនទេ។"</string>
 </resources>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index 6fbdef5..5d9f06f 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 ವಿಳಾಸಗಳು"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"ಉಳಿಸಿದ ನೆಟ್‌ವರ್ಕ್‌"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"ಸಬ್‌ಸ್ಕ್ರಿಪ್ಶನ್‌ಗಳು"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"ಇತರ ನೆಟ್‌ವರ್ಕ್‌ಗಳು"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"ಈ ಬಳಕೆದಾರರಿಗೆ ವೈ ಫೈ ಸುಧಾರಿತ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಲಭ್ಯವಿಲ್ಲ"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"ಉಳಿಸಿ"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"APN ಅಳಿಸಿ"</string>
     <string name="menu_new" msgid="6571230342655509006">"ಹೊಸ APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"ಉಳಿಸಿ"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"ತ್ಯಜಿಸಿ"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"ರದ್ದುಮಾಡಿ"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"ಹೆಸರಿನ ಕ್ಷೇತ್ರವು ಖಾಲಿ ಇರುವಂತಿಲ್ಲ."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN ಖಾಲಿ ಇರುವಂತಿಲ್ಲ."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"ಆ್ಯಪ್‌ಗಳನ್ನು ಮರುಹೊಂದಿಸಬಹುದಾಗಿದೆ"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"ವೈ-ಫೈ, ಮೊಬೈಲ್ ಮತ್ತು ಬ್ಲೂಟೂತ್ ಮರುಹೊಂದಿಸಿ"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"ಕೆಳಗಿನವುಗಳನ್ನು ಒಳಗೊಂಡಂತೆ ಇದು ಎಲ್ಲಾ ನೆಟ್‌ವರ್ಕ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಮರುಹೊಂದಿಸುತ್ತದೆ:\n\n"<li>"ವೈ-ಫೈ"</li>\n<li>"ಮೊಬೈಲ್ ಡೇಟಾ"</li>\n<li>"ಬ್ಲೂಟೂತ್‌"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"ಅಳಿಸಿ"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"ಡೌನ್‌ಲೋಡ್ ಮಾಡಿದ SIM ಅಳಿಸಿ"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"ಬದಲಿ SIM ಗಳನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಲು, ನಿಮ್ಮ ವಾಹಕವನ್ನು ಸಂಪರ್ಕಿಸಿ. ಇದು ಯಾವುದೇ ಮೊಬೈಲ್ ಸೇವಾ ಪ್ಲಾನ್‌ಗಳನ್ನು ರದ್ದುಗೊಳಿಸುವುದಿಲ್ಲ."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"ಇದು ಯಾವುದೇ ಮೊಬೈಲ್ ಸೇವಾ ಪ್ಲಾನ್‌ಗಳನ್ನು ರದ್ದುಗೊಳಿಸುವುದಿಲ್ಲ. ಬದಲಾಯಿಸಿದ SIM ಗಳನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಿಕೊಳ್ಳಲು, ನಿಮ್ಮ ವಾಹಕವನ್ನು ಸಂಪರ್ಕಿಸಿ."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಮರುಹೊಂದಿಸಿ"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"ಎಲ್ಲಾ ನೆಟ್‌ವರ್ಕ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಮರುಹೊಂದಿಸುವುದೇ? ನೀವು ಈ ಕ್ರಿಯೆಯನ್ನು ರದ್ದುಗೊಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"ಎಲ್ಲಾ ನೆಟ್‌ವರ್ಕ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಮರುಹೊಂದಿಸುವುದೇ ಹಾಗೂ ಡೌನ್‌ಲೋಡ್ ಮಾಡಲಾದ SIM ಗಳನ್ನು ಅಳಿಸುವುದೇ? ನೀವು ಈ ಕ್ರಿಯೆಯನ್ನು ರದ್ದುಗೊಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"ಟ್ಯಾಬ್ಲೆಟ್ ಸಾಮಾನ್ಯಕ್ಕಿಂತ ಹೆಚ್ಚಿನದನ್ನು ಬಳಸಿದೆ"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"ಸಾಧನವು ಸಾಮಾನ್ಯಕ್ಕಿಂತ ಹೆಚ್ಚಿನದನ್ನು ಬಳಸಿದೆ"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"ಬ್ಯಾಟರಿ ಸಾಮಾನ್ಯ ಅವಧಿಗಿಂತ ಮೊದಲೇ ಖಾಲಿಯಾಗಬಹುದು"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"ಬ್ಯಾಟರಿಯ ಆರೋಗ್ಯವನ್ನು ಸಂರಕ್ಷಿಸಲಾಗುತ್ತಿದೆ"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"ಬ್ಯಾಟರಿಯ ಆರೋಗ್ಯಕ್ಕಾಗಿ ಆಪ್ಟಿಮೈಸ್ ಮಾಡಲಾಗುತ್ತಿದೆ"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"ಬ್ಯಾಟರಿಯನ್ನು ತಾತ್ಕಾಲಿಕವಾಗಿ ಸೀಮಿತಗೊಳಿಸಲಾಗಿದೆ. ಇನ್ನಷ್ಟು ತಿಳಿಯಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"ನಿಮ್ಮ ಫೋನ್‌ ಅನ್ನು ಸಾಮಾನ್ಯಕ್ಕಿಂತ ಹೆಚ್ಚು ಬಳಸಲಾಗಿದೆ. ನಿಮ್ಮ ಬ್ಯಾಟರಿಯು ನಿರೀಕ್ಷಿಸಿದ ಅವಧಿಗಿಂತ ಮುನ್ನವೇ ಖಾಲಿಯಾಗಬಹುದು.\n\nಬ್ಯಾಟರಿ ಬಳಕೆಯನ್ನು ಆಧರಿಸಿ ಇವುಗಳು ಟಾಪ್ ಆ್ಯಪ್‌ಗಳಾಗಿವೆ:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"ನಿಮ್ಮ ಟ್ಯಾಬ್ಲೆಟ್ ಅನ್ನು ಸಾಮಾನ್ಯಕ್ಕಿಂತ ಹೆಚ್ಚು ಬಳಸಲಾಗಿದೆ. ನಿಮ್ಮ ಬ್ಯಾಟರಿಯು ನಿರೀಕ್ಷಿಸಿದ ಅವಧಿಗಿಂತ ಮುನ್ನವೇ ಖಾಲಿಯಾಗಬಹುದು.\n\nಬ್ಯಾಟರಿ ಬಳಕೆಯನ್ನು ಆಧರಿಸಿ ಇವುಗಳು ಟಾಪ್ ಆ್ಯಪ್‌ಗಳಾಗಿವೆ:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"ಗರಿಷ್ಠ ಗೋಚರಿಸುವ ಡೇಟಾ ಸೆಟ್‌ಗಳು"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"ಡಿಫಾಲ್ಟ್ ಮೌಲ್ಯಗಳಿಗೆ ಮರುಹೊಂದಿಸಿ"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"ಸ್ವಯಂ ಭರ್ತಿ ಡೆವಲಪರ್ ಆಯ್ಕೆಗಳನ್ನು ಮರುಹೊಂದಿಸಲಾಗಿದೆ"</string>
+    <string name="location_category" msgid="3496759112306219062">"ಸ್ಥಳ"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"ಸ್ಥಿತಿ ಪಟ್ಟಿ ಸ್ಥಳ ಸೂಚಕ"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"ನೆಟ್‌ವರ್ಕ್ ಮತ್ತು ಸಂಪರ್ಕ ಕಲ್ಪಿಸುವಿಕೆಯನ್ನು ಒಳಗೊಂಡಂತೆ ಎಲ್ಲಾ ಸ್ಥಳಗಳನ್ನು ತೋರಿಸಿ"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"ಫೋರ್ಸ್‌ ಫುಲ್ GNSS ಅಳತೆಗಳು"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"ಯಾವುದೇ ಡ್ಯೂಟಿ ಸೈಕ್ಲಿಂಗ್ ಇಲ್ಲದೆ ಎಲ್ಲಾ GNSS ಕಾನ್ಸ್ಟಲೇಶನ್‌ಗಳು ಮತ್ತು ಆವರ್ತನೆಗಳನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಿ"</string>
     <string name="device_theme" msgid="5027604586494772471">"ಸಾಧನದ ಥೀಮ್‌"</string>
     <string name="default_theme" msgid="4815428567082263639">"ಡಿಫಾಲ್ಟ್"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"ನೆಟ್‌ವರ್ಕ್‌ ಹೆಸರು"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"ಫೋಕಸ್‌ ಆಗಿ ಇರಲು ಅಧಿಸೂಚನೆಗಳನ್ನು ವಿರಾಮಗೊಳಿಸಿ"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"ವೈಶಿಷ್ಟ್ಯ ಲಭ್ಯವಿಲ್ಲ"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಆಫ್ ಮಾಡಲಾಗಿದೆ ಏಕೆಂದರೆ ಇದು ನಿಮ್ಮ ಫೋನ್‌ನ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ನಿಧಾನಗೊಳಿಸುತ್ತದೆ"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"ಫೋರ್ಸ್‌ ಫುಲ್ GNSS ಅಳತೆಗಳು"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"ಯಾವುದೇ ಡ್ಯೂಟಿ ಸೈಕ್ಲಿಂಗ್ ಇಲ್ಲದೆ ಎಲ್ಲಾ GNSS ಕಾನ್ಸ್ಟಲೇಶನ್‌ಗಳು ಮತ್ತು ಆವರ್ತನೆಗಳನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಿ"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"ಯಾವಾಗಲೂ ಕ್ರ್ಯಾಶ್ ಸಂವಾದವನ್ನು ತೋರಿಸಿ"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"ಅಪ್ಲಿಕೇಶನ್ ಕ್ರ್ಯಾಶ್ ಆಗುವಾಗ ಪ್ರತಿ ಬಾರಿ ಸಂವಾದವನ್ನು ತೋರಿಸಿ"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"ANGLE ಸಕ್ರಿಯಗೊಳಿಸಿದ ಆ್ಯಪ್‌ ಆಯ್ಕೆಮಾಡಿ"</string>
@@ -4896,14 +4899,10 @@
     <string name="dsds_activation_failure_title" msgid="4467364110584914794">"ಸಿಮ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
     <string name="dsds_activation_failure_body_msg1" msgid="6303921196869256391">"ಸಿಮ್ ಅನ್ನು ತೆಗೆದುಹಾಕಿ ಹಾಗೂ ಅದನ್ನು ಮತ್ತೆ ಸೇರಿಸಿ. ಸಮಸ್ಯೆ ಮುಂದುವರಿದರೆ, ನಿಮ್ಮ ಸಾಧನವನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿ."</string>
     <string name="dsds_activation_failure_body_msg2" msgid="73044349546544410">"ಸಿಮ್ ಅನ್ನು ಮತ್ತೆ ಆನ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿ. ಸಮಸ್ಯೆ ಮುಂದುವರಿದರೆ, ನಿಮ್ಮ ಸಾಧನವನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿ."</string>
-    <!-- no translation found for sim_setup_channel_id (8797972565087458515) -->
-    <skip />
-    <!-- no translation found for post_dsds_reboot_notification_title_with_carrier (3308827462185135307) -->
-    <skip />
-    <!-- no translation found for post_dsds_reboot_notification_text (7533428378211541410) -->
-    <skip />
-    <!-- no translation found for sim_card_label (5632157635124050923) -->
-    <skip />
+    <string name="sim_setup_channel_id" msgid="8797972565087458515">"ನೆಟ್‌ವರ್ಕ್ ಸಕ್ರಿಯಗೊಳಿಸುವಿಕೆ"</string>
+    <string name="post_dsds_reboot_notification_title_with_carrier" msgid="3308827462185135307">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> ಸಕ್ರಿಯವಾಗಿದೆ"</string>
+    <string name="post_dsds_reboot_notification_text" msgid="7533428378211541410">"SIM ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಅಪ್‌ಡೇಟ್‌ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
+    <string name="sim_card_label" msgid="5632157635124050923">"ಸಿಮ್‌ ಕಾರ್ಡ್"</string>
     <string name="erase_sim_dialog_title" msgid="881253002169177016">"ಡೌನ್‌ಲೋಡ್ ಮಾಡಿದ ಈ ಸಿಮ್ ಅನ್ನು ಅಳಿಸುವುದೇ?"</string>
     <string name="erase_sim_dialog_text" msgid="753031064269699885">"ಈ ಸಿಮ್ ಅನ್ನು ಅಳಿಸುವುದರಿಂದ, ಅದು ಈ ಸಾಧನದಿಂದ <xliff:g id="CARRIER_NAME_A">%1$s</xliff:g> ಸೇವೆಯನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ.\n\n<xliff:g id="CARRIER_NAME_B">%1$s</xliff:g> ಗಾಗಿ ಇರುವ ಸೇವೆಯನ್ನು ರದ್ದುಗೊಳಿಸಲಾಗುವುದಿಲ್ಲ."</string>
     <string name="erase_sim_confirm_button" msgid="8309115684335320541">"ಅಳಿಸಿ"</string>
@@ -5056,14 +5055,23 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"ವೈ-ಫೈ ಕರೆಮಾಡುವಿಕೆಯು, ಕೆಲವು ವೈ-ಫೈ ನೆಟ್‌ವರ್ಕ್‌ಗಳು ವಾಹಕ-ರಹಿತ ನೆಟ್‌ವರ್ಕ್‌ಗಳ ಮೂಲಕ ಕರೆಗಳನ್ನು ಮಾಡಲು ಮತ್ತು ಸ್ವೀಕರಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"ಕರೆಗಳು"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"ಆದ್ಯತೆ ನೀಡಲಾಗಿದೆ"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"ಕರೆಗಳಿಗೆ ಆದ್ಯತೆ ನೀಡಲಾಗಿದೆ"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"SMS ಲಭ್ಯವಿಲ್ಲ"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"ಲಭ್ಯವಿಲ್ಲ"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"ಯಾವುದೇ ಸಿಮ್ ಇಲ್ಲ"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"ಪ್ರಾಶಸ್ತ್ಯಗಳು"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"ಸಾರ್ವಜನಿಕ ನೆಟ್‌ವರ್ಕ್‌ಗಳಿಗೆ ಕನೆಕ್ಟ್ ಮಾಡಿ"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"ನೆಟ್‌ವರ್ಕ್ ಕನೆಕ್ಷನ್, ಇಂಟರ್ನೆಟ್, ವೈರ್‌ಲೆಸ್, ಡೇಟಾ, ವೈಫೈ, ವೈ-ಫೈ, ವೈ ಫೈ, ಸೆಲ್ಯುಲಾರ್, ಮೊಬೈಲ್, ಸೆಲ್ ವಾಹಕ, 4g, 3g, 2g, LTE"</string>
-    <!-- no translation found for view_airplane_safe_networks (7390511371040078514) -->
-    <skip />
-    <!-- no translation found for turn_off_airplane_mode (1334192337050190071) -->
-    <skip />
+    <string name="view_airplane_safe_networks" msgid="7390511371040078514">"ಏರೋಪ್ಲೇನ್-ಸುರಕ್ಷಿತ ನೆಟ್‌ವರ್ಕ್ ನೋಡಿ"</string>
+    <string name="turn_off_airplane_mode" msgid="1334192337050190071">"ಏರ್‌ಪ್ಲೇನ್ ಮೋಡ್ ಆಫ್ ಮಾಡಿ"</string>
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"ಬೆಡ್‌ಟೈಮ್ ಮೋಡ್ ಆನ್ ಇರುವುದರಿಂದ ಲಭ್ಯವಿಲ್ಲ"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"ಮರುಹೊಂದಿಕೆ ಅಧಿಸೂಚನೆ ಪ್ರಾಮುಖ್ಯತೆ ಪೂರ್ಣಗೊಂಡಿದೆ."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"ಆ್ಯಪ್‌ಗಳು"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"ವಿಶ್ವಾಸಾರ್ಹವಲ್ಲದ ಸಾಧನವು ನಿಮ್ಮ ಸಂದೇಶಗಳಿಗೆ ಪ್ರವೇಶಿಸಲು ಬಯಸುತ್ತದೆ. ವಿವರಗಳಿಗಾಗಿ ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"ಸಂದೇಶಗಳಿಗೆ ಪ್ರವೇಶವನ್ನು ಅನುಮತಿಸಬೇಕೇ?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"ಒಂದು ವಿಶ್ವಾಸಾರ್ಹವಲ್ಲದ ಬ್ಲೂಟೂತ್ ಸಾಧನ, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], ನಿಮ್ಮ ಸಂದೇಶಗಳಿಗೆ ಪ್ರವೇಶಿಸಲು ಬಯಸುತ್ತದೆ.\n\nನೀವು ಈ ಮೊದಲು [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] ಕ್ಕೆ ಸಂಪರ್ಕ ಹೊಂದಿರಲಿಲ್ಲ."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"ವಿಶ್ವಾಸಾರ್ಹವಲ್ಲದ ಸಾಧನವು ನಿಮ್ಮ ಸಂಪರ್ಕಗಳು ಮತ್ತು ಕರೆಯ ಲಾಗ್‌ಗೆ ಪ್ರವೇಶಿಸಲು ಬಯಸುತ್ತದೆ. ವಿವರಗಳಿಗಾಗಿ ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"ಸಂಪರ್ಕಗಳು ಮತ್ತು ಕರೆಯ ಲಾಗ್‌ಗೆ ಪ್ರವೇಶಿಸಲು ಅನುಮತಿಸಬೇಕೇ?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"ಒಂದು ವಿಶ್ವಾಸಾರ್ಹವಲ್ಲದ ಬ್ಲೂಟೂತ್ ಸಾಧನ, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], ನಿಮ್ಮ ಸಂಪರ್ಕಗಳು ಮತ್ತು ಕರೆಯ ಲಾಗ್‌ಗೆ ಪ್ರವೇಶಿಸಲು ಬಯಸುತ್ತದೆ. ಇದು ಒಳಬರುವ ಮತ್ತು ಹೊರಹೋಗುವ ಕರೆಗಳ ಡೇಟಾವನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ.\n\nನೀವು ಈ ಮೊದಲು [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] ಕ್ಕೆ ಸಂಪರ್ಕ ಹೊಂದಿರಲಿಲ್ಲ."</string>
 </resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index a99076b..098f6d2 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 주소"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"저장된 네트워크"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"구독"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"기타 네트워크"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP 설정"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"이 사용자는 Wi‑Fi 고급 설정을 사용할 수 없습니다."</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"저장"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"APN 삭제"</string>
     <string name="menu_new" msgid="6571230342655509006">"새 APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"저장"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"취소"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"취소"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"이름 입력란은 비워둘 수 없습니다."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN을 비워둘 수 없습니다."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"앱을 재설정할 수 있습니다."</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Wi-Fi, 모바일, 블루투스 초기화"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"다음을 포함한 모든 네트워크 설정이 초기화됩니다.\n\n"<li>"Wi‑Fi"</li>\n<li>"모바일 데이터"</li>\n<li>"블루투스"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"삭제"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"다운로드한 SIM 삭제"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"교체 SIM을 다운로드하려면 이동통신사에 문의하세요. 이렇게 해도 모바일 서비스 요금제는 취소되지 않습니다."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"이렇게 해도 모바일 서비스 요금제는 취소되지 않습니다. 교체 SIM을 다운로드하려면 이동통신사에 문의하세요."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"설정 초기화"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"네트워크 설정을 모두 초기화하시겠습니까? 이 작업은 실행취소할 수 없습니다."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"모든 네트워크 설정을 초기화하고 다운로드한 SIM을 삭제하시겠습니까? 이 작업은 실행취소할 수 없습니다."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"태블릿을 평소보다 더 많이 사용함"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"기기를 평소보다 더 많이 사용함"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"배터리가 평소보다 빨리 소진될 수 있습니다."</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"배터리 상태 유지"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"배터리 상태 최적화 중"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"일시적으로 배터리 사용이 제한됩니다. 자세히 알아보려면 탭하세요."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"휴대전화를 평소보다 더 많이 사용했습니다. 배터리가 예상보다 빨리 소진될 수 있습니다.\n\n배터리 사용량이 가장 많은 앱:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"태블릿을 평소보다 더 많이 사용했습니다. 배터리가 예상보다 빨리 소진될 수 있습니다.\n\n배터리 사용량이 가장 많은 앱:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"표시할 데이터세트 최대 개수"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"기본값으로 초기화"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"개발자 옵션 자동완성 기능이 초기화되었습니다."</string>
+    <string name="location_category" msgid="3496759112306219062">"위치"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"상태 표시줄 위치 표시기"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"네트워크 및 연결 등 모든 센서를 통해 위치 표시"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"전체 GNSS 측정 강제 사용"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"듀티 사이클 없이 모든 GNSS 배열 및 빈도를 추적"</string>
     <string name="device_theme" msgid="5027604586494772471">"기기 테마"</string>
     <string name="default_theme" msgid="4815428567082263639">"기본값"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"네트워크 이름"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"방해받지 않도록 알림 일시중지"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"제공되지 않는 기능"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"이 기능은 휴대전화의 속도를 느리게 하므로 사용 중지되었습니다."</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"전체 GNSS 측정 강제 사용"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"듀티 사이클 없이 모든 GNSS 배열 및 빈도를 추적"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"비정상 종료 대화상자 항상 표시"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"앱이 비정상 종료될 때마다 대화상자 표시"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"ANGLE 사용 앱 선택"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Wi-Fi 통화를 사용하면 Wi‑Fi 네트워크와 같은 비이동통신사 네트워크를 통해 전화를 주고받을 수 있습니다."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"통화"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"기본"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"기본 전화"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"기본 SMS"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"사용할 수 없음"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"SIM 없음"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"환경설정"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"공용 네트워크에 연결"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"네트워크 연결, 인터넷, 무선, 데이터, Wifi, Wi-Fi, Wi Fi, 셀룰러, 모바일, 이동통신사, 4G, 3G, 2G, LTE"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"취침 모드가 켜져 있으므로 사용할 수 없습니다."</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"알림 중요도가 재설정되었습니다."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"앱"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"신뢰할 수 없는 기기에서 메시지에 액세스하려고 합니다. 세부정보를 확인하려면 탭하세요."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"메시지 액세스를 허용하시겠습니까?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"신뢰할 수 없는 블루투스 기기 [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>]에서 메시지에 액세스하려고 합니다.\n\n전에는 [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]에 연결한 적이 없습니다."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"신뢰할 수 없는 기기에서 연락처와 통화 기록에 액세스하려고 합니다. 세부정보를 확인하려면 탭하세요."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"연락처와 통화 기록 액세스를 허용하시겠습니까?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"신뢰할 수 없는 블루투스 기기 [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>]에서 연락처와 통화 기록에 액세스하려고 합니다. 여기에는 수신 전화와 발신 전화에 관한 데이터도 포함됩니다.\n\n전에는 [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]에 연결한 적이 없습니다."</string>
 </resources>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index 80ab6f6..709f21d 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 даректери"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Сакталган тармактар"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Жазылуулар"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Башка тармактар"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP жөндөөлөрү"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Бул колдонуучу үчүн Wi‑Fi өздөштүрүлгөн жөндөөлөрү жеткиликсиз"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Сактоо"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"APN жок кылуу"</string>
     <string name="menu_new" msgid="6571230342655509006">"Жаңы APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Сактоо"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Сакталбасын"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Жокко чыгаруу"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Аталыш сабы бош болбошу керек."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN бош болбошу керек."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Колдонмону баштапкы абалга келтирүүгө болот"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Wi-Fi\'ды, мобилдик түзмөктү жана Bluetooth\'ду баштапкы абалга келтирүү"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Ушуну менен тармактын бардык жөндөөлөрү баштапкы абалга келет. Тактап айтканда: \n\n"<li>"Wi‑Fi"</li>\n<li>"Мобилдик Интернет"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Тазалоо"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Жүктөп алган SIM’дерди өчүрүү"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Ордуна башка SIM карта жүктөп алуу үчүн, операторуңуз менен байланышыңыз. Тарифтик пландарыңыз өзгөрбөйт."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Тарифтик пландарыңыз өзгөрбөйт. Башка SIM-карталарды жүктөп алуу үчүн байланыш операторуна кайрылыңыз."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Жөндөөлөрдү кайра коюу"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Тармак жөндөөлөрүн баштапкы абалга келтирсеңиз, аларды артка кайтара албайсыз. Уланта бересизби?"</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Тармак жөндөөлөрүнүн баарын баштапкы абалга келтирип, жүктөлүп алынган SIM карталарды өчүрөсүзбү? Бул аракетти артка кайтара албайсыз."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Планшет адаттагыдан көбүрөөк колдонулду"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Түзмөк адаттагыдан көбүрөөк колдонулду"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Батарея эртерээк отуруп калышы мүмкүн"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Батареяны көбүрөөк убакытка жеткирүү"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Батареянын кубатын үнөмдөө иштетилди"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Батареяны колдонуу убактылуу чектелген. Кененирээк маалымат алуу үчүн таптап коюңуз."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Телефонуңузду адаттагыдан көбүрөөк колдонуп жатасыз. Ушундан улам батареяңыз тез отуруп калышы мүмкүн.\n\nБатареяны эң көп пайдаланган колдонмолор:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Планшетиңизди адаттагыдан көбүрөөк колдонуп жатасыз. Ушундан улам батареяңыз тез отуруп калышы мүмкүн.\n\nБатареяны эң көп пайдаланган колдонмолор:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Көрүнүп турган дайындар топтомунун эң жогорку саны"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Демейки маанилерге кайтаруу"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Иштеп чыгуучунун параметрлерин автотолтуруу жөндөөсү кайра коюлду"</string>
+    <string name="location_category" msgid="3496759112306219062">"Жайгашкан жер"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Абал тилкесинин жайгашкан жеринин индикатору"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Бардык жерлер, ошондой эле байланыш жана тармактарда көрсөтүлөт"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"GNSS көрсөткүчтөрүнө толук көз салууну иштетүү"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Иштөө цикли өчүрүлүп, бардык GNSS топторуна жана жыштыктарга көз салынат"</string>
     <string name="device_theme" msgid="5027604586494772471">"Түзмөктүн темасы"</string>
     <string name="default_theme" msgid="4815428567082263639">"Демейки"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Тармактын аталышы"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Алагды кылбоо үчүн билдирмелерди тындыруу"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Функция жеткиликтүү эмес"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Бул функция телефонуңузду жай иштетип жаткандыктан өчүрүлгөн"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"GNSS көрсөткүчтөрүнө толук көз салууну иштетүү"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Иштөө цикли өчүрүлүп, бардык GNSS топторуна жана жыштыктарга көз салынат"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Ката диалогун ар дайым көрсөтүү"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Колдонмо бузулган сайын диалог көрүнөт"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"ANGLE иштетилген колдонмону тандоо"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Wi-Fi аркылуу чалуу менен мобилдик байланыш оператору аркылуу эмес, айрым Wi‑Fi тармактарын колдонуп чала аласыз."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Чалуулар"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"артыкчылыктуу"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"чалуулар артыкчылыктуу"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"SMS артыкчылыктуу"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"жеткиликсиз"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"SIM-карта жок"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Жеке жөндөөлөр"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Жалпыга ачык тармактарга туташуу"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"тармакка туташуу, интернет, зымсыз, маалымат, wifi, wi-fi, wi fi, уюлдук, мобилдик, байланыш оператору, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Уйку режиминде иштебейт"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Билдирмелердин маанилүүлүгүн баштапкы абалга келтирүү аяктады."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Колдонмолор"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Кооптуу түзмөк билдирүүлөрүңүздү көргөнү жатат. Чоо-жайын көрүү үчүн таптап коюңуз."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Билдирүүлөрдү көрүүгө уруксат берилсинби?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Кооптуу Bluetooth түзмөгү, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], билдирүүлөрүңүздү көргөнү жатат.\n\n[<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] түзмөгүнө буга чейин туташкан эмессиз."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Кооптуу түзмөк байланыштарыңызды жана чалуулар тизмесин көргөнү жатат. Чоо-жайын көрүү үчүн таптап коюңуз."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Байланыштар менен чалуулар тизмесин көрүүгө уруксат берилсинби?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Кооптуу Bluetooth түзмөгү, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], байланыштарыңызды жана чалуулар тизмесин көргөнү жатат. Буга кирүүчү жана чыгуучу чалуулар кирет.\n\n[<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] түзмөгүнө буга чейин туташкан эмессиз."</string>
 </resources>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index b0e4a59..1f97968 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"ທີ່ຢູ່ IPv6"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"ເຄືອຂ່າຍ​ທີ່​ບັນທຶກ​ໄວ້"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"ການສະໝັກໃຊ້"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"ເຄືອຂ່າຍອື່ນໆ"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"ການຕັ້ງຄ່າ IP"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"ບໍ່ສາມາດໃຊ້ການຕັ້ງຄ່າ Wi‑Fi ຂັ້ນສູງກັບຜູ້ໃຊ້ນີ້ໄດ້"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"ບັນທຶກ"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"ລຶບ APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"ເພີ່ມ APN ໃໝ່"</string>
     <string name="menu_save" msgid="6611465355127483100">"ບັນທຶກ"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"ຍົກເລີກ"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"ຍົກເລີກ"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"ແຖບຂໍ້ມູນຊື່ບໍ່ສາມາດປ່ອຍຫວ່າງໄດ້."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN ບໍ່ສາມາດປ່ອຍໃຫ້ຫວ່າງໄດ້."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"ແອັບສາມາດຣີເຊັດໄດ້"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"ຣີເຊັດ Wi-Fi, ມືຖື ແລະ Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"ນີ້ຈະເປັນການຣີເຊັດການຕັ້ງຄ່າເຄືອຂ່າຍທັງໝົດ, ຮວມເຖິງ:\n\n"<li>"Wi‑Fi"</li>\n<li>"ອິນເຕີເນັດມືຖື"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"ລຶບ"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"ລຶບ SIM ທີ່ດາວໂຫລດມາແລ້ວອອກ"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"ເພື່ອດາວໂຫລດ SIM ແທນທີ່, ກະລຸນາຕິດຕໍ່ຜູ້ໃຫ້ບໍລິການຂອງທ່ານ. ນີ້ຈະບໍ່ເປັນການຍົກເລີກແພັກເກດບໍລິການມືຖືໃດໆ."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"ນີ້ຈະບໍ່ເປັນການຍົກເລີກແພັກເກດບໍລິການມືຖືໃດໆ. ເພື່ອດາວໂຫຼດຊິມທົດແທນ, ໃຫ້ຕິດຕໍ່ຫາຜູ້ໃຫ້ບໍລິການຂອງທ່ານ."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"ຣີ​ເຊັດການຕັ້ງຄ່າ"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"ຣີເຊັດການຕັ້ງຄ່າເຄືອຂ່າຍທັງໝົດບໍ? ທ່ານຈະບໍ່ສາມາດຍົກເລີກຄຳສັ່ງນີ້ໄດ້."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"ຣີເຊັດການຕັ້ງຄ່າເຄືອຂ່າຍທັງໝົດ ແລະ ລຶບລ້າງ SIM ທີ່ດາວໂຫລດມາແລ້ວອອກບໍ? ທ່ານບໍ່ສາມາດຍົກເລີກຄຳສັ່ງນີ້ໄດ້."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"ໃຊ້ແທັບເລັດຫຼາຍກວ່າປົກກະຕິ"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"ໃຊ້ອຸປະກອນຫຼາຍກວ່າປົກກະຕິ"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"ແບັດເຕີຣີອາດໝົດໄວກວ່າປົກກະຕິ"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"ກຳລັງຖະໜອມອາຍຸແບັດເຕີຣີ"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"ກຳລັງເພີ່ມປະສິດທິພາບເພື່ອສຸຂະພາບແບັດເຕີຣີ"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"ຈຳກັດແບັດເຕີຣີຊົ່ວຄາວ. ແຕະເພື່ອສຶກສາເພີ່ມເຕີມ."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"ມີການນຳໃຊ້ໂທລະສັບຂອງທ່ານຫຼາຍກວ່າປົກກະຕິ. ແບັດເຕີຣີອາດໝົດໄວກວ່າທີ່ຄາດໄວ້.\n\nແອັບທີ່ໃຊ້ແບັດເຕີຣີຫຼາຍສຸດແມ່ນ:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"ມີການນຳໃຊ້ແທັບເລັດຂອງທ່ານຫຼາຍກວ່າປົກກະຕິ. ແບັດເຕີຣີອາດໝົດໄວກວ່າທີ່ຄາດໄວ້.\n\nແອັບທີ່ໃຊ້ແບັດເຕີຣີຫຼາຍສຸດແມ່ນ:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"ຊຸດຂໍ້ມູນທີ່ສະແດງສູງສຸດ"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"ຣີເຊັດເປັນຄ່າເລີ່ມຕົ້ນ"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"ຣີເຊັດຕົວເລືອກການຕື່ມຂໍ້ມູນນັກພັດທະນາໂດຍອັດຕະໂນມັດແລ້ວ"</string>
+    <string name="location_category" msgid="3496759112306219062">"ສະຖານທີ່"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"ຕົວລະບຸສະຖານທີ່ແຖບສະຖານະ"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"ສະແດງສຳລັບສະຖານທີ່ທັງໝົດ, ຮວມທັງເຄືອຂ່າຍ ແລະ ການເຊື່ອມຕໍ່"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"ບັງຄັບການກວດສອບ GNSS ເຕັມຮູບແບບ"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"ຕິດຕາມກຸ່ມ ແລະ ຄວາມຖີ່ GNSS ທັງໝົດໂດຍບໍ່ມີຮອບຕາມພັນທະ"</string>
     <string name="device_theme" msgid="5027604586494772471">"ຮູບແບບສີສັນອຸປະກອນ"</string>
     <string name="default_theme" msgid="4815428567082263639">"ຄ່າເລີ່ມຕົ້ນ"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"ຊື່ເຄືອຂ່າຍ"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"ຢຸດການແຈ້ງເຕືອນຊົ່ວຄາວເພື່ອໃຫ້ມີສະມາທິ"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"ບໍ່ສາມາດໃຊ້ຄຸນສົມບັດໄດ້"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"ຄຸນສົມບັດນີ້ຖືກປິດໄວ້ແລ້ວເນື່ອງຈາກມັນເຮັດໃຫ້ໂທລະສັບຂອງທ່ານຊ້າ"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"ບັງຄັບການກວດສອບ GNSS ເຕັມຮູບແບບ"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"ຕິດຕາມກຸ່ມ ແລະ ຄວາມຖີ່ GNSS ທັງໝົດໂດຍບໍ່ມີຮອບຕາມພັນທະ"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"ສະແດງກ່ອງຂໍ້ຄວາມການເຮັດວຽກລົ້ມເຫລວທຸກເທື່ອ"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"ສະແດງກ່ອງຂໍ້ຄວາມທຸກເທື່ອທີ່ແອັບເຮັດວຽກລົ້ມເຫລວ"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"ເລືອກແອັບທີ່ໃຊ້ ANGLE"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"ການໂທ Wi‑Fi ຈະເຮັດໃຫ້ທ່ານສາມາດໂທ ແລະ ຮັບສາຍຜ່ານເຄືອຂ່າຍທີ່ບໍ່ແມ່ນຂອງຜູ້ໃຫ້ບໍລິການໄດ້ ເຊັ່ນ: ເຄືອຂ່າຍ Wi‑Fi ບາງບ່ອນ."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"ການໂທ"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"ຕ້ອງການ"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"ຕ້ອງການການໂທ"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"ຕ້ອງການ SMS"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"ບໍ່ມີຂໍ້ມູນ"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"ບໍ່ມີຊິມ"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"ການຕັ້ງຄ່າ"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"ເຊື່ອມຕໍ່ຫາເຄືອຂ່າຍສາທາລະນະ"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"ການເຊື່ອມຕໍ່ເຄືອຂ່າຍ, ອິນເຕີເນັດ, ໄຮ້ສາຍ, ອິນເຕີເນັດມືຖື, wifi, wi-fi, wi fi, ເຄືອຂ່າຍທືຖື, ມືຖື, ຜູ້ໃຫ້ບໍລິການມືຖື, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"ບໍ່ສາມາດໃຊ້ໄດ້ເນື່ອງຈາກເປີດໂໝດເວລານອນຢູ່"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"ຣີເຊັດຄວາມສຳຄັນການແຈ້ງເຕືອນສຳເລັດແລ້ວ."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"ແອັບ"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"ມີອຸປະກອນທີ່ບໍ່ເຊື່ອຖືຕ້ອງການເຂົ້າເຖິງຂໍ້ຄວາມຂອງທ່ານ. ແຕະເພື່ອເບິ່ງລາຍລະອຽດ."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"ອະນຸຍາດການເຂົ້າເຖິງຂໍ້ຄວາມບໍ?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"ອຸປະກອນ Bluetooth ທີ່ບໍ່ເຊື່ອຖື, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], ຕ້ອງການເຂົ້າເຖິງຂໍ້ຄວາມຂອງທ່ານ.\n\nທ່ານບໍ່ເຄີຍເຊື່ອມຕໍ່ຫາ [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] ມາກ່ອນ."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"ມີອຸປະກອນທີ່ບໍ່ເຊື່ອຖືຕ້ອງການເຂົ້າເຖິງລາຍຊື່ຜູ້ຕິດຕໍ່ ແລະ ບັນທຶກການໂທຂອງທ່ານ. ແຕະເພື່ອເບິ່ງລາຍລະອຽດ."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"ອະນຸຍາດການເຂົ້າເຖິງລາຍຊື່ຜູ້ຕິດຕໍ່ ແລະ ບັນທຶກການໂທບໍ?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"ອຸປະກອນ Bluetooth ທີ່ບໍ່ເຊື່ອຖື, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], ຕ້ອງການເຂົ້າເຖິງລາຍຊື່ຜູ້ຕິດຕໍ່ ແລະ ບັນທຶກການໂທຂອງທ່ານ. ນີ້ຮວມເຖິງຂໍ້ມູນກ່ຽວກັບການໂທເຂົ້າ ແລະ ໂທອອກນຳ.\n\nທ່ານບໍ່ເຄີຍເຊື່ອມຕໍ່ຫາ [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] ມາກ່ອນ."</string>
 </resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 068188d..f18d429 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -1062,8 +1062,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"„IPv6“ adresai"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Išsaugoti tinklai"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Prenumeratos"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Kiti tinklai"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP nustatymai"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"„Wi‑Fi“ išplėstiniai nustatymai nepasiekiami šiam naudotojui"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Išsaugoti"</string>
@@ -1639,7 +1638,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Ištrinti APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"Naujas APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Išsaugoti"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Atmesti"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Atšaukti"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Pavadinimo laukas negali būti tuščias."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN negali būti tuščias."</string>
@@ -1654,8 +1653,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Programas galima nustatyti iš naujo"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Iš naujo nustatyti „Wi-Fi“, mobiliųjų duomenų ir „Bluetooth“ nustatymus"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Bus iš naujo nustatyti visi tinklo nustatymai, įskaitant:\n\n"<li>"„Wi‑Fi“;"</li>\n<li>"mobiliojo ryšio duomenis;"</li>\n<li>"„Bluetooth“."</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Ištrinti"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Ištrinti atsisiųstas SIM kort."</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Jei norite atsisiųsti pakaitinių SIM kortelių, susisiekite su operatoriumi. Tai atlikus mobiliojo ryšio paslaugų planai nebus atšaukti."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Šiuo veiksmu neatšauksite jokio mobiliųjų paslaugų plano. Jei norite atsisiųsti pakaitinių SIM kortelių, susisiekite su operatoriumi."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Nustatyti iš naujo"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Iš naujo nustatyti visus tinklo nustatymus? Negalite anuliuoti šio veiksmo."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Iš naujo nustatyti visus tinklo nustatymus ir ištrinti atsisiųstas SIM korteles? Negalite anuliuoti šio veiksmo."</string>
@@ -2518,7 +2518,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Planšetinis kompiuteris buvo naudojamas daugiau nei įprasta"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Įrenginys buvo naudojamas daugiau nei įprasta"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Akumuliatoriaus energija gali išsekti greičiau nei įprasta"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Akumuliatoriaus apsauga"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Optimizuojama siekiant apsaugoti akumuliatorių"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Akumuliatorius laikinai apribotas. Palieskite, kad sužinotumėte daugiau."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Telefonas buvo naudojamas daugiau nei įprastai. Akumuliatoriaus energija gali išsekti greičiau, nei tikėjotės.\n\nDaugiausiai akumuliatoriaus energijos suvartojančios programos:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Planšetinis kompiuteris buvo naudojamas daugiau nei įprastai. Akumuliatoriaus energija gali išsekti greičiau, nei tikėjotės.\n\nDaugiausiai akumuliatoriaus energijos suvartojančios programos:"</string>
@@ -4811,6 +4811,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Maks. matomų duomenų rinkinių"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Nustatyti numatytąsias vertes iš naujo"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Automatinio pildymo kūrėjo parinktys nustatytos iš naujo"</string>
+    <string name="location_category" msgid="3496759112306219062">"Vieta"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Būsenos juostos vietos indikatorius"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Rodyti visoms vietoms, įskaitant tinklą ir ryšį"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Priversti vykdyti visus GNSS matavimus"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Stebėti visas GNSS konferencijas ir visus dažnius netaikant darbo ciklų"</string>
     <string name="device_theme" msgid="5027604586494772471">"Įrenginio tema"</string>
     <string name="default_theme" msgid="4815428567082263639">"Numatytoji"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Tinklo pavadinimas"</string>
@@ -4827,8 +4832,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Pristabdyti pranešimus, kad neblaškytų dėmesio"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Funkcija negalima"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Ši funkcija buvo išjungta, nes, kai ji įjungta, telefonas veikia lėčiau"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Priversti vykdyti visus GNSS matavimus"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Stebėti visas GNSS konferencijas ir visus dažnius netaikant darbo ciklų"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Visada rodyti strigčių dialogo langą"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Rodyti dialogo langą kiekvieną kartą, kai programa užstringa"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Pasirinkti programą, kurioje įgalinta ANGLE"</string>
@@ -5218,6 +5221,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Naudodami „Wi-Fi“ skambinimą galite atlikti ir gauti skambučius ne operatoriaus tinklais, pvz., kai kuriais „Wi‑Fi“ tinklais."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Skambučiai"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"pageidaujama"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"pageidaujami skambučiai"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"pageidaujami SMS"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"nepasiekiama"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Nėra SIM kortelės"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Nuostatos"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Prisijungti prie viešųjų tinklų"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"tinklo ryšys, internetas, belaidis ryšys, duomenys, „Wifi“, „Wi-Fi“, „Wi Fi“, mobilusis ryšys, mobilusis, mobiliojo ryšio operatorius, 4G, 3G, 2G, LTE"</string>
@@ -5226,4 +5234,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Nepasiekiama, nes įjungtas laiko eiti miegoti režimas"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Pranešimų svarba nustatyta iš naujo."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Programos"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Nepatikimas įrenginys nori pasiekti jūsų pranešimus. Palieskite, jei reikia išsamios informacijos."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Leisti pasiekti pranešimus?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Nepatikimas „Bluetooth“ įrenginys „<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>“ nori pasiekti jūsų pranešimus.\n\nPrie „<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>“ dar niekada nebuvote prisijungę."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Nepatikimas įrenginys nori pasiekti jūsų kontaktus ir skambučių žurnalą. Palieskite, jei reikia išsamios informacijos."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Leisti pasiekti kontaktus ir skambučių žurnalą?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Nepatikimas „Bluetooth“ įrenginys „<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>“ nori pasiekti jūsų kontaktus ir skambučių žurnalą. Tai apima duomenis apie gaunamuosius ir siunčiamuosius skambučius.\n\nPrie „<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>“ dar niekada nebuvote prisijungę."</string>
 </resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 58f1423..be467ed 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -1042,8 +1042,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 adreses"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Saglabātie tīkli"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Abonementi"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Citi tīkli"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP iestatījumi"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Wi‑Fi papildu iestatījumi šim lietotājam nav pieejami."</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Saglabāt"</string>
@@ -1618,7 +1617,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Dzēst APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"Jauns APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Saglabāt"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Atmest"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Atcelt"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Lauks Nosaukums nedrīkst būt tukšs."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN nedrīkst būt tukšs."</string>
@@ -1633,8 +1632,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Lietotnes var atiestatīt"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Atiestatīt Wi-Fi, mobilo datu un Bluetooth iestatījumus"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Tādējādi tiks atiestatīti visi tīkla iestatījumi, tostarp:\n\n"<li>"Wi‑Fi;"</li>\n<li>"mobilie dati;"</li>\n<li>"Bluetooth."</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Dzēst"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Dzēst lejupielādētās SIM k."</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Lai lejupielādētu nomaiņas SIM kartes, sazinieties ar mobilo sakaru operatoru. Ar šo darbību netiks anulēti mobilo sakaru pakalpojumu plāni."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Ar šo darbību netiks anulēti mobilo sakaru pakalpojumu plāni. Lai lejupielādētu nomaiņas SIM kartes, sazinieties ar mobilo sakaru operatoru."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Atiestatīt iestatījumus"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Vai vēlaties atiestatīt visus tīkla iestatījumus? Šo darbību nevar atsaukt."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Vai vēlaties atiestatīt visus tīkla iestatījumus un izdzēst lejupielādētās SIM kartes? Šo darbību nevar atsaukt."</string>
@@ -2487,7 +2487,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Planšetdators tika izmantots vairāk nekā parasti."</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Ierīce tika izmantota vairāk nekā parasti."</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Akumulators var izlādēties ātrāk nekā parasti"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Akumulatora darbības laika paildzināšana"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Akumulatora darbības optimizēšana"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Akumulatora uzlādes līmenis ir īslaicīgi ierobežots. Pieskarieties, lai uzzinātu vairāk."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Jūsu tālrunis tika izmantots vairāk nekā parasti. Akumulators var izlādēties ātrāk, nekā paredzēts.\n\nLietotnes, kas izmanto visvairāk akumulatora enerģijas:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Jūsu planšetdators tika izmantots vairāk nekā parasti. Akumulators var izlādēties ātrāk, nekā paredzēts.\n\nLietotnes, kas izmanto visvairāk akumulatora enerģijas:"</string>
@@ -4731,6 +4731,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Maksimālais redzamo datu kopu skaits"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Atiestatīt uz noklusējuma vērtībām"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Izstrādātājiem paredzēto opciju automātiskā aizpilde ir atiestatīta."</string>
+    <string name="location_category" msgid="3496759112306219062">"Atrašanās vieta"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Atrašanās vietas indikators statusa joslā"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Rādīt vienmēr, kad tiek noteikta atrašanās vieta, tostarp tad, ja tā var tikt atklāta, izmantojot tīklu vai savienojamību"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Veikt pilnus GNSS mērījumus"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Izsekot visas GNSS konstelācijas un frekvences bez darba cikliem"</string>
     <string name="device_theme" msgid="5027604586494772471">"Ierīces motīvs"</string>
     <string name="default_theme" msgid="4815428567082263639">"Noklusējums"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Tīkla nosaukums"</string>
@@ -4747,8 +4752,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Pārtraukt paziņojumus, lai ilglaicīgi koncentrētos"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Funkcija nav pieejama"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Šī funkcija ir izslēgta, jo tā palēnina jūsu tālruņa darbību."</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Veikt pilnus GNSS mērījumus"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Izsekot visas GNSS konstelācijas un frekvences bez darba cikliem"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Vienmēr rādīt avārijas dialoglodziņu"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Rādīt dialoglodziņu katru reizi, kad lietotne avarē"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Atlasiet lietotni, kam ANGLE ir iespējots"</string>
@@ -5135,6 +5138,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Izmantojot Wi-Fi zvanus, varat veikt un saņemt zvanus tīklos, ko nenodrošina mobilo sakaru operatori, piemēram, dažos Wi-Fi tīklos."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Zvani"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"Īsziņas"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"vēlamie"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"vēlamie zvani"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"vēlamās īsziņas"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"nav pieejami"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Nav SIM kartes"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Preferences"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Izveidot savienojumu ar publiskiem tīkliem"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"tīkla savienojums, internets, bezvadu, dati, Wi-Fi, mobilais tīkls, mobilie sakari, mobilo sakaru operators, 4G, 3G, 2G, LTE"</string>
@@ -5143,4 +5151,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Šī preference nav pieejama, jo ir ieslēgts naktsmiera režīms."</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Paziņojumu svarīguma līmeņa atiestatīšana ir pabeigta."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Lietotnes"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Ierīce, kas nav saglabāta uzticamo ierīču sarakstā, pieprasa atļauju piekļūt jūsu ziņojumiem. Pieskarieties, lai skatītu detalizētu informāciju."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Vai atļaujat piekļūt ziņojumiem?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Bluetooth ierīce [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], kas nav saglabāta uzticamo ierīču sarakstā, pieprasa atļauju piekļūt jūsu ziņojumiem.\n\nJūs neesat iepriekš veidojis savienojumu ar ierīci [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Ierīce, kas nav saglabāta uzticamo ierīču sarakstā, pieprasa atļauju piekļūt jūsu kontaktpersonu datiem un zvanu žurnālam. Pieskarieties, lai skatītu detalizētu informāciju."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Vai atļaujat piekļūt kontaktpersonu datiem un zvanu žurnālam?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Bluetooth ierīce [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], kas nav saglabāta uzticamo ierīču sarakstā, pieprasa atļauju piekļūt jūsu kontaktpersonu datiem un zvanu žurnālam. Tas attiecas arī uz datiem par ienākošajiem un izejošajiem zvaniem.\n\nJūs neesat iepriekš veidojis savienojumu ar ierīci [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
 </resources>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index dacc056..9c58cde 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6-адреси"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Зачувани мрежи"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Претплати"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Други мрежи"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"Поставки за IP"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Напредни поставки за Wi‑Fi не се достапни за корисников"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Зачувај"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Избриши APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"Нов APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Зачувај"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Отфрли"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Откажи"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Полето за име не може да биде празно."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN не може да биде празна."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Апликациите може да се ресетираат"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Ресетирај Wi-Fi, мобилен интернет и Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Ова ќе ги ресетира сите мрежни поставки, вклучувајќи:\n\n"<li>"Wi‑Fi"</li>\n<li>"Мобилен интернет"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Избриши"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Избриши преземени SIM-картички"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"За да преземете SIM-картички за замена, контактирајте со операторот. Со ова не се откажуваат пакети за мобилни услуги."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Ова нема да ги откаже пакетите за мобилни услуги. За да преземете SIM-картички за замена, контактирајте со операторот."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Ресетирај поставки"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Да се ресетираат сите мрежни поставки? Ова дејство не може да се врати."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Да се ресетираат сите мрежни поставки и да се избришат преземените SIM-картички? Ова дејство не може да се врати."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Таблетот се користи повеќе од вообичаено"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Уредот се користи повеќе од вообичаено"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Батеријата може да се потроши порано од вообичаено"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Се задржува состојбата на батеријата"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Се оптимизира за состојба на батеријата"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Батеријата е привремено ограничена. Допрете за да дознаете повеќе."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Телефонот сте го користеле повеќе од вообичаено. Батеријата може да се потроши порано од очекуваното.\n\nАпликации што најмногу ја користеле батеријата:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Таблетот сте го користеле повеќе од вообичаено. Батеријата може да се потроши порано од очекуваното.\n\nАпликации што најмногу ја користеле батеријата:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Максимум видливи збирови на податоци"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Ресетирај на стандардните вредности"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Опциите за програмери за автоматско пополнување се ресетирани"</string>
+    <string name="location_category" msgid="3496759112306219062">"Локација"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Индикатор за локација на статусната лента"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Прикажи за сите локации, вклучително и за мрежата и поврзливоста"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Присилување целосни мерења со GNSS"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Следете ги сите констелации и фреквенции со GNSS без работен циклус"</string>
     <string name="device_theme" msgid="5027604586494772471">"Тема на уредот"</string>
     <string name="default_theme" msgid="4815428567082263639">"Стандардно"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Име на мрежата"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Паузирајте ги известувањата за да останете фокусирани"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Функцијата не е достапна"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Функцијава е исклучена бидејќи го успорува телефонот"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Присилување целосни мерења со GNSS"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Следете ги сите констелации и фреквенции со GNSS без работен циклус"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Секогаш прикажувај дијалог на пад"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Прикажи дијалог при секој пад на апликација"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Избери апликација овозможена за ANGLE"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Функцијата „Повици преку Wi-Fi“ ви овозможува да упатувате и примате повици преку мрежи што не се на операторот, на пр., некои Wi‑Fi мрежи."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Повици"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"претпочитано"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"претпочитани се повици"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"претпочитана е SMS"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"недостапно"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Нема SIM"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Поставки"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Поврзувајте се на јавни мрежи"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"мрежна врска, интернет, безжичен, мобилен, Wi-Fi, мобилна, мобилен оператор, 4G, 3G, 2G, LTE"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Недостапно бидејќи е вклучен „Режимот за спиење“"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Ресетирањето на важноста на известувањата е завршено."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Апликации"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Недоверлив уред сака да пристапи до вашите пораки. Допрете за детали."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Да се дозволи пристап до пораките?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Недоверлив уред со Bluetooth, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], сака да пристапи до вашите пораки.\n\nДосега не сте се поврзале со [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Недоверлив уред сака да пристапи до вашите контакти и евиденцијата на повици. Допрете за детали."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Да се дозволи пристап до контактите и евиденцијата на повици?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Недоверлив уред со Bluetooth, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], сака да пристапи до вашите контакти и евиденцијата на повици. Ова ги опфаќа податоците за дојдовните и појдовните повици.\n\nДосега не сте се поврзале со [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
 </resources>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index f5ac477..78d8f7a 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 വിലാസങ്ങൾ"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"സംരക്ഷിച്ച നെറ്റ്‌വർക്ക്"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"സബ്‌സ്‌ക്രിപ്‌ഷനുകൾ"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"മറ്റ് നെറ്റ്‌വർക്കുകൾ"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP ക്രമീകരണങ്ങൾ"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"ഈ ഉപയോക്താവിന് വൈഫൈ വിപുല ക്രമീകരണം ലഭ്യമല്ല"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"സംരക്ഷിക്കുക"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"APN ഇല്ലാതാക്കുക"</string>
     <string name="menu_new" msgid="6571230342655509006">"പുതിയ APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"സംരക്ഷിക്കുക"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"നിരസിക്കുക"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"റദ്ദാക്കുക"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"പേരിന്റെ ഫീൽഡ് ശൂന്യമായിരിക്കരുത്."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN ശൂന്യമായിരിക്കരുത്."</string>
@@ -1612,8 +1611,11 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"ആപ്പുകൾ റീസെറ്റ് ചെയ്യാനാകും"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"വൈഫൈ, മൊബൈൽ, Bluetooth റീസെറ്റ് ചെയ്യുക"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"ഇനിപ്പറയുന്നവ ഉൾപ്പെടെ എല്ലാ നെറ്റ്‍വർക്ക് ക്രമീകരണങ്ങളും ഇത് റീസെറ്റ് ചെയ്യും:\n\n"<li>"വൈഫൈ"</li>\n<li>"മൊബൈൽ ഡാറ്റ"</li>\n<li>"Bluetooth"</li></string>
+    <!-- no translation found for erase_euicc_data_button (728078969563311737) -->
+    <skip />
     <string name="reset_esim_title" msgid="6152167073280852849">"ഡൗൺലോഡ് ചെയ്‌ത SIM-കൾ മായ്ക്കൂ"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"പകരം വയ്ക്കാനുള്ള SIM-കൾ ഡൗൺലോഡ് ചെയ്യാൻ, നിങ്ങളുടെ സേവനദാതാവിനെ ബന്ധപ്പെടുക. ഇത് മൊബൈൽ സേവന പ്ലാനുകളൊന്നും റദ്ദാക്കില്ല."</string>
+    <!-- no translation found for reset_esim_desc (3662444090563399131) -->
+    <skip />
     <string name="reset_network_button_text" msgid="2281476496459610071">"ക്രമീകരണം റീസെറ്റ് ചെയ്യുക"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"എല്ലാ നെറ്റ്‌വർക്കിംഗ് ക്രമീകരണവും പുനഃസജ്ജീകരിക്കണോ? നിങ്ങൾക്ക് ഈ പ്രവർത്തനം പഴയപടിയാക്കാനാവില്ല."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"എല്ലാ നെറ്റ്‌വർക്കിംഗ് ക്രമീകരണവും റീസെറ്റ് ചെയ്യുകയും ഡൗൺലോഡ് ചെയ്‌ത സിമ്മുകൾ മായ്ക്കുകയും ചെയ്യണോ? ഇത് പഴയപടിയാക്കാനാകില്ല."</string>
@@ -2456,7 +2458,8 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"ടാബ്‌ലെറ്റ്, സാധാരണയിൽ കൂടുതൽ ഉപയോഗിച്ചു"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"ഉപകരണം, സാധാരണയിൽ കൂടുതൽ ഉപയോഗിച്ചു"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"സാധാരണയിലും നേരത്തെ ബാറ്ററി ചാർജ് തീർന്നേക്കാം"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"ബാറ്ററി നില സംരക്ഷിക്കുന്നു"</string>
+    <!-- no translation found for battery_tip_limited_temporarily_title (7152799456221596915) -->
+    <skip />
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"ബാറ്ററി താൽക്കാലം പരിമിതപ്പെടുത്തി. കൂടുതലറിയാൻ ടാപ്പ് ചെയ്യുക."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"നിങ്ങളുടെ ഫോൺ സാധാരണയിൽ കൂടുതൽ ബാറ്ററി ഉപയോഗിച്ചു. നിങ്ങളുടെ ബാറ്ററിയുടെ ചാർജ് പ്രതീക്ഷിച്ചതിനേക്കാൾ വേഗത്തിൽ തീർന്നേക്കാം\n\nബാറ്ററി ഉപയോഗമനുസരിച്ചുള്ള മുൻനിര ആപ്പുകൾ ഇനിപ്പറയുന്നു:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"നിങ്ങളുടെ ടാബ്‌ലെറ്റ് സാധാരണയിൽ കൂടുതൽ ബാറ്ററി ഉപയോഗിച്ചു. നിങ്ങളുടെ ബാറ്ററിയുടെ ചാർജ് പ്രതീക്ഷിച്ചതിനേക്കാൾ വേഗത്തിൽ തീർന്നേക്കാം\n\nബാറ്ററി ഉപയോഗമനുസരിച്ചുള്ള മുൻനിര ആപ്പുകൾ ഇനിപ്പറയുന്നു:"</string>
@@ -4651,6 +4654,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"കാണാനാവുന്ന പരമാവധി ഡാറ്റാസെറ്റുകൾ"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"ഡിഫോൾട്ട് മൂല്യങ്ങളിലേക്ക് പുനഃക്രമീകരിക്കുക"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"സ്വമേധയാ പൂരിപ്പിക്കുന്ന ഡെവലപ്പർ ഓപ്‌ഷനുകൾ പുനഃക്രമീകരിച്ചു"</string>
+    <string name="location_category" msgid="3496759112306219062">"ലൊക്കേഷൻ"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"സ്‌റ്റാറ്റസ് ബാർ ലൊക്കേഷൻ ഇൻഡിക്കേറ്റർ"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"നെറ്റ്‌വർക്കും കണക്റ്റിവിറ്റിയും ഉൾപ്പെടെ, എല്ലാ ലൊക്കേഷനുകൾക്കും കാണിക്കുക"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"പൂർണ്ണ GNSS അളവുകൾ നടപ്പിലാക്കുക"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"നോ ഡ്യൂട്ടി സൈക്ലിംഗ് ഉപയോഗിച്ച് മുഴുവൻ GNSS കോൺസ്‌റ്റലേഷനുകളും ആവൃത്തികളും ട്രാക്ക് ചെയ്യൂ"</string>
     <string name="device_theme" msgid="5027604586494772471">"ഉപകരണത്തിന്റെ തീം"</string>
     <string name="default_theme" msgid="4815428567082263639">"ഡിഫോൾട്ട്"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"നെറ്റ്‌വർക്കിന്‍റെ പേര്"</string>
@@ -4667,8 +4675,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"ഫോക്കസ് ചെയ്‌ത നിലയിൽ തുടരാൻ, അറിയിപ്പുകൾ താൽക്കാലികമായി നിർത്തുക"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"ഫീച്ചർ ലഭ്യമല്ല"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"നിങ്ങളുടെ ഫോണിൻ്റെ വേഗത കുറയ്‌ക്കുന്നതിനാൽ ഈ ഫീച്ചർ ഓഫാക്കി"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"പൂർണ്ണ GNSS അളവുകൾ നടപ്പിലാക്കുക"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"നോ ഡ്യൂട്ടി സൈക്ലിംഗ് ഉപയോഗിച്ച് മുഴുവൻ GNSS കോൺസ്‌റ്റലേഷനുകളും ആവൃത്തികളും ട്രാക്ക് ചെയ്യൂ"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"എപ്പോഴും ക്രാഷ് ഡയലോഗ് കാണിക്കുക"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"ആപ്പ് ക്രാഷാകുമ്പോഴെല്ലാം ഡയലോഗ് കാണിക്കുക"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"ANGLE പ്രവർത്തനക്ഷമമാക്കിയ ആപ്പ് തിരഞ്ഞെടുക്കുക"</string>
@@ -5052,6 +5058,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"ചില വൈ-ഫൈ നെറ്റ്‌വർക്കുകൾ പോലുള്ള കാരിയർ ഇതര നെറ്റ്‌വർക്കുകളിലൂടെ കോളുകൾ വിളിക്കാനും സ്വീകരിക്കാനും വൈഫൈ കോളിംഗ് നിങ്ങളെ അനുവദിക്കുന്നു."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"കോളുകൾ"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"തിരഞ്ഞെടുത്തത്"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"തിരഞ്ഞെടുത്ത കോളുകൾ"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"തിരഞ്ഞെടുത്ത SMS"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"ലഭ്യമല്ല"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"സിം ഇല്ല"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"മുൻഗണനകൾ"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"പൊതു നെറ്റ്‌വർക്കിലേക്ക് കണക്റ്റ് ചെയ്യുക"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"നെറ്റ്‌വർക്ക് കണക്ഷൻ, ഇന്‍റര്‍നെറ്റ്, വയർലെസ്, ഡാറ്റ, വൈഫൈ, വൈഫൈ, വൈഫൈ, സെല്ലുലാർ, മൊബൈൽ, സെൽ കാരിയർ, 4g, 3g, 2g, LTE"</string>
@@ -5060,4 +5071,16 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"ഉറക്ക സമയ മോഡ് ഓണായതിനാൽ ലഭ്യമല്ല"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"അറിയിപ്പുകളുടെ പ്രാധാന്യം റീസെറ്റ് ചെയ്യുന്നത് പൂർത്തിയാക്കി."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"ആപ്പുകൾ"</string>
+    <!-- no translation found for bluetooth_message_access_notification_content (2986108412562309009) -->
+    <skip />
+    <!-- no translation found for bluetooth_message_access_dialog_title (9009836130395061579) -->
+    <skip />
+    <!-- no translation found for bluetooth_message_access_dialog_content (6004506637437582983) -->
+    <skip />
+    <!-- no translation found for bluetooth_phonebook_access_notification_content (4280361621526852063) -->
+    <skip />
+    <!-- no translation found for bluetooth_phonebook_access_dialog_title (7624607995928968721) -->
+    <skip />
+    <!-- no translation found for bluetooth_phonebook_access_dialog_content (2235876209172857819) -->
+    <skip />
 </resources>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index 5bc2861..ffae982 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 хаяг"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Хадгалсан сүлжээ"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Захиалга"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Бусад сүлжээ"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP тохиргоо"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Энэ хэрэглэгчид Wi-Fi дэлгэрэнгүй тохиргоо боломжгүй байна"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Хадгалах"</string>
@@ -1178,10 +1177,10 @@
     <string name="color_mode_option_automatic" msgid="2281217686509980870">"Дасан зохицох"</string>
     <string name="color_mode_summary_natural" msgid="8298840714001791628">"Зөвхөн оновчтой өнгийг ашиглах"</string>
     <string name="color_mode_summary_automatic" msgid="8157885594041700275">"Тод болон оновчтой өнгө хооронд тохируулах"</string>
-    <string name="accelerometer_summary_on" product="tablet" msgid="6413384391658481700">"Таблетыг эргүүлбэл харагдацыг автоматаар эргүүлэх"</string>
-    <string name="accelerometer_summary_on" product="default" msgid="7117139542131700779">"Утсыг эргүүлбэл харагдацыг автоматаар эргүүлэх"</string>
-    <string name="accelerometer_summary_off" product="tablet" msgid="3747370091309939684">"Таблетыг эргүүлбэл харагдацыг автоматаар эргүүлэх"</string>
-    <string name="accelerometer_summary_off" product="default" msgid="4451125241783158763">"Утсыг эргүүлбэл харагдацыг автоматаар эргүүлэх"</string>
+    <string name="accelerometer_summary_on" product="tablet" msgid="6413384391658481700">"Таблетыг эргүүлбэл харагдцыг автоматаар эргүүлэх"</string>
+    <string name="accelerometer_summary_on" product="default" msgid="7117139542131700779">"Утсыг эргүүлбэл харагдцыг автоматаар эргүүлэх"</string>
+    <string name="accelerometer_summary_off" product="tablet" msgid="3747370091309939684">"Таблетыг эргүүлбэл харагдцыг автоматаар эргүүлэх"</string>
+    <string name="accelerometer_summary_off" product="default" msgid="4451125241783158763">"Утсыг эргүүлбэл харагдцыг автоматаар эргүүлэх"</string>
     <string name="brightness" msgid="6216871641021779698">"Гэрэлтүүлгийн түвшин"</string>
     <string name="brightness_title" msgid="5457874893085305155">"Тодролт"</string>
     <string name="brightness_summary" msgid="6309641759293018049">"Дэлгэцийн тодролыг тохируулах"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"APN устгах"</string>
     <string name="menu_new" msgid="6571230342655509006">"Шинэ APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Хадгалах"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Цуцлах"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Цуцлах"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Нэр оруулах талбар хоосон байж болохгүй."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN хоосон байж болохгүй."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Аппуудыг шинэчлэх боломжтой"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Wi-Fi, мобайл &amp; Bluetooth-г шинэчлэх"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Энэ нь дараах бүх сүлжээний тохиргоог шинэчилнэ: \n\n"<li>"Wi‑Fi"</li>\n<li>"мобайл дата"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Устгах"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Татаж авсан СИМ-үүдийг устгах"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Солих СИМ-г татаж авахын тулд оператор компанитайгаа холбогдоно уу. Энэ нь мобайл үйлчилгээний ямар ч багцыг цуцлахгүй."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Энэ нь мобайл үйлчилгээний аливаа төлөвлөгөөг цуцлахгүй. Орлуулах SIM татахын тулд оператор компанитайгаа холбогдоно уу."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Дахин тохируулах"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Сүлжээний бүх тохиргоог шинэчлэх үү? Та энэ үйлдлийг буцаах боломжгүй."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Сүлжээний бүх тохиргоог шинэчилж, татсан СИМ-үүдийг устгах уу? Та энэ үйлдлийг буцаах боломжгүй."</string>
@@ -2166,7 +2166,7 @@
     <string name="accessibility_screen_magnification_short_summary" msgid="2207048420669939150">"Томруулахын тулд 3 удаа дар"</string>
     <string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Томруулахын тулд товчлуурыг товшино уу"</string>
     <string name="accessibility_screen_magnification_summary" msgid="2023126829553044999">"Контентыг илүү тодорхой үзүүлэхийн тулд дэлгэц дээр хурдан томруулна уу.&lt;br/&gt;&lt;br/&gt; &lt;b&gt;Томруулахын тулд:&lt;/b&gt;&lt;br/&gt; 1. Томруулах онцлогийг эхлүүлэхийн тулд товчлол ашиглана уу&lt;br/&gt; 2. Дэлгэцийг товшино уу&lt;br/&gt; 3. Дэлгэц дээр шилжихийн тулд 2 хуруугаар чирнэ үү&lt;br/&gt; 4. Томруулалтыг тохируулахын тулд 2 хуруугаар чимхэнэ үү&lt;br/&gt; 5. Томруулах онцлогийг зогсоохын тулд товчлол ашиглана уу&lt;br/&gt;&lt;br/&gt; &lt;b&gt;Түр хугацаанд томруулахын тулд:&lt;/b&gt;&lt;br/&gt; 1. Томруулах онцлогийг эхлүүлэхийн тулд товчлол ашиглана уу&lt;br/&gt; 2. Дэлгэцийн аль нэг хэсэгт удаан дарна уу&lt;br/&gt; 3. Дэлгэц дээр шилжихийн тулд хуруугаар чирнэ үү&lt;br/&gt; 4. Томруулах онцлогийг зогсоохын тулд хуруугаа өргөнө үү"</string>
-    <string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Томруулах сонголт асаалттай үед та дэлгэцээ томруулж болно.\n\n"<b>"Томруулахын тулд "</b>" томруулах сонголтыг эхлүүлж, дэлгэцийн аль нэг хэсгийг товшино уу.\n"<ul><li>"Гүйлгэхийн тулд 2 эсвэл түүнээс дээш хуруугаараа чирнэ үү"</li>\n<li>"Томруулах хэмжээг тохируулахын тулд 2 эсвэл түүнээс дээш хуруугаараа чимхэнэ үү"</li></ul>\n\n<b>"Түр хугацаанд томруулахын тулд "</b>" томруулах сонголтыг эхлүүлээд, дэлгэцийн аль нэг хэсэг дээр удаан дарна уу.\n"<ul><li>"Дэлгэцийн эргэн тойронд очихын тулд чирнэ үү"</li>\n<li>"Жижигрүүлэхийн тулд хуруугаа авна уу"</li></ul>\n\n"Та гар эсвэл навигацийн самбарт томруулах боломжгүй."</string>
+    <string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Томруулах сонголт асаалттай үед та дэлгэцээ томруулж болно.\n\n"<b>"Томруулахын тулд "</b>" томруулах сонголтыг эхлүүлж, дэлгэцийн аль нэг хэсгийг товшино уу.\n"<ul><li>"Гүйлгэхийн тулд 2 эсвэл түүнээс дээш хуруугаараа чирнэ үү"</li>\n<li>"Томруулах хэмжээг тохируулахын тулд 2 эсвэл түүнээс дээш хуруугаараа чимхэнэ үү"</li></ul>\n\n<b>"Түр хугацаанд томруулахын тулд "</b>" томруулах сонголтыг эхлүүлээд, дэлгэцийн аль нэг хэсэг дээр удаан дарна уу.\n"<ul><li>"Дэлгэцийн эргэн тойронд очихын тулд чирнэ үү"</li>\n<li>"Жижигрүүлэхийн тулд хуруугаа авна уу"</li></ul>\n\n"Та гар эсвэл навигацын самбарт томруулах боломжгүй."</string>
     <string name="accessibility_tutorial_pager" msgid="8461939455728454061">"<xliff:g id="NUM_PAGES">%2$d</xliff:g>-н <xliff:g id="CURRENT_PAGE">%1$d</xliff:g>-р хуудас"</string>
     <string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Нээхийн тулд хандалтын товчлуурыг ашиглах"</string>
     <string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Нээхийн тулд дууны түвшний түлхүүрүүдийг удаан дар"</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Таблетыг ердийнхөөс их хэмжээгээр ашигласан"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Төхөөрөмжийг ердийнхөөс их хэмжээгээр ашигласан"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Батарей ердийн үеийнхээс хурдан дуусаж болзошгүй"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Батарей барилтыг хадгалах"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Батарейн барилтыг оновчилж байна"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Батарейг түр хугацаанд хязгаарласан. Нэмэлт мэдээлэл авахын тулд товшино уу."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Таны утсыг ердийн үеийнхээс их хэмжээгээр ашигласан байна. Таны батарей тооцоолж байснаас хурдан дуусаж болзошгүй.\n\nБатарейг хамгийн их ашигласан аппууд:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Таны таблетыг ердийн үеийнхээс их хэмжээгээр ашигласан байна. Таны батарей тооцоолж байснаас хурдан дуусаж болзошгүй.\n\nБатарейг хамгийн их ашигласан аппууд:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Харагдах өгөгдлийн багцийн дээд хэмжээ"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Өгөгдмөл утга руу шинэчлэх"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Хөгжүүлэгчийн тохиргоог автоматаар бөглөх хэсгийг шинэчилсэн"</string>
+    <string name="location_category" msgid="3496759112306219062">"Байршил"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Статус самбарын байршлын заалт"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Сүлжээ болон холболтыг оруулаад бүх байршлыг харуулна"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Бүтэн GNSS хэмжилтийг хүчлэх"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Бүх GNSS орд болон давтамжийг давтамжийн түвшингүйгээр шинжлэх"</string>
     <string name="device_theme" msgid="5027604586494772471">"Төхөөрөмжийн загвар"</string>
     <string name="default_theme" msgid="4815428567082263639">"Өгөгдмөл"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Сүлжээний нэр"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Төвлөрсөн хэвэрэ байхын тулд мэдэгдлийг түр зогсоох"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Онцлог боломжгүй байна"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Энэ онцлог таны утсыг удаашруулж буй тул үүнийг унтраасан"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Бүтэн GNSS хэмжилтийг хүчлэх"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Бүх GNSS орд болон давтамжийг давтамжийн түвшингүйгээр шинжлэх"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Гэмтлийн харилцах цонхыг тогтмол харуулах"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Харилцах цонхыг апп гэмтэх бүрд харуулах"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"ӨНЦӨГ идэвхжүүлсэн аппыг сонгох"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Wi-Fi дуудлага нь танд зарим Wi-Fi сүлжээ гэх мэт оператор компанийн бус сүлжээгээр дуудлага хийх болон хүлээн авах боломжийг олгодог."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Дуудлага"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"сонгосон"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"дуудлагыг сонгосон"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"SMS-г сонгосон"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"боломжгүй"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"SIM байхгүй"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Сонголт"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Олон нийтийн Wi-Fi сүлжээнд холбогдох"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"сүлжээний холболт, интернэт, утасгүй интернэт, дата, wifi, wi-fi, wi fi, үүрэн холбоо, мобайл, үүрэн холбооны оператор, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Унтлагын цагийн горим асаалттай байгаа тул боломжгүй"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Мэдэгдлийн ач холбогдлыг шинэчилж дууссан."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Аппууд"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Итгэмжлэгдээгүй төхөөрөмж таны мессежид хандахыг хүсэж байна. Дэлгэрэнгүйг харахын тулд товшино уу."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Мессежид хандахыг зөвшөөрөх үү?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Итгэмжлэгдээгүй Bluetooth төхөөрөмж болох [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>] таны мессежид хандахыг хүсэж байна.\n\nТа өмнө нь [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]-д холбогдож байгаагүй."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Итгэмжлэгдээгүй төхөөрөмж таны харилцагчид болон дуудлагын жагсаалтад хандахыг хүсэж байна. Дэлгэрэнгүйг харахын тулд товшино уу."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Харилцагчид болон дуудлагын жагсаалтад хандахыг зөвшөөрөх үү?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Итгэмжлэгдээгүй Bluetooth төхөөрөмж болох [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>] таны харилцагчид болон дуудлагын жагсаалтад хандахыг хүсэж байна. Үүнд ирж буй болон залгасан дуудлагын талаарх өгөгдөл багтана.\n\nТа өмнө нь [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]-д холбогдож байгаагүй."</string>
 </resources>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index 0c3174f..fdd5bac 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 अ‍ॅड्रेस"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"सेव्ह केलेली नेटवर्क"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"सदस्यत्वे"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"इतर नेटवर्क"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP सेटिंग्ज"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"वाय‑फाय प्रगत सेटिंग्ज या वापरकर्त्यासाठी उपलब्ध नाहीत"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"सेव्ह करा"</string>
@@ -1598,7 +1597,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"APN हटवा"</string>
     <string name="menu_new" msgid="6571230342655509006">"नवीन APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"सेव्ह करा"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"टाकून द्या"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"रद्द करा"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"नाव फील्ड रिक्त असू शकत नाही."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN रिक्त असू शकत नाही."</string>
@@ -1613,8 +1612,11 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"ॲप्स रीसेट केली जाऊ शकतात"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"वाय-फाय, मोबाइल आणि ब्लूटूथ रीसेट करा"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"हे यांसह सर्व नेटवर्क सेटिंग्‍ज रीसेट करेल:\n\n"<li>"वाय‑फाय"</li>\n<li>"मोबाइल डेटा"</li>\n<li>"ब्लूटुथ"</li></string>
+    <!-- no translation found for erase_euicc_data_button (728078969563311737) -->
+    <skip />
     <string name="reset_esim_title" msgid="6152167073280852849">"डाउनलोड केलेली सिम मिटवा"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"बदली सिम डाउनलोड करण्यासाठी तुमच्या वाहकाशी संपर्क साधा. हे केल्याने कोणतेही मोबाइल सेवा प्लॅन रद्द होणार नाहीत."</string>
+    <!-- no translation found for reset_esim_desc (3662444090563399131) -->
+    <skip />
     <string name="reset_network_button_text" msgid="2281476496459610071">"सेटिंग्ज रीसेट करा"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"सर्व नेटवर्क सेटिंग्ज रीसेट करायची? तुम्ही ही कृती पहिल्यासारखी करू शकत नाही."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"सर्व नेटवर्क सेटिंग्ज रीसेट करायची आणि डाउनलोड केलेली सिम मिटवायची? तुम्ही ही कृती पहिल्यासारखी करू शकत नाही."</string>
@@ -2457,10 +2459,9 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"टॅबलेट नेहमीपेक्षा जास्त वापरले गेला"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"डिव्हाइस नेहमीपेक्षा जास्त वापरले गेले"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"बॅटरी नेहमीपेक्षा लवकर संपू शकते"</string>
-    <!-- no translation found for battery_tip_limited_temporarily_title (3532338978617826383) -->
+    <!-- no translation found for battery_tip_limited_temporarily_title (7152799456221596915) -->
     <skip />
-    <!-- no translation found for battery_tip_limited_temporarily_summary (6837061824463128857) -->
-    <skip />
+    <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"बॅटरी तात्पुरती मर्यादित आहे. अधिक जाणून घेण्यासाठी टॅप करा."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"तुमचा फोन नेहमीपेक्षा जास्त वापरला गेला आहे. तुमची बॅटरी अपेक्षेपेक्षा लवकर संपू शकते.\n\nबॅटरीच्या वापरावर आधारित टॉप अ‍ॅप्स:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"तुमचा टॅबलेट नेहमीपेक्षा जास्त वापरला गेला आहे. तुमची बॅटरी अपेक्षेपेक्षा लवकर संपू शकते.\n\nबॅटरीच्या वापरावर आधारित टॉप अ‍ॅप्स:"</string>
     <string name="battery_tip_dialog_message" product="device" msgid="2620789680336796054">"तुमचे डिव्हाइस नेहमीपेक्षा जास्त वापरले गेले आहे. तुमची बॅटरी अपेक्षेपेक्षा लवकर संपू शकते.\n\nबॅटरीच्या वापरावर आधारित टॉप अ‍ॅप्स:"</string>
@@ -4654,6 +4655,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"कमाल दृश्यमान डेटासेट"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"डीफॉल्ट मूल्यांवर रीसेट करा"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"ऑटोफिल डेव्हलपर पर्याय रीसेट केले गेले आहेत"</string>
+    <string name="location_category" msgid="3496759112306219062">"स्थान"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"स्टेटस बारचा स्थान इंडिकेटर"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"नेटवर्क आणि कनेक्टिव्हिटीसह सर्व स्थानांसाठी दाखवा"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"पूर्ण GNSS मापांची सक्ती करा"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"कुठल्याही ड्युटी सायकलिंग शिवाय सर्व GNSS तारामंडळे आणि वारंवारता ट्रॅक करा"</string>
     <string name="device_theme" msgid="5027604586494772471">"डिव्हाइस थीम"</string>
     <string name="default_theme" msgid="4815428567082263639">"डीफॉल्ट"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"नेटवर्कचे नाव"</string>
@@ -4670,8 +4676,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"लक्ष केंद्रित केलेले राहण्यासाठी सूचना थांंबवा"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"वैशिष्‍ट्य उपलब्ध नाही"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"हे वैशिष्ट्य बंद केले गेले आहे कारण, ते तुमच्या फोनला धीमे करते"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"पूर्ण GNSS मापांची सक्ती करा"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"कुठल्याही ड्युटी सायकलिंग शिवाय सर्व GNSS तारामंडळे आणि वारंवारता ट्रॅक करा"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"नेहमी क्रॅश डायलॉग दाखवा"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"अ‍ॅप क्रॅश झाल्यावर प्रत्येक वेळी डायलॉग दाखवा"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"ANGLE सुरू केलेले अ‍ॅप निवडा"</string>
@@ -4899,14 +4903,10 @@
     <string name="dsds_activation_failure_title" msgid="4467364110584914794">"सिम ॲक्टिव्हेट करू शकत नाही"</string>
     <string name="dsds_activation_failure_body_msg1" msgid="6303921196869256391">"सिम काढा आणि ते पुन्हा घाला. समस्या कायम राहिल्यास, तुमचे डिव्हाइस रीस्टार्ट करा."</string>
     <string name="dsds_activation_failure_body_msg2" msgid="73044349546544410">"सिम पुन्हा सुरू करून पाहा. समस्या सुरू राहिल्यास, तुमचे डिव्हाइस रीस्टार्ट करा."</string>
-    <!-- no translation found for sim_setup_channel_id (8797972565087458515) -->
-    <skip />
-    <!-- no translation found for post_dsds_reboot_notification_title_with_carrier (3308827462185135307) -->
-    <skip />
-    <!-- no translation found for post_dsds_reboot_notification_text (7533428378211541410) -->
-    <skip />
-    <!-- no translation found for sim_card_label (5632157635124050923) -->
-    <skip />
+    <string name="sim_setup_channel_id" msgid="8797972565087458515">"नेटवर्क अ‍ॅक्टिव्हेशन"</string>
+    <string name="post_dsds_reboot_notification_title_with_carrier" msgid="3308827462185135307">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> अ‍ॅक्टिव्ह आहे"</string>
+    <string name="post_dsds_reboot_notification_text" msgid="7533428378211541410">"सिमची सेटिंग्ज अपडेट करण्यासाठी टॅप करा"</string>
+    <string name="sim_card_label" msgid="5632157635124050923">"सिम कार्ड"</string>
     <string name="erase_sim_dialog_title" msgid="881253002169177016">"हे डाउनलोड केलेले सिम मिटवायचे?"</string>
     <string name="erase_sim_dialog_text" msgid="753031064269699885">"हे सिम मिटवल्याने या डिव्हाइसवरून <xliff:g id="CARRIER_NAME_A">%1$s</xliff:g> सेवा काढली जाते.\n\n<xliff:g id="CARRIER_NAME_B">%1$s</xliff:g> ची सेवा रद्द केली जाणार नाही."</string>
     <string name="erase_sim_confirm_button" msgid="8309115684335320541">"मिटवा"</string>
@@ -5059,14 +5059,29 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"वाय-फाय कॉलिंग तुम्हाला वाय-फाय यांसारख्या वाहक नसलेल्या नेटवर्कवरून कॉल करण्याची आणि घेण्याची अनुमती देते."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"कॉल"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"एसएमएस"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"प्राधान्य दिलेले"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"कॉलला प्राधान्य आहे"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"SMS ला प्राधान्य आहे"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"उपलब्ध नाही"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"सिम नाही"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"प्राधान्ये"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"सार्वजनिक नेटवर्कशी कनेक्ट करा"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"नेटवर्क कनेक्शन, इंटरनेट, वायरलेस, डेटा, वायफाय, वाय-फाय, वाय फाय, सेल्युलर, मोबाइल, सेल वाहक, 4g, 3g, 2g, LTE"</string>
-    <!-- no translation found for view_airplane_safe_networks (7390511371040078514) -->
-    <skip />
-    <!-- no translation found for turn_off_airplane_mode (1334192337050190071) -->
-    <skip />
+    <string name="view_airplane_safe_networks" msgid="7390511371040078514">"विमानात वापरण्यास सुरक्षित नेटवर्क पहा"</string>
+    <string name="turn_off_airplane_mode" msgid="1334192337050190071">"विमान मोड बंद करा"</string>
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"बेडटाइम मोड सुरू असल्यामुळे उपलब्ध नाही"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"सूचनांचे महत्त्व रीसेट करणे पूर्ण झाले."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"ॲप्स"</string>
+    <!-- no translation found for bluetooth_message_access_notification_content (2986108412562309009) -->
+    <skip />
+    <!-- no translation found for bluetooth_message_access_dialog_title (9009836130395061579) -->
+    <skip />
+    <!-- no translation found for bluetooth_message_access_dialog_content (6004506637437582983) -->
+    <skip />
+    <!-- no translation found for bluetooth_phonebook_access_notification_content (4280361621526852063) -->
+    <skip />
+    <!-- no translation found for bluetooth_phonebook_access_dialog_title (7624607995928968721) -->
+    <skip />
+    <!-- no translation found for bluetooth_phonebook_access_dialog_content (2235876209172857819) -->
+    <skip />
 </resources>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index 5f4ae54..f3170e5 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"Alamat IPv6"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Rangkaian disimpan"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Langganan"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Rangkaian lain"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"Tetapan IP"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Tetapan terperinci Wi-Fi tidak tersedia untuk pengguna ini"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Simpan"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Padam APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"APN Baharu"</string>
     <string name="menu_save" msgid="6611465355127483100">"Simpan"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Buang"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Batal"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Medan Nama tidak boleh kosong."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN tidak boleh kosong."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Apl boleh ditetapkan semula"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Tetapkan semula Wi-Fi, mudah alih &amp; Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Tindakan ini akan menetapkan semula semua tetapan rangkaian, termasuk:\n\n"<li>"Wi‑Fi"</li>\n<li>"Data mudah alih"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Padam"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Padamkan SIM yang dimuat turun"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Untuk memuat turun SIM gantian, hubungi pembawa anda. Tindakan ini tidak akan membatalkan sebarang pelan perkhidmatan mudah alih."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Tindakan ini tidak akan membatalkan mana-mana pelan perkhidmatan mudah alih. Untuk memuat turun SIM gantian, hubungi pembawa anda."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Tetapkan semula tetapan"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Tetapkan semula semua tetapan rangkaian? Tindakan ini tidak boleh dibuat asal."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Tetapkan semula semua tetapan rangkaian dan padamkan SIM yang dimuat turun? Tindakan ini tidak boleh dibuat asal."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Tablet digunakan lebih kerap berbanding biasa"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Peranti digunakan lebih kerap berbanding biasa"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Bateri mungkin kehabisan lebih awal daripada biasa"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Memelihara kesihatan bateri"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Pengoptimuman untuk kesihatan bateri"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Bateri terhad untuk sementara. Ketik untuk mengetahui lebih lanjut."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Telefon anda telah digunakan lebih kerap berbanding biasa. Bateri anda mungkin kehabisan lebih cepat daripada jangkaan.\n\nApl yang paling banyak digunakan mengikut penggunaan bateri:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Tablet anda telah digunakan lebih kerap berbanding biasa. Bateri anda mungkin kehabisan lebih cepat daripada jangkaan.\n\nApl yang paling banyak digunakan mengikut penggunaan bateri:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Set data maksimum yang kelihatan"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Tetapkan semula kepada nilai lalai"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Ciri autolengkapkan pilihan pembangun telah ditetapkan semula"</string>
+    <string name="location_category" msgid="3496759112306219062">"Lokasi"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Penunjuk lokasi bar status"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Tunjukkan untuk semua lokasi, termasuk rangkaian dan kesambungan"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Paksa ukuran GNSS penuh"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Jejak semua gugusan dan kekerapan GNSS tanpa kitaran tugas"</string>
     <string name="device_theme" msgid="5027604586494772471">"Tema peranti"</string>
     <string name="default_theme" msgid="4815428567082263639">"Lalai"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Nama rangkaian"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Jeda pemberitahuan untuk mengekalkan tumpuan"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Ciri tidak tersedia"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Ciri ini telah dimatikan kerana memperlahankan telefon anda"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Paksa ukuran GNSS penuh"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Jejak semua gugusan dan kekerapan GNSS tanpa kitaran tugas"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Sentiasa tunjukkan dialog ranap sistem"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Tunjukkan dialog setiap kali apl ranap"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Pilih apl didayakan ANGLE"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Panggilan Wi-Fi membolehkan anda membuat dan menerima panggilan melalui rangkaian bukan pembawa seperti sesetengah rangkaian Wi-Fi."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Panggilan"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"diutamakan"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"panggilan diutamakan"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"SMS diutamakan"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"tidak tersedia"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Tiada SIM"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Pilihan"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Sambungkan kepada rangkaian awam"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"sambungan rangkaian, internet, wayarles, data, wifi, wi-fi, wi fi, selular, mudah alih, pembawa selular, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Tidak tersedia kerana mod waktu tidur dihidupkan"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Selesai menetapkan semula kepentingan pemberitahuan."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Apl"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Peranti yang tidak dipercayai ingin mengakses mesej anda. Ketik untuk mendapatkan butiran."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Benarkan akses kepada mesej?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Peranti Bluetooth yang tidak dipercayai, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], ingin mengakses mesej anda.\n\nAnda belum pernah disambungkan kepada [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Peranti yang tidak dipercayai ingin mengakses kenalan dan log panggilan anda. Ketik untuk mendapatkan butiran."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Benarkan akses kepada kenalan dan log panggilan?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Peranti Bluetooth yang tidak dipercayai, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], ingn mengakses kenalan dan log panggilan anda. Ini termasuk data tentang panggilan masuk dan keluar.\n\nAnda belum pernah disambungkan kepada [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
 </resources>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index 0d02451..d5fec3a 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 လိပ်စာများ"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"သိမ်းထား ကွန်ရက်များ"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"စာရင်းသွင်းခြင်းများ"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"အခြားကွန်ရက်များ"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP ဆက်တင်များ"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Wi‑Fi အဆင့်မြှင့်ဆက်တင်များ ဤအသုံးပြုသူအတွက် မရပါ။"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"သိမ်းရန်"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"APNကိုဖျက်မည်"</string>
     <string name="menu_new" msgid="6571230342655509006">"APN အသစ်"</string>
     <string name="menu_save" msgid="6611465355127483100">"သိမ်းရန်"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"ဖယ်ပစ်ရန်"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"မလုပ်တော့"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"အမည်အကွက်မှာ ကွက်လပ်ဖြစ်မနေစေရပါ"</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APNမှာ ကွက်လပ်ဖြစ်မနေစေရပါ"</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"အက်ပ်များကို ပြင်ဆင်သတ်မှတ်နိုင်သည်"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Wi-Fi၊ မိုဘိုင်း၊ ဘလူးတုသ် ပြင်ဆင်သတ်မှတ်ရန်"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"၎င်းသည် အောက်ပါတို့အပါအဝင် ကွန်ရက်ဆက်တင်များအားလုံးကို ပြင်ဆင်သတ်မှတ်လိုက်ပါမည်−\n\n"<li>"Wi‑Fi"</li>\n<li>"မိုဘိုင်းဒေတာ"</li>\n<li>"ဘလူးတုသ်"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"ဖျက်ရန်"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"ဒေါင်းလုဒ်လုပ်ထားသောကတ် ဖျက်ပါ"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"အစားထိုး ဆင်းမ်ကတ်များ ဒေါင်းလုဒ်လုပ်ရန် သင့်ဝန်ဆောင်မှုပေးသူကို ဆက်သွယ်ပါ။ ၎င်းက မိုဘိုင်းဝန်ဆောင်မှု အစီအစဉ်များကို ပယ်ဖျက်မည်မဟုတ်ပါ။"</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"၎င်းက မိုဘိုင်းဝန်ဆောင်မှု အစီအစဉ်များကို ပယ်ဖျက်မည်မဟုတ်ပါ။ အစားထိုး ဆင်းမ်ကတ်များ ဒေါင်းလုဒ်လုပ်ရန် သင့်ဝန်ဆောင်မှုပေးသူကို ဆက်သွယ်ပါ။"</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"ဆက်တင်များ ပြင်ဆင်သတ်မှတ်ရန်"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"ကွန်ရက်ဆက်တင်များ အားလုံးကို ပြင်ဆင်သတ်မှတ်လိုပါသလား။ ဤလုပ်ဆောင်ချက်ကို ပြန်ပြင်၍ မရပါ။"</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"ကွန်ရက်ဆက်တင်အားလုံး ပြင်ဆင်သတ်မှတ်ပြီး ဒေါင်းလုဒ်လုပ်ထားသော ဆင်းမ်ကတ်များကို ဖျက်လိုသလား။ ဤလုပ်ဆောင်ချက်ကို ပြန်ပြင်၍ မရပါ။"</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"တက်ဘလက်ကို ပုံမှန်ထက် ပိုသုံးထားသည်"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"စက်ပစ္စည်းကို ပုံမှန်ထက် ပိုသုံးထားသည်"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"ပုံမှန်ထက် ဘက်ထရီ အကုန်မြန်နိုင်သည်"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"ဘက်ထရီအခြေအနေ ထိန်းသိမ်းခြင်း"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"ဘက်ထရီအခြေအနေကို အကောင်းဆုံးဖြစ်အောင် လုပ်နေသည်"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"ဘက်ထရီ ယာယီကန့်သတ်ထားသည်။ ပိုမိုလေ့လာရန် တို့ပါ။"</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"သင့်ဖုန်းကို ပုံမှန်ထက် ပိုသုံးထားသည်။ သင့်ဘက်ထရီသည် ခန့်မှန်းထားသည်ထက် စောလျင်စွာ ကုန်နိုင်ပါသည်။\n\nဘက်ထရီ အများဆုံး အသုံးပြုနေသည့် အက်ပ်များမှာ−"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"သင့်တက်ဘလက်ကို ပုံမှန်ထက် ပိုသုံးထားသည်။ သင့်ဘက်ထရီသည် ခန့်မှန်းထားသည်ထက် စောလျင်စွာ ကုန်နိုင်ပါသည်။\n\nဘက်ထရီ အများဆုံး အသုံးပြုနေသည့် အက်ပ်များမှာ−"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"အများဆုံးမြင်နိုင်သည့် ဒေတာအတွဲ အရေအတွက်"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"မူရင်းတန်ဖိုးများသို့ ပြင်ဆင်သတ်မှတ်ထားသည်"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"တီထွင်သူများရွေးစရာ အလိုအလျောက်ဖြည့်ခြင်းကို ပြင်ဆင်သတ်မှတ်ထားသည်"</string>
+    <string name="location_category" msgid="3496759112306219062">"တည်နေရာ"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"အခြေအနေပြဘား တည်နေရာအညွှန်း"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"ကွန်ရက်နှင့် ချိတ်ဆက်နိုင်မှုတို့ ပါဝင်သည့် တည်နေရာအားလုံးအတွက် ပြသည်"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"GNSS အတိုင်းအတာအပြည့် သက်ရောက်ရန်"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"လည်ပတ်ချိန်မပါဘဲ GNSS စက်ဝိုင်းပုံမြင်ကွင်းကျယ်ပုံများနှင့် ကြိမ်နှုန်းအားလုံးကို ခြေရာခံပါ"</string>
     <string name="device_theme" msgid="5027604586494772471">"စက်ပစ္စည်း အပြင်အဆင်"</string>
     <string name="default_theme" msgid="4815428567082263639">"မူရင်း"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"ကွန်ရက် အမည်"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"အာရုံစူးစိုက်နိုင်ရန် အကြောင်းကြားချက်များကို ခေတ္တရပ်ထားပါ"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"ဝန်ဆောင်မှု မရနိုင်ပါ။"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"ဤဝန်ဆောင်မှုသည် သင့်ဖုန်းကို နှေးစေသောကြောင့် ၎င်းကို ပိတ်ထားပါသည်"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"GNSS အတိုင်းအတာအပြည့် သက်ရောက်ရန်"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"လည်ပတ်ချိန်မပါဘဲ GNSS စက်ဝိုင်းပုံမြင်ကွင်းကျယ်ပုံများနှင့် ကြိမ်နှုန်းအားလုံးကို ခြေရာခံပါ"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"ရပ်တန့်သွားမှု ဒိုင်ယာလော့ကို အမြဲပြရန်"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"အက်ပ်ရပ်တန့်သွားသည့်အခါတိုင်း ဒိုင်ယာလော့ကို ပြရန်"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"ANGLE ကို ဖွင့်ထားသည့်အက်ပ်ကို ရွေးပါ"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Wi‑Fi ခေါ်ဆိုမှုက Wi-Fi ကွန်ရက်အချို့ကဲ့သို့သော ဖုန်းဝန်ဆောင်မှုပေးသူမဟုတ်သည့် ကွန်ရက်များတွင် ဖုန်းခေါ်ဆိုရန်နှင့် လက်ခံရန် ခွင့်ပြုပေးသည်။"</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"ခေါ်ဆိုမှုများ"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"ဦးစားပေး"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"ခေါ်ဆိုမှုများ ဦးစားပေး"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"SMS ဦးစားပေး"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"မရနိုင်ပါ"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"SIM မရှိပါ"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"ရွေးချယ်မှုများ"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"အများသုံးကွန်ရက်များသို့ ချိတ်ဆက်လိုက်သည်"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"ကွန်ရက်ချိတ်ဆက်မှု၊ အင်တာနက်၊ ကြိုးမဲ့၊ ဒေတာ၊ wifi၊ wi-fi၊ wi fi၊ ဆယ်လူလာ၊ မိုဘိုင်း၊ ဖုန်းဝန်ဆောင်မှုပေးသူ၊ 4g၊ 3g၊ 2g၊ lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"အိပ်ချိန်မုဒ်ကို ဖွင့်ထားသောကြောင့် မရရှိနိုင်ပါ"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"အကြောင်းကြားချက်၏ အရေးပါမှုကို ပြင်ဆင်သတ်မှတ်ပြီးပါပြီ။"</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"အက်ပ်များ"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"မယုံကြည်ရသော စက်ပစ္စည်းက သင်၏ မက်ဆေ့ဂျ်များကို အသုံးပြုလိုသည်။ အသေးစိတ်အချက်အလက်များအတွက် တို့ပါ။"</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"မက်ဆေ့ဂျ်များကို အသုံးပြုခွင့်ပေးမလား။"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"မယုံကြည်ရသော ဘလူးတုသ်သုံးစက်၊ [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>]၊ က သင်၏ မက်ဆေ့ဂျ်များကို အသုံးပြုလိုသည်။\n\nသင်သည် [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] ကို ယခင်က မချိတ်ဆက်ဖူးပါ။"</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"မယုံကြည်ရသော စက်ပစ္စည်းက သင်၏ အဆက်အသွယ်များနှင့် ခေါ်ဆိုမှုမှတ်တမ်းကို အသုံးပြုလိုသည်။ အသေးစိတ်အချက်အလက်များအတွက် တို့ပါ။"</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"အဆက်အသွယ်များနှင့် ခေါ်ဆိုမှုမှတ်တမ်းကို အသုံးပြုခွင့်ပေးမလား။"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"မယုံကြည်ရသော ဘလူးတုသ်သုံးစက်၊ [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>]၊ က သင်၏ အဆက်အသွယ်များနှင့် ခေါ်ဆိုမှုမှတ်တမ်းကို အသုံးပြုလိုသည်။ ၎င်းတွင် အဝင်နှင့် အထွက်ခေါ်ဆိုမှုများဆိုင်ရာ ဒေတာ ပါဝင်သည်။\n\nသင်သည် [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] ကို ယခင်က မချိတ်ဆက်ဖူးပါ။"</string>
 </resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 7683bec..f8b0ab1 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6-adresser"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Lagrede nettverk"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Abonnementer"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Andre nettverk"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP-innstillinger"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"De avanserte innstillingene for Wi-Fi er ikke tilgjengelig for denne brukeren"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Lagre"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Slett APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"Nytt APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Lagre"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Forkast"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Avbryt"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Navnefeltet kan ikke være tomt."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN kan ikke være tomt."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Apper kan tilbakestilles"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Tilbakestill Wi-Fi, mobil og Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Dette tilbakestiller alle nettverksinnstillinger, inkludert\n\n"<li>"Wi‑Fi"</li>\n<li>"mobildata"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Tøm"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Slett nedlastede SIM-kort"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Kontakt operatøren din for å laste ned erstatnings-SIM-kort. Dette kansellerer ingen mobilabonnementer."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Dette kansellerer ingen mobilabonnementer. Kontakt operatøren din for å laste ned erstatnings-SIM-kort."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Tilbakestill innstillingene"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Vil du tilbakestille alle nettverksinnstillingene? Denne handlingen kan ikke angres."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Vil du tilbakestille alle nettverksinnstillingene og slette nedlastede SIM-kort? Denne handlingen kan ikke angres."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Nettbrettet brukes mer enn vanlig"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Enheten brukes mer enn vanlig"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Batteriet kan gå tomt raskere enn vanlig"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Bevarer batteritilstanden"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Optimaliserer batteritilstanden"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Batteriet er midlertidig begrenset. Trykk for å finne ut mer."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Telefonen din har blitt brukt mer enn vanlig. Batteriet kan gå tomt raskere enn forventet.\n\nApper med høyest batteribruk:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Nettbrettet ditt har blitt brukt mer enn vanlig. Batteriet kan gå tomt raskere enn forventet.\n\nApper med høyest batteribruk:"</string>
@@ -2695,7 +2695,7 @@
     <string name="tts_reset" msgid="9047681050813970031">"Tilbakestill"</string>
     <string name="tts_play" msgid="2945513377250757221">"Spill av"</string>
     <string name="vpn_settings_title" msgid="9131315656202257272">"VPN"</string>
-    <string name="adaptive_connectivity_title" msgid="7464959640138428192">"Selvjusterende tilkobling"</string>
+    <string name="adaptive_connectivity_title" msgid="7464959640138428192">"Adaptive Connectivity"</string>
     <string name="adaptive_connectivity_summary" msgid="3648731530666326885">"Forlenger batterilevetiden og enhetsytelsen ved å administrere nettverkstilkoblingene automatisk"</string>
     <string name="credentials_title" msgid="7535942196886123656">"Legitimasjonslager"</string>
     <string name="credentials_install" msgid="3933218407598415827">"Installer et sertifikat"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Maksimalt antall synlige datasett"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Tilbakestill til standardverdier"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Autofyll av utvikleralternativer er tilbakestilt"</string>
+    <string name="location_category" msgid="3496759112306219062">"Posisjon"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Statusfelt for posisjonsindikator"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Vis for alle posisjoner, inkludert nettverk og tilkobling"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Tving fullstendige GNSS-målinger"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Spor alle GNSS-konstellasjoner og -frekvenser uten syklus for oppgaver"</string>
     <string name="device_theme" msgid="5027604586494772471">"Enhetstema"</string>
     <string name="default_theme" msgid="4815428567082263639">"Standard"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Nettverksnavn"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Sett varsler på pause for å holde deg fokusert"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Funksjonen er ikke tilgjengelig"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Denne funksjonen er slått av fordi den gjør telefonen din tregere"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Tving fullstendige GNSS-målinger"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Spor alle GNSS-konstellasjoner og -frekvenser uten syklus for oppgaver"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Vis alltid krasjdialogboksen"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Vis dialogboksen hver gang en app krasjer"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Velg en ANGLE-aktivert app"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Med Wi-Fi-anrop kan du ringe og motta anrop via nettverk utenfor operatøren, for eksempel noen Wi-Fi-nettverk."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Anrop"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"foretrukket"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"anrop foretrekkes"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"SMS foretrekkes"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"utilgjengelig"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Uten SIM-kort"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Innstillinger"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Koble til offentlige nettverk"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"nettverkstilkobling, internett, trådløs, data, wifi, wi-fi, wi fi, mobilnett, mobil, mobiloperatør, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Utilgjengelig fordi sengetidsmodus er på"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Tilbakestilling av viktighet for varsler er fullført."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Apper"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"En enhet som ikke er klarert, vil ha tilgang til meldingene dine. Trykk for å se mer informasjon."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Vil du gi tilgang til meldinger?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"En Bluetooth-enhet som ikke er klarert, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], vil ha tilgang til meldingene dine.\n\nDu har ikke koblet til [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] tidligere."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"En enhet som ikke er klarert, vil ha tilgang til kontaktene dine og samtaleloggen din. Trykk for å se mer informasjon."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Vil du gi tilgang til kontaktene og samtaleloggen?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"En Bluetooth-enhet som ikke er klarert, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], vil ha tilgang til kontaktene dine og samtaleloggen din. Dette inkluderer data om innkommende og utgående anrop.\n\nDu har ikke koblet til [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] tidligere."</string>
 </resources>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index 32d25d8..3a811d9 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 ठेगानाहरू"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"सेभ गरिएका नेटवर्कहरू"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"सदस्यताहरू"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"अन्य नेटवर्कहरू"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP सेटिङहरू"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"यस प्रयोगकर्ताका लागि Wi‑Fi उन्नत सम्बन्धी सेटिङहरू उपलब्ध छैनन्"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"सुरक्षित गर्नुहोस्"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"APN मेटाउनुहोस्"</string>
     <string name="menu_new" msgid="6571230342655509006">"नयाँ APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"सुरक्षित गर्नुहोस्"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"त्याग्नुहोस्"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"रद्द गर्नु…"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"नाम फिल्ड खाली हुन सक्तैन।"</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN खाली हुन सक्तैन।"</string>
@@ -1612,8 +1611,11 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"एपहरू रिसेट गरिन सक्छ"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Wi-Fi, मोबाइल र ब्लुटुथ रिसेट गर्नुहोस्"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"यसले निम्न सेटिङहरू लगायत सम्पूर्ण नेटवर्क सम्बन्धी सेटिहरूलाई रिसेट गर्ने छ:\n\n"<li>"Wi‑Fi"</li>\n<li>"मोबाइल डेटा"</li>\n<li>"ब्लुटुथ"</li></string>
+    <!-- no translation found for erase_euicc_data_button (728078969563311737) -->
+    <skip />
     <string name="reset_esim_title" msgid="6152167073280852849">"डाउनलोड गरिएका SIM हरू मेट्नुहोस्"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"प्रतिस्थापनका लागि SIM हरू डाउनलोड गर्न आफ्ना सेवा प्रदायकसँग सम्पर्क गर्नुहोस्। यसले मोबाइल सेवाको कुनै पनि योजना रद्द गर्ने छैन।"</string>
+    <!-- no translation found for reset_esim_desc (3662444090563399131) -->
+    <skip />
     <string name="reset_network_button_text" msgid="2281476496459610071">"सेटिङहरू रिसेट गर्नुहोस्"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"नेटवर्कसम्बन्धी सबै सेटिङहरू रिसेट गर्ने हो? तपाईं यो कार्य उल्टाउन सक्नुहुन्न।"</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"नेटवर्कसम्बन्धी सबै सेटिङहरू रिसेट गर्ने र डाउनलोड गरिएका SIM हरू मेटाउने हो? तपाईं यस कार्यलाई अन्डू गर्न सक्नुहुन्न!"</string>
@@ -2456,7 +2458,8 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"ट्याब्लेट सामान्यभन्दा बढी प्रयोग भयो"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"यन्त्रलाई सामान्यभन्दा बढी प्रयोग भयो"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"ब्याट्री अरू बेलाभन्दा छिटै सकिन सक्छ"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"ब्याट्री लामो समयसम्म टिक्ने बनाइँदै छ"</string>
+    <!-- no translation found for battery_tip_limited_temporarily_title (7152799456221596915) -->
+    <skip />
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"केही समयका लागि ब्याट्रीको प्रयोग सीमित गरिएको छ। थप जान्न ट्याप गर्नुहोस्।"</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"तपाईंको फोन सामान्यभन्दा धेरै प्रयोग भएको छ। तपाईंको ब्याट्रीको चार्ज अपेक्षा गरिएभन्दा चाँडो सकिन सक्छ।\n\nसबैभन्दा बढी ब्याट्री उपयोग गर्ने एपहरू:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"तपाईंको ट्याब्लेट सामान्यभन्दा धेरै प्रयोग भएको छ। तपाईंको ब्याट्रीको चार्ज अपेक्षा गरिएभन्दा चाँडो सकिन सक्छ।\n\nसबैभन्दा बढी ब्याट्री उपयोग गर्ने एपहरू:"</string>
@@ -4651,6 +4654,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"देख्न सकिने डेटासेटहरूको सङ्ख्या अधिकतम पार्नुहोस्"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"पूर्वनिर्धारित मानहरूमा रिसेट गर्नुहोस्"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"स्वतः भरणसम्बन्धी विकासकर्ताका विकल्पहरू रिसेट गरिएको छ"</string>
+    <string name="location_category" msgid="3496759112306219062">"स्थान"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"स्ट्याटस बारमा रहेको स्थानसम्बन्धी जानकारी दिने सूचक"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"नेटवर्क र कनेक्टिभिटीसहित सबै स्थानहरूको जानकारी देखाइयोस्"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"पूर्ण GNSS मापनहरू बलपूर्वक लागू गर्नुहोस्"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"कुनै उपयोगिता अनुपात बिना नै सबै GNSS कन्स्टेलेसन तथा फ्रिक्वेन्सीहरूलाई ट्र्याक गर्नुहोस्"</string>
     <string name="device_theme" msgid="5027604586494772471">"यन्त्रको विषयवस्तु"</string>
     <string name="default_theme" msgid="4815428567082263639">"पूर्वनिर्धारित"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"नेटवर्कको नाम"</string>
@@ -4667,8 +4675,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"केन्द्रित रहन सूचनाहरू पज गर्नुहोस्"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"सुविधा उपलब्ध छैन"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"यो सुविधाले तपाईंको फोन ढिलो बनाउने हुनाले यसलाई निष्क्रिय पारिएको छ"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"पूर्ण GNSS मापनहरू बलपूर्वक लागू गर्नुहोस्"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"कुनै उपयोगिता अनुपात बिना नै सबै GNSS कन्स्टेलेसन तथा फ्रिक्वेन्सीहरूलाई ट्र्याक गर्नुहोस्"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"सधैँ क्र्याससम्बन्धी संवाद देखाउनुस्"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"प्रत्येकपटक एप क्र्यास हुँदा संवाद देखाउनुहोस्‌"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"कोण सक्षम पारिएको एप चयन गर्नुहोस्"</string>
@@ -4896,14 +4902,10 @@
     <string name="dsds_activation_failure_title" msgid="4467364110584914794">"SIM सक्रिय गर्न सकिएन"</string>
     <string name="dsds_activation_failure_body_msg1" msgid="6303921196869256391">"SIM बाहिर झिकेर फेरि हाल्नुहोस्। अझै समस्या रहिरह्यो भने आफ्नो यन्त्र रिस्टार्ट गर्नुहोस्।"</string>
     <string name="dsds_activation_failure_body_msg2" msgid="73044349546544410">"फेरि SIM सक्रिय गरी हेर्नुहोस्। अझै समस्या रहिरह्यो भने आफ्नो यन्त्र रिस्टार्ट गर्नुहोस्।"</string>
-    <!-- no translation found for sim_setup_channel_id (8797972565087458515) -->
-    <skip />
-    <!-- no translation found for post_dsds_reboot_notification_title_with_carrier (3308827462185135307) -->
-    <skip />
-    <!-- no translation found for post_dsds_reboot_notification_text (7533428378211541410) -->
-    <skip />
-    <!-- no translation found for sim_card_label (5632157635124050923) -->
-    <skip />
+    <string name="sim_setup_channel_id" msgid="8797972565087458515">"नेटवर्क सक्रिय गर्ने प्रक्रिया"</string>
+    <string name="post_dsds_reboot_notification_title_with_carrier" msgid="3308827462185135307">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> सक्रिय छ"</string>
+    <string name="post_dsds_reboot_notification_text" msgid="7533428378211541410">"SIM का सेटिङ परिवर्तन गर्न ट्याप गर्नुहोस्"</string>
+    <string name="sim_card_label" msgid="5632157635124050923">"SIM कार्ड"</string>
     <string name="erase_sim_dialog_title" msgid="881253002169177016">"डाउनलोड गरिएको यो SIM मेटाउने हो?"</string>
     <string name="erase_sim_dialog_text" msgid="753031064269699885">"तपाईंले यो SIM मेटाउनुभयो भने यस यन्त्रबाट <xliff:g id="CARRIER_NAME_A">%1$s</xliff:g> सेवा हटाइने छ।\n\n <xliff:g id="CARRIER_NAME_B">%1$s</xliff:g> को सेवा भने रद्द गरिने छैन।"</string>
     <string name="erase_sim_confirm_button" msgid="8309115684335320541">"मेट्नुहोस्"</string>
@@ -5056,14 +5058,29 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"तपाईं Wi-Fi कलिङ सुविधा प्रयोग गरी केही Wi-Fi नेटवर्क जस्ता SIM रहित नेटवर्कमार्फत कल गर्न र कल प्राप्त गर्न सक्नुहुन्छ।"</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"कलहरू"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"यो SIM कार्ड प्रयोग गरियोस्"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"यो SIM कार्ड कल गर्न प्रयोग गरियोस्"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"यो SIM कार्ड SMS पठाउन प्रयोग गरियोस्"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"उपलब्ध छैन"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"SIM कार्ड छैन"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"प्राथमिकताहरू"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"सार्वजनिक Wi-Fi नेटवर्कमा कनेक्ट गरियोस्"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"नेटवर्क कनेक्सन, इन्टरनेट, वायरलेस, डेटा, wifi, wi-fi, wi fi, सेलुलर, मोबाइल, सेल सेवा प्रदायक, 4g, 3g, 2g, lte"</string>
-    <!-- no translation found for view_airplane_safe_networks (7390511371040078514) -->
-    <skip />
-    <!-- no translation found for turn_off_airplane_mode (1334192337050190071) -->
-    <skip />
+    <string name="view_airplane_safe_networks" msgid="7390511371040078514">"हवाइजहाजमा सुरक्षित रूपमा प्रयोग गर्न सकिने नेटवर्कहरू हेर्नु…"</string>
+    <string name="turn_off_airplane_mode" msgid="1334192337050190071">"हवाइजहाज मोड अफ गर्नुहोस्"</string>
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"बेडटाइम मोड अन हुँदा यो सुविधाले काम गर्दैन"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"सूचनाको प्राथमिकता रिसेट गर्ने कार्य पूरा भयो।"</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"एपहरू"</string>
+    <!-- no translation found for bluetooth_message_access_notification_content (2986108412562309009) -->
+    <skip />
+    <!-- no translation found for bluetooth_message_access_dialog_title (9009836130395061579) -->
+    <skip />
+    <!-- no translation found for bluetooth_message_access_dialog_content (6004506637437582983) -->
+    <skip />
+    <!-- no translation found for bluetooth_phonebook_access_notification_content (4280361621526852063) -->
+    <skip />
+    <!-- no translation found for bluetooth_phonebook_access_dialog_title (7624607995928968721) -->
+    <skip />
+    <!-- no translation found for bluetooth_phonebook_access_dialog_content (2235876209172857819) -->
+    <skip />
 </resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 8f39ccb..06d7c71 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6-adressen"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Opgeslagen netwerken"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Abonnementen"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Andere netwerken"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP-instellingen"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Geavanceerde wifi-instellingen zijn niet beschikbaar voor deze gebruiker"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Opslaan"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"APN verwijderen"</string>
     <string name="menu_new" msgid="6571230342655509006">"Nieuwe APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Opslaan"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Weggooien"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Annuleren"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Het veld \'Naam\' mag niet leeg zijn."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"De APN mag niet leeg zijn."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Apps kunnen worden gereset"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Wifi, mobiel en bluetooth resetten"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Hiermee worden alle netwerkinstellingen gereset, waaronder:\n\n"<li>"wifi"</li>\n<li>"mobiele data"</li>\n<li>"bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Wissen"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Gedownloade simkaarten wissen"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Neem contact op met je provider als je vervangende simkaarten wilt downloaden. Hiermee worden geen mobiele abonnementen opgezegd."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Hiermee zeg je geen mobiele abonnementen op. Neem contact op met je provider als je vervangende simkaarten wilt downloaden."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Instellingen resetten"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Alle netwerkinstellingen resetten? Je kunt deze actie niet ongedaan maken."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Alle netwerkinstellingen resetten en gedownloade simkaarten wissen? Je kunt deze actie niet ongedaan maken."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Tablet heeft meer verbruikt dan normaal"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Apparaat heeft meer verbruikt dan normaal"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Batterij is mogelijk eerder leeg dan normaal"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Batterij sparen"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Optimaliseren voor batterijduur"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Batterij tijdelijk beperkt. Tik voor meer informatie."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Je telefoon is vaker gebruikt dan normaal. De batterij is mogelijk eerder leeg dan verwacht.\n\nTop-apps op basis van batterijgebruik:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Je tablet is vaker gebruikt dan normaal. De batterij is mogelijk eerder leeg dan verwacht.\n\nTop-apps op basis van batterijgebruik:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Max. zichtbare gegevenssets"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Resetten naar standaardwaarden"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Ontwikkelaarsopties voor automatisch invullen zijn gereset"</string>
+    <string name="location_category" msgid="3496759112306219062">"Locatie"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Locatie-indicator in statusbalk"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Tonen voor alle locaties, inclusief netwerk en connectiviteit"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Volledige GNSS-metingen afdwingen"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Alle GNSS-constellaties en -frequenties bijhouden zonder duty cycling"</string>
     <string name="device_theme" msgid="5027604586494772471">"Apparaatthema"</string>
     <string name="default_theme" msgid="4815428567082263639">"Standaard"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Netwerknaam"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Meldingen onderbreken om gefocust te blijven"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"De functie is niet beschikbaar"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Deze functie is uitgeschakeld omdat je telefoon erdoor wordt vertraagd"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Volledige GNSS-metingen afdwingen"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Alle GNSS-constellaties en -frequenties bijhouden zonder duty cycling"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Altijd een crashvenster weergeven"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Bij gecrashte apps altijd een venster weergeven"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"App met ANGLE-functionaliteit selecteren"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Met bellen via wifi kun je bellen en gebeld worden via niet-providernetwerken zoals bepaalde wifi-netwerken."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Gesprekken"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"Sms"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"voorkeur"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"voorkeur voor gesprekken"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"voorkeur voor sms"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"niet beschikbaar"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Geen simkaart"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Voorkeuren"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Verbinden met openbare netwerken"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"netwerkverbinding, internet, draadloos, data, wifi, wi-fi, wi fi, mobiel, mobiele provider, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Niet beschikbaar omdat de bedtijdstand is ingeschakeld"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Belang van meldingen is gereset."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Apps"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Een niet-vertrouwd apparaat wil toegang tot je berichten. Tik voor details."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Toegang tot berichten toestaan?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Een niet-vertrouwd bluetooth-apparaat, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], wil toegang tot je berichten.\n\nJe hebt niet eerder verbinding gemaakt met [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Een niet-vertrouwd apparaat wil toegang tot je contacten en gesprekslijst. Tik voor details."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Toegang tot contacten en gesprekslijst toestaan?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Een niet-vertrouwd bluetooth-apparaat, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], wil toegang tot je contacten en gesprekslijst. Dit omvat gegevens over inkomende en uitgaande gesprekken.\n\nJe hebt niet eerder verbinding gemaakt met [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
 </resources>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index 1c8b072..f9094fb 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 ଠିକଣା"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"ସେଭ୍‌ ହୋଇଥିବା ନେଟ୍‌ୱାର୍କ"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"ସଦସ୍ୟତା"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"ଅନ୍ୟ ନେଟୱାର୍କ"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP ସେଟିଂସ୍"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"ଏହି ଉପଯୋଗକର୍ତ୍ତାଙ୍କ ପାଇଁ ୱାଇ-ଫାଇ ଉନ୍ନତ ସେଟିଙ୍ଗ ଉପଲବ୍ଧ ନାହିଁ"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"ସେଭ୍‌ କରନ୍ତୁ"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"APN ଡିଲିଟ୍‌ କରନ୍ତୁ"</string>
     <string name="menu_new" msgid="6571230342655509006">"ନୂଆ APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"ସେଭ୍‌ କରନ୍ତୁ"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"ପରିତ୍ୟାଗ"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"ବାତିଲ୍ କରନ୍ତୁ"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"ନାମ ସ୍ଥାନ ଶୂନ୍ୟ ରହିପାରିବ ନାହିଁ।"</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APNକୁ ଖାଲି ରଖାଯାଇପାରିବ ନାହିଁ।"</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"ଆପ୍‍ଗୁଡ଼ିକୁ ରିସେଟ୍ କରାଯାଇପାରିବ"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"ୱାଇ-ଫାଇ, ମୋବାଇଲ ଓ ବ୍ଲୁଟୁଥ୍‌ ରିସେଟ୍‌ କରନ୍ତୁ"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"ଏହା ସମସ୍ତ ନେଟୱାର୍କ ସେଟିଂସକୁ ରିସେଟ୍‌ କରିବ, ଯେଉଁଥିରେ ଏସବୁ ରହିଛି:\n\n"<li>"ୱାଇ-ଫାଇ"</li>\n<li>"ମୋବାଇଲ୍‌ ଡାଟା"</li>\n<li>"ବ୍ଲୁଟୁଥ୍‍"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"ଖାଲି କରନ୍ତୁ"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"ଡାଉନଲୋଡ୍ ହୋଇଥିବା SIMକୁ ଖାଲି କରନ୍ତୁ"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"ରିପ୍ଲେସମ୍ୟାଣ୍ଟ୍ SIMଗୁଡ଼ିକୁ ଡାଉନଲୋଡ୍ କରିବାକୁ, ଆପଣଙ୍କର କ୍ୟାରିଅରଙ୍କୁ ଯୋଗାଯୋଗ କରନ୍ତୁ। ଏହା କୌଣସି ମୋବାଇଲ୍‍ ସେବା ପ୍ଲାନ୍‍ ବାତିଲ୍‍ କରିବ ନାହିଁ।"</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"ଏହା କୌଣସି ମୋବାଇଲ ସେବା ପ୍ଲାନକୁ ବାତିଲ୍ କରିବ ନାହିଁ। ରିପ୍ଲେସମେଣ୍ଟ SIMଗୁଡ଼ିକୁ ଡାଉନଲୋଡ୍ କରିବାକୁ ଆପଣଙ୍କ କ୍ୟାରିଅରଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।"</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"ସେଟିଂସ୍ ରିସେଟ୍‌ କରନ୍ତୁ"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"ସମସ୍ତ ନେଟ୍‌ୱାର୍କ ସେଟିଂ ରିସେଟ୍ କରିବେ? ଏହାକୁ ଆପଣ ଆଉ ପୂର୍ବବତ୍ କରିପାରିବେ ନାହିଁ।"</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"ସମସ୍ତ ନେଟ୍‌ୱର୍କ ସେଟିଂ ରିସେଟ୍ ଏବଂ ଡାଉନଲୋଡ୍ ହୋଇଥିବା SIMକୁ ଖାଲି କରିବେ କି? ଆପଣ ଏହି କାର୍ଯ୍ୟକୁ ପୂର୍ବବତ୍ କରିପାରିବେ ନାହିଁ।"</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"ଟାବଲେଟ୍‌ ସାଧାରଣ ତୁଳନାରେ ଅଧିକ ବ୍ୟବହାର କରାଯାଇଛି"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"ଡିଭାଇସ୍‌ ସାଧାରଣ ତୁଳନାରେ ଅଧିକ ବ୍ୟବହାର କରାଯାଇଛି"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"ଅନୁମାନ କରାଯାଉଥିବା ସମୟର ପୂର୍ବରୁ ବ୍ୟାଟେରୀ ସରିଯାଇପାରେ"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"ବ୍ୟାଟେରୀ ହେଲ୍ଥ ସଂରକ୍ଷଣ ହେଉଛି"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"ବ୍ୟାଟେରୀ ହେଲ୍ଥ ପାଇଁ ଅପ୍ଟିମାଇଜ୍ ହେଉଛି"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"ବ୍ୟାଟେରୀ ଅସ୍ଥାୟୀ ଭାବେ ସୀମିତ ଅଛି। ଅଧିକ ଜାଣିବାକୁ ଟାପ୍ କରନ୍ତୁ।"</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"ଆପଣଙ୍କ ଫୋନ୍ ସାଧାରଣ ତୁଳନାରେ ଅଧିକ ବ୍ୟବହାର କରାଯାଇଛି। ଆପଣଙ୍କ ବ୍ୟାଟେରୀ ହୁଏତ ଆଶା କରାଯାଉଥିବା ସମୟ ଠାରୁ ଶୀଘ୍ର ସରି ଯାଇପାରେ।\n\n ବ୍ୟାଟେରୀର ବ୍ୟବହାର ଦ୍ୱାରା ଶ୍ରେଷ୍ଠ ଆପ୍ସ:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"ଆପଣଙ୍କର ଟାବ୍‍‍ଲେଟ୍ ସାଧାରଣ ତୁଳନାରେ ଅଧିକ ବ୍ୟବହାର କରାଯାଇଛି। ଆପଣଙ୍କ ବ୍ୟାଟେରୀ ହୁଏତ ଆଶା କରାଯାଉଥିବା ସମୟ ଠାରୁ ଶୀଘ୍ର ସରି ଯାଇପାରେ।\n\n ବ୍ୟାଟେରୀର ବ୍ୟବହାର ଦ୍ୱାରା ଶ୍ରେଷ୍ଠ ଆପ୍ସ:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"ସର୍ବାଧିକ ଦେଖାଯାଉଥିବା ଡାଟାସେଟ୍‍ଗୁଡିକ"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"ଡିଫଲ୍ଟ ମୂଲ୍ୟକୁ ରିସେଟ୍‌ କରନ୍ତୁ"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"ଅଟୋଫିଲ୍‌ ଡେଭଲପର୍‍ ବିକଳ୍ପଗୁଡିକ ରିସେଟ୍ ହୋଇଛି"</string>
+    <string name="location_category" msgid="3496759112306219062">"ଲୋକେସନ୍"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"ଷ୍ଟାଟସ୍ ବାରରେ ଲୋକେସନ୍ ସୂଚକ"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"ନେଟୱାର୍କ ଏବଂ ସଂଯୋଗ ସମେତ, ସମସ୍ତ ଲୋକେସନ୍ ଦେଖାନ୍ତୁ"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"ପୂର୍ଣ୍ଣ GNSS ପରିମାପ ବାଧ୍ୟ କରନ୍ତୁ"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"ଡ୍ୟୁଟି ସାଇକିଲିଂ ନଥାଇ ସମସ୍ତ GNSS ତାରାମଣ୍ଡଳ ଓ ଫ୍ରିକ୍ୱେନ୍ସୀକୁ ଟ୍ରାକ୍‌ କରନ୍ତୁ"</string>
     <string name="device_theme" msgid="5027604586494772471">"ଡିଭାଇସ୍‌ ଥିମ୍‌"</string>
     <string name="default_theme" msgid="4815428567082263639">"ପ୍ରାକ୍‌-ନିର୍ଦ୍ଧାରିତ"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"ନେଟୱାର୍କ ନାମ"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"ଫୋକସ୍ ରହିବା ପାଇଁ ବିଜ୍ଞପ୍ତି ବିରତି କରନ୍ତୁ"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"ଫିଚର୍‍ ଉପଲବ୍ଧ ନାହିଁ"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"ଏହି ଫିଚର୍‍ ଆପଣଙ୍କ ଫୋନ୍‍କୁ ଧିମା କରୁଥିବାରୁ ଏହାକୁ ବନ୍ଦ କରିଦିଆଯାଇଛି"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"ପୂର୍ଣ୍ଣ GNSS ପରିମାପ ବାଧ୍ୟ କରନ୍ତୁ"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"ଡ୍ୟୁଟି ସାଇକିଲିଂ ନଥାଇ ସମସ୍ତ GNSS ତାରାମଣ୍ଡଳ ଓ ଫ୍ରିକ୍ୱେନ୍ସୀକୁ ଟ୍ରାକ୍‌ କରନ୍ତୁ"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"କ୍ରାଶ୍ ହୋଇଥିବା ଡାୟଲଗ୍‌କୁ ସର୍ବଦା ଦେଖାନ୍ତୁ"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"ପ୍ରତ୍ୟେକ ଥର ଗୋଟିଏ ଆପ୍ କ୍ରାଶ୍ ହେବାପରେ ଡାୟଲଗ୍ ଦେଖାନ୍ତୁ"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"ANGLE ସକ୍ଷମ ଥିବା ଆପ୍ ଚୟନ କରନ୍ତୁ"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"ୱାଇ‑ଫାଇ କଲିଂ ଆପଣଙ୍କୁ କେତେକ ୱାଇ‑ଫାଇ ନେଟୱାର୍କ ପରି ନନ୍‑କ୍ୟାରିଅର୍ ନେଟୱାର୍କରେ କଲ୍ କରିବା ଓ ପ୍ରାପ୍ତ କରିବାକୁ ଅନୁମତି ଦେଇଥାଏ।"</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"କଲଗୁଡ଼ିକ"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"ପସନ୍ଦ କରାଯାଇଛି"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"କଲଗୁଡ଼ିକୁ ପସନ୍ଦ କରାଯାଇଛି"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"SMS ପସନ୍ଦ କରାଯାଇଛି"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"ଉପଲବ୍ଧ ନାହିଁ"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"କୌଣସି SIM ନାହିଁ"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"ପସନ୍ଦଗୁଡ଼ିକ"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"ସାର୍ବଜନୀନ ନେଟୱାର୍କଗୁଡ଼ିକ ସହ ସଂଯୋଗ କରନ୍ତୁ"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"ନେଟୱାର୍କ ସଂଯୋଗ, ଇଣ୍ଟରନେଟ୍, ୱାୟାରଲେସ୍, ଡାଟା, ୱାଇଫାଇ, ୱାଇ-ଫାଇ, ୱାଇ ଫାଇ, ସେଲ୍ୟୁଲାର୍, ମୋବାଇଲ, ସେଲ୍ କ୍ୟାରିଅର୍, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"ଶୋଇବା ସମୟ ମୋଡ୍ ଚାଲୁ ଥିବା ଯୋଗୁଁ ଉପଲବ୍ଧ ନାହିଁ"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"ବିଜ୍ଞପ୍ତିର ପ୍ରାଥମିକତା ରିସେଟ୍ କରିବା ସମ୍ପୂର୍ଣ୍ଣ ହୋଇଛି।"</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"ଆପଗୁଡ଼ିକ"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"ଅବିଶ୍ୱସ୍ତ ଡିଭାଇସଟି ଆପଣଙ୍କ ମେସେଜଗୁଡ଼ିକୁ ଆକ୍ସେସ୍ କରିବାକୁ ଚାହୁଁଛି। ବିବରଣୀ ପାଇଁ ଟାପ୍ କରନ୍ତୁ।"</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"ମେସେଜଗୁଡ଼ିକୁ ଆକ୍ସେସ୍ କରିବା ପାଇଁ ଅନୁମତି ଦେବେ?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"ଏକ ଅବିଶ୍ୱସ୍ତ ବ୍ଲୁଟୁଥ୍ ଡିଭାଇସ୍, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], ଆପଣଙ୍କ ମେସେଜଗୁଡ଼ିକୁ ଆକ୍ସେସ୍ କରିବାକୁ ଚାହେଁ।\n\nଆପଣ [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] ସହ ପୂର୍ବରୁ ସଂଯୁକ୍ତ ହୋଇନାହାଁନ୍ତି।"</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"ଅବିଶ୍ୱସ୍ତ ଡିଭାଇସଟି ଆପଣଙ୍କ ଯୋଗାଯୋଗ ଏବଂ କଲ୍ ଲଗକୁ ଆକ୍ସେସ୍ କରିବାକୁ ଚାହେଁ। ବିବରଣୀ ପାଇଁ ଟାପ୍ କରନ୍ତୁ।"</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"ଯୋଗାଯୋଗ ଏବଂ କଲ୍ ଲଗକୁ ଆକ୍ସେସ୍ କରିବା ପାଇଁ ଅନୁମତି ଦେବେ?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"ଏକ ଅବିଶ୍ୱସ୍ତ ବ୍ଲୁଟୁଥ୍ ଡିଭାଇସ୍, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], ଆପଣଙ୍କ ଯୋଗାଯୋଗ ଏବଂ କଲ୍ ଲଗକୁ ଆକ୍ସେସ୍ କରିବାକୁ ଚାହେଁ। ଏଥିରେ ଇନକମିଂ ଏବଂ ଆଉଟଗୋଇଂ କଲଗୁଡ଼ିକ ବିଷୟରେ ଡାଟା ଅନ୍ତର୍ଭୁକ୍ତ ଅଛି।\n\nଆପଣ ପୂର୍ବରୁ [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] ସହ ସଂଯୁକ୍ତ ହୋଇନାହାଁନ୍ତି।"</string>
 </resources>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index 85bdc23..d3bc5e4 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 ਪਤੇ"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"ਰੱਖਿਅਤ ਕੀਤੇ ਨੈੱਟਵਰਕ"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"ਗਾਹਕੀਆਂ"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"ਹੋਰ ਨੈੱਟਵਰਕ"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP ਸੈਟਿੰਗਾਂ"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"ਵਾਈ-ਫਾਈ ਉੱਨਤ ਸੈਟਿੰਗਾਂ ਇਸ ਵਰਤੋਂਕਾਰ ਲਈ ਉਪਲਬਧ ਨਹੀਂ ਹਨ"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"ਰੱਖਿਅਤ ਕਰੋ"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"APN ਮਿਟਾਓ"</string>
     <string name="menu_new" msgid="6571230342655509006">"ਨਵਾਂ APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"ਰੱਖਿਅਤ ਕਰੋ"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"ਰੱਦ ਕਰੋ"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"ਰੱਦ ਕਰੋ"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"ਨਾਮ ਖੇਤਰ ਨੂੰ ਖਾਲੀ ਨਹੀਂ ਛੱਡਿਆ ਜਾ ਸਕਦਾ।"</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN ਨੂੰ ਖਾਲੀ ਨਹੀਂ ਛੱਡਿਆ ਜਾ ਸਕਦਾ।"</string>
@@ -1612,8 +1611,11 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"ਐਪਾਂ ਨੂੰ ਰੀਸੈੱਟ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"ਵਾਈ-ਫਾਈ, ਮੋਬਾਈਲ ਅਤੇ ਬਲੂਟੁੱਥ ਨੂੰ ਰੀਸੈੱਟ ਕਰੋ"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"ਇਹ ਨੈੱਟਵਰਕ ਦੀਆਂ ਸਾਰੀਆਂ ਸੈਟਿੰਗਾਂ ਨੂੰ ਰੀਸੈੱਟ ਕਰੇਗਾ, ਜਿਸ ਵਿੱਚ ਇਹ ਸ਼ਾਮਲ ਹਨ:\n\n"<li>"ਵਾਈ-ਫਾਈ"</li>\n<li>"ਮੋਬਾਈਲ ਡਾਟਾ"</li>\n<li>"ਬਲੂਟੁੱਥ"</li></string>
+    <!-- no translation found for erase_euicc_data_button (728078969563311737) -->
+    <skip />
     <string name="reset_esim_title" msgid="6152167073280852849">"ਡਾਊਨਲੋਡ ਕੀਤੇ ਸਿਮ ਮਿਟਾਓ"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"ਵਟਾਵੇਂ ਸਿਮ ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ, ਆਪਣੇ ਕੈਰੀਅਰ ਨਾਲ ਸੰਪਰਕ ਕਰੋ। ਇੰਝ ਕਰਨ ਨਾਲ ਕੋਈ ਵੀ ਮੋਬਾਈਲ ਸੇਵਾ ਪਲਾਨ ਰੱਦ ਨਹੀਂ ਹੋਣਗੇ।"</string>
+    <!-- no translation found for reset_esim_desc (3662444090563399131) -->
+    <skip />
     <string name="reset_network_button_text" msgid="2281476496459610071">"ਸੈਟਿੰਗਾਂ ਰੀਸੈੱਟ ਕਰੋ"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"ਕੀ ਸਾਰੀਆਂ ਨੈੱਟਵਰਕ ਸੈਟਿੰਗਾਂ ਰੀਸੈੱਟ ਕਰਨੀਆਂ ਹਨ? ਤੁਸੀਂ ਇਸ ਕਾਰਵਾਈ ਨੂੰ ਅਣਕੀਤਾ ਨਹੀਂ ਕਰ ਸਕਦੇ।"</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"ਕੀ ਸਾਰੀਆਂ ਨੈੱਟਵਰਕ ਸੈਟਿੰਗਾਂ ਰੀਸੈੱਟ ਕਰਕੇ ਡਾਊਨਲੋਡ ਕੀਤੇ ਸਿਮ ਮਿਟਾਉਣੇ ਹਨ? ਤੁਸੀਂ ਇਸ ਕਾਰਵਾਈ ਨੂੰ ਅਣਕੀਤਾ ਨਹੀਂ ਕਰ ਸਕਦੇ।"</string>
@@ -2456,10 +2458,9 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"ਟੈਬਲੈੱਟ ਦੀ ਵਰਤੋਂ ਆਮ ਨਾਲੋਂ ਜ਼ਿਆਦਾ ਹੋਈ ਹੈ"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"ਡੀਵਾਈਸ ਦੀ ਵਰਤੋਂ ਆਮ ਨਾਲੋਂ ਜ਼ਿਆਦਾ ਹੋਈ ਹੈ"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"ਬੈਟਰੀ ਆਮ ਨਾਲੋਂ ਪਹਿਲਾਂ ਖਤਮ ਹੋ ਸਕਦੀ ਹੈ"</string>
-    <!-- no translation found for battery_tip_limited_temporarily_title (3532338978617826383) -->
+    <!-- no translation found for battery_tip_limited_temporarily_title (7152799456221596915) -->
     <skip />
-    <!-- no translation found for battery_tip_limited_temporarily_summary (6837061824463128857) -->
-    <skip />
+    <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"ਬੈਟਰੀ ਕੁਝ ਸਮੇਂ ਲਈ ਸੀਮਤ। ਹੋਰ ਜਾਣਨ ਲਈ ਟੈਪ ਕਰੋ।"</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"ਤੁਹਾਡੇ ਫ਼ੋਨ ਦੀ ਵਰਤੋਂ ਆਮ ਨਾਲੋਂ ਜ਼ਿਆਦਾ ਕੀਤੀ ਗਈ ਹੈ। ਤੁਹਾਡੀ ਬੈਟਰੀ ਸ਼ਾਇਦ ਉਮੀਦ ਨਾਲੋਂ ਛੇਤੀ ਮੁੱਕ ਜਾਵੇ।\n\nਬੈਟਰੀ ਵਰਤੋਂ ਮੁਤਾਬਕ ਪ੍ਰਮੁੱਖ ਐਪਾਂ:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"ਤੁਹਾਡੇ ਟੈਬਲੈੱਟ ਦੀ ਵਰਤੋਂ ਆਮ ਨਾਲੋਂ ਜ਼ਿਆਦਾ ਕੀਤੀ ਗਈ ਹੈ। ਤੁਹਾਡੀ ਬੈਟਰੀ ਸ਼ਾਇਦ ਉਮੀਦ ਨਾਲੋਂ ਛੇਤੀ ਮੁੱਕ ਜਾਵੇ।\n\nਬੈਟਰੀ ਵਰਤੋਂ ਮੁਤਾਬਕ ਪ੍ਰਮੁੱਖ ਐਪਾਂ:"</string>
     <string name="battery_tip_dialog_message" product="device" msgid="2620789680336796054">"ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਦੀ ਵਰਤੋਂ ਆਮ ਨਾਲੋਂ ਜ਼ਿਆਦਾ ਕੀਤੀ ਗਈ ਹੈ। ਤੁਹਾਡੀ ਬੈਟਰੀ ਸ਼ਾਇਦ ਉਮੀਦ ਨਾਲੋਂ ਛੇਤੀ ਮੁੱਕ ਜਾਵੇ।\n\nਬੈਟਰੀ ਵਰਤੋਂ ਮੁਤਾਬਕ ਪ੍ਰਮੁੱਖ ਐਪਾਂ:"</string>
@@ -4653,6 +4654,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"ਵੱਧ-ਤੋਂ-ਵੱਧ ਦਿਖਣਯੋਗ ਡਾਟਾਸੈੱਟ"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"ਪੂਰਵ-ਨਿਰਧਾਰਤ ਮੁੱਲਾਂ \'ਤੇ ਰੀਸੈੱਟ ਕਰੋ"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"ਆਟੋਫਿਲ ਵਿਕਾਸਕਾਰ ਵਿਕਲਪਾਂ ਨੂੰ ਰੀਸੈੱਟ ਕਰ ਦਿੱਤਾ ਹੈ"</string>
+    <string name="location_category" msgid="3496759112306219062">"ਟਿਕਾਣਾ"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"ਸਥਿਤੀ ਪੱਟੀ ਟਿਕਾਣਾ ਸੂਚਕ"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"ਨੈੱਟਵਰਕ ਅਤੇ ਕਨੈਕਟੀਵਿਟੀ ਸਮੇਤ ਸਾਰੇ ਟਿਕਾਣਿਆਂ ਲਈ ਦਿਖਾਓ"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"GNSS ਮਾਪ ਨੂੰ ਜ਼ਬਰਦਰਸਤੀ ਲਾਗੂ ਕਰੋ"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"ਡਿਊਟੀ ਸਾਈਕਲਿੰਗ ਤੋਂ ਬਿਨਾਂ ਸਾਰੇ GNSS ਉਪਗ੍ਰਹਿ ਗਰੁੱਪਾਂ ਅਤੇ ਵਾਰਵਾਰਤਾਵਾਂ ਨੂੰ ਟਰੈਕ ਕਰੋ"</string>
     <string name="device_theme" msgid="5027604586494772471">"ਡੀਵਾਈਸ ਥੀਮ"</string>
     <string name="default_theme" msgid="4815428567082263639">"ਪੂਰਵ-ਨਿਰਧਾਰਤ"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"ਨੈੱਟਵਰਕ ਦਾ ਨਾਮ"</string>
@@ -4669,8 +4675,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"ਧਿਆਨ ਕੇਂਦਰਿਤ ਰੱਖਣ ਲਈ ਸੂਚਨਾਵਾਂ ਰੋਕੋ"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"ਵਿਸ਼ੇਸ਼ਤਾ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"ਇਸ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਬੰਦ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ ਕਿਉਂਕਿ ਇਹ ਤੁਹਾਡੇ ਫ਼ੋਨ ਨੂੰ ਹੌਲੀ ਕਰ ਦਿੰਦੀ ਹੈ"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"GNSS ਮਾਪ ਨੂੰ ਜ਼ਬਰਦਰਸਤੀ ਲਾਗੂ ਕਰੋ"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"ਡਿਊਟੀ ਸਾਈਕਲਿੰਗ ਤੋਂ ਬਿਨਾਂ ਸਾਰੇ GNSS ਉਪਗ੍ਰਹਿ ਗਰੁੱਪਾਂ ਅਤੇ ਵਾਰਵਾਰਤਾਵਾਂ ਨੂੰ ਟਰੈਕ ਕਰੋ"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"ਹਮੇਸ਼ਾਂ ਕ੍ਰੈਸ਼ ਵਿੰਡੋ ਦਿਖਾਓ"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"ਕਿਸੇ ਐਪ ਦੇ ਕ੍ਰੈਸ਼ ਹੋਣ \'ਤੇ ਹਰ ਵਾਰ ਵਿੰਡੋ ਦਿਖਾਓ"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"ANGLE ਸਮਰਥਿਤ ਐਪ ਚੁਣੋ"</string>
@@ -4738,8 +4742,7 @@
     <string name="prevent_ringing_option_mute_summary" msgid="4885288334872920616">"ਚਾਲੂ (ਮਿਊਟ)"</string>
     <string name="prevent_ringing_option_none_summary" msgid="7004926708584574224">"ਬੰਦ"</string>
     <string name="pref_title_network_details" msgid="7329759534269363308">"ਨੈੱਟਵਰਕ ਵੇਰਵੇ"</string>
-    <!-- no translation found for about_phone_device_name_warning (1938930553285875166) -->
-    <skip />
+    <string name="about_phone_device_name_warning" msgid="1938930553285875166">"ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਦਾ ਨਾਮ ਤੁਹਾਡੇ ਫ਼ੋਨ \'ਤੇ ਐਪਾਂ ਨੂੰ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ। ਇਸਨੂੰ ਤੁਹਾਡੇ ਬਲੂਟੁੱਥ ਡੀਵਾਈਸ ਨਾਲ ਕਨੈਕਟ ਕਰਨ, ਵਾਈ-ਫਾਈ ਨੈੱਟਵਰਕ ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਜਾਂ ਵਾਈ-ਫਾਈ ਹੌਟਸਪੌਟ ਸੈੱਟਅੱਪ ਕਰਨ \'ਤੇ ਹੋਰ ਲੋਕਾਂ ਵੱਲੋਂ ਵੀ ਦੇਖਿਆ ਜਾ ਸਕਦਾ ਹੈ।"</string>
     <string name="devices_title" msgid="649715719278562515">"ਡੀਵਾਈਸਾਂ"</string>
     <string name="homepage_all_settings" msgid="1877827279189801035">"ਸਾਰੀਆਂ ਸੈਟਿੰਗਾਂ"</string>
     <string name="homepage_personal_settings" msgid="8312279476519359656">"ਸੁਝਾਅ"</string>
@@ -4899,14 +4902,10 @@
     <string name="dsds_activation_failure_title" msgid="4467364110584914794">"ਸਿਮ ਨੂੰ ਕਿਰਿਆਸ਼ੀਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
     <string name="dsds_activation_failure_body_msg1" msgid="6303921196869256391">"ਸਿਮ ਹਟਾ ਕੇ ਦੁਬਾਰਾ ਪਾਓ। ਜੇ ਸਮੱਸਿਆ ਜਾਰੀ ਰਹਿੰਦੀ ਹੈ, ਤਾਂ ਆਪਣੇ ਡੀਵਾਈਸ ਨੂੰ ਮੁੜ-ਸ਼ੁਰੂ ਕਰੋ।"</string>
     <string name="dsds_activation_failure_body_msg2" msgid="73044349546544410">"ਸਿਮ ਨੂੰ ਦੁਬਾਰਾ ਚਾਲੂ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ। ਜੇ ਸਮੱਸਿਆ ਜਾਰੀ ਰਹਿੰਦੀ ਹੈ, ਤਾਂ ਆਪਣੇ ਡੀਵਾਈਸ ਨੂੰ ਮੁੜ-ਸ਼ੁਰੂ ਕਰੋ।"</string>
-    <!-- no translation found for sim_setup_channel_id (8797972565087458515) -->
-    <skip />
-    <!-- no translation found for post_dsds_reboot_notification_title_with_carrier (3308827462185135307) -->
-    <skip />
-    <!-- no translation found for post_dsds_reboot_notification_text (7533428378211541410) -->
-    <skip />
-    <!-- no translation found for sim_card_label (5632157635124050923) -->
-    <skip />
+    <string name="sim_setup_channel_id" msgid="8797972565087458515">"ਨੈੱਟਵਰਕ ਕਿਰਿਆਸ਼ੀਲਤਾ"</string>
+    <string name="post_dsds_reboot_notification_title_with_carrier" msgid="3308827462185135307">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> ਕਿਰਿਆਸ਼ੀਲ ਹੈ"</string>
+    <string name="post_dsds_reboot_notification_text" msgid="7533428378211541410">"SIM ਸੈਟਿੰਗਾਂ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ"</string>
+    <string name="sim_card_label" msgid="5632157635124050923">"ਸਿਮ ਕਾਰਡ"</string>
     <string name="erase_sim_dialog_title" msgid="881253002169177016">"ਕੀ ਇਹ ਡਾਊਨਲੋਡ ਕੀਤਾ ਸਿਮ ਮਿਟਾਉਣਾ ਹੈ?"</string>
     <string name="erase_sim_dialog_text" msgid="753031064269699885">"ਇਹ ਸਿਮ ਮਿਟਾਉਣ ਨਾਲ <xliff:g id="CARRIER_NAME_A">%1$s</xliff:g> ਸੇਵਾ ਇਸ ਡੀਵਾਈਸ ਤੋਂ ਹਟ ਜਾਂਦੀ ਹੈ।\n\n<xliff:g id="CARRIER_NAME_B">%1$s</xliff:g> ਲਈ ਸੇਵਾ ਰੱਦ ਨਹੀਂ ਕੀਤੀ ਜਾਵੇਗੀ।"</string>
     <string name="erase_sim_confirm_button" msgid="8309115684335320541">"ਮਿਟਾਓ"</string>
@@ -5059,14 +5058,29 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"ਵਾਈ-ਫਾਈ ਕਾਲਿੰਗ ਤੁਹਾਨੂੰ ਨਾਨ-ਕੈਰੀਅਰ ਨੈੱਟਵਰਕਾਂ, ਜਿਵੇਂ ਕਿ ਕੁਝ ਵਾਈ-ਫਾਈ ਨੈੱਟਵਰਕਾਂ, \'ਤੇ ਕਾਲਾਂ ਕਰਨ ਅਤੇ ਪ੍ਰਾਪਤ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੀ ਹੈ।"</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"ਕਾਲਾਂ"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"ਤਰਜੀਹੀ"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"ਕਾਲਾਂ ਲਈ ਤਰਜੀਹ"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"SMS ਲਈ ਤਰਜੀਹ"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"ਉਪਲਬਧ ਨਹੀਂ"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"ਕੋਈ ਸਿਮ ਨਹੀਂ"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"ਤਰਜੀਹਾਂ"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"ਜਨਤਕ ਨੈੱਟਵਰਕਾਂ ਨਾਲ ਕਨੈਕਟ ਕਰੋ"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"ਨੈੱਟਵਰਕ ਕਨੈਕਸ਼ਨ, ਇੰਟਰਨੈੱਟ, ਵਾਇਰਲੈੱਸ, ਡਾਟਾ, ਵਾਈ-ਫਾਈ, ਸੈਲਿਊਲਰ, ਮੋਬਾਈਲ, ਸੈੱਲ ਕੈਰੀਅਰ, 4G, 3G, 2G, LTE"</string>
-    <!-- no translation found for view_airplane_safe_networks (7390511371040078514) -->
-    <skip />
-    <!-- no translation found for turn_off_airplane_mode (1334192337050190071) -->
-    <skip />
+    <string name="view_airplane_safe_networks" msgid="7390511371040078514">"ਹਵਾਈ-ਜਹਾਜ਼ ਸੁਰੱਖਿਅਤ ਨੈੱਟਵਰਕ ਦੇਖੋ"</string>
+    <string name="turn_off_airplane_mode" msgid="1334192337050190071">"ਹਵਾਈ-ਜਹਾਜ਼ ਮੋਡ ਬੰਦ ਕਰੋ"</string>
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"ਬੈੱਡਟਾਈਮ ਮੋਡ ਚਾਲੂ ਹੋਣ ਕਰਕੇ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"ਸੂਚਨਾ ਦੀ ਮਹੱਤਤਾ ਨੂੰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਰੀਸੈੱਟ ਕਰੋ।"</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"ਐਪਾਂ"</string>
+    <!-- no translation found for bluetooth_message_access_notification_content (2986108412562309009) -->
+    <skip />
+    <!-- no translation found for bluetooth_message_access_dialog_title (9009836130395061579) -->
+    <skip />
+    <!-- no translation found for bluetooth_message_access_dialog_content (6004506637437582983) -->
+    <skip />
+    <!-- no translation found for bluetooth_phonebook_access_notification_content (4280361621526852063) -->
+    <skip />
+    <!-- no translation found for bluetooth_phonebook_access_dialog_title (7624607995928968721) -->
+    <skip />
+    <!-- no translation found for bluetooth_phonebook_access_dialog_content (2235876209172857819) -->
+    <skip />
 </resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 6a65107..e63bb6d 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -1062,8 +1062,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"Adresy IPv6"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Zapisane sieci"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Subskrypcje"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Inne sieci"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"Ustawienia adresu IP"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Zaawansowane ustawienia Wi‑Fi są niedostępne dla tego użytkownika"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Zapisz"</string>
@@ -1639,7 +1638,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Usuń APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"Nowy APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Zapisz"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Odrzuć"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Anuluj"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Nazwa nie może być pusta."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"Nazwa APN nie może być pusta."</string>
@@ -1654,8 +1653,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Aplikacje można zresetować"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Resetuj Wi-Fi, transmisję i Bluetootha"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Spowoduje to usunięcie wszystkich ustawień sieciowych, w tym:\n\n"<li>"Wi‑Fi"</li>\n<li>"mobilnej transmisji danych"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Wykasuj"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Usuń pobrane karty SIM"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Aby pobrać zastępczą kartę SIM, skontaktuj się z operatorem. Nie anuluje to Twoich abonamentów."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Nie spowoduje to anulowania Twoich abonamentów. Aby pobrać zastępcze karty SIM, skontaktuj się z operatorem."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Zresetuj ustawienia"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Zresetować wszystkie ustawienia sieci? Nie można cofnąć tej czynności."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Zresetować wszystkie ustawienia sieci i usunąć dane z pobranych kart SIM? Nie można cofnąć tej czynności."</string>
@@ -2518,7 +2518,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Tablet używany intensywniej niż zwykle"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Urządzenie używane intensywniej niż zwykle"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Bateria może wyczerpać się szybciej niż zwykle"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Oszczędzanie baterii"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Optymalizuję, by utrzymać baterię w dobrym stanie"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Bateria tymczasowo ograniczona. Kliknij, by dowiedzieć się więcej."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Telefon był używany intensywniej niż zwykle. Bateria może rozładować się szybciej.\n\nAplikacje najbardziej wyczerpujące baterię:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Tablet był używany intensywniej niż zwykle. Bateria może rozładować się szybciej.\n\nAplikacje najbardziej wyczerpujące baterię:"</string>
@@ -4811,6 +4811,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Maksymalna liczba widocznych zbiorów danych"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Przywróć wartości domyślne"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Zresetowano opcje programisty dotyczące autouzupełniania"</string>
+    <string name="location_category" msgid="3496759112306219062">"Lokalizacja"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Wskaźnik lokalizacji na pasku stanu"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Pokazuj w przypadku wszystkich lokalizacji, w tym określonych na podstawie sieci i połączeń"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Wymuś pełną procedurę pomiarów GNSS"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Śledź wszystkie konstelacje GNSS i częstotliwości bez uwzględniania współczynnika impulsu"</string>
     <string name="device_theme" msgid="5027604586494772471">"Motyw urządzenia"</string>
     <string name="default_theme" msgid="4815428567082263639">"Wartość domyślna"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Nazwa sieci"</string>
@@ -4827,8 +4832,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Wstrzymaj powiadomienia, by Cię nie rozpraszały"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Funkcja niedostępna"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Ta funkcja została wyłączona, bo spowalnia działanie telefonu"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Wymuś pełną procedurę pomiarów GNSS"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Śledź wszystkie konstelacje GNSS i częstotliwości bez uwzględniania współczynnika impulsu"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Zawsze pokazuj okno dialogowe z raportem o błędzie"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Pokazuj okno dialogowe przy każdym poważnym błędzie w aplikacji"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Wybierz aplikację obsługującą ANGLE"</string>
@@ -5218,6 +5221,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Połączenia przez Wi-Fi umożliwiają nawiązywanie i odbieranie połączeń w sieciach innych niż należące do operatorów, np. w niektórych sieciach Wi‑Fi."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Połączenia"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS-y"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"preferowane"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"preferowane połączenia"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"preferowane SMS-y"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"niedostępne"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Brak karty SIM"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Ustawienia"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Łącz się z sieciami publicznymi"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"połączenie sieciowe, internet, bezprzewodowy, dane, Wi-Fi, wi-fi, wi fi, komórka, telefon, operator komórkowy, 4g, 3g, 2g, lte"</string>
@@ -5226,4 +5234,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Niedostępne, ponieważ włączony jest tryb snu"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Ukończono resetowanie ważności powiadomień."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Aplikacje"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Niezaufane urządzenie chce uzyskać dostęp do Twoich wiadomości. Kliknij, by wyświetlić szczegóły."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Zezwolić na dostęp do wiadomości?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Niezaufane urządzenie Bluetooth, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], chce uzyskać dostęp do Twoich wiadomości.\n\nTwoje urządzenie nie łączyło się wcześniej z urządzeniem [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Niezaufane urządzenie chce uzyskać dostęp do Twoich kontaktów i rejestru połączeń. Kliknij, by wyświetlić szczegóły."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Zezwolić na dostęp do kontaktów i rejestru połączeń?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Niezaufane urządzenie Bluetooth, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], chce uzyskać dostęp do Twoich kontaktów i rejestru połączeń. Chodzi między innymi o dane o połączeniach przychodzących i wychodzących.\n\nTwoje urządzenie nie łączyło się wcześniej z urządzeniem [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
 </resources>
diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml
index 8703668..0721848 100644
--- a/res/values-pt-rBR/strings.xml
+++ b/res/values-pt-rBR/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"Endereços IPv6"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Redes salvas"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Assinaturas"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Outras redes"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"Configurações de IP"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"As configurações avançadas de Wi-Fi não estão disponíveis para esse usuário"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Salvar"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Excluir APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"Novo APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Salvar"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Descartar"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Cancelar"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"O campo Nome não pode ficar vazio."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"O APN não pode estar vazio."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Os apps podem ser redefinidos"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Redefinir Wi-Fi, rede móvel e Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Esta ação redefinirá todas as configurações de rede, inclusive:\n\n"<li>"Wi‑Fi"</li>\n<li>"Dados móveis"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Limpar"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Limpar chips salvos"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Para fazer o download de chips substitutos, entre em contato com a operadora. Isso não cancelará nenhum plano de serviços móveis."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Isso não cancelará nenhum plano de serviços móveis. Para fazer o download de chips substitutos, entre em contato com a operadora."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Redefinir configurações"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Redefinir todas as configurações de rede? Não é possível desfazer essa ação."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Redefinir todas as configurações de rede e limpar chips salvos? Não é possível desfazer essa ação."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Tablet usado além do normal"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Dispositivo usado além do normal"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"A bateria pode acabar antes do esperado"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Como preservar a integridade da bateria"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Otimizando para integridade da bateria"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Bateria limitada temporariamente. Toque para saber mais."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"O smartphone foi usado além do normal. A bateria pode acabar antes do esperado.\n\nApps que mais usam bateria:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"O tablet foi usado além do normal. A bateria pode acabar antes do esperado.\n\nApps que mais usam bateria:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Máximo de conjuntos de dados visíveis"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Redefinir para valores padrão"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"As opções do desenvolvedor de preenchimento automático foram redefinidas"</string>
+    <string name="location_category" msgid="3496759112306219062">"Local"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Indicador de local na barra de status"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Mostrar para todos os locais, incluindo rede e conectividade"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Forçar medições completas de GNSS"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Rastrear todas as constelações e frequências do GNSS sem nenhum ciclo de trabalho"</string>
     <string name="device_theme" msgid="5027604586494772471">"Tema do dispositivo"</string>
     <string name="default_theme" msgid="4815428567082263639">"Padrão"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Nome da rede"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Pausar notificações para manter o foco"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Recurso não disponível"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Esse recurso foi desativado porque causa lentidão no seu smartphone"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Forçar medições completas de GNSS"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Rastrear todas as constelações e frequências do GNSS sem nenhum ciclo de trabalho"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Sempre mostrar a caixa de diálogo de falha"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Mostrar a caixa de diálogo sempre que um app falha"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Selecionar app ativado para ANGLE"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"A chamada no Wi-Fi permite que você faça e receba chamadas por redes sem operadora, como algumas redes Wi-Fi."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Chamadas"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"preferido"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"preferido para chamadas"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"preferido para SMS"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"indisponível"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Sem chip"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Preferências"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Conectar-se a redes públicas"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"conexão de rede, internet, sem fio, dados, wifi, wi-fi, wi fi, celular, rede móvel, operadora de celular, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Indisponível durante o Modo noite"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Redefinição da importância de notificações concluída."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Apps"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Um dispositivo não confiável quer acessar suas mensagens. Toque para ver detalhes."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Conceder acesso às mensagens?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Um dispositivo Bluetooth não confiável, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], quer acessar suas mensagens.\n\nVocê não se conectou a [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] antes."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Um dispositivo não confiável quer acessar seus contatos e seu registro de chamadas. Toque para ver detalhes."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Conceder acesso aos contatos e ao registro de chamadas?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Um dispositivo Bluetooth não confiável, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], quer acessar seus contatos e seu registro de chamadas. Isso inclui dados sobre chamadas recebidas e realizadas.\n\nVocê não se conectou a [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] antes."</string>
 </resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 0637c58..f79fc43 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"Endereços IPv6"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Redes guardadas"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Subscrições"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Outras redes"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"Definições de IP"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"As definições avançadas de Wi-Fi não estão disponíveis para este utilizador"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Guardar"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Eliminar APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"Novo APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Guardar"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Rejeitar"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Cancelar"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"O campo Nome não pode estar vazio."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"O APN não pode estar vazio."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"É possível repor as apps."</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Repor Wi-Fi, dados e Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Esta ação repõe todas as definições de rede, incluindo:\n\n"<li>"Wi‑Fi"</li>\n<li>"Dados móveis"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Apagar"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Apagar SIMs transferidos"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Para transferir SIMs de substituição, contacte o seu operador. Esta ação não cancela qualquer plano de serviços móveis."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Esta ação não cancela qualquer plano de serviços móveis. Para transferir SIMs de substituição, contacte o seu operador."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Repor definições"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Pretende repor todas as definições de rede? Não é possível anular esta ação."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Pretende repor todas as definições de rede e apagar os SIMs transferidos? Não é possível anular esta ação."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Tablet utilizado mais do que o habitual"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Dispositivo utilizado mais do que o habitual"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Pode ficar sem bateria mais cedo do que o habitual."</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"A preservar o estado da bateria"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"A otimizar o estado da bateria"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Bateria limitada temporariamente. Toque para saber mais."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"O seu telemóvel tem sido utilizado com mais frequência do que o habitual. A bateria pode esgotar-se mais cedo do que o esperado.\n\nPrincipais aplicações por utilização da bateria:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"O seu tablet tem sido utilizado com mais frequência do que o habitual. A bateria pode esgotar-se mais cedo do que o esperado.\n\nPrincipais aplicações por utilização da bateria:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Número máx. de conjuntos de dados visíveis"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Repor os valores predefinidos"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"As opções de preenchimento automático do programador foram repostas."</string>
+    <string name="location_category" msgid="3496759112306219062">"Localização"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Indicador da localização da barra de estado"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Apresente para todas as localizações, incluindo a rede e a conetividade."</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Forçar medições de GNSS completas"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Monitorizar todas as constelações e frequências de GNSS sem ciclos"</string>
     <string name="device_theme" msgid="5027604586494772471">"Tema do dispositivo"</string>
     <string name="default_theme" msgid="4815428567082263639">"Predefinição"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Nome da rede"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Coloque as notificações em pausa para se manter concentrado."</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Funcionalidade não disponível."</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Esta funcionalidade foi desativada porque torna o seu telemóvel lento."</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Forçar medições de GNSS completas"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Monitorizar todas as constelações e frequências de GNSS sem ciclos"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Mostrar sempre a caixa de diálogo de falhas"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Mostrar a caixa de diálogo sempre que uma aplicação falhar"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Selecionar aplicação compatível com o ANGLE"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"As Chamadas Wi-Fi permitem-lhe fazer e receber chamadas através de redes sem operador móvel, tais como algumas redes Wi‑Fi."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Chamadas"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"preferidas"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"chamadas preferidas"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"mensagens SMS preferidas"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"indisponíveis"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"sem cartão SIM"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Preferências"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Ligar a redes públicas"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"ligação de rede, internet, sem fios, dados, wifi, wi-fi, wi fi, telemóvel, dispositivo móvel, operador de telemóvel, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Não disponível porque o modo de hora de dormir está ativado."</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Reposição da importância das notificações concluída."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Apps"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Um dispositivo não fidedigno pretende aceder às suas mensagens. Toque para obter detalhes."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Pretende permitir o acesso às mensagens?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Um dispositivo Bluetooth não fidedigno, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], pretende aceder às suas mensagens.\n\nNão estabeleceu ligação ao dispositivo [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] anteriormente."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Um dispositivo não fidedigno pretende aceder aos seus contactos e registo de chamadas. Toque para obter detalhes."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Pretende permitir o acesso aos contactos e registo de chamadas?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Um dispositivo Bluetooth não fidedigno, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], pretende aceder aos seus contactos e registo de chamadas. Isto inclui dados acerca de chamadas recebidas e efetuadas.\n\nNão estabeleceu ligação ao dispositivo [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] anteriormente."</string>
 </resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 8703668..0721848 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"Endereços IPv6"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Redes salvas"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Assinaturas"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Outras redes"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"Configurações de IP"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"As configurações avançadas de Wi-Fi não estão disponíveis para esse usuário"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Salvar"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Excluir APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"Novo APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Salvar"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Descartar"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Cancelar"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"O campo Nome não pode ficar vazio."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"O APN não pode estar vazio."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Os apps podem ser redefinidos"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Redefinir Wi-Fi, rede móvel e Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Esta ação redefinirá todas as configurações de rede, inclusive:\n\n"<li>"Wi‑Fi"</li>\n<li>"Dados móveis"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Limpar"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Limpar chips salvos"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Para fazer o download de chips substitutos, entre em contato com a operadora. Isso não cancelará nenhum plano de serviços móveis."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Isso não cancelará nenhum plano de serviços móveis. Para fazer o download de chips substitutos, entre em contato com a operadora."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Redefinir configurações"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Redefinir todas as configurações de rede? Não é possível desfazer essa ação."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Redefinir todas as configurações de rede e limpar chips salvos? Não é possível desfazer essa ação."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Tablet usado além do normal"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Dispositivo usado além do normal"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"A bateria pode acabar antes do esperado"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Como preservar a integridade da bateria"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Otimizando para integridade da bateria"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Bateria limitada temporariamente. Toque para saber mais."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"O smartphone foi usado além do normal. A bateria pode acabar antes do esperado.\n\nApps que mais usam bateria:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"O tablet foi usado além do normal. A bateria pode acabar antes do esperado.\n\nApps que mais usam bateria:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Máximo de conjuntos de dados visíveis"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Redefinir para valores padrão"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"As opções do desenvolvedor de preenchimento automático foram redefinidas"</string>
+    <string name="location_category" msgid="3496759112306219062">"Local"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Indicador de local na barra de status"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Mostrar para todos os locais, incluindo rede e conectividade"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Forçar medições completas de GNSS"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Rastrear todas as constelações e frequências do GNSS sem nenhum ciclo de trabalho"</string>
     <string name="device_theme" msgid="5027604586494772471">"Tema do dispositivo"</string>
     <string name="default_theme" msgid="4815428567082263639">"Padrão"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Nome da rede"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Pausar notificações para manter o foco"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Recurso não disponível"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Esse recurso foi desativado porque causa lentidão no seu smartphone"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Forçar medições completas de GNSS"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Rastrear todas as constelações e frequências do GNSS sem nenhum ciclo de trabalho"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Sempre mostrar a caixa de diálogo de falha"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Mostrar a caixa de diálogo sempre que um app falha"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Selecionar app ativado para ANGLE"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"A chamada no Wi-Fi permite que você faça e receba chamadas por redes sem operadora, como algumas redes Wi-Fi."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Chamadas"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"preferido"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"preferido para chamadas"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"preferido para SMS"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"indisponível"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Sem chip"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Preferências"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Conectar-se a redes públicas"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"conexão de rede, internet, sem fio, dados, wifi, wi-fi, wi fi, celular, rede móvel, operadora de celular, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Indisponível durante o Modo noite"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Redefinição da importância de notificações concluída."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Apps"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Um dispositivo não confiável quer acessar suas mensagens. Toque para ver detalhes."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Conceder acesso às mensagens?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Um dispositivo Bluetooth não confiável, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], quer acessar suas mensagens.\n\nVocê não se conectou a [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] antes."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Um dispositivo não confiável quer acessar seus contatos e seu registro de chamadas. Toque para ver detalhes."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Conceder acesso aos contatos e ao registro de chamadas?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Um dispositivo Bluetooth não confiável, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], quer acessar seus contatos e seu registro de chamadas. Isso inclui dados sobre chamadas recebidas e realizadas.\n\nVocê não se conectou a [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] antes."</string>
 </resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index e126ed3..82e6e7c 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -1042,8 +1042,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"Adrese IPv6"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Rețele salvate"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Abonamente"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Alte rețele"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"Setări IP"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Setările avansate de Wi‑Fi nu sunt disponibile pentru acest utilizator"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Salvați"</string>
@@ -1618,7 +1617,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Ștergeți APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"APN nou"</string>
     <string name="menu_save" msgid="6611465355127483100">"Salvați"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Renunțați"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Anulați"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Câmpul Nume nu poate fi necompletat."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"Numele APN nu poate fi necompletat."</string>
@@ -1633,8 +1632,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Aplicațiile pot fi resetate"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Resetați Wi-Fi, date mobile și Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Astfel, toate setările pentru rețea vor fi reinițializate, inclusiv:\n\n"<li>"Wi‑Fi,"</li>\n<li>"date mobile,"</li>\n<li>"Bluetooth."</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Ștergeți"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Ștergeți SIM-urile descărcate"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Pentru a descărca SIM-urile de înlocuire, contactați operatorul. Nu se va anula niciun abonament de servicii mobile."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Acest lucru nu va anula niciun abonament de servicii mobile. Pentru a descărca SIM-uri de înlocuire, contactați operatorul."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Resetați setările"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Restabiliți toate setările pentru rețea? Nu puteți anula această acțiune."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Resetați toate setările pentru rețea și ștergeți SIM-urile descărcate? Nu puteți anula această acțiune."</string>
@@ -2487,7 +2487,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Tabletă folosită mai mult decât de obicei"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Dispozitiv folosit mai mult decât de obicei"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Bateria se poate descărca mai repede decât de obicei"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Economisirea bateriei"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Se fac optimizări pentru buna funcționare a bateriei"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Baterie limitată temporar. Atingeți ca să aflați mai multe."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Telefonul dvs. a fost folosit mai mult decât de obicei. Este posibil ca bateria să se descarce mai repede decât vă așteptați.\n\nAplicațiile care folosesc bateria cel mai mult:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Tableta a fost folosită mai mult decât de obicei. Este posibil ca bateria să se descarce mai repede decât vă așteptați.\n\nAplicațiile care folosesc bateria cel mai mult:"</string>
@@ -4731,6 +4731,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Seturi de date cu vizibilitate maximă"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Resetați la valorile prestabilite"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Opțiunile dezvoltatorului de completare automată au fost resetate"</string>
+    <string name="location_category" msgid="3496759112306219062">"Locație"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Indicator de locația pentru bara de stare"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Afișați pentru toate locațiile, inclusiv rețeaua și conectivitatea"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Forțați măsurători GNSS complete"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Urmăriți toate constelațiile și frecvențele GNSS fără ciclu de funcționare"</string>
     <string name="device_theme" msgid="5027604586494772471">"Tema dispozitivului"</string>
     <string name="default_theme" msgid="4815428567082263639">"Prestabilită"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Numele rețelei"</string>
@@ -4747,8 +4752,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Întrerupeți notificările pentru a vă păstra concentrarea"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Funcție indisponibilă"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Această funcție a fost dezactivată deoarece vă încetinește telefonul"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Forțați măsurători GNSS complete"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Urmăriți toate constelațiile și frecvențele GNSS fără ciclu de funcționare"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Afișați întotdeauna caseta de dialog pentru blocări"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Afișați caseta de dialog de fiecare dată când se blochează o aplicație"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Selectați aplicația compatibilă cu ANGLE"</string>
@@ -5135,6 +5138,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Cu ajutorul apelării prin Wi-Fi, puteți să inițiați și să primiți apeluri prin rețele diferite de cele de operator, cum ar fi rețelele Wi‑Fi."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Apeluri"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"preferate"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"apeluri preferate"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"SMS-uri preferate"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"indisponibile"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Niciun card SIM"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Preferințe"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Conectați-vă la rețele publice"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"conexiune la rețea, internet, wireless, date, wifi, wi-fi, wi fi, celular, mobil, operator servicii mobile, 4g, 3g, 2g, lte"</string>
@@ -5143,4 +5151,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Indisponibil deoarece modul ora de culcare este activat"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"S-a finalizat resetarea importanței notificărilor."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Aplicații"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Un dispozitiv care nu prezintă încredere solicită acces la mesajele dvs. Atingeți pentru detalii."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Permiteți accesul la mesaje?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Un dispozitiv Bluetooth care nu prezintă încredere, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], solicită acces la mesajele dvs.\n\nNu v-ați mai conectat la [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Un dispozitiv care nu prezintă încredere solicită acces la agenda și jurnalul dvs. de apeluri. Atingeți pentru detalii."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Permiteți accesul la agendă și la jurnalul de apeluri?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Un dispozitiv Bluetooth care nu prezintă încredere, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], solicită acces la agenda și jurnalul dvs. de apeluri. Aici sunt incluse date despre apelurile primite și efectuate.\n\nNu v-ați mai conectat la [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
 </resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 793a8f1..7259f55 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -1062,8 +1062,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6-адреса"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Сохраненные сети"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Подписки"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Другие сети"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"Настройки IP"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Расширенные настройки Wi‑Fi недоступны для этого пользователя"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Сохранить"</string>
@@ -1639,7 +1638,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Удалить APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"Новая точка доступа"</string>
     <string name="menu_save" msgid="6611465355127483100">"Сохранить"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Отменить"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Отмена"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Необходимо указать имя."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"Необходимо указать APN."</string>
@@ -1654,8 +1653,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Вы можете сбросить настройки приложений"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Сбросить настройки Wi-Fi, мобильного Интернета и Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"На устройстве будут сброшены все сетевые настройки, в том числе:\n\n"<li>"Wi‑Fi"</li>\n<li>"Мобильный Интернет"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Удалить"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Удалить скачанные SIM-карты"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Чтобы скачать новую SIM-карту, свяжитесь с оператором. Это действие не повлияет на ваши тарифные планы."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Это действие не повлияет на ваши тарифные планы. Чтобы скачать новый профиль eSIM, свяжитесь с оператором связи."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Сбросить настройки"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Сбросить все настройки сети? Это действие нельзя отменить."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Сбросить все сетевые настройки и удалить скачанные SIM-карты? Это действие нельзя отменить."</string>
@@ -2518,7 +2518,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Планшет используется больше, чем обычно"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Устройство используется больше, чем обычно"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Заряд батареи расходуется быстрее, чем обычно"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Увеличение срока службы батареи"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Оптимизация для увеличения срока службы батареи"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Уровень заряда временно ограничен. Нажмите, чтобы узнать подробности."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Телефон используется интенсивнее, чем обычно. Из-за этого батарея может разрядиться быстрее.\n\nПриложения с самым высоким энергопотреблением:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Планшет используется интенсивнее, чем обычно. Из-за этого батарея может разрядиться быстрее.\n\nПриложения с самым высоким энергопотреблением:"</string>
@@ -4811,6 +4811,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Максимальное количество видимых наборов данных"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Восстановить значения по умолчанию"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Настройки автозаполнения для разработчиков сброшены"</string>
+    <string name="location_category" msgid="3496759112306219062">"Местоположение"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Индикатор местоположения в строке состояния"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Показывать для всех местоположений, включая определяемые через сеть и подключение"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Полные измерения GNSS"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Отслеживать все группировки GNSS и частоты без рабочего цикла"</string>
     <string name="device_theme" msgid="5027604586494772471">"Тема устройства"</string>
     <string name="default_theme" msgid="4815428567082263639">"По умолчанию"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Название сети"</string>
@@ -4827,8 +4832,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Заблокируйте отвлекающие уведомления"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Функция недоступна"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Эта функция отключена, поскольку она замедляет работу телефона."</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Полные измерения GNSS"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Отслеживать все группировки GNSS и частоты без рабочего цикла"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Всегда показывать сообщение об ошибке"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Показывать диалог при каждом сбое приложения"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Выбрать приложение с поддержкой ANGLE"</string>
@@ -5218,6 +5221,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Благодаря функции \"Звонки по Wi-Fi\" вы можете совершать и принимать вызовы через некоторые сети Wi-Fi, а не операторов связи."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Звонки"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"Предпочтительно"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"Предпочтительно звонки"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"Предпочтительно SMS"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"Недоступно"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Нет SIM-карты"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Настройки"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Подключаться к общедоступным сетям"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"сетевое подключение, Интернет, беспроводная сеть, передача данных, Wi-Fi, wifi, wi fi, сотовая сеть, мобильный Интернет, сотовый оператор, 4G, 3G, 2G, LTE"</string>
@@ -5226,4 +5234,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Недоступно в ночном режиме"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Сброс настроек важности выполнен."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Приложения"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Неизвестное устройство запрашивает доступ к вашим сообщениям. Нажмите, чтобы узнать больше."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Предоставить доступ к сообщениям?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Неизвестное устройство Bluetooth ([<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>]) запрашивает доступ к вашим сообщениям.\n\nЭто ваше первое подключение к устройству [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Неизвестное устройство запрашивает доступ к вашим контактам и списку вызовов. Нажмите, чтобы узнать больше."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Предоставить доступ к контактам и списку вызовов?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Неизвестное устройство Bluetooth ([<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>]) запрашивает доступ к вашим контактам и списку вызовов, включая данные о входящих и исходящих звонках.\n\nЭто ваше первое подключение к устройству [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
 </resources>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index dab8263..d2d8b52 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 ලිපින"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"සුරකින ලද ජාල"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"දායකත්ව"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"වෙනත් ජාල"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP සැකසීම්"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"මෙම පරිශීලකයා සඳහා Wi‑Fi උසස් සැකසීම් නැත"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"සුරකින්න"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"APN මකන්න"</string>
     <string name="menu_new" msgid="6571230342655509006">"නව APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"සුරකින්න"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"ඉවත ලන්න"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"අවලංගු කරන්න"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"නම ක්ෂේත්‍රය හිස් විය නොහැක."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN හිස් විය නොහැක."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"යෙදුම් යළි සැකසිය නොහැකිය"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Wi-Fi, ජංගම, බ්ලූටූත් යළි සකසන්න"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"මෙය, පහත ඒවා ඇතුළුව සියලු ජාල සැකසීම් යළි සකසනු ඇත:\n\n"<li>"Wi‑Fi"</li>\n<li>"ජංගම දත්ත"</li>\n<li>"බ්ලූටූත්"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"මකන්න"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"බාගත් SIM පත් මකන්න"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"ප්‍රතිස්ථාපන SIM පත් බාගැනීමට, ඔබේ වාහකයා සම්බන්ධ කර ගන්න. මෙය ජංගම සේවා සැලසුම් කිසිවක් අවලංගු නොකරයි."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"මෙය ජංගම සේවා සැලසුම් කිසිවක් අවලංගු නොකරනු ඇත. ප්‍රතිස්ථාපන SIM බාගැනීමට, ඔබගේ වාහකය අමතන්න."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"සැකසීම් යළි පිහිටුවන ලදි"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"සියලු ජාල සැකසීම් යළි සකසන්නේද? ඔබට මෙම ක්‍රියාව අස් කළ නොහැක."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"සියලු ජාල සැකසීම් යළි සකසන අතර බාගත් SIM මකන්නේද? ඔබට මෙම ක්‍රියාව අස් කළ නොහැක."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"ටැබ්ලට් උපාංගය සාමාන්‍යයට වඩා වැඩියෙන් භාවිත කර ඇත"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"උපාංගය සාමාන්‍යයට වඩා වැඩියෙන් භාවිත කර ඇත"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"බැටරිය සාමාන්‍යයට වඩා කලින් අවසන් විය හැක"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"බැටරි සෞඛ්‍යය ආරක්ෂා කරමින්"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"බැටරි සෞඛ්‍යය සඳහා ප්‍රශස්ත කරමින්"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"බැටරිය තාවකාලිකව සීමිතයි. තව දැන ගැනීමට තට්ටු කරන්න."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"ඔබේ දුරකථනය සාමාන්‍යයට වඩා වැඩිපුර භාවිත කර ඇත. ඔබගේ බැටරිය බලාපොරොත්තු වූවාට වඩා ඉක්මනින් අවසන් විය හැක.\n\nබැටරි භාවිතයට අනුව ඉහළම යෙදුම්:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"ඔබේ ටැබ්ලටය සාමාන්‍යයට වඩා වැඩිපුර භාවිත කර ඇත. ඔබගේ බැටරිය බලාපොරොත්තු වූවාට වඩා ඉක්මනින් අවසන් විය හැක.\n\nබැටරි භාවිතයට අනුව ඉහළම යෙදුම්:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"උපරිම දෘශ්‍යමාන දත්ත කට්ටල"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"පෙරනිමි අගයන්ට යළි සකසන්න"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"ස්වයං පිරවුම් සංවර්ධක විකල්ප යළි සකසා ඇත"</string>
+    <string name="location_category" msgid="3496759112306219062">"ස්ථානය"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"තත්ත්ව තීරු ස්ථාන දර්ශකය"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"ජාලය සහ සබැඳුම් හැකියාව ඇතුළුව, සියලු ස්ථාන සඳහා පෙන්වන්න"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"සම්පූර්ණ GNSS මිනුම් බලාත්මක කරන්න"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"කාර්ය චක්‍රය රහිත සියලු GNSS සබැඳි තාරකා ගෝල සහ සංඛ්‍යාත"</string>
     <string name="device_theme" msgid="5027604586494772471">"උපාංග තේමාව"</string>
     <string name="default_theme" msgid="4815428567082263639">"පෙරනිමි"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"ජාල නම"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"අවධානය යොමු කිරීම සඳහා දැනුම්දීම් විරාම කරන්න"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"විශේෂාංගය නොලැබේ"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"මෙම විශේෂාංගය ඔබේ දුරකථනය මන්දගාමී කරන බැවින් මෙය අක්‍රිය කර ඇත"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"සම්පූර්ණ GNSS මිනුම් බලාත්මක කරන්න"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"කාර්ය චක්‍රය රහිත සියලු GNSS සබැඳි තාරකා ගෝල සහ සංඛ්‍යාත"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"බිඳ වැටීම් සංවාදය සැම විට පෙන්වන්න"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"යෙදුමක් බිඳ වැටෙන සෑම විටම සංවාදය පෙන්වන්න"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"ANGLE සබල යෙදුමක් තෝරන්න"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"සමහර Wi-Fi ජාල වැනි වාහක නොවන ජාල හරහා ඇමතුම් ලබා ගැනීමට සහ ලැබීමට Wi-Fi ඇමතීම ඔබට ඉඩ දෙයි."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"ඇමතුම්"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"වඩා කැමති"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"වඩා කැමති ඇමතුම්"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"වඩා කැමති SMS"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"ලබා ගත නොහැකිය"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"SIM නැත"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"මනාප"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"පොදු ජාලයකට සම්බන්ධ වන්න"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"ජාල සම්බන්ධතාව, අන්තර්ජාලය, රැහැන් රහිත, දත්ත, wifi, wi-fi, wi fi, සෙලියුලර්, ජංගම, සෙල් වාහක, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"නිද්‍රා කාල ප්‍රකාරය ක්‍රියාත්මක නිසා ලබා ගත නොහැකිය"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"දැනුම්දීම්වල වැදගත්කම යළි සැකසීම සම්පූර්ණ කරන ලදි."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"යෙදුම්"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"විශ්වාසදායී නොවන උපාංගයකට ඔබගේ පණිවිඩ වෙත ප්‍රවේශ විමට අවශ්‍යයි. විස්තර සඳහා තට්ටු කරන්න."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"පණිවිඩවලට ප්‍රවේශ වීමට ඉඩ දෙන්නද?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"විශ්වාසදායී නොවන බ්ලූටූත් උපාංගයකට, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], ඔබගේ පණිවිඩවලට ප්‍රවේශ වීමට අවශ්‍යයි.\n\nඔබ මීට පෙර [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] වෙත සබැඳී නැත."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"විශ්වාසදායී නොවන බ්ලූටූත් උපාංගයකට, ඔබගේ සම්බන්ධතාවලට සහ ඇමතුම් ලොගයට ප්‍රවේශ වීමට අවශ්‍යයි. විස්තර සඳහා තට්ටු කරන්න."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"සම්බන්ධතා සහ ඇමතුම් ලොගය වෙත ප්‍රවේශය ඉඩ දෙන්නද?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"විශ්වාසදායී නොවන බ්ලූටූත් උපාංගයකට, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], ඔබගේ සම්බන්ධතාවලට සහ ඇමතුම් ලොගයට ප්‍රවේශ වීමට අවශ්‍යයි. පැමිණෙන සහ පිටතට යන ඇමතුම් පිළිබඳ දත්ත මෙයට ඇතුළත් වේ.\n\nඔබ මීට පෙර [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] වෙත සබැඳී නැත."</string>
 </resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 143cda6..e1b6ea5 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -1062,8 +1062,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"Adresy IPv6"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Uložené siete"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Odbery"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Ostatné siete"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"Nastavenia adresy IP"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Rozšírené nastavenia Wi‑Fi nie sú pre tohto používateľa dostupné"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Uložiť"</string>
@@ -1639,7 +1638,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Odstrániť názov prístupového bodu (APN)"</string>
     <string name="menu_new" msgid="6571230342655509006">"Nový prístupový bod"</string>
     <string name="menu_save" msgid="6611465355127483100">"Uložiť"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Zahodiť"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Zrušiť"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Pole Meno nemôže byť prázdne."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"Názov prístupového bodu (APN) nemôže byť prázdny."</string>
@@ -1654,8 +1653,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Aplikácie sa dajú resetovať"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Resetovať Wi‑Fi, dáta a Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Touto akciou obnovíte nastavenia všetkých sietí vrátane\n\n"<li>"Wi‑Fi"</li>\n<li>"mobilnej siete"</li>\n<li>"siete Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Vymazať"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Vymazať stiahnuté SIM karty"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Ak chcete stiahnuť náhradné SIM karty, kontaktujte operátora. Nezrušíte tým žiadne tarify mobilných služieb."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Nezrušíte tým žiadne tarify mobilných služieb. Ak si chcete stiahnuť náhradné SIM karty, kontaktujte operátora."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Resetovať nastavenia"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Chcete resetovať všetky nastavenia sietí? Túto akciu nie je možné vrátiť späť."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Chcete resetovať všetky nastavenia sietí a vymazať stiahnuté SIM karty? Túto akciu nie je možné vrátiť späť."</string>
@@ -2518,7 +2518,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Tablet bol používaný viac ako obvykle"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Zariadenie bolo používané viac ako obvykle"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Batéria sa môže vybiť skôr ako obvykle"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Uchovanie životnosti batérie"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Optimalizácia na zaistenie dobrého stavu batérie"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Batéria je dočasne obmedzená. Viac sa dozviete po klepnutí."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Telefón sa používa viac ako obvykle. Batéria sa možno vybije skôr, ako sa očakávalo.\n\nAplikácie s najväčšou spotrebou batérie:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Tablet sa používa viac ako obvykle. Batéria sa možno vybije skôr, ako sa očakávalo.\n\nAplikácie s najväčšou spotrebou batérie:"</string>
@@ -4811,6 +4811,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Max. viditeľných množín dát"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Resetovať na predvolené hodnoty"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Možnosti automatického dopĺňania pre vývojárov boli obnovené"</string>
+    <string name="location_category" msgid="3496759112306219062">"Miesto"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Indikátor umiestnenia stavového riadka"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Zobrazí všetky miesta vrátane siete a pripojenia"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Vynútiť úplné meranie GNSS"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Sledovať všetky konštelácie a frekvencie GNSS bez cyklického vypínania a zapínania"</string>
     <string name="device_theme" msgid="5027604586494772471">"Motív zariadenia"</string>
     <string name="default_theme" msgid="4815428567082263639">"Predvolený"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Názov siete"</string>
@@ -4827,8 +4832,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Pozastavte upozornenia, aby ste sa mohli sústrediť"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Funkcia nie je k dispozícii"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Táto funkcia bola vypnutá, pretože spomaľuje telefón"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Vynútiť úplné meranie GNSS"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Sledovať všetky konštelácie a frekvencie GNSS bez cyklického vypínania a zapínania"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Vždy zobrazovať dialógové okno zlyhania"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Zobraziť dialógové okno pri každom zlyhaní aplikácie"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Vybrať aplikáciu podporujúcu ANGLE"</string>
@@ -5218,6 +5221,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Volanie cez Wi‑Fi vám umožňuje volať a prijímať hovory cez siete bez operátora, ako sú niektoré siete Wi-Fi."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Hovory"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"preferované"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"preferujú sa hovory"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"preferujú sa správy SMS"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"nie je k dispozícii"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Žiadna SIM karta"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Predvoľby"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Pripájať k verejným sieťam"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"pripojenie k sieti, internet, bezdrôtové, dátové, wifi, wi-fi, wi fi, mobilné, mobilný operátor, 4g, 3g, 2g, lte"</string>
@@ -5226,4 +5234,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Nedostupné, pretože je zapnutý režim večierky"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Resetovanie dôležitosti upozornenia je dokončené."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Aplikácie"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Nedôveryhodné zariadenie vyžaduje prístup k vašim správam. Klepnutím zobrazíte podrobnosti."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Chcete povoliť prístup k správam?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Nedôveryhodné zariadenie s rozhraním Bluetooth [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>] vyžaduje prístup k vašim správam.\n\nK zariadeniu [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] ste sa predtým nikdy nepripojili."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Nedôveryhodné zariadenie vyžaduje prístup k vašim kontaktom a zoznamu hovorov. Klepnutím zobrazíte podrobnosti."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Chcete povoliť prístup ku kontaktom a zoznamu hovorov?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Nedôveryhodné zariadenie s rozhraním Bluetooth [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>] vyžaduje prístup k vašim kontaktom a zoznamu hovorov. Zahŕňa to údaje o prichádzajúcich a odchádzajúcich hovoroch.\n\nK zariadeniu [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] ste sa predtým nikdy nepripojili."</string>
 </resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 56e394b..5433ff1 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -1062,8 +1062,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"Naslovi IPv6"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Shranjena omrežja"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Naročnine"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Druga omrežja"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"Nastavitve nasl. IP"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Dodatne nastavitve za Wi-Fi temu uporabniku niso na voljo"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Shrani"</string>
@@ -1639,7 +1638,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Izbriši APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"Nov APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Shrani"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Zavrzi"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Prekliči"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Polje z imenom ne sme biti prazno."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN ne sme biti prazen."</string>
@@ -1654,8 +1653,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Aplikacije je mogoče ponastaviti"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Ponastavi Wi-Fi, mob. podatke in Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"S tem boste ponastavili vse omrežne nastavitve, vključno s temi:\n\n"<li>"Wi‑Fi"</li>\n<li>"Prenos podatkov v mobilnih omrežjih"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Izbriši"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Brisanje prenesenih kartic SIM"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Če želite prenesti nadomestne kartice SIM, se obrnite na operaterja. S tem ne boste prekinili nobenega naročniškega paketa za mobilno telefonijo."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"S tem ne boste prekinili nobenega naročniškega paketa za mobilno telefonijo. Če želite prenesti nadomestne kartice SIM, se obrnite na operaterja."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Ponastavi nastavitve"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Želite ponastaviti vse omrežne nastavitve? Tega dejanja ni mogoče razveljaviti."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Želite ponastaviti vse omrežne nastavitve in izbrisati prenesene kartice SIM? Tega dejanja ni mogoče razveljaviti."</string>
@@ -2518,7 +2518,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Tablični računalnik uporabljate več kot običajno"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Napravo uporabljate več kot običajno"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Baterija se bo morda izpraznila prej kot običajno"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Ohranjanje zmogljivosti baterije"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Optimizacija za ohranjanje zmogljivosti baterije"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Baterija je začasno omejena. Za več informacij se dotaknite."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Telefon ste uporabljali več kot običajno. Baterija se bo morda izpraznila prej, kot ste pričakovali.\n\nAplikacije, ki porabijo največ energije baterije:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Tablični računalnik ste uporabljali več kot običajno. Baterija se bo morda izpraznila prej, kot ste pričakovali.\n\nAplikacije, ki porabijo največ energije baterije:"</string>
@@ -4811,6 +4811,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Največje število prikazanih naborov podatkov"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Ponastavi na privzete vrednosti"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Možnosti samodejnega izpolnjevanja za razvijalce so bile ponastavljene"</string>
+    <string name="location_category" msgid="3496759112306219062">"Lokacija"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Indikator lokacije v vrstici stanja"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Prikaži za vse lokacije, tudi za zaznane na podlagi omrežja in povezav"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Vsili popolne meritve GNSS"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Spremljaj vse razmestitve in frekvence GNSS brez ciklov"</string>
     <string name="device_theme" msgid="5027604586494772471">"Tema naprave"</string>
     <string name="default_theme" msgid="4815428567082263639">"Privzeto"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Ime omrežja"</string>
@@ -4827,8 +4832,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Začasno zaustavite prikazovanje obvestil, da ostanete osredotočeni"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Funkcija ni na voljo"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Ta funkcija je bila izklopljena, ker upočasnjuje vaš telefon"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Vsili popolne meritve GNSS"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Spremljaj vse razmestitve in frekvence GNSS brez ciklov"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Vedno pokaži pogovorno okno zrušitve"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Pokaži pogovorno okno ob vsaki zrušitvi aplikacije"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Izbira aplikacije, ki podpira ANGLE"</string>
@@ -5218,6 +5221,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Klicanje prek Wi-Fi-ja omogoča opravljanje in prejemanje klicev v omrežjih, ki niso operaterjeva, na primer v nekaterih omrežjih Wi-Fi."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Klici"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"Sporočila SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"prednostno"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"prednostno: klici"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"prednostno: sporočila SMS"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"ni na voljo"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Ni kartice SIM"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Nastavitve"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Povezovanje z javnimi omrežji"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"omrežna povezava, internet, brezžično, podatki, wifi, wi-fi, wi fi, mobilno omrežje, mobilno, mobilni operater, 4g, 3g, 2g, lte"</string>
@@ -5226,4 +5234,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Ni na voljo, ker je vklopljen način za spanje"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Ponastavitev pomembnosti obvestil je dokončana."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Aplikacije"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Naprava, ki ni vredna zaupanja, želi dostopati do vaših sporočil. Dotaknite se za podrobnosti."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Želite dovoliti dostop do sporočil?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Naprava Bluetooth [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], ki ni vredna zaupanja, želi dostopati do vaših sporočil.\n\nŠe nikoli niste vzpostavili povezave z napravo [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Naprava, ki ni vredna zaupanja, želi dostopati do vaših stikov in dnevnika klicev. Dotaknite se za podrobnosti."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Želite dovoliti dostop do stikov in dnevnika klicev?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Naprava Bluetooth [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], ki ni vredna zaupanja, želi dostopati do vaših stikov in dnevnika klicev. To vključuje podatke o dohodnih in odhodnih klicih.\n\nŠe nikoli niste vzpostavili povezave z napravo [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
 </resources>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index f859255..c1dd2c2 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"Adresat IPv6"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Rrjetet e ruajtura"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Abonimet"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Rrjetet e tjera"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"Cilësimet e IP-së"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Cilësimet e Wi-Fi nuk disponohen për këtë përdorues"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Ruaj"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Fshi APN-në"</string>
     <string name="menu_new" msgid="6571230342655509006">"APN e re"</string>
     <string name="menu_save" msgid="6611465355127483100">"Ruaj"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Hiq"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Anulo"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Fusha Emri nuk mund të jetë bosh."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"Rrjeti APN nuk mund të jetë bosh."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Aplikacionet mund të rivendosen"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Rivendos Wi-Fi, lidhjen celulare dhe Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Kjo do të rivendosë të gjitha cilësimet e rrjetit, duke përfshirë:\n\n"<li>"Wi‑Fi"</li>\n<li>"Të dhënat celulare"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Spastro"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Spastro kartat SIM të shkarkuara"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Për të shkarkuar karta SIM zëvendësuese, kontakto me operatorin celular. Kjo nuk do të anulojë asnjë plan të shërbimit celular."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Kjo nuk do të anulojë planet e shërbimit celular. Për të shkarkuar karta zëvendësuese SIM, kontakto me operatorin celular."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Rivendos cilësimet"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Të rivendosen të gjitha cilësimet e rrjetit? Ky veprim nuk mund të zhbëhet."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Do t\'i rivendosësh të gjitha cilësimet dhe t\'i spastrosh kartat SIM të shkarkuara? Nuk mund ta zhbësh këtë veprim."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Tableti është përdorur më shumë se zakonisht"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Pajisja është përdorur më shumë se zakonisht"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Bateria mund të mbarojë më herët se zakonisht"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Po ruan gjendjen e baterisë"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Po optimizohet për integritetin e baterisë"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Bateria e kufizuar përkohësisht. Trokit për të mësuar më shumë."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Telefoni yt është përdorur më shumë se zakonisht. Bateria mund të mbarojë më shpejt nga sa pritet.\n\nAplikacionet kryesore sipas përdorimit të baterisë:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Tableti yt është përdorur më shumë se zakonisht. Bateria mund të mbarojë më shpejt nga sa pritet.\n\nAplikacionet kryesore sipas përdorimit të baterisë:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Setet maksimale të dukshme të të dhënave"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Rivendos në vlerat e parazgjedhura"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Opsionet e plotësimit automatik të zhvilluesit janë rivendosur"</string>
+    <string name="location_category" msgid="3496759112306219062">"Vendndodhja"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Treguesi i vendndodhjes së shiritit të statusit"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Shfaqe për të gjitha vendndodhjet, duke përfshirë rrjetin dhe lidhshmërinë"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Matjet GNSS me fuqi të plotë"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Gjurmo të gjitha koleksionet dhe frekuencat e GNSS pa ciklim të detyruar"</string>
     <string name="device_theme" msgid="5027604586494772471">"Tema e pajisjes"</string>
     <string name="default_theme" msgid="4815428567082263639">"I parazgjedhur"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Emri i rrjetit"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Vendos njoftimet në pauzë për të qëndruar i fokusuar"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Veçoria nuk ofrohet"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Kjo veçori është çaktivizuar sepse ngadalëson telefonin tënd"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Matjet GNSS me fuqi të plotë"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Gjurmo të gjitha koleksionet dhe frekuencat e GNSS pa ciklim të detyruar"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Gjithmonë shfaq dialogun e ndërprerjes aksidentale"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Shfaq dialogun sa herë që një aplikacion pëson ndërprerje aksidentale"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Zgjidh aplikacionin e aktivizuar për ANGLE"</string>
@@ -4896,14 +4899,10 @@
     <string name="dsds_activation_failure_title" msgid="4467364110584914794">"Karta SIM nuk mund të aktivizohet"</string>
     <string name="dsds_activation_failure_body_msg1" msgid="6303921196869256391">"Hiq kartën SIM dhe fute përsëri. Nëse problemi vazhdon, rinise pajisjen."</string>
     <string name="dsds_activation_failure_body_msg2" msgid="73044349546544410">"Provo të aktivizosh kartën SIM përsëri. Nëse problemi vazhdon, rinise pajisjen."</string>
-    <!-- no translation found for sim_setup_channel_id (8797972565087458515) -->
-    <skip />
-    <!-- no translation found for post_dsds_reboot_notification_title_with_carrier (3308827462185135307) -->
-    <skip />
-    <!-- no translation found for post_dsds_reboot_notification_text (7533428378211541410) -->
-    <skip />
-    <!-- no translation found for sim_card_label (5632157635124050923) -->
-    <skip />
+    <string name="sim_setup_channel_id" msgid="8797972565087458515">"Aktivizimi i rrjetit"</string>
+    <string name="post_dsds_reboot_notification_title_with_carrier" msgid="3308827462185135307">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> është aktiv"</string>
+    <string name="post_dsds_reboot_notification_text" msgid="7533428378211541410">"Trokit për të përditësuar cilësimet e kartës SIM"</string>
+    <string name="sim_card_label" msgid="5632157635124050923">"Karta SIM"</string>
     <string name="erase_sim_dialog_title" msgid="881253002169177016">"Dëshiron ta pastrosh këtë kartë SIM të shkarkuar?"</string>
     <string name="erase_sim_dialog_text" msgid="753031064269699885">"Spastrimi i kësaj karte SIM e heq shërbimin e <xliff:g id="CARRIER_NAME_A">%1$s</xliff:g> nga kjo pajisje.\n\nShërbimi për <xliff:g id="CARRIER_NAME_B">%1$s</xliff:g> nuk do të anulohet."</string>
     <string name="erase_sim_confirm_button" msgid="8309115684335320541">"Spastro"</string>
@@ -5056,14 +5055,23 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Telefonata me Wi-Fi të lejon të bësh dhe të marrësh telefonata përmes rrjeteve jo të operatorëve celularë, si p.sh. disa rrjete Wi‑Fi."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Telefonatat"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"preferohet"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"preferohen telefonatat"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"preferohet SMS"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"e padisponueshme"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Nuk ka kartë SIM"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Preferencat"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Lidhu me rrjetet publike"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"lidhja e rrjetit, internet, pa tel, të dhëna, wifi, wi-fi, wi fi, rrjeti celular, celular, operatori celular, 4g, 3g, 2g, lte"</string>
-    <!-- no translation found for view_airplane_safe_networks (7390511371040078514) -->
-    <skip />
-    <!-- no translation found for turn_off_airplane_mode (1334192337050190071) -->
-    <skip />
+    <string name="view_airplane_safe_networks" msgid="7390511371040078514">"Shiko rrjetet e sigurta për në aeroplan"</string>
+    <string name="turn_off_airplane_mode" msgid="1334192337050190071">"Çaktivizo \"Modalitetin e aeroplanit\""</string>
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Nuk ofrohet sepse modaliteti i orarit të gjumit është aktiv"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Rivendosja e rëndësisë së njoftimit përfundoi."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Aplikacionet"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Një pajisje jo e besuar kërkon të ketë qasje te mesazhet e tua. Trokit për detaje."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Të lejohet qasja te mesazhet?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Një pajisje jo e besuar me Bluetooth, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], kërkon të ketë qasje te mesazhet e tua.\n\nNuk je lidhur me [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] më parë."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Një pajisje jo e besuar kërkon të ketë qasje te kontaktet dhe evidenca e telefonatave. Trokit për detaje."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Të lejohet qasja te kontaktet dhe evidenca e telefonatave?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Një pajisje jo e besuar me Bluetooth, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], kërkon të ketë qasje te kontaktet dhe evidenca e telefonatave. Kjo përfshin të dhënat në lidhje me telefonatat hyrëse dhe dalëse.\n\nNuk je lidhur me [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] më parë."</string>
 </resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 7a778ae..600929b 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -1042,8 +1042,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 адресе"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Сачуване мреже"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Претплате"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Остале мреже"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP подешавања"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Напредна подешавања Wi‑Fi мреже нису доступна за овог корисника"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Сачувај"</string>
@@ -1618,7 +1617,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Избриши назив приступне тачке"</string>
     <string name="menu_new" msgid="6571230342655509006">"Нов назив приступне тачке"</string>
     <string name="menu_save" msgid="6611465355127483100">"Сачувај"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Одбаци"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Откажи"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Поље Назив не сме да буде празно."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"Поље Назив приступне тачке не сме да буде празно."</string>
@@ -1633,8 +1632,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Апликације могу да се ресетују"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Ресетуј WiFi, мобилну мрежу и Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Овим ресетујете сва подешавања мреже, укључујући:\n\n"<li>"Wi‑Fi"</li>\n<li>"Мобилне податке"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Обриши"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Обриши преузете SIM картице"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Да бисте преузели заменске SIM картице, контактирајте мобилног оператера. Тиме се неће отказати ниједан тарифни пакет."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Овим не отказујете ниједан тарифни пакет. Да бисте преузимали резервне SIM картице, обратите се мобилном оператеру."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Ресетуј подешавања"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Желите ли да ресетујете сва подешавања мреже? Ова радња не може да се опозове."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Желите ли да ресетујете подешавања мреже и обришете преузете SIM картице? Ова радња не може да се опозове."</string>
@@ -2487,7 +2487,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Таблет сте користили дуже него обично"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Уређај сте користили дуже него обично"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Батерија може да се испразни раније него обично"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Одржава се стање батерије"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Оптимизује се ради доброг стања батерије"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Батерија је тренутно ограничена. Додирните да бисте сазнали више."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Уређај сте користили дуже него обично. Батерија може да се испразни раније од очекиваног.\n\nАпликације са највећом потрошњом батерије:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Таблет сте користили дуже него обично. Батерија може да се испразни раније од очекиваног.\n\nАпликације са највећом потрошњом батерије:"</string>
@@ -4731,6 +4731,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Максималан број видљивих скупова података"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Ресетуј на подразумеване вредности"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Опције за програмера за аутоматско попуњавање су ресетоване"</string>
+    <string name="location_category" msgid="3496759112306219062">"Локација"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Индикатор локације статусне траке"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Прикажи све локације, укључујући мрежу и повезивање"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Принудно покрени пуна GNSS мерења"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Прати све GNSS консталације и фреквенције без циклуса рада"</string>
     <string name="device_theme" msgid="5027604586494772471">"Тема уређаја"</string>
     <string name="default_theme" msgid="4815428567082263639">"Подразумевана"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Назив мреже"</string>
@@ -4747,8 +4752,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Паузирајте обавештења ради боље концентрације"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Функција није доступна"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Ова функција је искључена јер успорава телефон"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Принудно покрени пуна GNSS мерења"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Прати све GNSS консталације и фреквенције без циклуса рада"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Увек приказуј дијалог о отказивању"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Прикажи дијалог сваки пут када апликација откаже"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Изабери апликацију омогућену за ANGLE"</string>
@@ -5135,6 +5138,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Позивање преко WiFi-ја вам омогућава да примате и упућујете позиве преко мрежа које не припадају мобилном оператеру, на пример, неких WiFi мрежа."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Позиви"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"предност"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"предност имају позиви"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"предност има SMS"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"недоступно"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Нема SIM картице"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Подешавања"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Повежите се са јавним мрежама"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"мрежна веза, интернет, бежично, подаци, wifi, wi-fi, wi fi, мобилни телефон, мобилни, мобилни оператер, 4g, 3g, 2g, lte"</string>
@@ -5143,4 +5151,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Недоступно је јер је ноћни режим укључен"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Ресетовање важности обавештења је довршено."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Апликације"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Непоуздани уређај жели да приступа порукама. Додирните за детаље."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Желите ли да дозволите приступ порукама?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Непоуздани Bluetooth уређај, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], жели да приступа порукама.\n\nРаније се нисте повезивали са уређајем [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Непоуздани уређај жели да приступа контактима и евиденцији позива. Додирните за детаље."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Желите ли да дозволите приступ контактима и евиденцији позива?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Непоуздани Bluetooth уређај, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], жели да приступа контактима и евиденцији позива. То обухвата податке о долазним и одлазним позивима.\n\nРаније се нисте повезивали са уређајем [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
 </resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 8683609..b79358a 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6-adresser"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Sparade nätverk"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Prenumerationer"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Andra nätverk"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP-inställningar"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Den här användaren har inte tillgång till avancerade Wi‑Fi-inställningar"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Spara"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Ta bort APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"Nytt APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Spara"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Släng"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Avbryt"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Fältet Namn får inte vara tomt."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN får inte vara tomt."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Appar kan återställas"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Återställ Wi-Fi, mobildata och Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Alla nätverksinställningar återställs, till exempel \n\n"<li>"Wi‑Fi"</li>\n<li>"Mobildata"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Rensa"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Rensa nedladdade SIM-kort"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Kontakta operatören om du vill ladda ned SIM-kort som ersätter de gamla. Eventuella serviceavtal för mobilen gäller fortfarande."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Det här avbryter inte något serviceavtal för telefonen. Om du vill ladda ned SIM-kort som ersätter de gamla kontaktar du operatören."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Återställ inställningar"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Vill du återställa alla nätverksinställningar? Det går inte att ångra den här åtgärden."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Vill du återställa alla nätverksinställningar och rensa nedladdade SIM-kort? Det går inte att ångra den här åtgärden."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Surfplattan används mer än vanligt"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Enheten används mer än vanligt"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Batteriet kan ta slut snabbare än vanligt"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Så förlänger du batteriets livslängd"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Optimerar batteriets livslängd"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Batteriet är tillfälligt begränsat. Tryck för att läsa mer."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Mobilen har använts mer än vanligt. Batteriet kan ta slut snabbare än beräknat.\n\nDe mest krävande apparna efter batteriförbrukning:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Surfplattan har använts mer än vanligt. Batteriet kan ta slut snabbare än beräknat.\n\nDe mest krävande apparna efter batteriförbrukning:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Högsta antal synliga datamängder"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Återställ standardvärdena"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Utvecklaralternativen för Autofyll har återställts"</string>
+    <string name="location_category" msgid="3496759112306219062">"Plats"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Indikator i statusfältet för platsanvändning"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Visa alltid indikatorn för platsanvändning, även för nätverk och anslutningar"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Framtvinga fullständiga GNSS-mätningar"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Spåra alla konstellationer och frekvenser för GNSS utan arbetscykel"</string>
     <string name="device_theme" msgid="5027604586494772471">"Enhetstema"</string>
     <string name="default_theme" msgid="4815428567082263639">"Standard"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Nätverksnamn"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Pausa aviseringar så du kan behålla ditt fokus"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Funktionen är inte tillgänglig"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Denna funktion har inaktiverats eftersom den gör mobilen långsammare"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Framtvinga fullständiga GNSS-mätningar"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Spåra alla konstellationer och frekvenser för GNSS utan arbetscykel"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Visa alltid en dialogruta vid krascher"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Visa alltid en dialogruta när en app kraschar"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Välj en ANGLE-kompatibel app"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Med Wi-Fi-samtal kan du ringa och ta emot samtal via nätverk som inte tillhör operatörer, till exempel vissa Wi‑Fi-nätverk."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Samtal"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"Sms"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"föredras"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"samtal föredras"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"sms föredras"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"otillgängligt"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Inget SIM-kort"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Inställningar"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Anslut till offentliga nätverk"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"nätverksanslutning, internet, trådlös, data, wifi, wi-fi, wi fi, mobil, telefon, mobiloperatör, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Inte tillgängligt eftersom sovläget är på"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Aviseringarnas relevans har återställts."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Appar"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"En enhet som inte är betrodd vill få åtkomst till dina meddelanden. Tryck här för mer information."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Vill du tillåta åtkomst till meddelanden?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"En Bluetooth-enhet som inte är betrodd, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], vill få åtkomst till dina meddelanden.\n\nDu har inte anslutit till [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] tidigare."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"En enhet som inte är betrodd vill få åtkomst till dina kontakter och samtalshistoriken. Tryck här för mer information."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Vill du tillåta åtkomst till kontakter och samtalshistorik?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"En Bluetooth-enhet som inte är betrodd, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], vill få åtkomst till dina kontakter och samtalshistoriken. Detta inkluderar data om inkommande och utgående samtal.\n\nDu har inte anslutit till [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] tidigare."</string>
 </resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 99eaa52..3813459 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"Anwani za IPv6"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Mitandao iliyohifadhiwa"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Usajili"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Mitandao mingine"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"Mipangilio ya IP"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Mtumiaji huyu haruhusiwi kubadilisha mipangilio ya kina ya Wi-Fi"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Hifadhi"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Futa APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"APN Mpya"</string>
     <string name="menu_save" msgid="6611465355127483100">"Hifadhi"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Tupa"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Ghairi"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Huwezi kuacha sehemu hii ikiwa haijajazwa."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"Lazima APN ijazwe."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Programu zinaweza kuwekwa upya"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Badilisha mipangilio ya Wi-Fi, data ya simu na Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Hatua hii itabadilisha mipangilio yote ya mtandao ikiwa ni pamoja na:\n\n"<li>"Wi‑Fi"</li>\n<li>"Data ya simu"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Futa data yote"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Futa SIM zilizopakuliwa"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Ili upakue SIM za kubadilisha, wasiliana na mtoa huduma wako. Hatua hii haitaghairi mipango yoyote ya huduma za simu."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Hatua hii haitaghairi mipango yoyote ya huduma za simu. Ili upakue SIM za kubadilisha, wasiliana na mtoa huduma wako."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Badilisha mipangilio"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Je, ungependa kubadilisha mipangilio yote ya mtandao? Huwezi kutendua kitendo hiki."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Je, ungependa kubadilisha mipangilio yote ya mtandao na ufute SIMs zilizopakuliwa? Huwezi kutendua kitendo hiki."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Kompyuta kibao imetumika sana kuliko kawaida"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Kifaa kimetumika sana kuliko kawaida"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Huenda chaji ikaisha haraka zaidi"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Kuboresha muda wa kutumia betri"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Inaboresha muda wa kutumia betri"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Betri imedhibitiwa kwa muda. Gusa ili upate maelezo zaidi."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Simu yako imetumika kuliko kawaida. Huenda chaji ikaisha haraka zaidi ya inavyotarajiwa.\n\nProgramu ambazo zimetumia betri zaidi:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Kompyuta yako kibao imetumika kuliko kawaida. Huenda chaji ikaisha haraka zaidi ya inavyotarajiwa.\n\nProgramu ambazo zimetumia betri zaidi:"</string>
@@ -4652,6 +4652,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Idadi ya juu zaidi ya makundi ya data yanayoonekana"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Rejesha thamani chaguomsingi"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Imebadilisha chaguo za wasanidi programu za kujaza kiotomatiki"</string>
+    <string name="location_category" msgid="3496759112306219062">"Mahali"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Kiashirio cha sehemu ya arifa"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Onyesha kwa maeneo yote, ikiwa ni pamoja na mtandao na muunganisho"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Lazimisha vipimo vya GNSS kamili"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Fuatilia mikusanyiko na mawimbi yote yasiyo na utendakazi wa GNSS"</string>
     <string name="device_theme" msgid="5027604586494772471">"Mandhari ya kifaa"</string>
     <string name="default_theme" msgid="4815428567082263639">"Chaguomsingi"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Jina la mtandao"</string>
@@ -4668,8 +4673,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Sitisha arifa ili uendelee kumakinika"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Kipengele hakipatikani"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Kipengele hiki kimezimwa kwa sababu kinapunguza kasi ya simu yako"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Lazimisha vipimo vya GNSS kamili"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Fuatilia mikusanyiko na mawimbi yote yasiyo na utendakazi wa GNSS"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Onyesha kidirisha cha programu kuacha kufanya kazi kila wakati"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Onyesha kisanduku kila wakati programu inapoacha kufanya kazi"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Chagua programu inayoweza kutumia ANGLE"</string>
@@ -5053,6 +5056,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Kipengele cha kupiga simu kupitia Wi-Fi kinakuruhusu upige na kupokea simu kupitia mitandao isiyo ya watoa huduma kama vile baadhi ya mitandao ya Wi-Fi."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Simu"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"mtoa huduma unayempendelea"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"mtoa huduma wa simu unayempendelea"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"mtoa huduma wa SMS unayempendelea"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"haipatikani"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Hakuna SIM"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Mapendeleo"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Unganisha kwenye mitandao ya umma"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"muunganisho wa mtandao, intaneti, isiyotumia waya, data, wifi, wi-fi, wi fi, mtandao wa simu, vifaa vya mkononi, mtoa huduma za vifaa vya mkononi, 4g, 3g, 2g, lte"</string>
@@ -5061,4 +5069,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Haipatikani kwa sababu umewasha hali ya wakati umelala"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Imemaliza kubadilisha mipangilio ya umuhimu wa arifa."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Programu"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Kifaa kisichoaminika kinataka kufikia ujumbe wako. Gusa ili upate maelezo."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Ungependa kuruhusu kifaa kifikie ujumbe?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Kifaa cha Bluetooth kisichoaminika, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], kinataka kufikia ujumbe wako.\n\nHujawahi kuunganisha kwenye [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Kifaa kisichoaminika kinataka kufikia anwani na rekodi yako ya nambari za simu. Gusa ili upate maelezo."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Ungependa kuruhusu kifaa kifikie anwani na rekodi ya nambari za simu?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Kifaa cha Bluetooth kisichoaminika, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], kinataka kufikia anwani na rekodi yako ya nambari za simu. Hii ni pamoja na data kuhusu simu unazopigiwa na unazopiga.\n\nHujawahi kuunganisha kwenye [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
 </resources>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index dc30641..7521958 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 முகவரிகள்"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"சேமித்த நெட்வொர்க்குகள்"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"சந்தா செலுத்தியவை"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"பிற நெட்வொர்க்குகள்"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP அமைப்பு"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"இந்தப் பயனருக்கு வைஃபை மேம்பட்ட அமைப்புகள் இல்லை"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"சேமி"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"APN ஐ நீக்கு"</string>
     <string name="menu_new" msgid="6571230342655509006">"புதிய APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"சேமி"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"நிராகரி"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"ரத்துசெய்"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"பெயர் புலம் வெறுமையாக இருக்கக்கூடாது."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN வெறுமையாக இருக்கக்கூடாது."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"ஆப்ஸை ரீசெட் செய்யலாம்"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"வைஃபை, மொபைல் &amp; புளூடூத்தை மீட்டமை"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"பின்வருபவை உட்பட, எல்லா நெட்வொர்க் அமைப்புகளையும் இது மீட்டமைக்கும்:\n\n"<li>"வைஃபை"</li>\n<li>"மொபைல் தரவு"</li>\n<li>"புளூடூத்"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"அழி"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"பதிவிறக்கிய சிம்களை அழி"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"மாற்று சிம்களைப் பதிவிறக்க மொபைல் நிறுவனத்தைத் தொடர்புகொள்ளவும். இதனால் உங்கள் மொபைல் திட்டங்கள் எவையும் ரத்துசெய்யப்படாது."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"மொபைல் சேவைத் திட்டங்கள் எவையும் இதனால் ரத்துசெய்யப்படாது. மாற்று சிம்களைப் பதிவிறக்க, உங்கள் மொபைல் நிறுவனத்தைத் தொடர்புகொள்ளவும்."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"அமைப்புகளை மீட்டமை"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"அனைத்து நெட்வொர்க் அமைப்புகளையும் மீட்டமைக்கவா? இதைச் செயல்தவிர்க்க இயலாது."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"அனைத்து நெட்வொர்க் அமைப்புகளையும் மீட்டமைத்து, பதிவிறக்கிய சிம்களை அழிக்கவா? இதைச் செயல்தவிர்க்க இயலாது."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"டேப்லெட் வழக்கத்தைவிட அதிகமாகப் பயன்படுத்தப்பட்டுள்ளது"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"சாதனம் வழக்கத்தைவிட அதிகமாகப் பயன்படுத்தப்பட்டுள்ளது"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"பேட்டரி வழக்கத்தைவிட வேகமாகத் தீர்ந்துவிடக்கூடும்"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"பேட்டரியின் ஆயுளைப் பாதுகாத்திடுங்கள்"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"பேட்டரியின் ஆயுளை மேம்படுத்துகிறது"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"பேட்டரி சார்ஜ் செய்வது தற்காலிகமாகக் கட்டுப்படுத்தப்பட்டுள்ளது. மேலும் அறிய தட்டவும்."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"உங்கள் சாதனம் வழக்கத்தைவிட அதிகமாகப் பயன்படுத்தப்பட்டுள்ளது. எதிர்பார்த்ததைவிட வேகமாக பேட்டரி தீர்ந்துவிடக்கூடும்.\n\nஅதிகளவு பேட்டரியைப் பயன்படுத்திய ஆப்ஸ்:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"உங்கள் டேப்லெட்டை வழக்கத்தைவிட அதிகமாகப் பயன்படுத்தியுள்ளீர்கள். எதிர்பார்த்ததைவிட வேகமாக பேட்டரி தீர்ந்துவிடக்கூடும்.\n\nஅதிகளவு பேட்டரியைப் பயன்படுத்திய ஆப்ஸ்:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"அதிகபட்சத் தெரியக்கூடிய தரவுத் தொகுப்புகள்"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"இயல்புநிலை மதிப்புகளுக்கு மீட்டமை"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"தன்னிரப்பி டெவெலப்பர் விருப்பங்கள் மீட்டமைக்கப்பட்டன"</string>
+    <string name="location_category" msgid="3496759112306219062">"இருப்பிடம்"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"நிலைப் பட்டியின் இருப்பிட இண்டிக்கேட்டர்"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"நெட்வொர்க், இணைப்புநிலை உட்பட அனைத்து இருப்பிடங்களுக்கும் காட்டும்"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"முழுமையான GNSS அளவீடுகளை அமலாக்கு"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"பணி சுழற்சியை முடக்கி, GNSS வழிசெலுத்துதல்கள் மற்றும் அதிர்வெண்கள் அனைத்தையும் கண்காணித்தல்."</string>
     <string name="device_theme" msgid="5027604586494772471">"சாதனத்தின் தீம்"</string>
     <string name="default_theme" msgid="4815428567082263639">"இயல்பு"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"நெட்வொர்க் பெயர்"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"கவனம் சிதறாமல் இருக்க, அறிவிப்புகளை இடைநிறுத்தவும்"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"அம்சம் இல்லை"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"மொபைலின் வேகத்தைப் பாதிப்பதால் இந்த அம்சம் ஆஃப் செய்யப்பட்டுள்ளது"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"முழுமையான GNSS அளவீடுகளை அமலாக்கு"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"பணி சுழற்சியை முடக்கி, GNSS வழிசெலுத்துதல்கள் மற்றும் அதிர்வெண்கள் அனைத்தையும் கண்காணித்தல்."</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"சிதைவு அறிவிப்பை எப்போதும் காட்டு"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"ஆப்ஸ் செயலிழக்கும் போதெல்லாம் சிதைவு அறிவிப்பைக் காட்டும்"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"ANGLE இயக்கப்பட்ட ஆப்ஸைத் தேர்வுசெய்க"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"வைஃபை அழைப்பு அம்சம் மூலம் சில வைஃபை நெட்வொர்க்குகள் போன்ற மொபைல் நிறுவனம் அல்லாத நெட்வொர்க்குகளைப் பயன்படுத்தி அழைக்கலாம் அழைப்புகளைப் பெறலாம்."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"அழைப்புகள்"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"மெசேஜ்"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"விருப்பம்"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"அழைப்புகளை மேற்கொள்ளலாம்"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"மெசேஜ் அனுப்பலாம்"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"அழைப்புகள்/மெசேஜ் செய்ய முடியாது"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"சிம் இல்லை"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"விருப்பத்தேர்வுகள்"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"பொது நெட்வொர்க்குகளுடன் இணைக்கலாம்"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"நெட்வொர்க் இணைப்பு, இணையம், வயர்லெஸ், டேட்டா, வைஃபை, வை-ஃபை, வை ஃபை, செல்லுலார், மொபைல், செல் கேரியர், 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"உறக்கநேரப் பயன்முறை ஆன் செய்யப்பட்டுள்ளதால் கிடைக்காது"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"அறிவிப்பு முக்கியத்துவம் மீட்டமைக்கப்பட்டது."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"ஆப்ஸ்"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"நம்பகமற்ற சாதனம் ஒன்று உங்கள் மெசேஜ்களை அணுக விரும்புகிறது. விவரங்களைப் பார்க்க தட்டவும்."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"மெசேஜ்களை அணுக அனுமதிக்கவா?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"[<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>] எனும் நம்பகமற்ற புளூடூத் சாதனம் ஒன்று உங்கள் மெசேஜ்களை அணுக விரும்புகிறது.\n\nநீங்கள் இதற்குமுன் [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] சாதனத்துடன் இணைத்ததில்லை."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"நம்பகமற்ற சாதனம் ஒன்று உங்கள் தொடர்புகளையும் அழைப்புப் பதிவையும் அணுக விரும்புகிறது. விவரங்களைப் பார்க்க தட்டவும்."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"தொடர்புகளையும் அழைப்புப் பதிவையும் அணுக அனுமதிக்கவா?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"[<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>] எனும் நம்பகமற்ற புளூடூத் சாதனம் ஒன்று உங்கள் தொடர்புகளையும் அழைப்புப் பதிவையும் அணுக விரும்புகிறது. உள்வரும், வெளிச்செல்லும் அழைப்புகளைப் பற்றிய தரவும் இதில் அடங்கும்.\n\nநீங்கள் இதற்குமுன் [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] சாதனத்துடன் இணைத்ததில்லை."</string>
 </resources>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index b2748c2..3165c4b 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 చిరునామాలు"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"సేవ్ చేసిన నెట్‌వర్క్‌లు"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"సభ్యత్వాలు"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"ఇతర నెట్‌వర్క్‌లు"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP సెట్టింగ్‌లు"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"ఈ వినియోగదారుకి Wi‑Fi అధునాతన సెట్టింగ్‌లు అందుబాటులో లేవు"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"సేవ్ చేయి"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"APNను తొలగించు"</string>
     <string name="menu_new" msgid="6571230342655509006">"కొత్త APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"సేవ్ చేయి"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"విస్మరించు"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"రద్దు చేయి"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"పేరు ఫీల్డ్ ఖాళీగా ఉండకూడదు."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN ఖాళీగా ఉండకూడదు."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"యాప్‌లను రీసెట్ చేయవచ్చు"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Wi-Fi, మొబైల్ డేటా &amp; బ్లూటూత్‌లను రీసెట్ చేయండి"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"ఇది అన్ని నెట్‌వర్క్ సెట్టింగ్‌లను రీసెట్ చేస్తుంది, వీటితో సహా:\n\n"<li>"Wi‑Fi"</li>\n<li>"మొబైల్ డేటా"</li>\n<li>"బ్లూటూత్"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"తొలగించు"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"డౌన్‌లోడ్ చేసిన SIMలు తొలగించు"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"భర్తీ చేయాల్సిన SIMలను డౌన్‌లోడ్ చేయడానికి, మీ క్యారియర్‌ను సంప్రదించండి. ఇది మొబైల్ సేవా ప్లాన్‌లు వేటినీ రద్దు చేయదు."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"ఇది ఏవిధమైన మొబైల్ సర్వీస్ ప్లాన్‌లను రద్దు చేయదు. రీప్లేస్‌మెంట్ SIMలను డౌన్‌లోడ్ చేయడానికి మీ క్యారియర్‌ను సంప్రదించండి."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"సెట్టింగ్‌లను రీసెట్ చేయి"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"అన్ని నెట్‌వర్క్ సెట్టింగ్‌లను రీసెట్ చేయాలా? మీరు ఈ చర్యను తిరిగి రద్దు చేయలేరు."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"అన్ని నెట్‌వర్క్ సెట్టింగ్‌లను రీసెట్ చేసి, డౌన్‌లోడ్ చేసిన SIMలను తొలగించాలా? మీరు ఈ చర్యను తిరిగి ఉపసంహరించలేరు."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"టాబ్లెట్ సాధారణం కంటే ఎక్కువగా వినియోగించింది"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"పరికరం సాధారణం కంటే ఎక్కువగా వినియోగించింది"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"బ్యాటరీ సాధారణం కంటే తక్కువ సమయం రావచ్చు"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"బ్యాటరీ జీవిత కాలాన్ని సంరక్షిస్తోంది"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"బ్యాటరీ జీవితకాలాన్ని ఆప్టిమైజ్ చేయడం కోసం"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"బ్యాటరీ తాత్కాలికంగా పరిమితం చేయబడింది. మరింత తెలుసుకోవడానికి ట్యాప్ చేయండి."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"మీ ఫోన్ సాధారణం కంటే అధికంగా వినియోగించబడింది. కనుక, మీ బ్యాటరీ, అంచ‌నా వేసిన దాని కంటే తక్కువ సమయంలోనే ఖాళీ అవ్వొచ్చు.\n\nబ్యాటరీని అధికంగా వినియోగిస్తోన్న ప్రధాన యాప్‌లు:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"మీ టాబ్లెట్ సాధారణం కంటే అధికంగా వినియోగించబడింది. కనుక, మీ బ్యాటరీ, అంచ‌నా వేసిన దాని కంటే తక్కువ సమయంలోనే ఖాళీ అవ్వొచ్చు.\n\nబ్యాటరీని అధికంగా వినియోగిస్తోన్న ప్రధాన యాప్‌లు:"</string>
@@ -4653,6 +4653,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"కనిపించగల గరిష్ఠ డేటాసమితులు"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"డిఫాల్ట్ విలువలకు రీసెట్ చేయి"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"స్వీయ పూరింపు డెవలపర్ ఎంపికలు రీసెట్ చేయబడ్డాయి"</string>
+    <string name="location_category" msgid="3496759112306219062">"లొకేషన్"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"స్టేటస్ బార్ లొకేషన్ సూచీ"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"నెట్‌వర్క్, కనెక్టివిటీతో పాటు లొకేషన్‌లు అన్నింటినీ చూపిస్తుంది"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"శక్తివంతమైన GNSS కొలతలు"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"డ్యూటీ సైక్లింగ్ లేకుండా అన్ని GNSS నక్షత్రరాశులను మరియు ఫ్రీక్వెన్సీలను ట్రాక్ చేయండి"</string>
     <string name="device_theme" msgid="5027604586494772471">"పరికర రూపం"</string>
     <string name="default_theme" msgid="4815428567082263639">"డిఫాల్ట్"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"నెట్‌వర్క్ పేరు"</string>
@@ -4669,8 +4674,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"ఇతర వ్యాపకాలపై దృష్టి మరలకుండా ఉండడానికి నోటిఫికేషన్‌లను పాజ్ చేయండి"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"ఫీచర్ అందుబాటులో లేదు"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"మీ ఫోన్ పనితీరును నెమ్మ‌దించేలా చేస్తున్నందున ఈ ఫీచర్ ఆఫ్ చేయబడింది"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"శక్తివంతమైన GNSS కొలతలు"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"డ్యూటీ సైక్లింగ్ లేకుండా అన్ని GNSS నక్షత్రరాశులను మరియు ఫ్రీక్వెన్సీలను ట్రాక్ చేయండి"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"ఎల్లప్పుడూ క్రాష్ డైలాగ్‌ని చూపు"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"యాప్ క్రాష్ అయిన ప్రతిసారి డైలాగ్‌ని చూపు"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"కోణం ప్రారంభించబడిన యాప్‌ను ఎంచుకోండి"</string>
@@ -4898,14 +4901,10 @@
     <string name="dsds_activation_failure_title" msgid="4467364110584914794">"SIMను యాక్టివేట్ చేయడం సాధ్యం కాదు"</string>
     <string name="dsds_activation_failure_body_msg1" msgid="6303921196869256391">"SIMను తీసివేసి, తిరిగి ఇన్‌సర్ట్ చేయండి. సమస్య ఇంకా కొనసాగితే, మీ పరికరాన్ని రీస్టార్ట్ చేయండి."</string>
     <string name="dsds_activation_failure_body_msg2" msgid="73044349546544410">"SIMను తిరిగి ఆన్ చేయడానికి ట్రై చేయండి. సమస్య ఇంకా కొనసాగితే, మీ పరికరాన్ని రీస్టార్ట్ చేయండి."</string>
-    <!-- no translation found for sim_setup_channel_id (8797972565087458515) -->
-    <skip />
-    <!-- no translation found for post_dsds_reboot_notification_title_with_carrier (3308827462185135307) -->
-    <skip />
-    <!-- no translation found for post_dsds_reboot_notification_text (7533428378211541410) -->
-    <skip />
-    <!-- no translation found for sim_card_label (5632157635124050923) -->
-    <skip />
+    <string name="sim_setup_channel_id" msgid="8797972565087458515">"నెట్‌వర్క్ యాక్టివేషన్"</string>
+    <string name="post_dsds_reboot_notification_title_with_carrier" msgid="3308827462185135307">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> యాక్టివ్‌గా ఉంది"</string>
+    <string name="post_dsds_reboot_notification_text" msgid="7533428378211541410">"SIM సెట్టింగ్‌లను అప్‌డేట్ చేయడానికి ట్యాప్ చేయండి"</string>
+    <string name="sim_card_label" msgid="5632157635124050923">"SIM కార్డ్"</string>
     <string name="erase_sim_dialog_title" msgid="881253002169177016">"డౌన్‌లోడ్ చేయబడిన ఈ SIMను తొలగించాలా?"</string>
     <string name="erase_sim_dialog_text" msgid="753031064269699885">"ఈ SIMను తొలగించడం వలన ఈ పరికరం నుండి <xliff:g id="CARRIER_NAME_A">%1$s</xliff:g> సర్వీస్ తీసివేయబడుతోంది.\n\n <xliff:g id="CARRIER_NAME_B">%1$s</xliff:g> సర్వీస్ రద్దు చేయబడదు."</string>
     <string name="erase_sim_confirm_button" msgid="8309115684335320541">"తొలగించు"</string>
@@ -5058,14 +5057,23 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"క్యారియర్ కాని కొన్ని Wi-Fi నెట్‌వర్క్‌ల వంటి వాటి ద్వారా కాల్‌లను చేయడానికి, స్వీకరించడానికి Wi-Fi కాలింగ్ మిమ్మల్ని అనుమతిస్తుంది."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"కాల్స్"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"ప్రాధాన్యతనిస్తుంది"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"కాల్స్‌కు ప్రాధాన్యతనిస్తుంది"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"SMSకు ప్రాధాన్యతనిస్తుంది"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"అందుబాటులో లేదు"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"సిమ్ లేదు"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"ప్రాధాన్యతలు"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"పబ్లిక్ నెట్‌వర్క్‌లకు కనెక్ట్ అవ్వండి"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"నెట్‌వర్క్ కనెక్షన్, ఇంటర్‌నెట్, వైర్‌లెస్, డేటా, Wi-Fi, Wi-Fi, Wi-Fi, సెల్యూలార్, మొబైల్, సెల్ క్యారియర్, 4g, 3g, 2g, lte"</string>
-    <!-- no translation found for view_airplane_safe_networks (7390511371040078514) -->
-    <skip />
-    <!-- no translation found for turn_off_airplane_mode (1334192337050190071) -->
-    <skip />
+    <string name="view_airplane_safe_networks" msgid="7390511371040078514">"విమానం‑సురక్షిత నెట్‌వర్క్‌లను చూడండి"</string>
+    <string name="turn_off_airplane_mode" msgid="1334192337050190071">"విమానం మోడ్‌ను ఆఫ్ చేయండి"</string>
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"బెడ్ టైమ్ మోడ్ ఆన్‌లో ఉండడం వల్ల అందుబాటులో లేదు"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"రీసెట్ నోటిఫికేషన్ ప్రాముఖ్యత పూర్తయింది."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"యాప్‌లు"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"విశ్వసనీయం కానటువంటి పరికరం మీ మెసేజ్‌లను యాక్సెస్ చేయాలని కోరుకుంటోంది. వివరాల కోసం ట్యాప్ చేయండి."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"మెసేజ్‌లకు యాక్సెస్‌ను అనుమతించాలా?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"విశ్వసనీయం కానటువంటి బ్లూటూత్ పరికరం, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], మీ మెసేజ్‌లను యాక్సెస్ చేయాలనుకుంటోంది.\n\nమీరు ఇంతకు ముందెన్నడూ [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]కు కనెక్ట్ కాలేదు."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"విశ్వసనీయం కాని పరికరం మీ కాంటాక్ట్‌లు, కాల్ లాగ్‌ను యాక్సెస్ చేయాలనుకుంటోంది. వివరాల కోసం ట్యాప్ చేయండి."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"కాంటాక్ట్‌లకు, కాల్ లాగ్‌కు యాక్సెస్‌ను అనుమతించాలా?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"విశ్వసనీయం కానటువంటి బ్లూటూత్ పరికరం, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], మీ కాంటాక్ట్‌లను, కాల్ లాగ్‌ను యాక్సెస్ చేయాలనుకుంటోంది. ఇది ఇన్‌కమింగ్, అవుట్‌గోయింగ్ కాల్‌ల డేటాతో కూడి ఉంటుంది.\n\nమీరు ఇంతకు ముందెన్నడూ [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]కు కనెక్ట్ కాలేదు."</string>
 </resources>
diff --git a/res/values-th/arrays.xml b/res/values-th/arrays.xml
index d9ebe44..3b533bb 100644
--- a/res/values-th/arrays.xml
+++ b/res/values-th/arrays.xml
@@ -233,8 +233,8 @@
     <item msgid="50701215019227883">"สั่น"</item>
     <item msgid="2690144000353492014">"อ่านรายชื่อติดต่อ"</item>
     <item msgid="3858029424955955625">"แก้ไขรายชื่อติดต่อ"</item>
-    <item msgid="3439658954936709507">"อ่านประวัติการโทร"</item>
-    <item msgid="1908944516631132130">"แก้ไขประวัติการโทร"</item>
+    <item msgid="3439658954936709507">"อ่านบันทึกการโทร"</item>
+    <item msgid="1908944516631132130">"แก้ไขบันทึกการโทร"</item>
     <item msgid="9066115715905100138">"อ่านปฏิทิน"</item>
     <item msgid="1664720478157892566">"แก้ไขปฏิทิน"</item>
     <item msgid="5478277451617814822">"ค้นหา WiFi"</item>
@@ -300,8 +300,8 @@
     <item msgid="4104617224667554750">"สั่น"</item>
     <item msgid="1623646715189708947">"อ่านรายชื่อติดต่อ"</item>
     <item msgid="5060760609109972207">"แก้ไขรายชื่อติดต่อ"</item>
-    <item msgid="7451260062940797278">"อ่านประวัติการโทร"</item>
-    <item msgid="2348589304974534308">"แก้ไขประวัติการโทร"</item>
+    <item msgid="7451260062940797278">"อ่านบันทึกการโทร"</item>
+    <item msgid="2348589304974534308">"แก้ไขบันทึกการโทร"</item>
     <item msgid="4089146706115315300">"อ่านปฏิทิน"</item>
     <item msgid="1305780729690198918">"แก้ไขปฏิทิน"</item>
     <item msgid="3461096740171440592">"ตำแหน่ง"</item>
@@ -495,7 +495,7 @@
   </string-array>
   <string-array name="wifi_metered_entries">
     <item msgid="3237321077949659241">"ตรวจหาโดยอัตโนมัติ"</item>
-    <item msgid="3779092145391320375">"ถือว่ามีการวัดปริมาณอินเทอร์เน็ต"</item>
+    <item msgid="3779092145391320375">"ถือว่ามีการจำกัดปริมาณอินเทอร์เน็ต"</item>
     <item msgid="2047166446768045816">"ถือว่าไม่มีการวัดปริมาณอินเทอร์เน็ต"</item>
   </string-array>
   <string-array name="wifi_privacy_entries">
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 308f2bb..a700379 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"ที่อยู่ IPv6"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"เครือข่ายที่บันทึก"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"การสมัครใช้บริการ"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"เครือข่ายอื่น"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"การตั้งค่า IP"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"การตั้งค่า Wi‑Fi ขั้นสูงไม่พร้อมใช้งานสำหรับผู้ใช้รายนี้"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"บันทึก"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"ลบ APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"APN ใหม่"</string>
     <string name="menu_save" msgid="6611465355127483100">"บันทึก"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"ทิ้ง"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"ยกเลิก"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"ต้องใส่ข้อมูลในช่องชื่อ"</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"ต้องใส่ข้อมูล APN"</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"รีเซ็ตแอปได้"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"รีเซ็ต Wi-Fi เน็ตมือถือ และบลูทูธ"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"การดำเนินการนี้จะรีเซ็ตการตั้งค่าเครือข่ายทั้งหมด ได้แก่\n\n"<li>"Wi‑Fi"</li>\n<li>"อินเทอร์เน็ตมือถือ"</li>\n<li>"บลูทูธ"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"ลบ"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"ลบซิมที่ดาวน์โหลด"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"โปรดติดต่อผู้ให้บริการเพื่อดาวน์โหลดซิมทดแทน การดำเนินการนี้จะไม่ยกเลิกแพ็กเกจอินเทอร์เน็ตมือถือของคุณ"</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"การดำเนินการนี้จะไม่ยกเลิกแพ็กเกจอินเทอร์เน็ตมือถือ หากต้องการดาวน์โหลดซิมสำหรับใช้แทน โปรดติดต่อผู้ให้บริการ"</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"รีเซ็ตการตั้งค่า"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"รีเซ็ตการตั้งค่าเครือข่ายทั้งหมดใช่ไหม คุณจะยกเลิกการดำเนินการนี้ไม่ได้"</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"รีเซ็ตการตั้งค่าเครือข่ายทั้งหมดและลบซิมที่ดาวน์โหลดไหม คุณจะยกเลิกการดำเนินการนี้ไม่ได้"</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"ใช้งานแท็บเล็ตมากกว่าปกติ"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"ใช้งานอุปกรณ์มากกว่าปกติ"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"แบตเตอรี่อาจหมดเร็วกว่าปกติ"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"การถนอมแบตเตอรี่"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"การเพิ่มประสิทธิภาพแบตเตอรี่"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"การชาร์จแบตเตอรี่จำกัดชั่วคราว แตะเพื่อดูข้อมูลเพิ่มเติม"</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"มีการใช้งานโทรศัพท์มากกว่าปกติ แบตเตอรี่อาจหมดเร็วกว่าที่คาดไว้\n\nแอปที่ใช้แบตเตอรี่มากสุดมีลำดับดังนี้"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"มีการใช้งานแท็บเล็ตมากกว่าปกติ แบตเตอรี่อาจหมดเร็วกว่าที่คาดไว้\n\nแอปที่ใช้แบตเตอรี่มากสุดมีลำดับดังนี้"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"ชุดข้อมูลที่ปรากฏสูงสุด"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"รีเซ็ตเป็นค่าเริ่มต้น"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"ตัวเลือกการป้อนอัตโนมัติสำหรับนักพัฒนาซอฟต์แวร์ได้รับการรีเซ็ตแล้ว"</string>
+    <string name="location_category" msgid="3496759112306219062">"ตำแหน่ง"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"สัญญาณบอกสถานะตำแหน่งของแถบสถานะ"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"แสดงตำแหน่งทั้งหมด รวมถึงเครือข่ายและการเชื่อมต่อ"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"บังคับใช้การวัด GNSS เต็มรูปแบบ"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"ติดตามระบบดาวเทียมและความถี่สัญญาณ GNSS ทั้งหมดโดยไม่มีการปิดพักเพื่อประหยัดพลังงาน"</string>
     <string name="device_theme" msgid="5027604586494772471">"ธีมอุปกรณ์"</string>
     <string name="default_theme" msgid="4815428567082263639">"ค่าเริ่มต้น"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"ชื่อเครือข่าย"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"หยุดการแจ้งเตือนชั่วคราวเพื่อไม่ให้มีสิ่งรบกวน"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"ใช้งานฟีเจอร์ไม่ได้"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"ฟีเจอร์นี้ถูกปิดไปเพราะทำให้โทรศัพท์ช้า"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"บังคับใช้การวัด GNSS เต็มรูปแบบ"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"ติดตามระบบดาวเทียมและความถี่สัญญาณ GNSS ทั้งหมดโดยไม่มีการปิดพักเพื่อประหยัดพลังงาน"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"แสดงปัญหาที่ขัดข้องเสมอ"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"แสดงกล่องโต้ตอบทุกครั้งที่แอปขัดข้อง"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"เลือกแอปที่พร้อมใช้งาน ANGLE"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"การโทรผ่าน Wi-Fi ให้คุณโทรออกและรับสายผ่านเครือข่ายที่ไม่ได้เป็นของผู้ให้บริการ เช่น เครือข่าย Wi-Fi บางเครือข่ายได้"</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"การโทร"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"ต้องการ"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"สายสนทนาที่ต้องการ"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"SMS ที่ต้องการ"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"ไม่ว่าง"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"ไม่มีซิม"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"ค่ากำหนด"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"เชื่อมต่อเครือข่ายสาธารณะ"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"การเชื่อมต่อเครือข่าย, อินเทอร์เน็ต, ไร้สาย, อินเทอร์เน็ตมือถือ, wifi, wi-fi, wi fi, เครือข่ายมือถือ, อุปกรณ์เคลื่อนที่, ผู้ให้บริการเครือข่ายมือถือ, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"ใช้ไม่ได้เนื่องจากโหมดเวลาเข้านอนเปิดอยู่"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"รีเซ็ตความสำคัญในการแจ้งเตือนแล้ว"</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"แอป"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"อุปกรณ์ที่ไม่น่าเชื่อถือต้องการเข้าถึงข้อความของคุณ แตะเพื่อดูรายละเอียด"</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"อนุญาตให้เข้าถึงข้อความไหม"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"อุปกรณ์บลูทูธที่ไม่น่าเชื่อถือ [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>] ต้องการเข้าถึงข้อความของคุณ\n\nคุณไม่เคยเชื่อมต่อกับ [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] มาก่อน"</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"อุปกรณ์ที่ไม่น่าเชื่อถือต้องการเข้าถึงรายชื่อติดต่อและบันทึกการโทร แตะเพื่อดูรายละเอียด"</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"อนุญาตให้เข้าถึงรายชื่อติดต่อและบันทึกการโทรไหม"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"อุปกรณ์บลูทูธที่ไม่น่าเชื่อถือ [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>] ต้องการเข้าถึงรายชื่อติดต่อและบันทึกการโทร ซึ่งรวมถึงข้อมูลเกี่ยวกับสายเรียกเข้าและโทรออก\n\nคุณไม่เคยเชื่อมต่อกับ [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] มาก่อน"</string>
 </resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index f295ab1..5f47977 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"Mga IPv6 address"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Naka-save na network"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Mga Subscription"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Iba pang network"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"Mga setting ng IP"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Hindi available para sa user na ito ang mga advanced na setting ng Wi‑Fi"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"I-save"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"I-delete ang APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"Bagong APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"I-save"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Itapon"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Kanselahin"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Hindi maaaring walang laman ang field ng Pangalan."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"Hindi maaaring walang laman ang APN."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Puwedeng i-reset ang mga app"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"I-reset ang Wi-Fi, mobile, at Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Ire-reset nito ang lahat ng setting ng network, kasama ang:\n\n"<li>"Wi‑Fi"</li>\n<li>"Mobile data"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Burahin"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Burahin ang na-download na SIM"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Para mag-download ng mga pamalit na SIM, makipag-ugnayan sa iyong carrier. Hindi nito kakanselahin ang anumang service plan sa mobile."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Hindi nito kakanselahin ang anumang plan ng serbisyo sa mobile. Para mag-download ng mga kapalit na SIM, makipag-ugnayan sa iyong carrier."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"I-reset ang mga setting"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"I-reset ang lahat ng network setting? Hindi mo maa-undo ang pagkilos na ito."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"I-reset ang lahat ng network setting at burahin ang mga na-download na SIM? Hindi mo maa-undo ang pagkilos na ito."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Nagamit ang tablet nang higit sa karaniwan"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Nagamit ang device nang higit sa karaniwan"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Baka mas maagang maubos ang baterya kaysa sa karaniwan"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Pagtitipid ng baterya"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Ino-optimize para sa tagal ng baterya"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Pansamantalang limitado ang baterya. Mag-tap para matuto pa."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Nagamit ang iyong telepono nang mas madalas kaysa sa karaniwan. Puwedeng maubos ang iyong baterya nang mas mabilis kaysa sa inaasahan.\n\nMga nangungunang app ayon sa paggamit ng baterya:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Nagamit ang iyong tablet nang mas madalas kaysa sa karaniwan. Puwedeng maubos ang iyong baterya nang mas mabilis kaysa sa inaasahan.\n\nMga nangungunang app ayon sa paggamit ng baterya:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Max ng mga nakikitang dataset"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"I-reset sa mga default na value"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Na-reset ang mga autofill na opsyon ng developer"</string>
+    <string name="location_category" msgid="3496759112306219062">"Lokasyon"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Indicator ng lokasyon sa status bar"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Ipakita para sa lahat ng lokasyon, kasama na ang network at pagkakonekta"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Ipatupad ang kumpletong sukat ng GNSS"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Sinusubaybayan ang lahat ng constellation at dalas ng GNSS nang walang duty cycling"</string>
     <string name="device_theme" msgid="5027604586494772471">"Tema ng device"</string>
     <string name="default_theme" msgid="4815428567082263639">"Default"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Pangalan ng network"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"I-pause ang mga notification para manatiling nakatuon ang pansin"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Hindi available ang feature"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Na-off ang feature na ito dahil pinapabagal nito ang iyong telepono"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Ipatupad ang kumpletong sukat ng GNSS"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Sinusubaybayan ang lahat ng constellation at dalas ng GNSS nang walang duty cycling"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Palaging ipakita ang dialog ng pag-crash"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Magpakita ng dialog sa tuwing magka-crash ang isang app"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Pumili ng app na may naka-enable na ANGLE"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Nagbibigay-daan sa iyo ang pagtawag gamit ang Wi-Fi na tumawag at makatanggap ng mga tawag sa mga non-carrier network gaya ng ilang Wi‑Fi network."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Mga Tawag"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"mas gusto"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"mas gusto ang mga tawag"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"mas gusto ang SMS"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"hindi available"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Walang SIM"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Mga Kagustuhan"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Kumonekta sa mga pampublikong network"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"koneksyon ng network, internet, wireless, data, wifi, wi-fi, wi fi, cellular, mobile, cell carrier, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Hindi available dahil naka-on ang bedtime mode"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Tapos na ang pag-reset sa kahalagahan ng notification."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Mga App"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Gustong i-access ng hindi pinagkakatiwalaang device ang iyong mga mensahe. I-tap para sa mga detalye."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Payagan ang access sa mga mensahe?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Gustong i-access ng hindi pinagkakatiwalaang Bluetooth device, ang [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], ang iyong mensahe.\n\nHindi ka pa nakakakonekta dati sa [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Gustong i-access ng hindi pinagkakatiwalaang device ang iyong mga contact at log ng tawag. I-tap para sa mga detalye."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Payagan ang access sa mga contact at log ng tawag?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Gustong i-access ng hindi pinagkakatiwalaang Bluetooth device, ang [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], ang iyong mga contact at log ng tawag. Kasama rito ang data tungkol sa mga papasok at papalabas na tawag.\n\nHindi ka pa nakakakonekta dati sa [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
 </resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 25164e2..5eb6356 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 adresleri"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Kayıtlı ağlar"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Abonelikler"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Diğer ağlar"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP ayarları"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Bu kullanıcı, gelişmiş Kablosuz ayarlarını kullanamaz"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Kaydet"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"APN\'yi sil"</string>
     <string name="menu_new" msgid="6571230342655509006">"Yeni APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Kaydet"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Sil"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"İptal"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Ad alanı boş olamaz."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN boş olamaz."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Uygulamalar sıfırlanabilir"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Kablosuz, mobil, Bluetooth\'u sıfırla"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Bu sıfırlama işlemi, aşağıdakiler de dahil olmak üzere tüm ağ ayarlarınızı sıfırlayacaktır:\n\n"<li>"Kablosuz ağ"</li>\n<li>"Mobil veri"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Sil"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"İndirilen SIM\'leri sil"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Yedek SIM\'leri indirmek için operatörünüzle iletişime geçin. Bu işlem, mobil hizmet planlarını iptal etmeyecektir."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Bu işlem, mobil hizmet planlarını iptal etmeyecektir. Yedek SIM\'leri indirmek için operatörünüzle iletişime geçin."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Ayarları sıfırla"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Tüm ağ ayarları sıfırlansın mı? Bu işlemi geri alamazsınız."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Tüm ağ ayarları sıfırlansın ve indirilen SIM\'ler silinsin mi? Bu işlemi geri alamazsınız."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Tablet normalden daha fazla kullanıldı"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Cihaz normalden daha fazla kullanıldı"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Pil normalden daha erken bitebilir"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Pil sağlığı korunuyor"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Pil sağlığı için optimize ediliyor"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Pil geçici olarak sınırlı. Daha fazla bilgi için dokunun."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Telefonunuz normalden daha fazla kullanıldı. Piliniz beklenenden daha erken bitebilir.\n\nEn çok pil kullanan uygulamalar:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Tabletiniz normalden daha fazla kullanıldı. Piliniz beklenenden daha erken bitebilir.\n\nEn çok pil kullanan uygulamalar:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Maksimum görünür veri kümesi"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Varsayılan değerlere sıfırla"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Otomatik doldurma geliştirici seçenekleri sıfırlandı"</string>
+    <string name="location_category" msgid="3496759112306219062">"Yer"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Durum çubuğu konum göstergesi"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Ağ ve bağlantı dahil olmak üzere tüm konumlar için göster"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Tam GNSS ölçümlerini zorla"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Tüm GNSS takımyıldızlarını ve görev döngüsü olmayan frekansları takip et"</string>
     <string name="device_theme" msgid="5027604586494772471">"Cihaz teması"</string>
     <string name="default_theme" msgid="4815428567082263639">"Varsayılan"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Ağ adı"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Konsantrasyonunuzu bozmamak için bildirimleri duraklatın"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Özellik kullanılamıyor"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Bu özellik, telefonunuzu yavaşlattığı için kapatıldı."</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Tam GNSS ölçümlerini zorla"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Tüm GNSS takımyıldızlarını ve görev döngüsü olmayan frekansları takip et"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Kilitlenme iletişim kutusunu her zaman göster"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Her uygulama kilitlendiğinde iletişim kutusunu göster"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"ANGLE özellikli uygulamayı seçin"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Kablosuz çağrı, bazı kablosuz ağlar gibi operatör olmayan ağlar üzerinden arama yapmanıza ve almanıza olanak tanır."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Çağrılar"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"tercih edilen"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"arama tercih edildi"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"SMS tercih edildi"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"kullanılamıyor"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"SIM kart yok"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Tercihler"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Herkese açık ağlara bağlan"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"ağ bağlantısı, internet, kablosuz, veri, wifi, wi-fi, wi fi, hücresel, mobil, hücresel operatör, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Uyku vakti modu açık olduğundan kullanılamıyor"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Bildirimlerin önemini sıfırlama işlemi tamamlandı."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Uygulamalar"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Güvenilmeyen bir cihaz mesajlarınıza erişmek istiyor. Ayrıntılar için dokunun."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Mesajlara erişime izin verilsin mi?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Güvenilmeyen bir Bluetooth cihazı [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>] mesajlarınıza erişmek istiyor.\n\n[<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] adlı cihaza daha önce bağlanmadınız."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Güvenilmeyen bir cihaz kişilerinize ve arama kaydınıza erişmek istiyor. Ayrıntılar için dokunun."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Kişilerinize ve arama kaydınıza erişime izin verilsin mi?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Güvenilmeyen bir Bluetooth cihazı [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>] kişilerinize ve arama kaydınıza erişmek istiyor. Bu hem gelen hem giden aramalarınıza ait verileri içerir.\n\n [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] adlı cihaza daha önce bağlanmadınız."</string>
 </resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 4a57b6b..280bf91 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -1062,8 +1062,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"Адреси IPv6"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Збережені мережі"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Підписки"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Інші мережі"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"Налаштування IP-адр."</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Розширені налаштування Wi-Fi недоступні для цього користувача"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Зберегти"</string>
@@ -1639,7 +1638,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Видалити APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"Нова точка доступу APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Зберегти"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Відхилити"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Скасувати"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Поле \"Назва\" не може бути порожнім."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"Поле APN не може бути порожнім."</string>
@@ -1654,8 +1653,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Додатки може бути скинуто"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Скинути параметри Wi-Fi, мобільного передавання даних і Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Буде скинуто всі налаштування мережі, зокрема \n\n"<li>"Wi‑Fi"</li>\n<li>"мобільний трафік"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Видалити"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Видалити завантажені SIM-карти"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Щоб завантажити нові SIM-карти, зв’яжіться з оператором. Мобільні тарифні плани не буде скасовано."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Мобільні тарифні плани не буде скасовано. Щоб завантажити нові SIM-карти, зв\'яжіться з оператором."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Скинути налаштування"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Скинути налаштування мереж? Цю дію неможливо відмінити."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Скинути налаштування всіх мереж і видалити завантажені SIM-карти? Цю дію неможливо відмінити."</string>
@@ -2518,7 +2518,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Планшет використовується більше, ніж зазвичай"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Пристрій використовується більше, ніж зазвичай"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Акумулятор може розрядитися швидше, ніж зазвичай"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Увімкнено збереження заряду акумулятора"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Оптимізація для збереження заряду акумулятора"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Потужність акумулятора тимчасово обмежена. Натисніть, щоб дізнатися більше."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Ваш телефон використовується більше, ніж зазвичай. Акумулятор може розрядитися швидше.\n\nДодатки, які використовують найбільше заряду:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Ваш планшет використовується більше, ніж зазвичай. Акумулятор може розрядитися швидше.\n\nДодатки, які використовують найбільше заряду:"</string>
@@ -4811,6 +4811,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Максимальні видимі набори даних"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Відновити значення за умовчанням"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Скинуто параметри автозаповнення, які вказав розробник"</string>
+    <string name="location_category" msgid="3496759112306219062">"Місцезнаходження"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Індикатор місцезнаходження в рядку стану"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Показати всі місцезнаходження, зокрема отримані з даних про мережі й підключення"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Увімкнути повне вимірювання GNSS"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Відстежувати всі фотосхеми й частоти GNSS без застосування циклічного режиму"</string>
     <string name="device_theme" msgid="5027604586494772471">"Тема пристрою"</string>
     <string name="default_theme" msgid="4815428567082263639">"За умовчанням"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Назва мережі"</string>
@@ -4827,8 +4832,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Призупинити сповіщення, щоб не відволікатися"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Функція недоступна"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Цю функцію вимкнено, оскільки вона сповільнює роботу телефона"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Увімкнути повне вимірювання GNSS"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Відстежувати всі фотосхеми й частоти GNSS без застосування циклічного режиму"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Завжди показувати вікно збоїв"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Показувати вікно під час кожного збою додатка"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Виберіть додаток із підтримкою ANGLE"</string>
@@ -5218,12 +5221,23 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Завдяки функції \"Дзвінки через Wi-Fi\" ви можете здійснювати та отримувати дзвінки не лише через мережі операторів мобільного зв\'язку, а й через Wi‑Fi."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Дзвінки"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"пріоритетні"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"пріоритетні дзвінки"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"пріоритетні SMS"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"недоступно"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Немає SIM-карти"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Параметри"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Підключатися до загальнодоступних мереж"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"з\'єднання з мережею, Інтернет, бездротове, дані, Wi-Fi, wi-fi, wi fi, мобільний, стільниковий, оператор мобільного зв\'язку, 4G, 3G, 2G, LTE"</string>
-    <string name="view_airplane_safe_networks" msgid="7390511371040078514">"Показати безпечні мережі в літаку"</string>
+    <string name="view_airplane_safe_networks" msgid="7390511371040078514">"Показати безпечні в літаку мережі"</string>
     <string name="turn_off_airplane_mode" msgid="1334192337050190071">"Вимкнути режим польоту"</string>
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Недоступно в нічному режимі"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Пріоритет сповіщень скинуто."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Додатки"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Ненадійний пристрій хоче отримати доступ до ваших повідомлень. Натисніть, щоб дізнатися більше."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Дозволити доступ до повідомлень?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Ненадійний пристрій із Bluetooth [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>] хоче отримати доступ до ваших повідомлень.\n\nВи ще не підключалися до пристрою [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Ненадійний пристрій хоче отримати доступ до ваших контактів і журналу викликів. Натисніть, щоб дізнатися більше."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Дозволити доступ до контактів і журналу викликів?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Ненадійний пристрій із Bluetooth [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>] хоче отримати доступ до ваших контактів і журналу викликів, зокрема даних про вхідні й вихідні виклики.\n\nВи ще не підключалися до пристрою [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
 </resources>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index 85c5179..77318ba 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"‏IPv6  پتے"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"محفوظ کردہ نیٹ ورکس"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"سبسکرپشنز"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"دیگر نیٹ ورکس"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"‏IP ترتیبات"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"‏اس صارف کیلئے Wi‑Fi کی اعلی ترتیبات دستیاب نہیں ہیں"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"محفوظ کریں"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"‏APN کو حذف کریں"</string>
     <string name="menu_new" msgid="6571230342655509006">"‏نیا APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"محفوظ کریں"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"مسترد کریں"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"منسوخ کریں"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"نام فیلڈ خالی نہیں رہ سکتی۔"</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"‏APN خالی نہيں رہ سکتا۔"</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"ایپس کو ری سیٹ کیا جا سکتا ہے"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"‏Wi-Fi، موبائل اور بلوٹوتھ ری سیٹ کریں"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"‏اس سے نیٹ ورک کی سبھی ترتیبات ری سیٹ ہو جائیں گی، بشمول:\n\n"<li>"Wi‑Fi"</li>\n<li>"موبائل ڈیٹا"</li>\n<li>"بلوٹوتھ"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"مٹائیں"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"‏ڈاؤن لوڈ کردہ SIMs کو مٹائیں"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"‏متبادل SIMs کو ڈاؤن لوڈ کرنے کے لیے، اپنے کیریئر سے رابطہ کریں۔ اس سے موبائل سروس کا کوئی بھی پلان منسوخ نہیں ہوگا۔"</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"‏اس سے موبائل سروس کا کوئی بھی پلان منسوخ نہیں ہوگا۔ متبادل SIMs کو ڈاؤن لوڈ کرنے کے لیے، اپنے کیریئر سے رابطہ کریں۔"</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"ترتیبات ری سیٹ کریں"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"نیٹ ورک کی سبھی ترتیبات کو دوبارہ ترتیب دیں؟ آپ اس کارروائی کو کالعدم نہیں کر سکتے ہیں۔"</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"‏نیٹ ورک کی سبھی ترتیبات کو ری سیٹ کریں اور ڈاؤن لوڈ کردہ SIMs کو مٹائیں؟ آپ اس کارروائی کو کالعدم نہیں کر سکتے ہیں۔"</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"ٹیبلیٹ معمول سے زیادہ استعمال کیا گیا ہے"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"آلہ معمول سے زیادہ استعمال کیا گیا ہے"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"بیٹری معمول سے پہلے ختم ہو سکتی ہے"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"بیٹری کی صحت کی حفاظت کرنا"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"بیٹری کی صحت کے لیے بہتر بنایا جا رہا ہے"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"بیٹری عارضی طور پر محدود ہے۔ مزید جاننے کے لیے تھپتھپائیں۔"</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"آپ کا فون معمول سے زیادہ استعمال کیا گيا ہے۔ آپ کی بیٹری توقع سے پہلے ختم ہو سکتی ہے۔\n\nبیٹری کے استعمال کے لحاظ سے سب سے زيادہ استعمال کردہ ایپس:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"آپ کا ٹیبلیٹ معمول سے زیادہ استعمال کیا گيا ہے۔ آپ کی بیٹری توقع سے پہلے ختم ہو سکتی ہے۔\n\nبیٹری کے استعمال کے لحاظ سے سب سے زيادہ استعمال کردہ ایپس:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"زیادہ سے زیادہ مرئی ڈیٹا سیٹس"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"ڈیفالٹ اقدار پر دوبارہ ری سیٹ کریں"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"آٹو فل ڈویلپر کے اختیارات کو دوبارہ ترتیب دے دیا گیا ہے"</string>
+    <string name="location_category" msgid="3496759112306219062">"مقام"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"اسٹیٹس بار کے مقام کا انڈیکیٹر"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"نیٹ ورک اور کنیکٹوٹی سمیت، سبھی مقامات کے لیے دکھائیں"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"‏مکمل GNSS پیمائشوں کو زبردستی لاگو کریں"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"‏ڈیوٹی سائیکلنگ کے بغیر سبھی GNSS مجموعوں اور کثرتوں کو ٹریک کریں"</string>
     <string name="device_theme" msgid="5027604586494772471">"آلہ کا تھیم"</string>
     <string name="default_theme" msgid="4815428567082263639">"ڈیفالٹ"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"نیٹ ورک کا نام"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"متوجہ رہنے کے لیے اطلاعات موقوف کریں"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"خصوصیت دستیاب نہیں ہے"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"اس خصوصیت کو آف کر دیا گیا کیونکہ یہ آپ کے فون کو سست کر دیتی ہے"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"‏مکمل GNSS پیمائشوں کو زبردستی لاگو کریں"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"‏ڈیوٹی سائیکلنگ کے بغیر سبھی GNSS مجموعوں اور کثرتوں کو ٹریک کریں"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"ہمیشہ ناکامی کا ڈائیلاگ دکھائیں"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"جب بھی ایپ ناکام ہو تو ڈائیلاگ دکھائیں"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"‏ANGLE کے لیے فعال ایپ منتخب کریں"</string>
@@ -4896,14 +4899,10 @@
     <string name="dsds_activation_failure_title" msgid="4467364110584914794">"‏SIM کو فعال نہیں کیا جا سکتا"</string>
     <string name="dsds_activation_failure_body_msg1" msgid="6303921196869256391">"‏SIM نکال کر دوبارہ داخل کریں۔ مسئلے کے برقرار رہنے پر اپنا آلہ ری اسٹارٹ کریں۔"</string>
     <string name="dsds_activation_failure_body_msg2" msgid="73044349546544410">"‏SIM کو دوبارہ آن کرنے کی کوشش کریں۔ مسئلے کے برقرار رہنے پر اپنا آلہ ری اسٹارٹ کریں۔"</string>
-    <!-- no translation found for sim_setup_channel_id (8797972565087458515) -->
-    <skip />
-    <!-- no translation found for post_dsds_reboot_notification_title_with_carrier (3308827462185135307) -->
-    <skip />
-    <!-- no translation found for post_dsds_reboot_notification_text (7533428378211541410) -->
-    <skip />
-    <!-- no translation found for sim_card_label (5632157635124050923) -->
-    <skip />
+    <string name="sim_setup_channel_id" msgid="8797972565087458515">"نیٹ ورک کی فعالیت"</string>
+    <string name="post_dsds_reboot_notification_title_with_carrier" msgid="3308827462185135307">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> فعال ہے"</string>
+    <string name="post_dsds_reboot_notification_text" msgid="7533428378211541410">"‏SIM کی ترتیبات کو اپ ڈیٹ کرنے کے ليے تھپتھپائیں"</string>
+    <string name="sim_card_label" msgid="5632157635124050923">"‏SIM کارڈ"</string>
     <string name="erase_sim_dialog_title" msgid="881253002169177016">"‏ڈاؤن لوڈ کردہ اس SIM کو مٹائیں؟"</string>
     <string name="erase_sim_dialog_text" msgid="753031064269699885">"‏اس SIM کو مٹانے سے اس آلہ سے <xliff:g id="CARRIER_NAME_A">%1$s</xliff:g> سروس ہٹ جاتی ہے۔\n\n <xliff:g id="CARRIER_NAME_B">%1$s</xliff:g> کی سروس منسوخ نہیں ہوگی۔"</string>
     <string name="erase_sim_confirm_button" msgid="8309115684335320541">"مٹائیں"</string>
@@ -5056,14 +5055,23 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"‏Wi-Fi کالنگ آپ کو کچھ Wi-Fi نیٹ ورک جیسے غیر کیریئر نیٹ ورکس پر کالز کرنے اور موصول کرنے کی اجازت دیتی ہے۔"</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"کالز"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"ترجیحی"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"ترجیحی کالز"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"‏SMS ترجیحی"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"دستیاب نہیں"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"‏کوئی SIM نہیں ہے"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"ترجیحات"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"عوامی نیٹ ورکس سے منسلک ہوں"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"‏نیٹ ورک کنکشن، انٹرنیٹ، وائرلیس، ڈیٹا، wifi، wi-fi، wi fi، سیلولر، موبائل، سیل کیریئر، 4g، 3g، 2g، ‏lte"</string>
-    <!-- no translation found for view_airplane_safe_networks (7390511371040078514) -->
-    <skip />
-    <!-- no translation found for turn_off_airplane_mode (1334192337050190071) -->
-    <skip />
+    <string name="view_airplane_safe_networks" msgid="7390511371040078514">"ہوائی جہاز کے لیے محفوظ نیٹ ورکس دیکھیں"</string>
+    <string name="turn_off_airplane_mode" msgid="1334192337050190071">"ہوائی جہاز وضع آف کریں"</string>
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"دستیاب نہیں ہے کیونکہ بیڈ ٹائم موڈ آن ہے"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"اطلاع کی اہمیت کو ری سیٹ کرنے کا عمل مکمل ہو گیا۔"</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"ایپس"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"غیر بھروسہ مند آلہ آپ کے پیغامات تک رسائی حاصل کرنا چاہتا ہے۔ تفصیلات کے ليے تھپتھپائيں۔"</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"پیغامات تک رسائی کی اجازت دیں؟"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"ایک غیر بھروسہ مند بلوٹوتھ آلہ، [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>]، آپ کے پیغامات تک رسائی حاصل کرنا چاہتا ہے۔\n\nآپ پہلے کبھی بھی [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] سے منسلک نہیں ہوئے ہیں۔"</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"غیر بھروسہ مند آلہ آپ کے رابطوں اور کال لاگ تک رسائی حاصل کرنا چاہتا ہے۔ تفصیلات کے ليے تھپتھپائيں۔"</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"رابطوں اور کال لاگ تک رسائی کی اجازت دیں؟"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"ایک غیر بھروسہ مند بلوٹوتھ آلہ، [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>]، آپ کے رابطوں اور کال لاگ تک رسائی حاصل کرنا چاہتا ہے۔ اس میں آنے اور جانے والی کالز کے بارے میں ڈیٹا شامل ہے۔\n\nآپ پہلے کبھی بھی [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] سے منسلک نہیں ہوئے ہیں۔"</string>
 </resources>
diff --git a/res/values-uz/arrays.xml b/res/values-uz/arrays.xml
index d2f82b7..9d885b2 100644
--- a/res/values-uz/arrays.xml
+++ b/res/values-uz/arrays.xml
@@ -499,8 +499,8 @@
     <item msgid="2047166446768045816">"Bu – bepul tarmoq"</item>
   </string-array>
   <string-array name="wifi_privacy_entries">
-    <item msgid="3485945604919292489">"Ixtiyoriy MAC manzil (standart)"</item>
-    <item msgid="741680937828608749">"Ixtiyoriy MAC manzil"</item>
+    <item msgid="3485945604919292489">"Tasodifiy MAC manzil (standart)"</item>
+    <item msgid="741680937828608749">"Qurilmaning MAC manzili"</item>
   </string-array>
   <string-array name="wifi_hidden_entries">
     <item msgid="342232116597649254">"Yo‘q"</item>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index e5b5178..1b6ad87 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 manzillar"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Saqlangan tarmoqlar"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Obunalar"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Boshqa tarmoqlar"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP sozlamalari"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Ushbu foydalanuvchi Wi-Fi kengaytirilgan sozlamalaridan foydalana olmaydi"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Saqlash"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"APNni o‘chirish"</string>
     <string name="menu_new" msgid="6571230342655509006">"Yangi APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"Saqlash"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Bekor qilish"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Bekor qilish"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Nom to‘ldirilmagan bo‘lolmaydi."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN kiritilishi shart"</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Ilovalarni asliga qaytarish mumkin"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Wi-Fi, mobil internet va Bluetooth parametrlarini tiklash"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Bu barcha tarmoq sozlamalarini, jumladan, mazkur sozlamalarni asliga qaytaradi:\n\n"<li>"Wi‑Fi"</li>\n<li>"Mobil internet"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Tozalash"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Yuklab olingan SIM kartalar axborotini tozalash"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Almashtiriladigan SIM kartalar yuklab olish uchun aloqa operatoringizga murojaat qiling. Bunda mobil xizmatning hech qaysi tarif rejasi bekor qilinmaydi."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Bunda mobil xizmatning hech qaysi tarif rejasi bekor qilinmaydi. Yangi eSIM profilini yuklab olish uchun aloqa operatoriga murojaat qiling"</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Asliga qaytarish"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Barcha tarmoq sozlamalari qayta tiklansinmi? Bu amalni ortga qaytarish imkonsiz."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Barcha tarmoq sozlamalari tiklasinmi va yuklab olingan SIM kartalar axboroti tozalansinmi? Bu amalni ortga qaytara olmaysiz."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Planshet odatdagidan ko‘proq ishlatildi"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Qurilma odatdagidan ko‘proq ishlatildi"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Batareya quvvati odatdagiga nisbatan tezroq tugashi mumkin"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Batareya yaroqlilik muddatini uzaytirish"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Batareya quvvati muvozanatlanmoqda"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Batareya quvvati darajasi vaqtincha cheklangan. Batafsil axborot olish uchun bosing."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Telefoningiz odatdagidan koʻproq ishlatildi. Batareya quvvati kutilgandan tezroq tugashi mumkin.\n\nBatareyani eng koʻp sarflagan ilovalar:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Planshetingiz odatdagidan koʻproq ishlatildi. Batareya quvvati kutilgandan tezroq tugashi mumkin.\n\nBatareyani eng koʻp sarflagan ilovalar:"</string>
@@ -2601,7 +2601,7 @@
     <string name="battery_overall_usage" msgid="8940140259734182014">"<xliff:g id="PERCENT">%1$s</xliff:g> batareya quvvati"</string>
     <string name="battery_detail_since_full_charge" msgid="5650946565524184582">"100%% quvvatlanganidan beri batareya sarfi"</string>
     <string name="battery_last_full_charge" msgid="8308424441475063956">"Oxirgi toʻliq quvvatlanish"</string>
-    <string name="battery_full_charge_last" msgid="465146408601016923">"100%% quvvat bilan ishlash vaqti"</string>
+    <string name="battery_full_charge_last" msgid="465146408601016923">"Toʻliq quvvat qancha vaqtga yetishi"</string>
     <string name="battery_footer_summary" msgid="9125397752380281832">"Batareyaning qolgan vaqti taxminiy va u foydalanish intensivligiga qarab farq qilishi mumkin"</string>
     <string name="battery_detail_foreground" msgid="3312280147931093967">"Faol rejimda"</string>
     <string name="battery_detail_background" msgid="3333915023706228000">"Fon rejimida"</string>
@@ -3114,7 +3114,7 @@
     <string name="restriction_settings_title" msgid="4293731103465972557">"Cheklovlar"</string>
     <string name="restriction_menu_reset" msgid="92859464456364092">"Cheklovlarni olib tashlash"</string>
     <string name="restriction_menu_change_pin" msgid="2505923323199003718">"PIN kodni o‘zgartirish"</string>
-    <string name="help_label" msgid="2896538416436125883">"Yordam va fikr-mulohaza"</string>
+    <string name="help_label" msgid="2896538416436125883">"Yordam/fikr-mulohaza"</string>
     <string name="support_summary" msgid="1034146931237148885">"Yordam maqolalari, telefon va chat, ishni boshlash"</string>
     <string name="user_account_title" msgid="6389636876210834864">"Kontent uchun hisob"</string>
     <string name="user_picture_title" msgid="7176437495107563321">"Suratli hujjat"</string>
@@ -3598,7 +3598,7 @@
     <string name="conversation_onboarding_title" msgid="5194559958353468484">"Muhim va oʻzgargan suhbatlar shu yerda chiqadi"</string>
     <string name="conversation_onboarding_summary" msgid="2484845363368486941">"Muhim deb belgilangan yoki oʻzgartirish kiritilgan xabarlar shu yerda chiqadi. \n\nSuhbat sozlamalarini oʻzgartirish uchun: \nEkran tepasini bosib pastga torting, keyin suhbat ustiga biroz bosib turing."</string>
     <string name="notification_importance_min" msgid="4609688642942787774">"Tovushsiz chiqarish va kichraytirish"</string>
-    <string name="notification_importance_low" msgid="7562535765919565273">"Tovushsiz"</string>
+    <string name="notification_importance_low" msgid="7562535765919565273">"Sokin"</string>
     <string name="notification_importance_default" msgid="7483906490369073043">"Tovush bilan"</string>
     <string name="notification_importance_high" msgid="8453789143477210550">"Tovush va qalqib chiquvchi oyna"</string>
     <string name="notification_importance_high_silent" msgid="8977232884004607985">"Ekranga qalqib chiqish"</string>
@@ -3607,7 +3607,7 @@
     <string name="notification_importance_default_title" msgid="8875198696330289686">"Yuqori"</string>
     <string name="notification_importance_high_title" msgid="394129291760607808">"Ekranga qalqib chiqish"</string>
     <string name="notification_block_title" msgid="7392909527700971673">"Bloklash"</string>
-    <string name="notification_silence_title" msgid="4085829874452944989">"Tovushsiz"</string>
+    <string name="notification_silence_title" msgid="4085829874452944989">"Sokin"</string>
     <string name="notification_alert_title" msgid="1632401211722199217">"Standart"</string>
     <string name="allow_interruption" msgid="5237201780159482716">"Bildirishnomalarga ruxsat berish"</string>
     <string name="allow_interruption_summary" msgid="9044131663518112543">"Ilovaga ovozli signal va tebranishni yoqishi hamda ekranga bildirishnomalarni chiqarishiga imkon beradi"</string>
@@ -3678,7 +3678,7 @@
     <string name="interact_across_profiles_consent_dialog_app_data_title" msgid="8436318876213958940">"Ilovaga tegishli maʼlumotlar"</string>
     <string name="interact_across_profiles_consent_dialog_app_data_summary" msgid="6057019384328088311">"Bu ilova <xliff:g id="NAME">%1$s</xliff:g> ilovasidagi maʼlumotlarga kira oladi."</string>
     <string name="interact_across_profiles_consent_dialog_permissions_title" msgid="2316852600280487055">"Ruxsatlar"</string>
-    <string name="interact_across_profiles_consent_dialog_permissions_summary" msgid="995051542847604039">"Bu ilova shaxsiy <xliff:g id="NAME">%1$s</xliff:g> ilovangizning ruxsatlaridan foydalana oladi. Masalan, joylashuv axborotingizni bilish, xotira yoki kontaktlardan foydalanish kabi."</string>
+    <string name="interact_across_profiles_consent_dialog_permissions_summary" msgid="995051542847604039">"Bu ilova shaxsiy <xliff:g id="NAME">%1$s</xliff:g> ilovangiz uchun berilgan ruxsatlardan foydalana oladi. Masalan, joylashuvingiz haqidagi axborotni bilish, xotira yoki kontaktlardan foydalanish."</string>
     <string name="interact_across_profiles_number_of_connected_apps_none" msgid="8573289199942092964">"Hech qanday ilova ulanmagan"</string>
     <plurals name="interact_across_profiles_number_of_connected_apps" formatted="false" msgid="6991750455661974772">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ta ilova ulandi</item>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Maksimum ochiq axborot bazalari"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Birlamchi qiymatlariga tiklash"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Avtomatik kiritishning dasturchi parametrlari asliga qaytarildi"</string>
+    <string name="location_category" msgid="3496759112306219062">"Joylashuv"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Holat qatoridagi joylashuv indikatori"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Barcha joylashuvlar, jumladan, tarmoq va ulanish orqali aniqlanadigan, uchun chiqarish"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Butun GNSS statistikasini yuklash"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Siklsiz barcha GNSS sxema va davriyliklarini kuzatish"</string>
     <string name="device_theme" msgid="5027604586494772471">"Qurilma mavzusi"</string>
     <string name="default_theme" msgid="4815428567082263639">"Standart"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Tarmoq nomi"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Bezovta qiluvchi bildirishnomalarni pauza qiling"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Bu funksiya ishlamaydi"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Bu funksiya telefoningizni sekinlashtirgani sababli u faolsizlantirildi"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Butun GNSS statistikasini yuklash"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Siklsiz barcha GNSS sxema va davriyliklarini kuzatish"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Buzilish oynasi doim ko‘rsatilsin"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Ilova ishdan chiqqanda har safar muloqot oynasi ko‘rsatilsin"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"ANGLE yoqilgan ilovani tanlang"</string>
@@ -4963,7 +4966,7 @@
     <string name="wfc_disclaimer_agree_button_text" msgid="4082872292910770344">"DAVOM ETISH"</string>
     <string name="wfc_disclaimer_disagree_text" msgid="8424457394700137703">"KERAK EMAS"</string>
     <string name="wfc_disclaimer_location_title_text" msgid="7913919887475418423">"Joylashuv"</string>
-    <string name="wfc_disclaimer_location_desc_text" msgid="2799241640320172899">"Xizmat taʼminotchingiz bu xizmatni taqdim etish uchun joylashuv axborotingizni toʻplashi mumkin.\n\nXizmat taʼminotchingiz maxfiylik siyosati bilan tanishib chiqing."</string>
+    <string name="wfc_disclaimer_location_desc_text" msgid="2799241640320172899">"Mobil operatoringiz bu xizmatni taqdim etish uchun joylashuvingiz haqidagi axborotni olishi mumkin.\n\nUning maxfiylik siyosati bilan tanishib chiqing."</string>
     <string name="forget_passpoint_dialog_message" msgid="2433875063907365760">"Qolgan vaqt yoki axborotga ruxsatni yoʻqotishingiz mumkin. Olib tashlashdan oldin provayderingiz bilan tekshiring."</string>
     <string name="keywords_content_capture" msgid="7802155522681936956">"kontentni yozib olish, ilova kontenti"</string>
     <string name="content_capture" msgid="868372905432812238">"Ilova kontenti"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Wi-Fi chaqiruv funksiyasi mobil tarmoq ishlatmasdan Wi‑Fi tarmoqlar orqali chaqiruv qilish va chaqiruvlarni qabul qilish imkonini beradi."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Chaqiruvlar"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"maqbul"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"maqbul chaqiruvlar"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"Maqbul SMS"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"mavjud emas"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"SIM kartasiz"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Sozlamalar"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Ochiq tarmoqlarga ulanish"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"tarmoq aloqasi, internet, simsiz, aloqa, wifi, wi-fi, wi fi, mobil, mobile, mobil tarmoq operatori, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Uyqu vaqti rejimi yoniqligi sababli ishlamaydi"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Muhim bildirishnomalar sozlamalari tiklandi."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Ilovalar"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Notanish qurilma xabarlaringizga kirmoqchi. Batafsil."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Xabarlarga kirishga ruxsat berilsinmi?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Notanish Bluetooth qurilmasi ([<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>]) xabarlaringizga kirmoqchi.\n\nSiz ilgari [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] qurilmasiga ulanmagansiz."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Notanish qurilma kontakt va chaqiruvlar jurnaliga kirmoqchi. Batafsil."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Chaqiruvlar va chaqiruvlar jurnaliga kirishga ruxsat berilsinmi?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Notanish Bluetooth qurilmasi ([<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>]) kontakt va chaqiruvlaringiz tarixiga kirmoqchi. Bunga kiruvchi va chiquvchi chaqiruvlar ham kiradi.\n\nSiz ilgari [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] qurilmasiga ulanmagansiz."</string>
 </resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 06bd6ad..bf510f8 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"Địa chỉ IPv6"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Mạng đã lưu"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Gói đăng ký"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Các mạng khác"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"Cài đặt IP"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Cài đặt nâng cao Wi‑Fi không khả dụng cho người dùng này"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Lưu"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Xóa APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"APN mới"</string>
     <string name="menu_save" msgid="6611465355127483100">"Lưu"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Hủy"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Hủy"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Không được để trống trường Tên."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN không được để trống."</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Có thể đặt lại các ứng dụng"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Đặt lại Wi-Fi, di động và Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Thao tác này sẽ đặt lại tất cả các tùy chọn cài đặt mạng, bao gồm:\n\n"<li>"Wi‑Fi"</li>\n<li>"Dữ liệu di động"</li>\n<li>"Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Xóa"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Xóa SIM đã tải xuống"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Nếu bạn muốn tải SIM thay thế xuống, hãy liên hệ với nhà mạng. Thao tác này sẽ không hủy bất kỳ gói dịch vụ di động nào."</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Thao tác này sẽ không hủy gói dịch vụ di động nào. Để tải SIM thay thế xuống, hãy liên hệ với nhà mạng của bạn."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Đặt lại các tùy chọn cài đặt"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Bạn muốn đặt lại tất cả tùy chọn cài đặt mạng? Bạn không thể hủy hành động này."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Bạn muốn đặt lại tất cả tùy chọn cài đặt mạng và xóa các SIM đã tải xuống? Bạn không thể hủy hành động này sau khi đã thực hiện."</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Máy tính bảng được sử dụng nhiều hơn thường lệ"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Thiết bị được sử dụng nhiều hơn thường lệ"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Pin có thể hết sớm hơn thường lệ"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Duy trì độ bền của pin"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Tối ưu hóa để cải thiện độ bền của pin"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Thời lượng pin bị hạn chế tạm thời. Nhấn để tìm hiểu thêm."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Bạn sử dụng điện thoại nhiều hơn mức bình thường. Pin điện thoại có thể hết sớm hơn dự kiến.\n\nCác ứng dụng dùng nhiều pin nhất:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Bạn dùng máy tính bảng nhiều hơn mức bình thường. Pin của bạn có thể hết sớm hơn dự kiến.\n\nCác ứng dụng dùng nhiều pin nhất:"</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Số tập dữ liệu hiển thị tối đa"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Đặt lại về giá trị mặc định"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Đã đặt lại tùy chọn tự động điền dành cho nhà phát triển"</string>
+    <string name="location_category" msgid="3496759112306219062">"Vị trí"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Chỉ báo vị trí trên thanh trạng thái"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Hiển thị cho tất cả vị trí, bao gồm cả mạng và khả năng kết nối"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Thực thi số đo GNSS đầy đủ"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Theo dõi tất cả chòm sao và tần suất GNSS mà không có chu kỳ làm việc"</string>
     <string name="device_theme" msgid="5027604586494772471">"Giao diện thiết bị"</string>
     <string name="default_theme" msgid="4815428567082263639">"Mặc định"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Tên mạng"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Tạm dừng thông báo để tập trung"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Tính năng không hoạt động"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Tính năng này đã bị tắt vì sẽ khiến điện thoại chạy chậm"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Thực thi số đo GNSS đầy đủ"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Theo dõi tất cả chòm sao và tần suất GNSS mà không có chu kỳ làm việc"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Luôn hiển thị hộp thoại sự cố"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Hiển thị hộp thoại mỗi khi ứng dụng gặp sự cố"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Chọn ứng dụng hỗ trợ ANGLE"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Với tính năng gọi qua Wi‑Fi, bạn có thể gọi và nhận cuộc gọi qua các mạng không phải do nhà mạng cung cấp, chẳng hạn như một số mạng Wi‑Fi."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Cuộc gọi"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"Tin nhắn SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"ưu tiên"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"ưu tiên cuộc gọi"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"ưu tiên SMS"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"không có sẵn"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Không có SIM"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Lựa chọn ưu tiên"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Kết nối với mạng công cộng"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"kết nối mạng, Internet, không dây, dữ liệu, wifi, wi-fi, wi fi, di động, nhà mạng di động, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Không dùng được vì chế độ giờ đi ngủ đang bật"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Đã hoàn tất việc đặt lại mức độ quan trọng của thông báo."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Ứng dụng"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Thiết bị không tin cậy muốn truy cập vào tin nhắn của bạn. Hãy nhấn để biết thông tin chi tiết."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Cho phép truy cập vào tin nhắn?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Một thiết bị Bluetooth không tin cậy [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>] muốn truy cập vào tin nhắn của bạn.\n\nBạn chưa từng kết nối với [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Thiết bị không tin cậy muốn truy cập vào danh bạ và nhật ký cuộc gọi của bạn. Hãy nhấn để biết thông tin chi tiết."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Cho phép truy cập vào danh bạ và nhật ký cuộc gọi?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Một thiết bị Bluetooth không tin cậy [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>] muốn truy cập vào danh bạ và nhật ký cuộc gọi của bạn. Trong đó có cả dữ liệu về cuộc gọi đi và cuộc gọi đến.\n\nBạn chưa từng kết nối với [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]."</string>
 </resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index a6c94ba..2c6deca 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 地址"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"已保存的网络"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"订阅"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"其他网络"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP 设置"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"此用户无法查看或修改 WLAN 网络高级设置"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"保存"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"删除 APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"新建 APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"保存"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"放弃"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"取消"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"“名称”字段不能为空。"</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN 不能为空。"</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"应用可以重置"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"重置 WLAN、移动数据网络和蓝牙设置"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"此操作会重置所有网络设置，包括：\n\n"<li>"WLAN"</li>\n<li>"移动数据网络"</li>\n<li>"蓝牙"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"清空"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"清除已下载的 SIM 卡"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"要下载备用 SIM 卡，请与您的运营商联系。此操作不会取消任何移动服务套餐。"</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"此操作并不会取消任何移动服务套餐。如要下载备用 SIM 卡，请与您的运营商联系。"</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"重置设置"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"要重置所有网络设置吗？此操作无法撤消。"</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"要重置所有网络设置并清除已下载的 SIM 卡吗？此操作无法撤消。"</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"平板电脑的使用强度比平时高"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"设备的使用强度比平时高"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"电池电量可能会比平时更快耗尽"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"延长电池续航时间"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"针对电池状况进行优化"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"暂时限用电池。点按即可了解详情。"</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"您使用的手机的频率比平时高。电池电量可能会比预期更快耗尽。\n\n耗电量较高的几个应用："</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"您使用平板电脑的频率比平时高。电池电量可能会比预期更快耗尽。\n\n耗电量较高的几个应用："</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"可见数据集最大数量"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"重置为默认值"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"已重置自动填充开发者选项"</string>
+    <string name="location_category" msgid="3496759112306219062">"位置"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"状态栏位置指示器"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"对所有位置均显示，包括通过网络和连接方式获取的位置信息"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"强制启用 GNSS 测量结果全面跟踪"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"在停用工作周期的情况下跟踪所有 GNSS 星座和频率"</string>
     <string name="device_theme" msgid="5027604586494772471">"设备主题背景"</string>
     <string name="default_theme" msgid="4815428567082263639">"默认"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"网络名称"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"暂停通知即可保持专注"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"无法使用此功能"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"由于此功能会导致您的手机速度变慢，因此系统已关闭此功能"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"强制启用 GNSS 测量结果全面跟踪"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"在停用工作周期的情况下跟踪所有 GNSS 星座和频率"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"一律显示崩溃对话框"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"在每次应用崩溃时显示对话框"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"选择已启用 ANGLE 的应用"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"WLAN 通话功能支持您通过非运营商网络（例如某些 WLAN 网络）接打电话。"</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"通话"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"短信"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"首选"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"首选通话"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"首选短信"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"不可用"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"没有 SIM 卡"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"偏好设置"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"连接到公共网络"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"网络连接, 互联网, 无线, 数据, WiFi, Wi-Fi, Wi Fi, WLAN, 移动网络, 移动, 手机运营商, 4G, 3G, 2G, LTE"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"就寝模式开启时无法使用"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"通知重要性重置完成。"</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"应用"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"不受信任的设备想要查看您的消息。点按可了解详情。"</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"要允许查看消息吗？"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"不受信任的蓝牙设备 [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>] 想要查看您的消息。\n\n您之前没有连接过 [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]。"</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"不受信任的设备想要查看您的通讯录和通话记录。点按可了解详情。"</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"要允许查看通讯录和通话记录吗？"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"不受信任的蓝牙设备 [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>] 想要查看您的通讯录和通话记录，包括有关来电和去电的数据。\n\n您之前没有连接过 [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]。"</string>
 </resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index d945d10..eda46c6 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 位址"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"已儲存的網絡"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"訂閱"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"其他網絡"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP 設定"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"這位使用者無法查看或變更 Wi-Fi 進階設定"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"儲存"</string>
@@ -1598,7 +1597,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"刪除 APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"新增 APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"儲存"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"捨棄"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"取消"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"[名稱] 欄位不得留空。"</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN 不可留空。"</string>
@@ -1613,8 +1612,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"應用程式可以重設"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"重設 Wi-Fi、流動數據和藍牙"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"此操作會重設所有網絡設定，包括：\n\n"<li>"Wi‑Fi"</li>\n<li>"流動數據"</li>\n<li>"藍牙"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"清除"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"清除已下載的 SIM 卡"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"如要下載 SIM 替換卡，請聯絡流動網絡供應商。此動作不會取消任何流動服務計劃。"</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"此操作不會取消任何流動服務計劃。如要下載替換用的 SIM，請聯絡流動網絡供應商。"</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"重設設定"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"您要重設所有網絡設定嗎？您將無法復原這項動作。"</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"您要重設所有網絡設定並清除已下載的 SIM 卡嗎？您無法復原這個動作。"</string>
@@ -2457,7 +2457,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"平板電腦使用率比平常高"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"裝置使用率比平常高"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"電池電量可能會比平常更快耗盡"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"延長電池壽命"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"正在優化電池狀態"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"暫時限制電池充電。輕按即可瞭解詳情。"</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"您的手機使用率比平常高，電池電量可能會比預期更快耗盡。\n\n電池用量最高的應用程式："</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"您的平板電腦使用率比平常高，電池電量可能會比預期更快耗盡。\n\n電池用量最高的應用程式："</string>
@@ -4652,6 +4652,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"數據集顯示上限"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"重設為預設值"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"自動填入開發人員選項已重設"</string>
+    <string name="location_category" msgid="3496759112306219062">"位置"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"狀態列位置指標"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"顯示所有位置，包括透過網絡和各種連線方式取得的位置資訊"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"強制啟用完整的 GNSS 測量資料"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"在停用工作週期的情況下追蹤所有 GNSS 星座圖和頻率"</string>
     <string name="device_theme" msgid="5027604586494772471">"裝置主題"</string>
     <string name="default_theme" msgid="4815428567082263639">"預設"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"網絡名稱"</string>
@@ -4668,8 +4673,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"暫停通知，助您保持專注"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"功能無法使用"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"由於這項功能會降低手機運行速度，因此已關閉"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"強制啟用完整的 GNSS 測量資料"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"在停用工作週期的情況下追蹤所有 GNSS 星座圖和頻率"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"一律顯示當機對話框"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"在每次應用程式當機時顯示對話框"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"選取支援 ANGLE 的應用程式"</string>
@@ -5053,6 +5056,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Wi-Fi 通話可讓您透過非流動網絡供應商網絡 (例如 Wi-Fi 網絡) 撥打和接聽電話。"</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"通話"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"短訊"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"偏好"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"偏好的通話"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"偏好的短訊"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"無法使用"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"沒有 SIM 卡"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"偏好設定"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"連線至公共網絡"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"網絡連線, 互聯網, 無線, 數據, Wi-Fi, 流動網絡, 流動裝置, 流動網絡供應商, 4G, 3G, 2G, LTE"</string>
@@ -5061,4 +5069,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"睡眠模式開啟時無法使用"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"通知重要性重設完成。"</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"應用程式"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"不信任的裝置想存取您的訊息。輕按即可瞭解詳情。"</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"要允許存取訊息嗎？"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"不信任的藍牙裝置 [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>] 想存取您的訊息。\n\n請注意，您從未連接 [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]。"</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"不信任的裝置要求存取您的聯絡人和通話記錄。輕按即可瞭解詳情。"</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"要允許存取聯絡人和通話記錄嗎？"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"不信任的藍牙裝置 [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>] 要求存取您的聯絡人和通話記錄，包括來電和撥出電話的資料。\n\n您從未連接 [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]。"</string>
 </resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index e8e2025..beed3f6 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"IPv6 位址"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"已儲存的網路"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"訂閱"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"其他網路"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"IP 設定"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"這位使用者無法使用 Wi‑Fi 網路進階設定"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"儲存"</string>
@@ -1597,7 +1596,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"刪除 APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"新增 APN"</string>
     <string name="menu_save" msgid="6611465355127483100">"儲存"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"捨棄"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"取消"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"[名稱] 欄位不得留空。"</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"APN 不可留空。"</string>
@@ -1612,8 +1611,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"可重設應用程式"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"重設 Wi-Fi、行動網路和藍牙"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"這項操作會重設所有網路設定，包括：\n\n"<li>"Wi‑Fi"</li>\n<li>"行動數據"</li>\n<li>"藍牙"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"清除"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"清除已下載的 SIM 卡"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"如要下載替換用的 SIM 卡，請與你的電信業者聯絡。這個動作不會取消任何電信資費方案。"</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"這項操作不會取消任何電信資費方案。如要下載替換用的 SIM 卡，請與你的電信業者聯絡。"</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"重設設定"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"要重設所有網路設定嗎？請注意，這個動作無法復原。"</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"要重設所有網路設定並清除已下載的 SIM 卡嗎？請注意，這個動作無法復原。"</string>
@@ -2456,7 +2456,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"平板電腦使用率比平常高"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"裝置使用率比平常高"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"電池電量可能會比平常更快耗盡"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"維持電池續航力"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"針對電池狀態進行最佳化調整"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"系統已暫時限制電池用量。輕觸即可瞭解詳情。"</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"你的手機使用率比平常高，電池電量可能比預期更快耗盡。\n\n你常用的應用程式如下 (按照電池用量由高到低排序)："</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"你的平板電腦使用率比平常高，電池電量可能比預期更快耗盡。\n\n你常用的應用程式如下 (按照電池用量由高到低排序)："</string>
@@ -4651,6 +4651,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"可見資料集數量上限"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"重設為預設值"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"已重設自動填入開發人員選項"</string>
+    <string name="location_category" msgid="3496759112306219062">"位置"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"狀態列位置指標"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"顯示所有位置，包括透過網路和各種連線方式取得的位置資訊"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"強制啟用完整的 GNSS 測量資料"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"在停用工作週期的情況下追蹤所有 GNSS 星座圖和頻率"</string>
     <string name="device_theme" msgid="5027604586494772471">"裝置主題"</string>
     <string name="default_theme" msgid="4815428567082263639">"預設"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"網路名稱"</string>
@@ -4667,8 +4672,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"暫停通知以保持專注"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"無法使用此功能"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"這項功能會降低你的手機速度，因此已由系統停用"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"強制啟用完整的 GNSS 測量資料"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"在停用工作週期的情況下追蹤所有 GNSS 星座圖和頻率"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"一律顯示當機對話方塊"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"在每次應用程式當機時顯示對話方塊"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"選取已啟用 ANGLE 的應用程式"</string>
@@ -5052,6 +5055,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Wi-Fi 通話功能可讓你透過非電信業者網路 (例如某些 Wi-Fi 網路) 撥打電話及接聽來電。"</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"通話"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"簡訊"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"偏好"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"偏好通話"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"偏好簡訊"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"無法使用"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"沒有 SIM 卡"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"偏好設定"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"連線至公用網路"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"網路連線, 網際網路, 無線, 行動數據, wifi, wi-fi, wi fi, 行動網路, 行動, 電信業者, 4g, 3g, 2g, lte"</string>
@@ -5060,4 +5068,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"就寢時間模式開啟時無法使用"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"通知重要性重設完成。"</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"應用程式"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"不受信任的裝置想要存取你的訊息。輕觸即可瞭解詳情。"</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"要允許存取訊息嗎？"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"不受信任的藍牙裝置 [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>] 想要存取你的訊息。\n\n請注意，你從未連結到 [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]。"</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"不受信任的裝置想要存取你的聯絡人和通話記錄。輕觸即可瞭解詳情。"</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"要允許存取聯絡人和通話記錄嗎？"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"不受信任的藍牙裝置 [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>] 想要存取你的聯絡人和通話記錄，包括你接聽及撥打的電話。\n\n請注意，你從未連結到 [<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>]。"</string>
 </resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 340489a..dc84b5d 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -1022,8 +1022,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="1913151339341722443">"Amakheli e-IPv6"</string>
     <string name="wifi_saved_access_points_label" msgid="5691340724310548151">"Amanethiwekhi alondoloziwe"</string>
     <string name="wifi_subscribed_access_points_tab" msgid="7224061396195667208">"Okubhalisiwe"</string>
-    <!-- no translation found for wifi_saved_access_points_tab (2075914709522121708) -->
-    <skip />
+    <string name="wifi_saved_other_networks_tab" msgid="7942647415716557293">"Amanye amanethiwekhi"</string>
     <string name="wifi_advanced_settings_label" msgid="5880605751602184383">"Izilungiselelo ze-IP"</string>
     <string name="wifi_advanced_not_available" msgid="8701003884367299092">"Izilungiselelo ezithuthukisiwe ze-Wi‑Fi azitholakaleli lo msebenzisi"</string>
     <string name="wifi_ip_settings_menu_save" msgid="5190481040428567106">"Londoloza"</string>
@@ -1598,7 +1597,7 @@
     <string name="menu_delete" msgid="9199740901584348273">"Susa i-APN"</string>
     <string name="menu_new" msgid="6571230342655509006">"I-APN Entsha"</string>
     <string name="menu_save" msgid="6611465355127483100">"Londoloza"</string>
-    <string name="menu_cancel" msgid="4526003389139913077">"Lahla"</string>
+    <string name="menu_cancel" msgid="1197826697950745335">"Khansela"</string>
     <string name="error_title" msgid="7158648377702417716"></string>
     <string name="error_name_empty" msgid="1258275899283079142">"Igama lenkundla akumelwe lingabi nalutho."</string>
     <string name="error_apn_empty" msgid="7657491065443746915">"I-APN akumelwe ingabi nalutho."</string>
@@ -1613,8 +1612,9 @@
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Izinhlelo zokusebenza zingasethwa kabusha"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Setha kabusha i-Wi-Fi, iselula ne-Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Lokhu kuzosetha kabusha zonke izilungiselelo zenethiwekhi ezifaka:\n\n"<li>"i-Wi‑Fi"</li>\n<li>"Idatha yeselula"</li>\n<li>"ne-Bluetooth"</li></string>
+    <string name="erase_euicc_data_button" msgid="728078969563311737">"Sula"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Sula ama-SIM alandiwe"</string>
-    <string name="reset_esim_desc" msgid="4256518544336245086">"Ukuze ulande ama-SIM okubekwa, xhumana nenkampani yakho yenethiwekhi. Lokhu ngeke kukhansele noma iziphi izinhlelo zesevisi yeselula"</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"Lokhu ngeke kukhansele noma yiziphi izinhlelo zesevisi yeselula. Ukuze ulande okokumisela ama-SIM, xhumana nenkampani yakho yenethiwekhi."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Setha kabusha izilungiselelo"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Setha kabusha zonke izilungiselelo zenethiwekhi? Awukwazi ukuhlehlisa lesi senzo."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"Setha kabusha zonke izilungiselelo zenethiwekhi uphinde usule ama-SMS alandiwe? Awukwazi ukuhlehlisa lesi senzo."</string>
@@ -2457,7 +2457,7 @@
     <string name="battery_tip_high_usage_title" product="tablet" msgid="8515903411746145740">"Ithebulethi isetshenziswa ngaphezulu kunokujwayelekile"</string>
     <string name="battery_tip_high_usage_title" product="device" msgid="6577086402173910457">"Idivayisi isetshenziswa ngaphezulu kunokujwayelekile"</string>
     <string name="battery_tip_high_usage_summary" msgid="5356399389711499862">"Ibhethri lingaphela ngaphambi kwesikhathi kunokujwayelekile"</string>
-    <string name="battery_tip_limited_temporarily_title" msgid="3532338978617826383">"Igcina impilo yebhethri"</string>
+    <string name="battery_tip_limited_temporarily_title" msgid="7152799456221596915">"Ilungiselela impilo yebhethri"</string>
     <string name="battery_tip_limited_temporarily_summary" msgid="6837061824463128857">"Ibhethri ikhawulelwe okwesikhashana. Thepha ukuze ufunde kabanzi."</string>
     <string name="battery_tip_dialog_message" product="default" msgid="4681734836472195966">"Ifoni yakho isetshenziswe ngaphezulu kokujwayelekile. Ibhethri lakho lingaphela ngokushesha kunokulindeleke ngakhona.\n\nIzinhlelo zokusebenza eziphezulu ngokusetshenziswa kwebhethri:"</string>
     <string name="battery_tip_dialog_message" product="tablet" msgid="3934298305232120382">"Ithebulethi yakho isetshenziswe ngaphezulu kunokujwayelekile. Ibhethri lakho lingaphela ngokushesha kunokulindeleke ngakhona.\n\nIzinhlelo zokusebenza eziphezulu ngokusetshenziswa kwebhethri:"</string>
@@ -4652,6 +4652,11 @@
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Amadathasethi amakhulu abonakalayo"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"Setha kabusha kuye kumanani azenzakalelayo"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"Izinketho zokugcwalisa ngokuzenzakalela zonjiniyela zisethwe kabusha"</string>
+    <string name="location_category" msgid="3496759112306219062">"Indawo"</string>
+    <string name="location_indicator_settings_title" msgid="6655916258720093451">"Isikhombi sendawo yebha yesimo"</string>
+    <string name="location_indicator_settings_description" msgid="2888022085372804021">"Bonisa kuzo zonke izindawo, okufaka phakathi inethiwekhi nokuxhumeka"</string>
+    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Phoqa izikali ezigcwele ze-GNSS"</string>
+    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Landelela onke ama-constellation nezimvamisa ngomjikelezo ongenawo umsebenzi"</string>
     <string name="device_theme" msgid="5027604586494772471">"Itimu yedivayisi"</string>
     <string name="default_theme" msgid="4815428567082263639">"Okuzenzakalelayo"</string>
     <string name="show_operator_name_title" msgid="3355910331531144028">"Igama lenethiwekhi"</string>
@@ -4668,8 +4673,6 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Misa isikhashana izikhangiso ukuze uhlale ugxilile"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Isici asitholakali"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Lesi sici sivaliwe ngoba sibambezela ifoni yakho"</string>
-    <string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"Phoqa izikali ezigcwele ze-GNSS"</string>
-    <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"Landelela onke ama-constellation nezimvamisa ngomjikelezo ongenawo umsebenzi"</string>
     <string name="show_first_crash_dialog" msgid="1696584857732637389">"Njalo bonisa ibhokisi lokusaphazeka"</string>
     <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Bonisa ibhokisi njalo izinhlelo zokusebenza zisaphazeka"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"Khetha uhlelo lokusebenza olunikwe amandla lwe-ANGLE"</string>
@@ -5053,6 +5056,11 @@
     <string name="calls_sms_footnote" msgid="7002461875954024216">"Ukushaya kwe-Wi‑Fi kukuvumela ukuthi wenze futhi uthole amakholi ngamanethiwekhi angewona awenkampani yenethiwekhi njengamanye amanethiwekhi we-Wi-Fi."</string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Amakholi"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"I-SMS"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"okuncanyelwayo"</string>
+    <string name="calls_sms_calls_preferred" msgid="252913858812799809">"amakholi ancanyelwayo"</string>
+    <string name="calls_sms_sms_preferred" msgid="5826706870873784062">"I-SMS encanyelwayo"</string>
+    <string name="calls_sms_unavailable" msgid="4055729705246556529">"ayitholakali"</string>
+    <string name="calls_sms_no_sim" msgid="2336377399761819718">"Ayikho i-SIM"</string>
     <string name="network_and_internet_preferences_title" msgid="8038469368705591439">"Okuncamelayo"</string>
     <string name="network_and_internet_preferences_summary" msgid="613207494152304537">"Xhuma kumanethiwekhi asesidlangalaleni"</string>
     <string name="keywords_internet" msgid="7674082764898690310">"uxhumano lenethiwekhi, i-inthanethi, okungenantambo, idatha, i-wifi, i-wi-fi, i-wi fi, iselula, iselula, inkampani yekholi, i-4g, i-3g, i-2g, i-lte"</string>
@@ -5061,4 +5069,10 @@
     <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Akutholakali ngoba imodi yesikhathi sokulala ivuliwe"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Ukusetha kabusha ukubaluleka kwesaziso kuqediwe."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Izinhlelo zokusebenza"</string>
+    <string name="bluetooth_message_access_notification_content" msgid="2986108412562309009">"Idivayisi engathenjwa ifuna ukufinyelela imilayezo yakho. Thepha ukuze uthole imininingwane."</string>
+    <string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"Vumela ukufinyelela kumilayezo?"</string>
+    <string name="bluetooth_message_access_dialog_content" msgid="6004506637437582983">"Idivayisi ye-Bluetooth engathenjwa, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], ifuna ukufinyelela imilayezo yakho.\n\nAwukaze uxhume ku-[<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] ngaphambili."</string>
+    <string name="bluetooth_phonebook_access_notification_content" msgid="4280361621526852063">"Idivayisi engathenjwa ifuna ukufinyelela koxhumana nabo nakurekhodi lamakholi. Thepha ukuze uthole imininingwane."</string>
+    <string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"Vumela ukufinyelela koxhumana nabo nakurekhodi lamakholi?"</string>
+    <string name="bluetooth_phonebook_access_dialog_content" msgid="2235876209172857819">"Idivayisi ye-Bluetooth engathenjwa, [<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>], ifuna ukufinyelela koxhumana nabo nakurekhodi lamakholi. Lokhu kufaka phakathi nedatha emayelana namakholi angenayo naphumayo.\n\nAwukaze uxhume ku-[<xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>] ngaphambili."</string>
 </resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 7809f05..bc01d59 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -123,13 +123,20 @@
     <dimen name="switchbar_subsettings_margin_start">72dp</dimen>
     <dimen name="switchbar_subsettings_margin_end">16dp</dimen>
 
+    <!-- Search bar and avatar -->
     <dimen name="search_bar_margin">24dp</dimen>
     <dimen name="search_bar_height">48dp</dimen>
-    <dimen name="search_bar_text_size">16dp</dimen>
+    <dimen name="search_bar_text_size">16sp</dimen>
     <dimen name="search_bar_card_elevation">2dp</dimen>
     <dimen name="search_bar_content_inset">64dp</dimen>
     <dimen name="avatar_length">@dimen/search_bar_height</dimen>
 
+    <!-- Contextual suggestions -->
+    <dimen name="suggestion_height">224dp</dimen>
+    <dimen name="suggestion_padding_horizontal">24dp</dimen>
+    <dimen name="suggestion_padding_bottom">8dp</dimen>
+    <dimen name="suggestion_button_margin_top">16dp</dimen>
+    <dimen name="suggestion_button_padding_horizontal">24dp</dimen>
 
     <!-- Dimensions for Wifi Assistant Card -->
     <dimen name="wifi_assistant_padding_top_bottom">16dp</dimen>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index db3b58b..0275269 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -2824,16 +2824,12 @@
     <string name="night_display_status_title">Status</string>
     <!-- Night display screen, setting the color temperature of the display. [CHAR LIMIT=30] -->
     <string name="night_display_temperature_title">Intensity</string>
-    <!-- Display settings screen, summary format of night display when off. [CHAR LIMIT=NONE] -->
-    <string name="night_display_summary_off">Off / <xliff:g name="auto_mode_summary" example="Never turn on automatically">%1$s</xliff:g></string>
     <!-- Display settings screen, summary of night display when off and will *never* turn on automatically. [CHAR LIMIT=NONE] -->
     <string name="night_display_summary_off_auto_mode_never">Will never turn on automatically</string>
          <!-- Display settings screen, summary format of night display when off and will turn on automatically at a user defined time. [CHAR LIMIT=NONE] -->
     <string name="night_display_summary_off_auto_mode_custom">Will turn on automatically at <xliff:g name="time" example="6 AM">%1$s</xliff:g></string>
     <!-- Display settings screen, summary of night display when off and will turn on automatically at sunset. [CHAR LIMIT=NONE] -->
     <string name="night_display_summary_off_auto_mode_twilight">Will turn on automatically at sunset</string>
-    <!-- Display settings screen, summary format of night display when on. [CHAR LIMIT=NONE] -->
-    <string name="night_display_summary_on">On / <xliff:g name="auto_mode_summary" example="Never turn off automatically">%1$s</xliff:g></string>
     <!-- Display settings screen, summary of night display when on and will *never* turn off automatically. [CHAR LIMIT=NONE] -->
     <string name="night_display_summary_on_auto_mode_never">Will never turn off automatically</string>
     <!-- Display settings screen, summary format of night display when on and will turn off automatically at a user defined time. [CHAR LIMIT=NONE] -->
@@ -2882,16 +2878,12 @@
     <string name="dark_ui_auto_mode_custom">Turns on at custom time</string>
     <!-- Dark UI screen, setting option name controlling the current activation status. [CHAR LIMIT=30] -->
     <string name="dark_ui_status_title">Status</string>
-    <!-- Display settings screen, summary format of Dark UI when off. [CHAR LIMIT=NONE] -->
-    <string name="dark_ui_summary_off">Off / <xliff:g name="auto_mode_summary" example="Never turn on automatically">%1$s</xliff:g></string>
     <!-- Display settings screen, summary of Dark UI when off and will *never* turn on automatically. [CHAR LIMIT=NONE] -->
     <string name="dark_ui_summary_off_auto_mode_never">Will never turn on automatically</string>
     <!-- Display settings screen, summary of Dark UI when off and will turn on automatically at sunset. [CHAR LIMIT=NONE] -->
     <string name="dark_ui_summary_off_auto_mode_auto">Will turn on automatically at sunset</string>
         <!-- Display settings screen, summary format of night display when off and will turn on automatically at a user defined time. [CHAR LIMIT=NONE] -->
     <string name="dark_ui_summary_off_auto_mode_custom">Will turn on automatically at <xliff:g name="time" example="6 AM">%1$s</xliff:g></string>
-    <!-- Display settings screen, summary format of Dark UI when on. [CHAR LIMIT=NONE] -->
-    <string name="dark_ui_summary_on">On / <xliff:g name="auto_mode_summary" example="Never turn off automatically">%1$s</xliff:g></string>
     <!-- Display settings screen, summary of Dark UI when on and will *never* turn off automatically. [CHAR LIMIT=NONE] -->
     <string name="dark_ui_summary_on_auto_mode_never">Will never turn off automatically</string>
     <!-- Display settings screen, summary of Dark UI when on and will turn off automatically at sunrise. [CHAR LIMIT=NONE] -->
@@ -3718,10 +3710,13 @@
     <!-- SD card & phone storage settings screen, message on screen after user selects Reset network settings [CHAR LIMIT=NONE] -->
     <string name="reset_network_desc">This will reset all network settings, including:\n\n<li>Wi\u2011Fi</li>\n<li>Mobile data</li>\n<li>Bluetooth</li>"</string>
 
-    <!-- SD card & phone storage settings screen, title for the checkbox to let user decide whether erase eSIM data together [CHAR LIMIT=50] -->
+    <!-- Erase Euicc -->
+    <!-- Confirmation button of dialog to confirm resetting user's app preferences [CHAR LIMIT=NONE] -->
+    <string name="erase_euicc_data_button">Erase</string>
+    <!-- Erase Euicc dialog and SD card & phone storage settings screen, title for the menu option and checkbox to let user decide whether erase eSIM data together [CHAR LIMIT=50] -->
     <string name="reset_esim_title">Erase downloaded SIMs</string>
-    <!-- SD card & phone storage settings screen, message for the checkbox to let user decide whether erase eSIM data together [CHAR LIMIT=NONE] -->
-    <string name="reset_esim_desc">To download replacement SIMs, contact your carrier. This won\u2019t cancel any mobile service plans.</string>
+    <!-- Erase Euicc dialog and SD card & phone storage settings screen, message for the checkbox to let user decide whether erase eSIM data together [CHAR LIMIT=NONE] -->
+    <string name="reset_esim_desc">This won’t cancel any mobile service plans. To download replacement SIMs, contact your carrier.</string>
 
     <!-- SD card & phone storage settings screen, button on screen after user selects Reset network settings -->
     <string name="reset_network_button_text">Reset settings</string>
@@ -4949,6 +4944,8 @@
     <string name="audio_and_captions_category_title">Audio &amp; on-screen text</string>
     <!-- Title for the accessibility preference category of display services and settings. [CHAR LIMIT=50] -->
     <string name="display_category_title">Display</string>
+    <!-- Title for the accessibility text options page. [CHAR LIMIT=50] -->
+    <string name="accessibility_text_and_display_title">Text and display</string>
     <!-- Title for the accessibility preference category of interaction control services and settings. [CHAR LIMIT=50] -->
     <string name="interaction_control_category_title">Interaction controls</string>
     <!-- Title for the accessibility preference category of services downloaded by the user. [CHAR LIMIT=50] -->
@@ -5720,7 +5717,7 @@
     <!-- Summary for the battery high usage tip, which presents battery may run out earlier [CHAR LIMIT=NONE] -->
     <string name="battery_tip_high_usage_summary">Battery may run out earlier than usual</string>
     <!-- Title for the battery limited temporarily tip [CHAR LIMIT=NONE] -->
-    <string name="battery_tip_limited_temporarily_title">Preserving battery health</string>
+    <string name="battery_tip_limited_temporarily_title">Optimizing for battery health</string>
     <!-- Summary for the battery limited temporarily tip [CHAR LIMIT=NONE] -->
     <string name="battery_tip_limited_temporarily_summary">Battery limited temporarily. Tap to learn more.</string>
     <!-- Message for battery tip dialog to show the status about the battery [CHAR LIMIT=NONE] -->
@@ -7108,13 +7105,15 @@
     <!-- Title for Guest user [CHAR LIMIT=35] -->
     <string name="user_guest">Guest</string>
     <!-- Label for item to exit guest mode [CHAR LIMIT=35] -->
-    <string name="user_exit_guest_title">Remove guest</string>
+    <string name="user_clear_guest_menu">Clear guest data</string>
+    <!-- Label for item to exit guest mode [CHAR LIMIT=35] -->
+    <string name="user_exit_guest_menu">End guest session</string>
     <!-- Title of dialog to user to confirm exiting guest. [CHAR LIMIT=50] -->
-    <string name="user_exit_guest_confirm_title">Remove guest?</string>
+    <string name="user_exit_guest_confirm_title">End guest session?</string>
     <!-- Message to user to confirm exiting guest. [CHAR LIMIT=none] -->
     <string name="user_exit_guest_confirm_message">All apps and data in this session will be deleted.</string>
     <!-- Label for button in confirmation dialog when exiting guest session [CHAR LIMIT=35] -->
-    <string name="user_exit_guest_dialog_remove">Remove</string>
+    <string name="user_exit_guest_dialog_remove">End session</string>
 
     <!-- Title of preference to enable calling[CHAR LIMIT=40] -->
     <string name="user_enable_calling">Turn on phone calls</string>
@@ -8584,7 +8583,7 @@
     <string name="recent_conversations">Recent conversations</string>
 
     <!-- [CHAR LIMIT=20] button title -->
-    <string name="conversation_settings_clear_recents">Clear recents</string>
+    <string name="conversation_settings_clear_recents">Clear all of the recent ones</string>
 
     <!-- a11y string -->
     <string name="clear">Clear</string>
@@ -10863,7 +10862,7 @@
     <string name="dark_ui_mode">Dark theme</string>
 
     <!-- [CHAR LIMIT=60] Summary string on dark theme explaining why the toggle is disabled while the setting is still on-->
-    <string name="dark_ui_mode_disabled_summary_dark_theme_on">On / Temporarily disabled due to Battery Saver</string>
+    <string name="dark_ui_mode_disabled_summary_dark_theme_on">Temporarily disabled due to Battery Saver</string>
 
     <!-- [CHAR LIMIT=60] Summary string on dark theme explaining why the toggle is disabled while the setting is off-->
     <string name="dark_ui_mode_disabled_summary_dark_theme_off">Temporarily turned on due to Battery Saver</string>
@@ -11403,6 +11402,19 @@
     <!-- Toast message shown when autofill_reset_developer_options has been performed. [CHAR_LIMIT=none] -->
     <string name="autofill_reset_developer_options_complete">Autofill developer options have been reset</string>
 
+    <!-- Developer options location category strings -->
+    <!-- Title for privacy category [CHAR LIMIT=30]-->
+    <string name="location_category">Location</string>
+    <!-- [CHAR LIMIT=130] Title for location indicator settings -->
+    <string name="location_indicator_settings_title">Status bar location indicator</string>
+    <!-- [CHAR LIMIT=130] Description for location indicator settings -->
+    <string name="location_indicator_settings_description">Show for all locations, including network and connectivity</string>
+
+    <!-- Location setting: preference title - enforce full raw GNSS satellite measurements [CHAR LIMIT=60] -->
+    <string name="enable_gnss_raw_meas_full_tracking">Force full GNSS measurements</string>
+    <!-- Location setting: preference summary - describes the behavior of forcing full raw GNSS satellite measurements [CHAR LIMIT=NONE] -->
+    <string name="enable_gnss_raw_meas_full_tracking_summary">Track all GNSS constellations and frequencies with no duty cycling</string>
+
     <!-- Name of setting for switching device theme [CHAR LIMIT=60] -->
     <string name="device_theme">Device theme</string>
     <!-- Name of default device theme [CHAR LIMIT=60] -->
@@ -11470,11 +11482,6 @@
     <!-- Part of a message for an empty state screen. A user will see this message if they try to use a certain feature, but the feature was turned off so it won't slow down their phone. [CHAR LIMIT=NONE] -->
     <string name="disabled_feature_reason_slow_down_phone">This feature has been turned off because it slows down your phone</string>
 
-    <!-- UI debug setting: preference title - enforce full raw GNSS satellite measurements [CHAR LIMIT=60] -->
-    <string name="enable_gnss_raw_meas_full_tracking">Force full GNSS measurements</string>
-    <!-- UI debug setting: preference summary - describes the behavior of forcing full raw GNSS satellite measurements [CHAR LIMIT=NONE] -->
-    <string name="enable_gnss_raw_meas_full_tracking_summary">Track all GNSS constellations and frequencies with no duty cycling</string>
-
     <!-- UI debug setting: preference title - show all crash dialogs [CHAR LIMIT=60] -->
     <string name="show_first_crash_dialog">Always show crash dialog</string>
     <!-- UI debug setting: preference summary - describes the behavior of showing a dialog every time an app crashes [CHAR LIMIT=NONE] -->
@@ -12512,9 +12519,23 @@
     <!-- Search keywords for "Internet" settings [CHAR_LIMIT=NONE] -->
     <string name="keywords_internet">network connection, internet, wireless, data, wifi, wi-fi, wi fi, cellular, mobile, cell carrier, 4g, 3g, 2g, lte</string>
     <!-- Label text to view airplane-safe networks. [CHAR LIMIT=40] -->
-    <string name="view_airplane_safe_networks">View airplane-safe networks</string>
+    <string name="view_airplane_safe_networks">View airplane mode networks</string>
     <!-- Label text to turn off airplane mode. [CHAR LIMIT=40] -->
-    <string name="turn_off_airplane_mode">Turn off Airplane Mode</string>
+    <string name="turn_off_airplane_mode">Turn off airplane mode</string>
+
+    <!-- Summary text separator for preferences including a short description
+         (eg. "Connected / 5G"). [CHAR LIMIT=50] -->
+    <string name="preference_summary_default_combination"><xliff:g id="state" example="Connected">%1$s</xliff:g> / <xliff:g id="networkMode" example="LTE">%2$s</xliff:g></string>
+    <!-- Provider Model:
+         Summary indicating that a SIM has an active mobile data connection [CHAR LIMIT=50] -->
+    <string name="mobile_data_connection_active">Connected</string>
+    <!-- Provider Model:
+         Summary indicating that a SIM has no mobile data connection [CHAR LIMIT=50] -->
+    <string name="mobile_data_off_summary">Internet won\u0027t auto\u2011connect</string>
+    <!-- Provider Model: Summary indicating that no other networks available [CHAR LIMIT=50] -->
+    <string name="non_carrier_network_unavailable">No other networks available</string>
+    <!-- Provider Model: Summary indicating that no networks available [CHAR LIMIT=50] -->
+    <string name="all_network_unavailable">No networks available</string>
 
     <!-- Summary for preference when Bedtime mode is on [CHAR LIMIT=NONE] -->
     <string name="aware_summary_when_bedtime_on">Unavailable because bedtime mode is on</string>
@@ -12524,4 +12545,30 @@
 
     <!-- Title for setting tile leading to Apps settings [CHAR LIMIT=40]-->
     <string name="apps_dashboard_title">Apps</string>
+
+    <!-- Bluetooth message permission alert for notification content [CHAR LIMIT=none] -->
+    <string name="bluetooth_message_access_notification_content">Untrusted device wants to access your messages. Tap for details.</string>
+    <!-- Bluetooth message permission alert for dialog title [CHAR LIMIT=none] -->
+    <string name="bluetooth_message_access_dialog_title">Allow access to messages?</string>
+    <!-- Bluetooth message permission alert for dialog content [CHAR LIMIT=none] -->
+    <string name="bluetooth_message_access_dialog_content">An untrusted Bluetooth device, <xliff:g id="device_name" example="My device">%1$s</xliff:g>, wants to access your messages.\n\nYou haven\u2019t connected to <xliff:g id="device_name" example="My device">%2$s</xliff:g> before.</string>
+    <!-- Bluetooth phonebook permission alert for notification content [CHAR LIMIT=none] -->
+    <string name="bluetooth_phonebook_access_notification_content">Untrusted device wants to access your contacts and call log. Tap for details.</string>
+    <!-- Bluetooth phonebook permission alert for dialog title [CHAR LIMIT=none] -->
+    <string name="bluetooth_phonebook_access_dialog_title">Allow access to contacts and call log?</string>
+    <!-- Bluetooth phonebook permission alert for dialog content [CHAR LIMIT=none] -->
+    <string name="bluetooth_phonebook_access_dialog_content">An untrusted Bluetooth device, <xliff:g id="device_name" example="My device">%1$s</xliff:g>, wants to access your contacts and call log. This includes data about incoming and outgoing calls.\n\nYou haven\u2019t connected to <xliff:g id="device_name" example="My device">%2$s</xliff:g> before.</string>
+
+    <!-- Brightness category name in Display Settings [CHAR LIMIT=none] -->
+    <string name="category_name_brightness">Brightness</string>
+    <!-- Lock screen category name in Display Settings [CHAR LIMIT=none] -->
+    <string name="category_name_lock_display">Lock Display</string>
+    <!-- Visibility category name in Display Settings [CHAR LIMIT=none] -->
+    <string name="category_name_visibility">Visibility</string>
+    <!-- Color category name in Display Settings [CHAR LIMIT=none] -->
+    <string name="category_name_color">Color</string>
+    <!-- Others category name [CHAR LIMIT=none] -->
+    <string name="category_name_others">Others</string>
+    <!-- General category name [CHAR LIMIT=none] -->
+    <string name="category_name_general">General</string>
 </resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index fd4d268..ce6b095 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -782,6 +782,14 @@
         <item name="android:fontFamily">@*android:string/config_headlineFontFamily</item>
     </style>
 
+    <style name="ContextualSuggestionText" parent="@android:style/TextAppearance.DeviceDefault">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:textSize">32sp</item>
+        <item name="android:textColor">?android:attr/textColorPrimary</item>
+        <item name="android:fontFamily">@*android:string/config_headlineFontFamilyMedium</item>
+    </style>
+
     <style name="RequestManageCredentialsButtonPanel">
         <item name="android:paddingStart">12dp</item>
         <item name="android:paddingEnd">12dp</item>
diff --git a/res/values/themes_suw.xml b/res/values/themes_suw.xml
index 98ab28d..959ffb3 100644
--- a/res/values/themes_suw.xml
+++ b/res/values/themes_suw.xml
@@ -197,8 +197,8 @@
         <item name="android:textAllCaps">false</item>
 
         <item name="android:windowSoftInputMode">adjustResize</item>
-        <!-- copied from Theme.DeviceDefault.Light.Dialog.Alert -->
-        <item name="colorAccent">@*android:color/accent_device_default_light</item>
+        <!-- copied from Theme.DeviceDefault.Dialog.Alert -->
+        <item name="colorAccent">@*android:color/accent_device_default_dark</item>
         <item name="dialogCornerRadius">@*android:dimen/config_dialogCornerRadius</item>
     </style>
 
diff --git a/res/xml/accessibility_settings.xml b/res/xml/accessibility_settings.xml
index 6781e28..6efd884 100644
--- a/res/xml/accessibility_settings.xml
+++ b/res/xml/accessibility_settings.xml
@@ -45,52 +45,19 @@
         android:title="@string/display_category_title">
 
         <Preference
-            android:fragment="com.android.settings.display.ToggleFontSizePreferenceFragment"
-            android:key="font_size_preference_screen"
+            android:fragment="com.android.settings.accessibility.TextAndDisplayFragment"
+            android:key="text_and_display_preference_screen"
             android:persistent="false"
-            android:title="@string/title_font_size"
-            settings:controller="com.android.settings.display.FontSizePreferenceController"
-            settings:searchable="false"/>
+            android:title="@string/accessibility_text_and_display_title"
+            settings:searchable="true"/>
 
-     <com.android.settings.display.ScreenZoomPreference
-            android:fragment="com.android.settings.display.ScreenZoomSettings"
-            android:key="accessibility_settings_screen_zoom"
-            android:persistent="false"
-            android:title="@string/screen_zoom_title"
-            settings:searchable="false"/>
-
-       <SwitchPreference
-            android:key="dark_ui_mode_accessibility"
-            android:persistent="false"
-            android:title="@string/dark_ui_mode"
-            settings:controller="com.android.settings.display.DarkUIPreferenceController"
-            settings:searchable="false"/>
-
-       <Preference
+        <Preference
             android:fragment="com.android.settings.accessibility.MagnificationPreferenceFragment"
             android:icon="@drawable/ic_accessibility_magnification"
             android:key="magnification_preference_screen"
             android:persistent="false"
             android:title="@string/accessibility_screen_magnification_title"
             settings:controller="com.android.settings.accessibility.MagnificationPreferenceController"/>
-
-        <SwitchPreference
-            android:key="toggle_large_pointer_icon"
-            android:persistent="false"
-            android:title="@string/accessibility_toggle_large_pointer_icon_title"
-            settings:controller="com.android.settings.accessibility.LargePointerIconPreferenceController"/>
-
-        <SwitchPreference
-            android:key="toggle_disable_animations"
-            android:persistent="false"
-            android:title="@string/accessibility_disable_animations"
-            settings:controller="com.android.settings.accessibility.DisableAnimationsPreferenceController"/>
-
-        <SwitchPreference
-            android:key="toggle_force_bold_text"
-            android:persistent="false"
-            android:title="@string/force_bold_text"
-            settings:controller="com.android.settings.accessibility.FontWeightAdjustmentPreferenceController"/>
     </PreferenceCategory>
 
     <PreferenceCategory
@@ -203,42 +170,12 @@
         settings:initialExpandedChildrenCount="1">
 
         <SwitchPreference
-            android:key="toggle_high_text_contrast_preference"
-            android:persistent="false"
-            android:title="@string/accessibility_toggle_high_text_contrast_preference_title"
-            settings:controller="com.android.settings.accessibility.HighTextContrastPreferenceController"/>
-
-        <Preference
-            android:fragment="com.android.settings.accessibility.ToggleDaltonizerPreferenceFragment"
-            android:icon="@drawable/ic_daltonizer"
-            android:key="daltonizer_preference"
-            android:persistent="false"
-            android:title="@string/accessibility_display_daltonizer_preference_title"
-            settings:controller="com.android.settings.accessibility.DaltonizerPreferenceController"/>
-
-        <Preference
-            android:fragment="com.android.settings.accessibility.ToggleColorInversionPreferenceFragment"
-            android:icon="@drawable/ic_color_inversion"
-            android:key="toggle_inversion_preference"
-            android:persistent="false"
-            android:title="@string/accessibility_display_inversion_preference_title"
-            settings:controller="com.android.settings.accessibility.ColorInversionPreferenceController"/>
-
-        <SwitchPreference
             android:key="accessibility_shortcut_preference"
             android:persistent="false"
             android:title="@string/accessibility_shortcut_service_on_lock_screen_title"
             android:summary="@string/accessibility_shortcut_description"
             settings:controller="com.android.settings.accessibility.AccessibilityShortcutPreferenceController"/>
 
-        <!--TODO(b/170973645): Get icon-->
-        <Preference
-            android:fragment="com.android.settings.accessibility.ToggleReduceBrightColorsPreferenceFragment"
-            android:key="reduce_bright_colors_preference"
-            android:persistent="false"
-            android:title="@string/reduce_bright_colors_preference_title"
-            settings:controller="com.android.settings.accessibility.ReduceBrightColorsPreferenceController"/>
-
     </PreferenceCategory>
 
 </PreferenceScreen>
diff --git a/res/xml/accessibility_text_and_display.xml b/res/xml/accessibility_text_and_display.xml
new file mode 100644
index 0000000..7dce826
--- /dev/null
+++ b/res/xml/accessibility_text_and_display.xml
@@ -0,0 +1,100 @@
+<?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:key="accessibility_text_and_display"
+    android:persistent="false"
+    android:title="@string/accessibility_text_and_display_title">
+
+    <SwitchPreference
+        android:key="toggle_high_text_contrast_preference"
+        android:persistent="false"
+        android:title="@string/accessibility_toggle_high_text_contrast_preference_title"
+        settings:controller="com.android.settings.accessibility.HighTextContrastPreferenceController"/>
+
+    <SwitchPreference
+        android:key="dark_ui_mode_accessibility"
+        android:persistent="false"
+        android:title="@string/dark_ui_mode"
+        settings:controller="com.android.settings.display.DarkUIPreferenceController"
+        settings:searchable="false"/>
+
+    <Preference
+        android:fragment="com.android.settings.accessibility.ToggleDaltonizerPreferenceFragment"
+        android:icon="@drawable/ic_daltonizer"
+        android:key="daltonizer_preference"
+        android:persistent="false"
+        android:title="@string/accessibility_display_daltonizer_preference_title"
+        settings:controller="com.android.settings.accessibility.DaltonizerPreferenceController"/>
+
+    <Preference
+        android:fragment="com.android.settings.accessibility.ToggleColorInversionPreferenceFragment"
+        android:icon="@drawable/ic_color_inversion"
+        android:key="toggle_inversion_preference"
+        android:persistent="false"
+        android:title="@string/accessibility_display_inversion_preference_title"
+        settings:controller="com.android.settings.accessibility.ColorInversionPreferenceController"/>
+
+    <!--TODO(b/170973645): Get icon-->
+    <Preference
+        android:fragment="com.android.settings.accessibility.ToggleReduceBrightColorsPreferenceFragment"
+        android:key="reduce_bright_colors_preference"
+        android:persistent="false"
+        android:title="@string/reduce_bright_colors_preference_title"
+        settings:controller="com.android.settings.accessibility.ReduceBrightColorsPreferenceController"/>
+
+    <SwitchPreference
+        android:key="toggle_disable_animations"
+        android:persistent="false"
+        android:title="@string/accessibility_disable_animations"
+        settings:controller="com.android.settings.accessibility.DisableAnimationsPreferenceController"/>
+
+    <com.android.settings.display.ScreenZoomPreference
+        android:fragment="com.android.settings.display.ScreenZoomSettings"
+        android:key="accessibility_settings_screen_zoom"
+        android:persistent="false"
+        android:title="@string/screen_zoom_title"
+        settings:searchable="false"/>
+
+    <Preference
+        android:fragment="com.android.settings.display.ToggleFontSizePreferenceFragment"
+        android:key="font_size_preference_screen"
+        android:persistent="false"
+        android:title="@string/title_font_size"
+        settings:controller="com.android.settings.display.FontSizePreferenceController"
+        settings:searchable="false"/>
+
+    <SwitchPreference
+        android:key="toggle_force_bold_text"
+        android:persistent="false"
+        android:title="@string/force_bold_text"
+        settings:controller="com.android.settings.accessibility.FontWeightAdjustmentPreferenceController"/>
+
+    <SwitchPreference
+        android:key="toggle_large_pointer_icon"
+        android:persistent="false"
+        android:title="@string/accessibility_toggle_large_pointer_icon_title"
+        settings:controller="com.android.settings.accessibility.LargePointerIconPreferenceController"/>
+
+    <PreferenceCategory
+        android:key="experimental_category"
+        android:persistent="false"
+        android:title="@string/experimental_category_title"
+        settings:initialExpandedChildrenCount="1">
+    </PreferenceCategory>
+</PreferenceScreen>
\ No newline at end of file
diff --git a/res/xml/development_settings.xml b/res/xml/development_settings.xml
index f06ed2e..f5549f9 100644
--- a/res/xml/development_settings.xml
+++ b/res/xml/development_settings.xml
@@ -175,14 +175,6 @@
             android:title="@string/automatic_system_heap_dump_title"
             android:summary="@string/automatic_system_heap_dump_summary" />
 
-        <Preference android:key="mock_location_app"
-                    android:title="@string/mock_location_app" />
-
-        <SwitchPreference
-            android:key="enable_gnss_raw_meas_full_tracking"
-            android:title="@string/enable_gnss_raw_meas_full_tracking"
-            android:summary="@string/enable_gnss_raw_meas_full_tracking_summary" />
-
         <SwitchPreference
             android:key="debug_view_attributes"
             android:title="@string/debug_view_attributes" />
@@ -696,4 +688,25 @@
                 android:targetClass="com.android.settings.development.storage.BlobInfoListView" />
         </Preference>
     </PreferenceCategory>
+
+    <PreferenceCategory
+        android:key="location_category"
+        android:title="@string/location_category"
+        android:order="1300">
+
+        <Preference android:key="mock_location_app"
+                    android:title="@string/mock_location_app" />
+
+        <SwitchPreference
+            android:key="enable_gnss_raw_meas_full_tracking"
+            android:title="@string/enable_gnss_raw_meas_full_tracking"
+            android:summary="@string/enable_gnss_raw_meas_full_tracking_summary" />
+
+        <SwitchPreference
+            android:title="@string/location_indicator_settings_title"
+            android:summary="@string/location_indicator_settings_description"
+            android:defaultValue="true"
+            android:key="location_indicator_settings"
+            settings:controller="com.android.settings.location.LocationIndicatorsPreferenceController"/>
+    </PreferenceCategory>
 </PreferenceScreen>
diff --git a/res/xml/display_settings.xml b/res/xml/display_settings.xml
index 07564f0..8df5696 100644
--- a/res/xml/display_settings.xml
+++ b/res/xml/display_settings.xml
@@ -40,12 +40,12 @@
         settings:controller="com.android.settings.display.DarkUIPreferenceController"
         settings:keywords="@string/keywords_dark_ui_mode"/>
 
-    <com.android.settings.display.NightDisplayPreference
+    <com.android.settings.widget.PrimarySwitchPreference
         android:key="night_display"
         android:title="@string/night_display_title"
         android:fragment="com.android.settings.display.NightDisplaySettings"
-        android:widgetLayout="@null"
-        settings:widgetLayout="@null"/>
+        settings:controller="com.android.settings.display.NightDisplayPreferenceController"
+        settings:keywords="@string/keywords_display_night_display"/>
 
     <Preference
         android:key="auto_brightness_entry"
@@ -63,7 +63,7 @@
     </com.android.settingslib.RestrictedPreference>
 
     <!-- Cross-listed item, if you change this, also change it in power_usage_summary.xml -->
-    <Preference
+    <com.android.settingslib.RestrictedPreference
         android:key="screen_timeout"
         android:title="@string/screen_timeout"
         android:summary="@string/summary_placeholder"
diff --git a/res/xml/display_settings_v2.xml b/res/xml/display_settings_v2.xml
new file mode 100644
index 0000000..0b43914
--- /dev/null
+++ b/res/xml/display_settings_v2.xml
@@ -0,0 +1,159 @@
+<?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.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:key="display_settings_screen"
+    android:title="@string/display_settings"
+    settings:keywords="@string/keywords_display">
+
+    <PreferenceCategory
+        android:title="@string/category_name_brightness">
+
+        <com.android.settingslib.RestrictedPreference
+            android:key="brightness"
+            android:title="@string/brightness"
+            settings:keywords="@string/keywords_display_brightness_level"
+            settings:useAdminDisabledSummary="true"
+            settings:userRestriction="no_config_brightness">
+            <intent android:action="com.android.intent.action.SHOW_BRIGHTNESS_DIALOG"/>
+        </com.android.settingslib.RestrictedPreference>
+
+        <com.android.settings.widget.PrimarySwitchPreference
+            android:key="auto_brightness_entry"
+            android:title="@string/auto_brightness_title"
+            android:fragment="com.android.settings.display.AutoBrightnessSettings"
+            settings:controller="com.android.settings.display.AutoBrightnessPreferenceController"/>
+    </PreferenceCategory>
+
+    <PreferenceCategory
+        android:title="@string/category_name_lock_display">
+
+        <Preference
+            android:key="lockscreen_from_display_settings"
+            android:title="@string/lockscreen_settings_title"
+            android:fragment="com.android.settings.security.LockscreenDashboardFragment"
+            settings:keywords="@string/keywords_ambient_display_screen"
+            settings:controller="com.android.settings.security.screenlock.LockScreenPreferenceController"/>
+
+        <com.android.settingslib.RestrictedPreference
+            android:key="screen_timeout"
+            android:title="@string/screen_timeout"
+            android:summary="@string/summary_placeholder"
+            android:fragment="com.android.settings.display.ScreenTimeoutSettings"
+            settings:controller="com.android.settings.display.ScreenTimeoutPreferenceController"/>
+    </PreferenceCategory>
+
+    <PreferenceCategory
+        android:title="@string/category_name_visibility">
+
+        <com.android.settings.display.darkmode.DarkModePreference
+            android:key="dark_ui_mode"
+            android:title="@string/dark_ui_mode"
+            android:fragment="com.android.settings.display.darkmode.DarkModeSettingsFragment"
+            android:widgetLayout="@null"
+            settings:widgetLayout="@null"
+            settings:controller="com.android.settings.display.DarkUIPreferenceController"
+            settings:keywords="@string/keywords_dark_ui_mode"/>
+
+        <Preference
+            android:key="font_size"
+            android:title="@string/title_font_size"
+            android:fragment="com.android.settings.display.ToggleFontSizePreferenceFragment"
+            settings:controller="com.android.settings.display.FontSizePreferenceController"
+            settings:keywords="@string/keywords_font_size"/>
+
+        <com.android.settings.display.ScreenZoomPreference
+            android:key="display_settings_screen_zoom"
+            android:title="@string/screen_zoom_title"
+            android:fragment="com.android.settings.display.ScreenZoomSettings"/>
+    </PreferenceCategory>
+
+    <PreferenceCategory
+        android:title="@string/category_name_color">
+
+        <com.android.settings.widget.PrimarySwitchPreference
+            android:key="night_display"
+            android:title="@string/night_display_title"
+            android:fragment="com.android.settings.display.NightDisplaySettings"
+            settings:controller="com.android.settings.display.NightDisplayPreferenceController"
+            settings:keywords="@string/keywords_display_night_display"/>
+
+        <Preference
+            android:key="color_mode"
+            android:title="@string/color_mode_title"
+            android:fragment="com.android.settings.display.ColorModePreferenceFragment"
+            settings:controller="com.android.settings.display.ColorModePreferenceController"
+            settings:keywords="@string/keywords_color_mode"/>
+    </PreferenceCategory>
+
+    <PreferenceCategory
+        android:title="@string/category_name_general">
+
+        <SwitchPreference
+            android:key="auto_rotate"
+            android:title="@string/accelerometer_title"
+            settings:keywords="@string/keywords_auto_rotate"
+            settings:controller="com.android.settings.display.AutoRotatePreferenceController"/>
+
+        <SwitchPreference
+            android:key="display_white_balance"
+            android:title="@string/display_white_balance_title"
+            android:summary="@string/display_white_balance_summary"
+            settings:controller="com.android.settings.display.DisplayWhiteBalancePreferenceController"/>
+
+        <SwitchPreference
+            android:key="peak_refresh_rate"
+            android:title="@string/peak_refresh_rate_title"
+            android:summary="@string/peak_refresh_rate_summary"
+            settings:controller="com.android.settings.display.PeakRefreshRatePreferenceController"/>
+
+        <SwitchPreference
+            android:key="show_operator_name"
+            android:title="@string/show_operator_name_title"
+            android:summary="@string/show_operator_name_summary"/>
+
+        <Preference
+            android:key="screensaver"
+            android:title="@string/screensaver_settings_title"
+            android:fragment="com.android.settings.dream.DreamSettings"/>
+
+        <SwitchPreference
+            android:key="camera_gesture"
+            android:title="@string/camera_gesture_title"
+            android:summary="@string/camera_gesture_desc"/>
+
+        <SwitchPreference
+            android:key="lift_to_wake"
+            android:title="@string/lift_to_wake_title"/>
+
+        <SwitchPreference
+            android:key="tap_to_wake"
+            android:title="@string/tap_to_wake"
+            android:summary="@string/tap_to_wake_summary"/>
+
+        <ListPreference
+            android:key="theme"
+            android:title="@string/device_theme"
+            android:summary="@string/summary_placeholder"/>
+
+        <Preference
+            android:key="vr_display_pref"
+            android:title="@string/display_vr_pref_title"
+            android:fragment="com.android.settings.display.VrDisplayPreferencePicker"/>
+    </PreferenceCategory>
+</PreferenceScreen>
diff --git a/res/xml/network_provider_internet.xml b/res/xml/network_provider_internet.xml
index 20cf2be..52ade65 100644
--- a/res/xml/network_provider_internet.xml
+++ b/res/xml/network_provider_internet.xml
@@ -64,7 +64,7 @@
     <com.android.settingslib.RestrictedSwitchPreference
         android:key="airplane_safe_networks"
         android:title="@string/airplane_safe_networks"
-        android:icon="@drawable/ic_airplanemode_active"
+        android:icon="@drawable/ic_airplane_safe_networks_24dp"
         android:summary="@string/airplane_safe_networks_summary"
         android:order="-4"
         settings:userRestriction="no_airplane_mode"
diff --git a/res/xml/notification_access_permission_details.xml b/res/xml/notification_access_permission_details.xml
index d956ce9..e0c7c1a 100644
--- a/res/xml/notification_access_permission_details.xml
+++ b/res/xml/notification_access_permission_details.xml
@@ -17,11 +17,18 @@
 
 <PreferenceScreen
     xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
     android:key="notification_access_permission_detail_settings"
     android:title="@string/manage_notification_access_title">
 
+    <com.android.settingslib.widget.LayoutPreference
+        android:key="pref_app_header"
+        android:layout="@layout/settings_entity_header"
+        settings:controller="com.android.settings.applications.specialaccess.notificationaccess.HeaderPreferenceController"/>
+
     <com.android.settings.widget.FilterTouchesSwitchPreference
         android:key="notification_access_switch"
-        android:title="@string/notification_access_detail_switch"/>
+        android:title="@string/notification_access_detail_switch"
+        settings:controller="com.android.settings.applications.specialaccess.notificationaccess.ApprovalPreferenceController"/>
 
 </PreferenceScreen>
\ No newline at end of file
diff --git a/res/xml/reset_dashboard_fragment.xml b/res/xml/reset_dashboard_fragment.xml
index 1b0e9fc..9497c8f 100644
--- a/res/xml/reset_dashboard_fragment.xml
+++ b/res/xml/reset_dashboard_fragment.xml
@@ -33,6 +33,12 @@
         android:key="reset_app_prefs"
         android:title="@string/reset_app_preferences" />
 
+    <!-- Erase Euicc data -->
+    <Preference
+        android:key="erase_euicc_data"
+        android:title="@string/reset_esim_title"
+        settings:controller="com.android.settings.network.EraseEuiccDataController" />
+
     <!-- Factory reset -->
     <com.android.settingslib.RestrictedPreference
         android:key="factory_reset"
diff --git a/res/xml/top_level_settings_grouped.xml b/res/xml/top_level_settings_grouped.xml
index cdfab91..baee7b3 100644
--- a/res/xml/top_level_settings_grouped.xml
+++ b/res/xml/top_level_settings_grouped.xml
@@ -20,43 +20,38 @@
     xmlns:settings="http://schemas.android.com/apk/res-auto"
     android:key="top_level_settings_grouped">
 
-    <PreferenceCategory
-        android:key="connectivity"
-        android:order="-130"
-        settings:allowDividerAbove="false">
-        <Preference
-            android:fragment="com.android.settings.network.NetworkDashboardFragment"
-            android:icon="@drawable/ic_homepage_network"
-            android:key="top_level_network"
-            android:order="-130"
-            android:title="@string/network_dashboard_title"
-            settings:controller="com.android.settings.network.TopLevelNetworkEntryPreferenceController"/>
+    <Preference
+        android:fragment="com.android.settings.network.NetworkDashboardFragment"
+        android:icon="@drawable/ic_homepage_network"
+        android:key="top_level_network"
+        android:order="-140"
+        android:title="@string/network_dashboard_title"
+        settings:controller="com.android.settings.network.TopLevelNetworkEntryPreferenceController"/>
 
-        <Preference
-            android:fragment="com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment"
-            android:icon="@drawable/ic_homepage_connected_device"
-            android:key="top_level_connected_devices"
-            android:order="-120"
-            android:title="@string/connected_devices_dashboard_title"
-            settings:controller="com.android.settings.connecteddevice.TopLevelConnectedDevicesPreferenceController"/>
-    </PreferenceCategory>
+    <Preference
+        android:fragment="com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment"
+        android:icon="@drawable/ic_homepage_connected_device"
+        android:key="top_level_connected_devices"
+        android:order="-130"
+        android:title="@string/connected_devices_dashboard_title"
+        settings:controller="com.android.settings.connecteddevice.TopLevelConnectedDevicesPreferenceController"/>
 
     <PreferenceCategory
         android:key="apps"
-        android:order="-110"
+        android:order="-120"
         settings:allowDividerAbove="false">
         <Preference
             android:fragment="com.android.settings.applications.AppAndNotificationDashboardFragment"
             android:icon="@drawable/ic_homepage_apps"
             android:key="top_level_apps_and_notifs"
-            android:order="-110"
+            android:order="-120"
             android:title="@string/apps_dashboard_title"/>
 
         <Preference
             android:fragment="com.android.settings.notification.ConfigureNotificationSettings"
             android:icon="@drawable/ic_homepage_notification"
             android:key="top_level_notification"
-            android:order="-100"
+            android:order="-110"
             android:title="@string/configure_notification_settings"/>
 
 
@@ -64,13 +59,13 @@
 
     <PreferenceCategory
         android:key="phone_essential"
-        android:order="-90"
+        android:order="-100"
         settings:allowDividerAbove="false">
         <Preference
             android:fragment="com.android.settings.fuelgauge.PowerUsageSummary"
             android:icon="@drawable/ic_homepage_battery"
             android:key="top_level_battery"
-            android:order="-90"
+            android:order="-100"
             android:title="@string/power_usage_summary_title"
             settings:controller="com.android.settings.fuelgauge.TopLevelBatteryPreferenceController"/>
 
@@ -78,7 +73,7 @@
             android:fragment="com.android.settings.deviceinfo.StorageSettings"
             android:icon="@drawable/ic_homepage_storage"
             android:key="top_level_storage"
-            android:order="-80"
+            android:order="-90"
             android:title="@string/storage_settings"
             settings:controller="com.android.settings.deviceinfo.TopLevelStoragePreferenceController"/>
 
@@ -86,17 +81,24 @@
             android:fragment="com.android.settings.notification.SoundSettings"
             android:icon="@drawable/ic_homepage_sound"
             android:key="top_level_sound"
-            android:order="-70"
+            android:order="-80"
             android:title="@string/sound_settings"/>
 
         <Preference
             android:fragment="com.android.settings.DisplaySettings"
             android:icon="@drawable/ic_homepage_display"
             android:key="top_level_display"
-            android:order="-60"
+            android:order="-70"
             android:title="@string/display_settings"
             settings:controller="com.android.settings.display.TopLevelDisplayPreferenceController"/>
 
+        <com.android.settingslib.RestrictedTopLevelPreference
+            android:icon="@drawable/ic_homepage_display"
+            android:key="top_level_wallpaper"
+            android:order="-60"
+            android:title="@string/wallpaper_settings_title"
+            settings:controller="com.android.settings.display.TopLevelWallpaperPreferenceController"/>
+
         <Preference
             android:fragment="com.android.settings.accessibility.AccessibilitySettings"
             android:icon="@drawable/ic_homepage_accessibility"
diff --git a/res/xml/zen_mode_custom_rule_settings.xml b/res/xml/zen_mode_custom_rule_settings.xml
index 169a94f..8f360b9 100644
--- a/res/xml/zen_mode_custom_rule_settings.xml
+++ b/res/xml/zen_mode_custom_rule_settings.xml
@@ -22,11 +22,11 @@
 
     <PreferenceCategory
         android:key="zen_custom_rule_category">
-        <com.android.settings.notification.zen.ZenCustomRadioButtonPreference
+        <com.android.settingslib.widget.RadioButtonPreference
             android:key="zen_custom_rule_setting_default"
             android:title="@string/zen_mode_custom_behavior_summary_default"/>
 
-        <com.android.settings.notification.zen.ZenCustomRadioButtonPreference
+        <com.android.settingslib.widget.RadioButtonPreference
             android:key="zen_custom_rule_setting"
             android:title="@string/zen_mode_custom_behavior_summary" />
     </PreferenceCategory>
diff --git a/res/xml/zen_mode_restrict_notifications_settings.xml b/res/xml/zen_mode_restrict_notifications_settings.xml
index f5e7615..051c208 100644
--- a/res/xml/zen_mode_restrict_notifications_settings.xml
+++ b/res/xml/zen_mode_restrict_notifications_settings.xml
@@ -23,19 +23,19 @@
     <PreferenceCategory
         android:key="restrict_category"
         android:title="@string/zen_mode_restrict_notifications_category">
-        <com.android.settings.notification.zen.ZenCustomRadioButtonPreference
+        <com.android.settingslib.widget.RadioButtonPreference
             android:key="zen_mute_notifications"
             android:title="@string/zen_mode_restrict_notifications_mute"
             android:summary="@string/zen_mode_restrict_notifications_mute_summary"
             settings:searchable="false"/>
 
-        <com.android.settings.notification.zen.ZenCustomRadioButtonPreference
+        <com.android.settingslib.widget.RadioButtonPreference
             android:key="zen_hide_notifications"
             android:title="@string/zen_mode_restrict_notifications_hide"
             android:summary="@string/zen_mode_restrict_notifications_hide_summary"
             settings:searchable="false"/>
 
-        <com.android.settings.notification.zen.ZenCustomRadioButtonPreference
+        <com.android.settingslib.widget.RadioButtonPreference
             android:key="zen_custom"
             android:title="@string/zen_mode_restrict_notifications_custom"
             settings:searchable="false"/>
diff --git a/src/com/android/settings/DisplaySettings.java b/src/com/android/settings/DisplaySettings.java
index cbfbe7a..1cb9ade 100644
--- a/src/com/android/settings/DisplaySettings.java
+++ b/src/com/android/settings/DisplaySettings.java
@@ -19,13 +19,14 @@
 import android.app.settings.SettingsEnums;
 import android.content.Context;
 import android.os.Bundle;
+import android.provider.SearchIndexableResource;
+import android.util.FeatureFlagUtils;
 
+import com.android.settings.core.FeatureFlags;
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.display.BrightnessLevelPreferenceController;
 import com.android.settings.display.CameraGesturePreferenceController;
 import com.android.settings.display.LiftToWakePreferenceController;
-import com.android.settings.display.NightDisplayPreferenceController;
-import com.android.settings.display.NightModePreferenceController;
 import com.android.settings.display.ScreenSaverPreferenceController;
 import com.android.settings.display.ShowOperatorNamePreferenceController;
 import com.android.settings.display.TapToWakePreferenceController;
@@ -37,6 +38,7 @@
 import com.android.settingslib.search.SearchIndexable;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 @SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
@@ -55,6 +57,9 @@
 
     @Override
     protected int getPreferenceScreenResId() {
+        if (FeatureFlagUtils.isEnabled(getContext(), FeatureFlags.SILKY_HOME)) {
+            return R.xml.display_settings_v2;
+        }
         return R.xml.display_settings;
     }
 
@@ -78,8 +83,6 @@
         final List<AbstractPreferenceController> controllers = new ArrayList<>();
         controllers.add(new CameraGesturePreferenceController(context));
         controllers.add(new LiftToWakePreferenceController(context));
-        controllers.add(new NightDisplayPreferenceController(context));
-        controllers.add(new NightModePreferenceController(context));
         controllers.add(new ScreenSaverPreferenceController(context));
         controllers.add(new TapToWakePreferenceController(context));
         controllers.add(new VrDisplayPreferenceController(context));
@@ -90,7 +93,16 @@
     }
 
     public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
-            new BaseSearchIndexProvider(R.xml.display_settings) {
+            new BaseSearchIndexProvider() {
+
+                @Override
+                public List<SearchIndexableResource> getXmlResourcesToIndex(
+                        Context context, boolean enabled) {
+                    final SearchIndexableResource sir = new SearchIndexableResource(context);
+                    sir.xmlResId = FeatureFlagUtils.isEnabled(context, FeatureFlags.SILKY_HOME)
+                            ? R.xml.display_settings_v2 : R.xml.display_settings;
+                    return Arrays.asList(sir);
+                }
 
                 @Override
                 public List<AbstractPreferenceController> createPreferenceControllers(
diff --git a/src/com/android/settings/ResetNetwork.java b/src/com/android/settings/ResetNetwork.java
index 5ff59b5..c4fa90d 100644
--- a/src/com/android/settings/ResetNetwork.java
+++ b/src/com/android/settings/ResetNetwork.java
@@ -32,6 +32,7 @@
 import android.telephony.SubscriptionManager;
 import android.telephony.euicc.EuiccManager;
 import android.text.TextUtils;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.View.OnClickListener;
@@ -53,7 +54,9 @@
 import com.android.settingslib.development.DevelopmentSettingsEnabler;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
+import java.util.Optional;
 
 /**
  * Confirm and execute a reset of the device's network settings to a clean "just out of the box"
@@ -112,7 +115,7 @@
         if (resultCode == Activity.RESULT_OK) {
             showFinalConfirmation();
         } else {
-            establishInitialState();
+            establishInitialState(getActiveSubscriptionInfoList());
         }
     }
 
@@ -161,14 +164,15 @@
      * inflate each view, caching all of the widget pointers we'll need at the
      * time, then simply reuse the inflated views directly whenever we need
      * to change contents.
+     *
+     * @param subscriptionsList is a list of SubscriptionInfo(s) which allow user to select from
      */
-    private void establishInitialState() {
+    private void establishInitialState(List<SubscriptionInfo> subscriptionsList) {
         mSubscriptionSpinner = (Spinner) mContentView.findViewById(R.id.reset_network_subscription);
         mEsimContainer = mContentView.findViewById(R.id.erase_esim_container);
         mEsimCheckbox = mContentView.findViewById(R.id.erase_esim);
 
-        mSubscriptions = SubscriptionManager.from(getActivity())
-                .getActiveSubscriptionInfoList();
+        mSubscriptions = subscriptionsList;
         if (mSubscriptions != null && mSubscriptions.size() > 0) {
             // Get the default subscription in the order of data, voice, sms, first up.
             int defaultSubscription = SubscriptionManager.getDefaultDataSubscriptionId();
@@ -231,6 +235,31 @@
         }
     }
 
+    private List<SubscriptionInfo> getActiveSubscriptionInfoList() {
+        SubscriptionManager mgr = getActivity().getSystemService(SubscriptionManager.class);
+        if (mgr == null) {
+            Log.w(TAG, "No SubscriptionManager");
+            return Collections.emptyList();
+        }
+        return Optional.ofNullable(mgr.getActiveSubscriptionInfoList())
+                .orElse(Collections.emptyList());
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+
+        // update options if subcription has been changed
+        List<SubscriptionInfo> updatedSubscriptions = getActiveSubscriptionInfoList();
+        if ((mSubscriptions != null)
+                && (mSubscriptions.size() == updatedSubscriptions.size())
+                && mSubscriptions.containsAll(updatedSubscriptions)) {
+            return;
+        }
+        Log.d(TAG, "subcription list changed");
+        establishInitialState(updatedSubscriptions);
+    }
+
     private boolean showEuiccSettings(Context context) {
         EuiccManager euiccManager =
                 (EuiccManager) context.getSystemService(Context.EUICC_SERVICE);
@@ -261,7 +290,7 @@
 
         mContentView = inflater.inflate(R.layout.reset_network, null);
 
-        establishInitialState();
+        establishInitialState(getActiveSubscriptionInfoList());
         return mContentView;
     }
 
diff --git a/src/com/android/settings/ResetNetworkConfirm.java b/src/com/android/settings/ResetNetworkConfirm.java
index 97139c4..43f35a6 100644
--- a/src/com/android/settings/ResetNetworkConfirm.java
+++ b/src/com/android/settings/ResetNetworkConfirm.java
@@ -32,11 +32,14 @@
 import android.net.wifi.p2p.WifiP2pManager;
 import android.os.AsyncTask;
 import android.os.Bundle;
+import android.os.Looper;
 import android.os.RecoverySystem;
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.telephony.SubscriptionManager;
+import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener;
 import android.telephony.TelephonyManager;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -63,6 +66,7 @@
  * This is the confirmation screen.
  */
 public class ResetNetworkConfirm extends InstrumentedFragment {
+    private static final String TAG = "ResetNetworkConfirm";
 
     @VisibleForTesting View mContentView;
     @VisibleForTesting boolean mEraseEsim;
@@ -71,12 +75,15 @@
     private int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
     private ProgressDialog mProgressDialog;
     private AlertDialog mAlertDialog;
+    private OnSubscriptionsChangedListener mSubscriptionsChangedListener;
 
     /**
      * Async task used to do all reset task. If error happens during
      * erasing eSIM profiles or timeout, an error msg is shown.
      */
     private class ResetNetworkTask extends AsyncTask<Void, Void, Boolean> {
+        private static final String TAG = "ResetNetworkTask";
+
         private final Context mContext;
         private final String mPackageName;
 
@@ -87,6 +94,7 @@
 
         @Override
         protected Boolean doInBackground(Void... params) {
+            boolean isResetSucceed = true;
             ConnectivityManager connectivityManager = (ConnectivityManager)
                     mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
             if (connectivityManager != null) {
@@ -101,6 +109,10 @@
 
             p2pFactoryReset(mContext);
 
+            if (mEraseEsim) {
+                isResetSucceed = RecoverySystem.wipeEuiccData(mContext, mPackageName);
+            }
+
             TelephonyManager telephonyManager = (TelephonyManager)
                     mContext.getSystemService(TelephonyManager.class)
                             .createForSubscriptionId(mSubId);
@@ -125,11 +137,9 @@
             }
 
             restoreDefaultApn(mContext);
-            if (mEraseEsim) {
-                return RecoverySystem.wipeEuiccData(mContext, mPackageName);
-            } else {
-                return true;
-            }
+            Log.d(TAG, "network factoryReset complete. succeeded: "
+                    + String.valueOf(isResetSucceed));
+            return isResetSucceed;
         }
 
         @Override
@@ -161,6 +171,18 @@
                 return;
             }
 
+            // abandon execution if subscription no longer active
+            if (mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+                SubscriptionManager mgr = getSubscriptionManager();
+                // always remove listener
+                stopMonitorSubscriptionChange(mgr);
+                if (!isSubscriptionRemainActive(mgr, mSubId)) {
+                    Log.w(TAG, "subId " + mSubId + " disappear when confirm");
+                    mActivity.finish();
+                    return;
+                }
+            }
+
             mProgressDialog = getProgressDialog(mActivity);
             mProgressDialog.show();
 
@@ -255,6 +277,56 @@
         }
 
         mActivity = getActivity();
+
+        if (mSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+            return;
+        }
+        // close confirmation dialog when reset specific subscription
+        // but removed priori to the confirmation button been pressed
+        startMonitorSubscriptionChange(getSubscriptionManager());
+    }
+
+    private SubscriptionManager getSubscriptionManager() {
+        SubscriptionManager mgr = mActivity.getSystemService(SubscriptionManager.class);
+        if (mgr == null) {
+            Log.w(TAG, "No SubscriptionManager");
+        }
+        return mgr;
+    }
+
+    private void startMonitorSubscriptionChange(SubscriptionManager mgr) {
+        if (mgr == null) {
+            return;
+        }
+        // update monitor listener
+        mSubscriptionsChangedListener = new OnSubscriptionsChangedListener(
+                Looper.getMainLooper()) {
+            @Override
+            public void onSubscriptionsChanged() {
+                SubscriptionManager mgr = getSubscriptionManager();
+                if (isSubscriptionRemainActive(mgr, mSubId)) {
+                    return;
+                }
+                // close UI if subscription no longer active
+                Log.w(TAG, "subId " + mSubId + " no longer active.");
+                stopMonitorSubscriptionChange(mgr);
+                mActivity.finish();
+            }
+        };
+        mgr.addOnSubscriptionsChangedListener(
+                mActivity.getMainExecutor(), mSubscriptionsChangedListener);
+    }
+
+    private boolean isSubscriptionRemainActive(SubscriptionManager mgr, int subscriptionId) {
+        return (mgr == null) ? false : (mgr.getActiveSubscriptionInfo(subscriptionId) != null);
+    }
+
+    private void stopMonitorSubscriptionChange(SubscriptionManager mgr) {
+        if ((mgr == null) || (mSubscriptionsChangedListener == null)) {
+            return;
+        }
+        mgr.removeOnSubscriptionsChangedListener(mSubscriptionsChangedListener);
+        mSubscriptionsChangedListener = null;
     }
 
     @Override
@@ -269,6 +341,7 @@
         if (mAlertDialog != null) {
             mAlertDialog.dismiss();
         }
+        stopMonitorSubscriptionChange(getSubscriptionManager());
         super.onDestroy();
     }
 
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index b226133..8389d84 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -144,6 +144,7 @@
     public static class NotificationAccessSettingsActivity extends SettingsActivity { /* empty */ }
     public static class NotificationAccessDetailsActivity extends SettingsActivity { /* empty */ }
     public static class VrListenersSettingsActivity extends SettingsActivity { /* empty */ }
+    public static class PremiumSmsAccessActivity extends SettingsActivity { /* empty */ }
     public static class PictureInPictureSettingsActivity extends SettingsActivity { /* empty */ }
     public static class AppPictureInPictureSettingsActivity extends SettingsActivity { /* empty */ }
     public static class ZenAccessSettingsActivity extends SettingsActivity { /* empty */ }
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index b6a9f59..eca3869 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -143,6 +143,11 @@
     public static final String PROPERTY_PERMISSIONS_HUB_ENABLED = "permissions_hub_enabled";
 
     /**
+     * Whether to show location indicators.
+     */
+    public static final String PROPERTY_LOCATION_INDICATORS_ENABLED = "location_indicators_enabled";
+
+    /**
      * Finds a matching activity for a preference's intent. If a matching
      * activity is not found, it will remove the preference.
      *
@@ -1151,5 +1156,4 @@
     public static boolean isProviderModelEnabled(Context context) {
         return FeatureFlagUtils.isEnabled(context, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL);
     }
-
 }
diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java
index e5bc3f5..4709c66 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettings.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettings.java
@@ -29,7 +29,6 @@
 import android.content.pm.ResolveInfo;
 import android.content.pm.ServiceInfo;
 import android.graphics.drawable.Drawable;
-import android.hardware.display.ColorDisplayManager;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.Handler;
@@ -43,7 +42,6 @@
 import androidx.core.content.ContextCompat;
 import androidx.preference.Preference;
 import androidx.preference.PreferenceCategory;
-import androidx.preference.SwitchPreference;
 
 import com.android.internal.accessibility.AccessibilityShortcutController;
 import com.android.internal.content.PackageMonitor;
@@ -51,7 +49,6 @@
 import com.android.settings.Utils;
 import com.android.settings.accessibility.AccessibilityUtil.AccessibilityServiceFragmentType;
 import com.android.settings.dashboard.DashboardFragment;
-import com.android.settings.display.DarkUIPreferenceController;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
 import com.android.settingslib.RestrictedLockUtilsInternal;
@@ -82,23 +79,14 @@
     private static final String CATEGORY_EXPERIMENTAL = "experimental_category";
     private static final String CATEGORY_DOWNLOADED_SERVICES = "user_installed_services_category";
 
-    private static final String[] CATEGORIES = new String[] {
+    private static final String[] CATEGORIES = new String[]{
             CATEGORY_SCREEN_READER, CATEGORY_AUDIO_AND_CAPTIONS, CATEGORY_DISPLAY,
             CATEGORY_INTERACTION_CONTROL, CATEGORY_EXPERIMENTAL, CATEGORY_DOWNLOADED_SERVICES
     };
 
     // Preferences
-    private static final String TOGGLE_INVERSION_PREFERENCE =
-            "toggle_inversion_preference";
-    private static final String TOGGLE_LARGE_POINTER_ICON =
-            "toggle_large_pointer_icon";
-    private static final String TOGGLE_DISABLE_ANIMATIONS = "toggle_disable_animations";
     private static final String DISPLAY_MAGNIFICATION_PREFERENCE_SCREEN =
             "magnification_preference_screen";
-    private static final String DISPLAY_DALTONIZER_PREFERENCE_SCREEN =
-            "daltonizer_preference";
-    private static final String DISPLAY_REDUCE_BRIGHT_COLORS_PREFERENCE_SCREEN =
-            "reduce_bright_colors_preference";
 
     // Extras passed to sub-fragments.
     static final String EXTRA_PREFERENCE_KEY = "preference_key";
@@ -167,13 +155,7 @@
     private final Map<ComponentName, PreferenceCategory> mPreBundledServiceComponentToCategoryMap =
             new ArrayMap<>();
 
-    private SwitchPreference mToggleLargePointerIconPreference;
-    private SwitchPreference mToggleDisableAnimationsPreference;
     private Preference mDisplayMagnificationPreferenceScreen;
-    private Preference mDisplayDaltonizerPreferenceScreen;
-    private Preference mToggleInversionPreference;
-    private Preference mReduceBrightColorsPreference;
-
 
     /**
      * Check if the color transforms are color accelerated. Some transforms are experimental only
@@ -226,7 +208,6 @@
     @Override
     public void onAttach(Context context) {
         super.onAttach(context);
-        use(DarkUIPreferenceController.class).setParentFragment(this);
         use(AccessibilityHearingAidPreferenceController.class)
                 .setFragmentManager(getFragmentManager());
     }
@@ -259,8 +240,8 @@
     /**
      * Returns the summary for the current state of this accessibilityService.
      *
-     * @param context A valid context
-     * @param info The accessibilityService's info
+     * @param context        A valid context
+     * @param info           The accessibilityService's info
      * @param serviceEnabled Whether the accessibility service is enabled.
      * @return The service summary
      */
@@ -299,8 +280,8 @@
     /**
      * Returns the description for the current state of this accessibilityService.
      *
-     * @param context A valid context
-     * @param info The accessibilityService's info
+     * @param context        A valid context
+     * @param info           The accessibilityService's info
      * @param serviceEnabled Whether the accessibility service is enabled.
      * @return The service description
      */
@@ -325,24 +306,9 @@
             mCategoryToPrefCategoryMap.put(CATEGORIES[i], prefCategory);
         }
 
-        // Display inversion.
-        mToggleInversionPreference = findPreference(TOGGLE_INVERSION_PREFERENCE);
-
-        // Large pointer icon.
-        mToggleLargePointerIconPreference = findPreference(TOGGLE_LARGE_POINTER_ICON);
-
-        mToggleDisableAnimationsPreference = findPreference(TOGGLE_DISABLE_ANIMATIONS);
-
         // Display magnification.
         mDisplayMagnificationPreferenceScreen = findPreference(
                 DISPLAY_MAGNIFICATION_PREFERENCE_SCREEN);
-
-        // Display color adjustments.
-        mDisplayDaltonizerPreferenceScreen = findPreference(DISPLAY_DALTONIZER_PREFERENCE_SCREEN);
-
-        // Reduce brightness.
-        mReduceBrightColorsPreference =
-                findPreference(DISPLAY_REDUCE_BRIGHT_COLORS_PREFERENCE_SCREEN);
     }
 
     private void updateAllPreferences() {
@@ -392,13 +358,13 @@
 
         // Update the order of all the category according to the order defined in xml file.
         updateCategoryOrderFromArray(CATEGORY_SCREEN_READER,
-            R.array.config_order_screen_reader_services);
+                R.array.config_order_screen_reader_services);
         updateCategoryOrderFromArray(CATEGORY_AUDIO_AND_CAPTIONS,
-            R.array.config_order_audio_and_caption_services);
+                R.array.config_order_audio_and_caption_services);
         updateCategoryOrderFromArray(CATEGORY_INTERACTION_CONTROL,
-            R.array.config_order_interaction_control_services);
+                R.array.config_order_interaction_control_services);
         updateCategoryOrderFromArray(CATEGORY_DISPLAY,
-            R.array.config_order_display_services);
+                R.array.config_order_display_services);
 
         // Need to check each time when updateServicePreferences() called.
         if (downloadedServicesCategory.getPreferenceCount() == 0) {
@@ -468,7 +434,7 @@
      * key with the string array of preference order which is defined in the xml.
      *
      * @param categoryKey The key of the category need to update the order
-     * @param key The key of the string array which defines the order of category
+     * @param key         The key of the string array which defines the order of category
      */
     private void updateCategoryOrderFromArray(String categoryKey, int key) {
         String[] services = getResources().getStringArray(key);
@@ -486,39 +452,11 @@
         }
     }
 
+    /**
+     * Updates preferences related to system configurations.
+     */
     protected void updateSystemPreferences() {
-        // Move color inversion and color correction preferences to Display category if device
-        // supports HWC hardware-accelerated color transform.
-        if (ColorDisplayManager.isColorTransformAccelerated(getContext())) {
-            PreferenceCategory experimentalCategory =
-                    mCategoryToPrefCategoryMap.get(CATEGORY_EXPERIMENTAL);
-            PreferenceCategory displayCategory =
-                    mCategoryToPrefCategoryMap.get(CATEGORY_DISPLAY);
-            experimentalCategory.removePreference(mToggleInversionPreference);
-            experimentalCategory.removePreference(mDisplayDaltonizerPreferenceScreen);
-            experimentalCategory.removePreference(mReduceBrightColorsPreference);
-            mDisplayMagnificationPreferenceScreen.setSummary(
-                    ToggleScreenMagnificationPreferenceFragment.getServiceSummary(getContext()));
-            mDisplayDaltonizerPreferenceScreen.setOrder(
-                    mDisplayMagnificationPreferenceScreen.getOrder() + 1);
-            mDisplayDaltonizerPreferenceScreen.setSummary(AccessibilityUtil.getSummary(
-                    getContext(), Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED));
-            mToggleInversionPreference.setOrder(
-                    mDisplayDaltonizerPreferenceScreen.getOrder() + 1);
-            mToggleLargePointerIconPreference.setOrder(
-                    mToggleInversionPreference.getOrder() + 1);
-            mToggleDisableAnimationsPreference.setOrder(
-                    mToggleLargePointerIconPreference.getOrder() + 1);
-            mToggleInversionPreference.setSummary(AccessibilityUtil.getSummary(
-                    getContext(), Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED));
-            mReduceBrightColorsPreference.setOrder(
-                    mToggleDisableAnimationsPreference.getOrder() + 1);
-            mReduceBrightColorsPreference.setSummary(AccessibilityUtil.getSummary(
-                    getContext(), Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED));
-            displayCategory.addPreference(mToggleInversionPreference);
-            displayCategory.addPreference(mDisplayDaltonizerPreferenceScreen);
-            displayCategory.addPreference(mReduceBrightColorsPreference);
-        }
+        // Do nothing.
     }
 
     public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
diff --git a/src/com/android/settings/accessibility/MagnificationCapabilities.java b/src/com/android/settings/accessibility/MagnificationCapabilities.java
new file mode 100644
index 0000000..079b06c
--- /dev/null
+++ b/src/com/android/settings/accessibility/MagnificationCapabilities.java
@@ -0,0 +1,103 @@
+/*
+ * 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.settings.accessibility;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.provider.Settings;
+
+import androidx.annotation.IntDef;
+
+import com.android.settings.R;
+
+import com.google.common.primitives.Ints;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/** Class to provide magnification capabilities. */
+public final class MagnificationCapabilities {
+
+    private static final String KEY_CAPABILITY =
+            Settings.Secure.ACCESSIBILITY_MAGNIFICATION_CAPABILITY;
+
+    /**
+     * Annotation for supported magnification mode.
+     *
+     * @see Settings.Secure#ACCESSIBILITY_MAGNIFICATION_CAPABILITY
+     */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef({
+            MagnificationMode.FULLSCREEN,
+            MagnificationMode.WINDOW,
+            MagnificationMode.ALL,
+    })
+
+    public @interface MagnificationMode {
+        int FULLSCREEN = Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN;
+        int WINDOW = Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW;
+        int ALL = Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_ALL;
+    }
+
+    /**
+     * Gets the summary for the given {@code capabilities}.
+     *
+     * @param context A {@link Context}.
+     * @param capabilities Magnification capabilities {@link MagnificationMode}
+     * @return The summary text represents the given capabilities
+     */
+    public static String getSummary(Context context, @MagnificationMode int capabilities) {
+        final String[] summaries = context.getResources().getStringArray(
+                R.array.magnification_mode_summaries);
+        final int[] values = context.getResources().getIntArray(
+                R.array.magnification_mode_values);
+
+        final int idx = Ints.indexOf(values, capabilities);
+        return summaries[idx == /* no index exist */ -1 ? 0 : idx];
+    }
+
+    /**
+     * Sets the magnification capabilities {@link MagnificationMode} to settings key. This
+     * overwrites any existing capabilities.
+     *
+     * @param context      A {@link Context}.
+     * @param capabilities Magnification capabilities {@link MagnificationMode}
+     */
+    public static void setCapabilities(Context context, @MagnificationMode int capabilities) {
+        final ContentResolver contentResolver = context.getContentResolver();
+
+        Settings.Secure.putIntForUser(contentResolver, KEY_CAPABILITY, capabilities,
+                contentResolver.getUserId());
+    }
+
+    /**
+     * Returns the magnification capabilities {@link MagnificationMode} from setting's key. May be
+     * default value {@link MagnificationMode#FULLSCREEN} if not set.
+     *
+     * @param context A {@link Context}.
+     * @return The magnification capabilities {@link MagnificationMode}
+     */
+    @MagnificationMode
+    public static int getCapabilities(Context context) {
+        final ContentResolver contentResolver = context.getContentResolver();
+
+        return Settings.Secure.getIntForUser(contentResolver, KEY_CAPABILITY,
+                MagnificationMode.FULLSCREEN, contentResolver.getUserId());
+    }
+
+    private MagnificationCapabilities() {}
+}
diff --git a/src/com/android/settings/accessibility/MagnificationModePreferenceController.java b/src/com/android/settings/accessibility/MagnificationModePreferenceController.java
index b45ad88..5dc93b1 100644
--- a/src/com/android/settings/accessibility/MagnificationModePreferenceController.java
+++ b/src/com/android/settings/accessibility/MagnificationModePreferenceController.java
@@ -35,7 +35,7 @@
 
     @Override
     public CharSequence getSummary() {
-        return MagnificationSettingsFragment.getMagnificationCapabilitiesSummary(
-                mContext);
+        final int capabilities = MagnificationCapabilities.getCapabilities(mContext);
+        return MagnificationCapabilities.getSummary(mContext, capabilities);
     }
 }
diff --git a/src/com/android/settings/accessibility/MagnificationSettingsFragment.java b/src/com/android/settings/accessibility/MagnificationSettingsFragment.java
index 6b91fab..6ea6366 100644
--- a/src/com/android/settings/accessibility/MagnificationSettingsFragment.java
+++ b/src/com/android/settings/accessibility/MagnificationSettingsFragment.java
@@ -22,7 +22,6 @@
 
 import android.app.Dialog;
 import android.app.settings.SettingsEnums;
-import android.content.Context;
 import android.content.DialogInterface;
 import android.os.Bundle;
 import android.provider.Settings;
@@ -38,8 +37,6 @@
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settingslib.search.SearchIndexable;
 
-import com.google.common.primitives.Ints;
-
 import java.util.StringJoiner;
 
 /** Settings page for magnification. */
@@ -48,8 +45,6 @@
 
     private static final String TAG = "MagnificationSettingsFragment";
     private static final String PREF_KEY_MODE = "magnification_mode";
-    private static final String KEY_CAPABILITY =
-            Settings.Secure.ACCESSIBILITY_MAGNIFICATION_CAPABILITY;
     private static final int DIALOG_MAGNIFICATION_CAPABILITY = 1;
     private static final int DIALOG_MAGNIFICATION_SWITCH_SHORTCUT = 2;
     private static final String EXTRA_CAPABILITY = "capability";
@@ -61,29 +56,6 @@
     private CheckBox mMagnifyWindowCheckBox;
     private Dialog mDialog;
 
-    static String getMagnificationCapabilitiesSummary(Context context) {
-        final String[] magnificationModeSummaries = context.getResources().getStringArray(
-                R.array.magnification_mode_summaries);
-        final int[] magnificationModeValues = context.getResources().getIntArray(
-                R.array.magnification_mode_values);
-        final int capabilities = MagnificationSettingsFragment.getMagnificationCapabilities(
-                context);
-
-        final int idx = Ints.indexOf(magnificationModeValues, capabilities);
-        return magnificationModeSummaries[idx == -1 ? 0 : idx];
-    }
-
-    private static int getMagnificationCapabilities(Context context) {
-        return getSecureIntValue(context, KEY_CAPABILITY,
-                Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN);
-    }
-
-    private static int getSecureIntValue(Context context, String key, int defaultValue) {
-        return Settings.Secure.getIntForUser(
-                context.getContentResolver(),
-                key, defaultValue, context.getContentResolver().getUserId());
-    }
-
     @Override
     public int getMetricsCategory() {
         return SettingsEnums.ACCESSIBILITY_MAGNIFICATION_SETTINGS;
@@ -102,7 +74,7 @@
             mCapabilities = savedInstanceState.getInt(EXTRA_CAPABILITY, NONE);
         }
         if (mCapabilities == NONE) {
-            mCapabilities = getMagnificationCapabilities(getPrefContext());
+            mCapabilities = MagnificationCapabilities.getCapabilities(getPrefContext());
         }
     }
 
@@ -128,7 +100,7 @@
         super.onCreate(icicle);
         mModePreference = findPreference(PREF_KEY_MODE);
         mModePreference.setOnPreferenceClickListener(preference -> {
-            mCapabilities = getMagnificationCapabilities(getPrefContext());
+            mCapabilities = MagnificationCapabilities.getCapabilities(getPrefContext());
             showDialog(DIALOG_MAGNIFICATION_CAPABILITY);
             return true;
         });
@@ -164,7 +136,7 @@
     private void callOnAlertDialogCheckboxClicked(DialogInterface dialog, int which) {
         updateCapabilities(true);
         mModePreference.setSummary(
-                getMagnificationCapabilitiesSummary(getPrefContext()));
+                MagnificationCapabilities.getSummary(getPrefContext(), mCapabilities));
     }
 
     private void onSwitchShortcutDialogPositiveButtonClicked(View view) {
@@ -285,7 +257,7 @@
                 ? Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW : 0;
         mCapabilities = capabilities;
         if (saveToDB) {
-            setMagnificationCapabilities(capabilities);
+            MagnificationCapabilities.setCapabilities(getPrefContext(), mCapabilities);
         }
     }
 
@@ -294,15 +266,6 @@
                 Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, OFF) == ON;
     }
 
-    private void setSecureIntValue(String key, int value) {
-        Settings.Secure.putIntForUser(getPrefContext().getContentResolver(),
-                key, value, getPrefContext().getContentResolver().getUserId());
-    }
-
-    private void setMagnificationCapabilities(int capabilities) {
-        setSecureIntValue(KEY_CAPABILITY, capabilities);
-    }
-
     public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
             new BaseSearchIndexProvider(R.xml.accessibility_magnification_service_settings);
 }
diff --git a/src/com/android/settings/accessibility/ReduceBrightColorsIntensityPreferenceController.java b/src/com/android/settings/accessibility/ReduceBrightColorsIntensityPreferenceController.java
index 09243e5..ea7fb7c 100644
--- a/src/com/android/settings/accessibility/ReduceBrightColorsIntensityPreferenceController.java
+++ b/src/com/android/settings/accessibility/ReduceBrightColorsIntensityPreferenceController.java
@@ -17,6 +17,7 @@
 package com.android.settings.accessibility;
 
 import android.content.Context;
+import android.hardware.display.ColorDisplayManager;
 import android.provider.Settings;
 
 import androidx.preference.Preference;
@@ -34,7 +35,12 @@
 
     @Override
     public int getAvailabilityStatus() {
-        // TODO(b/170970675): Call into ColorDisplayService (CDS) to get availability/config status
+        if (!ColorDisplayManager.isColorTransformAccelerated(mContext)) {
+            return UNSUPPORTED_ON_DEVICE;
+        } else if (Settings.Secure.getInt(mContext.getContentResolver(),
+                Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED, 0) != 1) {
+            return DISABLED_DEPENDENT_SETTING;
+        }
         return AVAILABLE;
     }
 
@@ -59,14 +65,14 @@
 
     @Override
     public int getSliderPosition() {
-        // TODO(b/170970675): Call into CDS to get intensity
-        return 0;
+        return Settings.Secure.getInt(mContext.getContentResolver(),
+                Settings.Secure.REDUCE_BRIGHT_COLORS_LEVEL, 0);
     }
 
     @Override
     public boolean setSliderPosition(int position) {
-        // TODO(b/170970675): Call into CDS to set intensity
-        return true;
+        return Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.REDUCE_BRIGHT_COLORS_LEVEL, position);
     }
 
     @Override
diff --git a/src/com/android/settings/accessibility/ReduceBrightColorsPreferenceController.java b/src/com/android/settings/accessibility/ReduceBrightColorsPreferenceController.java
index c5ce77c..82b3a64 100644
--- a/src/com/android/settings/accessibility/ReduceBrightColorsPreferenceController.java
+++ b/src/com/android/settings/accessibility/ReduceBrightColorsPreferenceController.java
@@ -17,6 +17,7 @@
 package com.android.settings.accessibility;
 
 import android.content.Context;
+import android.hardware.display.ColorDisplayManager;
 import android.provider.Settings;
 
 import com.android.settings.core.BasePreferenceController;
@@ -37,7 +38,7 @@
 
     @Override
     public int getAvailabilityStatus() {
-        // TODO(b/170970675): call into CDS to get availability/config status
-        return AVAILABLE;
+        return ColorDisplayManager.isColorTransformAccelerated(mContext) ? AVAILABLE
+                : UNSUPPORTED_ON_DEVICE;
     }
 }
diff --git a/src/com/android/settings/accessibility/TextAndDisplayFragment.java b/src/com/android/settings/accessibility/TextAndDisplayFragment.java
new file mode 100644
index 0000000..b496e3d
--- /dev/null
+++ b/src/com/android/settings/accessibility/TextAndDisplayFragment.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.settings.accessibility;
+
+import android.app.settings.SettingsEnums;
+import android.content.Context;
+import android.hardware.display.ColorDisplayManager;
+import android.os.Bundle;
+import android.provider.Settings;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.SwitchPreference;
+
+import com.android.settings.R;
+import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.display.DarkUIPreferenceController;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settingslib.search.SearchIndexable;
+
+/** Accessibility settings for text and display. */
+@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
+public class TextAndDisplayFragment extends DashboardFragment {
+
+    private static final String TAG = "TextAndDisplayFragment";
+
+    private static final String CATEGORY_EXPERIMENTAL = "experimental_category";
+
+    // Preferences
+    private static final String DISPLAY_DALTONIZER_PREFERENCE_SCREEN = "daltonizer_preference";
+    private static final String TOGGLE_INVERSION_PREFERENCE = "toggle_inversion_preference";
+    private static final String DISPLAY_REDUCE_BRIGHT_COLORS_PREFERENCE_SCREEN =
+            "reduce_bright_colors_preference";
+    private static final String TOGGLE_DISABLE_ANIMATIONS = "toggle_disable_animations";
+    private static final String TOGGLE_LARGE_POINTER_ICON = "toggle_large_pointer_icon";
+
+    private Preference mDisplayDaltonizerPreferenceScreen;
+    private Preference mToggleInversionPreference;
+    private Preference mReduceBrightColorsPreference;
+    private SwitchPreference mToggleDisableAnimationsPreference;
+    private SwitchPreference mToggleLargePointerIconPreference;
+
+    @Override
+    public int getMetricsCategory() {
+        return SettingsEnums.ACCESSIBILITY_TEXT_AND_DISPLAY;
+    }
+
+
+    @Override
+    public void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+        initializeAllPreferences();
+        updateSystemPreferences();
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        use(DarkUIPreferenceController.class).setParentFragment(this);
+    }
+
+    @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.accessibility_text_and_display;
+    }
+
+    @Override
+    protected String getLogTag() {
+        return TAG;
+    }
+
+    private void initializeAllPreferences() {
+        // Display color adjustments.
+        mDisplayDaltonizerPreferenceScreen = findPreference(DISPLAY_DALTONIZER_PREFERENCE_SCREEN);
+
+        // Display inversion.
+        mToggleInversionPreference = findPreference(TOGGLE_INVERSION_PREFERENCE);
+
+        // Reduce brightness.
+        mReduceBrightColorsPreference =
+                findPreference(DISPLAY_REDUCE_BRIGHT_COLORS_PREFERENCE_SCREEN);
+
+        // Disable animation.
+        mToggleDisableAnimationsPreference = findPreference(TOGGLE_DISABLE_ANIMATIONS);
+
+        // Large pointer icon.
+        mToggleLargePointerIconPreference = findPreference(TOGGLE_LARGE_POINTER_ICON);
+    }
+
+    /**
+     * Updates preferences related to system configurations.
+     */
+    private void updateSystemPreferences() {
+        final PreferenceCategory experimentalCategory = getPreferenceScreen().findPreference(
+                CATEGORY_EXPERIMENTAL);
+        if (ColorDisplayManager.isColorTransformAccelerated(getContext())) {
+            mDisplayDaltonizerPreferenceScreen.setSummary(AccessibilityUtil.getSummary(
+                    getContext(), Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED));
+            mToggleInversionPreference.setSummary(AccessibilityUtil.getSummary(
+                    getContext(), Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED));
+            mReduceBrightColorsPreference.setSummary(AccessibilityUtil.getSummary(
+                    getContext(), Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED));
+            getPreferenceScreen().removePreference(experimentalCategory);
+        } else {
+            // Move following preferences to experimental category if device don't supports HWC
+            // hardware-accelerated color transform.
+            getPreferenceScreen().removePreference(mDisplayDaltonizerPreferenceScreen);
+            getPreferenceScreen().removePreference(mToggleInversionPreference);
+            getPreferenceScreen().removePreference(mReduceBrightColorsPreference);
+            getPreferenceScreen().removePreference(mToggleDisableAnimationsPreference);
+            getPreferenceScreen().removePreference(mToggleLargePointerIconPreference);
+            experimentalCategory.addPreference(mDisplayDaltonizerPreferenceScreen);
+            experimentalCategory.addPreference(mToggleInversionPreference);
+            experimentalCategory.addPreference(mReduceBrightColorsPreference);
+            experimentalCategory.addPreference(mToggleDisableAnimationsPreference);
+            experimentalCategory.addPreference(mToggleLargePointerIconPreference);
+        }
+    }
+
+    public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+            new BaseSearchIndexProvider(R.xml.accessibility_text_and_display);
+}
diff --git a/src/com/android/settings/accessibility/ToggleAutoclickPreferenceController.java b/src/com/android/settings/accessibility/ToggleAutoclickPreferenceController.java
index b9af7ce..78f31df 100644
--- a/src/com/android/settings/accessibility/ToggleAutoclickPreferenceController.java
+++ b/src/com/android/settings/accessibility/ToggleAutoclickPreferenceController.java
@@ -25,6 +25,7 @@
 import android.provider.Settings;
 import android.util.ArrayMap;
 
+import androidx.annotation.VisibleForTesting;
 import androidx.lifecycle.LifecycleObserver;
 import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
@@ -44,16 +45,23 @@
 public class ToggleAutoclickPreferenceController extends BasePreferenceController implements
         LifecycleObserver, RadioButtonPreference.OnClickListener, PreferenceControllerMixin {
 
-    private static final String CONTROL_AUTOCLICK_DELAY_SECURE =
+    @VisibleForTesting
+    static final String CONTROL_AUTOCLICK_DELAY_SECURE =
             Settings.Secure.ACCESSIBILITY_AUTOCLICK_DELAY;
-    private static final String KEY_AUTOCLICK_CUSTOM_SEEKBAR = "autoclick_custom_seekbar";
+
+    @VisibleForTesting
+    static final String KEY_AUTOCLICK_CUSTOM_SEEKBAR = "autoclick_custom_seekbar";
     static final String KEY_DELAY_MODE = "delay_mode";
 
-    private static final int AUTOCLICK_OFF_MODE = 0;
-    private static final int AUTOCLICK_CUSTOM_MODE = 2000;
+    @VisibleForTesting
+    static final int AUTOCLICK_OFF_MODE = 0;
+
+    @VisibleForTesting
+    static final int AUTOCLICK_CUSTOM_MODE = 2000;
 
     // Pair the preference key and autoclick mode value.
-    private final Map<String, Integer> mAccessibilityAutoclickKeyToValueMap = new ArrayMap<>();
+    @VisibleForTesting
+    Map<String, Integer> mAccessibilityAutoclickKeyToValueMap = new ArrayMap<>();
 
     private SharedPreferences mSharedPreferences;
     private final ContentResolver mContentResolver;
@@ -70,13 +78,7 @@
     private int mCurrentUiAutoClickMode;
 
     public ToggleAutoclickPreferenceController(Context context, String preferenceKey) {
-        super(context, preferenceKey);
-
-        mSharedPreferences = context.getSharedPreferences(context.getPackageName(), MODE_PRIVATE);
-        mContentResolver = context.getContentResolver();
-        mResources = context.getResources();
-
-        setAutoclickModeToKeyMap();
+        this(context, /* lifecycle= */ null, preferenceKey);
     }
 
     public ToggleAutoclickPreferenceController(Context context, Lifecycle lifecycle,
diff --git a/src/com/android/settings/accessibility/VideoPlayer.java b/src/com/android/settings/accessibility/VideoPlayer.java
index 8f94b76..d4aa6a6 100644
--- a/src/com/android/settings/accessibility/VideoPlayer.java
+++ b/src/com/android/settings/accessibility/VideoPlayer.java
@@ -25,6 +25,7 @@
 
 import androidx.annotation.GuardedBy;
 import androidx.annotation.RawRes;
+import androidx.annotation.VisibleForTesting;
 
 /**
  * Plays the video by {@link MediaPlayer} on {@link TextureView}, calls {@link #create(Context, int,
@@ -32,19 +33,25 @@
  * is no longer used, call {@link #release()} so that MediaPlayer object can be released.
  */
 public class VideoPlayer implements SurfaceTextureListener {
-    private final Context context;
-    private final Object mediaPlayerLock = new Object();
+    private final Context mContext;
+    private final Object mMediaPlayerLock = new Object();
     // Media player object can't be used after it has been released, so it will be set to null. But
     // VideoPlayer is asynchronized, media player object might be paused or resumed again before
     // released media player is set to null. Therefore, lock mediaPlayer and mediaPlayerState by
     // mediaPlayerLock keep their states consistent.
+    @VisibleForTesting
     @GuardedBy("mediaPlayerLock")
-    private MediaPlayer mediaPlayer;
+    MediaPlayer mMediaPlayer;
+
+    @VisibleForTesting
     @GuardedBy("mediaPlayerLock")
-    private State mediaPlayerState = State.NONE;
+    State mMediaPlayerState = State.NONE;
+
     @RawRes
-    private final int videoRes;
-    private Surface animationSurface;
+    private final int mVideoRes;
+
+    @VisibleForTesting
+    Surface mAnimationSurface;
 
 
     /**
@@ -58,54 +65,54 @@
     }
 
     private VideoPlayer(Context context, @RawRes int videoRes, TextureView textureView) {
-        this.context = context;
-        this.videoRes = videoRes;
+        this.mContext = context;
+        this.mVideoRes = videoRes;
         textureView.setSurfaceTextureListener(this);
     }
 
     public void pause() {
-        synchronized (mediaPlayerLock) {
-            if (mediaPlayerState == State.STARTED) {
-                mediaPlayerState = State.PAUSED;
-                mediaPlayer.pause();
+        synchronized (mMediaPlayerLock) {
+            if (mMediaPlayerState == State.STARTED) {
+                mMediaPlayerState = State.PAUSED;
+                mMediaPlayer.pause();
             }
         }
     }
 
     public void resume() {
-        synchronized (mediaPlayerLock) {
-            if (mediaPlayerState == State.PAUSED) {
-                mediaPlayer.start();
-                mediaPlayerState = State.STARTED;
+        synchronized (mMediaPlayerLock) {
+            if (mMediaPlayerState == State.PAUSED) {
+                mMediaPlayer.start();
+                mMediaPlayerState = State.STARTED;
             }
         }
     }
 
     /** Release media player when it's no longer needed. */
     public void release() {
-        synchronized (mediaPlayerLock) {
-            if (mediaPlayerState != State.NONE && mediaPlayerState != State.END) {
-                mediaPlayerState = State.END;
-                mediaPlayer.release();
-                mediaPlayer = null;
+        synchronized (mMediaPlayerLock) {
+            if (mMediaPlayerState != State.NONE && mMediaPlayerState != State.END) {
+                mMediaPlayerState = State.END;
+                mMediaPlayer.release();
+                mMediaPlayer = null;
             }
         }
-        if (animationSurface != null) {
-            animationSurface.release();
-            animationSurface = null;
+        if (mAnimationSurface != null) {
+            mAnimationSurface.release();
+            mAnimationSurface = null;
         }
     }
 
     @Override
     public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
-        animationSurface = new Surface(surface);
-        synchronized (mediaPlayerLock) {
-            mediaPlayer = MediaPlayer.create(context, videoRes);
-            mediaPlayerState = State.PREPARED;
-            mediaPlayer.setSurface(animationSurface);
-            mediaPlayer.setLooping(true);
-            mediaPlayer.start();
-            mediaPlayerState = State.STARTED;
+        mAnimationSurface = new Surface(surface);
+        synchronized (mMediaPlayerLock) {
+            mMediaPlayer = MediaPlayer.create(mContext, mVideoRes);
+            mMediaPlayerState = State.PREPARED;
+            mMediaPlayer.setSurface(mAnimationSurface);
+            mMediaPlayer.setLooping(true);
+            mMediaPlayer.start();
+            mMediaPlayerState = State.STARTED;
         }
     }
 
diff --git a/src/com/android/settings/applications/specialaccess/notificationaccess/ApprovalPreferenceController.java b/src/com/android/settings/applications/specialaccess/notificationaccess/ApprovalPreferenceController.java
new file mode 100644
index 0000000..a43b9fd
--- /dev/null
+++ b/src/com/android/settings/applications/specialaccess/notificationaccess/ApprovalPreferenceController.java
@@ -0,0 +1,135 @@
+/*
+ * 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.settings.applications.specialaccess.notificationaccess;
+
+import android.app.NotificationManager;
+import android.app.settings.SettingsEnums;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.os.AsyncTask;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceFragmentCompat;
+import androidx.preference.SwitchPreference;
+
+import com.android.settings.core.BasePreferenceController;
+import com.android.settings.overlay.FeatureFactory;
+
+public class ApprovalPreferenceController extends BasePreferenceController {
+
+    private static final String TAG = "ApprovalPrefController";
+
+    private PackageInfo mPkgInfo;
+    private ComponentName mCn;
+    private PreferenceFragmentCompat mParent;
+    private NotificationManager mNm;
+    private PackageManager mPm;
+
+    public ApprovalPreferenceController(Context context, String key) {
+        super(context, key);
+    }
+
+    public ApprovalPreferenceController setPkgInfo(PackageInfo pkgInfo) {
+        mPkgInfo = pkgInfo;
+        return this;
+    }
+
+    public ApprovalPreferenceController setCn(ComponentName cn) {
+        mCn = cn;
+        return this;
+    }
+
+    public ApprovalPreferenceController setParent(PreferenceFragmentCompat parent) {
+        mParent = parent;
+        return this;
+    }
+
+    public ApprovalPreferenceController setNm(NotificationManager nm) {
+        mNm = nm;
+        return this;
+    }
+
+    public ApprovalPreferenceController setPm(PackageManager pm) {
+        mPm = pm;
+        return this;
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return AVAILABLE;
+    }
+
+    @Override
+    public void updateState(Preference pref) {
+        final SwitchPreference preference = (SwitchPreference) pref;
+        final CharSequence label = mPkgInfo.applicationInfo.loadLabel(mPm);
+        preference.setChecked(isServiceEnabled(mCn));
+        preference.setOnPreferenceChangeListener((p, newValue) -> {
+            final boolean access = (Boolean) newValue;
+            if (!access) {
+                if (!isServiceEnabled(mCn)) {
+                    return true; // already disabled
+                }
+                // show a friendly dialog
+                new FriendlyWarningDialogFragment()
+                        .setServiceInfo(mCn, label, mParent)
+                        .show(mParent.getFragmentManager(), "friendlydialog");
+                return false;
+            } else {
+                if (isServiceEnabled(mCn)) {
+                    return true; // already enabled
+                }
+                // show a scary dialog
+                new ScaryWarningDialogFragment()
+                        .setServiceInfo(mCn, label, mParent)
+                        .show(mParent.getFragmentManager(), "dialog");
+                return false;
+            }
+        });
+    }
+
+    public void disable(final ComponentName cn) {
+        logSpecialPermissionChange(true, cn.getPackageName());
+        mNm.setNotificationListenerAccessGranted(cn, false);
+        AsyncTask.execute(() -> {
+            if (!mNm.isNotificationPolicyAccessGrantedForPackage(
+                    cn.getPackageName())) {
+                mNm.removeAutomaticZenRules(cn.getPackageName());
+            }
+        });
+    }
+
+    protected void enable(ComponentName cn) {
+        logSpecialPermissionChange(true, cn.getPackageName());
+        mNm.setNotificationListenerAccessGranted(cn, true);
+    }
+
+    protected boolean isServiceEnabled(ComponentName cn) {
+        return mNm.isNotificationListenerAccessGranted(cn);
+    }
+
+    @VisibleForTesting
+    void logSpecialPermissionChange(boolean enable, String packageName) {
+        final int logCategory = enable ? SettingsEnums.APP_SPECIAL_PERMISSION_NOTIVIEW_ALLOW
+                : SettingsEnums.APP_SPECIAL_PERMISSION_NOTIVIEW_DENY;
+        FeatureFactory.getFactory(mContext).getMetricsFeatureProvider().action(mContext,
+                logCategory, packageName);
+    }
+}
\ No newline at end of file
diff --git a/src/com/android/settings/applications/specialaccess/notificationaccess/HeaderPreferenceController.java b/src/com/android/settings/applications/specialaccess/notificationaccess/HeaderPreferenceController.java
new file mode 100644
index 0000000..94736e4
--- /dev/null
+++ b/src/com/android/settings/applications/specialaccess/notificationaccess/HeaderPreferenceController.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.settings.applications.specialaccess.notificationaccess;
+
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.util.IconDrawableFactory;
+import android.view.View;
+
+import androidx.lifecycle.LifecycleObserver;
+import androidx.lifecycle.OnLifecycleEvent;
+import androidx.preference.PreferenceScreen;
+
+import com.android.settings.R;
+import com.android.settings.core.BasePreferenceController;
+import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.widget.EntityHeaderController;
+import com.android.settingslib.applications.AppUtils;
+import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settingslib.widget.LayoutPreference;
+
+public class HeaderPreferenceController extends BasePreferenceController
+        implements PreferenceControllerMixin, LifecycleObserver {
+
+    private DashboardFragment mFragment;
+    private EntityHeaderController mHeaderController;
+    private PackageInfo mPackageInfo;
+    private PackageManager mPm;
+    private CharSequence mServiceName;
+
+    public HeaderPreferenceController(Context context, String key) {
+        super(context, key);
+    }
+
+    public HeaderPreferenceController setFragment(DashboardFragment fragment) {
+        mFragment = fragment;
+        return this;
+    }
+
+    public HeaderPreferenceController setPackageInfo(PackageInfo packageInfo) {
+        mPackageInfo = packageInfo;
+        return this;
+    }
+
+    public HeaderPreferenceController setPm(PackageManager pm) {
+        mPm = pm;
+        return this;
+    }
+
+    public HeaderPreferenceController setServiceName(CharSequence serviceName) {
+        mServiceName = serviceName;
+        return this;
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return AVAILABLE;
+    }
+
+    @Override
+    public void displayPreference(PreferenceScreen screen) {
+        super.displayPreference(screen);
+        if (mFragment == null) {
+            return;
+        }
+        LayoutPreference pref = screen.findPreference(getPreferenceKey());
+        mHeaderController = EntityHeaderController.newInstance(
+                mFragment.getActivity(), mFragment, pref.findViewById(R.id.entity_header));
+        pref = mHeaderController
+                .setRecyclerView(mFragment.getListView(), mFragment.getSettingsLifecycle())
+                .setIcon(IconDrawableFactory.newInstance(mFragment.getActivity())
+                        .getBadgedIcon(mPackageInfo.applicationInfo))
+                .setLabel(mPackageInfo.applicationInfo.loadLabel(mPm))
+                .setSummary(mServiceName)
+                .setIsInstantApp(AppUtils.isInstant(mPackageInfo.applicationInfo))
+                .setPackageName(mPackageInfo.packageName)
+                .setUid(mPackageInfo.applicationInfo.uid)
+                .setHasAppInfoLink(true)
+                .setButtonActions(EntityHeaderController.ActionType.ACTION_NONE,
+                        EntityHeaderController.ActionType.ACTION_NONE)
+                .done(mFragment.getActivity(), mContext);
+        pref.findViewById(R.id.entity_header).setVisibility(View.VISIBLE);
+    }
+
+    @OnLifecycleEvent(Lifecycle.Event.ON_START)
+    public void onStart() {
+        if (mHeaderController != null) {
+            mHeaderController.styleActionBar(mFragment.getActivity());
+        }
+    }
+}
diff --git a/src/com/android/settings/applications/specialaccess/notificationaccess/NotificationAccessDetails.java b/src/com/android/settings/applications/specialaccess/notificationaccess/NotificationAccessDetails.java
index 58a6d7f..c0416a3 100644
--- a/src/com/android/settings/applications/specialaccess/notificationaccess/NotificationAccessDetails.java
+++ b/src/com/android/settings/applications/specialaccess/notificationaccess/NotificationAccessDetails.java
@@ -16,52 +16,56 @@
 
 package com.android.settings.applications.specialaccess.notificationaccess;
 
+import static com.android.settings.applications.AppInfoBase.ARG_PACKAGE_NAME;
+
 import android.app.Activity;
 import android.app.NotificationManager;
 import android.app.settings.SettingsEnums;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
+import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.content.pm.ServiceInfo;
-import android.os.AsyncTask;
 import android.os.Bundle;
+import android.os.UserHandle;
 import android.os.UserManager;
 import android.provider.Settings;
 import android.service.notification.NotificationListenerService;
-import android.util.IconDrawableFactory;
 import android.util.Log;
 import android.util.Slog;
 
-import androidx.annotation.VisibleForTesting;
-import androidx.appcompat.app.AlertDialog;
-import androidx.preference.Preference;
-import androidx.preference.SwitchPreference;
+import androidx.preference.PreferenceScreen;
 
 import com.android.settings.R;
-import com.android.settings.applications.AppInfoBase;
-import com.android.settings.overlay.FeatureFactory;
-import com.android.settings.widget.EntityHeaderController;
-import com.android.settingslib.applications.AppUtils;
+import com.android.settings.SettingsActivity;
+import com.android.settings.applications.manageapplications.ManageApplications;
+import com.android.settings.dashboard.DashboardFragment;
+import com.android.settingslib.RestrictedLockUtils;
+import com.android.settingslib.RestrictedLockUtilsInternal;
+import com.android.settingslib.applications.ApplicationsState;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 
-public class NotificationAccessDetails extends AppInfoBase {
+public class NotificationAccessDetails extends DashboardFragment {
     private static final String TAG = "NotifAccessDetails";
-    private static final String SWITCH_PREF_KEY = "notification_access_switch";
 
-    private boolean mCreated;
     private ComponentName mComponentName;
     private CharSequence mServiceName;
+    protected PackageInfo mPackageInfo;
+    protected int mUserId;
+    protected String mPackageName;
+    protected RestrictedLockUtils.EnforcedAdmin mAppsControlDisallowedAdmin;
+    protected boolean mAppsControlDisallowedBySystem;
     private boolean mIsNls;
-
-    private NotificationManager mNm;
     private PackageManager mPm;
 
     @Override
-    public void onCreate(Bundle savedInstanceState) {
+    public void onAttach(Context context) {
+        super.onAttach(context);
         final Intent intent = getIntent();
         if (mComponentName == null && intent != null) {
             String cn = intent.getStringExtra(Settings.EXTRA_NOTIFICATION_LISTENER_COMPONENT_NAME);
@@ -73,38 +77,20 @@
                 }
             }
         }
-        super.onCreate(savedInstanceState);
-        mNm = getContext().getSystemService(NotificationManager.class);
         mPm = getPackageManager();
-        addPreferencesFromResource(R.xml.notification_access_permission_details);
-    }
-
-    @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
-        if (mCreated) {
-            Log.w(TAG, "onActivityCreated: ignoring duplicate call");
-            return;
-        }
-        mCreated = true;
-        if (mPackageInfo == null) return;
+        retrieveAppEntry();
         loadNotificationListenerService();
-        final Activity activity = getActivity();
-        final Preference pref = EntityHeaderController
-                .newInstance(activity, this, null /* header */)
-                .setRecyclerView(getListView(), getSettingsLifecycle())
-                .setIcon(IconDrawableFactory.newInstance(getContext())
-                        .getBadgedIcon(mPackageInfo.applicationInfo))
-                .setLabel(mPackageInfo.applicationInfo.loadLabel(mPm))
-                .setSummary(mServiceName)
-                .setIsInstantApp(AppUtils.isInstant(mPackageInfo.applicationInfo))
-                .setPackageName(mPackageName)
-                .setUid(mPackageInfo.applicationInfo.uid)
-                .setHasAppInfoLink(true)
-                .setButtonActions(EntityHeaderController.ActionType.ACTION_NONE,
-                        EntityHeaderController.ActionType.ACTION_NONE)
-                .done(activity, getPrefContext());
-        getPreferenceScreen().addPreference(pref);
+        use(ApprovalPreferenceController.class)
+                .setPkgInfo(mPackageInfo)
+                .setCn(mComponentName)
+                .setNm(context.getSystemService(NotificationManager.class))
+                .setPm(context.getPackageManager())
+                .setParent(this);
+        use(HeaderPreferenceController.class)
+                .setFragment(this)
+                .setPackageInfo(mPackageInfo)
+                .setPm(context.getPackageManager())
+                .setServiceName(mServiceName);
     }
 
     @Override
@@ -112,9 +98,7 @@
         return SettingsEnums.NOTIFICATION_ACCESS_DETAIL;
     }
 
-    @Override
     protected boolean refreshUi() {
-        final Context context = getContext();
         if (mComponentName == null) {
             // No service given
             Slog.d(TAG, "No component name provided");
@@ -130,72 +114,74 @@
             Slog.d(TAG, "NLSes aren't allowed in work profiles");
             return false;
         }
-        updatePreference(findPreference(SWITCH_PREF_KEY));
         return true;
     }
 
     @Override
-    protected AlertDialog createDialog(int id, int errorCode) {
-        return null;
+    public void onResume() {
+        super.onResume();
+        mAppsControlDisallowedAdmin = RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
+                getActivity(), UserManager.DISALLOW_APPS_CONTROL, mUserId);
+        mAppsControlDisallowedBySystem = RestrictedLockUtilsInternal.hasBaseUserRestriction(
+                getActivity(), UserManager.DISALLOW_APPS_CONTROL, mUserId);
+
+        if (!refreshUi()) {
+            setIntentAndFinish(true /* appChanged */);
+        }
     }
 
-    public void updatePreference(SwitchPreference preference) {
-        final CharSequence label = mPackageInfo.applicationInfo.loadLabel(mPm);
-        preference.setChecked(isServiceEnabled(mComponentName));
-        preference.setOnPreferenceChangeListener((p, newValue) -> {
-            final boolean access = (Boolean) newValue;
-            if (!access) {
-                if (!isServiceEnabled(mComponentName)) {
-                    return true; // already disabled
-                }
-                // show a friendly dialog
-                new FriendlyWarningDialogFragment()
-                        .setServiceInfo(mComponentName, label, this)
-                        .show(getFragmentManager(), "friendlydialog");
-                return false;
-            } else {
-                if (isServiceEnabled(mComponentName)) {
-                    return true; // already enabled
-                }
-                // show a scary dialog
-                new ScaryWarningDialogFragment()
-                        .setServiceInfo(mComponentName, label, this)
-                        .show(getFragmentManager(), "dialog");
-                return false;
+    protected void setIntentAndFinish(boolean appChanged) {
+        Log.i(TAG, "appChanged=" + appChanged);
+        Intent intent = new Intent();
+        intent.putExtra(ManageApplications.APP_CHG, appChanged);
+        SettingsActivity sa = (SettingsActivity) getActivity();
+        sa.finishPreferencePanel(Activity.RESULT_OK, intent);
+    }
+
+    protected void retrieveAppEntry() {
+        final Bundle args = getArguments();
+        mPackageName = (args != null) ? args.getString(ARG_PACKAGE_NAME) : null;
+        Intent intent = (args == null) ?
+                getIntent() : (Intent) args.getParcelable("intent");
+        if (mPackageName == null) {
+            if (intent != null && intent.getData() != null) {
+                mPackageName = intent.getData().getSchemeSpecificPart();
             }
-        });
+        }
+        if (intent != null && intent.hasExtra(Intent.EXTRA_USER_HANDLE)) {
+            mUserId = ((UserHandle) intent.getParcelableExtra(
+                    Intent.EXTRA_USER_HANDLE)).getIdentifier();
+        } else {
+            mUserId = UserHandle.myUserId();
+        }
+
+        try {
+            mPackageInfo = mPm.getPackageInfoAsUser(mPackageName,
+                    PackageManager.MATCH_DISABLED_COMPONENTS |
+                            PackageManager.GET_SIGNING_CERTIFICATES |
+                            PackageManager.GET_PERMISSIONS, mUserId);
+        } catch (PackageManager.NameNotFoundException e) {
+            Log.e(TAG, "Exception when retrieving package:" + mPackageName, e);
+        }
     }
 
-    @VisibleForTesting
-    void logSpecialPermissionChange(boolean enable, String packageName) {
-        int logCategory = enable ? SettingsEnums.APP_SPECIAL_PERMISSION_NOTIVIEW_ALLOW
-                : SettingsEnums.APP_SPECIAL_PERMISSION_NOTIVIEW_DENY;
-        FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider().action(getContext(),
-                logCategory, packageName);
-    }
-
+    // Dialogs only have access to the parent fragment, not the controller, so pass the information
+    // along to keep business logic out of this file
     public void disable(final ComponentName cn) {
-        logSpecialPermissionChange(true, cn.getPackageName());
-        mNm.setNotificationListenerAccessGranted(cn, false);
-        AsyncTask.execute(() -> {
-            if (!mNm.isNotificationPolicyAccessGrantedForPackage(
-                    cn.getPackageName())) {
-                mNm.removeAutomaticZenRules(cn.getPackageName());
-            }
-        });
-        refreshUi();
+        final PreferenceScreen screen = getPreferenceScreen();
+        ApprovalPreferenceController controller = use(ApprovalPreferenceController.class);
+        controller.disable(cn);
+        controller.updateState(screen.findPreference(controller.getPreferenceKey()));
     }
 
     protected void enable(ComponentName cn) {
-        logSpecialPermissionChange(true, cn.getPackageName());
-        mNm.setNotificationListenerAccessGranted(cn, true);
-        refreshUi();
+        final PreferenceScreen screen = getPreferenceScreen();
+        ApprovalPreferenceController controller = use(ApprovalPreferenceController.class);
+        controller.enable(cn);
+        controller.updateState(screen.findPreference(controller.getPreferenceKey()));
     }
 
-    protected boolean isServiceEnabled(ComponentName cn) {
-        return mNm.isNotificationListenerAccessGranted(cn);
-    }
-
+    // To save binder calls, load this in the fragment rather than each preference controller
     protected void loadNotificationListenerService() {
         mIsNls = false;
 
@@ -218,4 +204,14 @@
             }
         }
     }
+
+    @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.notification_access_permission_details;
+    }
+
+    @Override
+    protected String getLogTag() {
+        return TAG;
+    }
 }
\ No newline at end of file
diff --git a/src/com/android/settings/biometrics/BiometricEnrollActivity.java b/src/com/android/settings/biometrics/BiometricEnrollActivity.java
index 4822607..2985a9d 100644
--- a/src/com/android/settings/biometrics/BiometricEnrollActivity.java
+++ b/src/com/android/settings/biometrics/BiometricEnrollActivity.java
@@ -89,6 +89,9 @@
 
         if (this instanceof InternalActivity) {
             mUserId = getIntent().getIntExtra(Intent.EXTRA_USER_ID, UserHandle.myUserId());
+            if (BiometricUtils.containsGatekeeperPasswordHandle(getIntent())) {
+                mGkPwHandle = BiometricUtils.getGatekeeperPasswordHandle(getIntent());
+            }
         }
 
         if (savedInstanceState != null) {
@@ -366,7 +369,7 @@
                     ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN);
         }
         BiometricUtils.launchEnrollForResult(this, intent, 0 /* requestCode */, hardwareAuthToken,
-                null /* gkPwHandle */, mUserId);
+                mGkPwHandle, mUserId);
     }
 
     private void launchCredentialOnlyEnroll() {
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java
index c2dc3ac..23a1133 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java
@@ -48,9 +48,14 @@
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
         mFingerprintManager = Utils.getFingerprintManagerOrNull(this);
+        if (mFingerprintManager == null) {
+            Log.e(TAG, "Null FingerprintManager");
+            finish();
+            return;
+        }
+
+        super.onCreate(savedInstanceState);
 
         mFooterBarMixin = getLayout().getMixin(FooterBarMixin.class);
         mFooterBarMixin.setSecondaryButton(
diff --git a/src/com/android/settings/bluetooth/BluetoothPermissionActivity.java b/src/com/android/settings/bluetooth/BluetoothPermissionActivity.java
index be383dc..e40e30d 100644
--- a/src/com/android/settings/bluetooth/BluetoothPermissionActivity.java
+++ b/src/com/android/settings/bluetooth/BluetoothPermissionActivity.java
@@ -99,9 +99,9 @@
         if (mRequestType == BluetoothDevice.REQUEST_TYPE_PROFILE_CONNECTION) {
             showDialog(getString(R.string.bluetooth_connection_permission_request), mRequestType);
         } else if (mRequestType == BluetoothDevice.REQUEST_TYPE_PHONEBOOK_ACCESS) {
-            showDialog(getString(R.string.bluetooth_phonebook_request), mRequestType);
+            showDialog(getString(R.string.bluetooth_phonebook_access_dialog_title), mRequestType);
         } else if (mRequestType == BluetoothDevice.REQUEST_TYPE_MESSAGE_ACCESS) {
-            showDialog(getString(R.string.bluetooth_map_request), mRequestType);
+            showDialog(getString(R.string.bluetooth_message_access_dialog_title), mRequestType);
         } else if (mRequestType == BluetoothDevice.REQUEST_TYPE_SIM_ACCESS) {
             showDialog(getString(R.string.bluetooth_sap_request), mRequestType);
         }
@@ -136,9 +136,9 @@
             p.mView = createSapDialogView();
             break;
         }
-        p.mPositiveButtonText = getString(R.string.yes);
+        p.mPositiveButtonText = getString(R.string.allow);
         p.mPositiveButtonListener = this;
-        p.mNegativeButtonText = getString(R.string.no);
+        p.mNegativeButtonText = getString(R.string.deny);
         p.mNegativeButtonListener = this;
         mOkButton = mAlert.getButton(DialogInterface.BUTTON_POSITIVE);
         setupAlert();
@@ -168,7 +168,7 @@
         String mRemoteName = Utils.createRemoteName(this, mDevice);
         mView = getLayoutInflater().inflate(R.layout.bluetooth_access, null);
         messageView = (TextView)mView.findViewById(R.id.message);
-        messageView.setText(getString(R.string.bluetooth_pb_acceptance_dialog_text,
+        messageView.setText(getString(R.string.bluetooth_phonebook_access_dialog_content,
                 mRemoteName, mRemoteName));
         return mView;
     }
@@ -177,7 +177,7 @@
         String mRemoteName = Utils.createRemoteName(this, mDevice);
         mView = getLayoutInflater().inflate(R.layout.bluetooth_access, null);
         messageView = (TextView)mView.findViewById(R.id.message);
-        messageView.setText(getString(R.string.bluetooth_map_acceptance_dialog_text,
+        messageView.setText(getString(R.string.bluetooth_message_access_dialog_content,
                 mRemoteName, mRemoteName));
         return mView;
     }
diff --git a/src/com/android/settings/bluetooth/BluetoothPermissionRequest.java b/src/com/android/settings/bluetooth/BluetoothPermissionRequest.java
index 684f90f..7fac4991c 100644
--- a/src/com/android/settings/bluetooth/BluetoothPermissionRequest.java
+++ b/src/com/android/settings/bluetooth/BluetoothPermissionRequest.java
@@ -140,13 +140,13 @@
                 switch (mRequestType) {
                     case BluetoothDevice.REQUEST_TYPE_PHONEBOOK_ACCESS:
                         title = context.getString(R.string.bluetooth_phonebook_request);
-                        message = context.getString(R.string.bluetooth_pb_acceptance_dialog_text,
-                                deviceAlias, deviceAlias);
+                        message = context.getString(
+                                R.string.bluetooth_phonebook_access_notification_content);
                         break;
                     case BluetoothDevice.REQUEST_TYPE_MESSAGE_ACCESS:
                         title = context.getString(R.string.bluetooth_map_request);
-                        message = context.getString(R.string.bluetooth_map_acceptance_dialog_text,
-                                deviceAlias, deviceAlias);
+                        message = context.getString(
+                                R.string.bluetooth_message_access_notification_content);
                         break;
                     case BluetoothDevice.REQUEST_TYPE_SIM_ACCESS:
                         title = context.getString(R.string.bluetooth_sap_request);
@@ -172,6 +172,7 @@
                         .setContentTitle(title)
                         .setTicker(message)
                         .setContentText(message)
+                        .setStyle(new Notification.BigTextStyle().bigText(message))
                         .setSmallIcon(android.R.drawable.stat_sys_data_bluetooth)
                         .setAutoCancel(true)
                         .setPriority(Notification.PRIORITY_MAX)
diff --git a/src/com/android/settings/core/gateway/SettingsGateway.java b/src/com/android/settings/core/gateway/SettingsGateway.java
index 25be4fa..2c21771 100644
--- a/src/com/android/settings/core/gateway/SettingsGateway.java
+++ b/src/com/android/settings/core/gateway/SettingsGateway.java
@@ -53,6 +53,7 @@
 import com.android.settings.applications.specialaccess.notificationaccess.NotificationAccessDetails;
 import com.android.settings.applications.specialaccess.pictureinpicture.PictureInPictureDetails;
 import com.android.settings.applications.specialaccess.pictureinpicture.PictureInPictureSettings;
+import com.android.settings.applications.specialaccess.premiumsms.PremiumSmsAccess;
 import com.android.settings.applications.specialaccess.vrlistener.VrListenerSettings;
 import com.android.settings.applications.specialaccess.zenaccess.ZenAccessDetails;
 import com.android.settings.backup.PrivacySettings;
@@ -270,6 +271,7 @@
             VrListenerSettings.class.getName(),
             PictureInPictureSettings.class.getName(),
             PictureInPictureDetails.class.getName(),
+            PremiumSmsAccess.class.getName(),
             ManagedProfileSettings.class.getName(),
             ChooseAccountFragment.class.getName(),
             IccLockSettings.class.getName(),
diff --git a/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProvider.java b/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProvider.java
index b755ba7..fe97759 100644
--- a/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProvider.java
+++ b/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProvider.java
@@ -21,6 +21,7 @@
 import android.content.SharedPreferences;
 
 import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
 
 /** Interface should be implemented if you have added new suggestions */
 public interface SuggestionFeatureProvider {
@@ -42,4 +43,9 @@
      * Returns the {@link SharedPreferences} that holds metadata for suggestions.
      */
     SharedPreferences getSharedPrefs(Context context);
+
+    /**
+     * Returns the class of {@link Fragment} that supports contextual suggestion.
+     */
+    Class<? extends Fragment> getContextualSuggestionFragment();
 }
diff --git a/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImpl.java b/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImpl.java
index 60a8c54..deb1c7e 100644
--- a/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImpl.java
+++ b/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImpl.java
@@ -22,6 +22,7 @@
 import android.content.SharedPreferences;
 
 import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
 
 import com.android.settings.Settings.NightDisplaySuggestionActivity;
 import com.android.settings.biometrics.fingerprint.FingerprintEnrollSuggestionActivity;
@@ -86,6 +87,11 @@
         return context.getSharedPreferences(SHARED_PREF_FILENAME, Context.MODE_PRIVATE);
     }
 
+    @Override
+    public Class<? extends Fragment> getContextualSuggestionFragment() {
+        return null;
+    }
+
     public SuggestionFeatureProviderImpl(Context context) {
         final Context appContext = context.getApplicationContext();
         mMetricsFeatureProvider = FeatureFactory.getFactory(appContext)
diff --git a/src/com/android/settings/datausage/DataUsageSummaryPreference.java b/src/com/android/settings/datausage/DataUsageSummaryPreference.java
index 93df2f1..9cbb921 100644
--- a/src/com/android/settings/datausage/DataUsageSummaryPreference.java
+++ b/src/com/android/settings/datausage/DataUsageSummaryPreference.java
@@ -32,6 +32,7 @@
 import android.util.AttributeSet;
 import android.view.View;
 import android.widget.Button;
+import android.widget.LinearLayout;
 import android.widget.ProgressBar;
 import android.widget.TextView;
 
@@ -156,24 +157,24 @@
     public void onBindViewHolder(PreferenceViewHolder holder) {
         super.onBindViewHolder(holder);
 
-        ProgressBar bar = (ProgressBar) holder.findViewById(R.id.determinateBar);
+        ProgressBar bar = getProgressBar(holder);
         if (mChartEnabled && (!TextUtils.isEmpty(mStartLabel) || !TextUtils.isEmpty(mEndLabel))) {
             bar.setVisibility(View.VISIBLE);
-            holder.findViewById(R.id.label_bar).setVisibility(View.VISIBLE);
+            getLabelBar(holder).setVisibility(View.VISIBLE);
             bar.setProgress((int) (mProgress * 100));
-            ((TextView) holder.findViewById(android.R.id.text1)).setText(mStartLabel);
-            ((TextView) holder.findViewById(android.R.id.text2)).setText(mEndLabel);
+            (getLabel1(holder)).setText(mStartLabel);
+            (getLabel2(holder)).setText(mEndLabel);
         } else {
             bar.setVisibility(View.GONE);
-            holder.findViewById(R.id.label_bar).setVisibility(View.GONE);
+            getLabelBar(holder).setVisibility(View.GONE);
         }
 
         updateDataUsageLabels(holder);
 
-        TextView usageTitle = (TextView) holder.findViewById(R.id.usage_title);
-        TextView carrierInfo = (TextView) holder.findViewById(R.id.carrier_and_update);
-        Button launchButton = (Button) holder.findViewById(R.id.launch_mdp_app_button);
-        TextView limitInfo = (TextView) holder.findViewById(R.id.data_limits);
+        TextView usageTitle = getUsageTitle(holder);
+        TextView carrierInfo = getCarrierInfo(holder);
+        Button launchButton = getLaunchButton(holder);
+        TextView limitInfo = getDataLimits(holder);
 
         if (mWifiMode && mSingleWifi) {
             updateCycleTimeText(holder);
@@ -187,7 +188,7 @@
         } else if (mWifiMode) {
             usageTitle.setText(R.string.data_usage_wifi_title);
             usageTitle.setVisibility(View.VISIBLE);
-            TextView cycleTime = (TextView) holder.findViewById(R.id.cycle_left_time);
+            TextView cycleTime = getCycleTime(holder);
             cycleTime.setText(mUsagePeriod);
             carrierInfo.setVisibility(View.GONE);
             limitInfo.setVisibility(View.GONE);
@@ -235,7 +236,7 @@
     }
 
     private void updateDataUsageLabels(PreferenceViewHolder holder) {
-        TextView usageNumberField = (TextView) holder.findViewById(R.id.data_usage_view);
+        TextView usageNumberField = getDataUsed(holder);
 
         final Formatter.BytesResult usedResult = Formatter.formatBytes(getContext().getResources(),
                 mDataplanUse, Formatter.FLAG_CALCULATE_ROUNDED | Formatter.FLAG_IEC_UNITS);
@@ -250,11 +251,10 @@
                 TextUtils.expandTemplate(template, usageNumberText, usedResult.units);
         usageNumberField.setText(usageText);
 
-        final MeasurableLinearLayout layout =
-                (MeasurableLinearLayout) holder.findViewById(R.id.usage_layout);
+        final MeasurableLinearLayout layout = getLayout(holder);
 
         if (mHasMobileData && mNumPlans >= 0 && mDataplanSize > 0L) {
-            TextView usageRemainingField = (TextView) holder.findViewById(R.id.data_remaining_view);
+            TextView usageRemainingField = getDataRemaining(holder);
             long dataRemaining = mDataplanSize - mDataplanUse;
             if (dataRemaining >= 0) {
                 usageRemainingField.setText(
@@ -276,7 +276,7 @@
     }
 
     private void updateCycleTimeText(PreferenceViewHolder holder) {
-        TextView cycleTime = (TextView) holder.findViewById(R.id.cycle_left_time);
+        TextView cycleTime = getCycleTime(holder);
 
         // Takes zero as a special case which value is never set.
         if (mCycleEndTimeMs == CYCLE_TIME_UNINITIAL_VALUE) {
@@ -362,9 +362,68 @@
     }
 
     @VisibleForTesting
-    long getHistoricalUsageLevel() {
+    protected long getHistoricalUsageLevel() {
         final DataUsageController controller = new DataUsageController(getContext());
         return controller.getHistoricalUsageLevel(NetworkTemplate.buildTemplateWifiWildcard());
     }
 
+    @VisibleForTesting
+    protected TextView getUsageTitle(PreferenceViewHolder holder) {
+        return (TextView) holder.findViewById(R.id.usage_title);
+    }
+
+    @VisibleForTesting
+    protected TextView getCycleTime(PreferenceViewHolder holder) {
+        return (TextView) holder.findViewById(R.id.cycle_left_time);
+    }
+
+    @VisibleForTesting
+    protected TextView getCarrierInfo(PreferenceViewHolder holder) {
+        return (TextView) holder.findViewById(R.id.carrier_and_update);
+    }
+
+    @VisibleForTesting
+    protected TextView getDataLimits(PreferenceViewHolder holder) {
+        return (TextView) holder.findViewById(R.id.data_limits);
+    }
+
+    @VisibleForTesting
+    protected TextView getDataUsed(PreferenceViewHolder holder) {
+        return (TextView) holder.findViewById(R.id.data_usage_view);
+    }
+
+    @VisibleForTesting
+    protected TextView getDataRemaining(PreferenceViewHolder holder) {
+        return (TextView) holder.findViewById(R.id.data_remaining_view);
+    }
+
+    @VisibleForTesting
+    protected Button getLaunchButton(PreferenceViewHolder holder) {
+        return (Button) holder.findViewById(R.id.launch_mdp_app_button);
+    }
+
+    @VisibleForTesting
+    protected LinearLayout getLabelBar(PreferenceViewHolder holder) {
+        return (LinearLayout) holder.findViewById(R.id.label_bar);
+    }
+
+    @VisibleForTesting
+    protected TextView getLabel1(PreferenceViewHolder holder) {
+        return (TextView) holder.findViewById(android.R.id.text1);
+    }
+
+    @VisibleForTesting
+    protected TextView getLabel2(PreferenceViewHolder holder) {
+        return (TextView) holder.findViewById(android.R.id.text2);
+    }
+
+    @VisibleForTesting
+    protected ProgressBar getProgressBar(PreferenceViewHolder holder) {
+        return (ProgressBar) holder.findViewById(R.id.determinateBar);
+    }
+
+    @VisibleForTesting
+    protected MeasurableLinearLayout getLayout(PreferenceViewHolder holder) {
+        return (MeasurableLinearLayout) holder.findViewById(R.id.usage_layout);
+    }
 }
diff --git a/src/com/android/settings/datausage/OWNERS b/src/com/android/settings/datausage/OWNERS
new file mode 100644
index 0000000..49449ec
--- /dev/null
+++ b/src/com/android/settings/datausage/OWNERS
@@ -0,0 +1,5 @@
+# Default reviewers for this and subdirectories.
+andychou@google.com
+goldmanj@google.com
+bonianchen@google.com
+wengsu@google.com
diff --git a/src/com/android/settings/development/WirelessDebuggingPreferenceController.java b/src/com/android/settings/development/WirelessDebuggingPreferenceController.java
index 592028c..2d4e889 100644
--- a/src/com/android/settings/development/WirelessDebuggingPreferenceController.java
+++ b/src/com/android/settings/development/WirelessDebuggingPreferenceController.java
@@ -20,7 +20,8 @@
 import android.database.ContentObserver;
 import android.debug.IAdbManager;
 import android.net.ConnectivityManager;
-import android.net.NetworkInfo;
+import android.net.Network;
+import android.net.NetworkCapabilities;
 import android.net.Uri;
 import android.os.Handler;
 import android.os.Looper;
@@ -141,10 +142,16 @@
     public static boolean isWifiConnected(Context context) {
         ConnectivityManager cm = (ConnectivityManager) context.getSystemService(
                 Context.CONNECTIVITY_SERVICE);
-        if (cm != null) {
-            NetworkInfo info = cm.getActiveNetworkInfo();
-            if (info != null && info.isConnected()) {
-                return info.getType() == ConnectivityManager.TYPE_WIFI;
+        if (cm == null) {
+            return false;
+        }
+        for (Network network : cm.getAllNetworks()) {
+            final NetworkCapabilities nc = cm.getNetworkCapabilities(network);
+            if (nc == null) {
+                continue;
+            }
+            if (nc.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
+                return true;
             }
         }
         return false;
diff --git a/src/com/android/settings/development/qstile/DevelopmentTiles.java b/src/com/android/settings/development/qstile/DevelopmentTiles.java
index e64c8c0..203a688 100644
--- a/src/com/android/settings/development/qstile/DevelopmentTiles.java
+++ b/src/com/android/settings/development/qstile/DevelopmentTiles.java
@@ -48,6 +48,8 @@
 import androidx.annotation.VisibleForTesting;
 
 import com.android.internal.app.LocalePicker;
+import com.android.internal.inputmethod.Completable;
+import com.android.internal.inputmethod.ResultCallbacks;
 import com.android.internal.statusbar.IStatusBarService;
 import com.android.internal.view.IInputMethodManager;
 import com.android.settings.R;
@@ -260,9 +262,12 @@
             return false;
         }
 
-        private boolean isImeTraceEnabled() {
+        @VisibleForTesting
+        boolean isImeTraceEnabled() {
             try {
-                return mInputMethodManager.isImeTraceEnabled();
+                final Completable.Boolean value = Completable.createBoolean();
+                mInputMethodManager.isImeTraceEnabled(ResultCallbacks.of(value));
+                return Completable.getResult(value);
             } catch (RemoteException e) {
                 Log.e(TAG, "Could not get ime trace status, defaulting to false.", e);
             }
diff --git a/src/com/android/settings/deviceinfo/DeviceNamePreferenceController.java b/src/com/android/settings/deviceinfo/DeviceNamePreferenceController.java
index 6ada11b..e6d9dfd 100644
--- a/src/com/android/settings/deviceinfo/DeviceNamePreferenceController.java
+++ b/src/com/android/settings/deviceinfo/DeviceNamePreferenceController.java
@@ -25,6 +25,7 @@
 import android.provider.Settings;
 import android.text.SpannedString;
 
+import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
 
@@ -44,6 +45,8 @@
         OnSaveInstanceState,
         OnCreate {
     private static final String KEY_PENDING_DEVICE_NAME = "key_pending_device_name";
+    @VisibleForTesting
+    static final int RES_SHOW_DEVICE_NAME_BOOL = R.bool.config_show_device_name;
     private String mDeviceName;
     protected WifiManager mWifiManager;
     private final BluetoothAdapter mBluetoothAdapter;
diff --git a/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceController.java b/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceController.java
index 955c60c..e5fd3da 100644
--- a/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceController.java
@@ -18,6 +18,7 @@
 
 import android.content.Context;
 import android.os.SystemProperties;
+import android.text.TextUtils;
 
 import com.android.settings.R;
 import com.android.settings.core.BasePreferenceController;
@@ -31,8 +32,8 @@
 
     @Override
     public int getAvailabilityStatus() {
-        return mContext.getResources().getBoolean(R.bool.config_show_device_model)
-                ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+        return mContext.getResources().getBoolean(R.bool.config_show_device_model) &&
+                !TextUtils.isEmpty(getSummary()) ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
     }
 
     @Override
diff --git a/src/com/android/settings/deviceinfo/legal/ModuleLicenseProvider.java b/src/com/android/settings/deviceinfo/legal/ModuleLicenseProvider.java
index 6731c69..5f72945 100644
--- a/src/com/android/settings/deviceinfo/legal/ModuleLicenseProvider.java
+++ b/src/com/android/settings/deviceinfo/legal/ModuleLicenseProvider.java
@@ -62,7 +62,7 @@
 
     @Override
     public String getType(Uri uri) {
-        checkUri(getContext(), uri);
+        checkUri(getModuleContext(), uri);
         return LICENSE_FILE_MIME_TYPE;
     }
 
@@ -83,7 +83,7 @@
 
     @Override
     public ParcelFileDescriptor openFile(Uri uri, String mode) {
-        final Context context = getContext();
+        final Context context = getModuleContext();
         checkUri(context, uri);
         Preconditions.checkArgument("r".equals(mode), "Read is the only supported mode");
 
@@ -191,4 +191,10 @@
     private static SharedPreferences getPrefs(Context context) {
         return context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
     }
+
+    // Method to allow context injection for testing purposes.
+    @VisibleForTesting
+    protected Context getModuleContext() {
+        return getContext();
+    }
 }
diff --git a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java
index 10409fc..414039b 100644
--- a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java
+++ b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java
@@ -16,6 +16,8 @@
 
 package com.android.settings.deviceinfo.simstatus;
 
+import static androidx.lifecycle.Lifecycle.Event;
+
 import android.annotation.Nullable;
 import android.content.BroadcastReceiver;
 import android.content.ComponentName;
@@ -54,21 +56,23 @@
 
 import androidx.annotation.NonNull;
 import androidx.annotation.VisibleForTesting;
+import androidx.lifecycle.LifecycleObserver;
+import androidx.lifecycle.OnLifecycleEvent;
 
 import com.android.settings.R;
 import com.android.settingslib.DeviceInfoUtils;
 import com.android.settingslib.Utils;
 import com.android.settingslib.core.lifecycle.Lifecycle;
-import com.android.settingslib.core.lifecycle.LifecycleObserver;
-import com.android.settingslib.core.lifecycle.events.OnPause;
-import com.android.settingslib.core.lifecycle.events.OnResume;
 import com.android.settingslib.utils.ThreadUtils;
 
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicReference;
 
-public class SimStatusDialogController implements LifecycleObserver, OnResume, OnPause {
+/**
+ * Controller for Sim Status information within the About Phone Settings page.
+ */
+public class SimStatusDialogController implements LifecycleObserver {
 
     private final static String TAG = "SimStatusDialogCtrl";
 
@@ -263,7 +267,10 @@
         }
     }
 
-    @Override
+    /**
+     * OnResume lifecycle event, resume listening for phone state or subscription changes.
+     */
+    @OnLifecycleEvent(Event.ON_RESUME)
     public void onResume() {
         if (mSubscriptionInfo == null) {
             return;
@@ -288,7 +295,10 @@
         mIsRegisteredListener = true;
     }
 
-    @Override
+    /**
+     * onPause lifecycle event, no longer listen for phone state or subscription changes.
+     */
+    @OnLifecycleEvent(Event.ON_PAUSE)
     public void onPause() {
         if (mSubscriptionInfo == null) {
             if (mIsRegisteredListener) {
@@ -318,7 +328,8 @@
         mDialog.setText(NETWORK_PROVIDER_VALUE_ID, carrierName);
     }
 
-    private void updatePhoneNumber() {
+    @VisibleForTesting
+    protected void updatePhoneNumber() {
         // If formattedNumber is null or empty, it'll display as "Unknown".
         mDialog.setText(PHONE_NUMBER_VALUE_ID,
                 DeviceInfoUtils.getBidiFormattedPhoneNumber(mContext, mSubscriptionInfo));
@@ -592,7 +603,7 @@
     }
 
     @VisibleForTesting
-    void requestForUpdateEid() {
+    protected void requestForUpdateEid() {
         ThreadUtils.postOnBackgroundThread(() -> {
             final AtomicReference<String> eid = getEid(mSlotIndex);
             ThreadUtils.postOnMainThread(() -> updateEid(eid));
@@ -600,7 +611,7 @@
     }
 
     @VisibleForTesting
-    AtomicReference<String> getEid(int slotIndex) {
+    protected AtomicReference<String> getEid(int slotIndex) {
         boolean shouldHaveEid = false;
         String eid = null;
         if (mTelephonyManager.getActiveModemCount() > MAX_PHONE_COUNT_SINGLE_SIM) {
@@ -638,7 +649,7 @@
     }
 
     @VisibleForTesting
-    void updateEid(AtomicReference<String> eid) {
+    protected void updateEid(AtomicReference<String> eid) {
         if (eid == null) {
             mDialog.removeSettingFromScreen(EID_INFO_LABEL_ID);
             mDialog.removeSettingFromScreen(EID_INFO_VALUE_ID);
@@ -753,7 +764,7 @@
     }
 
     @VisibleForTesting
-    PhoneStateListener getPhoneStateListener() {
+    protected PhoneStateListener getPhoneStateListener() {
         return new PhoneStateListener() {
             @Override
             public void onDataConnectionStateChanged(int state) {
diff --git a/src/com/android/settings/display/NightDisplayPreference.java b/src/com/android/settings/display/NightDisplayPreference.java
deleted file mode 100644
index 7020c49..0000000
--- a/src/com/android/settings/display/NightDisplayPreference.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the
- * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the specific language governing
- * permissions and limitations under the License.
- */
-
-package com.android.settings.display;
-
-import android.content.Context;
-import android.hardware.display.ColorDisplayManager;
-import android.hardware.display.NightDisplayListener;
-import android.util.AttributeSet;
-
-import androidx.preference.SwitchPreference;
-
-import java.time.LocalTime;
-
-public class NightDisplayPreference extends SwitchPreference
-        implements NightDisplayListener.Callback {
-
-    private ColorDisplayManager mColorDisplayManager;
-    private NightDisplayListener mNightDisplayListener;
-    private NightDisplayTimeFormatter mTimeFormatter;
-
-    public NightDisplayPreference(Context context, AttributeSet attrs) {
-        super(context, attrs);
-
-        mColorDisplayManager = context.getSystemService(ColorDisplayManager.class);
-        mNightDisplayListener = new NightDisplayListener(context);
-        mTimeFormatter = new NightDisplayTimeFormatter(context);
-    }
-
-    @Override
-    public void onAttached() {
-        super.onAttached();
-
-        // Listen for changes only while attached.
-        mNightDisplayListener.setCallback(this);
-
-        // Update the summary since the state may have changed while not attached.
-        updateSummary();
-    }
-
-    @Override
-    public void onDetached() {
-        super.onDetached();
-
-        // Stop listening for state changes.
-        mNightDisplayListener.setCallback(null);
-    }
-
-    @Override
-    public void onActivated(boolean activated) {
-        updateSummary();
-    }
-
-    @Override
-    public void onAutoModeChanged(int autoMode) {
-        updateSummary();
-    }
-
-    @Override
-    public void onCustomStartTimeChanged(LocalTime startTime) {
-        updateSummary();
-    }
-
-    @Override
-    public void onCustomEndTimeChanged(LocalTime endTime) {
-        updateSummary();
-    }
-
-    private void updateSummary() {
-        setSummary(mTimeFormatter.getAutoModeTimeSummary(getContext(), mColorDisplayManager));
-    }
-}
diff --git a/src/com/android/settings/display/NightDisplayPreferenceController.java b/src/com/android/settings/display/NightDisplayPreferenceController.java
index 6891d65..003373c 100644
--- a/src/com/android/settings/display/NightDisplayPreferenceController.java
+++ b/src/com/android/settings/display/NightDisplayPreferenceController.java
@@ -15,18 +15,33 @@
 
 import android.content.Context;
 import android.hardware.display.ColorDisplayManager;
+import android.hardware.display.NightDisplayListener;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
 
 import com.android.settings.R;
-import com.android.settings.core.PreferenceControllerMixin;
-import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settings.core.TogglePreferenceController;
+import com.android.settings.widget.PrimarySwitchPreference;
+import com.android.settingslib.core.lifecycle.LifecycleObserver;
+import com.android.settingslib.core.lifecycle.events.OnStart;
+import com.android.settingslib.core.lifecycle.events.OnStop;
 
-public class NightDisplayPreferenceController extends AbstractPreferenceController implements
-        PreferenceControllerMixin {
+/** A controller can control the behavior of night display setting. */
+public class NightDisplayPreferenceController extends TogglePreferenceController
+        implements NightDisplayListener.Callback, LifecycleObserver, OnStart, OnStop {
 
-    private static final String KEY_NIGHT_DISPLAY = "night_display";
+    private final ColorDisplayManager mColorDisplayManager;
+    private final NightDisplayListener mNightDisplayListener;
+    private final NightDisplayTimeFormatter mTimeFormatter;
+    private PrimarySwitchPreference mPreference;
 
-    public NightDisplayPreferenceController(Context context) {
-        super(context);
+    public NightDisplayPreferenceController(Context context, String key) {
+        super(context, key);
+
+        mColorDisplayManager = context.getSystemService(ColorDisplayManager.class);
+        mNightDisplayListener = new NightDisplayListener(context);
+        mTimeFormatter = new NightDisplayTimeFormatter(context);
     }
 
     public static boolean isSuggestionComplete(Context context) {
@@ -41,12 +56,47 @@
     }
 
     @Override
-    public boolean isAvailable() {
-        return ColorDisplayManager.isNightDisplayAvailable(mContext);
+    public void onStart() {
+        // Listen for changes only while attached.
+        mNightDisplayListener.setCallback(this);
     }
 
     @Override
-    public String getPreferenceKey() {
-        return KEY_NIGHT_DISPLAY;
+    public void onStop() {
+        // Stop listening for state changes.
+        mNightDisplayListener.setCallback(null);
+    }
+
+    @Override
+    public void displayPreference(PreferenceScreen screen) {
+        super.displayPreference(screen);
+        mPreference = screen.findPreference(getPreferenceKey());
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return ColorDisplayManager.isNightDisplayAvailable(mContext)
+                ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+    }
+
+    @Override
+    public boolean isChecked() {
+        return mColorDisplayManager.isNightDisplayActivated();
+    }
+
+    @Override
+    public boolean setChecked(boolean isChecked) {
+        return mColorDisplayManager.setNightDisplayActivated(isChecked);
+    }
+
+    @Override
+    public void updateState(Preference preference) {
+        super.updateState(preference);
+        preference.setSummary(mTimeFormatter.getAutoModeSummary(mContext, mColorDisplayManager));
+    }
+
+    @Override
+    public void onActivated(boolean activated) {
+        updateState(mPreference);
     }
 }
\ No newline at end of file
diff --git a/src/com/android/settings/display/NightDisplayTimeFormatter.java b/src/com/android/settings/display/NightDisplayTimeFormatter.java
index 1449ac1..aa715de 100644
--- a/src/com/android/settings/display/NightDisplayTimeFormatter.java
+++ b/src/com/android/settings/display/NightDisplayTimeFormatter.java
@@ -17,8 +17,8 @@
 package com.android.settings.display;
 
 import android.content.Context;
-
 import android.hardware.display.ColorDisplayManager;
+
 import com.android.settings.R;
 
 import java.text.DateFormat;
@@ -45,13 +45,6 @@
         return mTimeFormatter.format(c.getTime());
     }
 
-    public String getAutoModeTimeSummary(Context context, ColorDisplayManager manager) {
-        final int summaryFormatResId =
-                manager.isNightDisplayActivated() ? R.string.night_display_summary_on
-                        : R.string.night_display_summary_off;
-        return context.getString(summaryFormatResId, getAutoModeSummary(context, manager));
-    }
-
     public String getAutoModeSummary(Context context, ColorDisplayManager manager) {
         final boolean isActivated = manager.isNightDisplayActivated();
         final int autoMode = manager.getNightDisplayAutoMode();
diff --git a/src/com/android/settings/display/ScreenTimeoutPreferenceController.java b/src/com/android/settings/display/ScreenTimeoutPreferenceController.java
index 2e39e8e..c44376c 100644
--- a/src/com/android/settings/display/ScreenTimeoutPreferenceController.java
+++ b/src/com/android/settings/display/ScreenTimeoutPreferenceController.java
@@ -26,10 +26,13 @@
 import android.os.UserManager;
 import android.provider.Settings;
 
+import androidx.preference.Preference;
+
 import com.android.settings.R;
 import com.android.settings.core.BasePreferenceController;
 import com.android.settingslib.RestrictedLockUtils;
 import com.android.settingslib.RestrictedLockUtilsInternal;
+import com.android.settingslib.RestrictedPreference;
 
 /**
  * The controller of {@link ScreenTimeoutSettings}.
@@ -43,39 +46,58 @@
 
     @Override
     public int getAvailabilityStatus() {
-        return isDisableByAdmin() ? UNSUPPORTED_ON_DEVICE : AVAILABLE;
+        return AVAILABLE;
     }
 
     @Override
-    public CharSequence getSummary() {
-        if (isDisableByAdmin()) {
-            return mContext.getString(com.android.settings.R.string.disabled_by_policy_title);
-        } else {
-            final long currentTimeout = getCurrentScreenTimeout();
-            final CharSequence[] timeoutEntries = mContext.getResources().getStringArray(
-                    R.array.screen_timeout_entries);
-            final CharSequence[] timeoutValues = mContext.getResources().getStringArray(
-                    R.array.screen_timeout_values);
-            final CharSequence description = TimeoutPreferenceController.getTimeoutDescription(
-                    currentTimeout, timeoutEntries, timeoutValues);
-            return mContext.getString(R.string.screen_timeout_summary, description);
+    public void updateState(Preference preference) {
+        final RestrictedLockUtils.EnforcedAdmin admin = getEnforcedAdmin();
+        if (admin != null) {
+            preference.setEnabled(false);
+            ((RestrictedPreference) preference).setDisabledByAdmin(admin);
         }
+        preference.setSummary(getTimeoutSummary());
     }
 
-    private boolean isDisableByAdmin() {
+    private CharSequence getTimeoutSummary() {
+        final long currentTimeout = getCurrentScreenTimeout();
+        final CharSequence[] timeoutEntries = mContext.getResources().getStringArray(
+                R.array.screen_timeout_entries);
+        final CharSequence[] timeoutValues = mContext.getResources().getStringArray(
+                R.array.screen_timeout_values);
+        final CharSequence description = getTimeoutDescription(
+                currentTimeout, timeoutEntries, timeoutValues);
+        return mContext.getString(R.string.screen_timeout_summary, description);
+    }
+
+    private RestrictedLockUtils.EnforcedAdmin getEnforcedAdmin() {
         final DevicePolicyManager dpm = mContext.getSystemService(DevicePolicyManager.class);
         if (dpm != null) {
-            final RestrictedLockUtils.EnforcedAdmin admin =
-                    RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
-                            mContext, UserManager.DISALLOW_CONFIG_SCREEN_TIMEOUT,
-                            UserHandle.myUserId());
-            return admin != null;
+            return RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
+                    mContext, UserManager.DISALLOW_CONFIG_SCREEN_TIMEOUT,
+                    UserHandle.myUserId());
         }
-        return false;
+        return null;
     }
 
     private long getCurrentScreenTimeout() {
         return Settings.System.getLong(mContext.getContentResolver(),
                 SCREEN_OFF_TIMEOUT, FALLBACK_SCREEN_TIMEOUT_VALUE);
     }
+
+    private static CharSequence getTimeoutDescription(
+            long currentTimeout, CharSequence[] entries, CharSequence[] values) {
+        if (currentTimeout < 0 || entries == null || values == null
+                || values.length != entries.length) {
+            return null;
+        }
+
+        for (int i = 0; i < values.length; i++) {
+            long timeout = Long.parseLong(values[i].toString());
+            if (currentTimeout == timeout) {
+                return entries[i];
+            }
+        }
+        return null;
+    }
 }
diff --git a/src/com/android/settings/display/ScreenTimeoutSettings.java b/src/com/android/settings/display/ScreenTimeoutSettings.java
index 290e4ff..a90c886 100644
--- a/src/com/android/settings/display/ScreenTimeoutSettings.java
+++ b/src/com/android/settings/display/ScreenTimeoutSettings.java
@@ -28,6 +28,7 @@
 import android.provider.Settings;
 import android.util.Log;
 
+import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
 
 import com.android.settings.R;
@@ -36,13 +37,13 @@
 import com.android.settings.support.actionbar.HelpMenuController;
 import com.android.settings.support.actionbar.HelpResourceProvider;
 import com.android.settings.widget.RadioButtonPickerFragment;
-import com.android.settings.widget.RadioButtonPreferenceWithExtraWidget;
 import com.android.settingslib.RestrictedLockUtils;
 import com.android.settingslib.RestrictedLockUtilsInternal;
 import com.android.settingslib.search.SearchIndexable;
 import com.android.settingslib.search.SearchIndexableRaw;
 import com.android.settingslib.widget.CandidateInfo;
 import com.android.settingslib.widget.FooterPreference;
+import com.android.settingslib.widget.RadioButtonPreference;
 
 import com.google.common.annotations.VisibleForTesting;
 
@@ -59,9 +60,17 @@
     /** If there is no setting in the provider, use this. */
     public static final int FALLBACK_SCREEN_TIMEOUT_VALUE = 30000;
 
+    private static final int DEFAULT_ORDER_OF_LOWEST_PREFERENCE = Integer.MAX_VALUE - 1;
+
     private CharSequence[] mInitialEntries;
     private CharSequence[] mInitialValues;
     private FooterPreference mPrivacyPreference;
+
+    @VisibleForTesting
+    RestrictedLockUtils.EnforcedAdmin mAdmin;
+    @VisibleForTesting
+    Preference mDisableOptionsPreference;
+
     @VisibleForTesting
     AdaptiveSleepPermissionPreferenceController mAdaptiveSleepPermissionController;
 
@@ -88,6 +97,15 @@
         mPrivacyPreference.setTitle(R.string.adaptive_sleep_privacy);
         mPrivacyPreference.setSelectable(false);
         mPrivacyPreference.setLayoutResource(R.layout.preference_footer);
+
+        mDisableOptionsPreference = new FooterPreference(context);
+        mDisableOptionsPreference.setLayoutResource(R.layout.preference_footer);
+        mDisableOptionsPreference.setTitle(R.string.admin_disabled_other_options);
+        mDisableOptionsPreference.setIcon(R.drawable.ic_info_outline_24dp);
+
+        // The 'disabled by admin' preference should always be at the end of the setting page.
+        mDisableOptionsPreference.setOrder(DEFAULT_ORDER_OF_LOWEST_PREFERENCE);
+        mPrivacyPreference.setOrder(DEFAULT_ORDER_OF_LOWEST_PREFERENCE - 1);
     }
 
     @Override
@@ -120,14 +138,22 @@
         final PreferenceScreen screen = getPreferenceScreen();
         screen.removeAll();
 
+        if (mAdmin != null) {
+            mDisableOptionsPreference.setOnPreferenceClickListener(p -> {
+                RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getContext(), mAdmin);
+                return true;
+            });
+            screen.addPreference(mDisableOptionsPreference);
+        }
+
         final List<? extends CandidateInfo> candidateList = getCandidates();
         if (candidateList == null) {
             return;
         }
 
         for (CandidateInfo info : candidateList) {
-            RadioButtonPreferenceWithExtraWidget pref =
-                    new RadioButtonPreferenceWithExtraWidget(getPrefContext());
+            RadioButtonPreference pref =
+                    new RadioButtonPreference(getPrefContext());
             bindPreference(pref, info.getKey(), info, defaultKey);
             screen.addPreference(pref);
         }
@@ -137,6 +163,14 @@
             mAdaptiveSleepController.addToScreen(screen);
             screen.addPreference(mPrivacyPreference);
         }
+
+        if (mAdmin != null) {
+            mDisableOptionsPreference.setOnPreferenceClickListener(p -> {
+                RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getContext(), mAdmin);
+                return true;
+            });
+            screen.addPreference(mDisableOptionsPreference);
+        }
     }
 
     @Override
@@ -178,9 +212,8 @@
         if (dpm == null) {
             return Long.MAX_VALUE;
         }
-        final RestrictedLockUtils.EnforcedAdmin admin =
-                RestrictedLockUtilsInternal.checkIfMaximumTimeToLockIsSet(context);
-        if (admin != null) {
+        mAdmin = RestrictedLockUtilsInternal.checkIfMaximumTimeToLockIsSet(context);
+        if (mAdmin != null) {
             return dpm.getMaximumTimeToLock(null /* admin */, UserHandle.myUserId());
         }
         return Long.MAX_VALUE;
diff --git a/src/com/android/settings/display/TimeoutPreferenceController.java b/src/com/android/settings/display/TimeoutPreferenceController.java
deleted file mode 100644
index 60b7e24..0000000
--- a/src/com/android/settings/display/TimeoutPreferenceController.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the
- * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the specific language governing
- * permissions and limitations under the License.
- */
-package com.android.settings.display;
-
-import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT;
-
-import android.app.admin.DevicePolicyManager;
-import android.content.Context;
-import android.os.UserHandle;
-import android.os.UserManager;
-import android.provider.Settings;
-import android.util.Log;
-
-import androidx.preference.Preference;
-
-import com.android.settings.R;
-import com.android.settings.core.PreferenceControllerMixin;
-import com.android.settingslib.RestrictedLockUtils;
-import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
-import com.android.settingslib.RestrictedLockUtilsInternal;
-import com.android.settingslib.core.AbstractPreferenceController;
-
-public class TimeoutPreferenceController extends AbstractPreferenceController implements
-        PreferenceControllerMixin, Preference.OnPreferenceChangeListener {
-
-    private static final String TAG = "TimeoutPrefContr";
-
-    /** If there is no setting in the provider, use this. */
-    public static final int FALLBACK_SCREEN_TIMEOUT_VALUE = 30000;
-
-    private final String mScreenTimeoutKey;
-
-    public TimeoutPreferenceController(Context context, String key) {
-        super(context);
-        mScreenTimeoutKey = key;
-    }
-
-    @Override
-    public boolean isAvailable() {
-        return true;
-    }
-
-    @Override
-    public String getPreferenceKey() {
-        return mScreenTimeoutKey;
-    }
-
-    @Override
-    public void updateState(Preference preference) {
-        final TimeoutListPreference timeoutListPreference = (TimeoutListPreference) preference;
-        final long currentTimeout = Settings.System.getLong(mContext.getContentResolver(),
-                SCREEN_OFF_TIMEOUT, FALLBACK_SCREEN_TIMEOUT_VALUE);
-        timeoutListPreference.setValue(String.valueOf(currentTimeout));
-        final DevicePolicyManager dpm =
-                (DevicePolicyManager) mContext.getSystemService(Context.DEVICE_POLICY_SERVICE);
-        if (dpm != null) {
-            final RestrictedLockUtils.EnforcedAdmin admin =
-                    RestrictedLockUtilsInternal.checkIfMaximumTimeToLockIsSet(mContext);
-            final long maxTimeout =
-                    dpm.getMaximumTimeToLock(null /* admin */, UserHandle.myUserId());
-            timeoutListPreference.removeUnusableTimeouts(maxTimeout, admin);
-        }
-        updateTimeoutPreferenceDescription(timeoutListPreference,
-                Long.parseLong(timeoutListPreference.getValue()));
-
-        final EnforcedAdmin admin = RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
-                mContext, UserManager.DISALLOW_CONFIG_SCREEN_TIMEOUT,
-                UserHandle.myUserId());
-        if (admin != null) {
-            timeoutListPreference.removeUnusableTimeouts(0/* disable all*/, admin);
-        }
-    }
-
-    @Override
-    public boolean onPreferenceChange(Preference preference, Object newValue) {
-        try {
-            int value = Integer.parseInt((String) newValue);
-            Settings.System.putInt(mContext.getContentResolver(), SCREEN_OFF_TIMEOUT, value);
-            updateTimeoutPreferenceDescription((TimeoutListPreference) preference, value);
-        } catch (NumberFormatException e) {
-            Log.e(TAG, "could not persist screen timeout setting", e);
-        }
-        return true;
-    }
-
-    public static CharSequence getTimeoutDescription(
-            long currentTimeout, CharSequence[] entries, CharSequence[] values) {
-        if (currentTimeout < 0 || entries == null || values == null
-                || values.length != entries.length) {
-            return null;
-        }
-
-        for (int i = 0; i < values.length; i++) {
-            long timeout = Long.parseLong(values[i].toString());
-            if (currentTimeout == timeout) {
-                return entries[i];
-            }
-        }
-        return null;
-    }
-
-    private void updateTimeoutPreferenceDescription(TimeoutListPreference preference,
-            long currentTimeout) {
-        final CharSequence[] entries = preference.getEntries();
-        final CharSequence[] values = preference.getEntryValues();
-        final String summary;
-        if (preference.isDisabledByAdmin()) {
-            summary = mContext.getString(com.android.settings.R.string.disabled_by_policy_title);
-        } else {
-            final CharSequence timeoutDescription = getTimeoutDescription(
-                    currentTimeout, entries, values);
-            summary = timeoutDescription == null
-                    ? ""
-                    : mContext.getString(R.string.screen_timeout_summary, timeoutDescription);
-        }
-        preference.setSummary(summary);
-    }
-
-}
diff --git a/src/com/android/settings/display/TopLevelWallpaperPreferenceController.java b/src/com/android/settings/display/TopLevelWallpaperPreferenceController.java
new file mode 100644
index 0000000..beef4f3
--- /dev/null
+++ b/src/com/android/settings/display/TopLevelWallpaperPreferenceController.java
@@ -0,0 +1,136 @@
+/*
+ * 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.settings.display;
+
+import static android.os.UserManager.DISALLOW_SET_WALLPAPER;
+
+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.text.TextUtils;
+import android.util.Log;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
+
+import com.android.settings.R;
+import com.android.settings.core.BasePreferenceController;
+import com.android.settingslib.RestrictedLockUtilsInternal;
+import com.android.settingslib.RestrictedTopLevelPreference;
+
+import java.util.List;
+
+/** This controller manages the wallpaper preference of the top level page. */
+public class TopLevelWallpaperPreferenceController extends BasePreferenceController {
+    private static final String TAG = "TopLevelWallpaperPreferenceController";
+    private static final String LAUNCHED_SETTINGS = "app_launched_settings";
+
+    private final String mWallpaperPackage;
+    private final String mWallpaperClass;
+    private final String mStylesAndWallpaperClass;
+    private final String mWallpaperLaunchExtra;
+
+    public TopLevelWallpaperPreferenceController(Context context, String key) {
+        super(context, key);
+        mWallpaperPackage = mContext.getString(R.string.config_wallpaper_picker_package);
+        mWallpaperClass = mContext.getString(R.string.config_wallpaper_picker_class);
+        mStylesAndWallpaperClass =
+                mContext.getString(R.string.config_styles_and_wallpaper_picker_class);
+        mWallpaperLaunchExtra = mContext.getString(R.string.config_wallpaper_picker_launch_extra);
+    }
+
+    @Override
+    public void displayPreference(PreferenceScreen screen) {
+        super.displayPreference(screen);
+        Preference preference = screen.findPreference(getPreferenceKey());
+        preference.setTitle(getTitle());
+    }
+
+    public String getTitle() {
+        return mContext.getString(areStylesAvailable()
+                ? R.string.style_and_wallpaper_settings_title : R.string.wallpaper_settings_title);
+    }
+
+    public ComponentName getComponentName() {
+        return new ComponentName(mWallpaperPackage, getComponentClassString());
+    }
+
+    public String getComponentClassString() {
+        return areStylesAvailable() ? mStylesAndWallpaperClass : mWallpaperClass;
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        if ((TextUtils.isEmpty(mWallpaperClass) && TextUtils.isEmpty(mStylesAndWallpaperClass))
+                || TextUtils.isEmpty(mWallpaperPackage)) {
+            Log.e(TAG, "No Wallpaper picker specified!");
+            return UNSUPPORTED_ON_DEVICE;
+        }
+        return canResolveWallpaperComponent(getComponentClassString())
+                ? AVAILABLE_UNSEARCHABLE : CONDITIONALLY_UNAVAILABLE;
+    }
+
+    @Override
+    public void updateState(Preference preference) {
+        disablePreferenceIfManaged((RestrictedTopLevelPreference) preference);
+    }
+
+    @Override
+    public boolean handlePreferenceTreeClick(Preference preference) {
+        if (getPreferenceKey().equals(preference.getKey())) {
+            final Intent intent = new Intent().setComponent(
+                    getComponentName()).putExtra(mWallpaperLaunchExtra, LAUNCHED_SETTINGS);
+            if (areStylesAvailable()) {
+                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+            }
+            preference.getContext().startActivity(intent);
+            return true;
+        }
+        return super.handlePreferenceTreeClick(preference);
+    }
+
+    /** Returns whether Styles & Wallpaper is enabled and available. */
+    public boolean areStylesAvailable() {
+        return !TextUtils.isEmpty(mStylesAndWallpaperClass)
+                && canResolveWallpaperComponent(mStylesAndWallpaperClass);
+    }
+
+    private boolean canResolveWallpaperComponent(String className) {
+        final ComponentName componentName = new ComponentName(mWallpaperPackage, className);
+        final PackageManager pm = mContext.getPackageManager();
+        final Intent intent = new Intent().setComponent(componentName);
+        final List<ResolveInfo> resolveInfos = pm.queryIntentActivities(intent, 0 /* flags */);
+        return resolveInfos != null && !resolveInfos.isEmpty();
+    }
+
+    private void disablePreferenceIfManaged(RestrictedTopLevelPreference pref) {
+        final String restriction = DISALLOW_SET_WALLPAPER;
+        if (pref != null) {
+            pref.setDisabledByAdmin(null);
+            if (RestrictedLockUtilsInternal.hasBaseUserRestriction(mContext,
+                    restriction, UserHandle.myUserId())) {
+                // Do not show the admin dialog for system restriction.
+                pref.setEnabled(false);
+            } else {
+                pref.checkRestrictionAndSetDisabled(restriction);
+            }
+        }
+    }
+}
diff --git a/src/com/android/settings/display/darkmode/DarkModePreference.java b/src/com/android/settings/display/darkmode/DarkModePreference.java
index baaa1f7..c69bb01 100644
--- a/src/com/android/settings/display/darkmode/DarkModePreference.java
+++ b/src/com/android/settings/display/darkmode/DarkModePreference.java
@@ -74,10 +74,10 @@
             return;
         }
         final int mode = mUiModeManager.getNightMode();
-        String detail;
+        String summary;
 
         if (mode == UiModeManager.MODE_NIGHT_AUTO) {
-            detail = getContext().getString(active
+            summary = getContext().getString(active
                     ? R.string.dark_ui_summary_on_auto_mode_auto
                     : R.string.dark_ui_summary_off_auto_mode_auto);
         } else if (mode == UiModeManager.MODE_NIGHT_CUSTOM) {
@@ -85,17 +85,14 @@
                     ? mUiModeManager.getCustomNightModeEnd()
                     : mUiModeManager.getCustomNightModeStart();
             final String timeStr = mFormat.of(time);
-            detail = getContext().getString(active
+            summary = getContext().getString(active
                     ? R.string.dark_ui_summary_on_auto_mode_custom
                     : R.string.dark_ui_summary_off_auto_mode_custom, timeStr);
         } else {
-            detail = getContext().getString(active
+            summary = getContext().getString(active
                     ? R.string.dark_ui_summary_on_auto_mode_never
                     : R.string.dark_ui_summary_off_auto_mode_never);
         }
-        String summary = getContext().getString(active
-                ? R.string.dark_ui_summary_on
-                : R.string.dark_ui_summary_off, detail);
 
         setSummary(summary);
     }
diff --git a/src/com/android/settings/fuelgauge/BatteryHeaderPreferenceController.java b/src/com/android/settings/fuelgauge/BatteryHeaderPreferenceController.java
index 9066444..11d7564 100644
--- a/src/com/android/settings/fuelgauge/BatteryHeaderPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/BatteryHeaderPreferenceController.java
@@ -52,7 +52,8 @@
  * Controller that update the battery header view
  */
 public class BatteryHeaderPreferenceController extends BasePreferenceController
-        implements PreferenceControllerMixin, LifecycleObserver, OnStart {
+        implements PreferenceControllerMixin, LifecycleObserver, OnStart,
+        BatteryPreferenceController {
     @VisibleForTesting
     static final String KEY_BATTERY_HEADER = "battery_header";
     private static final String ANNOTATION_URL = "url";
@@ -121,16 +122,20 @@
                 .styleActionBar(mActivity);
     }
 
+    private CharSequence generateLabel(BatteryInfo info) {
+        if (BatteryUtils.isBatteryDefenderOn(info)) {
+            return null;
+        } else if (info.remainingLabel == null) {
+            return info.statusLabel;
+        } else {
+            return info.remainingLabel;
+        }
+    }
+
     public void updateHeaderPreference(BatteryInfo info) {
         mBatteryPercentText.setText(formatBatteryPercentageText(info.batteryLevel));
         if (!mBatteryStatusFeatureProvider.triggerBatteryStatusUpdate(this, info)) {
-            if (BatteryUtils.isBatteryDefenderOn(info)) {
-                mSummary1.setText(null);
-            } else if (info.remainingLabel == null) {
-                mSummary1.setText(info.statusLabel);
-            } else {
-                mSummary1.setText(info.remainingLabel);
-            }
+            mSummary1.setText(generateLabel(info));
         }
 
         mBatteryMeterView.setBatteryLevel(info.batteryLevel);
@@ -141,8 +146,8 @@
     /**
      * Callback which receives text for the summary line.
      */
-    public void updateBatteryStatus(String statusLabel) {
-        mSummary1.setText(statusLabel);
+    public void updateBatteryStatus(String label, BatteryInfo info) {
+        mSummary1.setText(label != null ? label : generateLabel(info));
     }
 
     public void quickUpdateHeaderPreference() {
diff --git a/src/com/android/settings/fuelgauge/BatteryPreferenceController.java b/src/com/android/settings/fuelgauge/BatteryPreferenceController.java
new file mode 100644
index 0000000..badf5c8
--- /dev/null
+++ b/src/com/android/settings/fuelgauge/BatteryPreferenceController.java
@@ -0,0 +1,30 @@
+/*
+ * 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.settings.fuelgauge;
+
+/**
+ * Common interface for a preference controller that updates battery status
+ */
+public interface BatteryPreferenceController {
+
+    /**
+     * Updates the label for the preference controller. If the label is null, the
+     * implementation should revert back to the original label based on the
+     * battery info.
+     */
+    void updateBatteryStatus(String label, BatteryInfo info);
+}
diff --git a/src/com/android/settings/fuelgauge/BatteryStatusFeatureProvider.java b/src/com/android/settings/fuelgauge/BatteryStatusFeatureProvider.java
index c3fc247..46f00c7 100644
--- a/src/com/android/settings/fuelgauge/BatteryStatusFeatureProvider.java
+++ b/src/com/android/settings/fuelgauge/BatteryStatusFeatureProvider.java
@@ -25,5 +25,5 @@
      * Trigger a battery status update; return false if built-in status should be used.
      */
     boolean triggerBatteryStatusUpdate(
-            BatteryHeaderPreferenceController batteryHeaderPreferenceController, BatteryInfo info);
+            BatteryPreferenceController controller, BatteryInfo info);
 }
diff --git a/src/com/android/settings/fuelgauge/BatteryStatusFeatureProviderImpl.java b/src/com/android/settings/fuelgauge/BatteryStatusFeatureProviderImpl.java
index 47d376d..dc4b5db 100644
--- a/src/com/android/settings/fuelgauge/BatteryStatusFeatureProviderImpl.java
+++ b/src/com/android/settings/fuelgauge/BatteryStatusFeatureProviderImpl.java
@@ -31,7 +31,7 @@
 
     @Override
     public boolean triggerBatteryStatusUpdate(
-            BatteryHeaderPreferenceController batteryHeaderPreferenceController, BatteryInfo info) {
+            BatteryPreferenceController controller, BatteryInfo info) {
         return false;
     }
 }
diff --git a/src/com/android/settings/fuelgauge/FakeUid.java b/src/com/android/settings/fuelgauge/FakeUid.java
index c592f51..309f259 100644
--- a/src/com/android/settings/fuelgauge/FakeUid.java
+++ b/src/com/android/settings/fuelgauge/FakeUid.java
@@ -356,6 +356,11 @@
     }
 
     @Override
+    public long getScreenOnEnergy() {
+        return 0;
+    }
+
+    @Override
     public long getMobileRadioApWakeupCount(int which) {
         return 0;
     }
diff --git a/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java b/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java
index c2e6a6f..1912c2f 100644
--- a/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java
@@ -26,18 +26,21 @@
 import com.android.settings.R;
 import com.android.settings.core.BasePreferenceController;
 import com.android.settings.core.FeatureFlags;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
 import com.android.settingslib.core.lifecycle.events.OnStart;
 import com.android.settingslib.core.lifecycle.events.OnStop;
 
 public class TopLevelBatteryPreferenceController extends BasePreferenceController implements
-        LifecycleObserver, OnStart, OnStop {
+        LifecycleObserver, OnStart, OnStop, BatteryPreferenceController {
 
     @VisibleForTesting
-    boolean mIsBatteryPresent = true;
+    protected boolean mIsBatteryPresent = true;
     private final BatteryBroadcastReceiver mBatteryBroadcastReceiver;
     private Preference mPreference;
     private BatteryInfo mBatteryInfo;
+    private BatteryStatusFeatureProvider mBatteryStatusFeatureProvider;
+    private String mBatteryStatusLabel;
 
     public TopLevelBatteryPreferenceController(Context context, String preferenceKey) {
         super(context, preferenceKey);
@@ -51,6 +54,9 @@
                 updateState(mPreference);
             }, true /* shortString */);
         });
+
+        mBatteryStatusFeatureProvider = FeatureFactory.getFactory(context)
+                .getBatteryStatusFeatureProvider(context);
     }
 
     @Override
@@ -77,6 +83,10 @@
 
     @Override
     public CharSequence getSummary() {
+        return getSummary(true /* batteryStatusUpdate */);
+    }
+
+    private CharSequence getSummary(boolean batteryStatusUpdate) {
         // Remove homepage summaries for silky home.
         if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.SILKY_HOME)) {
             return null;
@@ -85,23 +95,48 @@
         if (!mIsBatteryPresent) {
             return mContext.getText(R.string.battery_missing_message);
         }
-        return getDashboardLabel(mContext, mBatteryInfo);
+        return getDashboardLabel(mContext, mBatteryInfo, batteryStatusUpdate);
     }
 
-    static CharSequence getDashboardLabel(Context context, BatteryInfo info) {
+    protected CharSequence getDashboardLabel(Context context, BatteryInfo info,
+            boolean batteryStatusUpdate) {
         if (info == null || context == null) {
             return null;
         }
-        CharSequence label;
+
+        if (batteryStatusUpdate) {
+            if (!mBatteryStatusFeatureProvider.triggerBatteryStatusUpdate(this, info)) {
+                mBatteryStatusLabel = null; // will generateLabel()
+            }
+        }
+
+        return (mBatteryStatusLabel == null) ? generateLabel(info) : mBatteryStatusLabel;
+    }
+
+    private CharSequence generateLabel(BatteryInfo info) {
         if (!info.discharging && info.chargeLabel != null) {
-            label = info.chargeLabel;
+            return info.chargeLabel;
         } else if (info.remainingLabel == null) {
-            label = info.batteryPercentString;
+            return info.batteryPercentString;
         } else {
-            label = context.getString(R.string.power_remaining_settings_home_page,
+            return mContext.getString(R.string.power_remaining_settings_home_page,
                     info.batteryPercentString,
                     info.remainingLabel);
         }
-        return label;
+    }
+
+    /**
+     * Callback which receives text for the label.
+     */
+    public void updateBatteryStatus(String label, BatteryInfo info) {
+        mBatteryStatusLabel = label; // Null if adaptive charging is not active
+
+        if (mPreference != null) {
+            // Do not triggerBatteryStatusUpdate(), otherwise there will be an infinite loop
+            final CharSequence summary = getSummary(false /* batteryStatusUpdate */);
+            if (summary != null) {
+                mPreference.setSummary(summary);
+            }
+        }
     }
 }
diff --git a/src/com/android/settings/gestures/EmergencyGestureNumberOverridePreferenceController.java b/src/com/android/settings/gestures/EmergencyGestureNumberOverridePreferenceController.java
index 3dba3f0..28e4154 100644
--- a/src/com/android/settings/gestures/EmergencyGestureNumberOverridePreferenceController.java
+++ b/src/com/android/settings/gestures/EmergencyGestureNumberOverridePreferenceController.java
@@ -21,6 +21,8 @@
 import android.os.Handler;
 import android.os.Looper;
 import android.provider.Settings;
+import android.telephony.PhoneNumberUtils;
+import android.text.Spannable;
 
 import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
@@ -69,8 +71,17 @@
 
     @Override
     public CharSequence getSummary() {
-        return mContext.getString(R.string.emergency_gesture_call_for_help_summary,
-                mEmergencyNumberUtils.getPoliceNumber());
+        String number = mEmergencyNumberUtils.getPoliceNumber();
+        String summary = mContext.getString(R.string.emergency_gesture_call_for_help_summary,
+                number);
+        int numberStartIndex = summary.indexOf(number);
+        if (numberStartIndex < 0) {
+            return summary;
+        }
+        Spannable summarySpan = Spannable.Factory.getInstance().newSpannable(summary);
+        PhoneNumberUtils.addTtsSpan(summarySpan, numberStartIndex,
+                numberStartIndex + number.length());
+        return summarySpan;
     }
 
     @Override
diff --git a/src/com/android/settings/gestures/SwipeBottomToNotificationPreferenceController.java b/src/com/android/settings/gestures/SwipeBottomToNotificationPreferenceController.java
index 5eba539..04a32de 100644
--- a/src/com/android/settings/gestures/SwipeBottomToNotificationPreferenceController.java
+++ b/src/com/android/settings/gestures/SwipeBottomToNotificationPreferenceController.java
@@ -76,7 +76,7 @@
     @Override
     public boolean isChecked() {
         return Settings.Secure.getInt(mContext.getContentResolver(),
-                SWIPE_BOTTOM_TO_NOTIFICATION_ENABLED, OFF) == ON;
+                SWIPE_BOTTOM_TO_NOTIFICATION_ENABLED, ON) == ON;
     }
 
     @Override
diff --git a/src/com/android/settings/gestures/SystemNavigationGestureSettings.java b/src/com/android/settings/gestures/SystemNavigationGestureSettings.java
index bed14a8..ddcdd59 100644
--- a/src/com/android/settings/gestures/SystemNavigationGestureSettings.java
+++ b/src/com/android/settings/gestures/SystemNavigationGestureSettings.java
@@ -21,9 +21,6 @@
 import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON_OVERLAY;
 import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL_OVERLAY;
 
-import static com.android.settings.widget.RadioButtonPreferenceWithExtraWidget.EXTRA_WIDGET_VISIBILITY_GONE;
-import static com.android.settings.widget.RadioButtonPreferenceWithExtraWidget.EXTRA_WIDGET_VISIBILITY_SETTING;
-
 import android.app.settings.SettingsEnums;
 import android.content.Context;
 import android.content.Intent;
@@ -49,7 +46,6 @@
 import com.android.settings.support.actionbar.HelpResourceProvider;
 import com.android.settings.utils.CandidateInfoExtra;
 import com.android.settings.widget.RadioButtonPickerFragment;
-import com.android.settings.widget.RadioButtonPreferenceWithExtraWidget;
 import com.android.settings.widget.VideoPreference;
 import com.android.settingslib.search.SearchIndexable;
 import com.android.settingslib.widget.CandidateInfo;
@@ -119,8 +115,8 @@
             return;
         }
         for (CandidateInfo info : candidateList) {
-            RadioButtonPreferenceWithExtraWidget pref =
-                    new RadioButtonPreferenceWithExtraWidget(getPrefContext());
+            RadioButtonPreference pref =
+                    new RadioButtonPreference(getPrefContext());
             bindPreference(pref, info.getKey(), info, defaultKey);
             bindPreferenceExtra(pref, info.getKey(), info, defaultKey, systemDefaultKey);
             screen.addPreference(pref);
@@ -131,20 +127,15 @@
     @Override
     public void bindPreferenceExtra(RadioButtonPreference pref,
             String key, CandidateInfo info, String defaultKey, String systemDefaultKey) {
-        if (!(info instanceof CandidateInfoExtra)
-                || !(pref instanceof RadioButtonPreferenceWithExtraWidget)) {
+        if (!(info instanceof CandidateInfoExtra)) {
             return;
         }
 
         pref.setSummary(((CandidateInfoExtra) info).loadSummary());
 
-        RadioButtonPreferenceWithExtraWidget p = (RadioButtonPreferenceWithExtraWidget) pref;
         if (info.getKey() == KEY_SYSTEM_NAV_GESTURAL) {
-            p.setExtraWidgetVisibility(EXTRA_WIDGET_VISIBILITY_SETTING);
-            p.setExtraWidgetOnClickListener((v) -> startActivity(new Intent(
+            pref.setExtraWidgetOnClickListener((v) -> startActivity(new Intent(
                     GestureNavigationSettingsFragment.GESTURE_NAVIGATION_SETTINGS)));
-        } else {
-            p.setExtraWidgetVisibility(EXTRA_WIDGET_VISIBILITY_GONE);
         }
     }
 
diff --git a/src/com/android/settings/homepage/SettingsHomepageActivity.java b/src/com/android/settings/homepage/SettingsHomepageActivity.java
index 237318f..5eb9d94 100644
--- a/src/com/android/settings/homepage/SettingsHomepageActivity.java
+++ b/src/com/android/settings/homepage/SettingsHomepageActivity.java
@@ -21,6 +21,7 @@
 import android.app.settings.SettingsEnums;
 import android.os.Bundle;
 import android.util.FeatureFlagUtils;
+import android.util.Log;
 import android.view.View;
 import android.widget.FrameLayout;
 import android.widget.ImageView;
@@ -41,6 +42,9 @@
 
 public class SettingsHomepageActivity extends FragmentActivity {
 
+    private static final String TAG = "SettingsHomepageActivity";
+    private int mSearchBoxHeight;
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -50,7 +54,9 @@
         root.setSystemUiVisibility(
                 View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
 
-        setHomepageContainerPaddingTop();
+        final View appBar = findViewById(R.id.app_bar_container);
+        appBar.setMinimumHeight(getSearchBoxHeight());
+        setDefaultHomepageContainerPaddingTop();
 
         final Toolbar toolbar = findViewById(R.id.search_action_bar);
         FeatureFactory.getFactory(this).getSearchFeatureProvider()
@@ -60,16 +66,36 @@
         getLifecycle().addObserver(new AvatarViewMixin(this, avatarView));
         getLifecycle().addObserver(new HideNonSystemOverlayMixin(this));
 
-        if (FeatureFlagUtils.isEnabled(this, FeatureFlags.CONTEXTUAL_HOME)
-                && !getSystemService(ActivityManager.class).isLowRamDevice()) {
-            // Only allow contextual feature on high ram devices.
-            showFragment(new ContextualCardsFragment(), R.id.contextual_cards_content);
+        if (!getSystemService(ActivityManager.class).isLowRamDevice()) {
+            // Only allow contextual features on high ram devices.
+            if (FeatureFlagUtils.isEnabled(this, FeatureFlags.SILKY_HOME)) {
+                showSuggestionFragment();
+            }
+            if (FeatureFlagUtils.isEnabled(this, FeatureFlags.CONTEXTUAL_HOME)) {
+                showFragment(new ContextualCardsFragment(), R.id.contextual_cards_content);
+            }
         }
         showFragment(new TopLevelSettings(), R.id.main_content);
         ((FrameLayout) findViewById(R.id.main_content))
                 .getLayoutTransition().enableTransitionType(LayoutTransition.CHANGING);
     }
 
+    private void showSuggestionFragment() {
+        final Class<? extends Fragment> fragment = FeatureFactory.getFactory(this)
+                .getSuggestionFeatureProvider(this).getContextualSuggestionFragment();
+        if (fragment == null) {
+            return;
+        }
+
+        try {
+            showFragment(fragment.newInstance(), R.id.contextual_suggestion_content);
+            setHomepageContainerTopOffset(getResources()
+                    .getDimensionPixelSize(R.dimen.suggestion_height));
+        } catch (IllegalAccessException | InstantiationException e) {
+            Log.w(TAG, "Cannot show fragment", e);
+        }
+    }
+
     private void showFragment(Fragment fragment, int id) {
         final FragmentManager fragmentManager = getSupportFragmentManager();
         final FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
@@ -84,18 +110,32 @@
     }
 
     @VisibleForTesting
-    void setHomepageContainerPaddingTop() {
-        final View view = this.findViewById(R.id.homepage_container);
-
-        final int searchBarHeight = getResources().getDimensionPixelSize(R.dimen.search_bar_height);
-        final int searchBarMargin = getResources().getDimensionPixelSize(R.dimen.search_bar_margin);
-
-        // The top padding is the height of action bar(48dp) + top/bottom margins(16dp)
-        final int paddingTop = searchBarHeight + searchBarMargin * 2;
+    void setHomepageContainerTopOffset(int offset) {
+        final View view = findViewById(R.id.homepage_container);
+        final int paddingTop = getSearchBoxHeight() + offset;
         view.setPadding(0 /* left */, paddingTop, 0 /* right */, 0 /* bottom */);
 
         // Prevent inner RecyclerView gets focus and invokes scrolling.
         view.setFocusableInTouchMode(true);
         view.requestFocus();
     }
+
+    @VisibleForTesting
+    void setDefaultHomepageContainerPaddingTop() {
+        setHomepageContainerTopOffset(0);
+    }
+
+    @VisibleForTesting
+    int getSearchBoxHeight() {
+        if (mSearchBoxHeight != 0) {
+            return mSearchBoxHeight;
+        }
+
+        final int searchBarHeight = getResources().getDimensionPixelSize(R.dimen.search_bar_height);
+        final int searchBarMargin = getResources().getDimensionPixelSize(R.dimen.search_bar_margin);
+
+        // The height of search box is the height of search bar(48dp) + top/bottom margins(24dp)
+        mSearchBoxHeight = searchBarHeight + searchBarMargin * 2;
+        return mSearchBoxHeight;
+    }
 }
diff --git a/src/com/android/settings/location/LocationIndicatorsPreferenceController.java b/src/com/android/settings/location/LocationIndicatorsPreferenceController.java
new file mode 100644
index 0000000..f7b7408
--- /dev/null
+++ b/src/com/android/settings/location/LocationIndicatorsPreferenceController.java
@@ -0,0 +1,52 @@
+/*
+ * 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.settings.location;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.provider.DeviceConfig;
+
+import com.android.settings.Utils;
+import com.android.settings.core.TogglePreferenceController;
+
+/** Controller for location indicators toggle. */
+public class LocationIndicatorsPreferenceController extends TogglePreferenceController {
+
+    public LocationIndicatorsPreferenceController(Context context, String preferenceKey) {
+        super(context, preferenceKey);
+    }
+
+    @Override
+    public boolean isChecked() {
+        return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_PRIVACY,
+                Utils.PROPERTY_LOCATION_INDICATORS_ENABLED, false);
+    }
+
+    @Override
+    public boolean setChecked(boolean isChecked) {
+        DeviceConfig.setProperty(DeviceConfig.NAMESPACE_PRIVACY,
+                Utils.PROPERTY_LOCATION_INDICATORS_ENABLED, Boolean.toString(isChecked), true);
+        return true;
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        // Location indicators feature is only available on devices that support location.
+        return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_LOCATION)
+                ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+    }
+}
diff --git a/src/com/android/settings/media/MediaDeviceUpdateWorker.java b/src/com/android/settings/media/MediaDeviceUpdateWorker.java
index b8c3d8f..14e8267 100644
--- a/src/com/android/settings/media/MediaDeviceUpdateWorker.java
+++ b/src/com/android/settings/media/MediaDeviceUpdateWorker.java
@@ -18,8 +18,6 @@
 
 import static android.media.AudioManager.STREAM_DEVICES_CHANGED_ACTION;
 
-import static com.android.settings.media.MediaOutputSlice.MEDIA_PACKAGE_NAME;
-
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
@@ -55,6 +53,8 @@
     private static final String TAG = "MediaDeviceUpdateWorker";
     private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
 
+    public static final String MEDIA_PACKAGE_NAME = "media_package_name";
+
     protected final Context mContext;
     protected final Collection<MediaDevice> mMediaDevices = new CopyOnWriteArrayList<>();
     private final DevicesChangedBroadcastReceiver mReceiver;
diff --git a/src/com/android/settings/media/MediaOutputGroupSlice.java b/src/com/android/settings/media/MediaOutputGroupSlice.java
deleted file mode 100644
index 0359ca9..0000000
--- a/src/com/android/settings/media/MediaOutputGroupSlice.java
+++ /dev/null
@@ -1,268 +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.settings.media;
-
-import static android.app.slice.Slice.EXTRA_RANGE_VALUE;
-
-import static com.android.settings.slices.CustomSliceRegistry.MEDIA_OUTPUT_GROUP_SLICE_URI;
-
-import android.app.PendingIntent;
-import android.content.Context;
-import android.content.Intent;
-import android.graphics.Bitmap;
-import android.graphics.Canvas;
-import android.graphics.drawable.Drawable;
-import android.net.Uri;
-import android.text.TextUtils;
-import android.util.Log;
-
-import androidx.annotation.VisibleForTesting;
-import androidx.core.graphics.drawable.IconCompat;
-import androidx.slice.Slice;
-import androidx.slice.builders.ListBuilder;
-import androidx.slice.builders.SliceAction;
-
-import com.android.settings.R;
-import com.android.settings.Utils;
-import com.android.settings.slices.CustomSliceable;
-import com.android.settings.slices.SliceBackgroundWorker;
-import com.android.settings.slices.SliceBroadcastReceiver;
-import com.android.settingslib.media.MediaDevice;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Show the Media device that can be transfer the media.
- */
-public class MediaOutputGroupSlice implements CustomSliceable {
-
-    @VisibleForTesting
-    static final String GROUP_DEVICES = "group_devices";
-    @VisibleForTesting
-    static final String MEDIA_DEVICE_ID = "media_device_id";
-    @VisibleForTesting
-    static final String CUSTOMIZED_ACTION = "customized_action";
-    @VisibleForTesting
-    static final int ACTION_VOLUME_ADJUSTMENT = 1;
-    @VisibleForTesting
-    static final int ACTION_MEDIA_SESSION_OPERATION = 2;
-    @VisibleForTesting
-    static final int ERROR = -1;
-
-    private static final String TAG = "MediaOutputGroupSlice";
-    private static final int COLOR_DISABLED = (int) (255 * 0.3);
-
-    private final Context mContext;
-    private MediaDeviceUpdateWorker mWorker;
-
-    public MediaOutputGroupSlice(Context context) {
-        mContext = context;
-    }
-
-    @Override
-    public Slice getSlice() {
-        final ListBuilder listBuilder = new ListBuilder(mContext, getUri(), ListBuilder.INFINITY)
-                .setAccentColor(COLOR_NOT_TINTED);
-        // Add "Group" row
-        final IconCompat titleIcon = IconCompat.createWithResource(mContext,
-                R.drawable.ic_speaker_group_black_24dp);
-        final Bitmap emptyBitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
-        if (getWorker() == null) {
-            return listBuilder.build();
-        }
-        final int maxVolume = getWorker().getSessionVolumeMax();
-        final String title = mContext.getString(R.string.media_output_group);
-        final SliceAction primaryAction = SliceAction.createDeeplink(
-                getBroadcastIntent(GROUP_DEVICES,
-                        GROUP_DEVICES.hashCode(),
-                        ACTION_MEDIA_SESSION_OPERATION),
-                titleIcon, ListBuilder.ICON_IMAGE, GROUP_DEVICES);
-        final SliceAction endItemAction = SliceAction.createDeeplink(
-                getBroadcastIntent(GROUP_DEVICES,
-                        GROUP_DEVICES.hashCode() + ACTION_MEDIA_SESSION_OPERATION,
-                        ACTION_MEDIA_SESSION_OPERATION),
-                IconCompat.createWithBitmap(emptyBitmap), ListBuilder.ICON_IMAGE, "");
-        if (maxVolume > 0 && !getWorker().hasAdjustVolumeUserRestriction()) {
-            // Add InputRange row
-            listBuilder.addInputRange(new ListBuilder.InputRangeBuilder()
-                    .setTitleItem(titleIcon, ListBuilder.ICON_IMAGE)
-                    .addEndItem(endItemAction)
-                    .setTitle(title)
-                    .setPrimaryAction(primaryAction)
-                    .setInputAction(getBroadcastIntent(GROUP_DEVICES,
-                            GROUP_DEVICES.hashCode() + ACTION_VOLUME_ADJUSTMENT,
-                            ACTION_VOLUME_ADJUSTMENT))
-                    .setMax(maxVolume)
-                    .setValue(getWorker().getSessionVolume()));
-        } else {    // No max volume information. Add generic Row
-            listBuilder.addRow(new ListBuilder.RowBuilder()
-                    .setTitleItem(titleIcon, ListBuilder.ICON_IMAGE)
-                    .setTitle(title)
-                    .setPrimaryAction(primaryAction));
-        }
-        // Add device row
-        addRow(listBuilder, getWorker().getSelectedMediaDevice(), true);
-        addRow(listBuilder, getWorker().getSelectableMediaDevice(), false);
-        return listBuilder.build();
-    }
-
-    private void addRow(ListBuilder listBuilder, List<MediaDevice> mediaDevices, boolean selected) {
-        final boolean adjustVolumeUserRestriction = getWorker().hasAdjustVolumeUserRestriction();
-        List<MediaDevice> deselectableMediaDevices = new ArrayList<>();
-        if (selected) {
-            deselectableMediaDevices = getWorker().getDeselectableMediaDevice();
-        }
-        for (MediaDevice device : mediaDevices) {
-            final int maxVolume = device.getMaxVolume();
-            final IconCompat titleIcon = Utils.createIconWithDrawable(device.getIcon());
-            final String title = device.getName();
-            final SliceAction disabledIconSliceAction = SliceAction.createDeeplink(
-                    getBroadcastIntent(null, 0, 0),
-                    getDisabledCheckboxIcon(), ListBuilder.ICON_IMAGE, "");
-            final SliceAction enabledIconSliceAction = SliceAction.createToggle(
-                    getBroadcastIntent(device.getId(),
-                            device.hashCode() + ACTION_MEDIA_SESSION_OPERATION,
-                            ACTION_MEDIA_SESSION_OPERATION),
-                    IconCompat.createWithResource(mContext, R.drawable.ic_check_box_anim),
-                    "",
-                    selected);
-            if (maxVolume > 0 && selected && !adjustVolumeUserRestriction) {
-                // Add InputRange row
-                final ListBuilder.InputRangeBuilder builder = new ListBuilder.InputRangeBuilder()
-                        .setTitleItem(titleIcon, ListBuilder.ICON_IMAGE)
-                        .setTitle(title)
-                        .setInputAction(getBroadcastIntent(device.getId(),
-                                device.hashCode() + ACTION_VOLUME_ADJUSTMENT,
-                                ACTION_VOLUME_ADJUSTMENT))
-                        .setMax(device.getMaxVolume())
-                        .setValue(device.getCurrentVolume());
-                // Add endItem with different icons
-                if (selected && (!getWorker().isDeviceIncluded(deselectableMediaDevices, device)
-                        || mediaDevices.size() == 1)) {
-                    builder.addEndItem(disabledIconSliceAction);
-                } else {
-                    builder.addEndItem(enabledIconSliceAction);
-                }
-                listBuilder.addInputRange(builder);
-            } else {    // No max volume information. Add generic Row
-                final ListBuilder.RowBuilder rowBuilder = new ListBuilder.RowBuilder()
-                        .setTitleItem(titleIcon, ListBuilder.ICON_IMAGE)
-                        .setTitle(title);
-                // Add endItem with different icons
-                if (selected && (!getWorker().isDeviceIncluded(deselectableMediaDevices, device)
-                        || mediaDevices.size() == 1)) {
-                    rowBuilder.addEndItem(disabledIconSliceAction);
-                } else {
-                    rowBuilder.addEndItem(enabledIconSliceAction);
-                }
-                listBuilder.addRow(rowBuilder);
-            }
-        }
-    }
-
-    private IconCompat getDisabledCheckboxIcon() {
-        final Drawable drawable = mContext.getDrawable(R.drawable.ic_check_box_blue_24dp).mutate();
-        final Bitmap checkbox = Bitmap.createBitmap(drawable.getIntrinsicWidth(),
-                drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
-        final Canvas canvas = new Canvas(checkbox);
-        drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
-        drawable.setAlpha(COLOR_DISABLED);
-        drawable.draw(canvas);
-
-        return IconCompat.createWithBitmap(checkbox);
-    }
-
-    private PendingIntent getBroadcastIntent(String id, int requestCode, int action) {
-        final Intent intent = new Intent(getUri().toString());
-        intent.setClass(mContext, SliceBroadcastReceiver.class);
-        intent.putExtra(MEDIA_DEVICE_ID, id);
-        intent.putExtra(CUSTOMIZED_ACTION, action);
-        intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
-        return PendingIntent.getBroadcast(mContext, requestCode, intent,
-                PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
-    }
-
-    private MediaDeviceUpdateWorker getWorker() {
-        if (mWorker == null) {
-            mWorker = SliceBackgroundWorker.getInstance(getUri());
-        }
-        return mWorker;
-    }
-
-    @Override
-    public Uri getUri() {
-        return MEDIA_OUTPUT_GROUP_SLICE_URI;
-    }
-
-    @Override
-    public void onNotifyChange(Intent intent) {
-        final String id = intent.getStringExtra(MEDIA_DEVICE_ID);
-        if (TextUtils.isEmpty(id)) {
-            Log.e(TAG, "Unable to handle notification. The device is unavailable");
-            return;
-        }
-        final MediaDeviceUpdateWorker worker = getWorker();
-        final MediaDevice device = worker.getMediaDeviceById(id);
-        switch (intent.getIntExtra(CUSTOMIZED_ACTION, ERROR)) {
-            case ACTION_VOLUME_ADJUSTMENT:
-                final int newPosition = intent.getIntExtra(EXTRA_RANGE_VALUE, ERROR);
-                if (newPosition == ERROR) {
-                    Log.e(TAG, "Unable to adjust volume. The volume value is unavailable");
-                    return;
-                }
-                // Group volume adjustment
-                if (TextUtils.equals(id, GROUP_DEVICES)) {
-                    worker.adjustSessionVolume(newPosition);
-                } else {
-                    if (device == null) {
-                        Log.e(TAG, "Unable to adjust volume. The device(" + id
-                                + ") is unavailable");
-                        return;
-                    }
-                    // Single device volume adjustment
-                    worker.adjustVolume(device, newPosition);
-                }
-                break;
-            case ACTION_MEDIA_SESSION_OPERATION:
-                if (device == null) {
-                    Log.e(TAG, "Unable to adjust session volume. The device(" + id
-                            + ") is unavailable");
-                    return;
-                }
-                if (worker.isDeviceIncluded(worker.getSelectableMediaDevice(), device)) {
-                    worker.addDeviceToPlayMedia(device);
-                } else if (worker.isDeviceIncluded(worker.getDeselectableMediaDevice(), device)) {
-                    worker.removeDeviceFromPlayMedia(device);
-                } else {
-                    // Do nothing
-                    Log.d(TAG, device.getName() + " is not selectable nor deselectable");
-                }
-                break;
-        }
-    }
-
-    @Override
-    public Intent getIntent() {
-        return null;
-    }
-
-    @Override
-    public Class getBackgroundWorkerClass() {
-        return MediaDeviceUpdateWorker.class;
-    }
-}
diff --git a/src/com/android/settings/media/MediaOutputIndicatorSlice.java b/src/com/android/settings/media/MediaOutputIndicatorSlice.java
index 40ee05b..69e5dde 100644
--- a/src/com/android/settings/media/MediaOutputIndicatorSlice.java
+++ b/src/com/android/settings/media/MediaOutputIndicatorSlice.java
@@ -87,7 +87,7 @@
 
     @Override
     public Intent getIntent() {
-        // This Slice reflects active media device information and launch MediaOutputSlice. It does
+        // This Slice reflects active media device information and launch MediaOutputDialog. It does
         // not contain its owned Slice data
         return null;
     }
diff --git a/src/com/android/settings/media/MediaOutputSlice.java b/src/com/android/settings/media/MediaOutputSlice.java
deleted file mode 100644
index ae7e0e8..0000000
--- a/src/com/android/settings/media/MediaOutputSlice.java
+++ /dev/null
@@ -1,415 +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.settings.media;
-
-import static android.app.slice.Slice.EXTRA_RANGE_VALUE;
-import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE;
-
-import static com.android.settings.slices.CustomSliceRegistry.MEDIA_OUTPUT_SLICE_URI;
-
-import android.app.PendingIntent;
-import android.app.settings.SettingsEnums;
-import android.content.Context;
-import android.content.Intent;
-import android.graphics.PorterDuff;
-import android.graphics.PorterDuffColorFilter;
-import android.graphics.drawable.Drawable;
-import android.net.Uri;
-import android.text.SpannableString;
-import android.text.TextUtils;
-import android.text.style.ForegroundColorSpan;
-import android.util.Log;
-
-import androidx.annotation.VisibleForTesting;
-import androidx.core.graphics.drawable.IconCompat;
-import androidx.slice.Slice;
-import androidx.slice.builders.ListBuilder;
-import androidx.slice.builders.SliceAction;
-
-import com.android.settings.R;
-import com.android.settings.Utils;
-import com.android.settings.bluetooth.BluetoothPairingDetail;
-import com.android.settings.core.SubSettingLauncher;
-import com.android.settings.slices.CustomSliceable;
-import com.android.settings.slices.SliceBackgroundWorker;
-import com.android.settings.slices.SliceBroadcastReceiver;
-import com.android.settingslib.media.LocalMediaManager;
-import com.android.settingslib.media.MediaDevice;
-import com.android.settingslib.media.MediaOutputSliceConstants;
-
-import java.util.Collection;
-
-/**
- * Show the Media device that can be transfer the media.
- */
-public class MediaOutputSlice implements CustomSliceable {
-
-    private static final String TAG = "MediaOutputSlice";
-    private static final String MEDIA_DEVICE_ID = "media_device_id";
-    private static final String MEDIA_GROUP_DEVICE = "media_group_device";
-    private static final String MEDIA_GROUP_REQUEST = "media_group_request";
-    private static final int NON_SLIDER_VALUE = -1;
-
-    public static final String MEDIA_PACKAGE_NAME = "media_package_name";
-
-    private final Context mContext;
-
-    private MediaDeviceUpdateWorker mWorker;
-
-    public MediaOutputSlice(Context context) {
-        mContext = context;
-    }
-
-    @VisibleForTesting
-    void init(MediaDeviceUpdateWorker worker) {
-        mWorker = worker;
-    }
-
-    @Override
-    public Slice getSlice() {
-        final ListBuilder listBuilder = new ListBuilder(mContext, getUri(), ListBuilder.INFINITY)
-                .setAccentColor(COLOR_NOT_TINTED);
-        if (!isVisible()) {
-            Log.d(TAG, "getSlice() is not visible");
-            return listBuilder.build();
-        }
-
-        final Collection<MediaDevice> devices = getMediaDevices();
-        final MediaDeviceUpdateWorker worker = getWorker();
-
-        if (worker.getSelectedMediaDevice().size() > 1) {
-            // Insert group item to the first when it is available
-            if (worker.getSessionVolumeMax() > 0 && !worker.hasAdjustVolumeUserRestriction()) {
-                listBuilder.addInputRange(getGroupSliderRow());
-            } else {
-                listBuilder.addRow(getGroupRow());
-            }
-            // Add all other devices
-            for (MediaDevice device : devices) {
-                addRow(device, null /* connectedDevice */, listBuilder);
-            }
-        } else {
-            final MediaDevice connectedDevice = worker.getCurrentConnectedMediaDevice();
-            if (devices.size() == 1) {
-                // Zero state
-                final MediaDevice device = devices.iterator().next();
-                addRow(device, device, listBuilder);
-                // Add "pair new" only when local output device exists
-                final int type = device.getDeviceType();
-                if (type == MediaDevice.MediaDeviceType.TYPE_PHONE_DEVICE
-                        || type == MediaDevice.MediaDeviceType.TYPE_3POINT5_MM_AUDIO_DEVICE
-                        || type == MediaDevice.MediaDeviceType.TYPE_USB_C_AUDIO_DEVICE) {
-                    listBuilder.addRow(getPairNewRow());
-                }
-            } else {
-                final boolean isTouched = worker.getIsTouched();
-                // Fix the last top device when user press device to transfer.
-                final MediaDevice topDevice = isTouched ? worker.getTopDevice() : connectedDevice;
-
-                if (topDevice != null) {
-                    addRow(topDevice, connectedDevice, listBuilder);
-                    worker.setTopDevice(topDevice);
-                }
-
-                for (MediaDevice device : devices) {
-                    if (topDevice == null || !TextUtils.equals(topDevice.getId(), device.getId())) {
-                        addRow(device, connectedDevice, listBuilder);
-                    }
-                }
-            }
-        }
-        return listBuilder.build();
-    }
-
-    private ListBuilder.RowBuilder getPairNewRow() {
-        final Drawable d = mContext.getDrawable(R.drawable.ic_add_24dp);
-        d.setColorFilter(new PorterDuffColorFilter(Utils.getColorAccentDefaultColor(mContext),
-                PorterDuff.Mode.SRC_IN));
-        final IconCompat icon = Utils.createIconWithDrawable(d);
-        final String title = mContext.getString(R.string.bluetooth_pairing_pref_title);
-        final Intent intent = new SubSettingLauncher(mContext)
-                .setDestination(BluetoothPairingDetail.class.getName())
-                .setTitleRes(R.string.bluetooth_pairing_page_title)
-                .setSourceMetricsCategory(SettingsEnums.PANEL_MEDIA_OUTPUT)
-                .toIntent();
-        final SliceAction primarySliceAction = SliceAction.createDeeplink(
-                PendingIntent.getActivity(mContext, 0 /* requestCode */, intent,
-                        PendingIntent.FLAG_IMMUTABLE),
-                IconCompat.createWithResource(mContext, R.drawable.ic_add_24dp/*ic_add_blue_24dp*/),
-                ListBuilder.ICON_IMAGE,
-                mContext.getText(R.string.bluetooth_pairing_pref_title));
-        final ListBuilder.RowBuilder builder = new ListBuilder.RowBuilder()
-                .setTitleItem(icon, ListBuilder.ICON_IMAGE)
-                .setTitle(title)
-                .setPrimaryAction(primarySliceAction);
-        return builder;
-    }
-
-    private ListBuilder.InputRangeBuilder getGroupSliderRow() {
-        final IconCompat icon = IconCompat.createWithResource(mContext,
-                R.drawable.ic_speaker_group_black_24dp);
-        final CharSequence sessionName = getWorker().getSessionName();
-        final CharSequence title = TextUtils.isEmpty(sessionName)
-                ? mContext.getString(R.string.media_output_group) : sessionName;
-        final PendingIntent broadcastAction =
-                getBroadcastIntent(mContext, MEDIA_GROUP_DEVICE, MEDIA_GROUP_DEVICE.hashCode());
-        final SliceAction primarySliceAction = SliceAction.createDeeplink(broadcastAction, icon,
-                ListBuilder.ICON_IMAGE, title);
-        final ListBuilder.InputRangeBuilder builder = new ListBuilder.InputRangeBuilder()
-                .setTitleItem(icon, ListBuilder.ICON_IMAGE)
-                .setTitle(title)
-                .setPrimaryAction(primarySliceAction)
-                .setInputAction(getSliderInputAction(MEDIA_GROUP_DEVICE.hashCode(),
-                        MEDIA_GROUP_DEVICE))
-                .setMax(getWorker().getSessionVolumeMax())
-                .setValue(getWorker().getSessionVolume())
-                .addEndItem(getEndItemSliceAction());
-        return builder;
-    }
-
-    private ListBuilder.RowBuilder getGroupRow() {
-        final IconCompat icon = IconCompat.createWithResource(mContext,
-                R.drawable.ic_speaker_group_black_24dp);
-        final CharSequence sessionName = getWorker().getSessionName();
-        final CharSequence title = TextUtils.isEmpty(sessionName)
-                ? mContext.getString(R.string.media_output_group) : sessionName;
-        final PendingIntent broadcastAction =
-                getBroadcastIntent(mContext, MEDIA_GROUP_DEVICE, MEDIA_GROUP_DEVICE.hashCode());
-        final SliceAction primarySliceAction = SliceAction.createDeeplink(broadcastAction, icon,
-                ListBuilder.ICON_IMAGE, title);
-        final ListBuilder.RowBuilder builder = new ListBuilder.RowBuilder()
-                .setTitleItem(icon, ListBuilder.ICON_IMAGE)
-                .setTitle(title)
-                .setPrimaryAction(primarySliceAction)
-                .addEndItem(getEndItemSliceAction());
-        return builder;
-    }
-
-    private void addRow(MediaDevice device, MediaDevice connectedDevice, ListBuilder listBuilder) {
-        if (connectedDevice != null && TextUtils.equals(device.getId(), connectedDevice.getId())) {
-            final String title = device.getName();
-            final IconCompat icon = getDeviceIconCompat(device);
-
-            final PendingIntent broadcastAction =
-                    getBroadcastIntent(mContext, device.getId(), device.hashCode());
-            final SliceAction primarySliceAction = SliceAction.createDeeplink(broadcastAction, icon,
-                    ListBuilder.ICON_IMAGE, title);
-
-            if (device.getMaxVolume() > 0 && !getWorker().hasAdjustVolumeUserRestriction()) {
-                final ListBuilder.InputRangeBuilder builder = new ListBuilder.InputRangeBuilder()
-                        .setTitleItem(icon, ListBuilder.ICON_IMAGE)
-                        .setTitle(title)
-                        .setPrimaryAction(primarySliceAction)
-                        .setInputAction(getSliderInputAction(device.hashCode(), device.getId()))
-                        .setMax(device.getMaxVolume())
-                        .setValue(device.getCurrentVolume());
-                // Check end item visibility
-                if (device.getDeviceType() == MediaDevice.MediaDeviceType.TYPE_CAST_DEVICE
-                        && !getWorker().getSelectableMediaDevice().isEmpty()) {
-                    builder.addEndItem(getEndItemSliceAction());
-                }
-                listBuilder.addInputRange(builder);
-            } else {
-                Log.d(TAG, "addRow device = " + device.getName() + " MaxVolume = "
-                        + device.getMaxVolume());
-                final ListBuilder.RowBuilder builder = getMediaDeviceRow(device);
-                // Check end item visibility
-                if (device.getDeviceType() == MediaDevice.MediaDeviceType.TYPE_CAST_DEVICE
-                        && !getWorker().getSelectableMediaDevice().isEmpty()) {
-                    builder.addEndItem(getEndItemSliceAction());
-                }
-                listBuilder.addRow(builder);
-            }
-        } else {
-            if (device.getState() == LocalMediaManager.MediaDeviceState.STATE_CONNECTING) {
-                listBuilder.addRange(getTransferringMediaDeviceRow(device));
-            } else {
-                listBuilder.addRow(getMediaDeviceRow(device));
-            }
-        }
-    }
-
-    private PendingIntent getSliderInputAction(int requestCode, String id) {
-        final Intent intent = new Intent(getUri().toString())
-                .setData(getUri())
-                .putExtra(MEDIA_DEVICE_ID, id)
-                .setClass(mContext, SliceBroadcastReceiver.class);
-
-        return PendingIntent.getBroadcast(mContext, requestCode, intent,
-                PendingIntent.FLAG_IMMUTABLE);
-    }
-
-    private SliceAction getEndItemSliceAction() {
-        final Intent intent = new Intent()
-                .setAction(MediaOutputSliceConstants.ACTION_MEDIA_OUTPUT_GROUP)
-                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
-                .putExtra(MediaOutputSliceConstants.EXTRA_PACKAGE_NAME,
-                        getWorker().getPackageName());
-        final int requestCode = TextUtils.isEmpty(getWorker().getPackageName())
-                ? 0
-                : getWorker().getPackageName().hashCode();
-        return SliceAction.createDeeplink(
-                PendingIntent.getActivity(mContext, requestCode, intent,
-                        PendingIntent.FLAG_IMMUTABLE),
-                IconCompat.createWithResource(mContext, R.drawable.ic_add_blue_24dp),
-                ListBuilder.ICON_IMAGE,
-                mContext.getText(R.string.add));
-    }
-
-    private IconCompat getDeviceIconCompat(MediaDevice device) {
-        Drawable drawable = device.getIcon();
-        if (drawable == null) {
-            Log.d(TAG, "getDeviceIconCompat() device : " + device.getName() + ", drawable is null");
-            // Use default Bluetooth device icon to handle getIcon() is null case.
-            drawable = mContext.getDrawable(com.android.internal.R.drawable.ic_bt_headphones_a2dp);
-        }
-
-        return Utils.createIconWithDrawable(drawable);
-    }
-
-    private MediaDeviceUpdateWorker getWorker() {
-        if (mWorker == null) {
-            mWorker = SliceBackgroundWorker.getInstance(getUri());
-        }
-        return mWorker;
-    }
-
-    private Collection<MediaDevice> getMediaDevices() {
-        final Collection<MediaDevice> devices = getWorker().getMediaDevices();
-        return devices;
-    }
-
-    private ListBuilder.RangeBuilder getTransferringMediaDeviceRow(MediaDevice device) {
-        final IconCompat deviceIcon = getDeviceIconCompat(device);
-        final SliceAction sliceAction = SliceAction.create(getBroadcastIntent(mContext,
-                device.getId(), device.hashCode()), deviceIcon, ListBuilder.ICON_IMAGE,
-                mContext.getText(R.string.media_output_switching));
-
-        return new ListBuilder.RangeBuilder()
-                .setTitleItem(deviceIcon, ListBuilder.ICON_IMAGE)
-                .setMode(ListBuilder.RANGE_MODE_INDETERMINATE)
-                .setTitle(device.getName())
-                .setPrimaryAction(sliceAction);
-    }
-
-    private ListBuilder.RowBuilder getMediaDeviceRow(MediaDevice device) {
-        final String deviceName = device.getName();
-        final PendingIntent broadcastAction =
-                getBroadcastIntent(mContext, device.getId(), device.hashCode());
-        final IconCompat deviceIcon = getDeviceIconCompat(device);
-        final ListBuilder.RowBuilder rowBuilder = new ListBuilder.RowBuilder()
-                .setTitleItem(deviceIcon, ListBuilder.ICON_IMAGE);
-
-        if (device.getDeviceType() == MediaDevice.MediaDeviceType.TYPE_BLUETOOTH_DEVICE
-                && !device.isConnected()) {
-            final int state = device.getState();
-            if (state == LocalMediaManager.MediaDeviceState.STATE_CONNECTING_FAILED) {
-                rowBuilder.setTitle(deviceName);
-                rowBuilder.setPrimaryAction(SliceAction.create(broadcastAction, deviceIcon,
-                        ListBuilder.ICON_IMAGE, deviceName));
-                rowBuilder.setSubtitle(mContext.getText(R.string.bluetooth_connect_failed));
-            } else {
-                // Append status to title only for the disconnected Bluetooth device.
-                final SpannableString spannableTitle = new SpannableString(
-                        mContext.getString(R.string.media_output_disconnected_status, deviceName));
-                spannableTitle.setSpan(new ForegroundColorSpan(
-                                Utils.getColorAttrDefaultColor(mContext,
-                                        android.R.attr.textColorSecondary)),
-                        deviceName.length(),
-                        spannableTitle.length(), SPAN_EXCLUSIVE_EXCLUSIVE);
-                rowBuilder.setTitle(spannableTitle);
-                rowBuilder.setPrimaryAction(SliceAction.create(broadcastAction, deviceIcon,
-                        ListBuilder.ICON_IMAGE, spannableTitle));
-            }
-        } else {
-            rowBuilder.setTitle(deviceName);
-            rowBuilder.setPrimaryAction(SliceAction.create(broadcastAction, deviceIcon,
-                    ListBuilder.ICON_IMAGE, deviceName));
-            if (device.getState() == LocalMediaManager.MediaDeviceState.STATE_CONNECTING_FAILED) {
-                rowBuilder.setSubtitle(mContext.getText(R.string.media_output_switch_error_text));
-            }
-        }
-
-        return rowBuilder;
-    }
-
-    private PendingIntent getBroadcastIntent(Context context, String id, int requestCode) {
-        final Intent intent = new Intent(getUri().toString());
-        intent.setClass(context, SliceBroadcastReceiver.class);
-        intent.putExtra(MEDIA_DEVICE_ID, id);
-        intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
-        return PendingIntent.getBroadcast(context, requestCode, intent,
-                PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
-    }
-
-    @Override
-    public Uri getUri() {
-        return MEDIA_OUTPUT_SLICE_URI;
-    }
-
-    @Override
-    public void onNotifyChange(Intent intent) {
-        final MediaDeviceUpdateWorker worker = getWorker();
-        final String id = intent != null ? intent.getStringExtra(MEDIA_DEVICE_ID) : "";
-        if (TextUtils.isEmpty(id)) {
-            return;
-        }
-
-        final int newPosition = intent.getIntExtra(EXTRA_RANGE_VALUE, NON_SLIDER_VALUE);
-        if (TextUtils.equals(id, MEDIA_GROUP_DEVICE)) {
-            // Session volume adjustment
-            worker.adjustSessionVolume(newPosition);
-        } else {
-            final MediaDevice device = worker.getMediaDeviceById(id);
-            if (device == null) {
-                Log.d(TAG, "onNotifyChange: Unable to get device " + id);
-                return;
-            }
-
-            if (newPosition == NON_SLIDER_VALUE) {
-                // Intent for device connection
-                Log.d(TAG, "onNotifyChange: Switch to " + device.getName());
-                worker.setIsTouched(true);
-                worker.connectDevice(device);
-            } else {
-                // Single device volume adjustment
-                worker.adjustVolume(device, newPosition);
-            }
-        }
-    }
-
-    @Override
-    public Intent getIntent() {
-        return null;
-    }
-
-    @Override
-    public Class getBackgroundWorkerClass() {
-        return MediaDeviceUpdateWorker.class;
-    }
-
-    private boolean isVisible() {
-        // To decide Slice's visibility.
-        // Return true if
-        // 1. AudioMode is not in on-going call
-        // 2. worker is not null
-        // 3. Available devices are more than 0
-        return getWorker() != null
-                && !com.android.settingslib.Utils.isAudioModeOngoingCall(mContext)
-                && getWorker().getMediaDevices().size() > 0;
-    }
-}
diff --git a/src/com/android/settings/network/EraseEuiccDataController.java b/src/com/android/settings/network/EraseEuiccDataController.java
new file mode 100644
index 0000000..d221fbd
--- /dev/null
+++ b/src/com/android/settings/network/EraseEuiccDataController.java
@@ -0,0 +1,56 @@
+/*
+ * 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.settings.network;
+
+import android.content.Context;
+import android.text.TextUtils;
+
+import androidx.preference.Preference;
+
+import com.android.settings.core.BasePreferenceController;
+import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settings.system.ResetDashboardFragment;
+
+/**
+ * Controller for erasing Euicc data
+ */
+public class EraseEuiccDataController extends BasePreferenceController implements
+        PreferenceControllerMixin {
+    private ResetDashboardFragment mHostFragment;
+
+    public EraseEuiccDataController(Context context, String preferenceKey) {
+        super(context, preferenceKey);
+    }
+
+    public void setFragment(ResetDashboardFragment hostFragment) {
+        mHostFragment = hostFragment;
+    }
+
+    @Override
+    public boolean handlePreferenceTreeClick(Preference preference) {
+        if (!TextUtils.equals(preference.getKey(), getPreferenceKey())) {
+            return false;
+        }
+        EraseEuiccDataDialogFragment.show(mHostFragment);
+        return true;
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return AVAILABLE_UNSEARCHABLE;
+    }
+}
diff --git a/src/com/android/settings/network/EraseEuiccDataDialogFragment.java b/src/com/android/settings/network/EraseEuiccDataDialogFragment.java
new file mode 100644
index 0000000..3aee9b1
--- /dev/null
+++ b/src/com/android/settings/network/EraseEuiccDataDialogFragment.java
@@ -0,0 +1,85 @@
+/*
+ * 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.settings.network;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.settings.SettingsEnums;
+import android.content.DialogInterface;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.os.RecoverySystem;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+
+import com.android.settings.R;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
+import com.android.settings.system.ResetDashboardFragment;
+
+public class EraseEuiccDataDialogFragment extends InstrumentedDialogFragment implements
+        DialogInterface.OnClickListener {
+
+    public static final String TAG = "EraseEuiccDataDlg";
+    private static final String PACKAGE_NAME_EUICC_DATA_MANAGEMENT_CALLBACK =
+            "com.android.settings.network";
+
+    public static void show(ResetDashboardFragment host) {
+        final EraseEuiccDataDialogFragment dialog = new EraseEuiccDataDialogFragment();
+        dialog.setTargetFragment(host, 0 /* requestCode */);
+        final FragmentManager manager = host.getActivity().getSupportFragmentManager();
+        dialog.show(manager, TAG);
+    }
+
+    @Override
+    public int getMetricsCategory() {
+        return SettingsEnums.RESET_EUICC;
+    }
+
+    @NonNull
+    @Override
+    public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
+        return new AlertDialog.Builder(getActivity())
+                .setTitle(R.string.reset_esim_title)
+                .setMessage(R.string.reset_esim_desc)
+                .setPositiveButton(R.string.erase_euicc_data_button, this)
+                .setNegativeButton(R.string.cancel, null)
+                .setOnDismissListener(this)
+                .create();
+    }
+
+    @Override
+    public void onClick(DialogInterface dialog, int which) {
+        Fragment fragment = getTargetFragment();
+        if (!(fragment instanceof ResetDashboardFragment)) {
+            Log.e(TAG, "getTargetFragment return unexpected type");
+        }
+
+        if (which == DialogInterface.BUTTON_POSITIVE) {
+            AsyncTask.execute(new Runnable() {
+                @Override
+                public void run() {
+                    RecoverySystem.wipeEuiccData(
+                            getContext(), PACKAGE_NAME_EUICC_DATA_MANAGEMENT_CALLBACK);
+                }
+            });
+        }
+    }
+}
diff --git a/src/com/android/settings/network/MobilePlanPreferenceController.java b/src/com/android/settings/network/MobilePlanPreferenceController.java
index 255dfcd..b4135b8 100644
--- a/src/com/android/settings/network/MobilePlanPreferenceController.java
+++ b/src/com/android/settings/network/MobilePlanPreferenceController.java
@@ -145,7 +145,7 @@
             }
 
             // Get provisioning URL
-            String url = mCm.getMobileProvisioningUrl();
+            String url = mTm.getMobileProvisioningUrl();
             if (!TextUtils.isEmpty(url)) {
                 Intent intent = Intent.makeMainSelectorActivity(Intent.ACTION_MAIN,
                         Intent.CATEGORY_APP_BROWSER);
diff --git a/src/com/android/settings/network/NetworkMobileProviderController.java b/src/com/android/settings/network/NetworkMobileProviderController.java
index 4c29256..5dc6c0d 100644
--- a/src/com/android/settings/network/NetworkMobileProviderController.java
+++ b/src/com/android/settings/network/NetworkMobileProviderController.java
@@ -24,6 +24,7 @@
 import androidx.preference.PreferenceScreen;
 
 import com.android.settings.core.BasePreferenceController;
+import com.android.settings.wifi.WifiPickerTrackerHelper;
 import com.android.settingslib.core.lifecycle.Lifecycle;
 
 /**
@@ -115,4 +116,10 @@
         }
         mPreferenceCategory.setVisible(available);
     }
+
+    public void setWifiPickerTrackerHelper(WifiPickerTrackerHelper helper) {
+        if (mSubscriptionsController != null) {
+            mSubscriptionsController.setWifiPickerTrackerHelper(helper);
+        }
+    }
 }
diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java
index 90e3ac4..c4c767b 100644
--- a/src/com/android/settings/network/NetworkProviderSettings.java
+++ b/src/com/android/settings/network/NetworkProviderSettings.java
@@ -27,19 +27,12 @@
 import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
-import android.net.ConnectivityManager;
-import android.net.NetworkScoreManager;
 import android.net.NetworkTemplate;
 import android.net.wifi.WifiConfiguration;
 import android.net.wifi.WifiManager;
 import android.os.Bundle;
 import android.os.Handler;
-import android.os.HandlerThread;
-import android.os.Looper;
 import android.os.PowerManager;
-import android.os.Process;
-import android.os.SimpleClock;
-import android.os.SystemClock;
 import android.provider.Settings;
 import android.text.TextUtils;
 import android.util.FeatureFlagUtils;
@@ -74,6 +67,7 @@
 import com.android.settings.wifi.WifiConfigUiBase2;
 import com.android.settings.wifi.WifiConnectListener;
 import com.android.settings.wifi.WifiDialog2;
+import com.android.settings.wifi.WifiPickerTrackerHelper;
 import com.android.settings.wifi.WifiUtils;
 import com.android.settings.wifi.details2.WifiNetworkDetailsFragment2;
 import com.android.settings.wifi.dpp.WifiDppUtils;
@@ -88,8 +82,6 @@
 import com.android.wifitrackerlib.WifiEntry.ConnectCallback;
 import com.android.wifitrackerlib.WifiPickerTracker;
 
-import java.time.Clock;
-import java.time.ZoneOffset;
 import java.util.List;
 import java.util.Optional;
 
@@ -103,8 +95,10 @@
         implements Indexable, WifiPickerTracker.WifiPickerTrackerCallback,
         WifiDialog2.WifiDialog2Listener, DialogInterface.OnDismissListener {
 
-    private static final String TAG = "NetworkProviderSettings";
+    public static final String ACTION_NETWORK_PROVIDER_SETTINGS =
+            "android.settings.NETWORK_PROVIDER_SETTINGS";
 
+    private static final String TAG = "NetworkProviderSettings";
     // IDs of context menu
     static final int MENU_ID_CONNECT = Menu.FIRST + 1;
     @VisibleForTesting
@@ -113,11 +107,6 @@
     static final int MENU_ID_FORGET = Menu.FIRST + 3;
     static final int MENU_ID_MODIFY = Menu.FIRST + 4;
 
-    // Max age of tracked WifiEntries
-    private static final long MAX_SCAN_AGE_MILLIS = 15_000;
-    // Interval between initiating WifiPickerTracker scans
-    private static final long SCAN_INTERVAL_MILLIS = 10_000;
-
     @VisibleForTesting
     static final int ADD_NETWORK_REQUEST = 2;
     static final int CONFIG_NETWORK_REQUEST = 3;
@@ -185,11 +174,9 @@
      */
     private boolean mIsRestricted;
 
-    // Worker thread used for WifiPickerTracker work
-    private HandlerThread mWorkerThread;
-
     @VisibleForTesting
     WifiPickerTracker mWifiPickerTracker;
+    private WifiPickerTrackerHelper mWifiPickerTrackerHelper;
 
     private WifiDialog2 mDialog;
 
@@ -277,27 +264,9 @@
     public void onActivityCreated(Bundle savedInstanceState) {
         super.onActivityCreated(savedInstanceState);
 
-        final Context context = getContext();
-        mWorkerThread = new HandlerThread(TAG
-                + "{" + Integer.toHexString(System.identityHashCode(this)) + "}",
-                Process.THREAD_PRIORITY_BACKGROUND);
-        mWorkerThread.start();
-        final Clock elapsedRealtimeClock = new SimpleClock(ZoneOffset.UTC) {
-            @Override
-            public long millis() {
-                return SystemClock.elapsedRealtime();
-            }
-        };
-        mWifiPickerTracker = new WifiPickerTracker(getSettingsLifecycle(), context,
-                context.getSystemService(WifiManager.class),
-                context.getSystemService(ConnectivityManager.class),
-                context.getSystemService(NetworkScoreManager.class),
-                new Handler(Looper.getMainLooper()),
-                mWorkerThread.getThreadHandler(),
-                elapsedRealtimeClock,
-                MAX_SCAN_AGE_MILLIS,
-                SCAN_INTERVAL_MILLIS,
-                this);
+        mWifiPickerTrackerHelper =
+                new WifiPickerTrackerHelper(getSettingsLifecycle(), getContext(), this);
+        mWifiPickerTracker = mWifiPickerTrackerHelper.getWifiPickerTracker();
 
         final Activity activity = getActivity();
 
@@ -354,6 +323,10 @@
         if (intent.hasExtra(EXTRA_START_CONNECT_SSID)) {
             mOpenSsid = intent.getStringExtra(EXTRA_START_CONNECT_SSID);
         }
+
+        if (mNetworkMobileProviderController != null) {
+            mNetworkMobileProviderController.setWifiPickerTrackerHelper(mWifiPickerTrackerHelper);
+        }
     }
 
     @Override
@@ -363,13 +336,6 @@
     }
 
     @Override
-    public void onDestroyView() {
-        mWorkerThread.quit();
-
-        super.onDestroyView();
-    }
-
-    @Override
     public void onStart() {
         super.onStart();
 
diff --git a/src/com/android/settings/network/PrivateDnsModeDialogPreference.java b/src/com/android/settings/network/PrivateDnsModeDialogPreference.java
index bdadfe4..4878f31 100644
--- a/src/com/android/settings/network/PrivateDnsModeDialogPreference.java
+++ b/src/com/android/settings/network/PrivateDnsModeDialogPreference.java
@@ -28,7 +28,6 @@
 import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
-import android.net.NetworkUtils;
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.provider.Settings;
@@ -56,6 +55,8 @@
 import com.android.settingslib.RestrictedLockUtils;
 import com.android.settingslib.RestrictedLockUtilsInternal;
 
+import com.google.common.net.InternetDomainName;
+
 import java.util.HashMap;
 import java.util.Map;
 
@@ -278,7 +279,7 @@
         final Button saveButton = getSaveButton();
         if (saveButton != null) {
             saveButton.setEnabled(modeProvider
-                    ? NetworkUtils.isWeaklyValidatedHostname(mEditText.getText().toString())
+                    ? InternetDomainName.isValid(mEditText.getText().toString())
                     : true);
         }
     }
diff --git a/src/com/android/settings/network/ProviderModelSlice.java b/src/com/android/settings/network/ProviderModelSlice.java
new file mode 100644
index 0000000..a495e89
--- /dev/null
+++ b/src/com/android/settings/network/ProviderModelSlice.java
@@ -0,0 +1,216 @@
+/*
+ * 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.settings.network;
+
+
+import static android.app.slice.Slice.EXTRA_TOGGLE_STATE;
+
+import static com.android.settings.slices.CustomSliceRegistry.PROVIDER_MODEL_SLICE_URI;
+
+import android.app.settings.SettingsEnums;
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.telephony.SubscriptionManager;
+import android.util.Log;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.slice.Slice;
+import androidx.slice.builders.ListBuilder;
+
+import com.android.settings.R;
+import com.android.settings.SubSettings;
+import com.android.settings.network.telephony.MobileNetworkUtils;
+import com.android.settings.network.telephony.NetworkProviderWorker;
+import com.android.settings.slices.CustomSliceable;
+import com.android.settings.slices.SliceBackgroundWorker;
+import com.android.settings.slices.SliceBuilderUtils;
+import com.android.settings.wifi.slice.WifiSlice;
+import com.android.settings.wifi.slice.WifiSliceItem;
+import com.android.wifitrackerlib.WifiEntry;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * {@link CustomSliceable} for Wi-Fi and mobile data connection, used by generic clients.
+ */
+// ToDo If the provider model become default design in the future, the code needs to refactor
+// the whole structure and use new "data object", and then split provider model out of old design.
+public class ProviderModelSlice extends WifiSlice {
+
+    private static final String TAG = "ProviderModelSlice";
+    private final ProviderModelSliceHelper mHelper;
+
+    public ProviderModelSlice(Context context) {
+        super(context);
+        mHelper = getHelper();
+    }
+
+    @Override
+    public Uri getUri() {
+        return PROVIDER_MODEL_SLICE_URI;
+    }
+
+    private static void log(String s) {
+        Log.d(TAG, s);
+    }
+
+    protected boolean isApRowCollapsed() {
+        return false;
+    }
+
+    @Override
+    public Slice getSlice() {
+        // The provider model slice step:
+        // First section:  Add a Wi-Fi item which state is connected.
+        // Second section:  Add a carrier item.
+        // Third section:  Add the Wi-Fi items which are not connected.
+        // Fourth section:  If device has connection problem, this row show the message for user.
+
+        if (mHelper.isAirplaneModeEnabled() && !mWifiManager.isWifiEnabled()) {
+            log("Airplane mode is enabled.");
+            // ToDo Next CL will add the Airplane mode Message.
+            return mHelper.createListBuilder(getUri()).build();
+        }
+
+        int maxListSize = 0;
+        List<WifiSliceItem> wifiList = null;
+        final NetworkProviderWorker worker = getWorker();
+        if (worker != null) {
+            // get Wi-Fi list.
+            wifiList = worker.getResults();
+            maxListSize = worker.getApRowCount();
+        } else {
+            log("network provider worker is null.");
+        }
+
+        final boolean hasCarrier = mHelper.hasCarrier();
+        log("hasCarrier: " + hasCarrier);
+
+
+        final ListBuilder listBuilder = mHelper.createListBuilder(getUri());
+
+        // First section:  Add a Wi-Fi item which state is connected.
+        final WifiSliceItem connectedWifiItem = mHelper.getConnectedWifiItem(wifiList);
+        if (connectedWifiItem != null) {
+            log("get Wi-Fi item witch is connected");
+            listBuilder.addRow(getWifiSliceItemRow(connectedWifiItem));
+            maxListSize--;
+        }
+
+        // Second section:  Add a carrier item.
+        if (hasCarrier) {
+            listBuilder.addRow(mHelper.createCarrierRow());
+            maxListSize--;
+        }
+
+        // Third section:  Add the Wi-Fi items which are not connected.
+        if (wifiList != null) {
+            log("get Wi-Fi items which are not connected");
+            final List<WifiSliceItem> disconnectedWifiList = wifiList.stream()
+                    .filter(wifiSliceItem -> wifiSliceItem.getConnectedState()
+                            != WifiEntry.CONNECTED_STATE_CONNECTED)
+                    .limit(maxListSize)
+                    .collect(Collectors.toList());
+            for (WifiSliceItem item : disconnectedWifiList) {
+                listBuilder.addRow(getWifiSliceItemRow(item));
+            }
+        }
+
+        // Fourth section:  If device has connection problem, this row show the message for user.
+        // 1) show non_carrier_network_unavailable:
+        //    - while no wifi item
+        // 2) show all_network_unavailable:
+        //    - while no wifi item + no carrier
+        //    - while no wifi item + no data capability
+        if (worker == null || wifiList == null) {
+            log("wifiList is null");
+            int resId = R.string.non_carrier_network_unavailable;
+            if (!hasCarrier || mHelper.isNoCarrierData()) {
+                log("No carrier item or no carrier data.");
+                resId = R.string.all_network_unavailable;
+            }
+
+            if (!hasCarrier) {
+                // If there is no item in ProviderModelItem, slice needs a header.
+                listBuilder.setHeader(mHelper.createHeader());
+            }
+            listBuilder.addGridRow(mHelper.createMessageGridRow(resId));
+        }
+
+        return listBuilder.build();
+    }
+
+    /**
+     * Update the current carrier's mobile data status.
+     */
+    @Override
+    public void onNotifyChange(Intent intent) {
+        final SubscriptionManager subscriptionManager = mHelper.getSubscriptionManager();
+        if (subscriptionManager == null) {
+            return;
+        }
+        final int defaultSubId = subscriptionManager.getDefaultDataSubscriptionId();
+        log("defaultSubId:" + defaultSubId);
+        if (!SubscriptionManager.isUsableSubscriptionId(defaultSubId)) {
+            return; // No subscription - do nothing.
+        }
+        boolean requestConnectCarrier = !intent.hasExtra(EXTRA_TOGGLE_STATE);
+        // Enable the mobile data always if the user requests to connect to the carrier network.
+        boolean newState = requestConnectCarrier ? true
+                : intent.getBooleanExtra(EXTRA_TOGGLE_STATE, mHelper.isMobileDataEnabled());
+
+        MobileNetworkUtils.setMobileDataEnabled(mContext, defaultSubId, newState,
+                false /* disableOtherSubscriptions */);
+
+        final NetworkProviderWorker worker = getWorker();
+        if (worker == null) {
+            return;
+        }
+        if (requestConnectCarrier) {
+            worker.connectCarrierNetwork();
+        } else {
+            worker.setCarrierNetworkEnabled(newState);
+        }
+    }
+
+    @Override
+    public Intent getIntent() {
+        final String screenTitle = mContext.getText(R.string.provider_internet_settings).toString();
+        return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
+                NetworkProviderSettings.class.getName(), "" /* key */, screenTitle,
+                SettingsEnums.SLICE)
+                .setClassName(mContext.getPackageName(), SubSettings.class.getName())
+                .setData(getUri());
+    }
+
+    @Override
+    public Class getBackgroundWorkerClass() {
+        return NetworkProviderWorker.class;
+    }
+
+    @VisibleForTesting
+    ProviderModelSliceHelper getHelper() {
+        return new ProviderModelSliceHelper(mContext, this);
+    }
+
+    @VisibleForTesting
+    NetworkProviderWorker getWorker() {
+        return SliceBackgroundWorker.getInstance(getUri());
+    }
+}
diff --git a/src/com/android/settings/network/ProviderModelSliceHelper.java b/src/com/android/settings/network/ProviderModelSliceHelper.java
new file mode 100644
index 0000000..3164af4
--- /dev/null
+++ b/src/com/android/settings/network/ProviderModelSliceHelper.java
@@ -0,0 +1,278 @@
+/*
+ * 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.settings.network;
+
+import static com.android.settings.network.telephony.MobileNetworkUtils.NO_CELL_DATA_TYPE_ICON;
+
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
+import android.graphics.drawable.Drawable;
+import android.net.Uri;
+import android.telephony.ServiceState;
+import android.telephony.SignalStrength;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+import android.text.TextUtils;
+import android.util.Log;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+import androidx.core.graphics.drawable.IconCompat;
+import androidx.slice.builders.GridRowBuilder;
+import androidx.slice.builders.ListBuilder;
+import androidx.slice.builders.SliceAction;
+
+import com.android.settings.R;
+import com.android.settings.Utils;
+import com.android.settings.network.telephony.MobileNetworkUtils;
+import com.android.settings.slices.CustomSliceable;
+import com.android.settings.wifi.slice.WifiSliceItem;
+import com.android.settingslib.WirelessUtils;
+import com.android.settingslib.net.SignalStrengthUtil;
+import com.android.settingslib.utils.ThreadUtils;
+import com.android.wifitrackerlib.WifiEntry;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Optional;
+import java.util.Set;
+import java.util.concurrent.Semaphore;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.stream.Collectors;
+
+/**
+ * The helper is for slice of carrier and non-Carrier, used by ProviderModelSlice.
+ */
+public class ProviderModelSliceHelper {
+    private static final String TAG = "ProviderModelSlice";
+    private final SubscriptionManager mSubscriptionManager;
+    private final TelephonyManager mTelephonyManager;
+    protected final Context mContext;
+    private CustomSliceable mSliceable;
+
+    public ProviderModelSliceHelper(Context context, CustomSliceable sliceable) {
+        mContext = context;
+        mSliceable = sliceable;
+        mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
+        mTelephonyManager = context.getSystemService(TelephonyManager.class);
+    }
+
+    private static void log(String s) {
+        Log.d(TAG, s);
+    }
+
+    protected ListBuilder.HeaderBuilder createHeader() {
+        return new ListBuilder.HeaderBuilder()
+                .setTitle(mContext.getText(R.string.summary_placeholder))
+                .setPrimaryAction(getPrimarySliceAction());
+    }
+
+    protected ListBuilder createListBuilder(Uri uri) {
+        final ListBuilder builder = new ListBuilder(mContext, uri, ListBuilder.INFINITY)
+                .setAccentColor(-1)
+                .setKeywords(getKeywords());
+        return builder;
+    }
+
+    protected GridRowBuilder createMessageGridRow(int messageResId) {
+        final CharSequence title = mContext.getText(messageResId);
+        return new GridRowBuilder()
+                // Add cells to the grid row.
+                .addCell(new GridRowBuilder.CellBuilder().addTitleText(title))
+                .setPrimaryAction(getPrimarySliceAction());
+    }
+
+    @Nullable
+    protected WifiSliceItem getConnectedWifiItem(List<WifiSliceItem> wifiList) {
+        if (wifiList == null) {
+            return null;
+        }
+        Optional<WifiSliceItem> item = wifiList.stream()
+                .filter(x -> x.getConnectedState() == WifiEntry.CONNECTED_STATE_CONNECTED)
+                .findFirst();
+        return item.isPresent() ? item.get() : null;
+    }
+
+    protected boolean hasCarrier() {
+        if (isAirplaneModeEnabled()
+                || mSubscriptionManager == null || mTelephonyManager == null
+                || mSubscriptionManager.getDefaultDataSubscriptionId()
+                == mSubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+            return false;
+        }
+        return true;
+    }
+
+    protected ListBuilder.RowBuilder createCarrierRow() {
+        final String title = getMobileTitle();
+        final String summary = getMobileSummary();
+        Drawable drawable = mContext.getDrawable(
+                R.drawable.ic_signal_strength_zero_bar_no_internet);
+        try {
+            drawable = getMobileDrawable(drawable);
+        } catch (Throwable e) {
+            e.printStackTrace();
+        }
+        final IconCompat levelIcon = Utils.createIconWithDrawable(drawable);
+        final PendingIntent rowIntent = mSliceable.getBroadcastIntent(mContext);
+        final SliceAction primaryAction = SliceAction.create(rowIntent,
+                levelIcon, ListBuilder.ICON_IMAGE, title);
+        final SliceAction toggleAction = SliceAction.createToggle(rowIntent,
+                "mobile_toggle" /* actionTitle */, isMobileDataEnabled());
+        final ListBuilder.RowBuilder rowBuilder = new ListBuilder.RowBuilder()
+                .setTitle(title)
+                .setTitleItem(levelIcon, ListBuilder.ICON_IMAGE)
+                .addEndItem(toggleAction)
+                .setPrimaryAction(primaryAction)
+                .setSubtitle(summary);
+        return rowBuilder;
+    }
+
+    protected SliceAction getPrimarySliceAction() {
+        return SliceAction.createDeeplink(
+                getPrimaryAction(),
+                Utils.createIconWithDrawable(new ColorDrawable(Color.TRANSPARENT)),
+                ListBuilder.ICON_IMAGE, mContext.getText(R.string.summary_placeholder));
+    }
+
+    private PendingIntent getPrimaryAction() {
+        final Intent intent = new Intent("android.settings.NETWORK_PROVIDER_SETTINGS")
+                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        return PendingIntent.getActivity(mContext, 0 /* requestCode */,
+                intent, PendingIntent.FLAG_IMMUTABLE /* flags */);
+    }
+
+    private boolean shouldInflateSignalStrength(int subId) {
+        return SignalStrengthUtil.shouldInflateSignalStrength(mContext, subId);
+    }
+
+    protected boolean isAirplaneModeEnabled() {
+        return WirelessUtils.isAirplaneModeOn(mContext);
+    }
+
+    protected boolean isMobileDataEnabled() {
+        if (mTelephonyManager == null) {
+            return false;
+        }
+        return mTelephonyManager.isDataEnabled();
+    }
+
+    protected boolean isDataSimActive() {
+        return MobileNetworkUtils.activeNetworkIsCellular(mContext);
+    }
+
+    protected boolean isNoCarrierData() {
+        if (mTelephonyManager == null) {
+            return false;
+        }
+        boolean mobileDataOnAndNoData = isMobileDataEnabled()
+                && mTelephonyManager.getDataState() != mTelephonyManager.DATA_CONNECTED;
+        ServiceState serviceState = mTelephonyManager.getServiceState();
+        boolean mobileDataOffAndOutOfService = !isMobileDataEnabled() && serviceState != null
+                && serviceState.getState() == serviceState.STATE_OUT_OF_SERVICE;
+        log("mobileDataOnAndNoData: " + mobileDataOnAndNoData
+                + ",mobileDataOffAndOutOfService: " + mobileDataOffAndOutOfService);
+        return mobileDataOnAndNoData || mobileDataOffAndOutOfService;
+    }
+
+    private boolean isAirplaneSafeNetworksModeEnabled() {
+        // TODO: isAirplaneSafeNetworksModeEnabled is not READY
+        return false;
+    }
+
+    @VisibleForTesting
+    Drawable getMobileDrawable(Drawable drawable) throws Throwable {
+        // set color and drawable
+        if (mTelephonyManager == null) {
+            log("mTelephonyManager == null");
+            return drawable;
+        }
+        if (!isNoCarrierData()) {
+            Semaphore lock = new Semaphore(0);
+            AtomicReference<Drawable> shared = new AtomicReference<>();
+            ThreadUtils.postOnMainThread(() -> {
+                shared.set(getDrawableWithSignalStrength());
+                lock.release();
+            });
+            lock.acquire();
+            drawable = shared.get();
+        }
+
+        if (isDataSimActive()) {
+            drawable.setTint(Utils.getColorAccentDefaultColor(mContext));
+        }
+        return drawable;
+    }
+
+    /**
+     * To get the signal bar icon with level.
+     *
+     * @return The Drawable which is a signal bar icon with level.
+     */
+    public Drawable getDrawableWithSignalStrength() {
+        final SignalStrength strength = mTelephonyManager.getSignalStrength();
+        int level = (strength == null) ? 0 : strength.getLevel();
+        int numLevels = SignalStrength.NUM_SIGNAL_STRENGTH_BINS;
+        if (mSubscriptionManager != null && shouldInflateSignalStrength(
+                mSubscriptionManager.getDefaultDataSubscriptionId())) {
+            level += 1;
+            numLevels += 1;
+        }
+        return MobileNetworkUtils.getSignalStrengthIcon(mContext, level, numLevels,
+                NO_CELL_DATA_TYPE_ICON, false);
+    }
+
+    private String getMobileSummary() {
+        String summary = "";
+        //TODO: get radio technology.
+        String networkType = "";
+        if (isDataSimActive()) {
+            summary = mContext.getString(R.string.preference_summary_default_combination,
+                    mContext.getString(R.string.mobile_data_connection_active), networkType);
+        } else if (!isMobileDataEnabled()) {
+            summary = mContext.getString(R.string.mobile_data_off_summary);
+        }
+        return summary;
+    }
+
+    private String getMobileTitle() {
+        String title = mContext.getText(R.string.mobile_data_settings_title).toString();
+        if (mSubscriptionManager == null) {
+            return title;
+        }
+        final SubscriptionInfo defaultSubscription = mSubscriptionManager.getActiveSubscriptionInfo(
+                mSubscriptionManager.getDefaultDataSubscriptionId());
+        if (defaultSubscription != null) {
+            title = defaultSubscription.getDisplayName().toString();
+        }
+        return title;
+    }
+
+    protected SubscriptionManager getSubscriptionManager() {
+        return mSubscriptionManager;
+    }
+
+    private Set<String> getKeywords() {
+        final String keywords = mContext.getString(R.string.keywords_internet);
+        return Arrays.stream(TextUtils.split(keywords, ","))
+                .map(String::trim)
+                .collect(Collectors.toSet());
+    }
+}
diff --git a/src/com/android/settings/network/SubscriptionsPreferenceController.java b/src/com/android/settings/network/SubscriptionsPreferenceController.java
index 864078c..6e67543 100644
--- a/src/com/android/settings/network/SubscriptionsPreferenceController.java
+++ b/src/com/android/settings/network/SubscriptionsPreferenceController.java
@@ -21,10 +21,13 @@
 
 import static com.android.settings.network.telephony.MobileNetworkUtils.NO_CELL_DATA_TYPE_ICON;
 
+import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
+import android.content.IntentFilter;
 import android.graphics.drawable.Drawable;
 import android.provider.Settings;
+import android.telephony.ServiceState;
 import android.telephony.SignalStrength;
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
@@ -46,6 +49,8 @@
 import com.android.settings.network.telephony.MobileNetworkActivity;
 import com.android.settings.network.telephony.MobileNetworkUtils;
 import com.android.settings.network.telephony.SignalStrengthListener;
+import com.android.settings.widget.GearPreference;
+import com.android.settings.wifi.WifiPickerTrackerHelper;
 import com.android.settingslib.core.AbstractPreferenceController;
 import com.android.settingslib.net.SignalStrengthUtil;
 
@@ -55,9 +60,15 @@
 import java.util.Set;
 
 /**
- * This manages a set of Preferences it places into a PreferenceGroup owned by some parent
+ * If the provider model is not enabled, this controller manages a set of Preferences it places into
+ * a PreferenceGroup owned by some parent
  * controller class - one for each available subscription. This controller is only considered
  * available if there are 2 or more subscriptions.
+ *
+ * If the provider model is enabled, this controller manages preference with data subscription
+ * information and make its state display on preference.
+ * TODO this class will clean up the multiple subscriptions functionality after the provider
+ * model is released.
  */
 public class SubscriptionsPreferenceController extends AbstractPreferenceController implements
         LifecycleObserver, SubscriptionsChangeListener.SubscriptionsChangeListenerClient,
@@ -68,16 +79,31 @@
     private UpdateListener mUpdateListener;
     private String mPreferenceGroupKey;
     private PreferenceGroup mPreferenceGroup;
-    private SubscriptionManager mManager;
+    private TelephonyManager mTelephonyManager;
+    private SubscriptionManager mSubscriptionManager;
     private SubscriptionsChangeListener mSubscriptionsListener;
     private MobileDataEnabledListener mDataEnabledListener;
     private DataConnectivityListener mConnectivityListener;
     private SignalStrengthListener mSignalStrengthListener;
+    private WifiPickerTrackerHelper mWifiPickerTrackerHelper;
 
+    @VisibleForTesting
+    final BroadcastReceiver mDataSubscriptionChangedReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            final String action = intent.getAction();
+            if (action.equals(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED)) {
+                update();
+            }
+        }
+    };
 
     // Map of subscription id to Preference
     private Map<Integer, Preference> mSubscriptionPreferences;
     private int mStartOrder;
+    private GearPreference mSubsGearPref;
+
+    private SubsPrefCtrlInjector mSubsPrefCtrlInjector;
     /**
      * This interface lets a parent of this class know that some change happened - this could
      * either be because overall availability changed, or because we've added/removed/updated some
@@ -107,21 +133,37 @@
         mUpdateListener = updateListener;
         mPreferenceGroupKey = preferenceGroupKey;
         mStartOrder = startOrder;
-        mManager = context.getSystemService(SubscriptionManager.class);
+        mTelephonyManager = context.getSystemService(TelephonyManager.class);
+        mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
         mSubscriptionPreferences = new ArrayMap<>();
         mSubscriptionsListener = new SubscriptionsChangeListener(context, this);
         mDataEnabledListener = new MobileDataEnabledListener(context, this);
         mConnectivityListener = new DataConnectivityListener(context, this);
         mSignalStrengthListener = new SignalStrengthListener(context, this);
         lifecycle.addObserver(this);
+        mSubsPrefCtrlInjector = createSubsPrefCtrlInjector();
+    }
+
+    private void registerDataSubscriptionChangedReceiver() {
+        IntentFilter filter = new IntentFilter();
+        filter.addAction(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED);
+        mContext.registerReceiver(mDataSubscriptionChangedReceiver, filter);
+    }
+
+    private void unRegisterDataSubscriptionChangedReceiver() {
+        if (mDataSubscriptionChangedReceiver != null) {
+            mContext.unregisterReceiver(mDataSubscriptionChangedReceiver);
+        }
+
     }
 
     @OnLifecycleEvent(ON_RESUME)
     public void onResume() {
         mSubscriptionsListener.start();
-        mDataEnabledListener.start(SubscriptionManager.getDefaultDataSubscriptionId());
+        mDataEnabledListener.start(mSubsPrefCtrlInjector.getDefaultDataSubscriptionId());
         mConnectivityListener.start();
         mSignalStrengthListener.resume();
+        registerDataSubscriptionChangedReceiver();
         update();
     }
 
@@ -131,6 +173,7 @@
         mDataEnabledListener.stop();
         mConnectivityListener.stop();
         mSignalStrengthListener.pause();
+        unRegisterDataSubscriptionChangedReceiver();
     }
 
     @Override
@@ -143,29 +186,116 @@
         if (mPreferenceGroup == null) {
             return;
         }
-
         if (!isAvailable()) {
+            if (mSubsGearPref != null) {
+                mPreferenceGroup.removePreference(mSubsGearPref);
+            }
             for (Preference pref : mSubscriptionPreferences.values()) {
                 mPreferenceGroup.removePreference(pref);
             }
+
             mSubscriptionPreferences.clear();
             mSignalStrengthListener.updateSubscriptionIds(Collections.emptySet());
             mUpdateListener.onChildrenUpdated();
             return;
         }
 
+        if (mSubsPrefCtrlInjector.isProviderModelEnabled(mContext)) {
+            updateForProvider();
+        } else {
+            updateForBase();
+        }
+    }
+
+    private void updateForProvider() {
+        SubscriptionInfo subInfo = mSubscriptionManager.getDefaultDataSubscriptionInfo();
+        if (subInfo == null) {
+            mPreferenceGroup.removeAll();
+            return;
+        }
+        if (mSubsGearPref == null) {
+            mPreferenceGroup.removeAll();
+            mSubsGearPref = new GearPreference(mContext, null);
+            mSubsGearPref.setOnPreferenceClickListener(preference -> {
+                connectCarrierNetwork();
+                return true;
+            });
+            mSubsGearPref.setOnGearClickListener(p ->
+                    startMobileNetworkActivity(mContext, subInfo.getSubscriptionId()));
+        }
+
+        mSubsGearPref.setTitle(subInfo.getDisplayName());
+        mSubsGearPref.setOrder(mStartOrder);
+        //TODO(b/176141828) Wait for api provided by system ui.
+        mSubsGearPref.setSummary(getMobilePreferenceSummary());
+        mSubsGearPref.setIcon(getIcon(subInfo.getSubscriptionId()));
+        mPreferenceGroup.addPreference(mSubsGearPref);
+
+        final Set<Integer> activeDataSubIds = new ArraySet<>();
+        activeDataSubIds.add(subInfo.getSubscriptionId());
+        mSignalStrengthListener.updateSubscriptionIds(activeDataSubIds);
+        mUpdateListener.onChildrenUpdated();
+    }
+
+    private String getMobilePreferenceSummary() {
+        //TODO(b/176141828) Waiting for the api provided by system UI.
+        String result = "5G";
+        if (MobileNetworkUtils.activeNetworkIsCellular(mContext)) {
+            result = "Active, " + result;
+        }
+        return result;
+    }
+
+    private Drawable getIcon(int subId) {
+        final TelephonyManager tmForSubId = mTelephonyManager.createForSubscriptionId(subId);
+        final SignalStrength strength = tmForSubId.getSignalStrength();
+        int level = (strength == null) ? 0 : strength.getLevel();
+
+        int numLevels = SignalStrength.NUM_SIGNAL_STRENGTH_BINS;
+        if (shouldInflateSignalStrength(subId)) {
+            level += 1;
+            numLevels += 1;
+        }
+
+        final boolean isMobileDataOn = tmForSubId.isDataEnabled();
+        final boolean isActiveCellularNetwork =
+                mSubsPrefCtrlInjector.isActiveCellularNetwork(mContext);
+        final boolean isMobileDataAccessible = tmForSubId.getDataState()
+                == TelephonyManager.DATA_CONNECTED;
+        final ServiceState serviceState = tmForSubId.getServiceState();
+        final boolean isVoiceOutOfService = (serviceState == null)
+                ? true
+                : (serviceState.getState() == ServiceState.STATE_OUT_OF_SERVICE);
+
+        Drawable icon = mSubsPrefCtrlInjector.getIcon(mContext, level, numLevels, false);
+
+        if (isActiveCellularNetwork) {
+            icon.setTint(Utils.getColorAccentDefaultColor(mContext));
+            return icon;
+        }
+        if ((isMobileDataOn && isMobileDataAccessible)
+                || (!isMobileDataOn && !isVoiceOutOfService)) {
+            return icon;
+        }
+
+        icon = mContext.getDrawable(R.drawable.ic_signal_strength_zero_bar_no_internet);
+        return icon;
+    }
+
+    private void updateForBase() {
         final Map<Integer, Preference> existingPrefs = mSubscriptionPreferences;
         mSubscriptionPreferences = new ArrayMap<>();
 
         int order = mStartOrder;
         final Set<Integer> activeSubIds = new ArraySet<>();
-        final int dataDefaultSubId = SubscriptionManager.getDefaultDataSubscriptionId();
-        for (SubscriptionInfo info : SubscriptionUtil.getActiveSubscriptions(mManager)) {
+        final int dataDefaultSubId = mSubsPrefCtrlInjector.getDefaultDataSubscriptionId();
+        for (SubscriptionInfo info :
+                SubscriptionUtil.getActiveSubscriptions(mSubscriptionManager)) {
             final int subId = info.getSubscriptionId();
             // Avoid from showing subscription(SIM)s which has been marked as hidden
             // For example, only one subscription will be shown when there're multiple
             // subscriptions with same group UUID.
-            if (!isSubscriptionCanBeDisplayed(mContext, subId)) {
+            if (!mSubsPrefCtrlInjector.canSubscriptionBeDisplayed(mContext, subId)) {
                 continue;
             }
             activeSubIds.add(subId);
@@ -181,9 +311,7 @@
             pref.setOrder(order++);
 
             pref.setOnPreferenceClickListener(clickedPref -> {
-                final Intent intent = new Intent(mContext, MobileNetworkActivity.class);
-                intent.putExtra(Settings.EXTRA_SUB_ID, subId);
-                mContext.startActivity(intent);
+                startMobileNetworkActivity(mContext, subId);
                 return true;
             });
 
@@ -198,6 +326,12 @@
         mUpdateListener.onChildrenUpdated();
     }
 
+    private static void startMobileNetworkActivity(Context context, int subId) {
+        final Intent intent = new Intent(context, MobileNetworkActivity.class);
+        intent.putExtra(Settings.EXTRA_SUB_ID, subId);
+        context.startActivity(intent);
+    }
+
     @VisibleForTesting
     boolean shouldInflateSignalStrength(int subId) {
         return SignalStrengthUtil.shouldInflateSignalStrength(mContext, subId);
@@ -214,14 +348,9 @@
             level += 1;
             numLevels += 1;
         }
-        final boolean showCutOut = !isDefaultForData || !mgr.isDataEnabled();
-        pref.setIcon(getIcon(level, numLevels, showCutOut));
-    }
 
-    @VisibleForTesting
-    Drawable getIcon(int level, int numLevels, boolean cutOut) {
-        return MobileNetworkUtils.getSignalStrengthIcon(mContext, level, numLevels,
-                NO_CELL_DATA_TYPE_ICON, cutOut);
+        final boolean showCutOut = !isDefaultForData || !mgr.isDataEnabled();
+        pref.setIcon(mSubsPrefCtrlInjector.getIcon(mContext, level, numLevels, showCutOut));
     }
 
     /**
@@ -236,8 +365,8 @@
      * If a subscription isn't the default for anything, we just say it is available.
      */
     protected String getSummary(int subId, boolean isDefaultForData) {
-        final int callsDefaultSubId = SubscriptionManager.getDefaultVoiceSubscriptionId();
-        final int smsDefaultSubId = SubscriptionManager.getDefaultSmsSubscriptionId();
+        final int callsDefaultSubId = mSubsPrefCtrlInjector.getDefaultVoiceSubscriptionId();
+        final int smsDefaultSubId = mSubsPrefCtrlInjector.getDefaultSmsSubscriptionId();
 
         String line1 = null;
         if (subId == callsDefaultSubId && subId == smsDefaultSubId) {
@@ -253,7 +382,7 @@
             final TelephonyManager telMgrForSub = mContext.getSystemService(
                     TelephonyManager.class).createForSubscriptionId(subId);
             final boolean dataEnabled = telMgrForSub.isDataEnabled();
-            if (dataEnabled && MobileNetworkUtils.activeNetworkIsCellular(mContext)) {
+            if (dataEnabled && mSubsPrefCtrlInjector.isActiveCellularNetwork(mContext)) {
                 line2 = mContext.getString(R.string.mobile_data_active);
             } else if (!dataEnabled) {
                 line2 = mContext.getString(R.string.mobile_data_off);
@@ -274,14 +403,16 @@
     }
 
     /**
-     * @return true if there are at least 2 available subscriptions.
+     * @return true if there are at least 2 available subscriptions,
+     * or if there is at least 1 available subscription for provider model.
      */
     @Override
     public boolean isAvailable() {
         if (mSubscriptionsListener.isAirplaneModeOn()) {
             return false;
         }
-        List<SubscriptionInfo> subInfoList = SubscriptionUtil.getActiveSubscriptions(mManager);
+        List<SubscriptionInfo> subInfoList =
+                SubscriptionUtil.getActiveSubscriptions(mSubscriptionManager);
         if (subInfoList == null) {
             return false;
         }
@@ -290,8 +421,9 @@
                 // For example, only one subscription will be shown when there're multiple
                 // subscriptions with same group UUID.
                 .filter(subInfo ->
-                        isSubscriptionCanBeDisplayed(mContext, subInfo.getSubscriptionId()))
-                .count() >= (Utils.isProviderModelEnabled(mContext) ? 1 : 2);
+                        mSubsPrefCtrlInjector.canSubscriptionBeDisplayed(mContext,
+                                subInfo.getSubscriptionId()))
+                .count() >= (mSubsPrefCtrlInjector.isProviderModelEnabled(mContext) ? 1 : 2);
     }
 
     @Override
@@ -307,7 +439,7 @@
     @Override
     public void onSubscriptionsChanged() {
         // See if we need to change which sub id we're using to listen for enabled/disabled changes.
-        int defaultDataSubId = SubscriptionManager.getDefaultDataSubscriptionId();
+        int defaultDataSubId = mSubsPrefCtrlInjector.getDefaultDataSubscriptionId();
         if (defaultDataSubId != mDataEnabledListener.getSubId()) {
             mDataEnabledListener.stop();
             mDataEnabledListener.start(defaultDataSubId);
@@ -331,8 +463,83 @@
     }
 
     @VisibleForTesting
-    boolean isSubscriptionCanBeDisplayed(Context context, int subId) {
+    boolean canSubscriptionBeDisplayed(Context context, int subId) {
         return (SubscriptionUtil.getAvailableSubscription(context,
                 ProxySubscriptionManager.getInstance(context), subId) != null);
     }
-}
+
+    public void setWifiPickerTrackerHelper(WifiPickerTrackerHelper helper) {
+        mWifiPickerTrackerHelper = helper;
+    }
+
+    @VisibleForTesting
+    public void connectCarrierNetwork() {
+        if (mTelephonyManager == null || !mTelephonyManager.isDataEnabled()) {
+            return;
+        }
+        if (mWifiPickerTrackerHelper != null) {
+            mWifiPickerTrackerHelper.connectCarrierNetwork(null /* ConnectCallback */);
+        }
+    }
+
+    SubsPrefCtrlInjector createSubsPrefCtrlInjector() {
+        return new SubsPrefCtrlInjector();
+    }
+
+    /**
+     * To inject necessary data from each static api.
+     */
+    @VisibleForTesting
+    public static class SubsPrefCtrlInjector {
+        /**
+         * Use to inject function and value for class and test class.
+         */
+        public boolean canSubscriptionBeDisplayed(Context context, int subId) {
+            return (SubscriptionUtil.getAvailableSubscription(context,
+                    ProxySubscriptionManager.getInstance(context), subId) != null);
+        }
+
+        /**
+         * Check SIM be able to display on UI.
+         */
+        public int getDefaultSmsSubscriptionId() {
+            return SubscriptionManager.getDefaultSmsSubscriptionId();
+        }
+
+        /**
+         * Get default voice subscription ID.
+         */
+        public int getDefaultVoiceSubscriptionId() {
+            return SubscriptionManager.getDefaultVoiceSubscriptionId();
+        }
+
+        /**
+         * Get default data subscription ID.
+         */
+        public int getDefaultDataSubscriptionId() {
+            return SubscriptionManager.getDefaultDataSubscriptionId();
+        }
+
+        /**
+         * Confirm the current network is cellular and active.
+         */
+        public boolean isActiveCellularNetwork(Context context) {
+            return MobileNetworkUtils.activeNetworkIsCellular(context);
+        }
+
+        /**
+         * Confirm the flag of Provider Model switch is turned on or not.
+         */
+        public boolean isProviderModelEnabled(Context context) {
+            return Utils.isProviderModelEnabled(context);
+        }
+
+        /**
+         * Get signal icon with different signal level.
+         */
+        public Drawable getIcon(Context context, int level, int numLevels, boolean cutOut) {
+            return MobileNetworkUtils.getSignalStrengthIcon(context, level, numLevels,
+                    NO_CELL_DATA_TYPE_ICON, cutOut);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/android/settings/network/telephony/ContactDiscoveryPreferenceController.java b/src/com/android/settings/network/telephony/ContactDiscoveryPreferenceController.java
index 6eebe6b..eead41f 100644
--- a/src/com/android/settings/network/telephony/ContactDiscoveryPreferenceController.java
+++ b/src/com/android/settings/network/telephony/ContactDiscoveryPreferenceController.java
@@ -98,8 +98,11 @@
     @Override
     public int getAvailabilityStatus(int subId) {
         PersistableBundle bundle = mCarrierConfigManager.getConfigForSubId(subId);
-        boolean shouldShowPresence = bundle != null && bundle.getBoolean(
-                CarrierConfigManager.KEY_USE_RCS_PRESENCE_BOOL, false /*default*/);
+        boolean shouldShowPresence = bundle != null
+                && (bundle.getBoolean(
+                CarrierConfigManager.KEY_USE_RCS_PRESENCE_BOOL, false /*default*/)
+                || bundle.getBoolean(
+                CarrierConfigManager.Ims.KEY_RCS_BULK_CAPABILITY_EXCHANGE_BOOL, false /*default*/));
         return shouldShowPresence ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
     }
 
diff --git a/src/com/android/settings/network/telephony/DeleteEuiccSubscriptionDialogActivity.java b/src/com/android/settings/network/telephony/DeleteEuiccSubscriptionDialogActivity.java
index 6186de3..8257bf3 100644
--- a/src/com/android/settings/network/telephony/DeleteEuiccSubscriptionDialogActivity.java
+++ b/src/com/android/settings/network/telephony/DeleteEuiccSubscriptionDialogActivity.java
@@ -54,7 +54,6 @@
     private DeleteEuiccSubscriptionSidecar mDeleteEuiccSubscriptionSidecar;
     private List<SubscriptionInfo> mSubscriptionsToBeDeleted;
     private SubscriptionInfo mSubscriptionToBeDeleted;
-    private AlertDialog mDeleteSimConfirmDialog;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -65,14 +64,14 @@
         mSubscriptionToBeDeleted = SubscriptionUtil.getSubById(mSubscriptionManager, subId);
         mSubscriptionsToBeDeleted =
                 SubscriptionUtil.findAllSubscriptionsInGroup(mSubscriptionManager, subId);
-        mDeleteEuiccSubscriptionSidecar = DeleteEuiccSubscriptionSidecar.get(getFragmentManager());
 
-        if (mSubscriptionToBeDeleted == null || mDeleteEuiccSubscriptionSidecar == null) {
+        if (mSubscriptionToBeDeleted == null || mSubscriptionsToBeDeleted.isEmpty()) {
             Log.e(TAG, "Cannot find subscription with sub ID: " + subId);
             finish();
             return;
         }
 
+        mDeleteEuiccSubscriptionSidecar = DeleteEuiccSubscriptionSidecar.get(getFragmentManager());
         if (savedInstanceState == null) {
             showDeleteSimConfirmDialog();
         }
diff --git a/src/com/android/settings/network/telephony/Enhanced4gLteSliceHelper.java b/src/com/android/settings/network/telephony/Enhanced4gLteSliceHelper.java
index d2eab3e..158becc 100644
--- a/src/com/android/settings/network/telephony/Enhanced4gLteSliceHelper.java
+++ b/src/com/android/settings/network/telephony/Enhanced4gLteSliceHelper.java
@@ -270,7 +270,7 @@
         final Intent intent = new Intent(action);
         intent.setClass(mContext, SliceBroadcastReceiver.class);
         return PendingIntent.getBroadcast(mContext, 0 /* requestCode */, intent,
-                PendingIntent.FLAG_CANCEL_CURRENT);
+                PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE);
     }
 
     /**
@@ -287,7 +287,8 @@
         final Intent intent = new Intent(action);
         intent.setPackage(SETTINGS_PACKAGE_NAME);
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        return PendingIntent.getActivity(mContext, 0 /* requestCode */, intent, 0 /* flags */);
+        return PendingIntent.getActivity(mContext, 0 /* requestCode */, intent,
+                PendingIntent.FLAG_IMMUTABLE);
     }
 
     @VisibleForTesting
diff --git a/src/com/android/settings/network/telephony/EuiccOperationSidecar.java b/src/com/android/settings/network/telephony/EuiccOperationSidecar.java
index 3bda9c5..c82220e 100644
--- a/src/com/android/settings/network/telephony/EuiccOperationSidecar.java
+++ b/src/com/android/settings/network/telephony/EuiccOperationSidecar.java
@@ -105,7 +105,7 @@
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        mEuiccManager = (EuiccManager) getContext().getSystemService(Context.EUICC_SERVICE);
+        mEuiccManager = getContext().getSystemService(EuiccManager.class);
 
         getContext()
                 .getApplicationContext()
diff --git a/src/com/android/settings/network/telephony/MobileDataDialogFragment.java b/src/com/android/settings/network/telephony/MobileDataDialogFragment.java
index c8a1e98..180d503 100644
--- a/src/com/android/settings/network/telephony/MobileDataDialogFragment.java
+++ b/src/com/android/settings/network/telephony/MobileDataDialogFragment.java
@@ -28,6 +28,7 @@
 
 import com.android.settings.R;
 import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
+import com.android.settings.wifi.WifiPickerTrackerHelper;
 
 
 /**
@@ -50,6 +51,8 @@
     private int mType;
     private int mSubId;
 
+    private WifiPickerTrackerHelper mWifiPickerTrackerHelper;
+
     public static MobileDataDialogFragment newInstance(int type, int subId) {
         final MobileDataDialogFragment dialogFragment = new MobileDataDialogFragment();
 
@@ -65,6 +68,8 @@
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         mSubscriptionManager = getContext().getSystemService(SubscriptionManager.class);
+        mWifiPickerTrackerHelper = new WifiPickerTrackerHelper(getSettingsLifecycle(), getContext(),
+                null /* WifiPickerTrackerCallback */);
     }
 
     @Override
@@ -124,11 +129,17 @@
             case TYPE_DISABLE_DIALOG:
                 MobileNetworkUtils.setMobileDataEnabled(getContext(), mSubId, false /* enabled */,
                         false /* disableOtherSubscriptions */);
+                if (mWifiPickerTrackerHelper != null) {
+                    mWifiPickerTrackerHelper.setCarrierNetworkEnabled(false);
+                }
                 break;
             case TYPE_MULTI_SIM_DIALOG:
                 mSubscriptionManager.setDefaultDataSubId(mSubId);
                 MobileNetworkUtils.setMobileDataEnabled(getContext(), mSubId, true /* enabled */,
                         true /* disableOtherSubscriptions */);
+                if (mWifiPickerTrackerHelper != null) {
+                    mWifiPickerTrackerHelper.setCarrierNetworkEnabled(true);
+                }
                 break;
             default:
                 throw new IllegalArgumentException("unknown type " + mType);
diff --git a/src/com/android/settings/network/telephony/MobileDataPreferenceController.java b/src/com/android/settings/network/telephony/MobileDataPreferenceController.java
index 91c46df..78bc0a0 100644
--- a/src/com/android/settings/network/telephony/MobileDataPreferenceController.java
+++ b/src/com/android/settings/network/telephony/MobileDataPreferenceController.java
@@ -32,6 +32,7 @@
 
 import com.android.settings.R;
 import com.android.settings.network.MobileDataContentObserver;
+import com.android.settings.wifi.WifiPickerTrackerHelper;
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
 import com.android.settingslib.core.lifecycle.events.OnStart;
 import com.android.settingslib.core.lifecycle.events.OnStop;
@@ -54,6 +55,8 @@
     @VisibleForTesting
     boolean mNeedDialog;
 
+    private WifiPickerTrackerHelper mWifiPickerTrackerHelper;
+
     public MobileDataPreferenceController(Context context, String key) {
         super(context, key);
         mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
@@ -107,6 +110,9 @@
         if (!mNeedDialog) {
             // Update data directly if we don't need dialog
             MobileNetworkUtils.setMobileDataEnabled(mContext, mSubId, isChecked, false);
+            if (mWifiPickerTrackerHelper != null) {
+                mWifiPickerTrackerHelper.setCarrierNetworkEnabled(isChecked);
+            }
             return true;
         }
 
@@ -149,6 +155,10 @@
                 .createForSubscriptionId(mSubId);
     }
 
+    public void setWifiPickerTrackerHelper(WifiPickerTrackerHelper helper) {
+        mWifiPickerTrackerHelper = helper;
+    }
+
     @VisibleForTesting
     boolean isDialogNeeded() {
         final boolean enableData = !isChecked();
diff --git a/src/com/android/settings/network/telephony/MobileNetworkSettings.java b/src/com/android/settings/network/telephony/MobileNetworkSettings.java
index 2a11521..7c45949 100644
--- a/src/com/android/settings/network/telephony/MobileNetworkSettings.java
+++ b/src/com/android/settings/network/telephony/MobileNetworkSettings.java
@@ -43,6 +43,7 @@
 import com.android.settings.network.telephony.gsm.AutoSelectPreferenceController;
 import com.android.settings.network.telephony.gsm.OpenNetworkSelectPagePreferenceController;
 import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settings.wifi.WifiPickerTrackerHelper;
 import com.android.settingslib.core.AbstractPreferenceController;
 import com.android.settingslib.search.SearchIndexable;
 import com.android.settingslib.utils.ThreadUtils;
@@ -147,6 +148,9 @@
         use(DisableSimFooterPreferenceController.class).init(mSubId);
         use(NrDisabledInDsdsFooterPreferenceController.class).init(mSubId);
         use(MobileDataPreferenceController.class).init(getFragmentManager(), mSubId);
+        use(MobileDataPreferenceController.class).setWifiPickerTrackerHelper(
+                new WifiPickerTrackerHelper(getSettingsLifecycle(), context,
+                        null /* WifiPickerTrackerCallback */));
         use(RoamingPreferenceController.class).init(getFragmentManager(), mSubId);
         use(ApnPreferenceController.class).init(mSubId);
         use(CarrierPreferenceController.class).init(mSubId);
diff --git a/src/com/android/settings/network/telephony/MobileNetworkUtils.java b/src/com/android/settings/network/telephony/MobileNetworkUtils.java
index b300c66..87b4ef5 100644
--- a/src/com/android/settings/network/telephony/MobileNetworkUtils.java
+++ b/src/com/android/settings/network/telephony/MobileNetworkUtils.java
@@ -204,7 +204,10 @@
             return false;
         }
         PersistableBundle bundle = carrierConfigManager.getConfigForSubId(subId);
-        return bundle.getBoolean(CarrierConfigManager.KEY_USE_RCS_PRESENCE_BOOL, false /*default*/);
+        return bundle.getBoolean(
+                CarrierConfigManager.KEY_USE_RCS_PRESENCE_BOOL, false /*default*/)
+                || bundle.getBoolean(CarrierConfigManager.Ims.KEY_RCS_BULK_CAPABILITY_EXCHANGE_BOOL,
+                false /*default*/);
     }
 
     public static Intent buildPhoneAccountConfigureIntent(
diff --git a/src/com/android/settings/network/telephony/NetworkProviderWorker.java b/src/com/android/settings/network/telephony/NetworkProviderWorker.java
new file mode 100644
index 0000000..bc82901
--- /dev/null
+++ b/src/com/android/settings/network/telephony/NetworkProviderWorker.java
@@ -0,0 +1,234 @@
+/*
+ * 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.settings.network.telephony;
+
+import android.content.Context;
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.os.Handler;
+import android.os.Looper;
+import android.telephony.PhoneStateListener;
+import android.telephony.ServiceState;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyDisplayInfo;
+import android.telephony.TelephonyManager;
+import android.util.Log;
+
+import androidx.annotation.VisibleForTesting;
+
+import com.android.settings.network.MobileDataContentObserver;
+import com.android.settings.network.MobileDataEnabledListener;
+import com.android.settings.network.SubscriptionsChangeListener;
+import com.android.settings.wifi.slice.WifiScanWorker;
+
+import java.util.Collections;
+import java.util.concurrent.Executor;
+
+
+/**
+ * BackgroundWorker for Provider Model slice.
+ */
+public class NetworkProviderWorker extends WifiScanWorker implements
+        SignalStrengthListener.Callback, MobileDataEnabledListener.Client,
+        DataConnectivityListener.Client,
+        SubscriptionsChangeListener.SubscriptionsChangeListenerClient {
+    private static final String TAG = "NetworkProviderWorker";
+    private static final int PROVIDER_MODEL_DEFAULT_EXPANDED_ROW_COUNT = 4;
+    private DataContentObserver mMobileDataObserver;
+    private SignalStrengthListener mSignalStrengthListener;
+    private SubscriptionsChangeListener mSubscriptionsListener;
+    private MobileDataEnabledListener mDataEnabledListener;
+    private DataConnectivityListener mConnectivityListener;
+
+    private final Context mContext;
+    @VisibleForTesting
+    final PhoneStateListener mPhoneStateListener;
+    private final SubscriptionManager mSubscriptionManager;
+    private final TelephonyManager mTelephonyManager;
+
+    public NetworkProviderWorker(Context context, Uri uri) {
+        super(context, uri);
+        // Mobile data worker
+        final Handler handler = new Handler(Looper.getMainLooper());
+        mMobileDataObserver = new DataContentObserver(handler, this);
+
+        mContext = context;
+        mSubscriptionManager = mContext.getSystemService(SubscriptionManager.class);
+        mTelephonyManager = mContext.getSystemService(TelephonyManager.class);
+
+        mPhoneStateListener = new NetworkProviderPhoneStateListener(handler::post);
+        mSubscriptionsListener = new SubscriptionsChangeListener(context, this);
+        mDataEnabledListener = new MobileDataEnabledListener(context, this);
+        mConnectivityListener = new DataConnectivityListener(context, this);
+        mSignalStrengthListener = new SignalStrengthListener(context, this);
+    }
+
+    @Override
+    protected void onSlicePinned() {
+        mMobileDataObserver.register(mContext,
+                getDefaultSubscriptionId(mSubscriptionManager));
+
+        mSubscriptionsListener.start();
+        mDataEnabledListener.start(SubscriptionManager.getDefaultDataSubscriptionId());
+        mConnectivityListener.start();
+        mSignalStrengthListener.resume();
+        mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_SERVICE_STATE
+                | PhoneStateListener.LISTEN_ACTIVE_DATA_SUBSCRIPTION_ID_CHANGE
+                | PhoneStateListener.LISTEN_DISPLAY_INFO_CHANGED);
+
+        super.onSlicePinned();
+    }
+
+    @Override
+    protected void onSliceUnpinned() {
+        mMobileDataObserver.unregister(mContext);
+        mSubscriptionsListener.stop();
+        mDataEnabledListener.stop();
+        mConnectivityListener.stop();
+        mSignalStrengthListener.pause();
+        mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
+        super.onSliceUnpinned();
+    }
+
+    @Override
+    public void close() {
+        mMobileDataObserver = null;
+        super.close();
+    }
+
+    @Override
+    public int getApRowCount() {
+        return PROVIDER_MODEL_DEFAULT_EXPANDED_ROW_COUNT;
+    }
+
+    /**
+     * To update the Slice.
+     */
+    public void updateSlice() {
+        notifySliceChange();
+    }
+
+    @Override
+    public void onSubscriptionsChanged() {
+        int defaultDataSubId = SubscriptionManager.getDefaultDataSubscriptionId();
+        Log.d(TAG, "onSubscriptionsChanged: defaultDataSubId:" + defaultDataSubId);
+
+        mSignalStrengthListener.updateSubscriptionIds(
+                SubscriptionManager.isUsableSubscriptionId(defaultDataSubId)
+                        ? Collections.singleton(defaultDataSubId) : Collections.emptySet());
+        if (defaultDataSubId != mDataEnabledListener.getSubId()) {
+            mDataEnabledListener.stop();
+            mDataEnabledListener.start(defaultDataSubId);
+        }
+        updateSlice();
+    }
+
+    @Override
+    public void onSignalStrengthChanged() {
+        Log.d(TAG, "onSignalStrengthChanged");
+        updateSlice();
+    }
+
+    @Override
+    public void onAirplaneModeChanged(boolean airplaneModeEnabled) {
+        Log.d(TAG, "onAirplaneModeChanged");
+        updateSlice();
+    }
+
+    @Override
+    public void onMobileDataEnabledChange() {
+        Log.d(TAG, "onMobileDataEnabledChange");
+        updateSlice();
+    }
+
+    @Override
+    public void onDataConnectivityChange() {
+        Log.d(TAG, "onDataConnectivityChange");
+        updateSlice();
+    }
+
+    /**
+     * Listen to update of mobile data change.
+     */
+    public class DataContentObserver extends ContentObserver {
+        private final NetworkProviderWorker mNetworkProviderWorker;
+
+        public DataContentObserver(Handler handler, NetworkProviderWorker backgroundWorker) {
+            super(handler);
+            mNetworkProviderWorker = backgroundWorker;
+        }
+
+        @Override
+        public void onChange(boolean selfChange) {
+            mNetworkProviderWorker.updateSlice();
+        }
+
+        /**
+         * To register the observer for mobile data changed.
+         * @param context the Context object.
+         * @param subId the default data subscription id.
+         */
+        public void register(Context context, int subId) {
+            final Uri uri = MobileDataContentObserver.getObservableUri(context, subId);
+            context.getContentResolver().registerContentObserver(uri, false, this);
+        }
+
+        /**
+         * To unregister the observer for mobile data changed.
+         * @param context the Context object.
+         */
+        public void unregister(Context context) {
+            context.getContentResolver().unregisterContentObserver(this);
+        }
+    }
+
+    class NetworkProviderPhoneStateListener extends PhoneStateListener {
+        NetworkProviderPhoneStateListener(Executor executor) {
+            super(executor);
+        }
+
+        @Override
+        public void onServiceStateChanged(ServiceState state) {
+            Log.d(TAG, "onServiceStateChanged voiceState=" + state.getState()
+                    + " dataState=" + state.getDataRegistrationState());
+            updateSlice();
+        }
+
+        @Override
+        public void onActiveDataSubscriptionIdChanged(int subId) {
+            Log.d(TAG, "onActiveDataSubscriptionIdChanged: subId=" + subId);
+            updateSlice();
+        }
+
+        @Override
+        public void onDisplayInfoChanged(TelephonyDisplayInfo telephonyDisplayInfo) {
+            Log.d(TAG, "onDisplayInfoChanged: telephonyDisplayInfo=" + telephonyDisplayInfo);
+            updateSlice();
+        }
+    }
+
+    protected static int getDefaultSubscriptionId(SubscriptionManager subscriptionManager) {
+        final SubscriptionInfo defaultSubscription = subscriptionManager.getActiveSubscriptionInfo(
+                subscriptionManager.getDefaultDataSubscriptionId());
+
+        if (defaultSubscription == null) {
+            return SubscriptionManager.INVALID_SUBSCRIPTION_ID; // No default subscription
+        }
+        return defaultSubscription.getSubscriptionId();
+    }
+}
diff --git a/src/com/android/settings/notification/AssistantFeedbackPreferenceController.java b/src/com/android/settings/notification/AssistantFeedbackPreferenceController.java
index 1566ae9..491fd8b 100644
--- a/src/com/android/settings/notification/AssistantFeedbackPreferenceController.java
+++ b/src/com/android/settings/notification/AssistantFeedbackPreferenceController.java
@@ -23,11 +23,13 @@
 import android.database.ContentObserver;
 import android.net.Uri;
 import android.os.Handler;
+import android.provider.DeviceConfig;
 import android.provider.Settings;
 
 import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
 
+import com.android.internal.config.sysui.SystemUiDeviceConfigFlags;
 import com.android.settings.core.PreferenceControllerMixin;
 import com.android.settings.core.TogglePreferenceController;
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
@@ -77,13 +79,15 @@
 
     @Override
     public int getAvailabilityStatus() {
-        return AVAILABLE;
+        return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SYSTEMUI,
+                        SystemUiDeviceConfigFlags.ENABLE_NAS_FEEDBACK, false)
+                ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
     }
 
     @Override
     public boolean isChecked() {
         return Settings.Global.getInt(mContext.getContentResolver(),
-                NOTIFICATION_FEEDBACK_ENABLED, OFF) == ON;
+                NOTIFICATION_FEEDBACK_ENABLED, ON) == ON;
     }
 
     @Override
diff --git a/src/com/android/settings/notification/history/NotificationHistoryRecyclerView.java b/src/com/android/settings/notification/history/NotificationHistoryRecyclerView.java
index 5a6ff7e..06c74bc 100644
--- a/src/com/android/settings/notification/history/NotificationHistoryRecyclerView.java
+++ b/src/com/android/settings/notification/history/NotificationHistoryRecyclerView.java
@@ -1,9 +1,14 @@
 package com.android.settings.notification.history;
 
+import static android.view.HapticFeedbackConstants.CLOCK_TICK;
+
 import android.annotation.Nullable;
 import android.content.Context;
+import android.graphics.Canvas;
 import android.util.AttributeSet;
+import android.view.View;
 
+import androidx.annotation.NonNull;
 import androidx.recyclerview.widget.DividerItemDecoration;
 import androidx.recyclerview.widget.ItemTouchHelper;
 import androidx.recyclerview.widget.LinearLayoutManager;
@@ -15,6 +20,9 @@
 
     private OnItemSwipeDeleteListener listener;
 
+    /** The amount of horizontal displacement caused by user's action, used to track the swiping. */
+    private float dXLast;
+
     public NotificationHistoryRecyclerView(Context context) {
         this(context, null);
     }
@@ -57,6 +65,27 @@
                 listener.onItemSwipeDeleted(viewHolder.getAdapterPosition());
             }
         }
+
+        /** Performs haptic effect once the swiping goes past a certain location. */
+        @Override
+        public void onChildDraw(@NonNull Canvas c, @NonNull RecyclerView recyclerView,
+                @NonNull ViewHolder viewHolder, float dX, float dY, int actionState,
+                boolean isCurrentlyActive) {
+            super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
+            if (isCurrentlyActive) {
+                View view = viewHolder.itemView;
+                float swipeThreshold = getSwipeThreshold(viewHolder);
+                float snapOffset = swipeThreshold * view.getWidth();
+                boolean snapIntoNewLocation = dX < -snapOffset || dX > snapOffset;
+                boolean snapIntoNewLocationLast = dXLast < -snapOffset || dXLast > snapOffset;
+                if (snapIntoNewLocation != snapIntoNewLocationLast) {
+                    view.performHapticFeedback(CLOCK_TICK);
+                }
+                dXLast = dX;
+            } else {
+                dXLast = 0;
+            }
+        }
     }
 
     public interface OnItemSwipeDeleteListener {
diff --git a/src/com/android/settings/notification/zen/AbstractZenModePreferenceController.java b/src/com/android/settings/notification/zen/AbstractZenModePreferenceController.java
index 6fa446b..02e4015 100644
--- a/src/com/android/settings/notification/zen/AbstractZenModePreferenceController.java
+++ b/src/com/android/settings/notification/zen/AbstractZenModePreferenceController.java
@@ -84,7 +84,10 @@
         mScreen = screen;
         Preference pref = screen.findPreference(KEY);
         if (pref != null) {
-            mSettingObserver = new SettingObserver(pref);
+            if (mSettingObserver == null) {
+                mSettingObserver = new SettingObserver();
+            }
+            mSettingObserver.setPreference(pref);
         }
     }
 
@@ -128,10 +131,13 @@
         private final Uri ZEN_MODE_DURATION_URI = Settings.Secure.getUriFor(
                 Settings.Secure.ZEN_DURATION);
 
-        private final Preference mPreference;
+        private Preference mPreference;
 
-        public SettingObserver(Preference preference) {
+        public SettingObserver() {
             super(new Handler());
+        }
+
+        public void setPreference(Preference preference) {
             mPreference = preference;
         }
 
diff --git a/src/com/android/settings/notification/zen/ZenCustomRadioButtonPreference.java b/src/com/android/settings/notification/zen/ZenCustomRadioButtonPreference.java
deleted file mode 100644
index 57f4891..0000000
--- a/src/com/android/settings/notification/zen/ZenCustomRadioButtonPreference.java
+++ /dev/null
@@ -1,144 +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.settings.notification.zen;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.View;
-import android.widget.RadioButton;
-
-import androidx.preference.PreferenceViewHolder;
-
-import com.android.settings.R;
-import com.android.settingslib.TwoTargetPreference;
-
-/**
- * A radio button preference with a divider and a settings icon that links to another screen.
- */
-public class ZenCustomRadioButtonPreference extends TwoTargetPreference
-        implements View.OnClickListener {
-
-    private RadioButton mButton;
-    private boolean mChecked;
-
-    private OnGearClickListener mOnGearClickListener;
-    private OnRadioButtonClickListener mOnRadioButtonClickListener;
-
-    public ZenCustomRadioButtonPreference(Context context, AttributeSet attrs,
-            int defStyleAttr, int defStyleRes) {
-        super(context, attrs, defStyleAttr, defStyleRes);
-        setLayoutResource(R.layout.preference_two_target_radio);
-    }
-
-    public ZenCustomRadioButtonPreference(Context context, AttributeSet attrs, int defStyleAttr) {
-        super(context, attrs, defStyleAttr);
-        setLayoutResource(R.layout.preference_two_target_radio);
-    }
-
-    public ZenCustomRadioButtonPreference(Context context, AttributeSet attrs) {
-        super(context, attrs);
-        setLayoutResource(R.layout.preference_two_target_radio);
-    }
-
-    public ZenCustomRadioButtonPreference(Context context) {
-        super(context);
-        setLayoutResource(R.layout.preference_two_target_radio);
-    }
-
-    @Override
-    protected int getSecondTargetResId() {
-        return R.layout.preference_widget_gear;
-    }
-
-    public void setOnGearClickListener(OnGearClickListener l) {
-        mOnGearClickListener = l;
-        notifyChanged();
-    }
-
-    public void setOnRadioButtonClickListener(OnRadioButtonClickListener l) {
-        mOnRadioButtonClickListener = l;
-        notifyChanged();
-    }
-
-    @Override
-    public void onBindViewHolder(PreferenceViewHolder holder) {
-        super.onBindViewHolder(holder);
-        View buttonFrame = holder.findViewById(R.id.checkbox_frame);
-        if (buttonFrame != null) {
-            buttonFrame.setOnClickListener(this);
-        }
-        mButton = (RadioButton) holder.findViewById(android.R.id.checkbox);
-        if (mButton != null) {
-            mButton.setChecked(mChecked);
-        }
-
-        final View gear = holder.findViewById(android.R.id.widget_frame);
-        final View divider = holder.findViewById(R.id.two_target_divider);
-        if (mOnGearClickListener != null) {
-            divider.setVisibility(View.VISIBLE);
-            gear.setVisibility(View.VISIBLE);
-            gear.setOnClickListener(this);
-        } else {
-            divider.setVisibility(View.GONE);
-            gear.setVisibility(View.GONE);
-            gear.setOnClickListener(null);
-        }
-    }
-
-    public boolean isChecked() {
-        return mButton != null && mChecked;
-    }
-
-    public void setChecked(boolean checked) {
-        mChecked = checked;
-        if (mButton != null) {
-            mButton.setChecked(checked);
-        }
-    }
-
-    public RadioButton getRadioButton() {
-        return mButton;
-    }
-
-    @Override
-    public void onClick() {
-        if (mOnRadioButtonClickListener != null) {
-            mOnRadioButtonClickListener.onRadioButtonClick(this);
-        }
-    }
-
-    @Override
-    public void onClick(View v) {
-        if (v.getId() == android.R.id.widget_frame) {
-            if (mOnGearClickListener != null) {
-                mOnGearClickListener.onGearClick(this);
-            }
-        } else if (v.getId() == R.id.checkbox_frame) {
-            if (mOnRadioButtonClickListener != null) {
-                mOnRadioButtonClickListener.onRadioButtonClick(this);
-            }
-        }
-    }
-
-    public interface OnGearClickListener {
-        void onGearClick(ZenCustomRadioButtonPreference p);
-    }
-
-    public interface OnRadioButtonClickListener {
-        void onRadioButtonClick(ZenCustomRadioButtonPreference p);
-    }
-}
diff --git a/src/com/android/settings/notification/zen/ZenModePriorityConversationsPreferenceController.java b/src/com/android/settings/notification/zen/ZenModePriorityConversationsPreferenceController.java
index e77f4ea..5afe0b6 100644
--- a/src/com/android/settings/notification/zen/ZenModePriorityConversationsPreferenceController.java
+++ b/src/com/android/settings/notification/zen/ZenModePriorityConversationsPreferenceController.java
@@ -16,9 +16,6 @@
 
 package com.android.settings.notification.zen;
 
-import static com.android.settings.widget.RadioButtonPreferenceWithExtraWidget.EXTRA_WIDGET_VISIBILITY_GONE;
-import static com.android.settings.widget.RadioButtonPreferenceWithExtraWidget.EXTRA_WIDGET_VISIBILITY_SETTING;
-
 import android.app.NotificationManager;
 import android.app.settings.SettingsEnums;
 import android.content.Context;
@@ -37,7 +34,6 @@
 import com.android.settings.core.SubSettingLauncher;
 import com.android.settings.notification.NotificationBackend;
 import com.android.settings.notification.app.ConversationListSettings;
-import com.android.settings.widget.RadioButtonPreferenceWithExtraWidget;
 import com.android.settingslib.core.lifecycle.Lifecycle;
 import com.android.settingslib.widget.RadioButtonPreference;
 
@@ -186,13 +182,10 @@
     }
 
     private RadioButtonPreference makeRadioPreference(String key, int titleId) {
-        RadioButtonPreferenceWithExtraWidget pref =
-                new RadioButtonPreferenceWithExtraWidget(mPreferenceCategory.getContext());
+        final RadioButtonPreference pref =
+                new RadioButtonPreference(mPreferenceCategory.getContext());
         if (KEY_ALL.equals(key) || KEY_IMPORTANT.equals(key)) {
             pref.setExtraWidgetOnClickListener(mConversationSettingsWidgetClickListener);
-            pref.setExtraWidgetVisibility(EXTRA_WIDGET_VISIBILITY_SETTING);
-        } else {
-            pref.setExtraWidgetVisibility(EXTRA_WIDGET_VISIBILITY_GONE);
         }
         pref.setKey(key);
         pref.setTitle(titleId);
diff --git a/src/com/android/settings/notification/zen/ZenModePrioritySendersPreferenceController.java b/src/com/android/settings/notification/zen/ZenModePrioritySendersPreferenceController.java
index abf2ced..482865c 100644
--- a/src/com/android/settings/notification/zen/ZenModePrioritySendersPreferenceController.java
+++ b/src/com/android/settings/notification/zen/ZenModePrioritySendersPreferenceController.java
@@ -19,9 +19,6 @@
 import static android.app.NotificationManager.Policy.PRIORITY_CATEGORY_CALLS;
 import static android.app.NotificationManager.Policy.PRIORITY_CATEGORY_MESSAGES;
 
-import static com.android.settings.widget.RadioButtonPreferenceWithExtraWidget.EXTRA_WIDGET_VISIBILITY_GONE;
-import static com.android.settings.widget.RadioButtonPreferenceWithExtraWidget.EXTRA_WIDGET_VISIBILITY_SETTING;
-
 import android.app.NotificationManager;
 import android.content.Context;
 import android.content.Intent;
@@ -35,7 +32,6 @@
 import androidx.preference.PreferenceScreen;
 
 import com.android.settings.R;
-import com.android.settings.widget.RadioButtonPreferenceWithExtraWidget;
 import com.android.settingslib.core.lifecycle.Lifecycle;
 import com.android.settingslib.widget.RadioButtonPreference;
 
@@ -67,7 +63,7 @@
     private final boolean mIsMessages; // if this is false, then this preference is for calls
 
     private PreferenceCategory mPreferenceCategory;
-    private List<RadioButtonPreferenceWithExtraWidget> mRadioButtonPreferences = new ArrayList<>();
+    private List<RadioButtonPreference> mRadioButtonPreferences = new ArrayList<>();
 
     public ZenModePrioritySendersPreferenceController(Context context, String key,
             Lifecycle lifecycle, boolean isMessages) {
@@ -114,7 +110,7 @@
     public void updateState(Preference preference) {
         final int currSetting = getPrioritySenders();
 
-        for (RadioButtonPreferenceWithExtraWidget pref : mRadioButtonPreferences) {
+        for (RadioButtonPreference pref : mRadioButtonPreferences) {
             pref.setChecked(keyToSetting(pref.getKey()) == currSetting);
         }
     }
@@ -126,7 +122,7 @@
     }
 
     private void updateSummaries() {
-        for (RadioButtonPreferenceWithExtraWidget pref : mRadioButtonPreferences) {
+        for (RadioButtonPreference pref : mRadioButtonPreferences) {
             pref.setSummary(getSummary(pref.getKey()));
         }
     }
@@ -169,9 +165,9 @@
         }
     }
 
-    private RadioButtonPreferenceWithExtraWidget makeRadioPreference(String key, int titleId) {
-        RadioButtonPreferenceWithExtraWidget pref =
-                new RadioButtonPreferenceWithExtraWidget(mPreferenceCategory.getContext());
+    private RadioButtonPreference makeRadioPreference(String key, int titleId) {
+        final RadioButtonPreference pref =
+                new RadioButtonPreference(mPreferenceCategory.getContext());
         pref.setKey(key);
         pref.setTitle(titleId);
         pref.setOnClickListener(mRadioButtonClickListener);
@@ -179,9 +175,6 @@
         View.OnClickListener widgetClickListener = getWidgetClickListener(key);
         if (widgetClickListener != null) {
             pref.setExtraWidgetOnClickListener(widgetClickListener);
-            pref.setExtraWidgetVisibility(EXTRA_WIDGET_VISIBILITY_SETTING);
-        } else {
-            pref.setExtraWidgetVisibility(EXTRA_WIDGET_VISIBILITY_GONE);
         }
 
         mPreferenceCategory.addPreference(pref);
diff --git a/src/com/android/settings/notification/zen/ZenModeVisEffectsAllPreferenceController.java b/src/com/android/settings/notification/zen/ZenModeVisEffectsAllPreferenceController.java
index f729be8..735ce79 100644
--- a/src/com/android/settings/notification/zen/ZenModeVisEffectsAllPreferenceController.java
+++ b/src/com/android/settings/notification/zen/ZenModeVisEffectsAllPreferenceController.java
@@ -24,12 +24,13 @@
 import androidx.preference.PreferenceScreen;
 
 import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settingslib.widget.RadioButtonPreference;
 
 public class ZenModeVisEffectsAllPreferenceController
         extends AbstractZenModePreferenceController
-        implements ZenCustomRadioButtonPreference.OnRadioButtonClickListener {
+        implements RadioButtonPreference.OnClickListener {
 
-    private ZenCustomRadioButtonPreference mPreference;
+    private RadioButtonPreference mPreference;
 
     protected static final int EFFECTS = Policy.SUPPRESSED_EFFECT_SCREEN_OFF
             | Policy.SUPPRESSED_EFFECT_SCREEN_ON
@@ -50,7 +51,7 @@
     public void displayPreference(PreferenceScreen screen) {
         super.displayPreference(screen);
         mPreference = screen.findPreference(getPreferenceKey());
-        mPreference.setOnRadioButtonClickListener(this);
+        mPreference.setOnClickListener(this);
     }
 
     @Override
@@ -68,7 +69,7 @@
     }
 
     @Override
-    public void onRadioButtonClick(ZenCustomRadioButtonPreference p) {
+    public void onRadioButtonClicked(RadioButtonPreference p) {
         mMetricsFeatureProvider.action(mContext,
                 SettingsEnums.ACTION_ZEN_SOUND_AND_VIS_EFFECTS, true);
         mBackend.saveVisualEffectsPolicy(EFFECTS, true);
diff --git a/src/com/android/settings/notification/zen/ZenModeVisEffectsCustomPreferenceController.java b/src/com/android/settings/notification/zen/ZenModeVisEffectsCustomPreferenceController.java
index a772eb5..535dca3 100644
--- a/src/com/android/settings/notification/zen/ZenModeVisEffectsCustomPreferenceController.java
+++ b/src/com/android/settings/notification/zen/ZenModeVisEffectsCustomPreferenceController.java
@@ -26,11 +26,12 @@
 import com.android.settings.R;
 import com.android.settings.core.SubSettingLauncher;
 import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settingslib.widget.RadioButtonPreference;
 
 public class ZenModeVisEffectsCustomPreferenceController
         extends AbstractZenModePreferenceController {
 
-    private ZenCustomRadioButtonPreference mPreference;
+    private RadioButtonPreference mPreference;
 
     protected static final int INTERRUPTIVE_EFFECTS =
             NotificationManager.Policy.SUPPRESSED_EFFECT_AMBIENT
@@ -53,12 +54,11 @@
         super.displayPreference(screen);
         mPreference = screen.findPreference(getPreferenceKey());
 
-        mPreference.setOnGearClickListener(p -> {
+        mPreference.setExtraWidgetOnClickListener(p -> {
             launchCustomSettings();
-
         });
 
-        mPreference.setOnRadioButtonClickListener(p -> {
+        mPreference.setOnClickListener(p -> {
             launchCustomSettings();
         });
     }
diff --git a/src/com/android/settings/notification/zen/ZenModeVisEffectsNonePreferenceController.java b/src/com/android/settings/notification/zen/ZenModeVisEffectsNonePreferenceController.java
index 84037b9..8723ea8 100644
--- a/src/com/android/settings/notification/zen/ZenModeVisEffectsNonePreferenceController.java
+++ b/src/com/android/settings/notification/zen/ZenModeVisEffectsNonePreferenceController.java
@@ -24,12 +24,13 @@
 import androidx.preference.PreferenceScreen;
 
 import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settingslib.widget.RadioButtonPreference;
 
 public class ZenModeVisEffectsNonePreferenceController
         extends AbstractZenModePreferenceController
-        implements ZenCustomRadioButtonPreference.OnRadioButtonClickListener {
+        implements RadioButtonPreference.OnClickListener {
 
-    private ZenCustomRadioButtonPreference mPreference;
+    private RadioButtonPreference mPreference;
 
     protected static final int EFFECTS = Policy.SUPPRESSED_EFFECT_SCREEN_OFF
             | Policy.SUPPRESSED_EFFECT_SCREEN_ON
@@ -50,7 +51,7 @@
     public void displayPreference(PreferenceScreen screen) {
         super.displayPreference(screen);
         mPreference = screen.findPreference(getPreferenceKey());
-        mPreference.setOnRadioButtonClickListener(this);
+        mPreference.setOnClickListener(this);
     }
 
     @Override
@@ -67,7 +68,7 @@
     }
 
     @Override
-    public void onRadioButtonClick(ZenCustomRadioButtonPreference preference) {
+    public void onRadioButtonClicked(RadioButtonPreference preference) {
         mMetricsFeatureProvider.action(mContext,
                 SettingsEnums.ACTION_ZEN_SOUND_ONLY, true);
         mBackend.saveVisualEffectsPolicy(EFFECTS, false);
diff --git a/src/com/android/settings/notification/zen/ZenRuleCustomPolicyPreferenceController.java b/src/com/android/settings/notification/zen/ZenRuleCustomPolicyPreferenceController.java
index 56b98ff..2cf8679 100644
--- a/src/com/android/settings/notification/zen/ZenRuleCustomPolicyPreferenceController.java
+++ b/src/com/android/settings/notification/zen/ZenRuleCustomPolicyPreferenceController.java
@@ -25,11 +25,12 @@
 
 import com.android.settings.core.SubSettingLauncher;
 import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settingslib.widget.RadioButtonPreference;
 
 public class ZenRuleCustomPolicyPreferenceController extends
         AbstractZenCustomRulePreferenceController {
 
-    private ZenCustomRadioButtonPreference mPreference;
+    private RadioButtonPreference mPreference;
 
     public ZenRuleCustomPolicyPreferenceController(Context context, Lifecycle lifecycle,
             String key) {
@@ -41,13 +42,12 @@
         super.displayPreference(screen);
         mPreference = screen.findPreference(getPreferenceKey());
 
-        mPreference.setOnGearClickListener(p -> {
+        mPreference.setExtraWidgetOnClickListener(p -> {
             setCustomPolicy();
             launchCustomSettings();
-
         });
 
-        mPreference.setOnRadioButtonClickListener(p -> {
+        mPreference.setOnClickListener(p -> {
             setCustomPolicy();
             launchCustomSettings();
         });
diff --git a/src/com/android/settings/notification/zen/ZenRuleDefaultPolicyPreferenceController.java b/src/com/android/settings/notification/zen/ZenRuleDefaultPolicyPreferenceController.java
index 268156b..372f152 100644
--- a/src/com/android/settings/notification/zen/ZenRuleDefaultPolicyPreferenceController.java
+++ b/src/com/android/settings/notification/zen/ZenRuleDefaultPolicyPreferenceController.java
@@ -26,11 +26,12 @@
 import com.android.internal.logging.nano.MetricsProto;
 import com.android.settings.core.PreferenceControllerMixin;
 import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settingslib.widget.RadioButtonPreference;
 
 public class ZenRuleDefaultPolicyPreferenceController extends
         AbstractZenCustomRulePreferenceController implements PreferenceControllerMixin {
 
-    private ZenCustomRadioButtonPreference mPreference;
+    private RadioButtonPreference mPreference;
 
     public ZenRuleDefaultPolicyPreferenceController(Context context, Lifecycle lifecycle,
             String key) {
@@ -42,7 +43,7 @@
         super.displayPreference(screen);
         mPreference = screen.findPreference(getPreferenceKey());
 
-        mPreference.setOnRadioButtonClickListener(p -> {
+        mPreference.setOnClickListener(p -> {
             mRule.setZenPolicy(null);
             mBackend.updateZenRule(mId, mRule);
         });
diff --git a/src/com/android/settings/notification/zen/ZenRuleVisEffectsAllPreferenceController.java b/src/com/android/settings/notification/zen/ZenRuleVisEffectsAllPreferenceController.java
index fb46209..6e9152f 100644
--- a/src/com/android/settings/notification/zen/ZenRuleVisEffectsAllPreferenceController.java
+++ b/src/com/android/settings/notification/zen/ZenRuleVisEffectsAllPreferenceController.java
@@ -27,11 +27,12 @@
 import com.android.internal.logging.nano.MetricsProto;
 import com.android.settings.core.PreferenceControllerMixin;
 import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settingslib.widget.RadioButtonPreference;
 
 public class ZenRuleVisEffectsAllPreferenceController extends
         AbstractZenCustomRulePreferenceController implements PreferenceControllerMixin {
 
-    private ZenCustomRadioButtonPreference mPreference;
+    private RadioButtonPreference mPreference;
 
     public ZenRuleVisEffectsAllPreferenceController(Context context, Lifecycle lifecycle,
             String key) {
@@ -43,7 +44,7 @@
         super.displayPreference(screen);
         mPreference = screen.findPreference(getPreferenceKey());
 
-        mPreference.setOnRadioButtonClickListener(p -> {
+        mPreference.setOnClickListener(p -> {
             mMetricsFeatureProvider.action(mContext, SettingsEnums.ACTION_ZEN_SOUND_ONLY,
                     Pair.create(MetricsProto.MetricsEvent.FIELD_ZEN_RULE_ID, mId));
             mRule.setZenPolicy(new ZenPolicy.Builder(mRule.getZenPolicy())
diff --git a/src/com/android/settings/notification/zen/ZenRuleVisEffectsCustomPreferenceController.java b/src/com/android/settings/notification/zen/ZenRuleVisEffectsCustomPreferenceController.java
index 68ab818..d7c5f86 100644
--- a/src/com/android/settings/notification/zen/ZenRuleVisEffectsCustomPreferenceController.java
+++ b/src/com/android/settings/notification/zen/ZenRuleVisEffectsCustomPreferenceController.java
@@ -27,11 +27,12 @@
 import com.android.settings.core.PreferenceControllerMixin;
 import com.android.settings.core.SubSettingLauncher;
 import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settingslib.widget.RadioButtonPreference;
 
 public class ZenRuleVisEffectsCustomPreferenceController extends
         AbstractZenCustomRulePreferenceController implements PreferenceControllerMixin {
 
-    private ZenCustomRadioButtonPreference mPreference;
+    private RadioButtonPreference mPreference;
 
     public ZenRuleVisEffectsCustomPreferenceController(Context context, Lifecycle lifecycle,
             String key) {
@@ -43,12 +44,12 @@
         super.displayPreference(screen);
         mPreference = screen.findPreference(getPreferenceKey());
 
-        mPreference.setOnGearClickListener(p -> {
+        mPreference.setOnClickListener(p -> {
             launchCustomSettings();
 
         });
 
-        mPreference.setOnRadioButtonClickListener(p -> {
+        mPreference.setExtraWidgetOnClickListener(p -> {
             launchCustomSettings();
         });
     }
diff --git a/src/com/android/settings/notification/zen/ZenRuleVisEffectsNonePreferenceController.java b/src/com/android/settings/notification/zen/ZenRuleVisEffectsNonePreferenceController.java
index cb3e690..5484ed5 100644
--- a/src/com/android/settings/notification/zen/ZenRuleVisEffectsNonePreferenceController.java
+++ b/src/com/android/settings/notification/zen/ZenRuleVisEffectsNonePreferenceController.java
@@ -27,11 +27,12 @@
 import com.android.internal.logging.nano.MetricsProto;
 import com.android.settings.core.PreferenceControllerMixin;
 import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settingslib.widget.RadioButtonPreference;
 
 public class ZenRuleVisEffectsNonePreferenceController extends
         AbstractZenCustomRulePreferenceController implements PreferenceControllerMixin {
 
-    private ZenCustomRadioButtonPreference mPreference;
+    private RadioButtonPreference mPreference;
 
     public ZenRuleVisEffectsNonePreferenceController(Context context, Lifecycle lifecycle,
             String key) {
@@ -43,7 +44,7 @@
         super.displayPreference(screen);
         mPreference = screen.findPreference(getPreferenceKey());
 
-        mPreference.setOnRadioButtonClickListener(p -> {
+        mPreference.setOnClickListener(p -> {
             mMetricsFeatureProvider.action(mContext, SettingsEnums.ACTION_ZEN_SOUND_AND_VIS_EFFECTS,
                     Pair.create(MetricsProto.MetricsEvent.FIELD_ZEN_RULE_ID, mId));
             mRule.setZenPolicy(new ZenPolicy.Builder(mRule.getZenPolicy())
diff --git a/src/com/android/settings/overlay/FeatureFactory.java b/src/com/android/settings/overlay/FeatureFactory.java
index b9aa68a..a15075e 100644
--- a/src/com/android/settings/overlay/FeatureFactory.java
+++ b/src/com/android/settings/overlay/FeatureFactory.java
@@ -41,6 +41,7 @@
 import com.android.settings.security.SecurityFeatureProvider;
 import com.android.settings.slices.SlicesFeatureProvider;
 import com.android.settings.users.UserFeatureProvider;
+import com.android.settings.wifi.WifiTrackerLibProvider;
 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
 
 /**
@@ -143,6 +144,11 @@
 
     public abstract FaceFeatureProvider getFaceFeatureProvider();
 
+    /**
+     * Gets implementation for the WifiTrackerLib.
+     */
+    public abstract WifiTrackerLibProvider getWifiTrackerLibProvider();
+
     public static final class FactoryNotFoundException extends RuntimeException {
         public FactoryNotFoundException(Throwable throwable) {
             super("Unable to create factory. Did you misconfigure Proguard?", throwable);
diff --git a/src/com/android/settings/overlay/FeatureFactoryImpl.java b/src/com/android/settings/overlay/FeatureFactoryImpl.java
index d4d396f..ebbe87c 100644
--- a/src/com/android/settings/overlay/FeatureFactoryImpl.java
+++ b/src/com/android/settings/overlay/FeatureFactoryImpl.java
@@ -62,6 +62,8 @@
 import com.android.settings.slices.SlicesFeatureProviderImpl;
 import com.android.settings.users.UserFeatureProvider;
 import com.android.settings.users.UserFeatureProviderImpl;
+import com.android.settings.wifi.WifiTrackerLibProvider;
+import com.android.settings.wifi.WifiTrackerLibProviderImpl;
 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
 
 /**
@@ -90,6 +92,7 @@
     private BluetoothFeatureProvider mBluetoothFeatureProvider;
     private AwareFeatureProvider mAwareFeatureProvider;
     private FaceFeatureProvider mFaceFeatureProvider;
+    private WifiTrackerLibProvider mWifiTrackerLibProvider;
 
     @Override
     public SupportFeatureProvider getSupportFeatureProvider(Context context) {
@@ -278,4 +281,12 @@
         }
         return mFaceFeatureProvider;
     }
+
+    @Override
+    public WifiTrackerLibProvider getWifiTrackerLibProvider() {
+        if (mWifiTrackerLibProvider == null) {
+            mWifiTrackerLibProvider = new WifiTrackerLibProviderImpl();
+        }
+        return mWifiTrackerLibProvider;
+    }
 }
diff --git a/src/com/android/settings/panel/InternetConnectivityPanel.java b/src/com/android/settings/panel/InternetConnectivityPanel.java
index 6ae7089..312bf75 100644
--- a/src/com/android/settings/panel/InternetConnectivityPanel.java
+++ b/src/com/android/settings/panel/InternetConnectivityPanel.java
@@ -16,6 +16,8 @@
 
 package com.android.settings.panel;
 
+import static com.android.settings.network.NetworkProviderSettings.ACTION_NETWORK_PROVIDER_SETTINGS;
+
 import android.app.settings.SettingsEnums;
 import android.content.Context;
 import android.content.Intent;
@@ -51,17 +53,19 @@
 
     @Override
     public CharSequence getTitle() {
-        return mContext.getText(R.string.internet_connectivity_panel_title);
+        return mContext.getText(Utils.isProviderModelEnabled(mContext)
+                ? R.string.provider_internet_settings : R.string.internet_connectivity_panel_title);
     }
 
     @Override
     public List<Uri> getSlices() {
         final List<Uri> uris = new ArrayList<>();
-        uris.add(CustomSliceRegistry.WIFI_SLICE_URI);
-        uris.add(CustomSliceRegistry.MOBILE_DATA_SLICE_URI);
         if (Utils.isProviderModelEnabled(mContext)) {
+            uris.add(CustomSliceRegistry.PROVIDER_MODEL_SLICE_URI);
             uris.add(CustomSliceRegistry.AIRPLANE_SAFE_NETWORKS_SLICE_URI);
         } else {
+            uris.add(CustomSliceRegistry.WIFI_SLICE_URI);
+            uris.add(CustomSliceRegistry.MOBILE_DATA_SLICE_URI);
             uris.add(AirplaneModePreferenceController.SLICE_URI);
         }
         return uris;
@@ -69,7 +73,8 @@
 
     @Override
     public Intent getSeeMoreIntent() {
-        return new Intent(Settings.ACTION_WIRELESS_SETTINGS)
+        return new Intent(Utils.isProviderModelEnabled(mContext)
+                ? ACTION_NETWORK_PROVIDER_SETTINGS : Settings.ACTION_WIRELESS_SETTINGS)
                 .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
     }
 
diff --git a/src/com/android/settings/panel/MediaOutputGroupPanel.java b/src/com/android/settings/panel/MediaOutputGroupPanel.java
deleted file mode 100644
index 36f779b..0000000
--- a/src/com/android/settings/panel/MediaOutputGroupPanel.java
+++ /dev/null
@@ -1,164 +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.settings.panel;
-
-import static androidx.lifecycle.Lifecycle.Event.ON_START;
-import static androidx.lifecycle.Lifecycle.Event.ON_STOP;
-
-import static com.android.settings.media.MediaOutputSlice.MEDIA_PACKAGE_NAME;
-import static com.android.settings.slices.CustomSliceRegistry.MEDIA_OUTPUT_GROUP_SLICE_URI;
-
-import android.app.settings.SettingsEnums;
-import android.content.Context;
-import android.content.Intent;
-import android.graphics.Color;
-import android.net.Uri;
-
-import androidx.core.graphics.drawable.IconCompat;
-import androidx.lifecycle.LifecycleObserver;
-import androidx.lifecycle.OnLifecycleEvent;
-
-import com.android.settings.R;
-import com.android.settingslib.media.LocalMediaManager;
-import com.android.settingslib.media.MediaDevice;
-import com.android.settingslib.media.MediaOutputSliceConstants;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Represents the Media output group Panel.
- *
- * <p>
- * Displays Media output group item
- * </p>
- */
-public class MediaOutputGroupPanel implements PanelContent, LocalMediaManager.DeviceCallback,
-        LifecycleObserver {
-
-    private final Context mContext;
-    private final String mPackageName;
-
-    private PanelContentCallback mCallback;
-    private LocalMediaManager mLocalMediaManager;
-
-    /**
-     * To generate a Media output group Panel instance.
-     *
-     * @param context the context of the caller.
-     * @param packageName media application package name.
-     * @return MediaOutputGroupPanel instance.
-     */
-    public static MediaOutputGroupPanel create(Context context, String packageName) {
-        return new MediaOutputGroupPanel(context, packageName);
-    }
-
-    private MediaOutputGroupPanel(Context context, String packageName) {
-        mContext = context.getApplicationContext();
-        mPackageName = packageName;
-    }
-
-    @Override
-    public CharSequence getTitle() {
-        return mContext.getText(R.string.media_output_group_panel_title);
-    }
-
-    @Override
-    public CharSequence getSubTitle() {
-        final int size = mLocalMediaManager.getSelectedMediaDevice().size();
-        if (size == 1) {
-            return mContext.getText(R.string.media_output_group_panel_single_device_summary);
-        }
-        return mContext.getString(R.string.media_output_group_panel_multiple_devices_summary, size);
-    }
-
-    @Override
-    public IconCompat getIcon() {
-        return IconCompat.createWithResource(mContext, R.drawable.ic_arrow_back).setTint(
-                Color.BLACK);
-    }
-
-    @Override
-    public List<Uri> getSlices() {
-        final List<Uri> uris = new ArrayList<>();
-        MEDIA_OUTPUT_GROUP_SLICE_URI =
-                MEDIA_OUTPUT_GROUP_SLICE_URI
-                        .buildUpon()
-                        .clearQuery()
-                        .appendQueryParameter(MEDIA_PACKAGE_NAME, mPackageName)
-                        .build();
-        uris.add(MEDIA_OUTPUT_GROUP_SLICE_URI);
-        return uris;
-    }
-
-    @Override
-    public Intent getSeeMoreIntent() {
-        return null;
-    }
-
-    @Override
-    public Intent getHeaderIconIntent() {
-        final Intent intent = new Intent()
-                .setAction(MediaOutputSliceConstants.ACTION_MEDIA_OUTPUT)
-                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
-                .putExtra(MediaOutputSliceConstants.EXTRA_PACKAGE_NAME, mPackageName);
-        return intent;
-    }
-
-    @Override
-    public void registerCallback(PanelContentCallback callback) {
-        mCallback = callback;
-    }
-
-    /**
-     * Lifecycle callback to initial {@link LocalMediaManager}
-     */
-    @OnLifecycleEvent(ON_START)
-    public void onStart() {
-        if (mLocalMediaManager == null) {
-            mLocalMediaManager = new LocalMediaManager(mContext, mPackageName, null);
-        }
-        mLocalMediaManager.registerCallback(this);
-        mLocalMediaManager.startScan();
-    }
-
-    /**
-     * Lifecycle callback to de-initial {@link LocalMediaManager}
-     */
-    @OnLifecycleEvent(ON_STOP)
-    public void onStop() {
-        mLocalMediaManager.unregisterCallback(this);
-        mLocalMediaManager.stopScan();
-    }
-
-    @Override
-    public void onDeviceListUpdate(List<MediaDevice> devices) {
-        if (mCallback != null) {
-            mCallback.onHeaderChanged();
-        }
-    }
-
-    @Override
-    public int getMetricsCategory() {
-        return SettingsEnums.PANEL_MEDIA_OUTPUT_GROUP;
-    }
-
-    @Override
-    public int getViewType() {
-        return PanelContent.VIEW_TYPE_SLIDER_LARGE_ICON;
-    }
-}
diff --git a/src/com/android/settings/panel/MediaOutputPanel.java b/src/com/android/settings/panel/MediaOutputPanel.java
deleted file mode 100644
index c3846c2..0000000
--- a/src/com/android/settings/panel/MediaOutputPanel.java
+++ /dev/null
@@ -1,256 +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.settings.panel;
-
-import static androidx.lifecycle.Lifecycle.Event.ON_START;
-import static androidx.lifecycle.Lifecycle.Event.ON_STOP;
-
-import static com.android.settings.media.MediaOutputSlice.MEDIA_PACKAGE_NAME;
-import static com.android.settings.slices.CustomSliceRegistry.MEDIA_OUTPUT_SLICE_URI;
-
-import android.app.settings.SettingsEnums;
-import android.content.Context;
-import android.content.Intent;
-import android.graphics.Bitmap;
-import android.media.MediaMetadata;
-import android.media.session.MediaController;
-import android.media.session.MediaSessionManager;
-import android.media.session.PlaybackState;
-import android.net.Uri;
-import android.text.TextUtils;
-import android.util.Log;
-
-import androidx.core.graphics.drawable.IconCompat;
-import androidx.lifecycle.LifecycleObserver;
-import androidx.lifecycle.OnLifecycleEvent;
-
-import com.android.internal.annotations.VisibleForTesting;
-import com.android.settings.R;
-import com.android.settings.Utils;
-import com.android.settingslib.media.InfoMediaDevice;
-import com.android.settingslib.media.LocalMediaManager;
-import com.android.settingslib.media.MediaDevice;
-import com.android.settingslib.media.MediaOutputSliceConstants;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Represents the Media output Panel.
- *
- * <p>
- * Displays Media output item
- * </p>
- */
-public class MediaOutputPanel implements PanelContent, LocalMediaManager.DeviceCallback,
-        LifecycleObserver {
-
-    private static final String TAG = "MediaOutputPanel";
-
-    private final Context mContext;
-    private final String mPackageName;
-
-    @VisibleForTesting
-    LocalMediaManager mLocalMediaManager;
-
-    private PanelContentCallback mCallback;
-    private boolean mIsCustomizedButtonUsed = true;
-    private MediaSessionManager mMediaSessionManager;
-    private MediaController mMediaController;
-
-    public static MediaOutputPanel create(Context context, String packageName) {
-        // Redirect to new media output dialog
-        context.sendBroadcast(new Intent()
-                .addFlags(Intent.FLAG_RECEIVER_FOREGROUND)
-                .setPackage(MediaOutputSliceConstants.SYSTEMUI_PACKAGE_NAME)
-                .setAction(MediaOutputSliceConstants.ACTION_LAUNCH_MEDIA_OUTPUT_DIALOG)
-                .putExtra(MediaOutputSliceConstants.EXTRA_PACKAGE_NAME, packageName));
-        return null;
-    }
-
-    private MediaOutputPanel(Context context, String packageName) {
-        mContext = context.getApplicationContext();
-        mPackageName = TextUtils.isEmpty(packageName) ? "" : packageName;
-    }
-
-    @Override
-    public CharSequence getTitle() {
-        if (mMediaController != null) {
-            final MediaMetadata metadata = mMediaController.getMetadata();
-            if (metadata != null) {
-                return metadata.getDescription().getTitle();
-            }
-        }
-        return mContext.getText(R.string.media_volume_title);
-    }
-
-    @Override
-    public CharSequence getSubTitle() {
-        if (mMediaController != null) {
-            final MediaMetadata metadata = mMediaController.getMetadata();
-            if (metadata != null) {
-                return metadata.getDescription().getSubtitle();
-            }
-        }
-        return mContext.getText(R.string.media_output_panel_title);
-    }
-
-    @Override
-    public IconCompat getIcon() {
-        if (mMediaController == null) {
-            return null;
-        }
-        final MediaMetadata metadata = mMediaController.getMetadata();
-        if (metadata != null) {
-            final Bitmap bitmap = metadata.getDescription().getIconBitmap();
-            if (bitmap != null) {
-                final Bitmap roundBitmap = Utils.convertCornerRadiusBitmap(mContext, bitmap,
-                        (float) mContext.getResources().getDimensionPixelSize(
-                                R.dimen.output_switcher_panel_icon_corner_radius));
-
-                return IconCompat.createWithBitmap(roundBitmap);
-            }
-        }
-        Log.d(TAG, "Media meta data does not contain icon information");
-        return null;
-    }
-
-    @Override
-    public List<Uri> getSlices() {
-        final List<Uri> uris = new ArrayList<>();
-        MEDIA_OUTPUT_SLICE_URI =
-                MEDIA_OUTPUT_SLICE_URI
-                        .buildUpon()
-                        .clearQuery()
-                        .appendQueryParameter(MEDIA_PACKAGE_NAME, mPackageName)
-                        .build();
-        uris.add(MEDIA_OUTPUT_SLICE_URI);
-        return uris;
-    }
-
-    @Override
-    public Intent getSeeMoreIntent() {
-        return null;
-    }
-
-    @Override
-    public boolean isCustomizedButtonUsed() {
-        return mIsCustomizedButtonUsed;
-    }
-
-    @Override
-    public CharSequence getCustomizedButtonTitle() {
-        return mContext.getText(R.string.service_stop);
-    }
-
-    @Override
-    public void onClickCustomizedButton() {
-        mLocalMediaManager.releaseSession();
-    }
-
-    @Override
-    public void registerCallback(PanelContentCallback callback) {
-        mCallback = callback;
-    }
-
-    @Override
-    public int getMetricsCategory() {
-        return SettingsEnums.PANEL_MEDIA_OUTPUT;
-    }
-
-    @Override
-    public void onSelectedDeviceStateChanged(MediaDevice device, int state) {
-        dispatchCustomButtonStateChanged();
-    }
-
-    @Override
-    public void onDeviceListUpdate(List<MediaDevice> devices) {
-        dispatchCustomButtonStateChanged();
-    }
-
-    @Override
-    public void onDeviceAttributesChanged() {
-        dispatchCustomButtonStateChanged();
-    }
-
-    private void dispatchCustomButtonStateChanged() {
-        hideCustomButtonIfNecessary();
-        if (mCallback != null) {
-            mCallback.onCustomizedButtonStateChanged();
-        }
-    }
-
-    private void hideCustomButtonIfNecessary() {
-        final MediaDevice device = mLocalMediaManager.getCurrentConnectedDevice();
-        mIsCustomizedButtonUsed = device instanceof InfoMediaDevice;
-    }
-
-    @OnLifecycleEvent(ON_START)
-    public void onStart() {
-        if (!TextUtils.isEmpty(mPackageName)) {
-            mMediaSessionManager = mContext.getSystemService(MediaSessionManager.class);
-            for (MediaController controller : mMediaSessionManager.getActiveSessions(null)) {
-                if (TextUtils.equals(controller.getPackageName(), mPackageName)) {
-                    mMediaController = controller;
-                    mMediaController.registerCallback(mCb);
-                    mCallback.onHeaderChanged();
-                    break;
-                }
-            }
-        }
-        if (mMediaController == null) {
-            Log.d(TAG, "No media controller for " + mPackageName);
-        }
-        if (mLocalMediaManager == null) {
-            mLocalMediaManager = new LocalMediaManager(mContext, mPackageName, null);
-        }
-        mLocalMediaManager.registerCallback(this);
-        mLocalMediaManager.startScan();
-    }
-
-    @OnLifecycleEvent(ON_STOP)
-    public void onStop() {
-        if (mMediaController != null) {
-            mMediaController.unregisterCallback(mCb);
-        }
-        mLocalMediaManager.unregisterCallback(this);
-        mLocalMediaManager.stopScan();
-    }
-
-    @Override
-    public int getViewType() {
-        return PanelContent.VIEW_TYPE_SLIDER_LARGE_ICON;
-    }
-
-    private final MediaController.Callback mCb = new MediaController.Callback() {
-        @Override
-        public void onMetadataChanged(MediaMetadata metadata) {
-            if (mCallback != null) {
-                mCallback.onHeaderChanged();
-            }
-        }
-
-        @Override
-        public void onPlaybackStateChanged(PlaybackState state) {
-            final int playState = state.getState();
-            if (mCallback != null && (playState == PlaybackState.STATE_STOPPED
-                    || playState == PlaybackState.STATE_PAUSED)) {
-                mCallback.forceClose();
-            }
-        }
-    };
-}
diff --git a/src/com/android/settings/panel/PanelContent.java b/src/com/android/settings/panel/PanelContent.java
index 9fa4316..6c271fd 100644
--- a/src/com/android/settings/panel/PanelContent.java
+++ b/src/com/android/settings/panel/PanelContent.java
@@ -31,7 +31,6 @@
 public interface PanelContent extends Instrumentable {
 
     int VIEW_TYPE_SLIDER = 1;
-    int VIEW_TYPE_SLIDER_LARGE_ICON = 2;
 
     /**
      * @return a icon for the title of the Panel.
diff --git a/src/com/android/settings/panel/PanelFeatureProviderImpl.java b/src/com/android/settings/panel/PanelFeatureProviderImpl.java
index 93c6025..ca30952 100644
--- a/src/com/android/settings/panel/PanelFeatureProviderImpl.java
+++ b/src/com/android/settings/panel/PanelFeatureProviderImpl.java
@@ -16,9 +16,6 @@
 
 package com.android.settings.panel;
 
-import static com.android.settingslib.media.MediaOutputSliceConstants.ACTION_MEDIA_OUTPUT;
-import static com.android.settingslib.media.MediaOutputSliceConstants.ACTION_MEDIA_OUTPUT_GROUP;
-
 import android.content.Context;
 import android.os.Bundle;
 import android.provider.Settings;
@@ -39,16 +36,12 @@
         switch (panelType) {
             case Settings.Panel.ACTION_INTERNET_CONNECTIVITY:
                 return InternetConnectivityPanel.create(context);
-            case ACTION_MEDIA_OUTPUT:
-                return MediaOutputPanel.create(context, mediaPackageName);
             case Settings.Panel.ACTION_NFC:
                 return NfcPanel.create(context);
             case Settings.Panel.ACTION_WIFI:
                 return WifiPanel.create(context);
             case Settings.Panel.ACTION_VOLUME:
                 return VolumePanel.create(context);
-            case ACTION_MEDIA_OUTPUT_GROUP:
-                return MediaOutputGroupPanel.create(context, mediaPackageName);
         }
 
         throw new IllegalStateException("No matching panel for: "  + panelType);
diff --git a/src/com/android/settings/panel/PanelFragment.java b/src/com/android/settings/panel/PanelFragment.java
index 133e0fc..cc27683 100644
--- a/src/com/android/settings/panel/PanelFragment.java
+++ b/src/com/android/settings/panel/PanelFragment.java
@@ -240,7 +240,7 @@
         final IconCompat icon = mPanel.getIcon();
         final CharSequence title = mPanel.getTitle();
 
-        if (icon != null || mPanel.getViewType() == PanelContent.VIEW_TYPE_SLIDER_LARGE_ICON) {
+        if (icon != null) {
             enablePanelHeader(icon, title);
         } else {
             mTitleView.setVisibility(View.VISIBLE);
@@ -248,11 +248,7 @@
             mTitleView.setText(title);
         }
 
-        if (mPanel.getViewType() == PanelContent.VIEW_TYPE_SLIDER_LARGE_ICON) {
-            mFooterDivider.setVisibility(View.VISIBLE);
-        } else {
-            mFooterDivider.setVisibility(View.GONE);
-        }
+        mFooterDivider.setVisibility(View.GONE);
 
         mSeeMoreButton.setOnClickListener(getSeeMoreListener());
         mDoneButton.setOnClickListener(getCloseListener());
diff --git a/src/com/android/settings/panel/PanelSlicesAdapter.java b/src/com/android/settings/panel/PanelSlicesAdapter.java
index a055dbb..4c8698a 100644
--- a/src/com/android/settings/panel/PanelSlicesAdapter.java
+++ b/src/com/android/settings/panel/PanelSlicesAdapter.java
@@ -16,9 +16,7 @@
 
 package com.android.settings.panel;
 
-import static com.android.settings.slices.CustomSliceRegistry.MEDIA_OUTPUT_GROUP_SLICE_URI;
 import static com.android.settings.slices.CustomSliceRegistry.MEDIA_OUTPUT_INDICATOR_SLICE_URI;
-import static com.android.settings.slices.CustomSliceRegistry.MEDIA_OUTPUT_SLICE_URI;
 
 import android.app.settings.SettingsEnums;
 import android.content.Context;
@@ -75,8 +73,6 @@
         View view;
         if (viewType == PanelContent.VIEW_TYPE_SLIDER) {
             view = inflater.inflate(R.layout.panel_slice_slider_row, viewGroup, false);
-        } else if (viewType == PanelContent.VIEW_TYPE_SLIDER_LARGE_ICON) {
-            view = inflater.inflate(R.layout.panel_slice_slider_row_large_icon, viewGroup, false);
         } else {
             view = inflater.inflate(R.layout.panel_slice_row, viewGroup, false);
         }
@@ -142,15 +138,6 @@
             final Slice slice = sliceLiveData.getValue();
             if (slice == null || slice.getUri().equals(MEDIA_OUTPUT_INDICATOR_SLICE_URI)) {
                 mDividerAllowedAbove = false;
-            } else if (position == 0 && (slice.getUri().equals(MEDIA_OUTPUT_SLICE_URI)
-                    || slice.getUri().equals(MEDIA_OUTPUT_GROUP_SLICE_URI))) {
-                sliceView.setClickable(false);
-                // Customize output switcher slice padding
-                final int padding = mPanelFragment.getResources().getDimensionPixelSize(
-                        R.dimen.output_switcher_slice_padding_top);
-                mSliceSliderLayout.setPadding(mSliceSliderLayout.getPaddingLeft(), padding,
-                        mSliceSliderLayout.getPaddingRight(),
-                        padding);
             }
 
             // Log Panel interaction
@@ -175,7 +162,7 @@
 
         @Override
         public boolean isDividerAllowedBelow() {
-            return mPanelFragment.getPanelViewType() != PanelContent.VIEW_TYPE_SLIDER_LARGE_ICON;
+            return true;
         }
     }
 }
diff --git a/src/com/android/settings/security/RequestManageCredentials.java b/src/com/android/settings/security/RequestManageCredentials.java
index b30f5b6..56fa83d 100644
--- a/src/com/android/settings/security/RequestManageCredentials.java
+++ b/src/com/android/settings/security/RequestManageCredentials.java
@@ -19,17 +19,25 @@
 import android.annotation.Nullable;
 import android.app.Activity;
 import android.app.admin.DevicePolicyManager;
+import android.content.Context;
+import android.content.pm.UserInfo;
 import android.os.Bundle;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.os.Process;
+import android.os.RemoteException;
+import android.os.UserManager;
 import android.security.AppUriAuthenticationPolicy;
 import android.security.Credentials;
 import android.security.KeyChain;
+import android.text.TextUtils;
 import android.util.Log;
 import android.view.View;
 import android.widget.Button;
 import android.widget.LinearLayout;
-import android.widget.Toast;
 
 import androidx.annotation.NonNull;
+import androidx.annotation.VisibleForTesting;
 import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 
@@ -66,29 +74,98 @@
     private LinearLayout mButtonPanel;
     private ExtendedFloatingActionButton mExtendedFab;
 
+    private HandlerThread mKeyChainTread;
+    private KeyChain.KeyChainConnection mKeyChainConnection;
+
     private boolean mDisplayingButtonPanel = false;
 
     @Override
     public void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
-        if (Credentials.ACTION_MANAGE_CREDENTIALS.equals(getIntent().getAction())) {
-            setContentView(R.layout.request_manage_credentials);
-            // This is not authenticated, as any app can ask to be the credential management app.
-            mCredentialManagerPackage = getReferrer().getHost();
-            mAuthenticationPolicy =
-                    getIntent().getParcelableExtra(KeyChain.EXTRA_AUTHENTICATION_POLICY);
-            enforceValidAuthenticationPolicy(mAuthenticationPolicy);
-
-            loadRecyclerView();
-            loadButtons();
-            loadExtendedFloatingActionButton();
-            addOnScrollListener();
-        } else {
+        if (!Credentials.ACTION_MANAGE_CREDENTIALS.equals(getIntent().getAction())) {
             Log.e(TAG, "Unable to start activity because intent action is not "
                     + Credentials.ACTION_MANAGE_CREDENTIALS);
-            finish();
+            finishWithResultCancelled();
+            return;
         }
+        if (isManagedDevice()) {
+            Log.e(TAG, "Credential management on managed devices should be done by the Device "
+                    + "Policy Controller, not a credential management app");
+            finishWithResultCancelled();
+            return;
+        }
+        mCredentialManagerPackage = getLaunchedFromPackage();
+        if (TextUtils.isEmpty(mCredentialManagerPackage)) {
+            Log.e(TAG, "Unknown credential manager app");
+            finishWithResultCancelled();
+            return;
+        }
+        setContentView(R.layout.request_manage_credentials);
+
+        mKeyChainTread = new HandlerThread("KeyChainConnection");
+        mKeyChainTread.start();
+        mKeyChainConnection = getKeyChainConnection(this, mKeyChainTread);
+
+        AppUriAuthenticationPolicy policy =
+                getIntent().getParcelableExtra(KeyChain.EXTRA_AUTHENTICATION_POLICY);
+        if (!isValidAuthenticationPolicy(policy)) {
+            Log.e(TAG, "Invalid authentication policy");
+            finishWithResultCancelled();
+            return;
+        }
+        mAuthenticationPolicy = policy;
+
+        loadRecyclerView();
+        loadButtons();
+        loadExtendedFloatingActionButton();
+        addOnScrollListener();
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        if (mKeyChainConnection != null) {
+            mKeyChainConnection.close();
+            mKeyChainConnection = null;
+            mKeyChainTread.quitSafely();
+        }
+    }
+
+    private boolean isValidAuthenticationPolicy(AppUriAuthenticationPolicy policy) {
+        if (policy == null || policy.getAppAndUriMappings().isEmpty()) {
+            return false;
+        }
+        try {
+            // Check whether any of the aliases in the policy already exist
+            for (String alias : policy.getAliases()) {
+                if (mKeyChainConnection.getService().requestPrivateKey(alias) != null) {
+                    return false;
+                }
+            }
+        } catch (RemoteException e) {
+            Log.e(TAG, "Invalid authentication policy", e);
+            return false;
+        }
+        return true;
+    }
+
+    private boolean isManagedDevice() {
+        DevicePolicyManager dpm = getSystemService(DevicePolicyManager.class);
+
+        return dpm.getDeviceOwnerUser() != null
+                || dpm.getProfileOwner() != null
+                || hasManagedProfile();
+    }
+
+    private boolean hasManagedProfile() {
+        UserManager um = getSystemService(UserManager.class);
+        for (final UserInfo userInfo : um.getProfiles(getUserId())) {
+            if (userInfo.isManagedProfile()) {
+                return true;
+            }
+        }
+        return false;
     }
 
     private void loadRecyclerView() {
@@ -107,8 +184,10 @@
         Button dontAllowButton = findViewById(R.id.dont_allow_button);
         Button allowButton = findViewById(R.id.allow_button);
 
-        dontAllowButton.setOnClickListener(finishRequestManageCredentials());
-        allowButton.setOnClickListener(setCredentialManagementApp());
+        dontAllowButton.setOnClickListener(b -> {
+            finishWithResultCancelled();
+        });
+        allowButton.setOnClickListener(b -> setOrUpdateCredentialManagementApp());
     }
 
     private void loadExtendedFloatingActionButton() {
@@ -120,22 +199,26 @@
         });
     }
 
-    private View.OnClickListener finishRequestManageCredentials() {
-        return v -> {
-            Toast.makeText(this, R.string.request_manage_credentials_dont_allow,
-                    Toast.LENGTH_SHORT).show();
-            setResult(RESULT_CANCELED);
-            finish();
-        };
+    private void setOrUpdateCredentialManagementApp() {
+        try {
+            mKeyChainConnection.getService().setCredentialManagementApp(
+                    mCredentialManagerPackage, mAuthenticationPolicy);
+        } catch (RemoteException e) {
+            Log.e(TAG, "Unable to set credential manager app", e);
+        }
+        finish();
     }
 
-    private View.OnClickListener setCredentialManagementApp() {
-        return v -> {
-            // TODO: Implement allow logic
-            Toast.makeText(this, R.string.request_manage_credentials_allow,
-                    Toast.LENGTH_SHORT).show();
-            finish();
-        };
+    @VisibleForTesting
+    KeyChain.KeyChainConnection getKeyChainConnection(Context context, HandlerThread thread) {
+        final Handler handler = new Handler(thread.getLooper());
+        try {
+            KeyChain.KeyChainConnection connection = KeyChain.bindAsUser(
+                    context, handler, Process.myUserHandle());
+            return connection;
+        } catch (InterruptedException e) {
+            throw new RuntimeException("Faile to bind to KeyChain", e);
+        }
     }
 
     private void addOnScrollListener() {
@@ -182,12 +265,8 @@
                 < mRecyclerView.getAdapter().getItemCount() - 1;
     }
 
-    private void enforceValidAuthenticationPolicy(AppUriAuthenticationPolicy policy) {
-        // TODO: Check whether any of the aliases in the policy already exist
-        if (policy == null || policy.getAppAndUriMappings().isEmpty()) {
-            Log.e(TAG, "Invalid authentication policy");
-            setResult(RESULT_CANCELED);
-            finish();
-        }
+    private void finishWithResultCancelled() {
+        setResult(RESULT_CANCELED);
+        finish();
     }
 }
diff --git a/src/com/android/settings/sim/SimDialogActivity.java b/src/com/android/settings/sim/SimDialogActivity.java
index 0ae294e..252b6c0 100644
--- a/src/com/android/settings/sim/SimDialogActivity.java
+++ b/src/com/android/settings/sim/SimDialogActivity.java
@@ -19,7 +19,6 @@
 import android.app.Activity;
 import android.content.Intent;
 import android.os.Bundle;
-import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
 import android.telephony.SubscriptionManager;
@@ -54,6 +53,8 @@
     public static final int PREFERRED_PICK = 3;
     // Show the "select SMS subscription" dialog, but don't save as default, just return a result
     public static final int SMS_PICK_FOR_MESSAGE = 4;
+    // Dismiss the current dialog and finish the activity.
+    public static final int PICK_DISMISS = 5;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -70,6 +71,12 @@
 
     private void showOrUpdateDialog() {
         final int dialogType = getIntent().getIntExtra(DIALOG_TYPE_KEY, INVALID_PICK);
+
+        if (dialogType == PICK_DISMISS) {
+            finishAndRemoveTask();
+            return;
+        }
+
         final String tag = Integer.toString(dialogType);
         final FragmentManager fragmentManager = getSupportFragmentManager();
         SimDialogFragment fragment = (SimDialogFragment) fragmentManager.findFragmentByTag(tag);
diff --git a/src/com/android/settings/sim/SimSelectNotification.java b/src/com/android/settings/sim/SimSelectNotification.java
index 6bd4c24..8d5a3e0 100644
--- a/src/com/android/settings/sim/SimSelectNotification.java
+++ b/src/com/android/settings/sim/SimSelectNotification.java
@@ -20,10 +20,10 @@
 import static android.provider.Settings.ENABLE_MMS_DATA_REQUEST_REASON_OUTGOING_MMS;
 import static android.provider.Settings.EXTRA_ENABLE_MMS_DATA_REQUEST_REASON;
 import static android.provider.Settings.EXTRA_SUB_ID;
-import static com.android.settings.Utils.SETTINGS_PACKAGE_NAME;
 import static android.telephony.TelephonyManager.EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE;
 import static android.telephony.TelephonyManager.EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE_ALL;
 import static android.telephony.TelephonyManager.EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE_DATA;
+import static android.telephony.TelephonyManager.EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE_DISMISS;
 import static android.telephony.TelephonyManager.EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE_NONE;
 import static android.telephony.TelephonyManager.EXTRA_SIM_COMBINATION_NAMES;
 import static android.telephony.TelephonyManager.EXTRA_SIM_COMBINATION_WARNING_TYPE;
@@ -32,6 +32,9 @@
 import static android.telephony.TelephonyManager.EXTRA_SUBSCRIPTION_ID;
 import static android.telephony.data.ApnSetting.TYPE_MMS;
 
+import static com.android.settings.Utils.SETTINGS_PACKAGE_NAME;
+import static com.android.settings.sim.SimDialogActivity.PICK_DISMISS;
+
 import android.app.Notification;
 import android.app.NotificationChannel;
 import android.app.NotificationManager;
@@ -51,7 +54,6 @@
 import com.android.settings.R;
 import com.android.settings.network.SubscriptionUtil;
 import com.android.settings.network.telephony.MobileNetworkActivity;
-import com.android.settingslib.HelpUtils;
 
 public class SimSelectNotification extends BroadcastReceiver {
     private static final String TAG = "SimSelectNotification";
@@ -159,6 +161,16 @@
 
         // Cancel any previous notifications
         cancelSimSelectNotification(context);
+
+        // If the dialog type is to dismiss.
+        if (dialogType == EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE_DISMISS) {
+            Intent newIntent = new Intent(context, SimDialogActivity.class);
+            newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+            newIntent.putExtra(SimDialogActivity.DIALOG_TYPE_KEY, PICK_DISMISS);
+            context.startActivity(newIntent);
+            return;
+        }
+
         // Create a notification to tell the user that some defaults are missing
         createSimSelectNotification(context);
 
@@ -186,10 +198,11 @@
         final int warningType = intent.getIntExtra(EXTRA_SIM_COMBINATION_WARNING_TYPE,
                 EXTRA_SIM_COMBINATION_WARNING_TYPE_NONE);
 
+        // Cancel any previous notifications
+        cancelSimCombinationWarningNotification(context);
+
         if (warningType == EXTRA_SIM_COMBINATION_WARNING_TYPE_DUAL_CDMA) {
-            // Cancel any previous notifications
-            cancelSimCombinationWarningNotification(context);
-            // Create a notification to tell the user that some defaults are missing
+            // Create a notification to tell the user that there's a sim combination warning.
             createSimCombinationWarningNotification(context, intent);
         }
     }
diff --git a/src/com/android/settings/slices/CustomSliceRegistry.java b/src/com/android/settings/slices/CustomSliceRegistry.java
index ce98d27..be71b30 100644
--- a/src/com/android/settings/slices/CustomSliceRegistry.java
+++ b/src/com/android/settings/slices/CustomSliceRegistry.java
@@ -37,11 +37,10 @@
 import com.android.settings.homepage.contextualcards.slices.FaceSetupSlice;
 import com.android.settings.homepage.contextualcards.slices.LowStorageSlice;
 import com.android.settings.location.LocationSlice;
-import com.android.settings.media.MediaOutputGroupSlice;
 import com.android.settings.media.MediaOutputIndicatorSlice;
-import com.android.settings.media.MediaOutputSlice;
 import com.android.settings.media.RemoteMediaSlice;
 import com.android.settings.network.AirplaneSafeNetworksSlice;
+import com.android.settings.network.ProviderModelSlice;
 import com.android.settings.network.telephony.MobileDataSlice;
 import com.android.settings.notification.zen.ZenModeButtonPreferenceController;
 import com.android.settings.wifi.calling.WifiCallingSliceHelper;
@@ -169,6 +168,17 @@
             .appendEncodedPath(SettingsSlicesContract.PATH_SETTING_ACTION)
             .appendPath("mobile_data")
             .build();
+
+    /**
+     * Full {@link Uri} for the Provider Model Slice.
+     */
+    public static final Uri PROVIDER_MODEL_SLICE_URI = new Uri.Builder()
+            .scheme(ContentResolver.SCHEME_CONTENT)
+            .authority(SettingsSliceProvider.SLICE_AUTHORITY)
+            .appendEncodedPath(SettingsSlicesContract.PATH_SETTING_ACTION)
+            .appendPath("provider_model")
+            .build();
+
     /**
      * Full {@link Uri} for the Alarm volume Slice.
      */
@@ -178,6 +188,7 @@
             .appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
             .appendPath("alarm_volume")
             .build();
+
     /**
      * Full {@link Uri} for the Call Volume Slice.
      */
@@ -256,26 +267,6 @@
             .build();
 
     /**
-     * Backing Uri for the Media output Slice.
-     */
-    public static Uri MEDIA_OUTPUT_SLICE_URI = new Uri.Builder()
-            .scheme(ContentResolver.SCHEME_CONTENT)
-            .authority(SettingsSliceProvider.SLICE_AUTHORITY)
-            .appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
-            .appendPath(MediaOutputSliceConstants.KEY_MEDIA_OUTPUT)
-            .build();
-
-    /**
-     * Backing Uri for the Media output group Slice.
-     */
-    public static Uri MEDIA_OUTPUT_GROUP_SLICE_URI = new Uri.Builder()
-            .scheme(ContentResolver.SCHEME_CONTENT)
-            .authority(SettingsSliceProvider.SLICE_AUTHORITY)
-            .appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
-            .appendPath(MediaOutputSliceConstants.KEY_MEDIA_OUTPUT_GROUP)
-            .build();
-
-    /**
      * Backing Uri for the Media output indicator Slice.
      */
     public static Uri MEDIA_OUTPUT_INDICATOR_SLICE_URI = new Uri.Builder()
@@ -340,12 +331,11 @@
         sUriToSlice.put(LOCATION_SLICE_URI, LocationSlice.class);
         sUriToSlice.put(LOW_STORAGE_SLICE_URI, LowStorageSlice.class);
         sUriToSlice.put(MEDIA_OUTPUT_INDICATOR_SLICE_URI, MediaOutputIndicatorSlice.class);
-        sUriToSlice.put(MEDIA_OUTPUT_SLICE_URI, MediaOutputSlice.class);
         sUriToSlice.put(MOBILE_DATA_SLICE_URI, MobileDataSlice.class);
+        sUriToSlice.put(PROVIDER_MODEL_SLICE_URI, ProviderModelSlice.class);
         sUriToSlice.put(WIFI_SLICE_URI, WifiSlice.class);
         sUriToSlice.put(DARK_THEME_SLICE_URI, DarkThemeSlice.class);
         sUriToSlice.put(REMOTE_MEDIA_SLICE_URI, RemoteMediaSlice.class);
-        sUriToSlice.put(MEDIA_OUTPUT_GROUP_SLICE_URI, MediaOutputGroupSlice.class);
         sUriToSlice.put(ALWAYS_ON_SLICE_URI, AlwaysOnDisplaySlice.class);
         sUriToSlice.put(AIRPLANE_SAFE_NETWORKS_SLICE_URI, AirplaneSafeNetworksSlice.class);
     }
diff --git a/src/com/android/settings/slices/SettingsSliceProvider.java b/src/com/android/settings/slices/SettingsSliceProvider.java
index 0c6205f..7c487ba 100644
--- a/src/com/android/settings/slices/SettingsSliceProvider.java
+++ b/src/com/android/settings/slices/SettingsSliceProvider.java
@@ -343,7 +343,7 @@
         final Intent settingsIntent = new Intent(Settings.ACTION_SETTINGS)
                 .setPackage(Utils.SETTINGS_PACKAGE_NAME);
         final PendingIntent noOpIntent = PendingIntent.getActivity(getContext(),
-                0 /* requestCode */, settingsIntent, 0 /* flags */);
+                0 /* requestCode */, settingsIntent, PendingIntent.FLAG_IMMUTABLE);
         return noOpIntent;
     }
 
diff --git a/src/com/android/settings/sound/MediaOutputPreferenceController.java b/src/com/android/settings/sound/MediaOutputPreferenceController.java
index 40a4d56..b5562a3 100644
--- a/src/com/android/settings/sound/MediaOutputPreferenceController.java
+++ b/src/com/android/settings/sound/MediaOutputPreferenceController.java
@@ -37,7 +37,7 @@
 import java.util.List;
 
 /**
- * This class allows launching MediaOutputSlice to switch output device.
+ * This class allows launching MediaOutputDialog to switch output device.
  * Preference would hide only when
  * - Bluetooth = OFF
  * - Bluetooth = ON and Connected Devices = 0 and Previously Connected = 0
diff --git a/src/com/android/settings/system/ResetDashboardFragment.java b/src/com/android/settings/system/ResetDashboardFragment.java
index 024db14..e5fc8f1 100644
--- a/src/com/android/settings/system/ResetDashboardFragment.java
+++ b/src/com/android/settings/system/ResetDashboardFragment.java
@@ -22,6 +22,7 @@
 import com.android.settings.R;
 import com.android.settings.applications.manageapplications.ResetAppPrefPreferenceController;
 import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.network.EraseEuiccDataController;
 import com.android.settings.network.NetworkResetPreferenceController;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settingslib.core.AbstractPreferenceController;
@@ -57,6 +58,12 @@
         return buildPreferenceControllers(context, getSettingsLifecycle());
     }
 
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        use(EraseEuiccDataController.class).setFragment(this);
+    }
+
     private static List<AbstractPreferenceController> buildPreferenceControllers(Context context,
             Lifecycle lifecycle) {
         final List<AbstractPreferenceController> controllers = new ArrayList<>();
diff --git a/src/com/android/settings/users/UserDetailsSettings.java b/src/com/android/settings/users/UserDetailsSettings.java
index 53d9849..5005399 100644
--- a/src/com/android/settings/users/UserDetailsSettings.java
+++ b/src/com/android/settings/users/UserDetailsSettings.java
@@ -243,7 +243,7 @@
                 mDefaultGuestRestrictions = mUserManager.getDefaultGuestRestrictions();
                 mPhonePref.setChecked(
                         !mDefaultGuestRestrictions.getBoolean(UserManager.DISALLOW_OUTGOING_CALLS));
-                mRemoveUserPref.setTitle(R.string.user_exit_guest_title);
+                mRemoveUserPref.setTitle(R.string.user_exit_guest_menu);
             } else {
                 mPhonePref.setChecked(!mUserManager.hasUserRestriction(
                         UserManager.DISALLOW_OUTGOING_CALLS, new UserHandle(userId)));
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java
index 63ccb6b..8ba5432 100644
--- a/src/com/android/settings/users/UserSettings.java
+++ b/src/com/android/settings/users/UserSettings.java
@@ -31,6 +31,7 @@
 import android.content.res.Resources;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
+import android.graphics.PorterDuff;
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
 import android.os.AsyncTask;
@@ -164,6 +165,7 @@
     private final Object mUserLock = new Object();
     private UserManager mUserManager;
     private static SparseArray<Bitmap> sDarkDefaultUserBitmapCache = new SparseArray<>();
+    private static Bitmap sRemoveGuestBitmap = null;
 
     private MultiUserSwitchBarController mSwitchBarController;
     private EditUserInfoController mEditUserInfoController =
@@ -177,6 +179,7 @@
 
     // A place to cache the generated default avatar
     private Drawable mDefaultIconDrawable;
+    private Drawable mRemoveGuestIconDrawable;
 
     // TODO:   Replace current Handler solution to something that doesn't leak memory and works
     // TODO:   during a configuration change
@@ -383,8 +386,8 @@
     private void loadProfile() {
         if (isCurrentUserGuest()) {
             // No need to load profile information
-            mMePreference.setIcon(getEncircledDefaultIcon());
-            mMePreference.setTitle(R.string.user_exit_guest_title);
+            mMePreference.setIcon(getEncircledRemoveGuestIcon());
+            mMePreference.setTitle(R.string.user_clear_guest_menu);
             mMePreference.setSelectable(true);
             // removing a guest will result in switching back to the admin user
             mMePreference.setEnabled(canSwitchUserNow());
@@ -899,7 +902,7 @@
                 } else {
                     setPhotoId(pref, user);
                 }
-            } else {
+            } else if (!user.isGuest()) {
                 // Icon not available yet, print a placeholder
                 pref.setIcon(getEncircledDefaultIcon());
             }
@@ -1044,6 +1047,14 @@
         return mDefaultIconDrawable;
     }
 
+    private Drawable getEncircledRemoveGuestIcon() {
+        if (mRemoveGuestIconDrawable == null) {
+            mRemoveGuestIconDrawable = encircle(
+                    getRemoveGuestIconAsBitmap(getContext().getResources()));
+        }
+        return mRemoveGuestIconDrawable;
+    }
+
     private void setPhotoId(Preference pref, UserInfo user) {
         Bitmap bitmap = mUserIcons.get(user.id);
         if (bitmap != null) {
@@ -1123,6 +1134,23 @@
     }
 
     /**
+     * Returns a remove guest icon (as a {@link Bitmap})
+     *
+     * @param resources resources object to fetch the remove guest icon.
+     */
+    private static Bitmap getRemoveGuestIconAsBitmap(Resources resources) {
+        if (sRemoveGuestBitmap == null) {
+            Drawable icon = resources.getDrawable(R.drawable.ic_delete, null).mutate();
+            icon.setColorFilter(
+                    resources.getColor(com.android.internal.R.color.user_icon_default_gray, null),
+                    PorterDuff.Mode.SRC_IN);
+            icon.setBounds(0, 0, icon.getIntrinsicWidth(), icon.getIntrinsicHeight());
+            sRemoveGuestBitmap = UserIcons.convertToBitmap(icon);
+        }
+        return sRemoveGuestBitmap;
+    }
+
+    /**
      * Assign the default photo to user with {@paramref userId}
      *
      * @param context used to get the {@link UserManager}
diff --git a/src/com/android/settings/widget/RadioButtonPreferenceWithExtraWidget.java b/src/com/android/settings/widget/RadioButtonPreferenceWithExtraWidget.java
deleted file mode 100644
index 2b28ec1..0000000
--- a/src/com/android/settings/widget/RadioButtonPreferenceWithExtraWidget.java
+++ /dev/null
@@ -1,90 +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.settings.widget;
-
-import android.content.Context;
-import android.view.View;
-import android.widget.ImageView;
-
-import androidx.preference.PreferenceViewHolder;
-
-import com.android.settings.R;
-import com.android.settingslib.widget.RadioButtonPreference;
-
-public class RadioButtonPreferenceWithExtraWidget extends RadioButtonPreference {
-    public static final int EXTRA_WIDGET_VISIBILITY_GONE = 0;
-    public static final int EXTRA_WIDGET_VISIBILITY_INFO = 1;
-    public static final int EXTRA_WIDGET_VISIBILITY_SETTING = 2;
-
-    private View mExtraWidgetDivider;
-    private ImageView mExtraWidget;
-
-    private int mExtraWidgetVisibility = EXTRA_WIDGET_VISIBILITY_GONE;
-    private View.OnClickListener mExtraWidgetOnClickListener;
-
-    public RadioButtonPreferenceWithExtraWidget(Context context) {
-        super(context, null);
-        setLayoutResource(R.layout.preference_radio_with_extra_widget);
-    }
-
-    @Override
-    public void onBindViewHolder(PreferenceViewHolder view) {
-        super.onBindViewHolder(view);
-
-        mExtraWidget = (ImageView) view.findViewById(R.id.radio_extra_widget);
-        mExtraWidgetDivider = view.findViewById(R.id.radio_extra_widget_divider);
-        setExtraWidgetVisibility(mExtraWidgetVisibility);
-
-        if (mExtraWidgetOnClickListener != null) {
-            setExtraWidgetOnClickListener(mExtraWidgetOnClickListener);
-        }
-    }
-
-    public void setExtraWidgetVisibility(int visibility) {
-        mExtraWidgetVisibility = visibility;
-        if (mExtraWidget == null || mExtraWidgetDivider == null) {
-            return;
-        }
-
-        if (visibility == EXTRA_WIDGET_VISIBILITY_GONE) {
-            mExtraWidget.setClickable(false);
-            mExtraWidget.setVisibility(View.GONE);
-            mExtraWidgetDivider.setVisibility(View.GONE);
-        } else {
-            mExtraWidget.setClickable(true);
-            mExtraWidget.setVisibility(View.VISIBLE);
-            mExtraWidgetDivider.setVisibility(View.VISIBLE);
-            if (mExtraWidgetVisibility == EXTRA_WIDGET_VISIBILITY_INFO) {
-                mExtraWidget.setImageResource(R.drawable.ic_settings_about);
-                mExtraWidget.setContentDescription(
-                        getContext().getResources().getText(R.string.information_label));
-            } else if (mExtraWidgetVisibility == EXTRA_WIDGET_VISIBILITY_SETTING) {
-                mExtraWidget.setImageResource(R.drawable.ic_settings_accent);
-                mExtraWidget.setContentDescription(
-                        getContext().getResources().getText(R.string.settings_label));
-            }
-        }
-    }
-
-    public void setExtraWidgetOnClickListener(View.OnClickListener listener) {
-        mExtraWidgetOnClickListener = listener;
-        if (mExtraWidget != null) {
-            mExtraWidget.setEnabled(true);
-            mExtraWidget.setOnClickListener(listener);
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/com/android/settings/wifi/ConfigureWifiEntryFragment.java b/src/com/android/settings/wifi/ConfigureWifiEntryFragment.java
index 881aaea..c36a298 100644
--- a/src/com/android/settings/wifi/ConfigureWifiEntryFragment.java
+++ b/src/com/android/settings/wifi/ConfigureWifiEntryFragment.java
@@ -21,9 +21,6 @@
 import android.app.settings.SettingsEnums;
 import android.content.Context;
 import android.content.Intent;
-import android.net.ConnectivityManager;
-import android.net.NetworkScoreManager;
-import android.net.wifi.WifiManager;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.HandlerThread;
@@ -40,6 +37,7 @@
 
 import com.android.settings.R;
 import com.android.settings.core.InstrumentedFragment;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.wifi.details2.WifiNetworkDetailsFragment2;
 import com.android.wifitrackerlib.NetworkDetailsTracker;
 import com.android.wifitrackerlib.WifiEntry;
@@ -222,17 +220,17 @@
             }
         };
 
-        mNetworkDetailsTracker = NetworkDetailsTracker.createNetworkDetailsTracker(
-                getSettingsLifecycle(),
-                context,
-                context.getSystemService(WifiManager.class),
-                context.getSystemService(ConnectivityManager.class),
-                context.getSystemService(NetworkScoreManager.class),
-                new Handler(Looper.getMainLooper()),
-                mWorkerThread.getThreadHandler(),
-                elapsedRealtimeClock,
-                MAX_SCAN_AGE_MILLIS,
-                SCAN_INTERVAL_MILLIS,
-                getArguments().getString(WifiNetworkDetailsFragment2.KEY_CHOSEN_WIFIENTRY_KEY));
+        mNetworkDetailsTracker = FeatureFactory.getFactory(context)
+                .getWifiTrackerLibProvider()
+                .createNetworkDetailsTracker(
+                        getSettingsLifecycle(),
+                        context,
+                        new Handler(Looper.getMainLooper()),
+                        mWorkerThread.getThreadHandler(),
+                        elapsedRealtimeClock,
+                        MAX_SCAN_AGE_MILLIS,
+                        SCAN_INTERVAL_MILLIS,
+                        getArguments().getString(
+                                WifiNetworkDetailsFragment2.KEY_CHOSEN_WIFIENTRY_KEY));
     }
 }
diff --git a/src/com/android/settings/wifi/ConfigureWifiSettings.java b/src/com/android/settings/wifi/ConfigureWifiSettings.java
index 81ca183..ff313c7 100644
--- a/src/com/android/settings/wifi/ConfigureWifiSettings.java
+++ b/src/com/android/settings/wifi/ConfigureWifiSettings.java
@@ -63,18 +63,6 @@
     }
 
     @Override
-    public int getInitialExpandedChildCount() {
-        int tileLimit = 1;
-        if (mWifiWakeupPreferenceController.isAvailable()) {
-            tileLimit++;
-        }
-        if (mUseOpenWifiPreferenceController.isAvailable()) {
-            tileLimit++;
-        }
-        return tileLimit;
-    }
-
-    @Override
     protected int getPreferenceScreenResId() {
         return R.xml.wifi_configure_settings;
     }
diff --git a/src/com/android/settings/wifi/NetworkRequestDialogFragment.java b/src/com/android/settings/wifi/NetworkRequestDialogFragment.java
index 887f09f..11f3612 100644
--- a/src/com/android/settings/wifi/NetworkRequestDialogFragment.java
+++ b/src/com/android/settings/wifi/NetworkRequestDialogFragment.java
@@ -24,11 +24,8 @@
 import android.content.Context;
 import android.content.DialogInterface;
 import android.graphics.drawable.Drawable;
-import android.net.ConnectivityManager;
-import android.net.NetworkScoreManager;
 import android.net.wifi.ScanResult;
 import android.net.wifi.WifiConfiguration;
-import android.net.wifi.WifiManager;
 import android.net.wifi.WifiManager.NetworkRequestMatchCallback;
 import android.net.wifi.WifiManager.NetworkRequestUserSelectionCallback;
 import android.os.Bundle;
@@ -54,6 +51,7 @@
 import androidx.preference.internal.PreferenceImageView;
 
 import com.android.settings.R;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.Utils;
 import com.android.wifitrackerlib.WifiEntry;
 import com.android.wifitrackerlib.WifiPickerTracker;
@@ -113,16 +111,15 @@
             }
         };
         final Context context = getContext();
-        mWifiPickerTracker = new WifiPickerTracker(getSettingsLifecycle(), context,
-                context.getSystemService(WifiManager.class),
-                context.getSystemService(ConnectivityManager.class),
-                context.getSystemService(NetworkScoreManager.class),
-                new Handler(Looper.getMainLooper()),
-                mWorkerThread.getThreadHandler(),
-                elapsedRealtimeClock,
-                MAX_SCAN_AGE_MILLIS,
-                SCAN_INTERVAL_MILLIS,
-                this);
+        mWifiPickerTracker = FeatureFactory.getFactory(context)
+                .getWifiTrackerLibProvider()
+                .createWifiPickerTracker(getSettingsLifecycle(), context,
+                        new Handler(Looper.getMainLooper()),
+                        mWorkerThread.getThreadHandler(),
+                        elapsedRealtimeClock,
+                        MAX_SCAN_AGE_MILLIS,
+                        SCAN_INTERVAL_MILLIS,
+                        this);
     }
 
     @Override
diff --git a/src/com/android/settings/wifi/WifiConnectionPreferenceController.java b/src/com/android/settings/wifi/WifiConnectionPreferenceController.java
index 13d5082..3b2669c 100644
--- a/src/com/android/settings/wifi/WifiConnectionPreferenceController.java
+++ b/src/com/android/settings/wifi/WifiConnectionPreferenceController.java
@@ -17,9 +17,6 @@
 package com.android.settings.wifi;
 
 import android.content.Context;
-import android.net.ConnectivityManager;
-import android.net.NetworkScoreManager;
-import android.net.wifi.WifiManager;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.HandlerThread;
@@ -36,6 +33,7 @@
 
 import com.android.settings.R;
 import com.android.settings.core.SubSettingLauncher;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.wifi.details2.WifiNetworkDetailsFragment2;
 import com.android.settingslib.core.AbstractPreferenceController;
 import com.android.settingslib.core.lifecycle.Lifecycle;
@@ -115,16 +113,15 @@
                 return SystemClock.elapsedRealtime();
             }
         };
-        mWifiPickerTracker = new WifiPickerTracker(lifecycle, context,
-                context.getSystemService(WifiManager.class),
-                context.getSystemService(ConnectivityManager.class),
-                context.getSystemService(NetworkScoreManager.class),
-                new Handler(Looper.getMainLooper()),
-                mWorkerThread.getThreadHandler(),
-                elapsedRealtimeClock,
-                MAX_SCAN_AGE_MILLIS,
-                SCAN_INTERVAL_MILLIS,
-                this);
+        mWifiPickerTracker = FeatureFactory.getFactory(context)
+                .getWifiTrackerLibProvider()
+                .createWifiPickerTracker(lifecycle, context,
+                        new Handler(Looper.getMainLooper()),
+                        mWorkerThread.getThreadHandler(),
+                        elapsedRealtimeClock,
+                        MAX_SCAN_AGE_MILLIS,
+                        SCAN_INTERVAL_MILLIS,
+                        this);
     }
 
     /**
diff --git a/src/com/android/settings/wifi/WifiDialogActivity.java b/src/com/android/settings/wifi/WifiDialogActivity.java
index 000ed3e..1c5a8ed 100644
--- a/src/com/android/settings/wifi/WifiDialogActivity.java
+++ b/src/com/android/settings/wifi/WifiDialogActivity.java
@@ -18,9 +18,7 @@
 
 import android.content.DialogInterface;
 import android.content.Intent;
-import android.net.ConnectivityManager;
 import android.net.NetworkInfo;
-import android.net.NetworkScoreManager;
 import android.net.wifi.WifiConfiguration;
 import android.net.wifi.WifiManager;
 import android.net.wifi.WifiManager.ActionListener;
@@ -38,6 +36,7 @@
 
 import com.android.settings.R;
 import com.android.settings.SetupWizardUtils;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.wifi.dpp.WifiDppUtils;
 import com.android.settingslib.core.lifecycle.ObservableActivity;
 import com.android.settingslib.wifi.AccessPoint;
@@ -124,18 +123,17 @@
                     return SystemClock.elapsedRealtime();
                 }
             };
-            mNetworkDetailsTracker = NetworkDetailsTracker.createNetworkDetailsTracker(
-                    getLifecycle(),
-                    this,
-                    getSystemService(WifiManager.class),
-                    getSystemService(ConnectivityManager.class),
-                    getSystemService(NetworkScoreManager.class),
-                    new Handler(Looper.getMainLooper()),
-                    mWorkerThread.getThreadHandler(),
-                    elapsedRealtimeClock,
-                    MAX_SCAN_AGE_MILLIS,
-                    SCAN_INTERVAL_MILLIS,
-                    mIntent.getStringExtra(KEY_CHOSEN_WIFIENTRY_KEY));
+            mNetworkDetailsTracker = FeatureFactory.getFactory(this)
+                    .getWifiTrackerLibProvider()
+                    .createNetworkDetailsTracker(
+                            getLifecycle(),
+                            this,
+                            new Handler(Looper.getMainLooper()),
+                            mWorkerThread.getThreadHandler(),
+                            elapsedRealtimeClock,
+                            MAX_SCAN_AGE_MILLIS,
+                            SCAN_INTERVAL_MILLIS,
+                            mIntent.getStringExtra(KEY_CHOSEN_WIFIENTRY_KEY));
         } else {
             final Bundle accessPointState = mIntent.getBundleExtra(KEY_ACCESS_POINT_STATE);
             if (accessPointState != null) {
diff --git a/src/com/android/settings/wifi/WifiPickerTrackerHelper.java b/src/com/android/settings/wifi/WifiPickerTrackerHelper.java
new file mode 100644
index 0000000..c20f355
--- /dev/null
+++ b/src/com/android/settings/wifi/WifiPickerTrackerHelper.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.settings.wifi;
+
+import android.content.Context;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.os.Looper;
+import android.os.Process;
+import android.os.SimpleClock;
+import android.os.SystemClock;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.lifecycle.Lifecycle;
+import androidx.lifecycle.LifecycleObserver;
+import androidx.lifecycle.OnLifecycleEvent;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.settings.overlay.FeatureFactory;
+import com.android.wifitrackerlib.MergedCarrierEntry;
+import com.android.wifitrackerlib.WifiEntry;
+import com.android.wifitrackerlib.WifiPickerTracker;
+
+import java.time.Clock;
+import java.time.ZoneOffset;
+
+public class WifiPickerTrackerHelper implements LifecycleObserver {
+
+    private static final String TAG = "WifiPickerTrackerHelper";
+
+    // Max age of tracked WifiEntries
+    private static final long MAX_SCAN_AGE_MILLIS = 15_000;
+    // Interval between initiating WifiPickerTracker scans
+    private static final long SCAN_INTERVAL_MILLIS = 10_000;
+    // Clock used for evaluating the age of scans
+    private static final Clock ELAPSED_REALTIME_CLOCK = new SimpleClock(ZoneOffset.UTC) {
+        @Override
+        public long millis() {
+            return SystemClock.elapsedRealtime();
+        }
+    };
+
+    private WifiPickerTracker mWifiPickerTracker;
+    // Worker thread used for WifiPickerTracker work
+    private HandlerThread mWorkerThread;
+
+    public WifiPickerTrackerHelper(@NonNull Lifecycle lifecycle, @NonNull Context context,
+            @Nullable WifiPickerTracker.WifiPickerTrackerCallback listener) {
+        if (lifecycle == null) {
+            throw new IllegalArgumentException("lifecycle must be non-null.");
+        }
+        lifecycle.addObserver(this);
+        mWorkerThread = new HandlerThread(TAG
+                + "{" + Integer.toHexString(System.identityHashCode(this)) + "}",
+                Process.THREAD_PRIORITY_BACKGROUND);
+        mWorkerThread.start();
+
+        mWifiPickerTracker =  FeatureFactory.getFactory(context)
+                .getWifiTrackerLibProvider()
+                .createWifiPickerTracker(lifecycle, context,
+                new Handler(Looper.getMainLooper()),
+                mWorkerThread.getThreadHandler(),
+                ELAPSED_REALTIME_CLOCK,
+                MAX_SCAN_AGE_MILLIS,
+                SCAN_INTERVAL_MILLIS,
+                listener);
+
+    }
+
+    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
+    public void onDestroy() {
+        mWorkerThread.quit();
+    }
+
+    public @NonNull WifiPickerTracker getWifiPickerTracker() {
+        return mWifiPickerTracker;
+    }
+
+    public boolean setCarrierNetworkEnabled(boolean enable) {
+        final MergedCarrierEntry mergedCarrierEntry = mWifiPickerTracker.getMergedCarrierEntry();
+        if (mergedCarrierEntry == null) {
+            return false;
+        }
+        mergedCarrierEntry.setEnabled(enable);
+        return true;
+    }
+
+    public boolean connectCarrierNetwork(@Nullable WifiEntry.ConnectCallback callback) {
+        final MergedCarrierEntry mergedCarrierEntry = mWifiPickerTracker.getMergedCarrierEntry();
+        if (mergedCarrierEntry == null || !mergedCarrierEntry.canConnect()) {
+            return false;
+        }
+        mergedCarrierEntry.connect(callback);
+        return true;
+    }
+
+    @VisibleForTesting
+    void setWifiPickerTracker(@NonNull WifiPickerTracker wifiPickerTracker) {
+        mWifiPickerTracker = wifiPickerTracker;
+    }
+
+    @VisibleForTesting
+    void setWorkerThread(@NonNull HandlerThread workerThread) {
+        mWorkerThread = workerThread;
+    }
+}
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index 2804393..cf8242b 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -27,8 +27,6 @@
 import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
-import android.net.ConnectivityManager;
-import android.net.NetworkScoreManager;
 import android.net.NetworkTemplate;
 import android.net.wifi.WifiConfiguration;
 import android.net.wifi.WifiManager;
@@ -66,6 +64,7 @@
 import com.android.settings.datausage.DataUsagePreference;
 import com.android.settings.datausage.DataUsageUtils;
 import com.android.settings.location.ScanningSettings;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.widget.SwitchBarController;
 import com.android.settings.wifi.details2.WifiNetworkDetailsFragment2;
@@ -283,16 +282,15 @@
                 return SystemClock.elapsedRealtime();
             }
         };
-        mWifiPickerTracker = new WifiPickerTracker(getSettingsLifecycle(), context,
-                context.getSystemService(WifiManager.class),
-                context.getSystemService(ConnectivityManager.class),
-                context.getSystemService(NetworkScoreManager.class),
-                new Handler(Looper.getMainLooper()),
-                mWorkerThread.getThreadHandler(),
-                elapsedRealtimeClock,
-                MAX_SCAN_AGE_MILLIS,
-                SCAN_INTERVAL_MILLIS,
-                this);
+        mWifiPickerTracker = FeatureFactory.getFactory(context)
+                .getWifiTrackerLibProvider()
+                .createWifiPickerTracker(getSettingsLifecycle(), context,
+                        new Handler(Looper.getMainLooper()),
+                        mWorkerThread.getThreadHandler(),
+                        elapsedRealtimeClock,
+                        MAX_SCAN_AGE_MILLIS,
+                        SCAN_INTERVAL_MILLIS,
+                        this);
 
         final Activity activity = getActivity();
 
diff --git a/src/com/android/settings/wifi/WifiTrackerLibProvider.java b/src/com/android/settings/wifi/WifiTrackerLibProvider.java
new file mode 100644
index 0000000..10b3373
--- /dev/null
+++ b/src/com/android/settings/wifi/WifiTrackerLibProvider.java
@@ -0,0 +1,48 @@
+/*
+ * 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.settings.wifi;
+
+import android.content.Context;
+import android.os.Handler;
+
+import androidx.lifecycle.Lifecycle;
+
+import com.android.wifitrackerlib.NetworkDetailsTracker;
+import com.android.wifitrackerlib.WifiPickerTracker;
+
+import java.time.Clock;
+
+/**
+ * Provides the objects instances from the AOSP WifiTrackerLib.
+ */
+public interface WifiTrackerLibProvider {
+
+    /** Create a new instance of WifiPickerTracker */
+    WifiPickerTracker createWifiPickerTracker(
+            Lifecycle lifecycle, Context context,
+            Handler mainHandler, Handler workerHandler, Clock clock,
+            long maxScanAgeMillis, long scanIntervalMillis,
+            WifiPickerTracker.WifiPickerTrackerCallback listener);
+
+    /** Create a new instance of NetworkDetailsTracker */
+    NetworkDetailsTracker createNetworkDetailsTracker(
+            Lifecycle lifecycle, Context context,
+            Handler mainHandler, Handler workerHandler, Clock clock,
+            long maxScanAgeMillis, long scanIntervalMillis,
+            String key);
+
+}
diff --git a/src/com/android/settings/wifi/WifiTrackerLibProviderImpl.java b/src/com/android/settings/wifi/WifiTrackerLibProviderImpl.java
new file mode 100644
index 0000000..f835409
--- /dev/null
+++ b/src/com/android/settings/wifi/WifiTrackerLibProviderImpl.java
@@ -0,0 +1,74 @@
+/*
+ * 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.settings.wifi;
+
+import android.content.Context;
+import android.net.ConnectivityManager;
+import android.net.NetworkScoreManager;
+import android.net.wifi.WifiManager;
+import android.os.Handler;
+
+import androidx.lifecycle.Lifecycle;
+
+import com.android.wifitrackerlib.NetworkDetailsTracker;
+import com.android.wifitrackerlib.WifiPickerTracker;
+
+import java.time.Clock;
+
+/**
+ * Implementation of AOSP WifiTrackerLibProvider.
+ */
+public class WifiTrackerLibProviderImpl implements WifiTrackerLibProvider {
+
+    /**
+     * Create an instance of WifiPickerTracker.
+     */
+    @Override
+    public WifiPickerTracker createWifiPickerTracker(
+            Lifecycle lifecycle, Context context,
+            Handler mainHandler, Handler workerHandler, Clock clock,
+            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, clock,
+                maxScanAgeMillis, scanIntervalMillis,
+                listener);
+    }
+
+    /**
+     * Create an instance of NetworkDetailsTracker.
+     */
+    @Override
+    public NetworkDetailsTracker createNetworkDetailsTracker(
+            Lifecycle lifecycle, Context context,
+            Handler mainHandler, Handler workerHandler, Clock clock,
+            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, clock,
+                maxScanAgeMillis, scanIntervalMillis,
+                key);
+    }
+}
diff --git a/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragment.java b/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragment.java
index 3921488..46f4414 100644
--- a/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragment.java
+++ b/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragment.java
@@ -24,8 +24,6 @@
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.graphics.drawable.Drawable;
-import android.net.ConnectivityManager;
-import android.net.NetworkScoreManager;
 import android.net.wifi.WifiConfiguration;
 import android.net.wifi.WifiConfiguration.KeyMgmt;
 import android.net.wifi.WifiManager;
@@ -60,6 +58,7 @@
 import com.android.settings.R;
 import com.android.settings.Utils;
 import com.android.settings.core.InstrumentedFragment;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.wifitrackerlib.WifiEntry;
 import com.android.wifitrackerlib.WifiPickerTracker;
 
@@ -191,16 +190,15 @@
                 return SystemClock.elapsedRealtime();
             }
         };
-        mWifiPickerTracker = new WifiPickerTracker(getSettingsLifecycle(), mActivity,
-                mActivity.getSystemService(WifiManager.class),
-                mActivity.getSystemService(ConnectivityManager.class),
-                mActivity.getSystemService(NetworkScoreManager.class),
-                new Handler(Looper.getMainLooper()),
-                mWorkerThread.getThreadHandler(),
-                elapsedRealtimeClock,
-                MAX_SCAN_AGE_MILLIS,
-                SCAN_INTERVAL_MILLIS,
-                this);
+        mWifiPickerTracker = FeatureFactory.getFactory(mActivity.getApplicationContext())
+                .getWifiTrackerLibProvider()
+                .createWifiPickerTracker(getSettingsLifecycle(), mActivity,
+                        new Handler(Looper.getMainLooper()),
+                        mWorkerThread.getThreadHandler(),
+                        elapsedRealtimeClock,
+                        MAX_SCAN_AGE_MILLIS,
+                        SCAN_INTERVAL_MILLIS,
+                        this);
         return inflater.inflate(R.layout.wifi_add_app_networks, container, false);
     }
 
diff --git a/src/com/android/settings/wifi/details2/WifiNetworkDetailsFragment2.java b/src/com/android/settings/wifi/details2/WifiNetworkDetailsFragment2.java
index d0708ea..b154a9b 100644
--- a/src/com/android/settings/wifi/details2/WifiNetworkDetailsFragment2.java
+++ b/src/com/android/settings/wifi/details2/WifiNetworkDetailsFragment2.java
@@ -22,7 +22,6 @@
 import android.app.settings.SettingsEnums;
 import android.content.Context;
 import android.net.ConnectivityManager;
-import android.net.NetworkScoreManager;
 import android.net.wifi.WifiManager;
 import android.os.Handler;
 import android.os.HandlerThread;
@@ -42,6 +41,7 @@
 import com.android.settings.R;
 import com.android.settings.Utils;
 import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.wifi.WifiConfigUiBase2;
 import com.android.settings.wifi.WifiDialog2;
 import com.android.settingslib.RestrictedLockUtils;
@@ -239,18 +239,17 @@
             }
         };
 
-        mNetworkDetailsTracker = NetworkDetailsTracker.createNetworkDetailsTracker(
-                getSettingsLifecycle(),
-                context,
-                context.getSystemService(WifiManager.class),
-                context.getSystemService(ConnectivityManager.class),
-                context.getSystemService(NetworkScoreManager.class),
-                new Handler(Looper.getMainLooper()),
-                mWorkerThread.getThreadHandler(),
-                elapsedRealtimeClock,
-                MAX_SCAN_AGE_MILLIS,
-                SCAN_INTERVAL_MILLIS,
-                getArguments().getString(KEY_CHOSEN_WIFIENTRY_KEY));
+        mNetworkDetailsTracker = FeatureFactory.getFactory(context)
+                .getWifiTrackerLibProvider()
+                .createNetworkDetailsTracker(
+                        getSettingsLifecycle(),
+                        context,
+                        new Handler(Looper.getMainLooper()),
+                        mWorkerThread.getThreadHandler(),
+                        elapsedRealtimeClock,
+                        MAX_SCAN_AGE_MILLIS,
+                        SCAN_INTERVAL_MILLIS,
+                        getArguments().getString(KEY_CHOSEN_WIFIENTRY_KEY));
     }
 
     /**
diff --git a/src/com/android/settings/wifi/dpp/WifiDppQrCodeScannerFragment.java b/src/com/android/settings/wifi/dpp/WifiDppQrCodeScannerFragment.java
index cee3ccd..5c80024 100644
--- a/src/com/android/settings/wifi/dpp/WifiDppQrCodeScannerFragment.java
+++ b/src/com/android/settings/wifi/dpp/WifiDppQrCodeScannerFragment.java
@@ -25,8 +25,6 @@
 import android.graphics.Matrix;
 import android.graphics.Rect;
 import android.graphics.SurfaceTexture;
-import android.net.ConnectivityManager;
-import android.net.NetworkScoreManager;
 import android.net.wifi.EasyConnectStatusCallback;
 import android.net.wifi.WifiConfiguration;
 import android.net.wifi.WifiManager;
@@ -57,6 +55,7 @@
 import androidx.lifecycle.ViewModelProviders;
 
 import com.android.settings.R;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.wifi.qrcode.QrCamera;
 import com.android.settings.wifi.qrcode.QrDecorateView;
 import com.android.wifitrackerlib.WifiEntry;
@@ -363,16 +362,15 @@
             }
         };
         final Context context = getContext();
-        mWifiPickerTracker = new WifiPickerTracker(getSettingsLifecycle(), context,
-                context.getSystemService(WifiManager.class),
-                context.getSystemService(ConnectivityManager.class),
-                context.getSystemService(NetworkScoreManager.class),
-                new Handler(Looper.getMainLooper()),
-                mWorkerThread.getThreadHandler(),
-                elapsedRealtimeClock,
-                MAX_SCAN_AGE_MILLIS,
-                SCAN_INTERVAL_MILLIS,
-                null /* listener */);
+        mWifiPickerTracker = FeatureFactory.getFactory(context)
+                .getWifiTrackerLibProvider()
+                .createWifiPickerTracker(getSettingsLifecycle(), context,
+                        new Handler(Looper.getMainLooper()),
+                        mWorkerThread.getThreadHandler(),
+                        elapsedRealtimeClock,
+                        MAX_SCAN_AGE_MILLIS,
+                        SCAN_INTERVAL_MILLIS,
+                        null /* listener */);
 
         // setTitle for TalkBack
         if (mIsConfiguratorMode) {
diff --git a/src/com/android/settings/wifi/slice/WifiScanWorker.java b/src/com/android/settings/wifi/slice/WifiScanWorker.java
index 16c4ebc..78b0d33 100644
--- a/src/com/android/settings/wifi/slice/WifiScanWorker.java
+++ b/src/com/android/settings/wifi/slice/WifiScanWorker.java
@@ -19,8 +19,6 @@
 import static com.android.settings.wifi.slice.WifiSlice.DEFAULT_EXPANDED_ROW_COUNT;
 
 import android.content.Context;
-import android.net.ConnectivityManager;
-import android.net.NetworkScoreManager;
 import android.net.Uri;
 import android.net.wifi.WifiManager;
 import android.os.HandlerThread;
@@ -34,8 +32,10 @@
 import androidx.lifecycle.LifecycleOwner;
 import androidx.lifecycle.LifecycleRegistry;
 
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.slices.SliceBackgroundWorker;
 import com.android.settingslib.utils.ThreadUtils;
+import com.android.wifitrackerlib.MergedCarrierEntry;
 import com.android.wifitrackerlib.WifiEntry;
 import com.android.wifitrackerlib.WifiEntry.WifiEntryCallback;
 import com.android.wifitrackerlib.WifiPickerTracker;
@@ -61,7 +61,7 @@
     @VisibleForTesting
     final LifecycleRegistry mLifecycleRegistry;
     @VisibleForTesting
-    WifiPickerTracker mWifiPickerTracker;
+    protected WifiPickerTracker mWifiPickerTracker;
     // Worker thread used for WifiPickerTracker work
     private final HandlerThread mWorkerThread;
 
@@ -78,16 +78,15 @@
                 return SystemClock.elapsedRealtime();
             }
         };
-        mWifiPickerTracker = new WifiPickerTracker(getLifecycle(), context,
-                context.getSystemService(WifiManager.class),
-                context.getSystemService(ConnectivityManager.class),
-                context.getSystemService(NetworkScoreManager.class),
-                ThreadUtils.getUiThreadHandler(),
-                mWorkerThread.getThreadHandler(),
-                elapsedRealtimeClock,
-                MAX_SCAN_AGE_MILLIS,
-                SCAN_INTERVAL_MILLIS,
-                this);
+        mWifiPickerTracker = FeatureFactory.getFactory(context)
+                .getWifiTrackerLibProvider()
+                .createWifiPickerTracker(getLifecycle(), context,
+                        ThreadUtils.getUiThreadHandler(),
+                        mWorkerThread.getThreadHandler(),
+                        elapsedRealtimeClock,
+                        MAX_SCAN_AGE_MILLIS,
+                        SCAN_INTERVAL_MILLIS,
+                        this);
 
         mLifecycleRegistry.markState(Lifecycle.State.INITIALIZED);
         mLifecycleRegistry.markState(Lifecycle.State.CREATED);
@@ -199,4 +198,18 @@
         }
         super.updateResults(resultList);
     }
+
+    public void setCarrierNetworkEnabled(boolean enable) {
+        final MergedCarrierEntry mergedCarrierEntry = mWifiPickerTracker.getMergedCarrierEntry();
+        if (mergedCarrierEntry != null) {
+            mergedCarrierEntry.setEnabled(enable);
+        }
+    }
+
+    public void connectCarrierNetwork() {
+        final MergedCarrierEntry mergedCarrierEntry = mWifiPickerTracker.getMergedCarrierEntry();
+        if (mergedCarrierEntry != null && mergedCarrierEntry.canConnect()) {
+            mergedCarrierEntry.connect(null /* ConnectCallback */);
+        }
+    }
 }
diff --git a/src/com/android/settings/wifi/slice/WifiSlice.java b/src/com/android/settings/wifi/slice/WifiSlice.java
index 7d009f4..898de56 100644
--- a/src/com/android/settings/wifi/slice/WifiSlice.java
+++ b/src/com/android/settings/wifi/slice/WifiSlice.java
@@ -147,7 +147,7 @@
         return builder;
     }
 
-    private ListBuilder.RowBuilder getWifiSliceItemRow(WifiSliceItem wifiSliceItem) {
+    protected ListBuilder.RowBuilder getWifiSliceItemRow(WifiSliceItem wifiSliceItem) {
         final CharSequence title = wifiSliceItem.getTitle();
         final IconCompat levelIcon = getWifiSliceItemLevelIcon(wifiSliceItem);
         final ListBuilder.RowBuilder rowBuilder = new ListBuilder.RowBuilder()
@@ -183,7 +183,7 @@
 
     private IconCompat getEndIcon(WifiSliceItem wifiSliceItem) {
         if (wifiSliceItem.getConnectedState() != WifiEntry.CONNECTED_STATE_DISCONNECTED) {
-            return null;
+            return IconCompat.createWithResource(mContext, R.drawable.ic_settings_24dp);
         }
 
         if (wifiSliceItem.getSecurity() != WifiEntry.SECURITY_NONE) {
diff --git a/tests/robotests/src/com/android/settings/accessibility/MagnificationCapabilitiesTest.java b/tests/robotests/src/com/android/settings/accessibility/MagnificationCapabilitiesTest.java
new file mode 100644
index 0000000..ac7f073
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/accessibility/MagnificationCapabilitiesTest.java
@@ -0,0 +1,59 @@
+/*
+ * 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.settings.accessibility;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.R;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+
+/** Tests for {@link MagnificationCapabilities} */
+@RunWith(RobolectricTestRunner.class)
+public final class MagnificationCapabilitiesTest {
+
+    private final Context mContext = ApplicationProvider.getApplicationContext();
+
+    @Test
+    public void getCapabilities_windowMode_expectedCapabilities() {
+        MagnificationCapabilities.setCapabilities(mContext,
+                MagnificationCapabilities.MagnificationMode.WINDOW);
+
+        final int windowCapabilities = MagnificationCapabilities.getCapabilities(mContext);
+        assertThat(windowCapabilities).isEqualTo(
+                MagnificationCapabilities.MagnificationMode.WINDOW);
+
+    }
+
+    @Test
+    public void getSummary_fullScreenMode_expectedSummary() {
+        final int fullScreenCapabilities = MagnificationCapabilities.MagnificationMode.FULLSCREEN;
+
+        final String actualString = MagnificationCapabilities.getSummary(mContext,
+                fullScreenCapabilities);
+
+        final String expectedString = mContext.getString(
+                R.string.accessibility_magnification_area_settings_full_screen_summary);
+        assertThat(actualString).isEqualTo(expectedString);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/accessibility/ReduceBrightColorsIntensityPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/ReduceBrightColorsIntensityPreferenceControllerTest.java
deleted file mode 100644
index 4cc17dc..0000000
--- a/tests/robotests/src/com/android/settings/accessibility/ReduceBrightColorsIntensityPreferenceControllerTest.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.settings.accessibility;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-
-import androidx.test.core.app.ApplicationProvider;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@RunWith(AndroidJUnit4.class)
-/** TODO(b/170970675): Update and add tests after ColorDisplayService work is integrated */
-public class ReduceBrightColorsIntensityPreferenceControllerTest {
-    private final Context mContext = ApplicationProvider.getApplicationContext();
-    private final ReduceBrightColorsIntensityPreferenceController mPreferenceController =
-            new ReduceBrightColorsIntensityPreferenceController(mContext,
-            "rbc_intensity");
-
-    @Test
-    public void isAvailable_configuredRbcAvailable_enabledRbc_shouldReturnTrue() {
-        assertThat(mPreferenceController.isAvailable()).isTrue();
-    }
-    @Test
-    public void isAvailable_configuredRbcAvailable_disabledRbc_shouldReturnFalse() {
-        assertThat(mPreferenceController.isAvailable()).isTrue();
-    }
-    @Test
-    public void isAvailable_configuredRbcUnavailable_enabledRbc_shouldReturnFalse() {
-        assertThat(mPreferenceController.isAvailable()).isTrue();
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/accessibility/RingVibrationIntensityPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/RingVibrationIntensityPreferenceControllerTest.java
new file mode 100644
index 0000000..0eaf008
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/accessibility/RingVibrationIntensityPreferenceControllerTest.java
@@ -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.
+ */
+
+package com.android.settings.accessibility;
+
+import static com.android.settings.core.BasePreferenceController.AVAILABLE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+
+import android.content.Context;
+import android.os.Vibrator;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+
+/** Tests for {@link RingVibrationIntensityPreferenceController}. */
+@RunWith(RobolectricTestRunner.class)
+public class RingVibrationIntensityPreferenceControllerTest {
+    @Mock
+    private Vibrator mVibrator;
+
+    private RingVibrationIntensityPreferenceController mController;
+
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+
+        final Context mContext = spy(ApplicationProvider.getApplicationContext());
+        doReturn(mVibrator).when(mContext).getSystemService(Vibrator.class);
+        mController = new RingVibrationIntensityPreferenceController(mContext);
+    }
+
+    @Test
+    public void getAvailabilityStatus_available() {
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void getDefaultIntensity_success() {
+        doReturn(/* toBeReturned= */ 5).when(mVibrator).getDefaultRingVibrationIntensity();
+
+        assertThat(mController.getDefaultIntensity()).isEqualTo(/* expected= */ 5);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/accessibility/TextAndDisplayFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/TextAndDisplayFragmentTest.java
new file mode 100644
index 0000000..96756ecd
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/accessibility/TextAndDisplayFragmentTest.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.accessibility;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.R;
+import com.android.settings.testutils.XmlTestUtils;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+
+import java.util.List;
+
+@RunWith(RobolectricTestRunner.class)
+public class TextAndDisplayFragmentTest {
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+
+    @Test
+    public void getNonIndexableKeys_existInXmlLayout() {
+        final List<String> niks = TextAndDisplayFragment.SEARCH_INDEX_DATA_PROVIDER
+                .getNonIndexableKeys(mContext);
+        final List<String> keys =
+                XmlTestUtils.getKeysFromPreferenceXml(mContext,
+                        R.xml.accessibility_text_and_display);
+
+        assertThat(keys).containsAtLeastElementsIn(niks);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/accessibility/ToggleAutoclickPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/ToggleAutoclickPreferenceControllerTest.java
new file mode 100644
index 0000000..edc2992
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/accessibility/ToggleAutoclickPreferenceControllerTest.java
@@ -0,0 +1,161 @@
+/*
+ * 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.settings.accessibility;
+
+import static android.content.Context.MODE_PRIVATE;
+
+import static com.android.settings.accessibility.ToggleAutoclickPreferenceController.AUTOCLICK_CUSTOM_MODE;
+import static com.android.settings.accessibility.ToggleAutoclickPreferenceController.AUTOCLICK_OFF_MODE;
+import static com.android.settings.accessibility.ToggleAutoclickPreferenceController.KEY_AUTOCLICK_CUSTOM_SEEKBAR;
+import static com.android.settings.accessibility.ToggleAutoclickPreferenceController.KEY_DELAY_MODE;
+import static com.android.settings.core.BasePreferenceController.AVAILABLE;
+
+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 android.content.Context;
+import android.content.SharedPreferences;
+import android.provider.Settings.Secure;
+
+import androidx.lifecycle.LifecycleObserver;
+import androidx.preference.PreferenceScreen;
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.accessibility.ToggleAutoclickPreferenceController.OnChangeListener;
+import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settingslib.widget.LayoutPreference;
+import com.android.settingslib.widget.RadioButtonPreference;
+import com.android.settingslib.widget.RadioButtonPreference.OnClickListener;
+
+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 java.util.Map;
+
+/** Tests for {@link ToggleAutoclickPreferenceController}. */
+@RunWith(RobolectricTestRunner.class)
+public class ToggleAutoclickPreferenceControllerTest {
+
+    @Mock
+    private PreferenceScreen mScreen;
+
+    @Mock
+    private RadioButtonPreference mDelayModePref;
+
+    @Mock
+    private OnChangeListener mOnChangeListener;
+
+    @Mock
+    private LayoutPreference mSeekBarPref;
+
+    @Mock
+    private Map<String, Integer> mAccessibilityAutoclickKeyToValueMap;
+
+    private ToggleAutoclickPreferenceController mController;
+    private SharedPreferences mSharedPreferences;
+    private final String mPrefKey = "prefKey";
+    private final Context mContext = ApplicationProvider.getApplicationContext();
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mController = new ToggleAutoclickPreferenceController(mContext, mPrefKey);
+        mController.mAccessibilityAutoclickKeyToValueMap = mAccessibilityAutoclickKeyToValueMap;
+        mSharedPreferences =
+                mContext.getSharedPreferences(mContext.getPackageName(), MODE_PRIVATE);
+
+        when(mScreen.findPreference(mPrefKey)).thenReturn(mDelayModePref);
+        when(mScreen.findPreference(KEY_AUTOCLICK_CUSTOM_SEEKBAR)).thenReturn(mSeekBarPref);
+        when(mAccessibilityAutoclickKeyToValueMap.get(mDelayModePref.getKey())).thenReturn(
+                AUTOCLICK_OFF_MODE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_available() {
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void setClickListenerOnDelayModePref_whenDisplay_success() {
+        mController.displayPreference(mScreen);
+
+        verify(mDelayModePref).setOnClickListener(any(OnClickListener.class));
+    }
+
+    @Test
+    public void constructor_hasLifecycle_addObserver() {
+        final Lifecycle lifecycle = mock(Lifecycle.class);
+        mController = new ToggleAutoclickPreferenceController(mContext, lifecycle, mPrefKey);
+
+        verify(lifecycle).addObserver(any(LifecycleObserver.class));
+    }
+
+    @Test
+    public void onRadioButtonClicked_offMode_disableAutoClick() {
+        when(mAccessibilityAutoclickKeyToValueMap.get(mPrefKey)).thenReturn(AUTOCLICK_OFF_MODE);
+
+        mController.displayPreference(mScreen);
+        mController.onRadioButtonClicked(any(RadioButtonPreference.class));
+        final boolean isEnabled = Secure.getInt(mContext.getContentResolver(),
+                Secure.ACCESSIBILITY_AUTOCLICK_ENABLED, /* def= */ 0) == 1;
+        final int delayMs = Secure.getInt(mContext.getContentResolver(),
+                Secure.ACCESSIBILITY_AUTOCLICK_DELAY, /* def= */ 0);
+        final int keyDelayMode = mSharedPreferences.getInt(KEY_DELAY_MODE, AUTOCLICK_CUSTOM_MODE);
+
+        assertThat(keyDelayMode).isEqualTo(AUTOCLICK_OFF_MODE);
+        assertThat(delayMs).isEqualTo(/* expected= */ 0);
+        assertThat(isEnabled).isFalse();
+    }
+
+    @Test
+    public void onRadioButtonClicked_customMode_enableAutoClick() {
+        when(mAccessibilityAutoclickKeyToValueMap.get(mDelayModePref.getKey())).thenReturn(
+                AUTOCLICK_CUSTOM_MODE);
+        when(mAccessibilityAutoclickKeyToValueMap.get(mPrefKey)).thenReturn(AUTOCLICK_CUSTOM_MODE);
+
+        mController.displayPreference(mScreen);
+        mController.onRadioButtonClicked(any(RadioButtonPreference.class));
+        final boolean isEnabled = Secure.getInt(mContext.getContentResolver(),
+                Secure.ACCESSIBILITY_AUTOCLICK_ENABLED, /* def= */ 0) == 1;
+        final int keyDelayMode = mSharedPreferences.getInt(KEY_DELAY_MODE, AUTOCLICK_CUSTOM_MODE);
+
+        assertThat(keyDelayMode).isEqualTo(AUTOCLICK_CUSTOM_MODE);
+        assertThat(isEnabled).isTrue();
+    }
+
+    @Test
+    public void onRadioButtonClicked_hasListener_runOnCheckedChanged() {
+        when(mAccessibilityAutoclickKeyToValueMap.get(mDelayModePref.getKey())).thenReturn(
+                AUTOCLICK_CUSTOM_MODE);
+        when(mAccessibilityAutoclickKeyToValueMap.get(mPrefKey)).thenReturn(AUTOCLICK_CUSTOM_MODE);
+
+        mController.setOnChangeListener(mOnChangeListener);
+        mController.displayPreference(mScreen);
+        mController.onRadioButtonClicked(any(RadioButtonPreference.class));
+
+        verify(mOnChangeListener).onCheckedChanged(mDelayModePref);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/accessibility/VideoPlayerTest.java b/tests/robotests/src/com/android/settings/accessibility/VideoPlayerTest.java
new file mode 100644
index 0000000..57df456
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/accessibility/VideoPlayerTest.java
@@ -0,0 +1,114 @@
+/*
+ * 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.settings.accessibility;
+
+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.content.Context;
+import android.media.MediaPlayer;
+import android.view.Surface;
+import android.view.TextureView;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.accessibility.VideoPlayer.State;
+
+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;
+
+/** Tests for {@link VideoPlayer}. */
+@RunWith(RobolectricTestRunner.class)
+public class VideoPlayerTest {
+
+    @Mock
+    private MediaPlayer mMediaPlayer;
+
+    @Mock
+    private TextureView mTextureView;
+
+    @Mock
+    private Surface mSurface;
+
+    private VideoPlayer mVideoPlayer;
+
+    @Before
+    public void initVideoPlayer() {
+        MockitoAnnotations.initMocks(this);
+
+        final int videoRes = 0;
+        final Context context = ApplicationProvider.getApplicationContext();
+
+        mVideoPlayer = spy(VideoPlayer.create(context, videoRes, mTextureView));
+        mVideoPlayer.mMediaPlayer = mMediaPlayer;
+        mVideoPlayer.mAnimationSurface = mSurface;
+    }
+
+    @Test
+    public void setSurfaceTextureListener_success() {
+        verify(mTextureView).setSurfaceTextureListener(any());
+    }
+
+    @Test
+    public void onPlayerPaused_startedState_pause() {
+        mVideoPlayer.mMediaPlayerState = State.STARTED;
+
+        mVideoPlayer.pause();
+
+        assertThat(mVideoPlayer.mMediaPlayerState).isEqualTo(State.PAUSED);
+        verify(mMediaPlayer).pause();
+    }
+
+    @Test
+    public void onPlayerResumed_pausedState_start() {
+        mVideoPlayer.mMediaPlayerState = State.PAUSED;
+
+        mVideoPlayer.resume();
+
+        assertThat(mVideoPlayer.mMediaPlayerState).isEqualTo(State.STARTED);
+        verify(mMediaPlayer).start();
+    }
+
+    @Test
+    public void onPlayerReleased_stoppedState_release() {
+        mVideoPlayer.mMediaPlayerState = State.STOPPED;
+
+        mVideoPlayer.release();
+
+        assertThat(mVideoPlayer.mMediaPlayerState).isEqualTo(State.END);
+        verify(mMediaPlayer).release();
+        verify(mSurface).release();
+    }
+
+    @Test
+    public void onSurfaceTextureDestroyed_preparedState_release() {
+        mVideoPlayer.mMediaPlayerState = State.PREPARED;
+
+        mVideoPlayer.onSurfaceTextureDestroyed(any());
+
+        assertThat(mVideoPlayer.mMediaPlayerState).isEqualTo(State.END);
+        verify(mMediaPlayer).release();
+        verify(mSurface).release();
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/applications/specialaccess/notificationaccess/NotificationAccessDetailsTest.java b/tests/robotests/src/com/android/settings/applications/specialaccess/notificationaccess/NotificationAccessDetailsTest.java
deleted file mode 100644
index 26a78d0..0000000
--- a/tests/robotests/src/com/android/settings/applications/specialaccess/notificationaccess/NotificationAccessDetailsTest.java
+++ /dev/null
@@ -1,66 +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.settings.applications.specialaccess.notificationaccess;
-
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-
-import android.content.Context;
-
-import com.android.internal.logging.nano.MetricsProto;
-import com.android.settings.testutils.FakeFeatureFactory;
-
-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 NotificationAccessDetailsTest {
-
-    private Context mContext;
-    private FakeFeatureFactory mFeatureFactory;
-    private NotificationAccessDetails mFragment;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mFeatureFactory = FakeFeatureFactory.setupForTest();
-        mFragment = spy(new NotificationAccessDetails());
-        mContext = RuntimeEnvironment.application;
-        doReturn(mContext).when(mFragment).getContext();
-
-    }
-
-    @Test
-    public void logSpecialPermissionChange() {
-        mFragment.logSpecialPermissionChange(true, "app");
-        verify(mFeatureFactory.metricsFeatureProvider).action(
-                mContext,
-                MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_NOTIVIEW_ALLOW,
-                "app");
-
-        mFragment.logSpecialPermissionChange(false, "app");
-        verify(mFeatureFactory.metricsFeatureProvider).action(
-                mContext,
-                MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_NOTIVIEW_DENY,
-                "app");
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSuggestionActivityTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSuggestionActivityTest.java
index ea5511d..d3a1fc1 100644
--- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSuggestionActivityTest.java
+++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSuggestionActivityTest.java
@@ -24,12 +24,18 @@
 import android.app.Activity;
 import android.app.KeyguardManager;
 import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.hardware.biometrics.SensorProperties;
+import android.hardware.fingerprint.FingerprintSensorProperties;
+import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
 import android.view.View;
 import android.widget.Button;
 
 import com.android.settings.R;
 import com.android.settings.testutils.FakeFeatureFactory;
+import com.android.settings.testutils.shadow.ShadowFingerprintManager;
 import com.android.settings.testutils.shadow.ShadowLockPatternUtils;
+import com.android.settings.testutils.shadow.ShadowStorageManager;
 import com.android.settings.testutils.shadow.ShadowUserManager;
 
 import com.google.android.setupcompat.PartnerCustomizationLayout;
@@ -46,18 +52,39 @@
 import org.robolectric.shadows.ShadowActivity;
 import org.robolectric.shadows.ShadowKeyguardManager;
 
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowLockPatternUtils.class, ShadowUserManager.class})
-public class FingerprintSuggestionActivityTest {
+import java.util.ArrayList;
 
+@RunWith(RobolectricTestRunner.class)
+@Config(shadows = {
+        ShadowFingerprintManager.class,
+        ShadowLockPatternUtils.class,
+        ShadowStorageManager.class,
+        ShadowUserManager.class
+})
+public class FingerprintSuggestionActivityTest {
+    private FingerprintSuggestionActivity mActivity;
     private ActivityController<FingerprintSuggestionActivity> mController;
 
     @Before
     public void setUp() {
+        Shadows.shadowOf(application.getPackageManager())
+                .setSystemFeature(PackageManager.FEATURE_FINGERPRINT, true);
+
+        final FingerprintSensorPropertiesInternal prop = new FingerprintSensorPropertiesInternal(
+                0 /* sensorId */,
+                SensorProperties.STRENGTH_STRONG,
+                5 /* maxEnrollmentsPerUser */,
+                FingerprintSensorProperties.TYPE_REAR,
+                true /* resetLockoutRequiresHardwareAuthToken */);
+        final ArrayList<FingerprintSensorPropertiesInternal> props = new ArrayList<>();
+        props.add(prop);
+        ShadowFingerprintManager.setSensorProperties(props);
+
         FakeFeatureFactory.setupForTest();
 
         final Intent intent = new Intent();
         mController = Robolectric.buildActivity(FingerprintSuggestionActivity.class, intent);
+        mActivity = mController.get();
     }
 
     @Test
@@ -66,8 +93,7 @@
 
         mController.create().resume();
 
-        PartnerCustomizationLayout layout =
-                mController.get().findViewById(R.id.setup_wizard_layout);
+        PartnerCustomizationLayout layout = mActivity.findViewById(R.id.setup_wizard_layout);
         final Button cancelButton =
                 layout.getMixin(FooterBarMixin.class).getSecondaryButtonView();
         assertThat(cancelButton.getText().toString()).isEqualTo("Cancel");
@@ -75,8 +101,8 @@
                 .isEqualTo(View.VISIBLE);
         cancelButton.performClick();
 
-        ShadowActivity shadowActivity = Shadows.shadowOf(mController.get());
-        assertWithMessage("Is finishing").that(mController.get().isFinishing()).isTrue();
+        ShadowActivity shadowActivity = Shadows.shadowOf(mActivity);
+        assertWithMessage("Is finishing").that(mActivity.isFinishing()).isTrue();
         assertWithMessage("Result code").that(shadowActivity.getResultCode())
             .isEqualTo(Activity.RESULT_CANCELED);
     }
diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentSearchIndexProviderInspector.java b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentSearchIndexProviderInspector.java
index 6103b2b..24d4d33 100644
--- a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentSearchIndexProviderInspector.java
+++ b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentSearchIndexProviderInspector.java
@@ -24,7 +24,6 @@
 import com.android.settings.core.PreferenceControllerListHelper;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.search.DatabaseIndexingUtils;
-import com.android.settingslib.search.Indexable;
 import com.android.settingslib.core.AbstractPreferenceController;
 
 import org.robolectric.RuntimeEnvironment;
diff --git a/tests/robotests/src/com/android/settings/datausage/AppPrefLoaderTest.java b/tests/robotests/src/com/android/settings/datausage/AppPrefLoaderTest.java
deleted file mode 100644
index 5efeaf2..0000000
--- a/tests/robotests/src/com/android/settings/datausage/AppPrefLoaderTest.java
+++ /dev/null
@@ -1,82 +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.settings.datausage;
-
-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.mock;
-import static org.mockito.Mockito.when;
-
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.graphics.drawable.Drawable;
-import android.util.ArraySet;
-
-import androidx.preference.Preference;
-
-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 AppPrefLoaderTest {
-
-    @Mock
-    private PackageManager mPackageManager;
-
-    private AppPrefLoader mLoader;
-
-    @Before
-    public void setUp() throws Exception {
-        MockitoAnnotations.initMocks(this);
-        final ArraySet<String> pkgs = new ArraySet<>(2);
-        pkgs.add("pkg0");
-        pkgs.add("pkg1");
-        mLoader = new AppPrefLoader(RuntimeEnvironment.application, pkgs, mPackageManager);
-    }
-
-    @Test
-    public void loadInBackground_packageNotFound_shouldReturnEmptySet()
-            throws NameNotFoundException {
-        when(mPackageManager.getApplicationInfo(anyString(), anyInt()))
-            .thenThrow(new NameNotFoundException());
-
-        assertThat(mLoader.loadInBackground()).isEmpty();
-    }
-
-    @Test
-    public void loadInBackground_shouldReturnPreference() throws NameNotFoundException {
-        ApplicationInfo info = mock(ApplicationInfo.class);
-        when(mPackageManager.getApplicationInfo(anyString(), anyInt())).thenReturn(info);
-        final Drawable drawable = mock(Drawable.class);
-        final String label = "Label1";
-        when(info.loadIcon(mPackageManager)).thenReturn(drawable);
-        when(info.loadLabel(mPackageManager)).thenReturn(label);
-
-        Preference preference = mLoader.loadInBackground().valueAt(0);
-        assertThat(preference.getTitle()).isEqualTo(label);
-        assertThat(preference.getIcon()).isEqualTo(drawable);
-        assertThat(preference.isSelectable()).isFalse();
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/datausage/CellDataPreferenceTest.java b/tests/robotests/src/com/android/settings/datausage/CellDataPreferenceTest.java
deleted file mode 100644
index c0b12dc..0000000
--- a/tests/robotests/src/com/android/settings/datausage/CellDataPreferenceTest.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.settings.datausage;
-
-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.doNothing;
-import static org.mockito.Mockito.doReturn;
-
-import android.content.Context;
-import android.telephony.SubscriptionInfo;
-import android.telephony.SubscriptionManager;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.LinearLayout;
-
-import androidx.preference.PreferenceViewHolder;
-
-import com.android.settings.network.ProxySubscriptionManager;
-
-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 CellDataPreferenceTest {
-
-    @Mock
-    private ProxySubscriptionManager mProxySubscriptionMgr;
-    @Mock
-    private SubscriptionManager mSubscriptionManager;
-    @Mock
-    private SubscriptionInfo mSubInfo;
-
-    private Context mContext;
-    private PreferenceViewHolder mHolder;
-    private CellDataPreference mPreference;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mContext = RuntimeEnvironment.application;
-        mPreference = new CellDataPreference(mContext, null) {
-            @Override
-            ProxySubscriptionManager getProxySubscriptionManager() {
-                return mProxySubscriptionMgr;
-            }
-            @Override
-            SubscriptionInfo getActiveSubscriptionInfo(int subId) {
-                return mSubInfo;
-            }
-        };
-        doNothing().when(mSubscriptionManager).setDefaultDataSubId(anyInt());
-        doReturn(mSubscriptionManager).when(mProxySubscriptionMgr).get();
-        doNothing().when(mProxySubscriptionMgr).addActiveSubscriptionsListener(any());
-        doNothing().when(mProxySubscriptionMgr).removeActiveSubscriptionsListener(any());
-
-        final LayoutInflater inflater = LayoutInflater.from(mContext);
-        final View view = inflater.inflate(mPreference.getLayoutResource(),
-                new LinearLayout(mContext), false);
-
-        mHolder = PreferenceViewHolder.createInstanceForTests(view);
-    }
-
-    @Test
-    public void noActiveSub_shouldDisable() {
-        mSubInfo = null;
-        mPreference.mOnSubscriptionsChangeListener.onChanged();
-        assertThat(mPreference.isEnabled()).isFalse();
-    }
-
-    @Test
-    public void hasActiveSub_shouldEnable() {
-        mPreference.mOnSubscriptionsChangeListener.onChanged();
-        assertThat(mPreference.isEnabled()).isTrue();
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/datausage/DataUsageInfoControllerTest.java b/tests/robotests/src/com/android/settings/datausage/DataUsageInfoControllerTest.java
deleted file mode 100644
index 6c89201..0000000
--- a/tests/robotests/src/com/android/settings/datausage/DataUsageInfoControllerTest.java
+++ /dev/null
@@ -1,144 +0,0 @@
-package com.android.settings.datausage;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.net.NetworkPolicy;
-import android.net.NetworkTemplate;
-
-import com.android.settingslib.net.DataUsageController.DataUsageInfo;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-
-@RunWith(RobolectricTestRunner.class)
-public class DataUsageInfoControllerTest {
-
-    private static final int NEGATIVE = -1;
-    private static final int ZERO = 0;
-    private static final int POSITIVE_SMALL = 1;
-    private static final int POSITIVE_LARGE = 5;
-
-    private DataUsageInfoController mInfoController;
-    private DataUsageInfo info;
-
-    @Before
-    public void setUp()  {
-        mInfoController = new DataUsageInfoController();
-        info = new DataUsageInfo();
-    }
-
-    @Test
-    public void testLowUsageLowWarning_LimitUsed() {
-        info.warningLevel = POSITIVE_SMALL;
-        info.limitLevel = POSITIVE_LARGE;
-        info.usageLevel = POSITIVE_SMALL;
-        assertThat(mInfoController.getSummaryLimit(info)).isEqualTo(info.limitLevel);
-    }
-
-    @Test
-    public void testLowUsageEqualWarning_LimitUsed() {
-        info.warningLevel = POSITIVE_LARGE;
-        info.limitLevel = POSITIVE_LARGE;
-        info.usageLevel = POSITIVE_SMALL;
-        assertThat(mInfoController.getSummaryLimit(info)).isEqualTo(info.limitLevel);
-    }
-
-    @Test
-    public void testNoLimitNoUsage_WarningUsed() {
-        info.warningLevel = POSITIVE_LARGE;
-        info.limitLevel = ZERO;
-        info.usageLevel = ZERO;
-        assertThat(mInfoController.getSummaryLimit(info)).isEqualTo(info.warningLevel);
-    }
-
-    @Test
-    public void testNoLimitLowUsage_WarningUsed() {
-        info.warningLevel = POSITIVE_LARGE;
-        info.limitLevel = ZERO;
-        info.usageLevel = POSITIVE_SMALL;
-        assertThat(mInfoController.getSummaryLimit(info)).isEqualTo(info.warningLevel);
-    }
-
-    @Test
-    public void testLowWarningNoLimit_UsageUsed() {
-        info.warningLevel = POSITIVE_SMALL;
-        info.limitLevel = ZERO;
-        info.usageLevel = POSITIVE_LARGE;
-        assertThat(mInfoController.getSummaryLimit(info)).isEqualTo(info.usageLevel);
-    }
-
-    @Test
-    public void testLowWarningLowLimit_UsageUsed() {
-        info.warningLevel = POSITIVE_SMALL;
-        info.limitLevel = POSITIVE_SMALL;
-        info.usageLevel = POSITIVE_LARGE;
-        assertThat(mInfoController.getSummaryLimit(info)).isEqualTo(info.usageLevel);
-    }
-
-    private NetworkPolicy getDefaultNetworkPolicy() {
-        NetworkTemplate template =
-            new NetworkTemplate(NetworkTemplate.MATCH_WIFI_WILDCARD, null, null);
-        int cycleDay  = -1;
-        String cycleTimezone = "UTC";
-        long warningBytes = -1;
-        long limitBytes = -1;
-        return new NetworkPolicy(template, cycleDay, cycleTimezone, warningBytes, limitBytes, true);
-    }
-
-    @Test
-    public void testNullArguments_NoError() {
-        mInfoController.updateDataLimit(null, null);
-        mInfoController.updateDataLimit(info, null);
-        mInfoController.updateDataLimit(null, getDefaultNetworkPolicy());
-    }
-
-    @Test
-    public void testNegativeWarning_UpdatedToZero() {
-        NetworkPolicy policy = getDefaultNetworkPolicy();
-        policy.warningBytes = NEGATIVE;
-        mInfoController.updateDataLimit(info, policy);
-        assertThat(info.warningLevel).isEqualTo(ZERO);
-    }
-
-    @Test
-    public void testWarningZero_UpdatedToZero() {
-        NetworkPolicy policy = getDefaultNetworkPolicy();
-        policy.warningBytes = ZERO;
-        mInfoController.updateDataLimit(info, policy);
-        assertThat(info.warningLevel).isEqualTo(ZERO);
-    }
-
-    @Test
-    public void testWarningPositive_UpdatedToWarning() {
-        NetworkPolicy policy = getDefaultNetworkPolicy();
-        policy.warningBytes = POSITIVE_SMALL;
-        mInfoController.updateDataLimit(info, policy);
-        assertThat(info.warningLevel).isEqualTo(policy.warningBytes);
-    }
-
-    @Test
-    public void testLimitNegative_UpdatedToZero() {
-        NetworkPolicy policy = getDefaultNetworkPolicy();
-        policy.limitBytes = NEGATIVE;
-        mInfoController.updateDataLimit(info, policy);
-        assertThat(info.limitLevel).isEqualTo(ZERO);
-    }
-
-    @Test
-    public void testLimitZero_UpdatedToZero() {
-        NetworkPolicy policy = getDefaultNetworkPolicy();
-        policy.limitBytes = ZERO;
-        mInfoController.updateDataLimit(info, policy);
-        assertThat(info.limitLevel).isEqualTo(ZERO);
-    }
-
-    @Test
-    public void testLimitPositive_UpdatedToLimit() {
-        NetworkPolicy policy = getDefaultNetworkPolicy();
-        policy.limitBytes = POSITIVE_SMALL;
-        mInfoController.updateDataLimit(info, policy);
-        assertThat(info.limitLevel).isEqualTo(policy.limitBytes);
-    }
-}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceTest.java b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceTest.java
deleted file mode 100644
index 5f40925..0000000
--- a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceTest.java
+++ /dev/null
@@ -1,562 +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.settings.datausage;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.when;
-
-import android.app.Activity;
-import android.content.ComponentName;
-import android.content.Intent;
-import android.graphics.Typeface;
-import android.net.ConnectivityManager;
-import android.net.NetworkTemplate;
-import android.os.Bundle;
-import android.telephony.SubscriptionManager;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.Button;
-import android.widget.LinearLayout;
-import android.widget.ProgressBar;
-import android.widget.TextView;
-
-import androidx.fragment.app.FragmentActivity;
-import androidx.preference.PreferenceViewHolder;
-
-import com.android.settings.R;
-import com.android.settings.SettingsActivity;
-import com.android.settings.SubSettings;
-import com.android.settingslib.Utils;
-
-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.Shadows;
-import org.robolectric.shadows.ShadowActivity;
-
-import java.util.concurrent.TimeUnit;
-
-@RunWith(RobolectricTestRunner.class)
-public class DataUsageSummaryPreferenceTest {
-
-    private static final long CYCLE_DURATION_MILLIS = 1000000000L;
-    private static final long UPDATE_LAG_MILLIS = 10000000L;
-    private static final String FAKE_CARRIER = "z-mobile";
-
-    private Activity mActivity;
-    private PreferenceViewHolder mHolder;
-    private DataUsageSummaryPreference mSummaryPreference;
-    private TextView mUsageTitle;
-    private TextView mCycleTime;
-    private TextView mCarrierInfo;
-    private TextView mDataLimits;
-    private TextView mDataUsed;
-    private TextView mDataRemaining;
-    private Button mLaunchButton;
-    private LinearLayout mLabelBar;
-    private TextView mLabel1;
-    private TextView mLabel2;
-    private ProgressBar mProgressBar;
-
-    private long mCycleEnd;
-    private long mUpdateTime;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mActivity = spy(Robolectric.setupActivity(Activity.class));
-        mSummaryPreference = new DataUsageSummaryPreference(mActivity, null /* attrs */);
-        LayoutInflater inflater = LayoutInflater.from(mActivity);
-        View view = inflater.inflate(mSummaryPreference.getLayoutResource(), null /* root */,
-                false /* attachToRoot */);
-
-        mHolder = spy(PreferenceViewHolder.createInstanceForTests(view));
-
-        final long now = System.currentTimeMillis();
-        mCycleEnd = now + CYCLE_DURATION_MILLIS;
-        mUpdateTime = now - UPDATE_LAG_MILLIS;
-    }
-
-    @Test
-    public void testSetUsageInfo_withLaunchIntent_launchButtonShown() {
-        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
-                new Intent());
-
-        bindViewHolder();
-        assertThat(mLaunchButton.getVisibility()).isEqualTo(View.VISIBLE);
-    }
-
-    @Test
-    public void testSetUsageInfo_withoutLaunchIntent_launchButtonNotShown() {
-        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
-                null /* launchIntent */);
-
-        bindViewHolder();
-        assertThat(mLaunchButton.getVisibility()).isEqualTo(View.GONE);
-    }
-
-    @Test
-    public void testSetUsageInfo_withDataPlans_carrierInfoShown() {
-        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 1 /* numPlans */,
-                new Intent());
-
-        bindViewHolder();
-        assertThat(mCarrierInfo.getVisibility()).isEqualTo(View.VISIBLE);
-    }
-
-    @Test
-    public void testSetUsageInfo_withNoDataPlans_carrierInfoNotShown() {
-        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
-                new Intent());
-
-        bindViewHolder();
-        assertThat(mCarrierInfo.getVisibility()).isEqualTo(View.GONE);
-    }
-
-    @Test
-    public void testCarrierUpdateTime_shouldFormatDaysCorrectly() {
-        int baseUnit = 2;
-        int smudge = 6;
-        final long updateTime = System.currentTimeMillis()
-                - TimeUnit.DAYS.toMillis(baseUnit) - TimeUnit.HOURS.toMillis(smudge);
-        mCarrierInfo = (TextView) mHolder.findViewById(R.id.carrier_and_update);
-        mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */,
-                new Intent());
-
-        bindViewHolder();
-        assertThat(mCarrierInfo.getText().toString())
-                .isEqualTo("Updated by " + FAKE_CARRIER + " " + baseUnit + " days ago");
-    }
-
-    @Test
-    public void testCarrierUpdateTime_shouldFormatHoursCorrectly() {
-        int baseUnit = 2;
-        int smudge = 6;
-        final long updateTime = System.currentTimeMillis()
-                - TimeUnit.HOURS.toMillis(baseUnit) - TimeUnit.MINUTES.toMillis(smudge);
-        mCarrierInfo = (TextView) mHolder.findViewById(R.id.carrier_and_update);
-        mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */,
-                new Intent());
-
-        bindViewHolder();
-        assertThat(mCarrierInfo.getText().toString())
-                .isEqualTo("Updated by " + FAKE_CARRIER + " " + baseUnit + " hr ago");
-    }
-
-    @Test
-    public void testCarrierUpdateTime_shouldFormatMinutesCorrectly() {
-        int baseUnit = 2;
-        int smudge = 6;
-        final long updateTime = System.currentTimeMillis()
-                - TimeUnit.MINUTES.toMillis(baseUnit) - TimeUnit.SECONDS.toMillis(smudge);
-        mCarrierInfo = (TextView) mHolder.findViewById(R.id.carrier_and_update);
-        mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */,
-                new Intent());
-
-        bindViewHolder();
-        assertThat(mCarrierInfo.getText().toString())
-                .isEqualTo("Updated by " + FAKE_CARRIER + " " + baseUnit + " min ago");
-    }
-
-    @Test
-    public void testCarrierUpdateTime_shouldFormatLessThanMinuteCorrectly() {
-        final long updateTime = System.currentTimeMillis() - TimeUnit.SECONDS.toMillis(45);
-        mCarrierInfo = (TextView) mHolder.findViewById(R.id.carrier_and_update);
-        mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */,
-                new Intent());
-
-        bindViewHolder();
-        assertThat(mCarrierInfo.getText().toString())
-                .isEqualTo("Updated by " + FAKE_CARRIER + " just now");
-    }
-
-    @Test
-    public void testCarrierUpdateTimeWithNoCarrier_shouldSayJustNow() {
-        final long updateTime = System.currentTimeMillis() - TimeUnit.SECONDS.toMillis(45);
-        mCarrierInfo = (TextView) mHolder.findViewById(R.id.carrier_and_update);
-        mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, null /* carrier */,
-                1 /* numPlans */, new Intent());
-
-        bindViewHolder();
-        assertThat(mCarrierInfo.getText().toString())
-                .isEqualTo("Updated just now");
-    }
-
-    @Test
-    public void testCarrierUpdateTimeWithNoCarrier_shouldFormatTime() {
-        final long updateTime = System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(2);
-        mCarrierInfo = (TextView) mHolder.findViewById(R.id.carrier_and_update);
-        mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, null /* carrier */,
-                1 /* numPlans */, new Intent());
-
-        bindViewHolder();
-        assertThat(mCarrierInfo.getText().toString())
-                .isEqualTo("Updated 2 min ago");
-    }
-
-    @Test
-    public void setUsageInfo_withRecentCarrierUpdate_doesNotSetCarrierInfoWarningColorAndFont() {
-        final long updateTime = System.currentTimeMillis() - TimeUnit.HOURS.toMillis(1);
-        mCarrierInfo = (TextView) mHolder.findViewById(R.id.carrier_and_update);
-        mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */,
-                new Intent());
-
-        bindViewHolder();
-        assertThat(mCarrierInfo.getVisibility()).isEqualTo(View.VISIBLE);
-        assertThat(mCarrierInfo.getCurrentTextColor()).isEqualTo(
-                Utils.getColorAttrDefaultColor(mActivity, android.R.attr.textColorSecondary));
-        assertThat(mCarrierInfo.getTypeface()).isEqualTo(Typeface.SANS_SERIF);
-    }
-
-    @Test
-    public void testSetUsageInfo_withStaleCarrierUpdate_setsCarrierInfoWarningColorAndFont() {
-        final long updateTime = System.currentTimeMillis() - TimeUnit.HOURS.toMillis(7);
-        mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */,
-                new Intent());
-
-        bindViewHolder();
-        assertThat(mCarrierInfo.getVisibility()).isEqualTo(View.VISIBLE);
-        assertThat(mCarrierInfo.getCurrentTextColor()).isEqualTo(
-                Utils.getColorAttrDefaultColor(mActivity, android.R.attr.colorError));
-        assertThat(mCarrierInfo.getTypeface()).isEqualTo(
-                DataUsageSummaryPreference.SANS_SERIF_MEDIUM);
-    }
-
-    @Test
-    public void testSetUsageInfo_withNoDataPlans_usageTitleNotShown() {
-        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
-                new Intent());
-
-        bindViewHolder();
-        assertThat(mUsageTitle.getVisibility()).isEqualTo(View.GONE);
-    }
-
-    @Test
-    public void testSetUsageInfo_withMultipleDataPlans_usageTitleShown() {
-        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 2 /* numPlans */,
-                new Intent());
-
-        bindViewHolder();
-        assertThat(mUsageTitle.getVisibility()).isEqualTo(View.VISIBLE);
-    }
-
-    @Test
-    public void testSetUsageInfo_cycleRemainingTimeIsLessOneDay() {
-        // just under one day
-        final long cycleEnd = System.currentTimeMillis() + TimeUnit.HOURS.toMillis(23);
-        mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
-                new Intent());
-
-        bindViewHolder();
-        assertThat(mCycleTime.getVisibility()).isEqualTo(View.VISIBLE);
-        assertThat(mCycleTime.getText()).isEqualTo(
-                mActivity.getString(R.string.billing_cycle_less_than_one_day_left));
-    }
-
-    @Test
-    public void testSetUsageInfo_cycleRemainingTimeNegativeDaysLeft_shouldDisplayNoneLeft() {
-        final long cycleEnd = System.currentTimeMillis() - 1L;
-        mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
-                new Intent());
-
-        bindViewHolder();
-        assertThat(mCycleTime.getVisibility()).isEqualTo(View.VISIBLE);
-        assertThat(mCycleTime.getText()).isEqualTo(
-                mActivity.getString(R.string.billing_cycle_none_left));
-    }
-
-    @Test
-    public void testSetUsageInfo_cycleRemainingTimeDaysLeft_shouldUsePlurals() {
-        final int daysLeft = 3;
-        final long cycleEnd = System.currentTimeMillis() + TimeUnit.DAYS.toMillis(daysLeft)
-                + TimeUnit.HOURS.toMillis(1);
-        mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
-                new Intent());
-
-        bindViewHolder();
-        assertThat(mCycleTime.getVisibility()).isEqualTo(View.VISIBLE);
-        assertThat(mCycleTime.getText()).isEqualTo(daysLeft + " days left");
-    }
-
-    @Test
-    public void testSetLimitInfo_withLimitInfo_dataLimitsShown() {
-        final String limitText = "test limit text";
-        mSummaryPreference.setLimitInfo(limitText);
-
-        bindViewHolder();
-        assertThat(mDataLimits.getVisibility()).isEqualTo(View.VISIBLE);
-        assertThat(mDataLimits.getText()).isEqualTo(limitText);
-    }
-
-    @Test
-    public void testSetLimitInfo_withNullLimitInfo_dataLimitsNotShown() {
-        mSummaryPreference.setLimitInfo(null);
-
-        bindViewHolder();
-        assertThat(mDataLimits.getVisibility()).isEqualTo(View.GONE);
-    }
-
-    @Test
-    public void testSetLimitInfo_withEmptyLimitInfo_dataLimitsNotShown() {
-        final String emptyLimitText = "";
-        mSummaryPreference.setLimitInfo(emptyLimitText);
-
-        bindViewHolder();
-        assertThat(mDataLimits.getVisibility()).isEqualTo(View.GONE);
-    }
-
-    @Test
-    public void testSetChartEnabledFalse_hidesLabelBar() {
-        setValidLabels();
-        mSummaryPreference.setChartEnabled(false);
-
-        bindViewHolder();
-        assertThat(mLabelBar.getVisibility()).isEqualTo(View.GONE);
-        assertThat(mProgressBar.getVisibility()).isEqualTo(View.GONE);
-    }
-
-    @Test
-    public void testSetEmptyLabels_hidesLabelBar() {
-        mSummaryPreference.setLabels("", "");
-
-        bindViewHolder();
-        assertThat(mLabelBar.getVisibility()).isEqualTo(View.GONE);
-        assertThat(mProgressBar.getVisibility()).isEqualTo(View.GONE);
-    }
-
-    @Test
-    public void testLabelBar_isVisible_whenLabelsSet() {
-        setValidLabels();
-        //mChartEnabled defaults to true
-
-        bindViewHolder();
-        assertThat(mLabelBar.getVisibility()).isEqualTo(View.VISIBLE);
-        assertThat(mProgressBar.getVisibility()).isEqualTo(View.VISIBLE);
-    }
-
-    @Test
-    public void testSetProgress_updatesProgressBar() {
-        setValidLabels();
-        mSummaryPreference.setProgress(.5f);
-
-        bindViewHolder();
-        assertThat(mProgressBar.getProgress()).isEqualTo(50);
-    }
-
-    private void setValidLabels() {
-        mSummaryPreference.setLabels("0.0 GB", "5.0 GB");
-    }
-
-    @Test
-    public void testSetUsageAndRemainingInfo_withUsageInfo_dataUsageAndRemainingShown() {
-        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 1 /* numPlans */,
-                new Intent());
-        mSummaryPreference.setUsageNumbers(
-                BillingCycleSettings.MIB_IN_BYTES,
-                10 * BillingCycleSettings.MIB_IN_BYTES,
-                true /* hasMobileData */);
-
-        bindViewHolder();
-        assertThat(mDataUsed.getText().toString()).isEqualTo("1.00 MB used");
-        assertThat(mDataRemaining.getText().toString()).isEqualTo("9.00 MB left");
-        assertThat(mDataRemaining.getVisibility()).isEqualTo(View.VISIBLE);
-        final int colorId = Utils.getColorAttrDefaultColor(mActivity, android.R.attr.colorAccent);
-        assertThat(mDataRemaining.getCurrentTextColor()).isEqualTo(colorId);
-    }
-
-    @Test
-    public void testSetUsageInfo_withDataOverusage() {
-        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 1 /* numPlans */,
-                new Intent());
-        mSummaryPreference.setUsageNumbers(
-                11 * BillingCycleSettings.MIB_IN_BYTES,
-                10 * BillingCycleSettings.MIB_IN_BYTES,
-                true /* hasMobileData */);
-
-        bindViewHolder();
-        assertThat(mDataUsed.getText().toString()).isEqualTo("11.00 MB used");
-        assertThat(mDataRemaining.getText().toString()).isEqualTo("1.00 MB over");
-        final int colorId = Utils.getColorAttrDefaultColor(mActivity, android.R.attr.colorError);
-        assertThat(mDataRemaining.getCurrentTextColor()).isEqualTo(colorId);
-    }
-
-    @Test
-    public void testSetUsageInfo_withUsageInfo_dataUsageShown() {
-        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
-                new Intent());
-        mSummaryPreference.setUsageNumbers(
-                BillingCycleSettings.MIB_IN_BYTES, -1L, true /* hasMobileData */);
-
-        bindViewHolder();
-        assertThat(mDataUsed.getText().toString()).isEqualTo("1.00 MB used");
-        assertThat(mDataRemaining.getText()).isEqualTo("");
-    }
-
-    @Test
-    public void testSetAppIntent_toMdpApp_intentCorrect() {
-        final FragmentActivity activity = Robolectric.setupActivity(FragmentActivity.class);
-        final Intent intent = new Intent(SubscriptionManager.ACTION_MANAGE_SUBSCRIPTION_PLANS);
-        intent.setPackage("test-owner.example.com");
-        intent.putExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, 42);
-
-        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
-                intent);
-
-        bindViewHolder();
-        assertThat(mLaunchButton.getVisibility()).isEqualTo(View.VISIBLE);
-        assertThat(mLaunchButton.getText())
-                .isEqualTo(mActivity.getString(R.string.launch_mdp_app_text));
-
-        mLaunchButton.callOnClick();
-        ShadowActivity shadowActivity = Shadows.shadowOf(activity);
-        Intent startedIntent = shadowActivity.getNextStartedActivity();
-        assertThat(startedIntent.getAction())
-                .isEqualTo(SubscriptionManager.ACTION_MANAGE_SUBSCRIPTION_PLANS);
-        assertThat(startedIntent.getPackage()).isEqualTo("test-owner.example.com");
-        assertThat(startedIntent.getIntExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, -1))
-                .isEqualTo(42);
-    }
-
-    @Test
-    public void testSetUsageInfo_withOverflowStrings_dataRemainingNotShown() {
-        LayoutInflater inflater = LayoutInflater.from(mActivity);
-        View view = inflater.inflate(mSummaryPreference.getLayoutResource(), null /* root */,
-                false /* attachToRoot */);
-
-        TextView dataUsed = spy(new TextView(mActivity));
-        TextView dataRemaining = spy(new TextView(mActivity));
-        doReturn(dataUsed).when(mHolder).findViewById(R.id.data_usage_view);
-        doReturn(dataRemaining).when(mHolder).findViewById(R.id.data_remaining_view);
-
-        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 1 /* numPlans */,
-                new Intent());
-        mSummaryPreference.setUsageNumbers(
-                BillingCycleSettings.MIB_IN_BYTES,
-                10 * BillingCycleSettings.MIB_IN_BYTES,
-                true /* hasMobileData */);
-
-        when(mActivity.getResources()).thenCallRealMethod();
-        when(mActivity.getText(R.string.data_used_formatted))
-                .thenReturn("^1 ^2 used with long trailing text");
-        when(mActivity.getText(R.string.data_remaining)).thenReturn("^1 left");
-
-        bindViewHolder();
-
-        doReturn(500).when(dataUsed).getMeasuredWidth();
-        doReturn(500).when(dataRemaining).getMeasuredWidth();
-
-        assertThat(dataRemaining.getVisibility()).isEqualTo(View.VISIBLE);
-
-        MeasurableLinearLayout layout =
-                (MeasurableLinearLayout) mHolder.findViewById(R.id.usage_layout);
-        layout.measure(
-                View.MeasureSpec.makeMeasureSpec(800, View.MeasureSpec.EXACTLY),
-                View.MeasureSpec.makeMeasureSpec(1000, View.MeasureSpec.EXACTLY));
-
-        assertThat(dataUsed.getText().toString()).isEqualTo("1.00 MB used with long trailing text");
-        assertThat(dataRemaining.getVisibility()).isEqualTo(View.GONE);
-    }
-
-    @Test
-    public void testSetWifiMode_withUsageInfo_dataUsageShown() {
-        final int daysLeft = 3;
-        final long cycleEnd = System.currentTimeMillis() + TimeUnit.DAYS.toMillis(daysLeft)
-                + TimeUnit.HOURS.toMillis(1);
-        final FragmentActivity activity = Robolectric.setupActivity(FragmentActivity.class);
-        mSummaryPreference = spy(mSummaryPreference);
-        mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
-                new Intent());
-        mSummaryPreference.setUsageNumbers(1000000L, -1L, true);
-        final String cycleText = "The quick fox";
-        mSummaryPreference.setWifiMode(true /* isWifiMode */, cycleText, false /* isSingleWifi */);
-        doReturn(200L).when(mSummaryPreference).getHistoricalUsageLevel();
-
-        bindViewHolder();
-        assertThat(mUsageTitle.getText().toString())
-                .isEqualTo(mActivity.getString(R.string.data_usage_wifi_title));
-        assertThat(mUsageTitle.getVisibility()).isEqualTo(View.VISIBLE);
-        assertThat(mCycleTime.getVisibility()).isEqualTo(View.VISIBLE);
-        assertThat(mCycleTime.getText()).isEqualTo(cycleText);
-        assertThat(mCarrierInfo.getVisibility()).isEqualTo(View.GONE);
-        assertThat(mDataLimits.getVisibility()).isEqualTo(View.GONE);
-        assertThat(mLaunchButton.getVisibility()).isEqualTo(View.VISIBLE);
-        assertThat(mLaunchButton.getText())
-                .isEqualTo(mActivity.getString(R.string.launch_wifi_text));
-
-        mLaunchButton.callOnClick();
-        ShadowActivity shadowActivity = Shadows.shadowOf(activity);
-        Intent startedIntent = shadowActivity.getNextStartedActivity();
-        assertThat(startedIntent.getComponent()).isEqualTo(new ComponentName("com.android.settings",
-                SubSettings.class.getName()));
-
-        final Bundle expect = new Bundle(1);
-        expect.putParcelable(DataUsageList.EXTRA_NETWORK_TEMPLATE,
-                NetworkTemplate.buildTemplateWifiWildcard());
-        final Bundle actual = startedIntent
-                .getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS);
-        assertThat((NetworkTemplate) actual.getParcelable(DataUsageList.EXTRA_NETWORK_TEMPLATE))
-                .isEqualTo(NetworkTemplate.buildTemplateWifiWildcard());
-
-        assertThat(startedIntent.getIntExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID, 0))
-                .isEqualTo(R.string.wifi_data_usage);
-    }
-
-    @Test
-    public void testSetWifiMode_noUsageInfo_shouldDisableLaunchButton() {
-        mSummaryPreference = spy(mSummaryPreference);
-        mSummaryPreference.setWifiMode(true /* isWifiMode */, "Test cycle text",
-                false /* isSingleWifi */);
-        doReturn(0L).when(mSummaryPreference).getHistoricalUsageLevel();
-
-        bindViewHolder();
-
-        assertThat(mLaunchButton.isEnabled()).isFalse();
-    }
-
-    @Test
-    public void launchWifiDataUsage_shouldSetWifiNetworkTypeInIntentExtra() {
-        mSummaryPreference.launchWifiDataUsage(mActivity);
-
-        final Intent launchIntent = Shadows.shadowOf(mActivity).getNextStartedActivity();
-        final Bundle args =
-            launchIntent.getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS);
-
-        assertThat(args.getInt(DataUsageList.EXTRA_NETWORK_TYPE))
-            .isEqualTo(ConnectivityManager.TYPE_WIFI);
-    }
-
-    private void bindViewHolder() {
-        mSummaryPreference.onBindViewHolder(mHolder);
-        mUsageTitle = (TextView) mHolder.findViewById(R.id.usage_title);
-        mCycleTime = (TextView) mHolder.findViewById(R.id.cycle_left_time);
-        mCarrierInfo = (TextView) mHolder.findViewById(R.id.carrier_and_update);
-        mDataLimits = (TextView) mHolder.findViewById(R.id.data_limits);
-        mDataUsed = spy((TextView) mHolder.findViewById(R.id.data_usage_view));
-        mDataRemaining = spy((TextView) mHolder.findViewById(R.id.data_remaining_view));
-        mLaunchButton = (Button) mHolder.findViewById(R.id.launch_mdp_app_button);
-        mLabelBar = (LinearLayout) mHolder.findViewById(R.id.label_bar);
-        mLabel1 = (TextView) mHolder.findViewById(R.id.text1);
-        mLabel2 = (TextView) mHolder.findViewById(R.id.text2);
-        mProgressBar = (ProgressBar) mHolder.findViewById(R.id.determinateBar);
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/development/qstile/WinscopeTraceTest.java b/tests/robotests/src/com/android/settings/development/qstile/WinscopeTraceTest.java
index b4dab0d..88e2886 100644
--- a/tests/robotests/src/com/android/settings/development/qstile/WinscopeTraceTest.java
+++ b/tests/robotests/src/com/android/settings/development/qstile/WinscopeTraceTest.java
@@ -37,6 +37,7 @@
 import android.view.IWindowManager;
 import android.widget.Toast;
 
+import com.android.internal.inputmethod.IBooleanResultCallback;
 import com.android.internal.view.IInputMethodManager;
 import com.android.settings.testutils.shadow.ShadowParcel;
 
@@ -68,6 +69,9 @@
     public void setUp() {
         MockitoAnnotations.initMocks(this);
         mWinscopeTrace = spy(new DevelopmentTiles.WinscopeTrace());
+        // default ImeTraceEnabled value, prevent tests from actually calling into IMM and
+        // await the result forever.
+        doReturn(false).when(mWinscopeTrace).isImeTraceEnabled();
         ReflectionHelpers.setField(mWinscopeTrace, "mWindowManager", mWindowManager);
         ReflectionHelpers.setField(mWinscopeTrace, "mInputMethodManager", mInputMethodManager);
         ReflectionHelpers.setField(mWinscopeTrace, "mSurfaceFlinger", mSurfaceFlinger);
@@ -93,7 +97,6 @@
     public void sfReturnsTraceEnabled_shouldReturnEnabled() throws RemoteException {
         // Assume Window Trace and Input Method Manager are disabled.
         doReturn(false).when(mWindowManager).isWindowTraceEnabled();
-        doReturn(false).when(mInputMethodManager).isImeTraceEnabled();
         ShadowParcel.sReadBoolResult = true;
         assertThat(mWinscopeTrace.isEnabled()).isTrue();
         verify(mSurfaceFlinger)
@@ -114,7 +117,6 @@
     public void wmAndSfAndImmReturnTraceDisabled_shouldReturnDisabled() throws RemoteException {
         ShadowParcel.sReadBoolResult = false;
         doReturn(false).when(mWindowManager).isWindowTraceEnabled();
-        doReturn(false).when(mInputMethodManager).isImeTraceEnabled();
         assertThat(mWinscopeTrace.isEnabled()).isFalse();
         verify(mSurfaceFlinger)
                 .transact(eq(SURFACE_FLINGER_LAYER_TRACE_STATUS_CODE), any(), any(),
@@ -127,7 +129,7 @@
             throws RemoteException {
         ShadowParcel.sReadBoolResult = false;
         doReturn(false).when(mWindowManager).isWindowTraceEnabled();
-        doReturn(true).when(mInputMethodManager).isImeTraceEnabled();
+        doReturn(true).when(mWinscopeTrace).isImeTraceEnabled();
         assertThat(mWinscopeTrace.isEnabled()).isTrue();
         verify(mSurfaceFlinger)
                 .transact(eq(SURFACE_FLINGER_LAYER_TRACE_STATUS_CODE), any(), any(),
@@ -140,7 +142,7 @@
     public void immReturnsTraceEnabled_shouldReturnEnabled() throws RemoteException {
         // Assume Window Manager and Surface Trace are disabled.
         ShadowParcel.sReadBoolResult = false;
-        doReturn(true).when(mInputMethodManager).isImeTraceEnabled();
+        doReturn(true).when(mWinscopeTrace).isImeTraceEnabled();
         assertThat(mWinscopeTrace.isEnabled()).isTrue();
     }
 
@@ -149,7 +151,6 @@
     public void immReturnsTraceDisabled_shouldReturnDisabled() throws RemoteException {
         // Assume Window Manager and Surface Trace are disabled.
         ShadowParcel.sReadBoolResult = false;
-        doReturn(false).when(mInputMethodManager).isImeTraceEnabled();
         assertThat(mWinscopeTrace.isEnabled()).isFalse();
     }
 
@@ -167,7 +168,6 @@
     public void sfUnavailableAndWmAndImmReturnTraceDisabled_shouldReturnDisabled()
             throws RemoteException {
         doReturn(false).when(mWindowManager).isWindowTraceEnabled();
-        doReturn(false).when(mInputMethodManager).isImeTraceEnabled();
         ReflectionHelpers.setField(mWinscopeTrace, "mSurfaceFlinger", null);
         assertThat(mWinscopeTrace.isEnabled()).isFalse();
     }
@@ -251,7 +251,8 @@
     @Test
     public void setIsEnableAndImmThrowsRemoteException_shouldFailGracefully()
             throws RemoteException {
-        doThrow(new RemoteException("Unknown")).when(mInputMethodManager).isImeTraceEnabled();
+        doThrow(new RemoteException("Unknown")).when(mInputMethodManager)
+                .isImeTraceEnabled(any(IBooleanResultCallback.Stub.class));
         mWinscopeTrace.setIsEnabled(true);
     }
 
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/PrivateVolumeForgetTest.java b/tests/robotests/src/com/android/settings/deviceinfo/PrivateVolumeForgetTest.java
deleted file mode 100644
index 9434daa..0000000
--- a/tests/robotests/src/com/android/settings/deviceinfo/PrivateVolumeForgetTest.java
+++ /dev/null
@@ -1,86 +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.settings.deviceinfo;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.DialogInterface;
-import android.os.Bundle;
-import android.os.storage.VolumeRecord;
-import android.widget.Button;
-
-import androidx.appcompat.app.AlertDialog;
-import androidx.fragment.app.FragmentActivity;
-
-import com.android.settings.R;
-import com.android.settings.deviceinfo.PrivateVolumeForget.ForgetConfirmFragment;
-import com.android.settings.testutils.shadow.ShadowStorageManager;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadows.androidx.fragment.FragmentController;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = ShadowStorageManager.class)
-public class PrivateVolumeForgetTest {
-
-    private PrivateVolumeForget mFragment;
-    private FragmentActivity mActivity;
-
-    @Before
-    public void setUp() {
-        final Bundle bundle = new Bundle();
-        bundle.putString(VolumeRecord.EXTRA_FS_UUID, "id");
-        mFragment = FragmentController.of(new PrivateVolumeForget(), bundle)
-                .create()
-                .start()
-                .resume()
-                .visible()
-                .get();
-        mActivity = mFragment.getActivity();
-    }
-
-    @After
-    public void tearDown() {
-        ShadowStorageManager.reset();
-    }
-
-    @Test
-    public void OnClickListener_shouldCallForget() {
-        assertThat(ShadowStorageManager.isForgetCalled()).isFalse();
-
-        final Button confirm = mFragment.getView().findViewById(R.id.confirm);
-
-        confirm.performClick();
-        final ForgetConfirmFragment confirmFragment =
-                (ForgetConfirmFragment) mActivity.getSupportFragmentManager().findFragmentByTag(
-                        PrivateVolumeForget.TAG_FORGET_CONFIRM);
-
-        assertThat(confirmFragment).isNotNull();
-
-        final AlertDialog dialog = (AlertDialog) confirmFragment.getDialog();
-        final Button forget = dialog.getButton(DialogInterface.BUTTON_POSITIVE);
-
-        forget.performClick();
-
-        assertThat(ShadowStorageManager.isForgetCalled()).isTrue();
-    }
-}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/display/NightDisplayPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/NightDisplayPreferenceControllerTest.java
index eeaae67f..ea1896e 100644
--- a/tests/robotests/src/com/android/settings/display/NightDisplayPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/NightDisplayPreferenceControllerTest.java
@@ -2,11 +2,15 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import android.app.Application;
+import android.content.Context;
 import android.hardware.display.ColorDisplayManager;
+
 import com.android.settings.R;
+import com.android.settings.core.BasePreferenceController;
 import com.android.settings.testutils.shadow.SettingsShadowResources;
+
 import org.junit.After;
+import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.RobolectricTestRunner;
@@ -17,41 +21,81 @@
 @Config(shadows = {SettingsShadowResources.class})
 public class NightDisplayPreferenceControllerTest {
 
-  @After
-  public void tearDown() {
-    SettingsShadowResources.reset();
-  }
+    private Context mContext;
+    private ColorDisplayManager mColorDisplayManager;
+    private NightDisplayPreferenceController mPreferenceController;
 
-  @Test
-  public void nightDisplaySuggestion_isNotCompleted_ifAutoModeDisabled() {
-    final Application context = RuntimeEnvironment.application;
-    context.getSystemService(ColorDisplayManager.class)
-        .setNightDisplayAutoMode(ColorDisplayManager.AUTO_MODE_DISABLED);
-    assertThat(NightDisplayPreferenceController.isSuggestionComplete(context)).isFalse();
-  }
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mColorDisplayManager = mContext.getSystemService(ColorDisplayManager.class);
+        mPreferenceController = new NightDisplayPreferenceController(mContext, "test");
+    }
 
-  @Test
-  public void nightDisplaySuggestion_isCompleted_ifAutoModeCustom() {
-    final Application context = RuntimeEnvironment.application;
-    context.getSystemService(ColorDisplayManager.class)
-        .setNightDisplayAutoMode(ColorDisplayManager.AUTO_MODE_CUSTOM_TIME);
-    assertThat(NightDisplayPreferenceController.isSuggestionComplete(context)).isTrue();
-  }
+    @After
+    public void tearDown() {
+        SettingsShadowResources.reset();
+    }
 
-  @Test
-  public void nightDisplaySuggestion_isCompleted_ifAutoModeTwilight() {
-    final Application context = RuntimeEnvironment.application;
-    context.getSystemService(ColorDisplayManager.class)
-        .setNightDisplayAutoMode(ColorDisplayManager.AUTO_MODE_TWILIGHT);
-    assertThat(NightDisplayPreferenceController.isSuggestionComplete(context)).isTrue();
-  }
+    @Test
+    public void nightDisplaySuggestion_isNotCompleted_ifAutoModeDisabled() {
+        mColorDisplayManager.setNightDisplayAutoMode(ColorDisplayManager.AUTO_MODE_DISABLED);
 
-  @Test
-  public void nightDisplaySuggestion_isCompleted_ifSuggestionDisabled() {
-    final Application context = RuntimeEnvironment.application;
-    context.getSystemService(ColorDisplayManager.class)
-        .setNightDisplayAutoMode(ColorDisplayManager.AUTO_MODE_DISABLED);
-    SettingsShadowResources.overrideResource(R.bool.config_night_light_suggestion_enabled, false);
-    assertThat(NightDisplayPreferenceController.isSuggestionComplete(context)).isTrue();
-  }
-}
+        assertThat(NightDisplayPreferenceController.isSuggestionComplete(mContext)).isFalse();
+    }
+
+    @Test
+    public void nightDisplaySuggestion_isCompleted_ifAutoModeCustom() {
+        mColorDisplayManager.setNightDisplayAutoMode(ColorDisplayManager.AUTO_MODE_CUSTOM_TIME);
+
+        assertThat(NightDisplayPreferenceController.isSuggestionComplete(mContext)).isTrue();
+    }
+
+    @Test
+    public void nightDisplaySuggestion_isCompleted_ifAutoModeTwilight() {
+        mColorDisplayManager.setNightDisplayAutoMode(ColorDisplayManager.AUTO_MODE_TWILIGHT);
+
+        assertThat(NightDisplayPreferenceController.isSuggestionComplete(mContext)).isTrue();
+    }
+
+    @Test
+    public void nightDisplaySuggestion_isCompleted_ifSuggestionDisabled() {
+        mColorDisplayManager.setNightDisplayAutoMode(ColorDisplayManager.AUTO_MODE_DISABLED);
+        SettingsShadowResources.overrideResource(R.bool.config_night_light_suggestion_enabled,
+                false);
+
+        assertThat(NightDisplayPreferenceController.isSuggestionComplete(mContext)).isTrue();
+    }
+
+    @Test
+    public void getAvailabilityStatus_nightDisplayIsSupported_returnAvailable() {
+        SettingsShadowResources.overrideResource(
+                com.android.internal.R.bool.config_nightDisplayAvailable, true);
+
+        assertThat(mPreferenceController.getAvailabilityStatus())
+                .isEqualTo(BasePreferenceController.AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_nightDisplayIsNotSupported_returnUnsupportedOnDevice() {
+        SettingsShadowResources.overrideResource(
+                com.android.internal.R.bool.config_nightDisplayAvailable, false);
+
+        assertThat(mPreferenceController.getAvailabilityStatus())
+                .isEqualTo(BasePreferenceController.UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void isChecked_nightDisplayIsActivated_returnTrue() {
+        mColorDisplayManager.setNightDisplayActivated(true);
+
+        assertThat(mPreferenceController.isChecked()).isTrue();
+    }
+
+    @Test
+    public void isChecked_nightDisplayIsNotActivated_returnFalse() {
+        mColorDisplayManager.setNightDisplayActivated(false);
+
+        assertThat(mPreferenceController.isChecked()).isFalse();
+    }
+}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/display/ScreenTimeoutSettingsTest.java b/tests/robotests/src/com/android/settings/display/ScreenTimeoutSettingsTest.java
index 7f59ef3..621ddfa 100644
--- a/tests/robotests/src/com/android/settings/display/ScreenTimeoutSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/display/ScreenTimeoutSettingsTest.java
@@ -22,6 +22,7 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import static org.mockito.Mockito.atLeast;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.spy;
@@ -34,9 +35,11 @@
 import android.provider.SearchIndexableResource;
 import android.provider.Settings;
 
+import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
 
 import com.android.settings.R;
+import com.android.settingslib.RestrictedLockUtils;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -68,6 +71,9 @@
     @Mock
     AdaptiveSleepPreferenceController mAdaptiveSleepPreferenceController;
 
+    @Mock
+    Preference mDisableOptionsPreference;
+
     @Before
     public void setup() {
         MockitoAnnotations.initMocks(this);
@@ -128,6 +134,16 @@
     }
 
     @Test
+    public void updateCandidates_enforcedAdmin_showDisabledByAdminPreference() {
+        mSettings.mAdmin = new RestrictedLockUtils.EnforcedAdmin();
+        mSettings.mDisableOptionsPreference = mDisableOptionsPreference;
+
+        mSettings.updateCandidates();
+
+        verify(mPreferenceScreen, atLeast(1)).addPreference(mDisableOptionsPreference);
+    }
+
+    @Test
     public void setDefaultKey_controlCurrentScreenTimeout() {
         mSettings.setDefaultKey(TIMEOUT_VALUES[0]);
 
diff --git a/tests/robotests/src/com/android/settings/display/TimeoutPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/TimeoutPreferenceControllerTest.java
deleted file mode 100644
index cf0e660..0000000
--- a/tests/robotests/src/com/android/settings/display/TimeoutPreferenceControllerTest.java
+++ /dev/null
@@ -1,161 +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.settings.display;
-
-import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.anyInt;
-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 android.content.Context;
-import android.os.UserHandle;
-import android.os.UserManager;
-import android.provider.Settings;
-
-import com.android.settings.R;
-import com.android.settings.testutils.shadow.ShadowDevicePolicyManager;
-import com.android.settings.testutils.shadow.ShadowRestrictedLockUtilsInternal;
-import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
-
-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 java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = ShadowDevicePolicyManager.class)
-public class TimeoutPreferenceControllerTest {
-
-    private static final int TIMEOUT = 30;
-    private static final String KEY_SCREEN_TIMEOUT = "screen_timeout";
-    private static final String DEFAULT_TIMEOUT = "300000"; // 5 minutes
-
-    private Context mContext;
-    @Mock
-    private TimeoutListPreference mPreference;
-    @Mock
-    private UserManager mUserManager;
-
-    private TimeoutPreferenceController mController;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = spy(RuntimeEnvironment.application);
-        when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
-        when(mPreference.getValue()).thenReturn(DEFAULT_TIMEOUT);
-        mController = new TimeoutPreferenceController(mContext, KEY_SCREEN_TIMEOUT);
-    }
-
-    @After
-    public void tearDown() {
-          ShadowRestrictedLockUtilsInternal.reset();
-    }
-
-    @Test
-    public void testOnPreferenceChange_SetTimeout_ReturnCorrectTimeout() {
-        mController.onPreferenceChange(mPreference, Integer.toString(TIMEOUT));
-
-        final int mode = Settings.System.getInt(mContext.getContentResolver(),
-                SCREEN_OFF_TIMEOUT, 0);
-        assertThat(mode).isEqualTo(TIMEOUT);
-    }
-
-    @Test
-    public void testUpdateStateNoAdminTimeouts() {
-        when(mUserManager.getProfiles(anyInt())).thenReturn(Collections.emptyList());
-        mController.updateState(mPreference);
-        verify(mPreference).removeUnusableTimeouts(0, null);
-    }
-
-    @Test
-    public void testUpdateStateWithAdminTimeouts() {
-        final int profileUserId = UserHandle.myUserId();
-        final long timeout = 10000;
-        when(mUserManager.getProfiles(profileUserId)).thenReturn(Collections.emptyList());
-        ShadowDevicePolicyManager.getShadow().setMaximumTimeToLock(profileUserId, timeout);
-
-        mController.updateState(mPreference);
-        verify(mPreference).removeUnusableTimeouts(timeout, null);
-    }
-
-    @Test
-    public void testUpdateStateWithAdminTimeoutsAndRestriction() {
-        final int profileUserId = UserHandle.myUserId();
-        final long timeout = 100;
-        when(mUserManager.getProfiles(profileUserId)).thenReturn(Collections.emptyList());
-        ShadowDevicePolicyManager.getShadow().setMaximumTimeToLock(profileUserId, timeout);
-
-        int userId = UserHandle.myUserId();
-        List<UserManager.EnforcingUser> enforcingUsers = new ArrayList<>();
-        // Add two enforcing users so that RestrictedLockUtils.checkIfRestrictionEnforced returns
-        // non-null.
-        enforcingUsers.add(new UserManager.EnforcingUser(userId,
-                UserManager.RESTRICTION_SOURCE_DEVICE_OWNER));
-        enforcingUsers.add(new UserManager.EnforcingUser(userId,
-                UserManager.RESTRICTION_SOURCE_PROFILE_OWNER));
-        when(mUserManager.getUserRestrictionSources(
-                UserManager.DISALLOW_CONFIG_SCREEN_TIMEOUT, UserHandle.of(userId)))
-                .thenReturn(enforcingUsers);
-
-        mController.updateState(mPreference);
-
-        ArgumentCaptor<Long> longCaptor = ArgumentCaptor.forClass(Long.class);
-        ArgumentCaptor<EnforcedAdmin> adminCaptor = ArgumentCaptor.forClass(EnforcedAdmin.class);
-
-        verify(mPreference, times(2))
-                .removeUnusableTimeouts(longCaptor.capture(), adminCaptor.capture());
-        assertThat(longCaptor.getValue()).isEqualTo(0);
-        assertThat(adminCaptor.getValue()).isNotNull();
-    }
-
-    @Test
-    @Config(shadows = ShadowRestrictedLockUtilsInternal.class)
-    public void updateState_selectedTimeoutLargerThanAdminMax_shouldSetSummaryToUpdatedPrefValue() {
-        final int profileUserId = UserHandle.myUserId();
-        final long allowedTimeout = 480000L; // 8 minutes
-        when(mUserManager.getProfiles(profileUserId)).thenReturn(Collections.emptyList());
-        ShadowDevicePolicyManager.getShadow().setMaximumTimeToLock(profileUserId, allowedTimeout);
-        ShadowRestrictedLockUtilsInternal.setMaximumTimeToLockIsSet(true);
-        final CharSequence[] timeouts = {"15000", "30000", "60000", "120000", "300000", "600000"};
-        final CharSequence[] summaries = {"15s", "30s", "1m", "2m", "5m", "10m"};
-        // set current timeout to be 10 minutes, which is longer than the allowed 8 minutes
-        Settings.System.putLong(mContext.getContentResolver(), SCREEN_OFF_TIMEOUT, 600000L);
-        when(mPreference.getEntries()).thenReturn(summaries);
-        when(mPreference.getEntryValues()).thenReturn(timeouts);
-        when(mPreference.getValue()).thenReturn("300000");
-
-        mController.updateState(mPreference);
-
-        verify(mPreference).setSummary(mContext.getString(R.string.screen_timeout_summary, "5m"));
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/display/TopLevelWallpaperPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/TopLevelWallpaperPreferenceControllerTest.java
new file mode 100644
index 0000000..7b3ae65
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/display/TopLevelWallpaperPreferenceControllerTest.java
@@ -0,0 +1,205 @@
+/*
+ * 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.settings.display;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+
+import android.content.ComponentName;
+import android.content.Intent;
+import android.content.pm.ResolveInfo;
+
+import androidx.fragment.app.FragmentActivity;
+import androidx.preference.Preference;
+
+import com.android.settings.R;
+import com.android.settings.testutils.shadow.SettingsShadowResources;
+
+import com.google.common.collect.Lists;
+
+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.Shadows;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowPackageManager;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(shadows = {SettingsShadowResources.class})
+public class TopLevelWallpaperPreferenceControllerTest {
+    private static final String TEST_KEY = "test_key";
+
+    private Intent mWallpaperIntent;
+    private Intent mStylesAndWallpaperIntent;
+    private FragmentActivity mContext;
+    private ShadowPackageManager mShadowPackageManager;
+
+    private TopLevelWallpaperPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = Robolectric.buildActivity(FragmentActivity.class).get();
+        SettingsShadowResources.overrideResource(
+                R.string.config_wallpaper_picker_package, "bogus.package.for.testing");
+        SettingsShadowResources.overrideResource(
+                R.string.config_styles_and_wallpaper_picker_class, "bogus.package.class");
+        mWallpaperIntent = new Intent().setComponent(new ComponentName(
+                mContext.getString(R.string.config_wallpaper_picker_package),
+                mContext.getString(R.string.config_wallpaper_picker_class)));
+        mStylesAndWallpaperIntent = new Intent().setComponent(new ComponentName(
+                mContext.getString(R.string.config_wallpaper_picker_package),
+                mContext.getString(R.string.config_styles_and_wallpaper_picker_class)));
+        mShadowPackageManager = Shadows.shadowOf(mContext.getPackageManager());
+        mController = new TopLevelWallpaperPreferenceController(mContext, TEST_KEY);
+    }
+
+    @Test
+    public void isAvailable_wallpaperPickerEnabledAndStylePickerEnabled_returnsTrue() {
+        mShadowPackageManager.setResolveInfosForIntent(
+                mWallpaperIntent, Lists.newArrayList(mock(ResolveInfo.class)));
+        mShadowPackageManager.setResolveInfosForIntent(
+                mStylesAndWallpaperIntent, Lists.newArrayList(mock(ResolveInfo.class)));
+
+        assertThat(mController.isAvailable()).isTrue();
+    }
+
+    @Test
+    public void isAvailable_wallpaperPickerEnabledAndStylePickerDisabled_returnsTrue() {
+        mShadowPackageManager.setResolveInfosForIntent(
+                mWallpaperIntent, Lists.newArrayList(mock(ResolveInfo.class)));
+        mShadowPackageManager.setResolveInfosForIntent(
+                mStylesAndWallpaperIntent, Lists.newArrayList());
+
+        assertThat(mController.isAvailable()).isTrue();
+    }
+
+    @Test
+    public void isAvailable_wallpaperPickerDisabledAndStylePickerEnabled_returnsTrue() {
+        mShadowPackageManager.setResolveInfosForIntent(
+                mWallpaperIntent, Lists.newArrayList());
+        mShadowPackageManager.setResolveInfosForIntent(
+                mStylesAndWallpaperIntent, Lists.newArrayList(mock(ResolveInfo.class)));
+
+        assertThat(mController.isAvailable()).isTrue();
+    }
+
+    @Test
+    public void isAvailable_wallpaperPickerDisabledAndStylePickerDisabled_returnsFalse() {
+        mShadowPackageManager.setResolveInfosForIntent(
+                mWallpaperIntent, Lists.newArrayList());
+        mShadowPackageManager.setResolveInfosForIntent(
+                mStylesAndWallpaperIntent, Lists.newArrayList());
+
+        assertThat(mController.isAvailable()).isFalse();
+    }
+
+    @Test
+    public void getComponentClassString_stylesAvailable_returnsStylePickerClassString() {
+        mShadowPackageManager.setResolveInfosForIntent(
+                mStylesAndWallpaperIntent,
+                Lists.newArrayList(mock(ResolveInfo.class)));
+        assertThat(mController.getComponentClassString())
+                .isEqualTo(mContext.getString(R.string.config_styles_and_wallpaper_picker_class));
+    }
+
+    @Test
+    public void getComponentClassString_stylesUnavailable_returnsWallpaperPickerClassString() {
+        mShadowPackageManager.setResolveInfosForIntent(
+                mStylesAndWallpaperIntent, Lists.newArrayList());
+        assertThat(mController.getComponentClassString())
+                .isEqualTo(mContext.getString(R.string.config_wallpaper_picker_class));
+    }
+
+    @Test
+    public void areStylesAvailable_noComponentSpecified() {
+        SettingsShadowResources.overrideResource(
+                R.string.config_styles_and_wallpaper_picker_class, "");
+        mShadowPackageManager.setResolveInfosForIntent(
+                mStylesAndWallpaperIntent, Lists.newArrayList());
+
+        assertThat(mController.areStylesAvailable()).isFalse();
+    }
+
+    @Test
+    public void areStylesAvailable_componentUnresolveable() {
+        mShadowPackageManager.setResolveInfosForIntent(
+                mStylesAndWallpaperIntent, Lists.newArrayList());
+
+        assertThat(mController.areStylesAvailable()).isFalse();
+    }
+
+    @Test
+    public void areStylesAvailable_componentResolved() {
+        mShadowPackageManager.setResolveInfosForIntent(
+                mStylesAndWallpaperIntent,
+                Lists.newArrayList(mock(ResolveInfo.class)));
+
+        assertThat(mController.areStylesAvailable()).isTrue();
+    }
+
+    @Test
+    public void handlePreferenceTreeClick_wallpaperOnly() {
+        mShadowPackageManager.setResolveInfosForIntent(
+                mWallpaperIntent, Lists.newArrayList(mock(ResolveInfo.class)));
+        mShadowPackageManager.setResolveInfosForIntent(
+                mStylesAndWallpaperIntent, Lists.newArrayList());
+        Preference preference = new Preference(mContext);
+        preference.setKey(TEST_KEY);
+
+        mController.handlePreferenceTreeClick(preference);
+
+        assertThat(Shadows.shadowOf(mContext)
+                .getNextStartedActivityForResult().intent.getComponent().getClassName())
+                .isEqualTo(mContext.getString(R.string.config_wallpaper_picker_class));
+    }
+
+    @Test
+    public void handlePreferenceTreeClick_stylesAndWallpaper() {
+        mShadowPackageManager.setResolveInfosForIntent(
+                mWallpaperIntent, Lists.newArrayList());
+        mShadowPackageManager.setResolveInfosForIntent(
+                mStylesAndWallpaperIntent, Lists.newArrayList(mock(ResolveInfo.class)));
+        Preference preference = new Preference(mContext);
+        preference.setKey(TEST_KEY);
+
+        mController.handlePreferenceTreeClick(preference);
+
+        assertThat(Shadows.shadowOf(mContext)
+                .getNextStartedActivityForResult().intent.getComponent().getClassName())
+                .isEqualTo(mContext.getString(R.string.config_styles_and_wallpaper_picker_class));
+    }
+
+    @Test
+    public void handlePreferenceTreeClick_launchSourceExtra() {
+        mShadowPackageManager.setResolveInfosForIntent(
+                mWallpaperIntent, Lists.newArrayList());
+        mShadowPackageManager.setResolveInfosForIntent(
+                mStylesAndWallpaperIntent, Lists.newArrayList());
+        Preference preference = new Preference(mContext);
+        preference.setKey(TEST_KEY);
+
+        mController.handlePreferenceTreeClick(preference);
+
+        assertThat(Shadows.shadowOf(mContext).getNextStartedActivityForResult()
+                .intent.hasExtra("com.android.wallpaper.LAUNCH_SOURCE")).isTrue();
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java
index 18155d8..6d2298b 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java
@@ -18,7 +18,6 @@
 
 import static com.android.settings.core.BasePreferenceController.AVAILABLE;
 import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE;
-import static com.android.settings.fuelgauge.TopLevelBatteryPreferenceController.getDashboardLabel;
 
 import static com.google.common.truth.Truth.assertThat;
 
@@ -69,14 +68,16 @@
     public void getDashboardLabel_returnsCorrectLabel() {
         BatteryInfo info = new BatteryInfo();
         info.batteryPercentString = "3%";
-        assertThat(getDashboardLabel(mContext, info)).isEqualTo(info.batteryPercentString);
+        assertThat(mController.getDashboardLabel(mContext, info, true))
+                .isEqualTo(info.batteryPercentString);
 
         info.remainingLabel = "Phone will shut down soon";
-        assertThat(getDashboardLabel(mContext, info)).isEqualTo("3% - Phone will shut down soon");
+        assertThat(mController.getDashboardLabel(mContext, info, true))
+                .isEqualTo("3% - Phone will shut down soon");
 
         info.discharging = false;
         info.chargeLabel = "5% - charging";
-        assertThat(getDashboardLabel(mContext, info)).isEqualTo("5% - charging");
+        assertThat(mController.getDashboardLabel(mContext, info, true)).isEqualTo("5% - charging");
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/gestures/EmergencyGestureNumberOverridePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/EmergencyGestureNumberOverridePreferenceControllerTest.java
index 498c17b..80c10d0 100644
--- a/tests/robotests/src/com/android/settings/gestures/EmergencyGestureNumberOverridePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/gestures/EmergencyGestureNumberOverridePreferenceControllerTest.java
@@ -90,7 +90,7 @@
 
         mController.updateState(preference);
 
-        assertThat(preference.getSummary()).isEqualTo(
+        assertThat(preference.getSummary().toString()).isEqualTo(
                 mContext.getString(R.string.emergency_gesture_call_for_help_summary, "123"));
     }
 
diff --git a/tests/robotests/src/com/android/settings/gestures/SwipeBottomToNotificationPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/SwipeBottomToNotificationPreferenceControllerTest.java
index db51dff..a1c0c8f 100644
--- a/tests/robotests/src/com/android/settings/gestures/SwipeBottomToNotificationPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/gestures/SwipeBottomToNotificationPreferenceControllerTest.java
@@ -58,7 +58,7 @@
         mController.setChecked(true);
 
         assertThat(Settings.Secure.getInt(mContext.getContentResolver(),
-                SWIPE_BOTTOM_TO_NOTIFICATION_ENABLED, 0)).isEqualTo(1);
+                SWIPE_BOTTOM_TO_NOTIFICATION_ENABLED, 1)).isEqualTo(1);
     }
 
     @Test
@@ -66,7 +66,7 @@
         mController.setChecked(false);
 
         assertThat(Settings.Secure.getInt(mContext.getContentResolver(),
-                SWIPE_BOTTOM_TO_NOTIFICATION_ENABLED, 0)).isEqualTo(0);
+                SWIPE_BOTTOM_TO_NOTIFICATION_ENABLED, 1)).isEqualTo(0);
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/homepage/SettingsHomepageActivityTest.java b/tests/robotests/src/com/android/settings/homepage/SettingsHomepageActivityTest.java
index db12580..4c7b4b5 100644
--- a/tests/robotests/src/com/android/settings/homepage/SettingsHomepageActivityTest.java
+++ b/tests/robotests/src/com/android/settings/homepage/SettingsHomepageActivityTest.java
@@ -48,25 +48,36 @@
 
 @RunWith(RobolectricTestRunner.class)
 public class SettingsHomepageActivityTest {
+
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
     }
 
     @Test
-    public void setHomepageContainerPaddingTop_shouldBeSetPaddingTop() {
+    public void setDefaultHomepageContainerPaddingTop_shouldSetSearchBoxHeight() {
         final SettingsHomepageActivity activity = Robolectric.buildActivity(
                 SettingsHomepageActivity.class).create().get();
-        final int searchBarHeight = activity.getResources().getDimensionPixelSize(
-                R.dimen.search_bar_height);
-        final int searchBarMargin = activity.getResources().getDimensionPixelSize(
-                R.dimen.search_bar_margin);
         final View view = activity.findViewById(R.id.homepage_container);
 
-        activity.setHomepageContainerPaddingTop();
+        activity.setDefaultHomepageContainerPaddingTop();
 
         final int actualPaddingTop = view.getPaddingTop();
-        assertThat(actualPaddingTop).isEqualTo(searchBarHeight + searchBarMargin * 2);
+        assertThat(actualPaddingTop).isEqualTo(activity.getSearchBoxHeight());
+    }
+
+    @Test
+    public void setHomepageContainerTopOffset_shouldBeSetPaddingTop() {
+        final SettingsHomepageActivity activity = Robolectric.buildActivity(
+                SettingsHomepageActivity.class).create().get();
+        final View view = activity.findViewById(R.id.homepage_container);
+        final int offset = activity.getResources().getDimensionPixelSize(
+                R.dimen.suggestion_height);
+
+        activity.setHomepageContainerTopOffset(offset);
+
+        final int actualPaddingTop = view.getPaddingTop();
+        assertThat(actualPaddingTop).isEqualTo(activity.getSearchBoxHeight() + offset);
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionManagerTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionManagerTest.java
index 2157908..06cd726 100644
--- a/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionManagerTest.java
+++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionManagerTest.java
@@ -67,13 +67,6 @@
     }
 
     @Test
-    public void getDisplayableCards_hasDisplayable() {
-        when(mController.isDisplayable()).thenReturn(true);
-
-        assertThat(mManager.getDisplayableCards()).hasSize(1);
-    }
-
-    @Test
     public void onPrimaryClick_shouldRelayToController() {
         mManager.onPrimaryClick(mContext, ID);
 
diff --git a/tests/robotests/src/com/android/settings/location/LocationIndicatorsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/location/LocationIndicatorsPreferenceControllerTest.java
new file mode 100644
index 0000000..e1182fd
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/location/LocationIndicatorsPreferenceControllerTest.java
@@ -0,0 +1,115 @@
+/*
+ * 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.settings.location;
+
+
+import static com.android.settings.core.BasePreferenceController.AVAILABLE;
+import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.provider.DeviceConfig;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.Utils;
+import com.android.settings.testutils.shadow.ShadowDeviceConfig;
+
+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.annotation.Config;
+
+/**
+ * Unit tests for {@link LocationIndicatorsPreferenceController}.
+ */
+@RunWith(RobolectricTestRunner.class)
+@Config(shadows = {ShadowDeviceConfig.class})
+public class LocationIndicatorsPreferenceControllerTest {
+    @Mock
+    PackageManager mPackageManager;
+    private Context mContext;
+    private LocationIndicatorsPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        mController = new LocationIndicatorsPreferenceController(mContext, "key");
+
+        MockitoAnnotations.initMocks(this);
+        when(mContext.getPackageManager()).thenReturn(mPackageManager);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowDeviceConfig.reset();
+    }
+
+    /**
+     * Verify the location indicator settings are visible when location feature is supported
+     * on the device.
+     */
+    @Test
+    public void getAvailabilityStatus_locationSupported_shouldReturnAVAILABLE() {
+        when(mPackageManager.hasSystemFeature(eq(PackageManager.FEATURE_LOCATION))).thenReturn(
+                true);
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    /**
+     * Verify the location indicator settings are not visible when location feature is not supported
+     * on the device.
+     */
+    @Test
+    public void getAvailabilityStatus_locationNotSupported_shouldReturnUNSUPPORTED() {
+        when(mPackageManager.hasSystemFeature(eq(PackageManager.FEATURE_LOCATION))).thenReturn(
+                false);
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+
+    /**
+     * Verify the location indicator preference is checked when the feature is enabled.
+     */
+    @Test
+    public void isChecked_featureEnabled_shouldReturnTrue() {
+        final boolean enabled = true;
+        DeviceConfig.setProperty(DeviceConfig.NAMESPACE_PRIVACY,
+                Utils.PROPERTY_LOCATION_INDICATORS_ENABLED, Boolean.toString(enabled), true);
+        assertThat(mController.isChecked()).isTrue();
+    }
+
+    /**
+     * Verify the location indicator preference is unchecked when the feature is not enabled.
+     */
+    @Test
+    public void isChecked_featureNotEnabled_shouldReturnFalse() {
+        final boolean enabled = false;
+        DeviceConfig.setProperty(DeviceConfig.NAMESPACE_PRIVACY,
+                Utils.PROPERTY_LOCATION_INDICATORS_ENABLED, Boolean.toString(enabled), true);
+        assertThat(mController.isChecked()).isFalse();
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/media/MediaOutputGroupSliceTest.java b/tests/robotests/src/com/android/settings/media/MediaOutputGroupSliceTest.java
deleted file mode 100644
index bb0478c..0000000
--- a/tests/robotests/src/com/android/settings/media/MediaOutputGroupSliceTest.java
+++ /dev/null
@@ -1,299 +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.settings.media;
-
-import static android.app.slice.Slice.EXTRA_RANGE_VALUE;
-import static android.app.slice.Slice.HINT_LIST_ITEM;
-import static android.app.slice.SliceItem.FORMAT_SLICE;
-
-import static com.android.settings.media.MediaOutputGroupSlice.ACTION_MEDIA_SESSION_OPERATION;
-import static com.android.settings.media.MediaOutputGroupSlice.ACTION_VOLUME_ADJUSTMENT;
-import static com.android.settings.media.MediaOutputGroupSlice.CUSTOMIZED_ACTION;
-import static com.android.settings.media.MediaOutputGroupSlice.GROUP_DEVICES;
-import static com.android.settings.media.MediaOutputGroupSlice.MEDIA_DEVICE_ID;
-import static com.android.settings.slices.CustomSliceRegistry.MEDIA_OUTPUT_GROUP_SLICE_URI;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.content.Intent;
-import android.graphics.drawable.Drawable;
-import android.net.Uri;
-
-import androidx.slice.Slice;
-import androidx.slice.SliceMetadata;
-import androidx.slice.SliceProvider;
-import androidx.slice.core.SliceAction;
-import androidx.slice.core.SliceQuery;
-import androidx.slice.widget.SliceLiveData;
-
-import com.android.settings.R;
-import com.android.settings.slices.SliceBackgroundWorker;
-import com.android.settingslib.media.LocalMediaManager;
-import com.android.settingslib.media.MediaDevice;
-
-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.annotation.Implementation;
-import org.robolectric.annotation.Implements;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = MediaOutputGroupSliceTest.ShadowSliceBackgroundWorker.class)
-public class MediaOutputGroupSliceTest {
-
-    private static final String TEST_PACKAGE_NAME = "com.test.music";
-    private static final String TEST_PACKAGE_NAME2 = "com.test.music2";
-    private static final String TEST_DEVICE_1_ID = "test_device_1_id";
-    private static final String TEST_DEVICE_1_NAME = "test_device_1_name";
-    private static final String TEST_DEVICE_2_ID = "test_device_2_id";
-    private static final String TEST_DEVICE_2_NAME = "test_device_2_name";
-    private static final int TEST_VOLUME = 3;
-
-    private static MediaDeviceUpdateWorker sMediaDeviceUpdateWorker;
-
-    @Mock
-    private LocalMediaManager mLocalMediaManager;
-    @Mock
-    private MediaDevice mDevice1;
-    @Mock
-    private MediaDevice mDevice2;
-
-    private final List<MediaDevice> mSelectableDevices = new ArrayList<>();
-    private final List<MediaDevice> mSelectedDevices = new ArrayList<>();
-    private final List<MediaDevice> mDeselectableDevices = new ArrayList<>();
-
-    private Context mContext;
-    private MediaOutputGroupSlice mMediaOutputGroupSlice;
-    private Drawable mDrawable;
-
-    @Before
-    public void setUp() throws Exception {
-        MockitoAnnotations.initMocks(this);
-        mContext = spy(RuntimeEnvironment.application);
-
-        // Set-up specs for SliceMetadata.
-        SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS);
-
-        mMediaOutputGroupSlice = new MediaOutputGroupSlice(mContext);
-        sMediaDeviceUpdateWorker = spy(new MediaDeviceUpdateWorker(mContext,
-                MEDIA_OUTPUT_GROUP_SLICE_URI));
-        sMediaDeviceUpdateWorker.mLocalMediaManager = mLocalMediaManager;
-        when(sMediaDeviceUpdateWorker.getPackageName()).thenReturn(TEST_PACKAGE_NAME);
-        mDrawable = mContext.getDrawable(R.drawable.ic_check_box_blue_24dp);
-        when(sMediaDeviceUpdateWorker.getSelectableMediaDevice()).thenReturn(mSelectableDevices);
-        doReturn(false).when(sMediaDeviceUpdateWorker).hasAdjustVolumeUserRestriction();
-        when(mDevice1.getId()).thenReturn(TEST_DEVICE_1_ID);
-        when(mDevice1.getIcon()).thenReturn(mDrawable);
-        when(mDevice1.getName()).thenReturn(TEST_DEVICE_1_NAME);
-        when(mDevice1.getMaxVolume()).thenReturn(100);
-        when(mDevice1.getCurrentVolume()).thenReturn(10);
-        when(mDevice1.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME);
-        when(mDevice2.getId()).thenReturn(TEST_DEVICE_2_ID);
-        when(mDevice2.getIcon()).thenReturn(mDrawable);
-        when(mDevice2.getName()).thenReturn(TEST_DEVICE_2_NAME);
-        when(mDevice2.getMaxVolume()).thenReturn(100);
-        when(mDevice2.getCurrentVolume()).thenReturn(20);
-    }
-
-    @Test
-    public void getSlice_noMatchedDevice_doNothing() {
-        mSelectableDevices.add(mDevice1);
-        mSelectedDevices.add(mDevice1);
-        when(mLocalMediaManager.getMediaDeviceById(mSelectableDevices, TEST_DEVICE_1_ID))
-                .thenReturn(mDevice1);
-        sMediaDeviceUpdateWorker.onDeviceListUpdate(mSelectableDevices);
-        when(sMediaDeviceUpdateWorker.getSelectedMediaDevice()).thenReturn(mSelectedDevices);
-        final Intent intent = new Intent();
-        intent.putExtra(EXTRA_RANGE_VALUE, TEST_VOLUME);
-        intent.putExtra(MEDIA_DEVICE_ID, TEST_DEVICE_2_ID);
-        intent.putExtra(CUSTOMIZED_ACTION, ACTION_VOLUME_ADJUSTMENT);
-
-        mMediaOutputGroupSlice.onNotifyChange(intent);
-
-        verify(sMediaDeviceUpdateWorker, never()).adjustSessionVolume(anyInt());
-        verify(mDevice1, never()).requestSetVolume(TEST_VOLUME);
-    }
-
-    @Test
-    public void getSlice_withOneSelectableDevice_checkRowNumber() {
-        mSelectableDevices.add(mDevice1);
-        mSelectedDevices.add(mDevice2);
-        when(sMediaDeviceUpdateWorker.getSelectedMediaDevice()).thenReturn(mSelectedDevices);
-        when(sMediaDeviceUpdateWorker.getSelectableMediaDevice()).thenReturn(mSelectableDevices);
-        final Slice slice = mMediaOutputGroupSlice.getSlice();
-        final int rows = SliceQuery.findAll(slice, FORMAT_SLICE, HINT_LIST_ITEM, null).size();
-
-        // Group item and 2 * InputRange
-        assertThat(rows).isEqualTo(3);
-    }
-
-    @Test
-    public void getSlice_nullWorker_noException() {
-        sMediaDeviceUpdateWorker = null;
-        mMediaOutputGroupSlice.getSlice();
-    }
-
-    @Test
-    public void getSlice_withOneSelectableDevice_checkTitle() {
-        mSelectableDevices.add(mDevice1);
-        mSelectedDevices.add(mDevice1);
-        sMediaDeviceUpdateWorker.onDeviceListUpdate(mSelectableDevices);
-        when(sMediaDeviceUpdateWorker.getSelectedMediaDevice()).thenReturn(mSelectedDevices);
-        final Slice slice = mMediaOutputGroupSlice.getSlice();
-        final SliceMetadata metadata = SliceMetadata.from(mContext, slice);
-        final SliceAction primaryAction = metadata.getPrimaryAction();
-
-        assertThat(primaryAction.getTitle().toString()).isEqualTo(GROUP_DEVICES);
-    }
-
-    @Test
-    public void onNotifyChange_verifyAdjustDeviceVolume() {
-        mSelectableDevices.add(mDevice1);
-        mSelectedDevices.add(mDevice1);
-        when(mLocalMediaManager.getMediaDeviceById(mSelectableDevices, TEST_DEVICE_1_ID))
-                .thenReturn(mDevice1);
-        sMediaDeviceUpdateWorker.onDeviceListUpdate(mSelectableDevices);
-        when(sMediaDeviceUpdateWorker.getSelectedMediaDevice()).thenReturn(mSelectedDevices);
-        final Intent intent = new Intent();
-        intent.putExtra(EXTRA_RANGE_VALUE, TEST_VOLUME);
-        intent.putExtra(MEDIA_DEVICE_ID, TEST_DEVICE_1_ID);
-        intent.putExtra(CUSTOMIZED_ACTION, ACTION_VOLUME_ADJUSTMENT);
-
-        mMediaOutputGroupSlice.onNotifyChange(intent);
-
-        verify(mDevice1).requestSetVolume(TEST_VOLUME);
-    }
-
-    @Test
-    public void onNotifyChange_verifyAdjustGroupVolume() {
-        mSelectableDevices.add(mDevice1);
-        mSelectedDevices.add(mDevice1);
-        when(mLocalMediaManager.getMediaDeviceById(mSelectableDevices, TEST_DEVICE_1_ID))
-                .thenReturn(mDevice1);
-        sMediaDeviceUpdateWorker.onDeviceListUpdate(mSelectableDevices);
-        when(sMediaDeviceUpdateWorker.getSelectedMediaDevice()).thenReturn(mSelectedDevices);
-        final Intent intent = new Intent();
-        intent.putExtra(EXTRA_RANGE_VALUE, TEST_VOLUME);
-        intent.putExtra(MEDIA_DEVICE_ID, GROUP_DEVICES);
-        intent.putExtra(CUSTOMIZED_ACTION, ACTION_VOLUME_ADJUSTMENT);
-
-        mMediaOutputGroupSlice.onNotifyChange(intent);
-
-        verify(sMediaDeviceUpdateWorker).adjustSessionVolume(TEST_VOLUME);
-    }
-
-    @Test
-    public void onNotifyChange_sendSelectableDevice_verifyAddSession() {
-        mSelectableDevices.add(mDevice2);
-        mSelectedDevices.add(mDevice1);
-        when(mLocalMediaManager.getMediaDeviceById(mSelectableDevices, TEST_DEVICE_2_ID))
-                .thenReturn(mDevice2);
-        sMediaDeviceUpdateWorker.onDeviceListUpdate(mSelectableDevices);
-        when(sMediaDeviceUpdateWorker.getSelectedMediaDevice()).thenReturn(mSelectedDevices);
-        final Intent intent = new Intent();
-        intent.putExtra(MEDIA_DEVICE_ID, TEST_DEVICE_2_ID);
-        intent.putExtra(CUSTOMIZED_ACTION, ACTION_MEDIA_SESSION_OPERATION);
-
-        mMediaOutputGroupSlice.onNotifyChange(intent);
-
-        verify(sMediaDeviceUpdateWorker).addDeviceToPlayMedia(mDevice2);
-    }
-
-    @Test
-    public void onNotifyChange_sendDeselectableDevice_verifyRemoveSession() {
-        mSelectedDevices.add(mDevice1);
-        mSelectedDevices.add(mDevice2);
-        mDeselectableDevices.add(mDevice1);
-        mDeselectableDevices.add(mDevice2);
-        when(mLocalMediaManager.getMediaDeviceById(mSelectedDevices, TEST_DEVICE_2_ID))
-                .thenReturn(mDevice2);
-        sMediaDeviceUpdateWorker.onDeviceListUpdate(mSelectedDevices);
-        when(sMediaDeviceUpdateWorker.getSelectedMediaDevice()).thenReturn(mSelectedDevices);
-        when(sMediaDeviceUpdateWorker.getDeselectableMediaDevice()).thenReturn(
-                mDeselectableDevices);
-        final Intent intent = new Intent();
-        intent.putExtra(MEDIA_DEVICE_ID, TEST_DEVICE_2_ID);
-        intent.putExtra(CUSTOMIZED_ACTION, ACTION_MEDIA_SESSION_OPERATION);
-
-        mMediaOutputGroupSlice.onNotifyChange(intent);
-
-        verify(sMediaDeviceUpdateWorker).removeDeviceFromPlayMedia(mDevice2);
-    }
-
-    @Test
-    public void onNotifyChange_sendNonDeselectableDevice_notRemoveSession() {
-        mSelectedDevices.add(mDevice1);
-        mSelectedDevices.add(mDevice2);
-        mDeselectableDevices.add(mDevice1);
-        when(mLocalMediaManager.getMediaDeviceById(mSelectedDevices, TEST_DEVICE_2_ID))
-                .thenReturn(mDevice2);
-        sMediaDeviceUpdateWorker.onDeviceListUpdate(mSelectedDevices);
-        when(sMediaDeviceUpdateWorker.getSelectedMediaDevice()).thenReturn(mSelectedDevices);
-        when(sMediaDeviceUpdateWorker.getDeselectableMediaDevice()).thenReturn(
-                mDeselectableDevices);
-        final Intent intent = new Intent();
-        intent.putExtra(MEDIA_DEVICE_ID, TEST_DEVICE_2_ID);
-        intent.putExtra(CUSTOMIZED_ACTION, ACTION_MEDIA_SESSION_OPERATION);
-
-        mMediaOutputGroupSlice.onNotifyChange(intent);
-
-        verify(sMediaDeviceUpdateWorker, never()).removeDeviceFromPlayMedia(mDevice2);
-    }
-
-    @Test
-    public void onNotifyChange_noId_doNothing() {
-        mSelectableDevices.add(mDevice1);
-        mSelectedDevices.add(mDevice1);
-        when(mLocalMediaManager.getMediaDeviceById(mSelectableDevices, TEST_DEVICE_1_ID))
-                .thenReturn(mDevice1);
-        sMediaDeviceUpdateWorker.onDeviceListUpdate(mSelectableDevices);
-        when(sMediaDeviceUpdateWorker.getSelectedMediaDevice()).thenReturn(mSelectedDevices);
-        final Intent intent = new Intent();
-        intent.putExtra(EXTRA_RANGE_VALUE, TEST_VOLUME);
-        intent.putExtra(CUSTOMIZED_ACTION, ACTION_VOLUME_ADJUSTMENT);
-
-        mMediaOutputGroupSlice.onNotifyChange(intent);
-
-        verify(sMediaDeviceUpdateWorker, never()).adjustSessionVolume(anyInt());
-        verify(mDevice1, never()).requestSetVolume(TEST_VOLUME);
-    }
-
-    @Implements(SliceBackgroundWorker.class)
-    public static class ShadowSliceBackgroundWorker {
-
-        @Implementation
-        public static SliceBackgroundWorker getInstance(Uri uri) {
-            return sMediaDeviceUpdateWorker;
-        }
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/media/MediaOutputSliceTest.java b/tests/robotests/src/com/android/settings/media/MediaOutputSliceTest.java
deleted file mode 100644
index 0a8ffa7..0000000
--- a/tests/robotests/src/com/android/settings/media/MediaOutputSliceTest.java
+++ /dev/null
@@ -1,607 +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.settings.media;
-
-import static android.app.slice.Slice.EXTRA_RANGE_VALUE;
-import static android.app.slice.Slice.HINT_LIST_ITEM;
-import static android.app.slice.SliceItem.FORMAT_SLICE;
-
-import static com.android.settings.slices.CustomSliceRegistry.MEDIA_OUTPUT_SLICE_URI;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.bluetooth.BluetoothAdapter;
-import android.content.Context;
-import android.content.Intent;
-import android.graphics.drawable.Drawable;
-import android.media.AudioManager;
-import android.text.TextUtils;
-
-import androidx.slice.Slice;
-import androidx.slice.SliceMetadata;
-import androidx.slice.SliceProvider;
-import androidx.slice.core.SliceAction;
-import androidx.slice.core.SliceQuery;
-import androidx.slice.widget.SliceLiveData;
-
-import com.android.settings.R;
-import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
-import com.android.settingslib.media.LocalMediaManager;
-import com.android.settingslib.media.MediaDevice;
-
-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.shadow.api.Shadow;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowBluetoothAdapter.class})
-public class MediaOutputSliceTest {
-
-    private static final String TEST_DEVICE_1_ID = "test_device_1_id";
-    private static final String TEST_DEVICE_2_ID = "test_device_2_id";
-    private static final String TEST_DEVICE_1_NAME = "test_device_1_name";
-    private static final String TEST_DEVICE_2_NAME = "test_device_2_name";
-    private static final int TEST_DEVICE_1_ICON =
-            com.android.internal.R.drawable.ic_bt_headphones_a2dp;
-
-    @Mock
-    private LocalMediaManager mLocalMediaManager;
-    @Mock
-    private Drawable mTestDrawable;
-
-    private final List<MediaDevice> mDevices = new ArrayList<>();
-
-    private Context mContext;
-    private MediaOutputSlice mMediaOutputSlice;
-    private MediaDeviceUpdateWorker mMediaDeviceUpdateWorker;
-    private ShadowBluetoothAdapter mShadowBluetoothAdapter;
-    private AudioManager mAudioManager;
-
-    @Before
-    public void setUp() throws Exception {
-        MockitoAnnotations.initMocks(this);
-        mContext = spy(RuntimeEnvironment.application);
-        mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
-        mAudioManager.setMode(AudioManager.MODE_NORMAL);
-
-        // Set-up specs for SliceMetadata.
-        SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS);
-        // Setup BluetoothAdapter
-        mShadowBluetoothAdapter = Shadow.extract(BluetoothAdapter.getDefaultAdapter());
-        mShadowBluetoothAdapter.setEnabled(true);
-
-        mMediaOutputSlice = new MediaOutputSlice(mContext);
-        mMediaDeviceUpdateWorker = spy(new MediaDeviceUpdateWorker(mContext,
-                MEDIA_OUTPUT_SLICE_URI));
-        mMediaDeviceUpdateWorker.onDeviceListUpdate(mDevices);
-        mMediaDeviceUpdateWorker.mLocalMediaManager = mLocalMediaManager;
-        doReturn(false).when(mMediaDeviceUpdateWorker).hasAdjustVolumeUserRestriction();
-        mMediaOutputSlice.init(mMediaDeviceUpdateWorker);
-    }
-
-    @Test
-    public void getSlice_workerIsNull_shouldReturnZeroRow() {
-        mMediaOutputSlice.init(null);
-
-        final Slice slice = mMediaOutputSlice.getSlice();
-
-        final int rows = SliceQuery.findAll(slice, FORMAT_SLICE, HINT_LIST_ITEM,
-                null /* nonHints */).size();
-
-        assertThat(rows).isEqualTo(0);
-    }
-
-    @Test
-    public void getSlice_bluetoothIsDisable_shouldReturnZeroRow() {
-        mShadowBluetoothAdapter.setEnabled(false);
-
-        final Slice slice = mMediaOutputSlice.getSlice();
-
-        final int rows = SliceQuery.findAll(slice, FORMAT_SLICE, HINT_LIST_ITEM,
-                null /* nonHints */).size();
-
-        assertThat(rows).isEqualTo(0);
-    }
-
-    @Test
-    public void getSlice_audioModeIsOngoingCall_shouldReturnZeroRow() {
-        mAudioManager.setMode(AudioManager.MODE_IN_CALL);
-
-        final Slice slice = mMediaOutputSlice.getSlice();
-
-        final int rows = SliceQuery.findAll(slice, FORMAT_SLICE, HINT_LIST_ITEM,
-                null /* nonHints */).size();
-
-        assertThat(rows).isEqualTo(0);
-    }
-
-    @Test
-    public void getSlice_shouldHaveActiveDeviceName() {
-        mDevices.clear();
-        final MediaDevice device = mock(MediaDevice.class);
-        when(device.getName()).thenReturn(TEST_DEVICE_1_NAME);
-        when(device.getIcon()).thenReturn(mTestDrawable);
-        when(device.getMaxVolume()).thenReturn(100);
-        when(device.isConnected()).thenReturn(true);
-        when(device.getDeviceType()).thenReturn(MediaDevice.MediaDeviceType.TYPE_CAST_DEVICE);
-        when(device.getId()).thenReturn(TEST_DEVICE_1_ID);
-        final MediaDevice device2 = mock(MediaDevice.class);
-        when(device2.getName()).thenReturn(TEST_DEVICE_2_NAME);
-        when(device2.getIcon()).thenReturn(mTestDrawable);
-        when(device2.getMaxVolume()).thenReturn(100);
-        when(device2.isConnected()).thenReturn(false);
-        when(device2.getDeviceType()).thenReturn(MediaDevice.MediaDeviceType.TYPE_CAST_DEVICE);
-        when(device2.getId()).thenReturn(TEST_DEVICE_2_ID);
-        mDevices.add(device);
-        mDevices.add(device2);
-        mMediaDeviceUpdateWorker.onDeviceListUpdate(mDevices);
-        when(mLocalMediaManager.getCurrentConnectedDevice()).thenReturn(device);
-
-        final Slice mediaSlice = mMediaOutputSlice.getSlice();
-        final SliceMetadata metadata = SliceMetadata.from(mContext, mediaSlice);
-
-        final SliceAction primaryAction = metadata.getPrimaryAction();
-        assertThat(primaryAction.getTitle().toString()).isEqualTo(TEST_DEVICE_1_NAME);
-    }
-
-    @Test
-    public void getSlice_disconnectedBluetooth_verifyTitle() {
-        mDevices.clear();
-        final MediaDevice device = mock(MediaDevice.class);
-        when(device.getName()).thenReturn(TEST_DEVICE_1_NAME);
-        when(device.getIcon()).thenReturn(mTestDrawable);
-        when(device.getMaxVolume()).thenReturn(100);
-        when(device.isConnected()).thenReturn(false);
-        when(device.getDeviceType()).thenReturn(MediaDevice.MediaDeviceType.TYPE_BLUETOOTH_DEVICE);
-        when(device.getId()).thenReturn(TEST_DEVICE_1_ID);
-        final MediaDevice device2 = mock(MediaDevice.class);
-        when(device2.getName()).thenReturn(TEST_DEVICE_2_NAME);
-        when(device2.getIcon()).thenReturn(mTestDrawable);
-        when(device2.getMaxVolume()).thenReturn(100);
-        when(device2.isConnected()).thenReturn(false);
-        when(device2.getDeviceType()).thenReturn(MediaDevice.MediaDeviceType.TYPE_BLUETOOTH_DEVICE);
-        when(device2.getId()).thenReturn(TEST_DEVICE_2_ID);
-        mDevices.add(device);
-        mDevices.add(device2);
-        mMediaDeviceUpdateWorker.onDeviceListUpdate(mDevices);
-
-        final Slice mediaSlice = mMediaOutputSlice.getSlice();
-        final SliceMetadata metadata = SliceMetadata.from(mContext, mediaSlice);
-
-        final SliceAction primaryAction = metadata.getPrimaryAction();
-        assertThat(primaryAction.getTitle().toString()).isEqualTo(mContext.getString(
-                R.string.media_output_disconnected_status, TEST_DEVICE_1_NAME));
-    }
-
-    @Test
-    public void getSlice_inGroupState_checkSliceSize() {
-        final List<MediaDevice> mSelectedDevices = new ArrayList<>();
-        final List<MediaDevice> mSelectableDevices = new ArrayList<>();
-        mDevices.clear();
-        final MediaDevice device = mock(MediaDevice.class);
-        when(device.getName()).thenReturn(TEST_DEVICE_1_NAME);
-        when(device.getIcon()).thenReturn(mTestDrawable);
-        when(device.getMaxVolume()).thenReturn(100);
-        when(device.isConnected()).thenReturn(true);
-        when(device.getDeviceType()).thenReturn(MediaDevice.MediaDeviceType.TYPE_CAST_DEVICE);
-        when(device.getId()).thenReturn(TEST_DEVICE_1_ID);
-        final MediaDevice device2 = mock(MediaDevice.class);
-        when(device2.getName()).thenReturn(TEST_DEVICE_2_NAME);
-        when(device2.getIcon()).thenReturn(mTestDrawable);
-        when(device2.getMaxVolume()).thenReturn(100);
-        when(device2.isConnected()).thenReturn(true);
-        when(device2.getDeviceType()).thenReturn(MediaDevice.MediaDeviceType.TYPE_CAST_DEVICE);
-        when(device2.getId()).thenReturn(TEST_DEVICE_2_ID);
-        mSelectedDevices.add(device);
-        mSelectedDevices.add(device2);
-        when(mLocalMediaManager.getCurrentConnectedDevice()).thenReturn(device);
-        mDevices.add(device);
-        mDevices.add(device2);
-        when(mLocalMediaManager.getSelectedMediaDevice()).thenReturn(mSelectedDevices);
-        when(mLocalMediaManager.getSelectableMediaDevice()).thenReturn(mSelectableDevices);
-        when(mMediaDeviceUpdateWorker.getSessionVolumeMax()).thenReturn(100);
-        mMediaDeviceUpdateWorker.onDeviceListUpdate(mDevices);
-
-        final Slice mediaSlice = mMediaOutputSlice.getSlice();
-
-        assertThat(SliceQuery.findAll(mediaSlice, FORMAT_SLICE, HINT_LIST_ITEM, null).size())
-                .isEqualTo(mDevices.size() + 1);
-    }
-
-    @Test
-    public void getSlice_notInGroupState_checkSliceSize() {
-        final List<MediaDevice> mSelectedDevices = new ArrayList<>();
-        final List<MediaDevice> mSelectableDevices = new ArrayList<>();
-        mDevices.clear();
-        final MediaDevice device = mock(MediaDevice.class);
-        when(device.getName()).thenReturn(TEST_DEVICE_1_NAME);
-        when(device.getIcon()).thenReturn(mTestDrawable);
-        when(device.getMaxVolume()).thenReturn(100);
-        when(device.isConnected()).thenReturn(true);
-        when(device.getDeviceType()).thenReturn(MediaDevice.MediaDeviceType.TYPE_CAST_DEVICE);
-        when(device.getId()).thenReturn(TEST_DEVICE_1_ID);
-        final MediaDevice device2 = mock(MediaDevice.class);
-        when(device2.getName()).thenReturn(TEST_DEVICE_2_NAME);
-        when(device2.getIcon()).thenReturn(mTestDrawable);
-        when(device2.getMaxVolume()).thenReturn(100);
-        when(device2.isConnected()).thenReturn(true);
-        when(device2.getDeviceType()).thenReturn(MediaDevice.MediaDeviceType.TYPE_CAST_DEVICE);
-        when(device2.getId()).thenReturn(TEST_DEVICE_2_ID);
-        mSelectedDevices.add(device);
-        mSelectableDevices.add(device2);
-        when(mLocalMediaManager.getCurrentConnectedDevice()).thenReturn(device);
-        mDevices.add(device);
-        mDevices.add(device2);
-        when(mLocalMediaManager.getSelectedMediaDevice()).thenReturn(mSelectedDevices);
-        when(mLocalMediaManager.getSelectableMediaDevice()).thenReturn(mSelectableDevices);
-        mMediaDeviceUpdateWorker.onDeviceListUpdate(mDevices);
-
-        final Slice mediaSlice = mMediaOutputSlice.getSlice();
-
-        assertThat(SliceQuery.findAll(mediaSlice, FORMAT_SLICE, HINT_LIST_ITEM, null).size())
-                .isEqualTo(mDevices.size());
-    }
-
-    @Test
-    public void getSlice_singleCastDevice_notContainGroupIconText() {
-        final List<MediaDevice> mSelectedDevices = new ArrayList<>();
-        final List<MediaDevice> mSelectableDevices = new ArrayList<>();
-        mDevices.clear();
-        final MediaDevice device = mock(MediaDevice.class);
-        when(device.getName()).thenReturn(TEST_DEVICE_1_NAME);
-        when(device.getIcon()).thenReturn(mTestDrawable);
-        when(device.getMaxVolume()).thenReturn(100);
-        when(device.isConnected()).thenReturn(true);
-        when(device.getDeviceType()).thenReturn(MediaDevice.MediaDeviceType.TYPE_CAST_DEVICE);
-        when(device.getId()).thenReturn(TEST_DEVICE_1_ID);
-        when(mLocalMediaManager.getSelectedMediaDevice()).thenReturn(mDevices);
-        when(mLocalMediaManager.getSelectableMediaDevice()).thenReturn(null);
-        mSelectedDevices.add(device);
-        when(mLocalMediaManager.getCurrentConnectedDevice()).thenReturn(device);
-        mDevices.add(device);
-        when(mLocalMediaManager.getSelectedMediaDevice()).thenReturn(mSelectedDevices);
-        when(mLocalMediaManager.getSelectableMediaDevice()).thenReturn(mSelectableDevices);
-        mMediaDeviceUpdateWorker.onDeviceListUpdate(mDevices);
-
-        final Slice mediaSlice = mMediaOutputSlice.getSlice();
-
-        final String sliceInfo = SliceQuery.findAll(mediaSlice, FORMAT_SLICE, HINT_LIST_ITEM,
-                null).toString();
-
-        assertThat(TextUtils.indexOf(sliceInfo, mContext.getText(R.string.add))).isEqualTo(-1);
-    }
-
-    @Test
-    public void getSlice_multipleCastDevices_containGroupIconText() {
-        final List<MediaDevice> mSelectedDevices = new ArrayList<>();
-        final List<MediaDevice> mSelectableDevices = new ArrayList<>();
-        mDevices.clear();
-        final MediaDevice device = mock(MediaDevice.class);
-        when(device.getName()).thenReturn(TEST_DEVICE_1_NAME);
-        when(device.getIcon()).thenReturn(mTestDrawable);
-        when(device.getMaxVolume()).thenReturn(100);
-        when(device.isConnected()).thenReturn(true);
-        when(device.getDeviceType()).thenReturn(MediaDevice.MediaDeviceType.TYPE_CAST_DEVICE);
-        when(device.getId()).thenReturn(TEST_DEVICE_1_ID);
-        final MediaDevice device2 = mock(MediaDevice.class);
-        when(device2.getName()).thenReturn(TEST_DEVICE_2_NAME);
-        when(device2.getIcon()).thenReturn(mTestDrawable);
-        when(device2.getMaxVolume()).thenReturn(100);
-        when(device2.isConnected()).thenReturn(true);
-        when(device2.getDeviceType()).thenReturn(MediaDevice.MediaDeviceType.TYPE_CAST_DEVICE);
-        when(device2.getId()).thenReturn(TEST_DEVICE_2_ID);
-        mSelectedDevices.add(device);
-        mSelectableDevices.add(device2);
-        when(mLocalMediaManager.getCurrentConnectedDevice()).thenReturn(device);
-        mDevices.add(device);
-        mDevices.add(device2);
-        when(mLocalMediaManager.getSelectedMediaDevice()).thenReturn(mSelectedDevices);
-        when(mLocalMediaManager.getSelectableMediaDevice()).thenReturn(mSelectableDevices);
-        mMediaDeviceUpdateWorker.onDeviceListUpdate(mDevices);
-
-        final Slice mediaSlice = mMediaOutputSlice.getSlice();
-        String sliceInfo = SliceQuery.findAll(mediaSlice, FORMAT_SLICE, HINT_LIST_ITEM,
-                null).toString();
-
-        assertThat(TextUtils.indexOf(sliceInfo, mContext.getText(R.string.add))).isNotEqualTo(-1);
-    }
-
-    @Test
-    public void getSlice_onTransferring_containTransferringSubtitle() {
-        final List<MediaDevice> mSelectedDevices = new ArrayList<>();
-        final List<MediaDevice> mSelectableDevices = new ArrayList<>();
-        mDevices.clear();
-        final MediaDevice device = mock(MediaDevice.class);
-        when(device.getName()).thenReturn(TEST_DEVICE_1_NAME);
-        when(device.getIcon()).thenReturn(mTestDrawable);
-        when(device.getMaxVolume()).thenReturn(100);
-        when(device.isConnected()).thenReturn(true);
-        when(device.getDeviceType()).thenReturn(MediaDevice.MediaDeviceType.TYPE_CAST_DEVICE);
-        when(device.getId()).thenReturn(TEST_DEVICE_1_ID);
-        final MediaDevice device2 = mock(MediaDevice.class);
-        when(device2.getName()).thenReturn(TEST_DEVICE_2_NAME);
-        when(device2.getIcon()).thenReturn(mTestDrawable);
-        when(device2.getMaxVolume()).thenReturn(100);
-        when(device2.isConnected()).thenReturn(false);
-        when(device2.getState()).thenReturn(LocalMediaManager.MediaDeviceState.STATE_CONNECTING);
-        when(device2.getDeviceType()).thenReturn(MediaDevice.MediaDeviceType.TYPE_CAST_DEVICE);
-        when(device2.getId()).thenReturn(TEST_DEVICE_2_ID);
-        mSelectedDevices.add(device);
-        mSelectableDevices.add(device2);
-        when(mLocalMediaManager.getCurrentConnectedDevice()).thenReturn(device);
-        mDevices.add(device);
-        mDevices.add(device2);
-        when(mLocalMediaManager.getSelectedMediaDevice()).thenReturn(mSelectedDevices);
-        when(mLocalMediaManager.getSelectableMediaDevice()).thenReturn(mSelectableDevices);
-        mMediaDeviceUpdateWorker.onDeviceListUpdate(mDevices);
-
-        final Slice mediaSlice = mMediaOutputSlice.getSlice();
-        final String sliceInfo = SliceQuery.findAll(mediaSlice, FORMAT_SLICE, HINT_LIST_ITEM,
-                null).toString();
-
-        assertThat(TextUtils.indexOf(sliceInfo, mContext.getText(R.string.media_output_switching)))
-                .isNotEqualTo(-1);
-    }
-
-    @Test
-    public void getSlice_onTransferringFailed_containFailedSubtitle() {
-        final List<MediaDevice> mSelectedDevices = new ArrayList<>();
-        final List<MediaDevice> mSelectableDevices = new ArrayList<>();
-        mDevices.clear();
-        final MediaDevice device = mock(MediaDevice.class);
-        when(device.getName()).thenReturn(TEST_DEVICE_1_NAME);
-        when(device.getIcon()).thenReturn(mTestDrawable);
-        when(device.getMaxVolume()).thenReturn(100);
-        when(device.isConnected()).thenReturn(true);
-        when(device.getDeviceType()).thenReturn(MediaDevice.MediaDeviceType.TYPE_CAST_DEVICE);
-        when(device.getId()).thenReturn(TEST_DEVICE_1_ID);
-        final MediaDevice device2 = mock(MediaDevice.class);
-        when(device2.getName()).thenReturn(TEST_DEVICE_2_NAME);
-        when(device2.getIcon()).thenReturn(mTestDrawable);
-        when(device2.getMaxVolume()).thenReturn(100);
-        when(device2.isConnected()).thenReturn(false);
-        when(device2.getState()).thenReturn(LocalMediaManager.MediaDeviceState
-                .STATE_CONNECTING_FAILED);
-        when(device2.getDeviceType()).thenReturn(MediaDevice.MediaDeviceType.TYPE_CAST_DEVICE);
-        when(device2.getId()).thenReturn(TEST_DEVICE_2_ID);
-        mSelectedDevices.add(device);
-        mSelectableDevices.add(device2);
-        when(mLocalMediaManager.getCurrentConnectedDevice()).thenReturn(device);
-        mDevices.add(device);
-        mDevices.add(device2);
-        when(mLocalMediaManager.getSelectedMediaDevice()).thenReturn(mSelectedDevices);
-        when(mLocalMediaManager.getSelectableMediaDevice()).thenReturn(mSelectableDevices);
-        mMediaDeviceUpdateWorker.onDeviceListUpdate(mDevices);
-
-        final Slice mediaSlice = mMediaOutputSlice.getSlice();
-        final String sliceInfo = SliceQuery.findAll(mediaSlice, FORMAT_SLICE, HINT_LIST_ITEM,
-                null).toString();
-
-        assertThat(TextUtils.indexOf(sliceInfo, mContext.getText(
-                R.string.media_output_switch_error_text))).isNotEqualTo(-1);
-    }
-
-    @Test
-    public void getSlice_zeroState_containPairingText() {
-        final List<MediaDevice> mSelectedDevices = new ArrayList<>();
-        final List<MediaDevice> mSelectableDevices = new ArrayList<>();
-        mDevices.clear();
-        final MediaDevice device = mock(MediaDevice.class);
-        when(device.getName()).thenReturn(TEST_DEVICE_1_NAME);
-        when(device.getIcon()).thenReturn(mTestDrawable);
-        when(device.getMaxVolume()).thenReturn(100);
-        when(device.isConnected()).thenReturn(true);
-        when(device.getDeviceType()).thenReturn(MediaDevice.MediaDeviceType.TYPE_PHONE_DEVICE);
-        when(device.getId()).thenReturn(TEST_DEVICE_1_ID);
-        mSelectedDevices.add(device);
-        when(mLocalMediaManager.getCurrentConnectedDevice()).thenReturn(device);
-        mDevices.add(device);
-        when(mLocalMediaManager.getSelectedMediaDevice()).thenReturn(mSelectedDevices);
-        when(mLocalMediaManager.getSelectableMediaDevice()).thenReturn(mSelectableDevices);
-        mMediaDeviceUpdateWorker.onDeviceListUpdate(mDevices);
-
-        final Slice mediaSlice = mMediaOutputSlice.getSlice();
-        String sliceInfo = SliceQuery.findAll(mediaSlice, FORMAT_SLICE, HINT_LIST_ITEM,
-                null).toString();
-
-        assertThat(TextUtils.indexOf(sliceInfo, mContext.getText(
-                R.string.bluetooth_pairing_pref_title))).isNotEqualTo(-1);
-    }
-
-    @Test
-    public void getSlice_twoConnectedDevices_notContainPairingText() {
-        final List<MediaDevice> mSelectedDevices = new ArrayList<>();
-        final List<MediaDevice> mSelectableDevices = new ArrayList<>();
-        mDevices.clear();
-        final MediaDevice device = mock(MediaDevice.class);
-        when(device.getName()).thenReturn(TEST_DEVICE_1_NAME);
-        when(device.getIcon()).thenReturn(mTestDrawable);
-        when(device.getMaxVolume()).thenReturn(100);
-        when(device.isConnected()).thenReturn(true);
-        when(device.getDeviceType()).thenReturn(MediaDevice.MediaDeviceType.TYPE_CAST_DEVICE);
-        when(device.getId()).thenReturn(TEST_DEVICE_1_ID);
-        final MediaDevice device2 = mock(MediaDevice.class);
-        when(device2.getName()).thenReturn(TEST_DEVICE_2_NAME);
-        when(device2.getIcon()).thenReturn(mTestDrawable);
-        when(device2.getMaxVolume()).thenReturn(100);
-        when(device2.isConnected()).thenReturn(true);
-        when(device2.getDeviceType()).thenReturn(MediaDevice.MediaDeviceType.TYPE_CAST_DEVICE);
-        when(device2.getId()).thenReturn(TEST_DEVICE_2_ID);
-        mSelectedDevices.add(device);
-        mSelectableDevices.add(device2);
-        when(mLocalMediaManager.getCurrentConnectedDevice()).thenReturn(device);
-        mDevices.add(device);
-        mDevices.add(device2);
-        when(mLocalMediaManager.getSelectedMediaDevice()).thenReturn(mSelectedDevices);
-        when(mLocalMediaManager.getSelectableMediaDevice()).thenReturn(mSelectableDevices);
-        mMediaDeviceUpdateWorker.onDeviceListUpdate(mDevices);
-
-        final Slice mediaSlice = mMediaOutputSlice.getSlice();
-        String sliceInfo = SliceQuery.findAll(mediaSlice, FORMAT_SLICE, HINT_LIST_ITEM,
-                null).toString();
-
-        assertThat(TextUtils.indexOf(sliceInfo, mContext.getText(
-                R.string.bluetooth_pairing_pref_title))).isEqualTo(-1);
-    }
-
-    @Test
-    public void getSlice_disconnectedBtOnTransferring_containTransferringSubtitle() {
-        final List<MediaDevice> mSelectedDevices = new ArrayList<>();
-        final List<MediaDevice> mSelectableDevices = new ArrayList<>();
-        mDevices.clear();
-        final MediaDevice device = mock(MediaDevice.class);
-        when(device.getName()).thenReturn(TEST_DEVICE_1_NAME);
-        when(device.getIcon()).thenReturn(mTestDrawable);
-        when(device.getMaxVolume()).thenReturn(100);
-        when(device.isConnected()).thenReturn(true);
-        when(device.getDeviceType()).thenReturn(MediaDevice.MediaDeviceType.TYPE_BLUETOOTH_DEVICE);
-        when(device.getId()).thenReturn(TEST_DEVICE_1_ID);
-        final MediaDevice device2 = mock(MediaDevice.class);
-        when(device2.getName()).thenReturn(TEST_DEVICE_2_NAME);
-        when(device2.getIcon()).thenReturn(mTestDrawable);
-        when(device2.getMaxVolume()).thenReturn(100);
-        when(device2.isConnected()).thenReturn(false);
-        when(device2.getState()).thenReturn(LocalMediaManager.MediaDeviceState.STATE_CONNECTING);
-        when(device2.getDeviceType()).thenReturn(MediaDevice.MediaDeviceType.TYPE_BLUETOOTH_DEVICE);
-        when(device2.getId()).thenReturn(TEST_DEVICE_2_ID);
-        mSelectedDevices.add(device);
-        mSelectableDevices.add(device2);
-        when(mLocalMediaManager.getCurrentConnectedDevice()).thenReturn(device);
-        mDevices.add(device);
-        mDevices.add(device2);
-        when(mLocalMediaManager.getSelectedMediaDevice()).thenReturn(mSelectedDevices);
-        when(mLocalMediaManager.getSelectableMediaDevice()).thenReturn(mSelectableDevices);
-        mMediaDeviceUpdateWorker.onDeviceListUpdate(mDevices);
-
-        final Slice mediaSlice = mMediaOutputSlice.getSlice();
-        final String sliceInfo = SliceQuery.findAll(mediaSlice, FORMAT_SLICE, HINT_LIST_ITEM,
-                null).toString();
-
-        assertThat(TextUtils.indexOf(sliceInfo, mContext.getText(R.string.media_output_switching)))
-                .isNotEqualTo(-1);
-    }
-
-    @Test
-    public void getSlice_disconnectedBtOnTransferringFailed_containTransferringFailedSubtitle() {
-        final List<MediaDevice> mSelectedDevices = new ArrayList<>();
-        final List<MediaDevice> mSelectableDevices = new ArrayList<>();
-        mDevices.clear();
-        final MediaDevice device = mock(MediaDevice.class);
-        when(device.getName()).thenReturn(TEST_DEVICE_1_NAME);
-        when(device.getIcon()).thenReturn(mTestDrawable);
-        when(device.getMaxVolume()).thenReturn(100);
-        when(device.isConnected()).thenReturn(true);
-        when(device.getDeviceType()).thenReturn(MediaDevice.MediaDeviceType.TYPE_BLUETOOTH_DEVICE);
-        when(device.getId()).thenReturn(TEST_DEVICE_1_ID);
-        final MediaDevice device2 = mock(MediaDevice.class);
-        when(device2.getName()).thenReturn(TEST_DEVICE_2_NAME);
-        when(device2.getIcon()).thenReturn(mTestDrawable);
-        when(device2.getMaxVolume()).thenReturn(100);
-        when(device2.isConnected()).thenReturn(false);
-        when(device2.getState()).thenReturn(
-                LocalMediaManager.MediaDeviceState.STATE_CONNECTING_FAILED);
-        when(device2.getDeviceType()).thenReturn(MediaDevice.MediaDeviceType.TYPE_BLUETOOTH_DEVICE);
-        when(device2.getId()).thenReturn(TEST_DEVICE_2_ID);
-        mSelectedDevices.add(device);
-        mSelectableDevices.add(device2);
-        when(mLocalMediaManager.getCurrentConnectedDevice()).thenReturn(device);
-        mDevices.add(device);
-        mDevices.add(device2);
-        when(mLocalMediaManager.getSelectedMediaDevice()).thenReturn(mSelectedDevices);
-        when(mLocalMediaManager.getSelectableMediaDevice()).thenReturn(mSelectableDevices);
-        mMediaDeviceUpdateWorker.onDeviceListUpdate(mDevices);
-
-        final Slice mediaSlice = mMediaOutputSlice.getSlice();
-        final String sliceInfo = SliceQuery.findAll(mediaSlice, FORMAT_SLICE, HINT_LIST_ITEM,
-                null).toString();
-
-        assertThat(TextUtils.indexOf(sliceInfo,
-                mContext.getText(R.string.bluetooth_connect_failed))).isNotEqualTo(-1);
-    }
-
-    @Test
-    public void onNotifyChange_foundMediaDevice_connect() {
-        mDevices.clear();
-        final MediaDevice device = mock(MediaDevice.class);
-        when(device.getId()).thenReturn(TEST_DEVICE_1_ID);
-        when(mLocalMediaManager.getMediaDeviceById(mDevices, TEST_DEVICE_1_ID)).thenReturn(device);
-        mDevices.add(device);
-
-        mMediaDeviceUpdateWorker.onDeviceListUpdate(mDevices);
-
-        final Intent intent = new Intent();
-        intent.putExtra("media_device_id", TEST_DEVICE_1_ID);
-
-        mMediaOutputSlice.onNotifyChange(intent);
-
-        verify(mLocalMediaManager).connectDevice(device);
-    }
-
-    @Test
-    public void onNotifyChange_notFoundMediaDevice_doNothing() {
-        mDevices.clear();
-        final MediaDevice device = mock(MediaDevice.class);
-        when(device.getId()).thenReturn(TEST_DEVICE_1_ID);
-        when(mLocalMediaManager.getMediaDeviceById(mDevices, TEST_DEVICE_1_ID)).thenReturn(device);
-        mDevices.add(device);
-
-        mMediaDeviceUpdateWorker.onDeviceListUpdate(mDevices);
-
-        final Intent intent = new Intent();
-        intent.putExtra("media_device_id", "fake_123");
-
-        mMediaOutputSlice.onNotifyChange(intent);
-
-        verify(mLocalMediaManager, never()).connectDevice(device);
-    }
-
-    @Test
-    public void onNotifyChange_adjustVolume() {
-        mDevices.clear();
-        final MediaDevice device = mock(MediaDevice.class);
-        when(device.getId()).thenReturn(TEST_DEVICE_1_ID);
-        when(mLocalMediaManager.getMediaDeviceById(mDevices, TEST_DEVICE_1_ID)).thenReturn(device);
-        mDevices.add(device);
-
-        mMediaDeviceUpdateWorker.onDeviceListUpdate(mDevices);
-
-        final Intent intent = new Intent();
-        intent.putExtra("media_device_id", TEST_DEVICE_1_ID);
-        intent.putExtra(EXTRA_RANGE_VALUE, 30);
-
-        mMediaOutputSlice.onNotifyChange(intent);
-
-        verify(device).requestSetVolume(30);
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/network/AirplaneModePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/AirplaneModePreferenceControllerTest.java
deleted file mode 100644
index cb68e2a..0000000
--- a/tests/robotests/src/com/android/settings/network/AirplaneModePreferenceControllerTest.java
+++ /dev/null
@@ -1,182 +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.settings.network;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.when;
-
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.provider.Settings;
-import android.provider.SettingsSlicesContract;
-
-import androidx.lifecycle.LifecycleOwner;
-import androidx.preference.PreferenceManager;
-import androidx.preference.PreferenceScreen;
-
-import com.android.settings.AirplaneModeEnabler;
-import com.android.settings.core.BasePreferenceController;
-import com.android.settings.testutils.FakeFeatureFactory;
-import com.android.settingslib.RestrictedSwitchPreference;
-import com.android.settingslib.core.lifecycle.Lifecycle;
-
-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)
-public class AirplaneModePreferenceControllerTest {
-
-    private static final int ON = 1;
-    private static final int OFF = 0;
-
-    @Mock
-    private PackageManager mPackageManager;
-    @Mock
-    private AirplaneModeEnabler mAirplaneModeEnabler;
-    private Context mContext;
-    private ContentResolver mResolver;
-    private PreferenceManager mPreferenceManager;
-    private PreferenceScreen mScreen;
-    private RestrictedSwitchPreference mPreference;
-    private AirplaneModePreferenceController mController;
-    private LifecycleOwner mLifecycleOwner;
-    private Lifecycle mLifecycle;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        FakeFeatureFactory.setupForTest();
-        mContext = spy(RuntimeEnvironment.application);
-        mResolver = RuntimeEnvironment.application.getContentResolver();
-        doReturn(mPackageManager).when(mContext).getPackageManager();
-        mController = new AirplaneModePreferenceController(mContext,
-                SettingsSlicesContract.KEY_AIRPLANE_MODE);
-
-        mPreferenceManager = new PreferenceManager(mContext);
-        mScreen = mPreferenceManager.createPreferenceScreen(mContext);
-        mPreference = new RestrictedSwitchPreference(mContext);
-        mPreference.setKey(SettingsSlicesContract.KEY_AIRPLANE_MODE);
-        mScreen.addPreference(mPreference);
-        mController.setFragment(null);
-        mLifecycleOwner = () -> mLifecycle;
-        mLifecycle = new Lifecycle(mLifecycleOwner);
-        mLifecycle.addObserver(mController);
-    }
-
-    @Test
-    public void getSliceUri_shouldUsePlatformAuthority() {
-        assertThat(mController.getSliceUri().getAuthority())
-                .isEqualTo(SettingsSlicesContract.AUTHORITY);
-    }
-
-    @Test
-    @Config(qualifiers = "mcc999")
-    public void airplaneModePreference_shouldNotBeAvailable_ifSetToNotVisible() {
-        assertThat(mController.getAvailabilityStatus())
-                .isNotEqualTo(BasePreferenceController.AVAILABLE);
-
-        mController.displayPreference(mScreen);
-
-        // This should not crash
-        mController.onStart();
-        mController.onStop();
-    }
-
-    @Test
-    public void airplaneModePreference_shouldNotBeAvailable_ifHasLeanbackFeature() {
-        when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_LEANBACK)).thenReturn(true);
-        assertThat(mController.getAvailabilityStatus())
-                .isNotEqualTo(BasePreferenceController.AVAILABLE);
-
-        mController.displayPreference(mScreen);
-
-        // This should not crash
-        mController.onStart();
-        mController.onStop();
-    }
-
-    @Test
-    public void airplaneModePreference_shouldBeAvailable_ifNoLeanbackFeature() {
-        when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_LEANBACK)).thenReturn(false);
-        assertThat(mController.getAvailabilityStatus())
-                .isEqualTo(BasePreferenceController.AVAILABLE);
-    }
-
-    @Test
-    public void airplaneModePreference_testSetValue_updatesCorrectly() {
-
-        // Set airplane mode ON by setChecked
-        mController.setAirplaneModeEnabler(mAirplaneModeEnabler);
-        assertThat(mController.setChecked(true)).isTrue();
-
-        // Check return value if set same status.
-        when(mAirplaneModeEnabler.isAirplaneModeOn()).thenReturn(true);
-        assertThat(mController.setChecked(true)).isFalse();
-
-        // Set to OFF
-        assertThat(mController.setChecked(false)).isTrue();
-    }
-
-    @Test
-    public void airplaneModePreference_testGetValue_correctValueReturned() {
-        // Set airplane mode ON
-        Settings.Global.putInt(mResolver, Settings.Global.AIRPLANE_MODE_ON, ON);
-
-        mController.displayPreference(mScreen);
-        mController.onStart();
-
-        assertThat(mController.isChecked()).isTrue();
-
-        Settings.Global.putInt(mResolver, Settings.Global.AIRPLANE_MODE_ON, OFF);
-        assertThat(mController.isChecked()).isFalse();
-    }
-
-    @Test
-    public void airplaneModePreference_testPreferenceUI_updatesCorrectly() {
-        // Airplane mode default off
-        Settings.Global.putInt(mResolver, Settings.Global.AIRPLANE_MODE_ON, OFF);
-
-        mController.displayPreference(mScreen);
-        mController.onStop();
-
-        assertThat(mPreference.isChecked()).isFalse();
-
-        mController.onAirplaneModeChanged(true);
-
-        assertThat(mPreference.isChecked()).isTrue();
-    }
-
-    @Test
-    public void isSliceable_returnsTrue() {
-        assertThat(mController.isSliceable()).isTrue();
-    }
-
-    @Test
-    public void isPublicSlice_returnsTrue() {
-        assertThat(mController.isPublicSlice()).isTrue();
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/network/DataConnectivityListenerTest.java b/tests/robotests/src/com/android/settings/network/DataConnectivityListenerTest.java
deleted file mode 100644
index b45e28c..0000000
--- a/tests/robotests/src/com/android/settings/network/DataConnectivityListenerTest.java
+++ /dev/null
@@ -1,116 +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.settings.network;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-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.content.Context;
-import android.net.ConnectivityManager;
-import android.net.Network;
-import android.net.NetworkCapabilities;
-import android.net.NetworkRequest;
-import android.os.Handler;
-
-import com.android.settings.network.telephony.DataConnectivityListener;
-
-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 DataConnectivityListenerTest {
-    @Mock
-    private DataConnectivityListener.Client mClient;
-    @Mock
-    private ConnectivityManager mConnectivityManager;
-    @Mock
-    private Network mActiveNetwork;
-
-    private Context mContext;
-    private DataConnectivityListener mListener;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = spy(RuntimeEnvironment.application);
-        when(mContext.getSystemService(ConnectivityManager.class)).thenReturn(mConnectivityManager);
-        when(mConnectivityManager.getActiveNetwork()).thenReturn(mActiveNetwork);
-        mListener = new DataConnectivityListener(mContext, mClient);
-    }
-
-    @Test
-    public void noStart_doesNotRegister() {
-        verify(mConnectivityManager, never()).registerNetworkCallback(any(NetworkRequest.class),
-                any(ConnectivityManager.NetworkCallback.class), any(Handler.class));
-    }
-
-    @Test
-    public void start_doesRegister() {
-        mListener.start();
-        verify(mConnectivityManager).registerNetworkCallback(any(NetworkRequest.class),
-                eq(mListener), any(Handler.class));
-    }
-
-    @Test
-    public void onCapabilitiesChanged_notActiveNetwork_noCallback() {
-        Network changedNetwork = mock(Network.class);
-        mListener.onCapabilitiesChanged(changedNetwork, mock(NetworkCapabilities.class));
-        verify(mClient, never()).onDataConnectivityChange();
-    }
-
-    @Test
-    public void onCapabilitiesChanged_activeNetwork_onDataConnectivityChangeFires() {
-        mListener.onCapabilitiesChanged(mActiveNetwork, mock(NetworkCapabilities.class));
-        verify(mClient).onDataConnectivityChange();
-    }
-
-    @Test
-    public void onLosing_notActiveNetwork_onDataConnectivityChangeFires() {
-        Network changedNetwork = mock(Network.class);
-        mListener.onLosing(changedNetwork, 500);
-        verify(mClient).onDataConnectivityChange();
-    }
-
-    @Test
-    public void onLosing_activeNetwork_onDataConnectivityChangeFires() {
-        mListener.onLosing(mActiveNetwork, 500);
-        verify(mClient).onDataConnectivityChange();
-    }
-
-    @Test
-    public void onLost_notActiveNetwork_onDataConnectivityChangeFires() {
-        Network changedNetwork = mock(Network.class);
-        mListener.onLost(changedNetwork);
-        verify(mClient).onDataConnectivityChange();
-    }
-
-    @Test
-    public void onLost_activeNetwork_onDataConnectivityChangeFires() {
-        mListener.onLost(mActiveNetwork);
-        verify(mClient).onDataConnectivityChange();
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/network/GlobalSettingsChangeListenerTest.java b/tests/robotests/src/com/android/settings/network/GlobalSettingsChangeListenerTest.java
deleted file mode 100644
index e419071..0000000
--- a/tests/robotests/src/com/android/settings/network/GlobalSettingsChangeListenerTest.java
+++ /dev/null
@@ -1,86 +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.settings.network;
-
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
-import android.content.Context;
-import android.os.Looper;
-import android.provider.Settings;
-
-import androidx.lifecycle.Lifecycle;
-
-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 GlobalSettingsChangeListenerTest {
-
-    @Mock
-    private Lifecycle mLifecycle;
-
-    private Context mContext;
-    private GlobalSettingsChangeListener mListener;
-
-    private static final String SETTINGS_FIELD = Settings.Global.AIRPLANE_MODE_ON;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = spy(RuntimeEnvironment.application);
-        mListener = spy(new GlobalSettingsChangeListener(Looper.getMainLooper(),
-                mContext, SETTINGS_FIELD) {
-            public void onChanged(String field) {}
-        });
-
-        doNothing().when(mLifecycle).addObserver(mListener);
-        doNothing().when(mLifecycle).removeObserver(mListener);
-    }
-
-    @Test
-    public void whenChanged_onChangedBeenCalled() {
-        mListener.onChange(false);
-        verify(mListener, times(1)).onChanged(SETTINGS_FIELD);
-    }
-
-    @Test
-    public void whenNotifyChangeBasedOnLifecycle_onStopEvent_onChangedNotCalled() {
-        mListener.notifyChangeBasedOn(mLifecycle);
-        mListener.onStart();
-
-        mListener.onChange(false);
-        verify(mListener, times(1)).onChanged(SETTINGS_FIELD);
-
-        mListener.onStop();
-
-        mListener.onChange(false);
-        verify(mListener, times(1)).onChanged(SETTINGS_FIELD);
-
-        mListener.onStart();
-
-        mListener.onChange(false);
-        verify(mListener, times(2)).onChanged(SETTINGS_FIELD);
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java
deleted file mode 100644
index 6d46f9c..0000000
--- a/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.settings.network;
-
-import static androidx.lifecycle.Lifecycle.Event.ON_START;
-import static androidx.lifecycle.Lifecycle.Event.ON_STOP;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.doReturn;
-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.robolectric.shadow.api.Shadow.extract;
-
-import android.content.Context;
-import android.net.ConnectivityManager;
-import android.os.UserManager;
-import android.provider.Settings;
-import android.provider.Settings.Global;
-import android.telephony.PhoneStateListener;
-import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
-
-import androidx.lifecycle.LifecycleOwner;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceScreen;
-
-import com.android.settings.testutils.shadow.ShadowConnectivityManager;
-import com.android.settings.testutils.shadow.ShadowUserManager;
-import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
-import com.android.settingslib.RestrictedPreference;
-import com.android.settingslib.core.lifecycle.Lifecycle;
-
-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 = {ShadowConnectivityManager.class, ShadowUserManager.class})
-public class MobileNetworkPreferenceControllerTest {
-
-    private Context mContext;
-    @Mock
-    private TelephonyManager mTelephonyManager;
-    @Mock
-    private SubscriptionManager mSubscriptionManager;
-    @Mock
-    private PreferenceScreen mScreen;
-
-    private Lifecycle mLifecycle;
-    private LifecycleOwner mLifecycleOwner;
-    private MobileNetworkPreferenceController mController;
-    private Preference mPreference;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = spy(RuntimeEnvironment.application);
-        mLifecycleOwner = () -> mLifecycle;
-        mLifecycle = new Lifecycle(mLifecycleOwner);
-        when(mContext.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mTelephonyManager);
-        when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager);
-        mPreference = new Preference(mContext);
-        mPreference.setKey(MobileNetworkPreferenceController.KEY_MOBILE_NETWORK_SETTINGS);
-    }
-
-    @Test
-    public void secondaryUser_prefIsNotAvailable() {
-        ShadowUserManager userManager = extract(mContext.getSystemService(UserManager.class));
-        userManager.setIsAdminUser(false);
-        ShadowConnectivityManager connectivityManager =
-                extract(mContext.getSystemService(ConnectivityManager.class));
-        connectivityManager.setNetworkSupported(ConnectivityManager.TYPE_MOBILE, true);
-
-        mController = new MobileNetworkPreferenceController(mContext);
-        assertThat(mController.isAvailable()).isFalse();
-    }
-
-    @Test
-    public void wifiOnly_prefIsNotAvailable() {
-        ShadowUserManager userManager = extract(mContext.getSystemService(UserManager.class));
-        userManager.setIsAdminUser(true);
-        ShadowConnectivityManager connectivityManager =
-                extract(mContext.getSystemService(ConnectivityManager.class));
-        connectivityManager.setNetworkSupported(ConnectivityManager.TYPE_MOBILE, false);
-
-        mController = new MobileNetworkPreferenceController(mContext);
-        assertThat(mController.isAvailable()).isFalse();
-    }
-
-    @Test
-    public void goThroughLifecycle_isAvailable_shouldListenToServiceChange() {
-        mController = spy(new MobileNetworkPreferenceController(mContext));
-        mLifecycle.addObserver(mController);
-        doReturn(true).when(mController).isAvailable();
-
-        mLifecycle.handleLifecycleEvent(ON_START);
-        verify(mTelephonyManager).listen(mController.mPhoneStateListener,
-                PhoneStateListener.LISTEN_SERVICE_STATE);
-
-        mLifecycle.handleLifecycleEvent(ON_STOP);
-        verify(mTelephonyManager).listen(mController.mPhoneStateListener,
-                PhoneStateListener.LISTEN_NONE);
-    }
-
-    @Test
-    public void serviceStateChange_shouldUpdatePrefSummary() {
-        final String testCarrierName = "test";
-        final Preference mPreference = mock(Preference.class);
-        mController = spy(new MobileNetworkPreferenceController(mContext));
-        mLifecycle.addObserver(mController);
-
-        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
-        doReturn(true).when(mController).isAvailable();
-
-        // Display pref and go through lifecycle to set up listener.
-        mController.displayPreference(mScreen);
-        mLifecycle.handleLifecycleEvent(ON_START);
-        verify(mController).onStart();
-        verify(mTelephonyManager).listen(mController.mPhoneStateListener,
-                PhoneStateListener.LISTEN_SERVICE_STATE);
-
-        doReturn(testCarrierName).when(mController).getSummary();
-
-        mController.mPhoneStateListener.onServiceStateChanged(null);
-
-        // Carrier name should be set.
-        verify(mPreference).setSummary(testCarrierName);
-    }
-
-    @Test
-    public void airplaneModeTurnedOn_shouldDisablePreference() {
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Global.AIRPLANE_MODE_ON, 1);
-        mController = spy(new MobileNetworkPreferenceController(mContext));
-        final RestrictedPreference mPreference = new RestrictedPreference(mContext);
-        mController.updateState(mPreference);
-        assertThat(mPreference.isEnabled()).isFalse();
-    }
-
-    @Test
-    public void airplaneModeTurnedOffAndNoUserRestriction_shouldEnablePreference() {
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Global.AIRPLANE_MODE_ON, 0);
-        mController = spy(new MobileNetworkPreferenceController(mContext));
-        final RestrictedPreference mPreference = new RestrictedPreference(mContext);
-        mPreference.setDisabledByAdmin(null);
-        mController.updateState(mPreference);
-        assertThat(mPreference.isEnabled()).isTrue();
-    }
-
-    @Test
-    public void airplaneModeTurnedOffAndHasUserRestriction_shouldDisablePreference() {
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Global.AIRPLANE_MODE_ON, 0);
-        mController = spy(new MobileNetworkPreferenceController(mContext));
-        final RestrictedPreference mPreference = new RestrictedPreference(mContext);
-        mPreference.setDisabledByAdmin(EnforcedAdmin.MULTIPLE_ENFORCED_ADMIN);
-        mController.updateState(mPreference);
-        assertThat(mPreference.isEnabled()).isFalse();
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/network/MobilePlanPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/MobilePlanPreferenceControllerTest.java
deleted file mode 100644
index ab34087..0000000
--- a/tests/robotests/src/com/android/settings/network/MobilePlanPreferenceControllerTest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.network;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-
-import com.android.settings.R;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class MobilePlanPreferenceControllerTest {
-
-    @Test
-    public void testNoProvisionStringFormattedCorrectly() {
-        final String operator = "test_operator";
-        final Context context = RuntimeEnvironment.application;
-        assertThat(context.getString(R.string.mobile_no_provisioning_url, operator, operator))
-                .contains(operator);
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/network/MultiNetworkHeaderControllerTest.java b/tests/robotests/src/com/android/settings/network/MultiNetworkHeaderControllerTest.java
deleted file mode 100644
index 47935d0..0000000
--- a/tests/robotests/src/com/android/settings/network/MultiNetworkHeaderControllerTest.java
+++ /dev/null
@@ -1,180 +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.settings.network;
-
-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.atLeastOnce;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.telephony.SubscriptionManager;
-
-import com.android.settings.wifi.WifiConnectionPreferenceController;
-import com.android.settingslib.core.lifecycle.Lifecycle;
-
-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 java.util.List;
-
-import androidx.lifecycle.LifecycleOwner;
-import androidx.preference.PreferenceCategory;
-import androidx.preference.PreferenceScreen;
-
-@RunWith(RobolectricTestRunner.class)
-public class MultiNetworkHeaderControllerTest {
-    private static final String KEY_HEADER = "multi_network_header";
-    private static final int EXPANDED_CHILDREN_COUNT = 5;
-
-    @Mock
-    private PreferenceScreen mPreferenceScreen;
-    @Mock
-    private PreferenceCategory mPreferenceCategory;
-    @Mock
-    private WifiConnectionPreferenceController mWifiController;
-    @Mock
-    private SubscriptionsPreferenceController mSubscriptionsController;
-    @Mock
-    private SubscriptionManager mSubscriptionManager;
-
-    private Context mContext;
-    private LifecycleOwner mLifecycleOwner;
-    private Lifecycle mLifecycle;
-    private MultiNetworkHeaderController mHeaderController;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = spy(RuntimeEnvironment.application);
-        mLifecycleOwner = () -> mLifecycle;
-        mLifecycle = new Lifecycle(mLifecycleOwner);
-        when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager);
-        when(mPreferenceScreen.findPreference(eq(KEY_HEADER))).thenReturn(mPreferenceCategory);
-        when(mPreferenceCategory.getPreferenceCount()).thenReturn(3);
-        when(mPreferenceScreen.getInitialExpandedChildrenCount()).thenReturn(
-                EXPANDED_CHILDREN_COUNT);
-
-        mHeaderController = spy(new MultiNetworkHeaderController(mContext, KEY_HEADER));
-        doReturn(mWifiController).when(mHeaderController).createWifiController(mLifecycle);
-        doReturn(mSubscriptionsController).when(mHeaderController).createSubscriptionsController(
-                mLifecycle);
-    }
-
-    @Test
-    public void isAvailable_beforeInitIsCalled_notAvailable() {
-        assertThat(mHeaderController.isAvailable()).isFalse();
-    }
-
-    // When calling displayPreference, the header itself should only be visible if the
-    // subscriptions controller says it is available. This is a helper for test cases of this logic.
-    private void displayPreferenceTest(boolean wifiAvailable, boolean subscriptionsAvailable,
-            boolean setVisibleExpectedValue) {
-        when(mWifiController.isAvailable()).thenReturn(wifiAvailable);
-        when(mSubscriptionsController.isAvailable()).thenReturn(subscriptionsAvailable);
-
-        mHeaderController.init(mLifecycle);
-        mHeaderController.displayPreference(mPreferenceScreen);
-        verify(mPreferenceCategory, never()).setVisible(eq(!setVisibleExpectedValue));
-        verify(mPreferenceCategory, atLeastOnce()).setVisible(eq(setVisibleExpectedValue));
-    }
-
-    @Test
-    public void displayPreference_bothNotAvailable_categoryIsNotVisible() {
-        displayPreferenceTest(false, false, false);
-    }
-
-    @Test
-    public void displayPreference_wifiAvailableButNotSubscriptions_categoryIsNotVisible() {
-        displayPreferenceTest(true, false, false);
-    }
-
-    @Test
-    public void displayPreference_subscriptionsAvailableButNotWifi_categoryIsVisible() {
-        displayPreferenceTest(false, true, true);
-    }
-
-    @Test
-    public void displayPreference_bothAvailable_categoryIsVisible() {
-        displayPreferenceTest(true, true, true);
-    }
-
-    @Test
-    public void onChildUpdated_subscriptionsBecameAvailable_categoryIsVisible() {
-        when(mSubscriptionsController.isAvailable()).thenReturn(false);
-        mHeaderController.init(mLifecycle);
-        mHeaderController.displayPreference(mPreferenceScreen);
-
-        when(mSubscriptionsController.isAvailable()).thenReturn(true);
-        mHeaderController.onChildrenUpdated();
-        ArgumentCaptor<Boolean> captor = ArgumentCaptor.forClass(Boolean.class);
-
-        verify(mPreferenceCategory, atLeastOnce()).setVisible(captor.capture());
-        List<Boolean> values = captor.getAllValues();
-        assertThat(values.get(values.size()-1)).isEqualTo(Boolean.TRUE);
-
-        ArgumentCaptor<Integer> expandedCountCaptor = ArgumentCaptor.forClass(Integer.class);
-        verify(mPreferenceScreen).setInitialExpandedChildrenCount(expandedCountCaptor.capture());
-        assertThat(expandedCountCaptor.getValue()).isEqualTo(
-                EXPANDED_CHILDREN_COUNT + mPreferenceCategory.getPreferenceCount());
-    }
-
-    @Test
-    public void onChildUpdated_subscriptionsBecameUnavailable_categoryIsNotVisible() {
-        when(mSubscriptionsController.isAvailable()).thenReturn(true);
-        mHeaderController.init(mLifecycle);
-        mHeaderController.displayPreference(mPreferenceScreen);
-
-        when(mSubscriptionsController.isAvailable()).thenReturn(false);
-        mHeaderController.onChildrenUpdated();
-        ArgumentCaptor<Boolean> captor = ArgumentCaptor.forClass(Boolean.class);
-
-        verify(mPreferenceCategory, atLeastOnce()).setVisible(captor.capture());
-        List<Boolean> values = captor.getAllValues();
-        assertThat(values.get(values.size()-1)).isEqualTo(Boolean.FALSE);
-
-        ArgumentCaptor<Integer> expandedCountCaptor = ArgumentCaptor.forClass(Integer.class);
-        verify(mPreferenceScreen).setInitialExpandedChildrenCount(expandedCountCaptor.capture());
-        assertThat(expandedCountCaptor.getValue()).isEqualTo(EXPANDED_CHILDREN_COUNT);
-    }
-
-    @Test
-    public void onChildUpdated_noExpandedChildCountAndAvailable_doesNotSetExpandedCount() {
-        when(mPreferenceScreen.getInitialExpandedChildrenCount()).thenReturn(Integer.MAX_VALUE);
-
-        when(mSubscriptionsController.isAvailable()).thenReturn(false);
-        mHeaderController.init(mLifecycle);
-        mHeaderController.displayPreference(mPreferenceScreen);
-
-        when(mSubscriptionsController.isAvailable()).thenReturn(true);
-        mHeaderController.onChildrenUpdated();
-
-        verify(mPreferenceScreen, never()).setInitialExpandedChildrenCount(anyInt());
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/network/NetworkDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/network/NetworkDashboardFragmentTest.java
deleted file mode 100644
index e84d286..0000000
--- a/tests/robotests/src/com/android/settings/network/NetworkDashboardFragmentTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.settings.network;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.provider.SearchIndexableResource;
-
-import com.android.settingslib.drawer.CategoryKey;
-
-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 NetworkDashboardFragmentTest {
-
-    private Context mContext;
-
-    private NetworkDashboardFragment mFragment;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-        mFragment = new NetworkDashboardFragment();
-    }
-
-    @Test
-    public void getCategoryKey_isNetwork() {
-        assertThat(mFragment.getCategoryKey()).isEqualTo(CategoryKey.CATEGORY_NETWORK);
-    }
-
-    @Test
-    public void getXmlResourcesToIndex_shouldIncludeFragmentXml() {
-        final List<SearchIndexableResource> indexRes =
-                NetworkDashboardFragment.SEARCH_INDEX_DATA_PROVIDER.getXmlResourcesToIndex(
-                        mContext,
-                        true /* enabled */);
-
-        assertThat(indexRes).hasSize(1);
-        assertThat(indexRes.get(0).xmlResId).isEqualTo(mFragment.getPreferenceScreenResId());
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/network/NetworkScorerPickerPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/NetworkScorerPickerPreferenceControllerTest.java
deleted file mode 100644
index 3593cf7..0000000
--- a/tests/robotests/src/com/android/settings/network/NetworkScorerPickerPreferenceControllerTest.java
+++ /dev/null
@@ -1,130 +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.settings.network;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.content.ComponentName;
-import android.content.Context;
-import android.net.NetworkScoreManager;
-import android.net.NetworkScorerAppData;
-
-import androidx.preference.Preference;
-
-import com.android.settings.R;
-
-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.util.ReflectionHelpers;
-
-import java.util.Collections;
-
-@RunWith(RobolectricTestRunner.class)
-public class NetworkScorerPickerPreferenceControllerTest {
-
-    private static final String TEST_SCORER_PACKAGE = "Test Package";
-    private static final String TEST_SCORER_CLASS = "Test Class";
-    private static final String TEST_SCORER_LABEL = "Test Label";
-
-    private Context mContext;
-    @Mock
-    private NetworkScoreManager mNetworkScorer;
-    private NetworkScorerPickerPreferenceController mController;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-        mController = new NetworkScorerPickerPreferenceController(mContext, "test_key");
-        ReflectionHelpers.setField(mController, "mNetworkScoreManager", mNetworkScorer);
-    }
-
-    @Test
-    public void testIsAvailable_shouldAlwaysReturnTrue() {
-        assertThat(mController.isAvailable()).isTrue();
-    }
-
-    @Test
-    public void updateState_preferenceSetSummaryAsActiveScorerLabel() {
-        ComponentName scorer = new ComponentName(TEST_SCORER_PACKAGE, TEST_SCORER_CLASS);
-        NetworkScorerAppData scorerAppData = new NetworkScorerAppData(
-                0, scorer, TEST_SCORER_LABEL, null /* enableUseOpenWifiActivity */,
-                null /* networkAvailableNotificationChannelId */);
-        when(mNetworkScorer.getAllValidScorers())
-                .thenReturn(Collections.singletonList(scorerAppData));
-        when(mNetworkScorer.getActiveScorer()).thenReturn(scorerAppData);
-        Preference preference = mock(Preference.class);
-
-        mController.updateState(preference);
-
-        verify(preference).setSummary(TEST_SCORER_LABEL);
-    }
-
-    @Test
-    public void updateState_scorersAvailable_noActiveScorer_preferenceSetSummaryToNone() {
-        ComponentName scorer = new ComponentName(TEST_SCORER_PACKAGE, TEST_SCORER_CLASS);
-        NetworkScorerAppData scorerAppData = new NetworkScorerAppData(
-                0, scorer, TEST_SCORER_LABEL, null /* enableUseOpenWifiActivity */,
-                null /* networkAvailableNotificationChannelId */);
-        when(mNetworkScorer.getAllValidScorers())
-                .thenReturn(Collections.singletonList(scorerAppData));
-        when(mNetworkScorer.getActiveScorer()).thenReturn(null);
-        Preference preference = mock(Preference.class);
-
-        mController.updateState(preference);
-
-        verify(preference).setSummary(mContext.getString(
-                R.string.network_scorer_picker_none_preference));
-    }
-
-    @Test
-    public void updateState_scorersAvailable_preferenceEnabled() {
-        ComponentName scorer = new ComponentName(TEST_SCORER_PACKAGE, TEST_SCORER_CLASS);
-        NetworkScorerAppData scorerAppData = new NetworkScorerAppData(
-                0, scorer, TEST_SCORER_LABEL, null /* enableUseOpenWifiActivity */,
-                null /* networkAvailableNotificationChannelId */);
-        when(mNetworkScorer.getAllValidScorers())
-                .thenReturn(Collections.singletonList(scorerAppData));
-
-        Preference preference = mock(Preference.class);
-
-        mController.updateState(preference);
-
-        verify(preference).setEnabled(true);
-    }
-
-    @Test
-    public void updateState_noScorersAvailable_preferenceDisabled() {
-        when(mNetworkScorer.getAllValidScorers())
-                .thenReturn(Collections.emptyList());
-        Preference preference = mock(Preference.class);
-
-        mController.updateState(preference);
-
-        verify(preference).setEnabled(false);
-        verify(preference).setSummary(null);
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/network/SubscriptionUtilTest.java b/tests/robotests/src/com/android/settings/network/SubscriptionUtilTest.java
deleted file mode 100644
index 4ae829f..0000000
--- a/tests/robotests/src/com/android/settings/network/SubscriptionUtilTest.java
+++ /dev/null
@@ -1,117 +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.settings.network;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.telephony.SubscriptionInfo;
-import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
-
-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 java.util.Arrays;
-import java.util.List;
-
-@RunWith(RobolectricTestRunner.class)
-public class SubscriptionUtilTest {
-    @Mock
-    private Context mContext;
-    @Mock
-    private SubscriptionManager mSubMgr;
-    @Mock
-    private TelephonyManager mTelMgr;
-
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        doReturn(mSubMgr).when(mContext).getSystemService(SubscriptionManager.class);
-        doReturn(mTelMgr).when(mContext).getSystemService(TelephonyManager.class);
-        when(mTelMgr.getUiccSlotsInfo()).thenReturn(null);
-    }
-
-    @Test
-    public void getAvailableSubscriptions_nullInfoFromSubscriptionManager_nonNullResult() {
-        when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(null);
-        final List<SubscriptionInfo> subs = SubscriptionUtil.getAvailableSubscriptions(mContext);
-        assertThat(subs).isNotNull();
-        assertThat(subs).isEmpty();
-    }
-
-    @Test
-    public void getAvailableSubscriptions_oneSubscription_oneResult() {
-        final SubscriptionInfo info = mock(SubscriptionInfo.class);
-        when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(Arrays.asList(info));
-        final List<SubscriptionInfo> subs = SubscriptionUtil.getAvailableSubscriptions(mContext);
-        assertThat(subs).isNotNull();
-        assertThat(subs).hasSize(1);
-    }
-
-    @Test
-    public void getAvailableSubscriptions_twoSubscriptions_twoResults() {
-        final SubscriptionInfo info1 = mock(SubscriptionInfo.class);
-        final SubscriptionInfo info2 = mock(SubscriptionInfo.class);
-        when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(Arrays.asList(info1, info2));
-        final List<SubscriptionInfo> subs = SubscriptionUtil.getAvailableSubscriptions(mContext);
-        assertThat(subs).isNotNull();
-        assertThat(subs).hasSize(2);
-    }
-
-    @Test
-    public void getActiveSubscriptions_nullInfoFromSubscriptionManager_nonNullResult() {
-        when(mSubMgr.getActiveSubscriptionInfoList()).thenReturn(null);
-        final List<SubscriptionInfo> subs = SubscriptionUtil.getActiveSubscriptions(mSubMgr);
-        assertThat(subs).isNotNull();
-        assertThat(subs).isEmpty();
-    }
-
-    @Test
-    public void getActiveSubscriptions_oneSubscription_oneResult() {
-        final SubscriptionInfo info = mock(SubscriptionInfo.class);
-        when(mSubMgr.getActiveSubscriptionInfoList()).thenReturn(Arrays.asList(info));
-        final List<SubscriptionInfo> subs = SubscriptionUtil.getActiveSubscriptions(mSubMgr);
-        assertThat(subs).isNotNull();
-        assertThat(subs).hasSize(1);
-    }
-
-    @Test
-    public void getActiveSubscriptions_twoSubscriptions_twoResults() {
-        final SubscriptionInfo info1 = mock(SubscriptionInfo.class);
-        final SubscriptionInfo info2 = mock(SubscriptionInfo.class);
-        when(mSubMgr.getActiveSubscriptionInfoList()).thenReturn(
-                Arrays.asList(info1, info2));
-        final List<SubscriptionInfo> subs = SubscriptionUtil.getActiveSubscriptions(mSubMgr);
-        assertThat(subs).isNotNull();
-        assertThat(subs).hasSize(2);
-    }
-
-    @Test
-    public void isInactiveInsertedPSim_nullSubInfo_doesNotCrash() {
-        assertThat(SubscriptionUtil.isInactiveInsertedPSim(null)).isFalse();
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/network/SubscriptionsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/SubscriptionsPreferenceControllerTest.java
deleted file mode 100644
index ea2212c..0000000
--- a/tests/robotests/src/com/android/settings/network/SubscriptionsPreferenceControllerTest.java
+++ /dev/null
@@ -1,553 +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.settings.network;
-
-import static android.telephony.SignalStrength.NUM_SIGNAL_STRENGTH_BINS;
-import static android.telephony.SignalStrength.SIGNAL_STRENGTH_GOOD;
-import static android.telephony.SignalStrength.SIGNAL_STRENGTH_GREAT;
-import static android.telephony.SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
-import static android.telephony.SignalStrength.SIGNAL_STRENGTH_POOR;
-import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID;
-
-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.eq;
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.content.Intent;
-import android.graphics.drawable.Drawable;
-import android.net.ConnectivityManager;
-import android.net.Network;
-import android.net.NetworkCapabilities;
-import android.provider.Settings;
-import android.telephony.SignalStrength;
-import android.telephony.SubscriptionInfo;
-import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
-
-import androidx.lifecycle.LifecycleOwner;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceCategory;
-import androidx.preference.PreferenceScreen;
-
-import com.android.settings.R;
-import com.android.settingslib.core.lifecycle.Lifecycle;
-
-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.shadows.ShadowSubscriptionManager;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = ShadowSubscriptionManager.class)
-public class SubscriptionsPreferenceControllerTest {
-    private static final String KEY = "preference_group";
-
-    @Mock
-    private PreferenceScreen mScreen;
-    @Mock
-    private PreferenceCategory mPreferenceCategory;
-    @Mock
-    private SubscriptionManager mSubscriptionManager;
-    @Mock
-    private ConnectivityManager mConnectivityManager;
-    @Mock
-    private TelephonyManager mTelephonyManager;
-    @Mock
-    private Network mActiveNetwork;
-    @Mock
-    private NetworkCapabilities mCapabilities;
-    @Mock
-    private Drawable mSignalStrengthIcon;
-
-    private Context mContext;
-    private LifecycleOwner mLifecycleOwner;
-    private Lifecycle mLifecycle;
-    private SubscriptionsPreferenceController mController;
-    private int mOnChildUpdatedCount;
-    private SubscriptionsPreferenceController.UpdateListener mUpdateListener;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = spy(RuntimeEnvironment.application);
-        mLifecycleOwner = () -> mLifecycle;
-        mLifecycle = new Lifecycle(mLifecycleOwner);
-        when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager);
-        when(mContext.getSystemService(ConnectivityManager.class)).thenReturn(mConnectivityManager);
-        when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
-        when(mConnectivityManager.getActiveNetwork()).thenReturn(mActiveNetwork);
-        when(mConnectivityManager.getNetworkCapabilities(mActiveNetwork)).thenReturn(mCapabilities);
-        when(mTelephonyManager.createForSubscriptionId(anyInt())).thenReturn(mTelephonyManager);
-        when(mScreen.findPreference(eq(KEY))).thenReturn(mPreferenceCategory);
-        when(mPreferenceCategory.getContext()).thenReturn(mContext);
-        mOnChildUpdatedCount = 0;
-        mUpdateListener = () -> mOnChildUpdatedCount++;
-
-        mController = spy(
-                new SubscriptionsPreferenceController(mContext, mLifecycle, mUpdateListener,
-                        KEY, 5));
-        doReturn(true).when(mController).isSubscriptionCanBeDisplayed(any(), anyInt());
-        doReturn(mSignalStrengthIcon).when(mController).getIcon(anyInt(), anyInt(), anyBoolean());
-    }
-
-    @After
-    public void tearDown() {
-        SubscriptionUtil.setActiveSubscriptionsForTesting(null);
-    }
-
-    @Test
-    public void isAvailable_oneSubscription_availableFalse() {
-        setupMockSubscriptions(1);
-        assertThat(mController.isAvailable()).isFalse();
-    }
-
-    @Test
-    public void isAvailable_twoSubscriptions_availableTrue() {
-        setupMockSubscriptions(2);
-        assertThat(mController.isAvailable()).isTrue();
-    }
-
-    @Test
-    public void isAvailable_fiveSubscriptions_availableTrue() {
-        setupMockSubscriptions(5);
-        assertThat(mController.isAvailable()).isTrue();
-    }
-
-    @Test
-    public void isAvailable_airplaneModeOn_availableFalse() {
-        setupMockSubscriptions(2);
-        assertThat(mController.isAvailable()).isTrue();
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 1);
-        assertThat(mController.isAvailable()).isFalse();
-    }
-
-    @Test
-    public void onAirplaneModeChanged_airplaneModeTurnedOn_eventFired() {
-        setupMockSubscriptions(2);
-        mController.onResume();
-        mController.displayPreference(mScreen);
-        assertThat(mController.isAvailable()).isTrue();
-
-        final int updateCountBeforeModeChange = mOnChildUpdatedCount;
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 1);
-        mController.onAirplaneModeChanged(true);
-        assertThat(mController.isAvailable()).isFalse();
-        assertThat(mOnChildUpdatedCount).isEqualTo(updateCountBeforeModeChange + 1);
-    }
-
-    @Test
-    public void onAirplaneModeChanged_airplaneModeTurnedOff_eventFired() {
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 1);
-        setupMockSubscriptions(2);
-        mController.onResume();
-        mController.displayPreference(mScreen);
-        assertThat(mController.isAvailable()).isFalse();
-
-        final int updateCountBeforeModeChange = mOnChildUpdatedCount;
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 0);
-        mController.onAirplaneModeChanged(false);
-        assertThat(mController.isAvailable()).isTrue();
-        assertThat(mOnChildUpdatedCount).isEqualTo(updateCountBeforeModeChange + 1);
-    }
-
-    @Test
-    public void onSubscriptionsChanged_countBecameTwo_eventFired() {
-        final List<SubscriptionInfo> subs = setupMockSubscriptions(2);
-        SubscriptionUtil.setActiveSubscriptionsForTesting(subs.subList(0, 1));
-        mController.onResume();
-        mController.displayPreference(mScreen);
-        assertThat(mController.isAvailable()).isFalse();
-
-        final int updateCountBeforeSubscriptionChange = mOnChildUpdatedCount;
-        SubscriptionUtil.setActiveSubscriptionsForTesting(subs);
-        mController.onSubscriptionsChanged();
-        assertThat(mController.isAvailable()).isTrue();
-        assertThat(mOnChildUpdatedCount).isEqualTo(updateCountBeforeSubscriptionChange + 1);
-    }
-
-    @Test
-    public void onSubscriptionsChanged_countBecameOne_eventFiredAndPrefsRemoved() {
-        final List<SubscriptionInfo> subs = setupMockSubscriptions(2);
-        mController.onResume();
-        mController.displayPreference(mScreen);
-        assertThat(mController.isAvailable()).isTrue();
-        verify(mPreferenceCategory, times(2)).addPreference(any(Preference.class));
-
-        final int updateCountBeforeSubscriptionChange = mOnChildUpdatedCount;
-        SubscriptionUtil.setActiveSubscriptionsForTesting(subs.subList(0, 1));
-        mController.onSubscriptionsChanged();
-        assertThat(mController.isAvailable()).isFalse();
-        assertThat(mOnChildUpdatedCount).isEqualTo(updateCountBeforeSubscriptionChange + 1);
-
-        verify(mPreferenceCategory, times(2)).removePreference(any(Preference.class));
-    }
-
-    @Test
-    public void onSubscriptionsChanged_subscriptionReplaced_preferencesChanged() {
-        final List<SubscriptionInfo> subs = setupMockSubscriptions(3);
-
-        // Start out with only sub1 and sub2.
-        SubscriptionUtil.setActiveSubscriptionsForTesting(subs.subList(0, 2));
-        mController.onResume();
-        mController.displayPreference(mScreen);
-        final ArgumentCaptor<Preference> captor = ArgumentCaptor.forClass(Preference.class);
-        verify(mPreferenceCategory, times(2)).addPreference(captor.capture());
-        assertThat(captor.getAllValues().size()).isEqualTo(2);
-        assertThat(captor.getAllValues().get(0).getTitle()).isEqualTo("sub1");
-        assertThat(captor.getAllValues().get(1).getTitle()).isEqualTo("sub2");
-
-        // Now replace sub2 with sub3, and make sure the old preference was removed and the new
-        // preference was added.
-        final int updateCountBeforeSubscriptionChange = mOnChildUpdatedCount;
-        SubscriptionUtil.setActiveSubscriptionsForTesting(Arrays.asList(subs.get(0), subs.get(2)));
-        mController.onSubscriptionsChanged();
-        assertThat(mController.isAvailable()).isTrue();
-        assertThat(mOnChildUpdatedCount).isEqualTo(updateCountBeforeSubscriptionChange + 1);
-
-        verify(mPreferenceCategory).removePreference(captor.capture());
-        assertThat(captor.getValue().getTitle()).isEqualTo("sub2");
-        verify(mPreferenceCategory, times(3)).addPreference(captor.capture());
-        assertThat(captor.getValue().getTitle()).isEqualTo("sub3");
-    }
-
-
-    /**
-     * Helper to create a specified number of subscriptions, display them, and then click on one and
-     * verify that the intent fires and has the right subscription id extra.
-     *
-     * @param subscriptionCount the number of subscriptions
-     * @param selectedPrefIndex index of the subscription to click on
-     */
-    private void runPreferenceClickTest(final int subscriptionCount, final int selectedPrefIndex) {
-        final List<SubscriptionInfo> subs = setupMockSubscriptions(subscriptionCount);
-        final ArgumentCaptor<Preference> prefCaptor = ArgumentCaptor.forClass(Preference.class);
-        mController.displayPreference(mScreen);
-        verify(mPreferenceCategory, times(subscriptionCount)).addPreference(prefCaptor.capture());
-        final List<Preference> prefs = prefCaptor.getAllValues();
-        final Preference pref = prefs.get(selectedPrefIndex);
-        final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
-        doNothing().when(mContext).startActivity(intentCaptor.capture());
-        pref.getOnPreferenceClickListener().onPreferenceClick(pref);
-        final Intent intent = intentCaptor.getValue();
-        assertThat(intent).isNotNull();
-        assertThat(intent.hasExtra(Settings.EXTRA_SUB_ID)).isTrue();
-        final int subIdFromIntent = intent.getIntExtra(Settings.EXTRA_SUB_ID,
-                INVALID_SUBSCRIPTION_ID);
-        assertThat(subIdFromIntent).isEqualTo(
-                subs.get(selectedPrefIndex).getSubscriptionId());
-    }
-
-    @Test
-    public void twoPreferences_firstPreferenceClicked_correctIntentFires() {
-        runPreferenceClickTest(2, 0);
-    }
-
-    @Test
-    public void twoPreferences_secondPreferenceClicked_correctIntentFires() {
-        runPreferenceClickTest(2, 1);
-    }
-
-    @Test
-    public void threePreferences_secondPreferenceClicked_correctIntentFires() {
-        runPreferenceClickTest(3, 1);
-    }
-
-    @Test
-    public void threePreferences_thirdPreferenceClicked_correctIntentFires() {
-        runPreferenceClickTest(3, 2);
-    }
-
-    @Test
-    public void getSummary_twoSubsOneDefaultForEverythingDataActive() {
-        setupMockSubscriptions(2);
-
-        ShadowSubscriptionManager.setDefaultSmsSubscriptionId(11);
-        ShadowSubscriptionManager.setDefaultVoiceSubscriptionId(11);
-        when(mTelephonyManager.isDataEnabled()).thenReturn(true);
-        when(mCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)).thenReturn(true);
-
-        assertThat(mController.getSummary(11, true)).isEqualTo(
-                mContext.getString(R.string.default_for_calls_and_sms) + System.lineSeparator()
-                        + mContext.getString(R.string.mobile_data_active));
-
-        assertThat(mController.getSummary(22, false)).isEqualTo(
-                mContext.getString(R.string.subscription_available));
-    }
-
-    @Test
-    public void getSummary_twoSubsOneDefaultForEverythingDataNotActive() {
-        setupMockSubscriptions(2, 1, true);
-
-        ShadowSubscriptionManager.setDefaultSmsSubscriptionId(1);
-        ShadowSubscriptionManager.setDefaultVoiceSubscriptionId(1);
-
-        assertThat(mController.getSummary(1, true)).isEqualTo(
-                mContext.getString(R.string.default_for_calls_and_sms) + System.lineSeparator()
-                        + mContext.getString(R.string.default_for_mobile_data));
-
-        assertThat(mController.getSummary(2, false)).isEqualTo(
-                mContext.getString(R.string.subscription_available));
-    }
-
-    @Test
-    public void getSummary_twoSubsOneDefaultForEverythingDataDisabled() {
-        setupMockSubscriptions(2);
-
-        ShadowSubscriptionManager.setDefaultVoiceSubscriptionId(1);
-        ShadowSubscriptionManager.setDefaultSmsSubscriptionId(1);
-
-        assertThat(mController.getSummary(1, true)).isEqualTo(
-                mContext.getString(R.string.default_for_calls_and_sms) + System.lineSeparator()
-                        + mContext.getString(R.string.mobile_data_off));
-
-        assertThat(mController.getSummary(2, false)).isEqualTo(
-                mContext.getString(R.string.subscription_available));
-    }
-
-    @Test
-    public void getSummary_twoSubsOneForCallsAndDataOneForSms() {
-        setupMockSubscriptions(2, 1, true);
-
-        ShadowSubscriptionManager.setDefaultSmsSubscriptionId(2);
-        ShadowSubscriptionManager.setDefaultVoiceSubscriptionId(1);
-
-        assertThat(mController.getSummary(1, true)).isEqualTo(
-                mContext.getString(R.string.default_for_calls) + System.lineSeparator()
-                        + mContext.getString(R.string.default_for_mobile_data));
-
-        assertThat(mController.getSummary(2, false)).isEqualTo(
-                mContext.getString(R.string.default_for_sms));
-    }
-
-    @Test
-    public void setIcon_nullStrength_noCrash() {
-        final List<SubscriptionInfo> subs = setupMockSubscriptions(2);
-        setMockSubSignalStrength(subs, 0, -1);
-        final Preference pref = mock(Preference.class);
-
-        mController.setIcon(pref, 1, true /* isDefaultForData */);
-        verify(mController).getIcon(eq(0), eq(NUM_SIGNAL_STRENGTH_BINS), eq(true));
-    }
-
-    @Test
-    public void setIcon_noSignal_correctLevels() {
-        final List<SubscriptionInfo> subs = setupMockSubscriptions(2, 1, true);
-        setMockSubSignalStrength(subs, 0, SIGNAL_STRENGTH_NONE_OR_UNKNOWN);
-        setMockSubSignalStrength(subs, 1, SIGNAL_STRENGTH_NONE_OR_UNKNOWN);
-        setMockSubDataEnabled(subs, 0, true);
-        final Preference pref = mock(Preference.class);
-
-        mController.setIcon(pref, 1, true /* isDefaultForData */);
-        verify(mController).getIcon(eq(0), eq(NUM_SIGNAL_STRENGTH_BINS), eq(false));
-
-        mController.setIcon(pref, 2, false /* isDefaultForData */);
-        verify(mController).getIcon(eq(0), eq(NUM_SIGNAL_STRENGTH_BINS), eq(true));
-    }
-
-    @Test
-    public void setIcon_noSignal_withInflation_correctLevels() {
-        final List<SubscriptionInfo> subs = setupMockSubscriptions(2, 1, true);
-        setMockSubSignalStrength(subs, 0, SIGNAL_STRENGTH_NONE_OR_UNKNOWN);
-        setMockSubSignalStrength(subs, 1, SIGNAL_STRENGTH_NONE_OR_UNKNOWN);
-        final Preference pref = mock(Preference.class);
-        doReturn(true).when(mController).shouldInflateSignalStrength(anyInt());
-
-        mController.setIcon(pref, 1, true /* isDefaultForData */);
-        verify(mController).getIcon(eq(1), eq(NUM_SIGNAL_STRENGTH_BINS + 1), eq(false));
-
-        mController.setIcon(pref, 2, false /* isDefaultForData */);
-        verify(mController).getIcon(eq(1), eq(NUM_SIGNAL_STRENGTH_BINS + 1), eq(true));
-    }
-
-    @Test
-    public void setIcon_greatSignal_correctLevels() {
-        final List<SubscriptionInfo> subs = setupMockSubscriptions(2, 1, true);
-        setMockSubSignalStrength(subs, 0, SIGNAL_STRENGTH_GREAT);
-        setMockSubSignalStrength(subs, 1, SIGNAL_STRENGTH_GREAT);
-        final Preference pref = mock(Preference.class);
-
-        mController.setIcon(pref, 1, true /* isDefaultForData */);
-        verify(mController).getIcon(eq(4), eq(NUM_SIGNAL_STRENGTH_BINS), eq(false));
-
-        mController.setIcon(pref, 2, false /* isDefaultForData */);
-        verify(mController).getIcon(eq(4), eq(NUM_SIGNAL_STRENGTH_BINS), eq(true));
-    }
-
-    @Test
-    public void onSignalStrengthChanged_subTwoGoesFromGoodToGreat_correctLevels() {
-        final List<SubscriptionInfo> subs = setupMockSubscriptions(2);
-        setMockSubSignalStrength(subs, 0, SIGNAL_STRENGTH_POOR);
-        setMockSubSignalStrength(subs, 1, SIGNAL_STRENGTH_GOOD);
-
-        mController.onResume();
-        mController.displayPreference(mScreen);
-
-        // Now change the signal strength for the 2nd subscription from Good to Great
-        setMockSubSignalStrength(subs, 1, SIGNAL_STRENGTH_GREAT);
-        mController.onSignalStrengthChanged();
-
-        final ArgumentCaptor<Integer> level = ArgumentCaptor.forClass(Integer.class);
-        verify(mController, times(4)).getIcon(level.capture(), eq(NUM_SIGNAL_STRENGTH_BINS),
-                eq(true));
-        assertThat(level.getAllValues().get(0)).isEqualTo(1);
-        assertThat(level.getAllValues().get(1)).isEqualTo(3); // sub2, first time
-        assertThat(level.getAllValues().get(2)).isEqualTo(1);
-        assertThat(level.getAllValues().get(3)).isEqualTo(4); // sub2, after change
-    }
-
-    @Test
-    public void displayPreference_mobileDataOff_bothSubsHaveCutOut() {
-        setupMockSubscriptions(2, 1, false);
-
-        mController.onResume();
-        mController.displayPreference(mScreen);
-
-        verify(mController, times(2)).getIcon(eq(SIGNAL_STRENGTH_GOOD),
-                eq(NUM_SIGNAL_STRENGTH_BINS), eq(true));
-    }
-
-    @Test
-    public void displayPreference_mobileDataOn_onlyNonDefaultSubHasCutOut() {
-        final List<SubscriptionInfo> subs = setupMockSubscriptions(2, 1, true);
-        setMockSubSignalStrength(subs, 1, SIGNAL_STRENGTH_POOR);
-
-        mController.onResume();
-        mController.displayPreference(mScreen);
-
-        verify(mController).getIcon(eq(SIGNAL_STRENGTH_GOOD), eq(NUM_SIGNAL_STRENGTH_BINS),
-                eq(false));
-        verify(mController).getIcon(eq(SIGNAL_STRENGTH_POOR), eq(NUM_SIGNAL_STRENGTH_BINS),
-                eq(true));
-    }
-
-    @Test
-    public void displayPreference_subscriptionsWithSameGroupUUID_onlyOneWillBeSeen() {
-        doReturn(false).when(mController).isSubscriptionCanBeDisplayed(any(), eq(3));
-        final List<SubscriptionInfo> subs = setupMockSubscriptions(3);
-        SubscriptionUtil.setActiveSubscriptionsForTesting(subs.subList(0, 3));
-
-        mController.onResume();
-        mController.displayPreference(mScreen);
-
-        verify(mPreferenceCategory, times(2)).addPreference(any(Preference.class));
-    }
-
-    @Test
-    public void onMobileDataEnabledChange_mobileDataTurnedOff_bothSubsHaveCutOut() {
-        final List<SubscriptionInfo> subs = setupMockSubscriptions(2, 1, true);
-
-        mController.onResume();
-        mController.displayPreference(mScreen);
-
-        setMockSubDataEnabled(subs, 0, false);
-        mController.onMobileDataEnabledChange();
-
-        final ArgumentCaptor<Boolean> cutOutCaptor = ArgumentCaptor.forClass(Boolean.class);
-        verify(mController, times(4)).getIcon(eq(SIGNAL_STRENGTH_GOOD),
-                eq(NUM_SIGNAL_STRENGTH_BINS), cutOutCaptor.capture());
-        assertThat(cutOutCaptor.getAllValues().get(0)).isEqualTo(false); // sub1, first time
-        assertThat(cutOutCaptor.getAllValues().get(1)).isEqualTo(true);
-        assertThat(cutOutCaptor.getAllValues().get(2)).isEqualTo(true); // sub1, second time
-        assertThat(cutOutCaptor.getAllValues().get(3)).isEqualTo(true);
-    }
-
-    private List<SubscriptionInfo> setupMockSubscriptions(int count) {
-        return setupMockSubscriptions(count, 0, true);
-    }
-
-    /** Helper method to setup several mock active subscriptions. The generated subscription id's
-     * start at 1.
-     *
-     * @param count How many subscriptions to create
-     * @param defaultDataSubId The subscription id of the default data subscription - pass
-     *                         INVALID_SUBSCRIPTION_ID if there should not be one
-     * @param mobileDataEnabled Whether mobile data should be considered enabled for the default
-     *                          data subscription
-     */
-    private List<SubscriptionInfo> setupMockSubscriptions(int count, int defaultDataSubId,
-            boolean mobileDataEnabled) {
-        if (defaultDataSubId != INVALID_SUBSCRIPTION_ID) {
-            ShadowSubscriptionManager.setDefaultDataSubscriptionId(defaultDataSubId);
-        }
-        final ArrayList<SubscriptionInfo> infos = new ArrayList<>();
-        for (int i = 0; i < count; i++) {
-            final int subscriptionId = i + 1;
-            final SubscriptionInfo info = mock(SubscriptionInfo.class);
-            final TelephonyManager mgrForSub = mock(TelephonyManager.class);
-            final SignalStrength signalStrength = mock(SignalStrength.class);
-
-            if (subscriptionId == defaultDataSubId) {
-                when(mgrForSub.isDataEnabled()).thenReturn(mobileDataEnabled);
-            }
-            when(info.getSubscriptionId()).thenReturn(i + 1);
-            when(info.getDisplayName()).thenReturn("sub" + (i + 1));
-            doReturn(mgrForSub).when(mTelephonyManager).createForSubscriptionId(eq(subscriptionId));
-            when(mgrForSub.getSignalStrength()).thenReturn(signalStrength);
-            when(signalStrength.getLevel()).thenReturn(SIGNAL_STRENGTH_GOOD);
-
-            infos.add(info);
-        }
-        SubscriptionUtil.setActiveSubscriptionsForTesting(infos);
-        return infos;
-    }
-
-    /**
-     * Helper method to set the signal strength returned for a mock subscription
-     * @param subs The list of subscriptions
-     * @param index The index in of the subscription in |subs| to change
-     * @param level The signal strength level to return for the subscription. Pass -1 to force
-     *              return of a null SignalStrength object for the subscription.
-     */
-    private void setMockSubSignalStrength(List<SubscriptionInfo> subs, int index, int level) {
-        final TelephonyManager mgrForSub =
-                mTelephonyManager.createForSubscriptionId(subs.get(index).getSubscriptionId());
-        if (level == -1) {
-            when(mgrForSub.getSignalStrength()).thenReturn(null);
-        } else {
-            final SignalStrength signalStrength = mgrForSub.getSignalStrength();
-            when(signalStrength.getLevel()).thenReturn(level);
-        }
-    }
-
-    private void setMockSubDataEnabled(List<SubscriptionInfo> subs, int index, boolean enabled) {
-        final TelephonyManager mgrForSub =
-                mTelephonyManager.createForSubscriptionId(subs.get(index).getSubscriptionId());
-        when(mgrForSub.isDataEnabled()).thenReturn(enabled);
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/network/telephony/ApnPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/ApnPreferenceControllerTest.java
deleted file mode 100644
index 566ea8b..0000000
--- a/tests/robotests/src/com/android/settings/network/telephony/ApnPreferenceControllerTest.java
+++ /dev/null
@@ -1,147 +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.settings.network.telephony;
-
-import static com.android.settings.core.BasePreferenceController.AVAILABLE;
-import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.doNothing;
-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.Intent;
-import android.os.PersistableBundle;
-import android.provider.Settings;
-import android.telephony.CarrierConfigManager;
-import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
-
-import com.android.settings.network.apn.ApnSettings;
-import com.android.settingslib.RestrictedPreference;
-
-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;
-
-@RunWith(RobolectricTestRunner.class)
-public class ApnPreferenceControllerTest {
-    private static final int SUB_ID = 2;
-
-    @Mock
-    private TelephonyManager mTelephonyManager;
-    @Mock
-    private TelephonyManager mInvalidTelephonyManager;
-    @Mock
-    private SubscriptionManager mSubscriptionManager;
-    @Mock
-    private CarrierConfigManager mCarrierConfigManager;
-
-    private ApnPreferenceController mController;
-    private RestrictedPreference mPreference;
-    private Context mContext;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mContext = spy(RuntimeEnvironment.application);
-        doReturn(mTelephonyManager).when(mContext).getSystemService(Context.TELEPHONY_SERVICE);
-        doReturn(mSubscriptionManager).when(mContext).getSystemService(SubscriptionManager.class);
-        doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(SUB_ID);
-        doReturn(mInvalidTelephonyManager).when(mTelephonyManager).createForSubscriptionId(
-                SubscriptionManager.INVALID_SUBSCRIPTION_ID);
-        doReturn(mCarrierConfigManager).when(mContext).getSystemService(CarrierConfigManager.class);
-
-        mPreference = new RestrictedPreference(mContext);
-        mController = new ApnPreferenceController(mContext, "mobile_data");
-        mController.init(SUB_ID);
-        mController.setPreference(mPreference);
-        mController.mCarrierConfigManager = mCarrierConfigManager;
-        mPreference.setKey(mController.getPreferenceKey());
-    }
-
-    @Test
-    public void getAvailabilityStatus_apnSettingsNotSupported_returnUnavailable() {
-        doReturn(TelephonyManager.PHONE_TYPE_CDMA).when(mTelephonyManager).getPhoneType();
-        final PersistableBundle bundle = new PersistableBundle();
-        bundle.putBoolean(CarrierConfigManager.KEY_SHOW_APN_SETTING_CDMA_BOOL, false);
-        doReturn(bundle).when(mCarrierConfigManager).getConfigForSubId(SUB_ID);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
-    }
-
-    @Test
-    public void getAvailabilityStatus_apnSettingsSupportedWithCDMA_returnAvailable() {
-        doReturn(TelephonyManager.PHONE_TYPE_CDMA).when(mTelephonyManager).getPhoneType();
-        final PersistableBundle bundle = new PersistableBundle();
-        bundle.putBoolean(CarrierConfigManager.KEY_SHOW_APN_SETTING_CDMA_BOOL, true);
-        doReturn(bundle).when(mCarrierConfigManager).getConfigForSubId(SUB_ID);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
-    }
-
-    @Test
-    public void getAvailabilityStatus_apnSettingsSupportedWithGsm_returnAvailable() {
-        doReturn(TelephonyManager.PHONE_TYPE_GSM).when(mTelephonyManager).getPhoneType();
-        final PersistableBundle bundle = new PersistableBundle();
-        bundle.putBoolean(CarrierConfigManager.KEY_APN_EXPAND_BOOL, true);
-        doReturn(bundle).when(mCarrierConfigManager).getConfigForSubId(SUB_ID);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
-    }
-
-    @Test
-    public void getAvailabilityStatus_carrierConfigNull_returnUnavailable() {
-        doReturn(TelephonyManager.PHONE_TYPE_GSM).when(mTelephonyManager).getPhoneType();
-        when(mCarrierConfigManager.getConfigForSubId(SUB_ID)).thenReturn(null);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
-    }
-
-
-    @Test
-    public void getAvailabilityStatus_hideCarrierNetworkSettings_returnUnavailable() {
-        doReturn(TelephonyManager.PHONE_TYPE_GSM).when(mTelephonyManager).getPhoneType();
-        final PersistableBundle bundle = new PersistableBundle();
-        bundle.putBoolean(CarrierConfigManager.KEY_APN_EXPAND_BOOL, true);
-        bundle.putBoolean(CarrierConfigManager.KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL, true);
-        doReturn(bundle).when(mCarrierConfigManager).getConfigForSubId(SUB_ID);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
-    }
-
-    @Test
-    public void handPreferenceTreeClick_fireIntent() {
-        ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
-        doNothing().when(mContext).startActivity(captor.capture());
-
-        mController.handlePreferenceTreeClick(mPreference);
-
-        final Intent intent = captor.getValue();
-        assertThat(intent.getAction()).isEqualTo(Settings.ACTION_APN_SETTINGS);
-        assertThat(intent.getIntExtra(ApnSettings.SUB_ID, 0)).isEqualTo(SUB_ID);
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/network/telephony/CarrierSettingsVersionPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/CarrierSettingsVersionPreferenceControllerTest.java
deleted file mode 100644
index c8ce6c1..0000000
--- a/tests/robotests/src/com/android/settings/network/telephony/CarrierSettingsVersionPreferenceControllerTest.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.settings.network.telephony;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.os.PersistableBundle;
-import android.telephony.CarrierConfigManager;
-
-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.shadows.ShadowCarrierConfigManager;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = ShadowCarrierConfigManager.class)
-public class CarrierSettingsVersionPreferenceControllerTest {
-
-    private ShadowCarrierConfigManager mCarrierConfigManager;
-    private CarrierSettingsVersionPreferenceController mController;
-    private int mSubscriptionId = 1234;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        final Context context = RuntimeEnvironment.application;
-        mController = new CarrierSettingsVersionPreferenceController(context, "mock_key");
-        mController.init(mSubscriptionId);
-        mCarrierConfigManager = Shadows.shadowOf(
-                context.getSystemService(CarrierConfigManager.class));
-    }
-
-    @Test
-    public void getSummary_nullConfig_noCrash() {
-        mCarrierConfigManager.setConfigForSubId(mSubscriptionId, null);
-        assertThat(mController.getSummary()).isNull();
-    }
-
-    @Test
-    public void getSummary_nullVersionString_noCrash() {
-        mCarrierConfigManager.setConfigForSubId(mSubscriptionId, new PersistableBundle());
-        assertThat(mController.getSummary()).isNull();
-    }
-
-    @Test
-    public void getSummary_hasVersionString_correctSummary() {
-        final PersistableBundle bundle = new PersistableBundle();
-        bundle.putString(CarrierConfigManager.KEY_CARRIER_CONFIG_VERSION_STRING,
-                "test_version_123");
-        mCarrierConfigManager.setConfigForSubId(mSubscriptionId, bundle);
-        assertThat(mController.getSummary()).isEqualTo("test_version_123");
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/network/telephony/ContactDiscoveryPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/ContactDiscoveryPreferenceControllerTest.java
index 3d54cfb..fd5ed37 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/ContactDiscoveryPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/ContactDiscoveryPreferenceControllerTest.java
@@ -159,7 +159,9 @@
     }
 
     private void setRcsPresenceConfig(boolean isEnabled) {
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_USE_RCS_PRESENCE_BOOL, isEnabled);
+        mCarrierConfig.putBoolean(
+                CarrierConfigManager.Ims.KEY_RCS_BULK_CAPABILITY_EXCHANGE_BOOL,
+                isEnabled);
     }
 
     private ContentObserver getUceChangeObserver() {
diff --git a/tests/robotests/src/com/android/settings/network/telephony/DataServiceSetupPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/DataServiceSetupPreferenceControllerTest.java
deleted file mode 100644
index 3eb3caf..0000000
--- a/tests/robotests/src/com/android/settings/network/telephony/DataServiceSetupPreferenceControllerTest.java
+++ /dev/null
@@ -1,135 +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.settings.network.telephony;
-
-import static com.android.settings.core.BasePreferenceController.AVAILABLE;
-import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.spy;
-
-import android.content.Context;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.PersistableBundle;
-import android.provider.Settings;
-import android.telephony.CarrierConfigManager;
-import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
-import android.text.TextUtils;
-
-import androidx.preference.Preference;
-
-import com.android.settingslib.RestrictedPreference;
-
-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;
-
-@RunWith(RobolectricTestRunner.class)
-public class DataServiceSetupPreferenceControllerTest {
-    private static final int SUB_ID = 2;
-
-    private static final String SETUP_URL = "url://tmp_url:^1";
-
-    @Mock
-    private TelephonyManager mTelephonyManager;
-    @Mock
-    private TelephonyManager mInvalidTelephonyManager;
-    @Mock
-    private CarrierConfigManager mCarrierConfigManager;
-
-    private PersistableBundle mCarrierConfig;
-    private DataServiceSetupPreferenceController mController;
-    private Preference mPreference;
-    private Context mContext;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mContext = spy(RuntimeEnvironment.application);
-        doReturn(mTelephonyManager).when(mContext).getSystemService(Context.TELEPHONY_SERVICE);
-        doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(SUB_ID);
-        doReturn(mInvalidTelephonyManager).when(mTelephonyManager).createForSubscriptionId(
-                SubscriptionManager.INVALID_SUBSCRIPTION_ID);
-        doReturn(mCarrierConfigManager).when(mContext).getSystemService(CarrierConfigManager.class);
-        Settings.Global.putString(mContext.getContentResolver(),
-                Settings.Global.SETUP_PREPAID_DATA_SERVICE_URL, SETUP_URL);
-
-        mCarrierConfig = new PersistableBundle();
-        doReturn(mCarrierConfig).when(mCarrierConfigManager).getConfigForSubId(SUB_ID);
-
-        mPreference = new RestrictedPreference(mContext);
-        mController = new DataServiceSetupPreferenceController(mContext, "data_service_setup");
-        mController.init(SUB_ID);
-        mPreference.setKey(mController.getPreferenceKey());
-    }
-
-    @Test
-    public void getAvailabilityStatus_allConfigOn_returnAvailable() {
-        doReturn(true).when(mTelephonyManager).isLteCdmaEvdoGsmWcdmaEnabled();
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL,
-                false);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
-    }
-
-    @Test
-    public void getAvailabilityStatus_missUrl_returnUnavailable() {
-        Settings.Global.putString(mContext.getContentResolver(),
-                Settings.Global.SETUP_PREPAID_DATA_SERVICE_URL, "");
-        doReturn(true).when(mTelephonyManager).isLteCdmaEvdoGsmWcdmaEnabled();
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL,
-                false);
-
-        mController = new DataServiceSetupPreferenceController(mContext, "data_service_setup");
-        mController.init(SUB_ID);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
-    }
-
-    @Test
-    public void getAvailabilityStatus_notCdma_returnUnavailable() {
-        doReturn(false).when(mTelephonyManager).isLteCdmaEvdoGsmWcdmaEnabled();
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL,
-                false);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
-    }
-
-    @Test
-    public void handlePreferenceTreeClick_startActivity() {
-        ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
-        doNothing().when(mContext).startActivity(captor.capture());
-
-        mController.handlePreferenceTreeClick(mPreference);
-
-        final Intent intent = captor.getValue();
-        assertThat(intent.getAction()).isEqualTo(Intent.ACTION_VIEW);
-        assertThat(intent.getData()).isEqualTo(
-                Uri.parse(TextUtils.expandTemplate(SETUP_URL, "").toString()));
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/network/telephony/DisableSimFooterPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/DisableSimFooterPreferenceControllerTest.java
deleted file mode 100644
index fa48ba5..0000000
--- a/tests/robotests/src/com/android/settings/network/telephony/DisableSimFooterPreferenceControllerTest.java
+++ /dev/null
@@ -1,91 +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.settings.network.telephony;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.telephony.SubscriptionInfo;
-import android.telephony.SubscriptionManager;
-
-import com.android.settings.network.SubscriptionUtil;
-
-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;
-
-@RunWith(RobolectricTestRunner.class)
-public class DisableSimFooterPreferenceControllerTest {
-    private static final String PREF_KEY = "pref_key";
-    private static final int SUB_ID = 111;
-
-    @Mock
-    private SubscriptionInfo mInfo;
-
-    private Context mContext;
-    @Mock
-    private SubscriptionManager mSubscriptionManager;
-    private DisableSimFooterPreferenceController mController;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = spy(RuntimeEnvironment.application);
-        doReturn(mSubscriptionManager).when(mContext).getSystemService(SubscriptionManager.class);
-        when(mInfo.getSubscriptionId()).thenReturn(SUB_ID);
-        SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(mInfo));
-        mController = new DisableSimFooterPreferenceController(mContext, PREF_KEY);
-    }
-
-    @Test
-    public void isAvailable_noInit_notAvailable() {
-        assertThat(mController.isAvailable()).isFalse();
-    }
-
-    @Test
-    public void isAvailable_eSIM_notAvailable() {
-        when(mInfo.isEmbedded()).thenReturn(true);
-        mController.init(SUB_ID);
-        assertThat(mController.isAvailable()).isFalse();
-    }
-
-    @Test
-    public void isAvailable_pSIM_available_cannot_disable_pSIM() {
-        when(mInfo.isEmbedded()).thenReturn(false);
-        mController.init(SUB_ID);
-        doReturn(false).when(mSubscriptionManager).canDisablePhysicalSubscription();
-        assertThat(mController.isAvailable()).isTrue();
-    }
-
-    @Test
-    public void isAvailable_pSIM_available_can_disable_pSIM() {
-        when(mInfo.isEmbedded()).thenReturn(false);
-        mController.init(SUB_ID);
-        doReturn(true).when(mSubscriptionManager).canDisablePhysicalSubscription();
-        assertThat(mController.isAvailable()).isFalse();
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/network/telephony/Enhanced4gLteSliceHelperTest.java b/tests/robotests/src/com/android/settings/network/telephony/Enhanced4gLteSliceHelperTest.java
deleted file mode 100644
index 416e2f0..0000000
--- a/tests/robotests/src/com/android/settings/network/telephony/Enhanced4gLteSliceHelperTest.java
+++ /dev/null
@@ -1,294 +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.settings.network.telephony;
-
-import static android.app.slice.Slice.EXTRA_TOGGLE_STATE;
-import static android.app.slice.Slice.HINT_TITLE;
-import static android.app.slice.SliceItem.FORMAT_TEXT;
-
-import static com.android.settings.Utils.SETTINGS_PACKAGE_NAME;
-import static com.google.common.truth.Truth.assertThat;
-
-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 static org.mockito.Mockito.when;
-
-import android.app.PendingIntent;
-import android.content.Context;
-import android.content.Intent;
-import android.telephony.CarrierConfigManager;
-import android.telephony.SubscriptionManager;
-import android.telephony.ims.ProvisioningManager;
-
-import androidx.slice.Slice;
-import androidx.slice.SliceItem;
-import androidx.slice.SliceMetadata;
-import androidx.slice.SliceProvider;
-import androidx.slice.core.SliceAction;
-import androidx.slice.core.SliceQuery;
-import androidx.slice.widget.SliceLiveData;
-
-import com.android.settings.R;
-import com.android.settings.network.ims.MockVolteQueryImsState;
-import com.android.settings.slices.CustomSliceRegistry;
-import com.android.settings.slices.SettingsSliceProvider;
-import com.android.settings.slices.SliceBroadcastReceiver;
-import com.android.settings.slices.SlicesFeatureProvider;
-import com.android.settings.testutils.FakeFeatureFactory;
-
-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.shadow.api.Shadow;
-import org.robolectric.shadows.ShadowSubscriptionManager;
-
-import java.util.List;
-
-@RunWith(RobolectricTestRunner.class)
-public class Enhanced4gLteSliceHelperTest {
-    private static final int SUB_ID = 1;
-
-    @Mock
-    private CarrierConfigManager mMockCarrierConfigManager;
-
-    @Mock
-    private ProvisioningManager mProvisioningManager;
-
-    private ShadowSubscriptionManager mShadowSubscriptionManager;
-    private MockVolteQueryImsState mQueryImsState;
-
-    private Context mContext;
-    private FakeEnhanced4gLteSliceHelper mEnhanced4gLteSliceHelper;
-    private SettingsSliceProvider mProvider;
-    private SliceBroadcastReceiver mReceiver;
-    private FakeFeatureFactory mFeatureFactory;
-    private SlicesFeatureProvider mSlicesFeatureProvider;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-
-        mShadowSubscriptionManager = Shadow.extract(mContext.getSystemService(
-                SubscriptionManager.class));
-        mShadowSubscriptionManager.setDefaultVoiceSubscriptionId(SUB_ID);
-
-        mFeatureFactory = FakeFeatureFactory.setupForTest();
-        mSlicesFeatureProvider = mFeatureFactory.getSlicesFeatureProvider();
-
-        //setup for SettingsSliceProvider tests
-        mProvider = spy(new SettingsSliceProvider());
-        doReturn(mContext).when(mProvider).getContext();
-        mProvider.onCreateSliceProvider();
-
-        //setup for SliceBroadcastReceiver test
-        mReceiver = spy(new SliceBroadcastReceiver());
-
-        mQueryImsState = spy(new MockVolteQueryImsState(mContext, SUB_ID));
-        mQueryImsState.setEnabledByPlatform(true);
-        mQueryImsState.setIsProvisionedOnDevice(true);
-        mQueryImsState.setIsTtyOnVolteEnabled(true);
-        mQueryImsState.setServiceStateReady(true);
-        mQueryImsState.setIsEnabledByUser(true);
-
-        mEnhanced4gLteSliceHelper = spy(new FakeEnhanced4gLteSliceHelper(mContext));
-        doReturn(mQueryImsState).when(mEnhanced4gLteSliceHelper).queryImsState(anyInt());
-
-        // Set-up specs for SliceMetadata.
-        SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS);
-    }
-
-    @Test
-    public void test_CreateEnhanced4gLteSlice_invalidSubId() {
-        mQueryImsState.setEnabledByPlatform(false);
-        mQueryImsState.setIsProvisionedOnDevice(false);
-        mQueryImsState.setIsEnabledByUser(false);
-        mShadowSubscriptionManager.setDefaultVoiceSubscriptionId(-1);
-
-        final Slice slice = mEnhanced4gLteSliceHelper.createEnhanced4gLteSlice(
-                CustomSliceRegistry.ENHANCED_4G_SLICE_URI);
-
-        assertThat(slice).isNull();
-    }
-
-    @Test
-    public void test_CreateEnhanced4gLteSlice_enhanced4gLteNotSupported() {
-        mQueryImsState.setEnabledByPlatform(false);
-
-        final Slice slice = mEnhanced4gLteSliceHelper.createEnhanced4gLteSlice(
-                CustomSliceRegistry.ENHANCED_4G_SLICE_URI);
-
-        assertThat(mEnhanced4gLteSliceHelper.getDefaultVoiceSubId()).isEqualTo(1);
-        assertThat(slice).isNull();
-    }
-
-    @Test
-    public void test_CreateEnhanced4gLteSlice_success() {
-        mQueryImsState.setEnabledByPlatform(true);
-        mQueryImsState.setIsProvisionedOnDevice(true);
-        when(mMockCarrierConfigManager.getConfigForSubId(1)).thenReturn(null);
-
-        final Slice slice = mEnhanced4gLteSliceHelper.createEnhanced4gLteSlice(
-                CustomSliceRegistry.ENHANCED_4G_SLICE_URI);
-
-        assertThat(mEnhanced4gLteSliceHelper.getDefaultVoiceSubId()).isEqualTo(1);
-        testEnhanced4gLteSettingsToggleSlice(slice);
-    }
-
-    @Test
-    public void test_SettingSliceProvider_getsRightSliceEnhanced4gLte() {
-        mQueryImsState.setEnabledByPlatform(true);
-        mQueryImsState.setIsProvisionedOnDevice(true);
-        when(mMockCarrierConfigManager.getConfigForSubId(1)).thenReturn(null);
-        when(mSlicesFeatureProvider.getNewEnhanced4gLteSliceHelper(mContext))
-                .thenReturn(mEnhanced4gLteSliceHelper);
-
-        final Slice slice = mProvider.onBindSlice(CustomSliceRegistry.ENHANCED_4G_SLICE_URI);
-
-        assertThat(mEnhanced4gLteSliceHelper.getDefaultVoiceSubId()).isEqualTo(1);
-        testEnhanced4gLteSettingsToggleSlice(slice);
-    }
-
-    @Test
-    @Ignore
-    public void test_SliceBroadcastReceiver_toggleOffEnhanced4gLte() {
-        mQueryImsState.setEnabledByPlatform(true);
-        mQueryImsState.setIsProvisionedOnDevice(true);
-        mQueryImsState.setIsEnabledByUser(false);
-        when(mSlicesFeatureProvider.getNewEnhanced4gLteSliceHelper(mContext))
-                .thenReturn(mEnhanced4gLteSliceHelper);
-
-        final ArgumentCaptor<Boolean> mEnhanced4gLteSettingCaptor = ArgumentCaptor.forClass(
-                Boolean.class);
-
-        // turn on Enhanced4gLte setting
-        final Intent intent = new Intent(Enhanced4gLteSliceHelper.ACTION_ENHANCED_4G_LTE_CHANGED);
-        intent.putExtra(EXTRA_TOGGLE_STATE, true);
-
-        // change the setting
-        mReceiver.onReceive(mContext, intent);
-
-        verify(mEnhanced4gLteSliceHelper).setEnhanced4gLteModeSetting(anyInt(),
-                mEnhanced4gLteSettingCaptor.capture());
-
-        // assert the change
-        assertThat(mEnhanced4gLteSettingCaptor.getValue()).isTrue();
-    }
-
-    private void testEnhanced4gLteSettingsUnavailableSlice(Slice slice,
-            PendingIntent expectedPrimaryAction) {
-        final SliceMetadata metadata = SliceMetadata.from(mContext, slice);
-
-        //Check there is no toggle action
-        final List<SliceAction> toggles = metadata.getToggles();
-        assertThat(toggles).isEmpty();
-
-        // Check whether the primary action is to open Enhanced4gLte settings activity
-        final PendingIntent primaryPendingIntent =
-                metadata.getPrimaryAction().getAction();
-        assertThat(primaryPendingIntent).isEqualTo(expectedPrimaryAction);
-
-        // Check the title
-        final List<SliceItem> sliceItems = slice.getItems();
-        assertTitle(sliceItems, mContext.getString(R.string.enhanced_4g_lte_mode_title));
-    }
-
-    private void testEnhanced4gLteSettingsToggleSlice(Slice slice) {
-        final SliceMetadata metadata = SliceMetadata.from(mContext, slice);
-
-        final List<SliceAction> toggles = metadata.getToggles();
-        assertThat(toggles).hasSize(1);
-
-        final SliceAction mainToggleAction = toggles.get(0);
-
-        // Check intent in Toggle Action
-        final PendingIntent togglePendingIntent = mainToggleAction.getAction();
-        final PendingIntent expectedToggleIntent = getBroadcastIntent(
-                Enhanced4gLteSliceHelper.ACTION_ENHANCED_4G_LTE_CHANGED);
-        assertThat(togglePendingIntent).isEqualTo(expectedToggleIntent);
-
-        // Check primary intent
-        final PendingIntent primaryPendingIntent = metadata.getPrimaryAction().getAction();
-        final PendingIntent expectedPendingIntent =
-                getActivityIntent(Enhanced4gLteSliceHelper.ACTION_MOBILE_NETWORK_SETTINGS_ACTIVITY);
-        assertThat(primaryPendingIntent).isEqualTo(expectedPendingIntent);
-
-        // Check the title
-        final List<SliceItem> sliceItems = slice.getItems();
-        assertTitle(sliceItems, mContext.getString(R.string.enhanced_4g_lte_mode_title));
-    }
-
-    private PendingIntent getBroadcastIntent(String action) {
-        final Intent intent = new Intent(action);
-        intent.setClass(mContext, SliceBroadcastReceiver.class);
-        return PendingIntent.getBroadcast(mContext, 0 /* requestCode */, intent,
-                PendingIntent.FLAG_CANCEL_CURRENT);
-    }
-
-    private PendingIntent getActivityIntent(String action) {
-        final Intent intent = new Intent(action);
-        intent.setPackage(SETTINGS_PACKAGE_NAME);
-        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        return PendingIntent.getActivity(mContext, 0 /* requestCode */, intent, 0 /* flags */);
-    }
-
-    private void assertTitle(List<SliceItem> sliceItems, String title) {
-        boolean hasTitle = false;
-        for (SliceItem item : sliceItems) {
-            final List<SliceItem> titleItems = SliceQuery.findAll(item, FORMAT_TEXT, HINT_TITLE,
-                    null /* non-hints */);
-            if (titleItems == null) {
-                continue;
-            }
-
-            hasTitle = true;
-            for (SliceItem subTitleItem : titleItems) {
-                assertThat(subTitleItem.getText()).isEqualTo(title);
-            }
-        }
-        assertThat(hasTitle).isTrue();
-    }
-
-    private class FakeEnhanced4gLteSliceHelper extends Enhanced4gLteSliceHelper {
-        int mSubId = SUB_ID;
-
-        FakeEnhanced4gLteSliceHelper(Context context) {
-            super(context);
-        }
-
-        @Override
-        protected CarrierConfigManager getCarrierConfigManager() {
-            return mMockCarrierConfigManager;
-        }
-
-        protected int getDefaultVoiceSubId() {
-            return mSubId;
-        }
-
-        private void setDefaultVoiceSubId(int id) {
-            mSubId = id;
-        }
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/network/telephony/EuiccPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/EuiccPreferenceControllerTest.java
deleted file mode 100644
index bb60fd6..0000000
--- a/tests/robotests/src/com/android/settings/network/telephony/EuiccPreferenceControllerTest.java
+++ /dev/null
@@ -1,78 +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.settings.network.telephony;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.spy;
-import static org.robolectric.Shadows.shadowOf;
-
-import android.content.Context;
-import android.content.Intent;
-import android.telephony.TelephonyManager;
-import android.telephony.euicc.EuiccManager;
-
-import androidx.preference.Preference;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.shadows.ShadowTelephonyManager;
-
-@RunWith(AndroidJUnit4.class)
-public class EuiccPreferenceControllerTest {
-    private static final int SUB_ID = 2;
-
-    private TelephonyManager mTelephonyManager;
-    private ShadowTelephonyManager mShadowTelephonyManager;
-
-    private EuiccPreferenceController mController;
-    private Preference mPreference;
-    private Context mContext;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mContext = spy(RuntimeEnvironment.application.getBaseContext());
-
-        mTelephonyManager = mContext.getSystemService(TelephonyManager.class);
-        mShadowTelephonyManager = shadowOf(mTelephonyManager);
-        mShadowTelephonyManager.setTelephonyManagerForSubscriptionId(SUB_ID, mTelephonyManager);
-
-        mPreference = new Preference(mContext);
-        mController = new EuiccPreferenceController(mContext, "euicc");
-        mController.init(SUB_ID);
-        mPreference.setKey(mController.getPreferenceKey());
-    }
-
-    @Test
-    public void handlePreferenceTreeClick_startActivity() {
-        ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
-        doNothing().when(mContext).startActivity(captor.capture());
-
-        mController.handlePreferenceTreeClick(mPreference);
-
-        assertThat(captor.getValue().getAction()).isEqualTo(
-                EuiccManager.ACTION_MANAGE_EMBEDDED_SUBSCRIPTIONS);
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/network/telephony/MmsMessagePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/MmsMessagePreferenceControllerTest.java
deleted file mode 100644
index c28c28c..0000000
--- a/tests/robotests/src/com/android/settings/network/telephony/MmsMessagePreferenceControllerTest.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.network.telephony;
-
-import static com.android.settings.core.BasePreferenceController.AVAILABLE;
-import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE;
-
-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.content.Context;
-import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
-import android.telephony.data.ApnSetting;
-
-import androidx.preference.SwitchPreference;
-
-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.ShadowSubscriptionManager;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = ShadowSubscriptionManager.class)
-public class MmsMessagePreferenceControllerTest {
-    private static final int SUB_ID = 2;
-
-    @Mock
-    private TelephonyManager mTelephonyManager;
-    @Mock
-    private SubscriptionManager mSubscriptionManager;
-
-    private MmsMessagePreferenceController mController;
-    private SwitchPreference mPreference;
-    private Context mContext;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mContext = spy(RuntimeEnvironment.application);
-        when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
-        when(mContext.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mTelephonyManager);
-        when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager);
-        when(mTelephonyManager.createForSubscriptionId(SUB_ID)).thenReturn(mTelephonyManager);
-
-        mPreference = new SwitchPreference(mContext);
-        mController = new MmsMessagePreferenceController(mContext, "mms_message");
-        ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUB_ID);
-        mController.init(SUB_ID);
-        mPreference.setKey(mController.getPreferenceKey());
-    }
-
-    @Test
-    public void getAvailabilityStatus_invalidSubscription_returnUnavailable() {
-        mController.init(SubscriptionManager.INVALID_SUBSCRIPTION_ID);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
-    }
-
-    @Test
-    public void getAvailabilityStatus_mobileDataOn_returnUnavailable() {
-        when(mTelephonyManager.isDataEnabled()).thenReturn(true);
-
-        assertThat(mController.getAvailabilityStatus(SUB_ID)).isEqualTo(CONDITIONALLY_UNAVAILABLE);
-    }
-
-    @Test
-    public void getAvailabilityStatus_meteredOff_returnUnavailable() {
-        when(mTelephonyManager.isApnMetered(ApnSetting.TYPE_MMS)).thenReturn(false);
-
-        assertThat(mController.getAvailabilityStatus(SUB_ID)).isEqualTo(CONDITIONALLY_UNAVAILABLE);
-    }
-
-    @Test
-    public void getAvailabilityStatus_mobileDataOffWithValidSubId_returnAvailable() {
-        mController.init(SUB_ID);
-        when(mTelephonyManager.isDataEnabled()).thenReturn(false);
-        when(mTelephonyManager.isApnMetered(ApnSetting.TYPE_MMS)).thenReturn(true);
-
-        assertThat(mController.getAvailabilityStatus(SUB_ID)).isEqualTo(AVAILABLE);
-    }
-
-    @Test
-    public void isChecked_returnDataFromTelephonyManager() {
-        when(mTelephonyManager.isDataEnabledForApn(ApnSetting.TYPE_MMS)).thenReturn(false);
-        assertThat(mController.isChecked()).isFalse();
-
-        when(mTelephonyManager.isDataEnabledForApn(ApnSetting.TYPE_MMS)).thenReturn(true);
-        assertThat(mController.isChecked()).isTrue();
-    }
-
-    @Test
-    public void setChecked_setDataIntoSubscriptionManager() {
-        mController.setChecked(true);
-        verify(mTelephonyManager).setMobileDataPolicyEnabledStatus(
-                TelephonyManager.MOBILE_DATA_POLICY_MMS_ALWAYS_ALLOWED, true);
-
-        mController.setChecked(false);
-        verify(mTelephonyManager).setMobileDataPolicyEnabledStatus(
-                TelephonyManager.MOBILE_DATA_POLICY_MMS_ALWAYS_ALLOWED, false);
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/network/telephony/MobileDataPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/MobileDataPreferenceControllerTest.java
deleted file mode 100644
index 29f0f25..0000000
--- a/tests/robotests/src/com/android/settings/network/telephony/MobileDataPreferenceControllerTest.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.settings.network.telephony;
-
-import static com.android.settings.core.BasePreferenceController.AVAILABLE_UNSEARCHABLE;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-
-import android.content.Context;
-import android.telephony.SubscriptionInfo;
-import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
-
-import androidx.fragment.app.FragmentManager;
-import androidx.fragment.app.FragmentTransaction;
-import androidx.preference.SwitchPreference;
-
-import com.android.settings.R;
-
-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.ShadowSubscriptionManager;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = ShadowSubscriptionManager.class)
-public class MobileDataPreferenceControllerTest {
-    private static final int SUB_ID = 2;
-    private static final int SUB_ID_OTHER = 3;
-
-    @Mock
-    private FragmentManager mFragmentManager;
-    @Mock
-    private TelephonyManager mTelephonyManager;
-    @Mock
-    private TelephonyManager mInvalidTelephonyManager;
-    @Mock
-    private SubscriptionManager mSubscriptionManager;
-    @Mock
-    private SubscriptionInfo mSubscriptionInfo;
-    @Mock
-    private FragmentTransaction mFragmentTransaction;
-
-    private MobileDataPreferenceController mController;
-    private SwitchPreference mPreference;
-    private Context mContext;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mContext = spy(RuntimeEnvironment.application);
-        doReturn(mTelephonyManager).when(mContext).getSystemService(Context.TELEPHONY_SERVICE);
-        doReturn(mSubscriptionManager).when(mContext).getSystemService(SubscriptionManager.class);
-        doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(SUB_ID);
-        doReturn(mInvalidTelephonyManager).when(mTelephonyManager).createForSubscriptionId(
-                SubscriptionManager.INVALID_SUBSCRIPTION_ID);
-        doReturn(mFragmentTransaction).when(mFragmentManager).beginTransaction();
-
-        mPreference = new SwitchPreference(mContext);
-        mController = new MobileDataPreferenceController(mContext, "mobile_data");
-        ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUB_ID);
-        mController.init(mFragmentManager, SUB_ID);
-        mPreference.setKey(mController.getPreferenceKey());
-    }
-
-    @Test
-    public void getAvailabilityStatus_invalidSubscription_returnAvailableUnsearchable() {
-        mController.init(mFragmentManager, SubscriptionManager.INVALID_SUBSCRIPTION_ID);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE_UNSEARCHABLE);
-    }
-
-    @Test
-    public void isDialogNeeded_disableSingleSim_returnFalse() {
-        doReturn(true).when(mTelephonyManager).isDataEnabled();
-        doReturn(mSubscriptionInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(SUB_ID);
-        doReturn(1).when(mTelephonyManager).getActiveModemCount();
-
-        assertThat(mController.isDialogNeeded()).isFalse();
-    }
-
-    @Test
-    public void isDialogNeeded_enableNonDefaultSimInMultiSimMode_returnTrue() {
-        doReturn(false).when(mTelephonyManager).isDataEnabled();
-        doReturn(mSubscriptionInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(SUB_ID);
-        doReturn(true).when(mSubscriptionManager).isActiveSubscriptionId(SUB_ID_OTHER);
-        ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUB_ID_OTHER);
-        doReturn(2).when(mTelephonyManager).getActiveModemCount();
-
-        assertThat(mController.isDialogNeeded()).isTrue();
-        assertThat(mController.mDialogType).isEqualTo(
-                MobileDataDialogFragment.TYPE_MULTI_SIM_DIALOG);
-    }
-
-    @Test
-    public void handlePreferenceTreeClick_needDialog_showDialog() {
-        mController.mNeedDialog = true;
-
-        mController.handlePreferenceTreeClick(mPreference);
-
-        verify(mFragmentManager).beginTransaction();
-    }
-
-    @Test
-    public void onPreferenceChange_singleSim_On_shouldEnableData() {
-        doReturn(true).when(mTelephonyManager).isDataEnabled();
-        doReturn(mSubscriptionInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(SUB_ID);
-        doReturn(1).when(mTelephonyManager).getActiveModemCount();
-
-        mController.onPreferenceChange(mPreference, true);
-
-        verify(mTelephonyManager).setDataEnabled(true);
-    }
-
-    @Test
-    public void onPreferenceChange_multiSim_On_shouldEnableData() {
-        doReturn(true).when(mTelephonyManager).isDataEnabled();
-        doReturn(mSubscriptionInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(SUB_ID);
-        doReturn(2).when(mTelephonyManager).getActiveModemCount();
-
-        mController.onPreferenceChange(mPreference, true);
-
-        verify(mTelephonyManager).setDataEnabled(true);
-    }
-
-    @Test
-    public void isChecked_returnUserDataEnabled() {
-        mController.init(mFragmentManager, SUB_ID);
-        assertThat(mController.isChecked()).isFalse();
-
-        doReturn(true).when(mTelephonyManager).isDataEnabled();
-        assertThat(mController.isChecked()).isTrue();
-    }
-
-    @Test
-    public void updateState_opportunistic_disabled() {
-        doReturn(mSubscriptionInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(SUB_ID);
-        mController.init(mFragmentManager, SUB_ID);
-        doReturn(true).when(mSubscriptionInfo).isOpportunistic();
-        mController.updateState(mPreference);
-
-        assertThat(mPreference.isEnabled()).isFalse();
-        assertThat(mPreference.getSummary())
-                .isEqualTo(mContext.getString(R.string.mobile_data_settings_summary_auto_switch));
-    }
-
-    @Test
-    public void updateState_notOpportunistic_enabled() {
-        doReturn(mSubscriptionInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(SUB_ID);
-        mController.init(mFragmentManager, SUB_ID);
-        doReturn(false).when(mSubscriptionInfo).isOpportunistic();
-        mController.updateState(mPreference);
-
-        assertThat(mPreference.isEnabled()).isTrue();
-        assertThat(mPreference.getSummary())
-                .isEqualTo(mContext.getString(R.string.mobile_data_settings_summary));
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkUtilsTest.java b/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkUtilsTest.java
deleted file mode 100644
index bbb8aac..0000000
--- a/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkUtilsTest.java
+++ /dev/null
@@ -1,335 +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.settings.network.telephony;
-
-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.nullable;
-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.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.os.PersistableBundle;
-import android.provider.Settings;
-import android.telecom.PhoneAccountHandle;
-import android.telephony.CarrierConfigManager;
-import android.telephony.SubscriptionInfo;
-import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
-
-import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants;
-
-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;
-
-@RunWith(RobolectricTestRunner.class)
-public class MobileNetworkUtilsTest {
-    private static final String PACKAGE_NAME = "com.android.app";
-    private static final int SUB_ID_1 = 1;
-    private static final int SUB_ID_2 = 2;
-    private static final int SUB_ID_INVALID = -1;
-    private static final String PLMN_FROM_TELEPHONY_MANAGER_API = "testPlmn";
-    private static final String PLMN_FROM_SUB_ID_1 = "testPlmnSub1";
-    private static final String PLMN_FROM_SUB_ID_2 = "testPlmnSub2";
-
-    @Mock
-    private TelephonyManager mTelephonyManager;
-    @Mock
-    private TelephonyManager mTelephonyManager2;
-    @Mock
-    private SubscriptionManager mSubscriptionManager;
-    @Mock
-    private SubscriptionInfo mSubscriptionInfo1;
-    @Mock
-    private SubscriptionInfo mSubscriptionInfo2;
-    @Mock
-    private PackageManager mPackageManager;
-    @Mock
-    private PhoneAccountHandle mPhoneAccountHandle;
-    @Mock
-    private ComponentName mComponentName;
-    @Mock
-    private ResolveInfo mResolveInfo;
-    @Mock
-    private CarrierConfigManager mCarrierConfigManager;
-
-    private Context mContext;
-    private PersistableBundle mCarrierConfig;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mContext = spy(RuntimeEnvironment.application);
-        when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager);
-        when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
-        when(mContext.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mTelephonyManager);
-        when(mTelephonyManager.createForSubscriptionId(SUB_ID_1)).thenReturn(mTelephonyManager);
-        when(mTelephonyManager.createForSubscriptionId(SUB_ID_2)).thenReturn(mTelephonyManager2);
-        when(mContext.getPackageManager()).thenReturn(mPackageManager);
-        when(mPhoneAccountHandle.getComponentName()).thenReturn(mComponentName);
-        when(mComponentName.getPackageName()).thenReturn(PACKAGE_NAME);
-        when(mContext.getSystemService(CarrierConfigManager.class)).thenReturn(
-                mCarrierConfigManager);
-
-        mCarrierConfig = new PersistableBundle();
-        when(mCarrierConfigManager.getConfigForSubId(SUB_ID_1)).thenReturn(mCarrierConfig);
-
-        when(mSubscriptionInfo1.getSubscriptionId()).thenReturn(SUB_ID_1);
-        when(mSubscriptionInfo1.getCarrierName()).thenReturn(PLMN_FROM_SUB_ID_1);
-        when(mSubscriptionInfo2.getSubscriptionId()).thenReturn(SUB_ID_2);
-        when(mSubscriptionInfo2.getCarrierName()).thenReturn(PLMN_FROM_SUB_ID_2);
-
-        when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn(
-                Arrays.asList(mSubscriptionInfo1, mSubscriptionInfo2));
-        when(mSubscriptionManager.getAccessibleSubscriptionInfoList()).thenReturn(
-                Arrays.asList(mSubscriptionInfo1, mSubscriptionInfo2));
-
-        when(mTelephonyManager.getNetworkOperatorName()).thenReturn(
-                PLMN_FROM_TELEPHONY_MANAGER_API);
-    }
-
-    @Test
-    public void setMobileDataEnabled_setEnabled_enabled() {
-        MobileNetworkUtils.setMobileDataEnabled(mContext, SUB_ID_1, true, false);
-
-        verify(mTelephonyManager).setDataEnabled(true);
-        verify(mTelephonyManager2, never()).setDataEnabled(anyBoolean());
-    }
-
-    @Test
-    public void setMobileDataEnabled_setDisabled_disabled() {
-        MobileNetworkUtils.setMobileDataEnabled(mContext, SUB_ID_2, true, false);
-
-        verify(mTelephonyManager2).setDataEnabled(true);
-        verify(mTelephonyManager, never()).setDataEnabled(anyBoolean());
-    }
-
-    @Test
-    public void setMobileDataEnabled_disableOtherSubscriptions() {
-        MobileNetworkUtils.setMobileDataEnabled(mContext, SUB_ID_1, true, true);
-
-        verify(mTelephonyManager).setDataEnabled(true);
-        verify(mTelephonyManager2).setDataEnabled(false);
-    }
-
-    @Test
-    public void buildConfigureIntent_nullHandle_returnNull() {
-        assertThat(MobileNetworkUtils.buildPhoneAccountConfigureIntent(mContext, null)).isNull();
-    }
-
-    @Test
-    public void buildConfigureIntent_noActivityHandleIntent_returnNull() {
-        when(mPackageManager.queryIntentActivities(nullable(Intent.class), anyInt()))
-                .thenReturn(new ArrayList<>());
-
-        assertThat(MobileNetworkUtils.buildPhoneAccountConfigureIntent(mContext,
-                mPhoneAccountHandle)).isNull();
-    }
-
-    @Test
-    public void buildConfigureIntent_hasActivityHandleIntent_returnIntent() {
-        when(mPackageManager.queryIntentActivities(nullable(Intent.class), anyInt()))
-                .thenReturn(Arrays.asList(mResolveInfo));
-
-        assertThat(MobileNetworkUtils.buildPhoneAccountConfigureIntent(mContext,
-                mPhoneAccountHandle)).isNotNull();
-    }
-
-    @Test
-    public void isCdmaOptions_phoneTypeCdma_returnTrue() {
-        when(mTelephonyManager.getPhoneType()).thenReturn(TelephonyManager.PHONE_TYPE_CDMA);
-
-        assertThat(MobileNetworkUtils.isCdmaOptions(mContext, SUB_ID_1)).isTrue();
-    }
-
-    @Test
-    public void isCdmaOptions_worldModeWithGsmWcdma_returnTrue() {
-        when(mTelephonyManager.getPhoneType()).thenReturn(TelephonyManager.PHONE_TYPE_GSM);
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_WORLD_MODE_ENABLED_BOOL, true);
-
-        Settings.Global.putInt(mContext.getContentResolver(),
-                android.provider.Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID_1,
-                TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA);
-
-        assertThat(MobileNetworkUtils.isCdmaOptions(mContext, SUB_ID_1)).isTrue();
-    }
-
-    @Test
-    public void isCdmaOptions_carrierWorldModeWithoutHideCarrier_returnTrue() {
-        when(mTelephonyManager.getPhoneType()).thenReturn(TelephonyManager.PHONE_TYPE_GSM);
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL,
-                false);
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_WORLD_PHONE_BOOL, true);
-
-        assertThat(MobileNetworkUtils.isCdmaOptions(mContext, SUB_ID_1)).isTrue();
-    }
-
-    @Test
-    public void getSearchableSubscriptionId_oneActive_returnValid() {
-        when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn(
-                Arrays.asList(mSubscriptionInfo1));
-        assertThat(MobileNetworkUtils.getSearchableSubscriptionId(mContext)).isEqualTo(SUB_ID_1);
-    }
-
-    @Test
-    public void getSearchableSubscriptionId_nonActive_returnInvalid() {
-        when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn(new ArrayList<>());
-
-        assertThat(MobileNetworkUtils.getSearchableSubscriptionId(mContext))
-                .isEqualTo(SubscriptionManager.INVALID_SUBSCRIPTION_ID);
-    }
-
-    @Test
-    public void shouldDisplayNetworkSelectOptions_HideCarrierNetwork_returnFalse() {
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL,
-                true);
-
-        assertThat(MobileNetworkUtils.shouldDisplayNetworkSelectOptions(mContext, SUB_ID_1))
-                .isFalse();
-    }
-
-    @Test
-    public void shouldDisplayNetworkSelectOptions_allCheckPass_returnTrue() {
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL,
-                false);
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_OPERATOR_SELECTION_EXPAND_BOOL, true);
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_CSP_ENABLED_BOOL, false);
-        when(mTelephonyManager.getPhoneType()).thenReturn(TelephonyManager.PHONE_TYPE_GSM);
-
-        assertThat(MobileNetworkUtils.shouldDisplayNetworkSelectOptions(mContext, SUB_ID_1))
-                .isTrue();
-    }
-
-    @Test
-    public void shouldSpeciallyUpdateGsmCdma_notWorldMode_returnFalse() {
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_WORLD_MODE_ENABLED_BOOL, false);
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_SUPPORT_TDSCDMA_BOOL, false);
-
-        assertThat(MobileNetworkUtils.shouldSpeciallyUpdateGsmCdma(mContext, SUB_ID_1)).isFalse();
-    }
-
-    @Test
-    public void shouldSpeciallyUpdateGsmCdma_supportTdscdma_returnFalse() {
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_WORLD_MODE_ENABLED_BOOL, true);
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_SUPPORT_TDSCDMA_BOOL, true);
-
-        assertThat(MobileNetworkUtils.shouldSpeciallyUpdateGsmCdma(mContext, SUB_ID_1)).isFalse();
-    }
-
-    @Test
-    public void shouldSpeciallyUpdateGsmCdma_ModeLteTdscdmaGsm_returnTrue() {
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_WORLD_MODE_ENABLED_BOOL, true);
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_SUPPORT_TDSCDMA_BOOL, false);
-
-        Settings.Global.putInt(mContext.getContentResolver(),
-                android.provider.Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID_1,
-                TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM);
-        assertThat(MobileNetworkUtils.shouldSpeciallyUpdateGsmCdma(mContext, SUB_ID_1)).isTrue();
-    }
-
-    @Test
-    public void shouldSpeciallyUpdateGsmCdma_ModeLteTdscdmaGsmWcdma_returnTrue() {
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_WORLD_MODE_ENABLED_BOOL, true);
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_SUPPORT_TDSCDMA_BOOL, false);
-
-        Settings.Global.putInt(mContext.getContentResolver(),
-                android.provider.Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID_1,
-                TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA);
-        assertThat(MobileNetworkUtils.shouldSpeciallyUpdateGsmCdma(mContext, SUB_ID_1)).isTrue();
-    }
-
-    @Test
-    public void shouldSpeciallyUpdateGsmCdma_ModeLteTdscdma_returnTrue() {
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_WORLD_MODE_ENABLED_BOOL, true);
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_SUPPORT_TDSCDMA_BOOL, false);
-
-        Settings.Global.putInt(mContext.getContentResolver(),
-                android.provider.Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID_1,
-                TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA);
-        assertThat(MobileNetworkUtils.shouldSpeciallyUpdateGsmCdma(mContext, SUB_ID_1)).isTrue();
-    }
-
-    @Test
-    public void shouldSpeciallyUpdateGsmCdma_ModeLteTdscdmaWcdma_returnTrue() {
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_WORLD_MODE_ENABLED_BOOL, true);
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_SUPPORT_TDSCDMA_BOOL, false);
-
-        Settings.Global.putInt(mContext.getContentResolver(),
-                android.provider.Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID_1,
-                TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_WCDMA);
-        assertThat(MobileNetworkUtils.shouldSpeciallyUpdateGsmCdma(mContext, SUB_ID_1)).isTrue();
-    }
-
-    @Test
-    public void shouldSpeciallyUpdateGsmCdma_ModeLteTdscdmaCdmaEvdoGsmWcdma_returnTrue() {
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_WORLD_MODE_ENABLED_BOOL, true);
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_SUPPORT_TDSCDMA_BOOL, false);
-
-        Settings.Global.putInt(mContext.getContentResolver(),
-                android.provider.Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID_1,
-                TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA);
-        assertThat(MobileNetworkUtils.shouldSpeciallyUpdateGsmCdma(mContext, SUB_ID_1)).isTrue();
-    }
-
-    @Test
-    public void shouldSpeciallyUpdateGsmCdma_ModeLteCdmaEvdoGsmWcdma_returnTrue() {
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_WORLD_MODE_ENABLED_BOOL, true);
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_SUPPORT_TDSCDMA_BOOL, false);
-
-        Settings.Global.putInt(mContext.getContentResolver(),
-                android.provider.Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID_1,
-                TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA);
-        assertThat(MobileNetworkUtils.shouldSpeciallyUpdateGsmCdma(mContext, SUB_ID_1)).isTrue();
-    }
-
-    @Test
-    public void getCurrentCarrierNameForDisplay_withoutValidSubId_returnNetworkOperatorName() {
-        assertThat(MobileNetworkUtils.getCurrentCarrierNameForDisplay(
-                mContext, SUB_ID_INVALID)).isEqualTo(PLMN_FROM_TELEPHONY_MANAGER_API);
-    }
-
-    @Test
-    public void getCurrentCarrierNameForDisplay_withValidSubId_returnCurrentCarrierName() {
-        assertThat(MobileNetworkUtils.getCurrentCarrierNameForDisplay(
-                mContext, SUB_ID_1)).isEqualTo(PLMN_FROM_SUB_ID_1);
-        assertThat(MobileNetworkUtils.getCurrentCarrierNameForDisplay(
-                mContext, SUB_ID_2)).isEqualTo(PLMN_FROM_SUB_ID_2);
-    }
-
-    @Test
-    public void getCurrentCarrierNameForDisplay_withoutSubId_returnNotNull() {
-        assertThat(MobileNetworkUtils.getCurrentCarrierNameForDisplay(
-                mContext)).isNotNull();
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/network/telephony/NrDisabledInDsdsFooterPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/NrDisabledInDsdsFooterPreferenceControllerTest.java
deleted file mode 100644
index b4e8a25..0000000
--- a/tests/robotests/src/com/android/settings/network/telephony/NrDisabledInDsdsFooterPreferenceControllerTest.java
+++ /dev/null
@@ -1,107 +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.settings.network.telephony;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
-
-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.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class NrDisabledInDsdsFooterPreferenceControllerTest {
-    private static final String PREF_KEY = "pref_key";
-    private static final int SUB_ID = 111;
-
-    private Context mContext;
-    @Mock
-    private TelephonyManager mTelephonyManager;
-    @Mock
-    private SubscriptionManager mSubscriptionManager;
-    private NrDisabledInDsdsFooterPreferenceController mController;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = spy(RuntimeEnvironment.application);
-        doReturn(mTelephonyManager).when(mContext).getSystemService(Context.TELEPHONY_SERVICE);
-        doReturn(mSubscriptionManager).when(mContext).getSystemService(
-                Context.TELEPHONY_SUBSCRIPTION_SERVICE);
-        doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(anyInt());
-        mController = new NrDisabledInDsdsFooterPreferenceController(mContext, PREF_KEY);
-    }
-
-    @Test
-    public void isAvailable_noInit_notAvailable() {
-        assertThat(mController.isAvailable()).isFalse();
-    }
-
-    @Test
-    @Ignore
-    public void isAvailable_dataOnAndDsdsAnd5GSupported_Available() {
-        when(mTelephonyManager.getSupportedRadioAccessFamily())
-                .thenReturn(TelephonyManager.NETWORK_TYPE_BITMASK_NR);
-        when(mSubscriptionManager.getActiveSubscriptionIdList()).thenReturn(new int[] {1, 2});
-        when(mTelephonyManager.isDataEnabled()).thenReturn(true);
-        mController.init(SUB_ID);
-        assertThat(mController.isAvailable()).isTrue();
-    }
-
-    @Test
-    public void isAvailable_5gNotSupported_notAvailable() {
-        when(mTelephonyManager.getSupportedRadioAccessFamily())
-                .thenReturn(TelephonyManager.NETWORK_TYPE_BITMASK_LTE);
-        when(mSubscriptionManager.getActiveSubscriptionIdList()).thenReturn(new int[] {1, 2});
-        when(mTelephonyManager.isDataEnabled()).thenReturn(true);
-        mController.init(SUB_ID);
-        assertThat(mController.isAvailable()).isFalse();
-    }
-
-    @Test
-    public void isAvailable_mobileDataOff_notAvailable() {
-        when(mTelephonyManager.getSupportedRadioAccessFamily())
-                .thenReturn(TelephonyManager.NETWORK_TYPE_BITMASK_NR);
-        when(mSubscriptionManager.getActiveSubscriptionIdList()).thenReturn(new int[] {1, 2});
-        when(mTelephonyManager.isDataEnabled()).thenReturn(false);
-        mController.init(SUB_ID);
-        assertThat(mController.isAvailable()).isFalse();
-    }
-
-    @Test
-    public void isAvailable_singleSimMode_notAvailable() {
-        when(mTelephonyManager.getSupportedRadioAccessFamily())
-                .thenReturn(TelephonyManager.NETWORK_TYPE_BITMASK_NR);
-        when(mSubscriptionManager.getActiveSubscriptionIdList()).thenReturn(new int[] {1});
-        when(mTelephonyManager.isDataEnabled()).thenReturn(true);
-        mController.init(SUB_ID);
-        assertThat(mController.isAvailable()).isFalse();
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceControllerTest.java
deleted file mode 100644
index 1feb08b..0000000
--- a/tests/robotests/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceControllerTest.java
+++ /dev/null
@@ -1,167 +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.settings.network.telephony;
-
-import static com.android.settings.core.BasePreferenceController.AVAILABLE;
-import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE;
-import static com.android.settings.network.telephony.MobileNetworkUtils.getRafFromNetworkType;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.os.PersistableBundle;
-import android.provider.Settings;
-import android.telephony.CarrierConfigManager;
-import android.telephony.ServiceState;
-import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
-
-import androidx.preference.ListPreference;
-
-import com.android.settings.R;
-import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants;
-
-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 PreferredNetworkModePreferenceControllerTest {
-    private static final int SUB_ID = 2;
-
-    @Mock
-    private TelephonyManager mTelephonyManager;
-    @Mock
-    private TelephonyManager mInvalidTelephonyManager;
-    @Mock
-    private CarrierConfigManager mCarrierConfigManager;
-    @Mock
-    private ServiceState mServiceState;
-
-    private PersistableBundle mPersistableBundle;
-    private PreferredNetworkModePreferenceController mController;
-    private ListPreference mPreference;
-    private Context mContext;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mContext = spy(RuntimeEnvironment.application);
-        doReturn(mTelephonyManager).when(mContext).getSystemService(Context.TELEPHONY_SERVICE);
-        doReturn(mTelephonyManager).when(mContext).getSystemService(TelephonyManager.class);
-        doReturn(mCarrierConfigManager).when(mContext).getSystemService(CarrierConfigManager.class);
-        doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(SUB_ID);
-        doReturn(mInvalidTelephonyManager).when(mTelephonyManager).createForSubscriptionId(
-                SubscriptionManager.INVALID_SUBSCRIPTION_ID);
-        doReturn(mServiceState).when(mTelephonyManager).getServiceState();
-        mPersistableBundle = new PersistableBundle();
-        doReturn(mPersistableBundle).when(mCarrierConfigManager).getConfigForSubId(SUB_ID);
-
-        mPreference = new ListPreference(mContext);
-        mPreference.setEntries(R.array.preferred_network_mode_choices);
-        mPreference.setEntryValues(R.array.preferred_network_mode_values);
-        mController = new PreferredNetworkModePreferenceController(mContext, "mobile_data");
-        mController.init(SUB_ID);
-        mPreference.setKey(mController.getPreferenceKey());
-    }
-
-    @Test
-    public void getAvailabilityStatus_hideCarrierNetworkSettings_returnUnavailable() {
-        mPersistableBundle.putBoolean(CarrierConfigManager.KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL,
-                true);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
-    }
-
-    @Test
-    public void getAvailabilityStatus_worldPhone_returnAvailable() {
-        mPersistableBundle.putBoolean(CarrierConfigManager.KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL,
-                false);
-        mPersistableBundle.putBoolean(CarrierConfigManager.KEY_WORLD_PHONE_BOOL, true);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
-    }
-
-    @Test
-    public void getAvailabilityStatus_hidePreferredNetworkType_returnUnavailable() {
-        mPersistableBundle.putBoolean(CarrierConfigManager.KEY_HIDE_PREFERRED_NETWORK_TYPE_BOOL,
-                true);
-
-        when(mServiceState.getState()).thenReturn(ServiceState.STATE_OUT_OF_SERVICE);
-        when(mServiceState.getDataRegistrationState()).thenReturn(
-                ServiceState.STATE_OUT_OF_SERVICE);
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
-
-        when(mServiceState.getState()).thenReturn(ServiceState.STATE_IN_SERVICE);
-        when(mServiceState.getDataRegistrationState()).thenReturn(ServiceState.STATE_IN_SERVICE);
-
-        when(mServiceState.getRoaming()).thenReturn(false);
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
-
-        when(mServiceState.getRoaming()).thenReturn(true);
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
-    }
-
-    @Test
-    public void updateState_updateByNetworkMode() {
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID,
-                TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA);
-
-        mController.updateState(mPreference);
-
-        assertThat(mPreference.getValue()).isEqualTo(
-                String.valueOf(TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA));
-        assertThat(mPreference.getSummary()).isEqualTo(
-                mContext.getString(R.string.preferred_network_mode_tdscdma_gsm_wcdma_summary));
-    }
-
-    @Test
-    public void onPreferenceChange_updateSuccess() {
-        doReturn(true).when(mTelephonyManager).setPreferredNetworkTypeBitmask(
-                getRafFromNetworkType(TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA));
-
-        mController.onPreferenceChange(mPreference,
-                String.valueOf(TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA));
-
-        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
-                Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID, 0)).isEqualTo(
-                TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA);
-    }
-
-    @Test
-    public void onPreferenceChange_updateFail() {
-        doReturn(false).when(mTelephonyManager).setPreferredNetworkTypeBitmask(
-                getRafFromNetworkType(TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA));
-
-        mController.onPreferenceChange(mPreference,
-                String.valueOf(TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA));
-
-        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
-                Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID, 0)).isNotEqualTo(
-                TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA);
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/network/telephony/RoamingPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/RoamingPreferenceControllerTest.java
deleted file mode 100644
index 092b9b7..0000000
--- a/tests/robotests/src/com/android/settings/network/telephony/RoamingPreferenceControllerTest.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.settings.network.telephony;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.anyBoolean;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.os.PersistableBundle;
-import android.telephony.CarrierConfigManager;
-import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
-
-import androidx.fragment.app.FragmentManager;
-import androidx.fragment.app.FragmentTransaction;
-
-import com.android.settings.core.BasePreferenceController;
-import com.android.settingslib.RestrictedSwitchPreference;
-
-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 RoamingPreferenceControllerTest {
-    private static final int SUB_ID = 2;
-
-    @Mock
-    private FragmentManager mFragmentManager;
-    @Mock
-    private TelephonyManager mTelephonyManager;
-    @Mock
-    private TelephonyManager mInvalidTelephonyManager;
-    @Mock
-    private SubscriptionManager mSubscriptionManager;
-    @Mock
-    private FragmentTransaction mFragmentTransaction;
-    @Mock
-    private CarrierConfigManager mCarrierConfigManager;
-
-    private RoamingPreferenceController mController;
-    private RestrictedSwitchPreference mPreference;
-    private Context mContext;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mContext = spy(RuntimeEnvironment.application);
-        doReturn(mTelephonyManager).when(mContext).getSystemService(Context.TELEPHONY_SERVICE);
-        doReturn(mSubscriptionManager).when(mContext).getSystemService(SubscriptionManager.class);
-        doReturn(mCarrierConfigManager).when(mContext).getSystemService(CarrierConfigManager.class);
-        doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(SUB_ID);
-        doReturn(mInvalidTelephonyManager).when(mTelephonyManager).createForSubscriptionId(
-                SubscriptionManager.INVALID_SUBSCRIPTION_ID);
-        doReturn(mFragmentTransaction).when(mFragmentManager).beginTransaction();
-
-        mPreference = spy(new RestrictedSwitchPreference(mContext));
-        mController = spy(new RoamingPreferenceController(mContext, "roaming"));
-        mController.init(mFragmentManager, SUB_ID);
-        mPreference.setKey(mController.getPreferenceKey());
-    }
-
-    @Test
-    public void getAvailabilityStatus_validSubId_returnAvailable() {
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(
-                BasePreferenceController.AVAILABLE);
-    }
-
-    @Test
-    public void getAvailabilityStatus_invalidSubId_returnUnsearchable() {
-        mController.init(mFragmentManager, SubscriptionManager.INVALID_SUBSCRIPTION_ID);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(
-                BasePreferenceController.AVAILABLE_UNSEARCHABLE);
-    }
-
-    @Test
-    public void isDialogNeeded_roamingDisabledWithoutFlag_returnTrue() {
-        final PersistableBundle bundle = new PersistableBundle();
-        bundle.putBoolean(CarrierConfigManager.KEY_DISABLE_CHARGE_INDICATION_BOOL, false);
-        doReturn(bundle).when(mCarrierConfigManager).getConfigForSubId(SUB_ID);
-        doReturn(false).when(mTelephonyManager).isDataRoamingEnabled();
-
-        assertThat(mController.isDialogNeeded()).isTrue();
-    }
-
-    @Test
-    public void isDialogNeeded_roamingEnabled_returnFalse() {
-        doReturn(true).when(mTelephonyManager).isDataRoamingEnabled();
-
-        assertThat(mController.isDialogNeeded()).isFalse();
-    }
-
-    @Test
-    public void setChecked_needDialog_showDialog() {
-        doReturn(true).when(mController).isDialogNeeded();
-
-        mController.setChecked(true);
-
-        verify(mFragmentManager).beginTransaction();
-    }
-
-    @Test
-    public void updateState_invalidSubId_disabled() {
-        mController.init(mFragmentManager, SubscriptionManager.INVALID_SUBSCRIPTION_ID);
-
-        mController.updateState(mPreference);
-
-        assertThat(mPreference.isEnabled()).isFalse();
-    }
-
-    @Test
-    public void updateState_validSubId_enabled() {
-        doReturn(true).when(mTelephonyManager).isDataRoamingEnabled();
-
-        mController.updateState(mPreference);
-
-        assertThat(mPreference.isEnabled()).isTrue();
-        assertThat(mPreference.isChecked()).isTrue();
-    }
-
-    @Test
-    public void updateState_isNotDisabledByAdmin_shouldInvokeSetEnabled() {
-        when(mPreference.isDisabledByAdmin()).thenReturn(false);
-
-        mController.updateState(mPreference);
-
-        verify(mPreference).setEnabled(anyBoolean());
-    }
-
-    @Test
-    public void updateState_isDisabledByAdmin_shouldNotInvokeSetEnabled() {
-        when(mPreference.isDisabledByAdmin()).thenReturn(true);
-
-        mController.updateState(mPreference);
-
-        verify(mPreference, never()).setEnabled(anyBoolean());
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/network/telephony/TelephonyBasePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/TelephonyBasePreferenceControllerTest.java
deleted file mode 100644
index 6ba2ffa..0000000
--- a/tests/robotests/src/com/android/settings/network/telephony/TelephonyBasePreferenceControllerTest.java
+++ /dev/null
@@ -1,98 +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.settings.network.telephony;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.telephony.SubscriptionInfo;
-import android.telephony.SubscriptionManager;
-
-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;
-
-@RunWith(RobolectricTestRunner.class)
-public class TelephonyBasePreferenceControllerTest {
-    private static final int VALID_SUB_ID = 1;
-
-    @Mock
-    private SubscriptionManager mSubscriptionManager;
-    @Mock
-    private SubscriptionInfo mSubscriptionInfo;
-
-    private TestPreferenceController mPreferenceController;
-    private Context mContext;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mContext = spy(RuntimeEnvironment.application);
-        when(mContext.getSystemService(SubscriptionManager.class))
-                .thenReturn(mSubscriptionManager);
-        when(mSubscriptionInfo.getSubscriptionId()).thenReturn(VALID_SUB_ID);
-        mPreferenceController = new TestPreferenceController(mContext, "prefKey");
-    }
-
-    @Test
-    public void isAvailable_validSubIdSet_returnTrue() {
-        mPreferenceController.init(VALID_SUB_ID);
-
-        assertThat(mPreferenceController.isAvailable()).isTrue();
-    }
-
-    @Test
-    public void isAvailable_noIdSetHoweverHasDefaultOne_returnTrue() {
-        when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn(
-                Arrays.asList(mSubscriptionInfo));
-
-        assertThat(mPreferenceController.isAvailable()).isTrue();
-    }
-
-    @Test
-    public void isAvailable_noDefaultAndNoSet_returnFalse() {
-        assertThat(mPreferenceController.isAvailable()).isFalse();
-    }
-
-    /**
-     * Test preference controller for {@link TelephonyBasePreferenceController}
-     */
-    public class TestPreferenceController extends TelephonyBasePreferenceController {
-        public TestPreferenceController(Context context, String prefKey) {
-            super(context, prefKey);
-        }
-
-        public void init(int subId) {
-            mSubId = subId;
-        }
-
-        @Override
-        public int getAvailabilityStatus(int subId) {
-            return subId == VALID_SUB_ID ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
-        }
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/network/telephony/TelephonyTogglePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/TelephonyTogglePreferenceControllerTest.java
deleted file mode 100644
index 7542512..0000000
--- a/tests/robotests/src/com/android/settings/network/telephony/TelephonyTogglePreferenceControllerTest.java
+++ /dev/null
@@ -1,67 +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.settings.network.telephony;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-
-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 TelephonyTogglePreferenceControllerTest {
-
-    private Context mContext;
-    private FakeTelephonyToggle mFakeTelephonyToggle;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-        mFakeTelephonyToggle = new FakeTelephonyToggle(mContext, "key");
-    }
-
-    @Test
-    public void isSliceable_byDefault_shouldReturnFalse() {
-        assertThat(mFakeTelephonyToggle.isSliceable()).isFalse();
-    }
-
-    private static class FakeTelephonyToggle extends TelephonyTogglePreferenceController {
-
-        private FakeTelephonyToggle(Context context, String preferenceKey) {
-            super(context, preferenceKey);
-        }
-
-        @Override
-        public boolean isChecked() {
-            return false;
-        }
-
-        @Override
-        public boolean setChecked(boolean isChecked) {
-            return false;
-        }
-
-        @Override
-        public int getAvailabilityStatus(int subId) {
-            return 0;
-        }
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/network/telephony/cdma/CdmaListPreferenceTest.java b/tests/robotests/src/com/android/settings/network/telephony/cdma/CdmaListPreferenceTest.java
deleted file mode 100644
index 40329a5..0000000
--- a/tests/robotests/src/com/android/settings/network/telephony/cdma/CdmaListPreferenceTest.java
+++ /dev/null
@@ -1,70 +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.settings.network.telephony.cdma;
-
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-
-import android.content.Context;
-import android.telephony.TelephonyManager;
-
-import androidx.preference.PreferenceManager;
-
-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 CdmaListPreferenceTest {
-    private static final int SUB_ID = 2;
-
-    @Mock
-    private TelephonyManager mTelephonyManager;
-    @Mock
-    private PreferenceManager mPreferenceManager;
-
-    private CdmaListPreference mPreference;
-    private Context mContext;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mContext = spy(RuntimeEnvironment.application);
-        doReturn(mTelephonyManager).when(mContext).getSystemService(Context.TELEPHONY_SERVICE);
-        doReturn(mTelephonyManager).when(mContext).getSystemService(TelephonyManager.class);
-        doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(SUB_ID);
-
-        mPreference = spy(new CdmaListPreference(mContext, null));
-        mPreference.setSubId(SUB_ID);
-    }
-
-    @Test
-    public void onClick_inEcm_doNothing() {
-        doReturn(true).when(mTelephonyManager).getEmergencyCallbackMode();
-
-        mPreference.onClick();
-
-        verify(mPreferenceManager, never()).showDialog(mPreference);
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/network/telephony/cdma/CdmaSubscriptionPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/cdma/CdmaSubscriptionPreferenceControllerTest.java
deleted file mode 100644
index c6d3868..0000000
--- a/tests/robotests/src/com/android/settings/network/telephony/cdma/CdmaSubscriptionPreferenceControllerTest.java
+++ /dev/null
@@ -1,130 +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.settings.network.telephony.cdma;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.os.PersistableBundle;
-import android.os.SystemProperties;
-import android.provider.Settings;
-import android.telephony.CarrierConfigManager;
-import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
-
-import androidx.preference.ListPreference;
-import androidx.preference.PreferenceManager;
-
-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 CdmaSubscriptionPreferenceControllerTest {
-    private static final int SUB_ID = 2;
-
-    @Mock
-    private PreferenceManager mPreferenceManager;
-    @Mock
-    private TelephonyManager mTelephonyManager;
-    @Mock
-    private TelephonyManager mInvalidTelephonyManager;
-    @Mock
-    private SubscriptionManager mSubscriptionManager;
-    @Mock
-    private CarrierConfigManager mCarrierConfigManager;
-
-    private CdmaSubscriptionPreferenceController mController;
-    private ListPreference mPreference;
-    private PersistableBundle mCarrierConfig;
-    private Context mContext;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mContext = spy(RuntimeEnvironment.application);
-        doReturn(mTelephonyManager).when(mContext).getSystemService(Context.TELEPHONY_SERVICE);
-        doReturn(mSubscriptionManager).when(mContext).getSystemService(SubscriptionManager.class);
-        doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(SUB_ID);
-        doReturn(mInvalidTelephonyManager).when(mTelephonyManager).createForSubscriptionId(
-                SubscriptionManager.INVALID_SUBSCRIPTION_ID);
-        doReturn(mCarrierConfigManager).when(mContext).getSystemService(CarrierConfigManager.class);
-
-        mCarrierConfig = new PersistableBundle();
-        when(mCarrierConfigManager.getConfigForSubId(SUB_ID)).thenReturn(mCarrierConfig);
-
-        mPreference = new ListPreference(mContext);
-        mController = new CdmaSubscriptionPreferenceController(mContext, "mobile_data");
-        mController.init(mPreferenceManager, SUB_ID);
-        mController.mPreference = mPreference;
-        mPreference.setKey(mController.getPreferenceKey());
-    }
-
-    @Test
-    public void onPreferenceChange_selectNV_returnNVMode() {
-        mController.onPreferenceChange(mPreference, Integer.toString(
-                TelephonyManager.CDMA_SUBSCRIPTION_NV));
-
-        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
-                Settings.Global.CDMA_SUBSCRIPTION_MODE,
-                TelephonyManager.CDMA_SUBSCRIPTION_RUIM_SIM)).isEqualTo(
-                        TelephonyManager.CDMA_SUBSCRIPTION_NV);
-    }
-
-    @Test
-    public void updateState_stateRUIM_displayRUIM() {
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.CDMA_SUBSCRIPTION_MODE, TelephonyManager.CDMA_SUBSCRIPTION_NV);
-
-        mController.updateState(mPreference);
-
-        assertThat(mPreference.getValue()).isEqualTo(Integer.toString(
-                TelephonyManager.CDMA_SUBSCRIPTION_NV));
-    }
-
-    @Test
-    public void updateState_stateUnknown_doNothing() {
-        mPreference.setValue(Integer.toString(TelephonyManager.CDMA_SUBSCRIPTION_NV));
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.CDMA_SUBSCRIPTION_MODE, TelephonyManager.CDMA_SUBSCRIPTION_UNKNOWN);
-
-        mController.updateState(mPreference);
-
-        // Still NV mode
-        assertThat(mPreference.getValue()).isEqualTo(Integer.toString(
-                TelephonyManager.CDMA_SUBSCRIPTION_NV));
-    }
-
-    @Test
-    public void deviceSupportsNvAndRuim() {
-        SystemProperties.set("ril.subscription.types", "NV,RUIM");
-        assertThat(mController.deviceSupportsNvAndRuim()).isTrue();
-
-        SystemProperties.set("ril.subscription.types", "");
-
-        assertThat(mController.deviceSupportsNvAndRuim()).isFalse();
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceControllerTest.java
deleted file mode 100644
index 2352b0f..0000000
--- a/tests/robotests/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceControllerTest.java
+++ /dev/null
@@ -1,145 +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.settings.network.telephony.cdma;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.os.PersistableBundle;
-import android.provider.Settings;
-import android.telephony.CarrierConfigManager;
-import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
-
-import androidx.preference.ListPreference;
-import androidx.preference.PreferenceManager;
-
-import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants;
-
-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 CdmaSystemSelectPreferenceControllerTest {
-    private static final int SUB_ID = 2;
-
-    @Mock
-    private PreferenceManager mPreferenceManager;
-    @Mock
-    private TelephonyManager mTelephonyManager;
-    @Mock
-    private TelephonyManager mInvalidTelephonyManager;
-    @Mock
-    private SubscriptionManager mSubscriptionManager;
-    @Mock
-    private CarrierConfigManager mCarrierConfigManager;
-
-    private CdmaSystemSelectPreferenceController mController;
-    private ListPreference mPreference;
-    private PersistableBundle mCarrierConfig;
-    private Context mContext;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mContext = spy(RuntimeEnvironment.application);
-        doReturn(mTelephonyManager).when(mContext).getSystemService(Context.TELEPHONY_SERVICE);
-        doReturn(mSubscriptionManager).when(mContext).getSystemService(SubscriptionManager.class);
-        doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(SUB_ID);
-        doReturn(mInvalidTelephonyManager).when(mTelephonyManager).createForSubscriptionId(
-                SubscriptionManager.INVALID_SUBSCRIPTION_ID);
-
-        doReturn(mCarrierConfigManager).when(mContext).getSystemService(CarrierConfigManager.class);
-
-        mCarrierConfig = new PersistableBundle();
-        when(mCarrierConfigManager.getConfigForSubId(SUB_ID)).thenReturn(mCarrierConfig);
-
-
-        mPreference = new ListPreference(mContext);
-        mController = new CdmaSystemSelectPreferenceController(mContext, "mobile_data");
-        mController.init(mPreferenceManager, SUB_ID);
-        mController.mPreference = mPreference;
-        mPreference.setKey(mController.getPreferenceKey());
-    }
-
-    @Test
-    public void onPreferenceChange_selectHome_returnHomeMode() {
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.CDMA_ROAMING_MODE,
-                TelephonyManager.CDMA_ROAMING_MODE_ANY);
-
-        mController.onPreferenceChange(mPreference,
-                Integer.toString(TelephonyManager.CDMA_ROAMING_MODE_HOME));
-
-        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
-                Settings.Global.CDMA_ROAMING_MODE,
-                TelephonyManager.CDMA_ROAMING_MODE_ANY)).isEqualTo(
-                TelephonyManager.CDMA_ROAMING_MODE_HOME);
-    }
-
-    @Test
-    public void updateState_stateHome_displayHome() {
-        doReturn(TelephonyManager.CDMA_ROAMING_MODE_HOME).when(
-                mTelephonyManager).getCdmaRoamingMode();
-
-        mController.updateState(mPreference);
-
-        assertThat(mPreference.getValue()).isEqualTo(
-                Integer.toString(TelephonyManager.CDMA_ROAMING_MODE_HOME));
-    }
-
-    @Test
-    public void updateState_LteGSMWcdma_disabled() {
-        doReturn(TelephonyManager.CDMA_ROAMING_MODE_HOME).when(
-                mTelephonyManager).getCdmaRoamingMode();
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID,
-                TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA);
-
-        mController.updateState(mPreference);
-
-        assertThat(mPreference.isEnabled()).isFalse();
-    }
-
-    @Test
-    public void updateState_stateOther_resetToDefault() {
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.CDMA_ROAMING_MODE,
-                TelephonyManager.CDMA_ROAMING_MODE_HOME);
-        doReturn(TelephonyManager.CDMA_ROAMING_MODE_AFFILIATED).when(
-                mTelephonyManager).getCdmaRoamingMode();
-
-        mController.updateState(mPreference);
-
-        assertThat(mPreference.getValue()).isEqualTo(
-                Integer.toString(TelephonyManager.CDMA_ROAMING_MODE_ANY));
-        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
-                Settings.Global.CDMA_ROAMING_MODE,
-                TelephonyManager.CDMA_ROAMING_MODE_HOME)).isEqualTo(
-                TelephonyManager.CDMA_ROAMING_MODE_ANY);
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceControllerTest.java
deleted file mode 100644
index d1a794d..0000000
--- a/tests/robotests/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceControllerTest.java
+++ /dev/null
@@ -1,136 +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.settings.network.telephony.gsm;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.app.ProgressDialog;
-import android.content.Context;
-import android.os.PersistableBundle;
-import android.telephony.CarrierConfigManager;
-import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
-
-import androidx.lifecycle.LifecycleOwner;
-import androidx.preference.SwitchPreference;
-
-import com.android.settings.R;
-import com.android.settingslib.core.lifecycle.Lifecycle;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Answers;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.Robolectric;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class AutoSelectPreferenceControllerTest {
-    private static final int SUB_ID = 2;
-    private static final String OPERATOR_NAME = "T-mobile";
-
-    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
-    private TelephonyManager mTelephonyManager;
-    @Mock
-    private SubscriptionManager mSubscriptionManager;
-    @Mock
-    private CarrierConfigManager mCarrierConfigManager;
-    @Mock
-    private ProgressDialog mProgressDialog;
-
-    private PersistableBundle mCarrierConfig;
-    private AutoSelectPreferenceController mController;
-    private SwitchPreference mSwitchPreference;
-    private Context mContext;
-    private LifecycleOwner mLifecycleOwner;
-    private Lifecycle mLifecycle;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mContext = spy(RuntimeEnvironment.application);
-        mLifecycleOwner = () -> mLifecycle;
-        mLifecycle = new Lifecycle(mLifecycleOwner);
-        when(mContext.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mTelephonyManager);
-        when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager);
-        when(mContext.getSystemService(CarrierConfigManager.class)).thenReturn(
-                mCarrierConfigManager);
-        when(mTelephonyManager.createForSubscriptionId(SUB_ID)).thenReturn(mTelephonyManager);
-
-        mCarrierConfig = new PersistableBundle();
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_ONLY_AUTO_SELECT_IN_HOME_NETWORK_BOOL,
-                true);
-        when(mCarrierConfigManager.getConfigForSubId(SUB_ID)).thenReturn(mCarrierConfig);
-
-        mSwitchPreference = new SwitchPreference(mContext);
-        mController = new AutoSelectPreferenceController(mContext, "auto_select");
-        mController.mProgressDialog = mProgressDialog;
-        mController.mSwitchPreference = mSwitchPreference;
-        mController.init(mLifecycle, SUB_ID);
-    }
-
-    @Test
-    public void setChecked_isChecked_showProgressDialog() {
-        when(mTelephonyManager.getNetworkSelectionMode()).thenReturn(
-                TelephonyManager.NETWORK_SELECTION_MODE_AUTO);
-
-        assertThat(mController.setChecked(true)).isFalse();
-        Robolectric.flushBackgroundThreadScheduler();
-
-        verify(mProgressDialog).show();
-        verify(mTelephonyManager).setNetworkSelectionModeAutomatic();
-    }
-
-    @Test
-    public void updateState_isRoaming_enabled() {
-        when(mTelephonyManager.getServiceState().getRoaming()).thenReturn(true);
-
-        mController.updateState(mSwitchPreference);
-
-        assertThat(mSwitchPreference.isEnabled()).isTrue();
-    }
-
-    @Test
-    public void updateState_notRoamingWithAutoSelectOn_disabled() {
-        when(mTelephonyManager.getServiceState().getRoaming()).thenReturn(false);
-        doReturn(OPERATOR_NAME).when(mTelephonyManager).getSimOperatorName();
-
-        mController.updateState(mSwitchPreference);
-
-        assertThat(mSwitchPreference.isEnabled()).isFalse();
-        assertThat(mSwitchPreference.getSummary()).isEqualTo(
-                mContext.getString(R.string.manual_mode_disallowed_summary,
-                        mTelephonyManager.getSimOperatorName()));
-    }
-
-    @Test
-    public void init_carrierConfigNull_shouldNotCrash() {
-        when(mCarrierConfigManager.getConfigForSubId(SUB_ID)).thenReturn(null);
-
-        // Should not crash
-        mController.init(mLifecycle, SUB_ID);
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceControllerTest.java
deleted file mode 100644
index 60de5aa..0000000
--- a/tests/robotests/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceControllerTest.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.settings.network.telephony.gsm;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.os.PersistableBundle;
-import android.telephony.CarrierConfigManager;
-import android.telephony.ServiceState;
-import android.telephony.SubscriptionInfo;
-import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
-
-import androidx.lifecycle.LifecycleOwner;
-import androidx.preference.Preference;
-
-import com.android.settings.R;
-import com.android.settingslib.core.lifecycle.Lifecycle;
-
-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;
-
-@RunWith(RobolectricTestRunner.class)
-public class OpenNetworkSelectPagePreferenceControllerTest {
-    private static final int SUB_ID = 2;
-    private static final String OPERATOR_NAME = "T-mobile";
-
-    @Mock
-    private TelephonyManager mTelephonyManager;
-    @Mock
-    private SubscriptionManager mSubscriptionManager;
-    @Mock
-    private CarrierConfigManager mCarrierConfigManager;
-    @Mock
-    private ServiceState mServiceState;
-    @Mock
-    private SubscriptionInfo mSubscriptionInfo;
-
-    private PersistableBundle mCarrierConfig;
-    private OpenNetworkSelectPagePreferenceController mController;
-    private Preference mPreference;
-    private Context mContext;
-    private LifecycleOwner mLifecycleOwner;
-    private Lifecycle mLifecycle;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mContext = spy(RuntimeEnvironment.application);
-        mLifecycleOwner = () -> mLifecycle;
-        mLifecycle = new Lifecycle(mLifecycleOwner);
-        when(mContext.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mTelephonyManager);
-        when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager);
-        when(mContext.getSystemService(CarrierConfigManager.class)).thenReturn(
-                mCarrierConfigManager);
-        when(mTelephonyManager.createForSubscriptionId(SUB_ID)).thenReturn(mTelephonyManager);
-        when(mTelephonyManager.getServiceState()).thenReturn(mServiceState);
-
-        mCarrierConfig = new PersistableBundle();
-        when(mCarrierConfigManager.getConfigForSubId(SUB_ID)).thenReturn(mCarrierConfig);
-
-        when(mSubscriptionInfo.getSubscriptionId()).thenReturn(SUB_ID);
-        when(mSubscriptionInfo.getCarrierName()).thenReturn(OPERATOR_NAME);
-
-        when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn(
-                Arrays.asList(mSubscriptionInfo));
-        when(mSubscriptionManager.getAccessibleSubscriptionInfoList()).thenReturn(
-                Arrays.asList(mSubscriptionInfo));
-
-        when(mTelephonyManager.getNetworkOperatorName()).thenReturn(OPERATOR_NAME);
-
-        mPreference = new Preference(mContext);
-        mController = new OpenNetworkSelectPagePreferenceController(mContext,
-                "open_network_select");
-        mController.init(mLifecycle, SUB_ID);
-    }
-
-    @Test
-    public void updateState_modeAuto_disabled() {
-        when(mTelephonyManager.getNetworkSelectionMode()).thenReturn(
-                TelephonyManager.NETWORK_SELECTION_MODE_AUTO);
-
-        mController.updateState(mPreference);
-
-        assertThat(mPreference.isEnabled()).isFalse();
-    }
-
-    @Test
-    public void getSummary_inService_returnOperatorName() {
-        when(mServiceState.getState()).thenReturn(ServiceState.STATE_IN_SERVICE);
-
-        assertThat(mController.getSummary()).isEqualTo(OPERATOR_NAME);
-    }
-
-    @Test
-    public void getSummary_notInService_returnDisconnect() {
-        when(mServiceState.getState()).thenReturn(ServiceState.STATE_OUT_OF_SERVICE);
-
-        assertThat(mController.getSummary()).isEqualTo(
-                mContext.getString(R.string.network_disconnected));
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/notification/AssistantFeedbackPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/AssistantFeedbackPreferenceControllerTest.java
index 8cfb0e0..9f172a6 100644
--- a/tests/robotests/src/com/android/settings/notification/AssistantFeedbackPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/AssistantFeedbackPreferenceControllerTest.java
@@ -28,12 +28,18 @@
 import static org.mockito.Mockito.when;
 
 import android.content.Context;
+import android.provider.DeviceConfig;
 import android.provider.Settings;
 
 import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
 import androidx.preference.TwoStatePreference;
 
+import com.android.internal.config.sysui.SystemUiDeviceConfigFlags;
+import com.android.settings.core.BasePreferenceController;
+import com.android.settings.testutils.shadow.ShadowDeviceConfig;
+
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -42,8 +48,10 @@
 import org.mockito.MockitoAnnotations;
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
 
 @RunWith(RobolectricTestRunner.class)
+@Config(shadows = {ShadowDeviceConfig.class})
 public class AssistantFeedbackPreferenceControllerTest {
 
     @Mock(answer = Answers.RETURNS_DEEP_STUBS)
@@ -65,14 +73,48 @@
         when(mScreen.findPreference(mPreference.getKey())).thenReturn(mPreference);
     }
 
+    @After
+    public void tearDown() {
+        ShadowDeviceConfig.reset();
+    }
+
     @Test
-    public void testIsVisible() {
+    public void testIsVisible_DeviceConfigOn() {
+        DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI,
+                SystemUiDeviceConfigFlags.ENABLE_NAS_FEEDBACK, "true", true);
         mController.displayPreference(mScreen);
 
         assertThat(mPreference.isVisible()).isTrue();
     }
 
     @Test
+    public void testIsVisible_DeviceConfigOff() {
+        DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI,
+                SystemUiDeviceConfigFlags.ENABLE_NAS_FEEDBACK, "false", true);
+        mController.displayPreference(mScreen);
+
+        assertThat(mPreference.isVisible()).isFalse();
+    }
+
+    @Test
+    public void getAvailabilityStatus_DeviceConfigOn_returnAvailable() {
+        DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI,
+                SystemUiDeviceConfigFlags.ENABLE_NAS_FEEDBACK, "true", true);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(
+                BasePreferenceController.AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_DeviceConfigOff_returnUnavailable() {
+        DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI,
+                SystemUiDeviceConfigFlags.ENABLE_NAS_FEEDBACK, "false", true);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(
+                BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
+    }
+
+    @Test
     public void updateState_preferenceSetCheckedWhenSettingIsOn() {
         final TwoStatePreference preference = mock(TwoStatePreference.class);
         final Context context = RuntimeEnvironment.application;
diff --git a/tests/robotests/src/com/android/settings/notification/zen/ZenCustomRadioButtonPreferenceTest.java b/tests/robotests/src/com/android/settings/notification/zen/ZenCustomRadioButtonPreferenceTest.java
deleted file mode 100644
index f6e51cd..0000000
--- a/tests/robotests/src/com/android/settings/notification/zen/ZenCustomRadioButtonPreferenceTest.java
+++ /dev/null
@@ -1,110 +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.settings.notification.zen;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.RadioButton;
-
-import androidx.preference.PreferenceViewHolder;
-
-import com.android.settings.R;
-import com.android.settings.notification.zen.ZenCustomRadioButtonPreference;
-
-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 ZenCustomRadioButtonPreferenceTest {
-
-    private Context mContext;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-    }
-
-    @Test
-    public void createNewPreference_shouldSetLayout() {
-        final ZenCustomRadioButtonPreference preference
-                = new ZenCustomRadioButtonPreference(mContext);
-
-        assertThat(preference.getLayoutResource()).isEqualTo(R.layout.preference_two_target_radio);
-        assertThat(preference.getWidgetLayoutResource())
-                .isEqualTo(R.layout.preference_widget_gear);
-    }
-
-    @Test
-    public void setChecked_shouldUpdateButtonCheckedState() {
-        final ZenCustomRadioButtonPreference preference =
-                new ZenCustomRadioButtonPreference(mContext);
-        final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(
-                LayoutInflater.from(mContext).inflate(
-                  R.layout.preference_two_target_radio, null));
-        final RadioButton toggle = (RadioButton) holder.findViewById(android.R.id.checkbox);
-        preference.onBindViewHolder(holder);
-
-        preference.setChecked(true);
-        assertThat(toggle.isChecked()).isTrue();
-
-        preference.setChecked(false);
-        assertThat(toggle.isChecked()).isFalse();
-    }
-
-    @Test
-    public void clickRadioButton_shouldNotifyRadioButtonClicked() {
-        final ZenCustomRadioButtonPreference preference
-                = new ZenCustomRadioButtonPreference(mContext);
-        final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(
-                LayoutInflater.from(mContext).inflate(R.layout.preference_two_target_radio, null));
-        final View toggle = holder.findViewById(R.id.checkbox_frame);
-
-        ZenCustomRadioButtonPreference.OnRadioButtonClickListener l = mock(
-                ZenCustomRadioButtonPreference.OnRadioButtonClickListener.class);
-        preference.setOnRadioButtonClickListener(l);
-        preference.onBindViewHolder(holder);
-
-        toggle.performClick();
-        verify(l).onRadioButtonClick(preference);
-    }
-
-    @Test
-    public void clickWidgetView_shouldNotifyWidgetClicked() {
-        final ZenCustomRadioButtonPreference preference =
-                new ZenCustomRadioButtonPreference(mContext);
-        final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(
-                LayoutInflater.from(mContext).inflate(R.layout.preference_two_target_radio, null));
-        final View widgetView = holder.findViewById(android.R.id.widget_frame);
-
-        ZenCustomRadioButtonPreference.OnGearClickListener l = mock(
-                ZenCustomRadioButtonPreference.OnGearClickListener.class);
-        preference.setOnGearClickListener(l);
-        preference.onBindViewHolder(holder);
-
-        widgetView.performClick();
-        verify(l).onGearClick(preference);
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/notification/zen/ZenModeVisEffectsAllPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/zen/ZenModeVisEffectsAllPreferenceControllerTest.java
index 05537f3..45a40d3 100644
--- a/tests/robotests/src/com/android/settings/notification/zen/ZenModeVisEffectsAllPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/zen/ZenModeVisEffectsAllPreferenceControllerTest.java
@@ -40,11 +40,9 @@
 
 import androidx.preference.PreferenceScreen;
 
-import com.android.settings.notification.zen.ZenCustomRadioButtonPreference;
-import com.android.settings.notification.zen.ZenModeBackend;
-import com.android.settings.notification.zen.ZenModeVisEffectsAllPreferenceController;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settingslib.widget.RadioButtonPreference;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -63,7 +61,7 @@
     @Mock
     private ZenModeBackend mBackend;
     @Mock
-    private ZenCustomRadioButtonPreference mockPref;
+    private RadioButtonPreference mPref;
     private Context mContext;
     private FakeFeatureFactory mFeatureFactory;
     @Mock
@@ -86,7 +84,7 @@
                 mContext, mock(Lifecycle.class), PREF_KEY);
         ReflectionHelpers.setField(mController, "mBackend", mBackend);
 
-        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mockPref);
+        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPref);
         mController.displayPreference(mScreen);
     }
 
@@ -98,9 +96,9 @@
     @Test
     public void updateState_notChecked() {
         mBackend.mPolicy = new NotificationManager.Policy(0, 0, 0, 1);
-        mController.updateState(mockPref);
+        mController.updateState(mPref);
 
-        verify(mockPref).setChecked(false);
+        verify(mPref).setChecked(false);
     }
 
     @Test
@@ -115,9 +113,9 @@
                 | SUPPRESSED_EFFECT_PEEK
                 | SUPPRESSED_EFFECT_NOTIFICATION_LIST;
         mBackend.mPolicy = new NotificationManager.Policy(0, 0, 0, allSuppressed);
-        mController.updateState(mockPref);
+        mController.updateState(mPref);
 
-        verify(mockPref).setChecked(true);
+        verify(mPref).setChecked(true);
     }
 
     @Test
@@ -132,7 +130,7 @@
                 | SUPPRESSED_EFFECT_PEEK
                 | SUPPRESSED_EFFECT_NOTIFICATION_LIST;
         mBackend.mPolicy = new NotificationManager.Policy(0, 0, 0, 1);
-        mController.onRadioButtonClick(mockPref);
+        mController.onRadioButtonClicked(mPref);
         verify(mBackend).saveVisualEffectsPolicy(allSuppressed, true);
         verify(mFeatureFactory.metricsFeatureProvider).action(eq(mContext),
                 eq(ACTION_ZEN_SOUND_AND_VIS_EFFECTS),
diff --git a/tests/robotests/src/com/android/settings/notification/zen/ZenModeVisEffectsCustomPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/zen/ZenModeVisEffectsCustomPreferenceControllerTest.java
index baea9ef..88c2c50 100644
--- a/tests/robotests/src/com/android/settings/notification/zen/ZenModeVisEffectsCustomPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/zen/ZenModeVisEffectsCustomPreferenceControllerTest.java
@@ -38,11 +38,9 @@
 
 import androidx.preference.PreferenceScreen;
 
-import com.android.settings.notification.zen.ZenCustomRadioButtonPreference;
-import com.android.settings.notification.zen.ZenModeBackend;
-import com.android.settings.notification.zen.ZenModeVisEffectsCustomPreferenceController;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settingslib.widget.RadioButtonPreference;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -61,7 +59,7 @@
     @Mock
     private ZenModeBackend mBackend;
     @Mock
-    private ZenCustomRadioButtonPreference mockPref;
+    private RadioButtonPreference mPref;
     private Context mContext;
     @Mock
     private PreferenceScreen mScreen;
@@ -83,7 +81,7 @@
                 mContext, mock(Lifecycle.class), PREF_KEY);
         ReflectionHelpers.setField(mController, "mBackend", mBackend);
 
-        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mockPref);
+        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPref);
         mController.displayPreference(mScreen);
     }
 
@@ -102,9 +100,9 @@
     @Test
     public void updateState_notChecked_noVisEffects() {
         mBackend.mPolicy = new NotificationManager.Policy(0, 0, 0, 0);
-        mController.updateState(mockPref);
+        mController.updateState(mPref);
 
-        verify(mockPref).setChecked(false);
+        verify(mPref).setChecked(false);
     }
 
     @Test
@@ -119,25 +117,25 @@
                 | SUPPRESSED_EFFECT_PEEK
                 | SUPPRESSED_EFFECT_NOTIFICATION_LIST;
         mBackend.mPolicy = new NotificationManager.Policy(0, 0, 0, allSuppressed);
-        mController.updateState(mockPref);
+        mController.updateState(mPref);
 
-        verify(mockPref).setChecked(false);
+        verify(mPref).setChecked(false);
     }
 
     @Test
     public void updateState_checked() {
         mBackend.mPolicy = new NotificationManager.Policy(0, 0, 0, 2);
-        mController.updateState(mockPref);
+        mController.updateState(mPref);
 
-        verify(mockPref).setChecked(true);
+        verify(mPref).setChecked(true);
     }
 
     @Test
     public void updateState_listeners() {
         mBackend.mPolicy = new NotificationManager.Policy(0, 0, 0, 2);
-        mController.updateState(mockPref);
+        mController.updateState(mPref);
 
-        verify(mockPref).setOnGearClickListener(any());
-        verify(mockPref).setOnRadioButtonClickListener(any());
+        verify(mPref).setExtraWidgetOnClickListener(any());
+        verify(mPref).setOnClickListener(any());
     }
 }
diff --git a/tests/robotests/src/com/android/settings/notification/zen/ZenModeVisEffectsNonePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/zen/ZenModeVisEffectsNonePreferenceControllerTest.java
index aacb109..79c6cb8 100644
--- a/tests/robotests/src/com/android/settings/notification/zen/ZenModeVisEffectsNonePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/zen/ZenModeVisEffectsNonePreferenceControllerTest.java
@@ -40,11 +40,9 @@
 
 import androidx.preference.PreferenceScreen;
 
-import com.android.settings.notification.zen.ZenCustomRadioButtonPreference;
-import com.android.settings.notification.zen.ZenModeBackend;
-import com.android.settings.notification.zen.ZenModeVisEffectsNonePreferenceController;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settingslib.widget.RadioButtonPreference;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -63,7 +61,7 @@
     @Mock
     private ZenModeBackend mBackend;
     @Mock
-    private ZenCustomRadioButtonPreference mockPref;
+    private RadioButtonPreference mMockPref;
     private Context mContext;
     private FakeFeatureFactory mFeatureFactory;
     @Mock
@@ -86,7 +84,7 @@
                 mContext, mock(Lifecycle.class), PREF_KEY);
         ReflectionHelpers.setField(mController, "mBackend", mBackend);
 
-        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mockPref);
+        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mMockPref);
         mController.displayPreference(mScreen);
     }
 
@@ -98,17 +96,17 @@
     @Test
     public void updateState_notChecked() {
         mBackend.mPolicy = new NotificationManager.Policy(0, 0, 0, 1);
-        mController.updateState(mockPref);
+        mController.updateState(mMockPref);
 
-        verify(mockPref).setChecked(false);
+        verify(mMockPref).setChecked(false);
     }
 
     @Test
     public void updateState_checked() {
         mBackend.mPolicy = new NotificationManager.Policy(0, 0, 0, 0);
-        mController.updateState(mockPref);
+        mController.updateState(mMockPref);
 
-        verify(mockPref).setChecked(true);
+        verify(mMockPref).setChecked(true);
     }
 
     @Test
@@ -123,7 +121,7 @@
                 | SUPPRESSED_EFFECT_PEEK
                 | SUPPRESSED_EFFECT_NOTIFICATION_LIST;
         mBackend.mPolicy = new NotificationManager.Policy(0, 0, 0, 1);
-        mController.onRadioButtonClick(mockPref);
+        mController.onRadioButtonClicked(mMockPref);
         verify(mBackend).saveVisualEffectsPolicy(allSuppressed, false);
         verify(mFeatureFactory.metricsFeatureProvider).action(nullable(Context.class),
                 eq(ACTION_ZEN_SOUND_ONLY),
diff --git a/tests/robotests/src/com/android/settings/notification/zen/ZenRuleCustomPolicyPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/zen/ZenRuleCustomPolicyPreferenceControllerTest.java
index f6fa5b7..f149541 100644
--- a/tests/robotests/src/com/android/settings/notification/zen/ZenRuleCustomPolicyPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/zen/ZenRuleCustomPolicyPreferenceControllerTest.java
@@ -27,6 +27,7 @@
 import androidx.preference.PreferenceScreen;
 
 import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settingslib.widget.RadioButtonPreference;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -47,7 +48,7 @@
     @Mock
     private NotificationManager mNotificationManager;
     @Mock
-    private ZenCustomRadioButtonPreference mockPref;
+    private RadioButtonPreference mMockPref;
     @Mock
     private PreferenceScreen mScreen;
 
@@ -70,21 +71,21 @@
                 PREF_KEY);
         ReflectionHelpers.setField(mController, "mBackend", mBackend);
         when(mBackend.getAutomaticZenRule(RULE_ID)).thenReturn(mRule);
-        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mockPref);
+        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mMockPref);
         mController.displayPreference(mScreen);
     }
 
     @Test
     public void updateState_nullZenPolicy() {
         updateControllerZenPolicy(null);
-        mController.updateState(mockPref);
-        verify(mockPref).setChecked(false);
+        mController.updateState(mMockPref);
+        verify(mMockPref).setChecked(false);
     }
 
     @Test
     public void updateState_hasZenPolicy() {
         updateControllerZenPolicy(new ZenPolicy.Builder().build());
-        mController.updateState(mockPref);
-        verify(mockPref).setChecked(true);
+        mController.updateState(mMockPref);
+        verify(mMockPref).setChecked(true);
     }
 }
diff --git a/tests/robotests/src/com/android/settings/notification/zen/ZenRuleDefaultPolicyPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/zen/ZenRuleDefaultPolicyPreferenceControllerTest.java
index 7091ceb..c0258e4 100644
--- a/tests/robotests/src/com/android/settings/notification/zen/ZenRuleDefaultPolicyPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/zen/ZenRuleDefaultPolicyPreferenceControllerTest.java
@@ -27,6 +27,7 @@
 import androidx.preference.PreferenceScreen;
 
 import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settingslib.widget.RadioButtonPreference;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -47,7 +48,7 @@
     @Mock
     private NotificationManager mNotificationManager;
     @Mock
-    private ZenCustomRadioButtonPreference mockPref;
+    private RadioButtonPreference mMockPref;
     @Mock
     private PreferenceScreen mScreen;
 
@@ -70,21 +71,21 @@
                 PREF_KEY);
         ReflectionHelpers.setField(mController, "mBackend", mBackend);
         when(mBackend.getAutomaticZenRule(RULE_ID)).thenReturn(mRule);
-        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mockPref);
+        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mMockPref);
         mController.displayPreference(mScreen);
     }
 
     @Test
     public void updateState_nullZenPolicy() {
         updateControllerZenPolicy(null);
-        mController.updateState(mockPref);
-        verify(mockPref).setChecked(true);
+        mController.updateState(mMockPref);
+        verify(mMockPref).setChecked(true);
     }
 
     @Test
     public void updateState_hasZenPolicy() {
         updateControllerZenPolicy(new ZenPolicy.Builder().build());
-        mController.updateState(mockPref);
-        verify(mockPref).setChecked(false);
+        mController.updateState(mMockPref);
+        verify(mMockPref).setChecked(false);
     }
 }
diff --git a/tests/robotests/src/com/android/settings/notification/zen/ZenRulePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/zen/ZenRulePreferenceControllerTest.java
index 13963db..e3fef19 100644
--- a/tests/robotests/src/com/android/settings/notification/zen/ZenRulePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/zen/ZenRulePreferenceControllerTest.java
@@ -28,10 +28,8 @@
 
 import androidx.preference.PreferenceScreen;
 
-import com.android.settings.notification.zen.AbstractZenCustomRulePreferenceController;
-import com.android.settings.notification.zen.ZenCustomRadioButtonPreference;
-import com.android.settings.notification.zen.ZenModeBackend;
 import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settingslib.widget.RadioButtonPreference;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -51,7 +49,7 @@
     @Mock
     private NotificationManager mNotificationManager;
     @Mock
-    private ZenCustomRadioButtonPreference mockPref;
+    private RadioButtonPreference mMockPref;
     @Mock
     private PreferenceScreen mScreen;
 
@@ -67,7 +65,7 @@
         mContext = RuntimeEnvironment.application;
         mController = new TestablePreferenceController(mContext,"test", mock(Lifecycle.class));
         ReflectionHelpers.setField(mController, "mBackend", mBackend);
-        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mockPref);
+        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mMockPref);
         mController.displayPreference(mScreen);
     }
 
diff --git a/tests/robotests/src/com/android/settings/notification/zen/ZenRuleVisEffectsAllPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/zen/ZenRuleVisEffectsAllPreferenceControllerTest.java
index f30587f..edbcd06 100644
--- a/tests/robotests/src/com/android/settings/notification/zen/ZenRuleVisEffectsAllPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/zen/ZenRuleVisEffectsAllPreferenceControllerTest.java
@@ -27,6 +27,7 @@
 import androidx.preference.PreferenceScreen;
 
 import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settingslib.widget.RadioButtonPreference;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -47,7 +48,7 @@
     @Mock
     private NotificationManager mNotificationManager;
     @Mock
-    private ZenCustomRadioButtonPreference mockPref;
+    private RadioButtonPreference mMockPref;
     @Mock
     private PreferenceScreen mScreen;
 
@@ -69,7 +70,7 @@
                 PREF_KEY);
         ReflectionHelpers.setField(mController, "mBackend", mBackend);
         when(mBackend.getAutomaticZenRule(RULE_ID)).thenReturn(mRule);
-        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mockPref);
+        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mMockPref);
         mController.displayPreference(mScreen);
     }
 
@@ -78,8 +79,8 @@
         updateControllerZenPolicy(new ZenPolicy.Builder()
                 .hideAllVisualEffects()
                 .build());
-        mController.updateState(mockPref);
-        verify(mockPref).setChecked(false);
+        mController.updateState(mMockPref);
+        verify(mMockPref).setChecked(false);
     }
 
     @Test
@@ -87,8 +88,8 @@
         updateControllerZenPolicy(new ZenPolicy.Builder()
                 .showAllVisualEffects()
                 .build());
-        mController.updateState(mockPref);
-        verify(mockPref).setChecked(true);
+        mController.updateState(mMockPref);
+        verify(mMockPref).setChecked(true);
     }
 
     @Test
@@ -97,8 +98,8 @@
                 .showPeeking(true)
                 .showBadges(false)
                 .build());
-        mController.updateState(mockPref);
+        mController.updateState(mMockPref);
 
-        verify(mockPref).setChecked(false);
+        verify(mMockPref).setChecked(false);
     }
 }
diff --git a/tests/robotests/src/com/android/settings/notification/zen/ZenRuleVisEffectsCustomPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/zen/ZenRuleVisEffectsCustomPreferenceControllerTest.java
index 99b76ce..ece5d5f 100644
--- a/tests/robotests/src/com/android/settings/notification/zen/ZenRuleVisEffectsCustomPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/zen/ZenRuleVisEffectsCustomPreferenceControllerTest.java
@@ -27,6 +27,7 @@
 import androidx.preference.PreferenceScreen;
 
 import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settingslib.widget.RadioButtonPreference;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -47,7 +48,7 @@
     @Mock
     private NotificationManager mNotificationManager;
     @Mock
-    private ZenCustomRadioButtonPreference mockPref;
+    private RadioButtonPreference mMockPref;
     @Mock
     private PreferenceScreen mScreen;
 
@@ -69,7 +70,7 @@
                 PREF_KEY);
         ReflectionHelpers.setField(mController, "mBackend", mBackend);
         when(mBackend.getAutomaticZenRule(RULE_ID)).thenReturn(mRule);
-        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mockPref);
+        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mMockPref);
         mController.displayPreference(mScreen);
     }
 
@@ -78,8 +79,8 @@
         updateControllerZenPolicy(new ZenPolicy.Builder()
                 .hideAllVisualEffects()
                 .build());
-        mController.updateState(mockPref);
-        verify(mockPref).setChecked(false);
+        mController.updateState(mMockPref);
+        verify(mMockPref).setChecked(false);
     }
 
     @Test
@@ -87,8 +88,8 @@
         updateControllerZenPolicy(new ZenPolicy.Builder()
                 .showAllVisualEffects()
                 .build());
-        mController.updateState(mockPref);
-        verify(mockPref).setChecked(false);
+        mController.updateState(mMockPref);
+        verify(mMockPref).setChecked(false);
     }
 
     @Test
@@ -97,8 +98,8 @@
                 .showPeeking(true)
                 .showBadges(false)
                 .build());
-        mController.updateState(mockPref);
+        mController.updateState(mMockPref);
 
-        verify(mockPref).setChecked(true);
+        verify(mMockPref).setChecked(true);
     }
 }
diff --git a/tests/robotests/src/com/android/settings/notification/zen/ZenRuleVisEffectsNonePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/zen/ZenRuleVisEffectsNonePreferenceControllerTest.java
index 510da5f..2daf4fb 100644
--- a/tests/robotests/src/com/android/settings/notification/zen/ZenRuleVisEffectsNonePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/zen/ZenRuleVisEffectsNonePreferenceControllerTest.java
@@ -27,6 +27,7 @@
 import androidx.preference.PreferenceScreen;
 
 import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settingslib.widget.RadioButtonPreference;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -47,7 +48,7 @@
     @Mock
     private NotificationManager mNotificationManager;
     @Mock
-    private ZenCustomRadioButtonPreference mockPref;
+    private RadioButtonPreference mMockPref;
     @Mock
     private PreferenceScreen mScreen;
 
@@ -69,7 +70,7 @@
                 PREF_KEY);
         ReflectionHelpers.setField(mController, "mBackend", mBackend);
         when(mBackend.getAutomaticZenRule(RULE_ID)).thenReturn(mRule);
-        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mockPref);
+        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mMockPref);
         mController.displayPreference(mScreen);
     }
 
@@ -78,8 +79,8 @@
         updateControllerZenPolicy(new ZenPolicy.Builder()
                 .hideAllVisualEffects()
                 .build());
-        mController.updateState(mockPref);
-        verify(mockPref).setChecked(true);
+        mController.updateState(mMockPref);
+        verify(mMockPref).setChecked(true);
     }
 
     @Test
@@ -87,8 +88,8 @@
         updateControllerZenPolicy(new ZenPolicy.Builder()
                 .showAllVisualEffects()
                 .build());
-        mController.updateState(mockPref);
-        verify(mockPref).setChecked(false);
+        mController.updateState(mMockPref);
+        verify(mMockPref).setChecked(false);
     }
 
     @Test
@@ -97,8 +98,8 @@
                 .showPeeking(true)
                 .showBadges(false)
                 .build());
-        mController.updateState(mockPref);
+        mController.updateState(mMockPref);
 
-        verify(mockPref).setChecked(false);
+        verify(mMockPref).setChecked(false);
     }
 }
diff --git a/tests/robotests/src/com/android/settings/panel/FakeSettingsPanelActivity.java b/tests/robotests/src/com/android/settings/panel/FakeSettingsPanelActivity.java
index 2a62b54..ba763ce 100644
--- a/tests/robotests/src/com/android/settings/panel/FakeSettingsPanelActivity.java
+++ b/tests/robotests/src/com/android/settings/panel/FakeSettingsPanelActivity.java
@@ -30,4 +30,4 @@
         final Intent intent = new Intent(FakePanelContent.FAKE_ACTION);
         return intent;
     }
-}
\ No newline at end of file
+}
diff --git a/tests/robotests/src/com/android/settings/panel/MediaOutputGroupPanelTest.java b/tests/robotests/src/com/android/settings/panel/MediaOutputGroupPanelTest.java
deleted file mode 100644
index 003fda7..0000000
--- a/tests/robotests/src/com/android/settings/panel/MediaOutputGroupPanelTest.java
+++ /dev/null
@@ -1,80 +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.settings.panel;
-
-import static com.android.settings.media.MediaOutputSlice.MEDIA_PACKAGE_NAME;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.net.Uri;
-
-import com.android.settings.slices.CustomSliceRegistry;
-
-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 java.util.List;
-
-@RunWith(RobolectricTestRunner.class)
-public class MediaOutputGroupPanelTest {
-
-    private static final String TEST_PACKAGENAME = "com.test.packagename";
-
-    private MediaOutputGroupPanel mPanel;
-    private Context mContext;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mContext = spy(RuntimeEnvironment.application);
-        when(mContext.getApplicationContext()).thenReturn(mContext);
-        mPanel = MediaOutputGroupPanel.create(mContext, TEST_PACKAGENAME);
-    }
-
-    @Test
-    public void getSlices_containsNecessarySlices() {
-        final List<Uri> uris = mPanel.getSlices();
-
-        assertThat(uris).containsExactly(CustomSliceRegistry.MEDIA_OUTPUT_GROUP_SLICE_URI);
-    }
-
-    @Test
-    public void getSlices_verifyPackageName_isEqual() {
-        final List<Uri> uris = mPanel.getSlices();
-
-        assertThat(uris.get(0).getQueryParameter(MEDIA_PACKAGE_NAME)).isEqualTo(TEST_PACKAGENAME);
-    }
-
-    @Test
-    public void getSeeMoreIntent_isNull() {
-        assertThat(mPanel.getSeeMoreIntent()).isNull();
-    }
-
-    @Test
-    public void getViewType_checkType() {
-        assertThat(mPanel.getViewType()).isEqualTo(PanelContent.VIEW_TYPE_SLIDER_LARGE_ICON);
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/panel/PanelFragmentTest.java b/tests/robotests/src/com/android/settings/panel/PanelFragmentTest.java
index 405e4c3..41935c4 100644
--- a/tests/robotests/src/com/android/settings/panel/PanelFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/panel/PanelFragmentTest.java
@@ -18,7 +18,6 @@
 package com.android.settings.panel;
 
 import static com.android.settings.panel.PanelContent.VIEW_TYPE_SLIDER;
-import static com.android.settings.panel.PanelContent.VIEW_TYPE_SLIDER_LARGE_ICON;
 
 import static com.google.common.truth.Truth.assertThat;
 
@@ -213,22 +212,6 @@
     }
 
     @Test
-    public void sliderLargeIconPanelType_displayFooterDivider() {
-        mFakePanelContent.setViewType(VIEW_TYPE_SLIDER_LARGE_ICON);
-        final ActivityController<FakeSettingsPanelActivity> activityController =
-                Robolectric.buildActivity(FakeSettingsPanelActivity.class);
-        activityController.setup();
-        final PanelFragment panelFragment = (PanelFragment)
-                Objects.requireNonNull(activityController
-                        .get()
-                        .getSupportFragmentManager()
-                        .findFragmentById(R.id.main_content));
-        final View footerDivider = panelFragment.mLayoutView.findViewById(R.id.footer_divider);
-        // Check visibility
-        assertThat(footerDivider.getVisibility()).isEqualTo(View.VISIBLE);
-    }
-
-    @Test
     public void sliderPanelType_notDisplayFooterDivider() {
         mFakePanelContent.setViewType(VIEW_TYPE_SLIDER);
         final ActivityController<FakeSettingsPanelActivity> activityController =
diff --git a/tests/robotests/src/com/android/settings/panel/PanelSlicesAdapterTest.java b/tests/robotests/src/com/android/settings/panel/PanelSlicesAdapterTest.java
index f8c2f84..ac74fe5 100644
--- a/tests/robotests/src/com/android/settings/panel/PanelSlicesAdapterTest.java
+++ b/tests/robotests/src/com/android/settings/panel/PanelSlicesAdapterTest.java
@@ -17,11 +17,8 @@
 package com.android.settings.panel;
 
 import static com.android.settings.panel.PanelContent.VIEW_TYPE_SLIDER;
-import static com.android.settings.panel.PanelContent.VIEW_TYPE_SLIDER_LARGE_ICON;
 import static com.android.settings.panel.PanelSlicesAdapter.MAX_NUM_OF_SLICES;
-import static com.android.settings.slices.CustomSliceRegistry.MEDIA_OUTPUT_GROUP_SLICE_URI;
 import static com.android.settings.slices.CustomSliceRegistry.MEDIA_OUTPUT_INDICATOR_SLICE_URI;
-import static com.android.settings.slices.CustomSliceRegistry.MEDIA_OUTPUT_SLICE_URI;
 import static com.android.settings.slices.CustomSliceRegistry.VOLUME_MEDIA_URI;
 
 import static com.google.common.truth.Truth.assertThat;
@@ -144,22 +141,6 @@
     }
 
     @Test
-    public void sliderLargeIconPanel_shouldNotAllowDividerBelow() {
-        addTestLiveData(MEDIA_OUTPUT_SLICE_URI);
-        mFakePanelContent.setViewType(PanelContent.VIEW_TYPE_SLIDER_LARGE_ICON);
-
-        final PanelSlicesAdapter adapter =
-                new PanelSlicesAdapter(mPanelFragment, mData, 0 /* metrics category */);
-        final int position = 0;
-        final ViewGroup view = new FrameLayout(mContext);
-        final SliceRowViewHolder viewHolder =
-                adapter.onCreateViewHolder(view, PanelContent.VIEW_TYPE_SLIDER_LARGE_ICON);
-        adapter.onBindViewHolder(viewHolder, position);
-
-        assertThat(viewHolder.isDividerAllowedBelow()).isFalse();
-    }
-
-    @Test
     public void sliderPanelType_shouldAllowDividerBelow() {
         addTestLiveData(VOLUME_MEDIA_URI);
         mFakePanelContent.setViewType(PanelContent.VIEW_TYPE_SLIDER);
@@ -191,42 +172,6 @@
     }
 
     @Test
-    public void outputSwitcherSlice_shouldAddFirstItemPadding() {
-        addTestLiveData(MEDIA_OUTPUT_SLICE_URI);
-
-        final PanelSlicesAdapter adapter =
-                new PanelSlicesAdapter(mPanelFragment, mData, 0 /* metrics category */);
-        final int position = 0;
-        final ViewGroup view = new FrameLayout(mContext);
-        final SliceRowViewHolder viewHolder =
-                adapter.onCreateViewHolder(view, PanelContent.VIEW_TYPE_SLIDER_LARGE_ICON);
-
-        adapter.onBindViewHolder(viewHolder, position);
-
-        assertThat(viewHolder.mSliceSliderLayout.getPaddingTop()).isEqualTo(
-                mPanelFragment.getResources().getDimensionPixelSize(
-                        R.dimen.output_switcher_slice_padding_top));
-    }
-
-    @Test
-    public void outputSwitcherGroupSlice_shouldAddFirstItemPadding() {
-        addTestLiveData(MEDIA_OUTPUT_GROUP_SLICE_URI);
-
-        final PanelSlicesAdapter adapter =
-                new PanelSlicesAdapter(mPanelFragment, mData, 0 /* metrics category */);
-        final int position = 0;
-        final ViewGroup view = new FrameLayout(mContext);
-        final SliceRowViewHolder viewHolder =
-                adapter.onCreateViewHolder(view, PanelContent.VIEW_TYPE_SLIDER_LARGE_ICON);
-
-        adapter.onBindViewHolder(viewHolder, position);
-
-        assertThat(viewHolder.mSliceSliderLayout.getPaddingTop()).isEqualTo(
-                mPanelFragment.getResources().getDimensionPixelSize(
-                        R.dimen.output_switcher_slice_padding_top));
-    }
-
-    @Test
     public void mediaOutputIndicatorSlice_notSliderPanel_noSliderLayout() {
         addTestLiveData(MEDIA_OUTPUT_INDICATOR_SLICE_URI);
 
@@ -256,19 +201,6 @@
     }
 
     @Test
-    public void onCreateViewHolder_viewTypeSliderLargeIcon_verifyLayout() {
-        final PanelSlicesAdapter adapter = new PanelSlicesAdapter(mPanelFragment, mData, 0);
-        final ViewGroup view = new FrameLayout(mContext);
-        final ArgumentCaptor<Integer> intArgumentCaptor = ArgumentCaptor.forClass(Integer.class);
-
-        adapter.onCreateViewHolder(view, VIEW_TYPE_SLIDER_LARGE_ICON);
-
-        verify(sLayoutInflater).inflate(intArgumentCaptor.capture(), eq(view), eq(false));
-        assertThat(intArgumentCaptor.getValue()).isEqualTo(
-                R.layout.panel_slice_slider_row_large_icon);
-    }
-
-    @Test
     public void onCreateViewHolder_viewTypeDefault_verifyLayout() {
         final PanelSlicesAdapter adapter =
                 new PanelSlicesAdapter(mPanelFragment, mData, 0);
diff --git a/tests/robotests/src/com/android/settings/panel/SettingsPanelActivityTest.java b/tests/robotests/src/com/android/settings/panel/SettingsPanelActivityTest.java
index 4a14798..25e1786 100644
--- a/tests/robotests/src/com/android/settings/panel/SettingsPanelActivityTest.java
+++ b/tests/robotests/src/com/android/settings/panel/SettingsPanelActivityTest.java
@@ -18,9 +18,6 @@
 
 import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
 
-import static com.android.settings.panel.SettingsPanelActivity.KEY_MEDIA_PACKAGE_NAME;
-import static com.android.settings.panel.SettingsPanelActivity.KEY_PANEL_TYPE_ARGUMENT;
-
 import static com.google.common.truth.Truth.assertThat;
 
 import static org.mockito.ArgumentMatchers.any;
@@ -31,7 +28,6 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import android.content.Intent;
 import android.content.res.Configuration;
 import android.os.Build;
 import android.view.Window;
@@ -83,35 +79,6 @@
     }
 
     @Test
-    public void startMediaOutputSlice_withPackageName_bundleShouldHaveValue() {
-        final Intent intent = new Intent()
-                .setAction("com.android.settings.panel.action.MEDIA_OUTPUT")
-                .putExtra("com.android.settings.panel.extra.PACKAGE_NAME",
-                        "com.google.android.music");
-
-        final SettingsPanelActivity activity =
-                Robolectric.buildActivity(SettingsPanelActivity.class, intent).create().get();
-
-        assertThat(activity.mBundle.getString(KEY_MEDIA_PACKAGE_NAME))
-                .isEqualTo("com.google.android.music");
-        assertThat(activity.mBundle.getString(KEY_PANEL_TYPE_ARGUMENT))
-                .isEqualTo("com.android.settings.panel.action.MEDIA_OUTPUT");
-    }
-
-    @Test
-    public void startMediaOutputSlice_withoutPackageName_bundleShouldHaveValue() {
-        final Intent intent = new Intent()
-                .setAction("com.android.settings.panel.action.MEDIA_OUTPUT");
-
-        final SettingsPanelActivity activity =
-                Robolectric.buildActivity(SettingsPanelActivity.class, intent).create().get();
-
-        assertThat(activity.mBundle.containsKey(KEY_MEDIA_PACKAGE_NAME)).isTrue();
-        assertThat(activity.mBundle.getString(KEY_PANEL_TYPE_ARGUMENT))
-                .isEqualTo("com.android.settings.panel.action.MEDIA_OUTPUT");
-    }
-
-    @Test
     public void onStart_isNotDebuggable_shouldHideSystemOverlay() {
         ReflectionHelpers.setStaticField(Build.class, "IS_DEBUGGABLE", false);
 
diff --git a/tests/robotests/src/com/android/settings/search/FakeSettingsFragment.java b/tests/robotests/src/com/android/settings/search/FakeSettingsFragment.java
index 19282dd..7a229f6 100644
--- a/tests/robotests/src/com/android/settings/search/FakeSettingsFragment.java
+++ b/tests/robotests/src/com/android/settings/search/FakeSettingsFragment.java
@@ -115,4 +115,4 @@
                     return keys;
                 }
             };
-}
\ No newline at end of file
+}
diff --git a/tests/robotests/src/com/android/settings/security/RequestManageCredentialsTest.java b/tests/robotests/src/com/android/settings/security/RequestManageCredentialsTest.java
index ccc6a0b..aacbf0c 100644
--- a/tests/robotests/src/com/android/settings/security/RequestManageCredentialsTest.java
+++ b/tests/robotests/src/com/android/settings/security/RequestManageCredentialsTest.java
@@ -18,18 +18,24 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.robolectric.Shadows.shadowOf;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
 
-import android.app.Activity;
+import android.app.admin.DevicePolicyManager;
+import android.content.ComponentName;
 import android.content.Intent;
 import android.net.Uri;
+import android.os.UserHandle;
 import android.security.AppUriAuthenticationPolicy;
 import android.security.Credentials;
+import android.security.IKeyChainService;
 import android.security.KeyChain;
 import android.widget.Button;
 import android.widget.LinearLayout;
 
-import androidx.annotation.NonNull;
 import androidx.recyclerview.widget.RecyclerView;
 
 import com.android.settings.R;
@@ -37,10 +43,10 @@
 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.shadows.ShadowActivity;
 
 @RunWith(RobolectricTestRunner.class)
 public class RequestManageCredentialsTest {
@@ -52,7 +58,14 @@
 
     private RequestManageCredentials mActivity;
 
-    private ShadowActivity mShadowActivity;
+    @Mock
+    private DevicePolicyManager mDevicePolicyManager;
+
+    @Mock
+    private KeyChain.KeyChainConnection mKeyChainConnection;
+
+    @Mock
+    private IKeyChainService mKeyChainService;
 
     @Before
     public void setUp() {
@@ -60,21 +73,98 @@
     }
 
     @Test
-    public void onCreate_intentActionNotManageCredentials_finishActivity() {
-        final Intent intent = new Intent("android.security.ANOTHER_ACTION");
+    public void onCreate_intentActionNotManageCredentials_finishActivity()
+            throws Exception {
+        final Intent intent = new Intent(Credentials.ACTION_MANAGE_CREDENTIALS + "_bad");
+        intent.putExtra(KeyChain.EXTRA_AUTHENTICATION_POLICY, AUTHENTICATION_POLICY);
+        setupActivityWithAction(intent);
+        when(mDevicePolicyManager.getDeviceOwnerUser()).thenReturn(null);
+        when(mDevicePolicyManager.getProfileOwner()).thenReturn(null);
+        when(mActivity.getLaunchedFromPackage()).thenReturn("com.example.credapp");
 
-        initActivity(intent);
+        mActivity.onCreate(null);
 
         assertThat(mActivity).isNotNull();
         assertThat(mActivity.isFinishing()).isTrue();
     }
 
     @Test
-    public void onCreate_authenticationPolicyProvided_startActivity() {
+    public void onCreate_noAuthenticationPolicy_finishActivity()
+            throws Exception {
+        final Intent intent = new Intent(Credentials.ACTION_MANAGE_CREDENTIALS);
+        setupActivityWithAction(intent);
+        when(mDevicePolicyManager.getDeviceOwnerUser()).thenReturn(null);
+        when(mDevicePolicyManager.getProfileOwner()).thenReturn(null);
+        when(mActivity.getLaunchedFromPackage()).thenReturn("com.example.credapp");
+
+        mActivity.onCreate(null);
+
+        assertThat(mActivity).isNotNull();
+        assertThat(mActivity.isFinishing()).isTrue();
+    }
+
+    @Test
+    public void onCreate_invalidAuthenticationPolicy_finishActivity()
+            throws Exception {
+        final Intent intent = new Intent(Credentials.ACTION_MANAGE_CREDENTIALS);
+        intent.putExtra(KeyChain.EXTRA_AUTHENTICATION_POLICY, "Invalid policy");
+
+        setupActivityWithAction(intent);
+        when(mDevicePolicyManager.getDeviceOwnerUser()).thenReturn(null);
+        when(mDevicePolicyManager.getProfileOwner()).thenReturn(null);
+        when(mActivity.getLaunchedFromPackage()).thenReturn("com.example.credapp");
+
+        mActivity.onCreate(null);
+
+        assertThat(mActivity).isNotNull();
+        assertThat(mActivity.isFinishing()).isTrue();
+    }
+
+    @Test
+    public void onCreate_runOnManagedProfile_finishActivity()
+            throws Exception {
         final Intent intent = new Intent(Credentials.ACTION_MANAGE_CREDENTIALS);
         intent.putExtra(KeyChain.EXTRA_AUTHENTICATION_POLICY, AUTHENTICATION_POLICY);
 
-        initActivity(intent);
+        setupActivityWithAction(intent);
+        when(mDevicePolicyManager.getDeviceOwnerUser()).thenReturn(null);
+        when(mDevicePolicyManager.getProfileOwner()).thenReturn(new ComponentName("pkg", "cls"));
+        when(mActivity.getLaunchedFromPackage()).thenReturn("com.example.credapp");
+
+        mActivity.onCreate(null);
+
+        assertThat(mActivity).isNotNull();
+        assertThat(mActivity.isFinishing()).isTrue();
+    }
+
+    @Test
+    public void onCreate_runOnManagedDevice_finishActivity()
+            throws Exception {
+        final Intent intent = new Intent(Credentials.ACTION_MANAGE_CREDENTIALS);
+        intent.putExtra(KeyChain.EXTRA_AUTHENTICATION_POLICY, AUTHENTICATION_POLICY);
+
+        setupActivityWithAction(intent);
+        when(mDevicePolicyManager.getDeviceOwnerUser()).thenReturn(UserHandle.SYSTEM);
+        when(mDevicePolicyManager.getProfileOwner()).thenReturn(null);
+        when(mActivity.getLaunchedFromPackage()).thenReturn("com.example.credapp");
+
+        mActivity.onCreate(null);
+
+        assertThat(mActivity).isNotNull();
+        assertThat(mActivity.isFinishing()).isTrue();
+    }
+
+    @Test
+    public void onCreate_authenticationPolicyProvided_startActivity() throws Exception {
+        final Intent intent = new Intent(Credentials.ACTION_MANAGE_CREDENTIALS);
+        intent.putExtra(KeyChain.EXTRA_AUTHENTICATION_POLICY, AUTHENTICATION_POLICY);
+        setupActivityWithAction(intent);
+
+        when(mDevicePolicyManager.getDeviceOwnerUser()).thenReturn(null);
+        when(mDevicePolicyManager.getProfileOwner()).thenReturn(null);
+        when(mActivity.getLaunchedFromPackage()).thenReturn("com.example.credapp");
+
+        mActivity.onCreate(null);
 
         assertThat(mActivity).isNotNull();
         assertThat(mActivity.isFinishing()).isFalse();
@@ -84,23 +174,10 @@
         assertThat((Button) mActivity.findViewById(R.id.dont_allow_button)).isNotNull();
     }
 
-    @Test
-    public void onCreate_dontAllowButtonClicked_finishActivity() {
-        final Intent intent = new Intent(Credentials.ACTION_MANAGE_CREDENTIALS);
-        intent.putExtra(KeyChain.EXTRA_AUTHENTICATION_POLICY, AUTHENTICATION_POLICY);
-
-        initActivity(intent);
-
-        Button dontAllowButton = mActivity.findViewById(R.id.dont_allow_button);
-        assertThat(dontAllowButton.hasOnClickListeners()).isTrue();
-        dontAllowButton.performClick();
-        assertThat(mActivity.isFinishing()).isTrue();
-        assertThat(mShadowActivity.getResultCode()).isEqualTo(Activity.RESULT_CANCELED);
+    private void setupActivityWithAction(Intent intent) throws Exception {
+        mActivity = spy(Robolectric.buildActivity(RequestManageCredentials.class, intent).get());
+        doReturn(mKeyChainConnection).when(mActivity).getKeyChainConnection(eq(mActivity), any());
+        doReturn(mDevicePolicyManager).when(mActivity).getSystemService(DevicePolicyManager.class);
+        when(mKeyChainConnection.getService()).thenReturn(mKeyChainService);
     }
-
-    private void initActivity(@NonNull Intent intent) {
-        mActivity = Robolectric.buildActivity(RequestManageCredentials.class, intent).setup().get();
-        mShadowActivity = shadowOf(mActivity);
-    }
-
 }
diff --git a/tests/robotests/src/com/android/settings/sim/SimSelectNotificationTest.java b/tests/robotests/src/com/android/settings/sim/SimSelectNotificationTest.java
index 8f861eb..84e88cb 100644
--- a/tests/robotests/src/com/android/settings/sim/SimSelectNotificationTest.java
+++ b/tests/robotests/src/com/android/settings/sim/SimSelectNotificationTest.java
@@ -21,11 +21,17 @@
 import static android.provider.Settings.ENABLE_MMS_DATA_REQUEST_REASON_OUTGOING_MMS;
 import static android.provider.Settings.EXTRA_ENABLE_MMS_DATA_REQUEST_REASON;
 import static android.provider.Settings.EXTRA_SUB_ID;
+import static android.telephony.TelephonyManager.EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE;
+import static android.telephony.TelephonyManager.EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE_DATA;
+import static android.telephony.TelephonyManager.EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE_DISMISS;
 import static android.telephony.TelephonyManager.EXTRA_SIM_COMBINATION_NAMES;
 import static android.telephony.TelephonyManager.EXTRA_SIM_COMBINATION_WARNING_TYPE;
 import static android.telephony.TelephonyManager.EXTRA_SIM_COMBINATION_WARNING_TYPE_DUAL_CDMA;
 import static android.telephony.data.ApnSetting.TYPE_MMS;
 
+import static com.android.settings.sim.SimDialogActivity.DATA_PICK;
+import static com.android.settings.sim.SimDialogActivity.INVALID_PICK;
+import static com.android.settings.sim.SimDialogActivity.PICK_DISMISS;
 import static com.android.settings.sim.SimSelectNotification.ENABLE_MMS_NOTIFICATION_CHANNEL;
 import static com.android.settings.sim.SimSelectNotification.ENABLE_MMS_NOTIFICATION_ID;
 import static com.android.settings.sim.SimSelectNotification.SIM_WARNING_NOTIFICATION_CHANNEL;
@@ -36,6 +42,7 @@
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.clearInvocations;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
@@ -54,7 +61,6 @@
 import android.telephony.TelephonyManager;
 
 import com.android.settings.R;
-
 import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
 
 import org.junit.Before;
@@ -197,6 +203,50 @@
     }
 
     @Test
+    public void onReceivePrimarySubListChange_WithDataPickExtra_shouldStartActivity() {
+        Intent intent = new Intent(TelephonyManager.ACTION_PRIMARY_SUBSCRIPTION_LIST_CHANGED);
+        intent.putExtra(EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE,
+                EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE_DATA);
+
+        mSimSelectNotification.onReceive(mContext, intent);
+
+        ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
+        verify(mContext).startActivity(intentCaptor.capture());
+        Intent capturedIntent = intentCaptor.getValue();
+        assertThat(capturedIntent).isNotNull();
+        assertThat(capturedIntent.getComponent().getClassName()).isEqualTo(
+                SimDialogActivity.class.getName());
+        assertThat(capturedIntent.getFlags() & Intent.FLAG_ACTIVITY_NEW_TASK)
+                .isNotEqualTo(0);
+        assertThat(capturedIntent.getIntExtra(SimDialogActivity.DIALOG_TYPE_KEY, INVALID_PICK))
+                .isEqualTo(DATA_PICK);
+    }
+
+    @Test
+    public void onReceivePrimarySubListChange_WithDismissExtra_shouldDismiss() {
+        Intent intent = new Intent(TelephonyManager.ACTION_PRIMARY_SUBSCRIPTION_LIST_CHANGED);
+        intent.putExtra(EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE,
+                EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE_DATA);
+
+        mSimSelectNotification.onReceive(mContext, intent);
+        clearInvocations(mContext);
+
+        // Dismiss.
+        intent.putExtra(EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE,
+                EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE_DISMISS);
+        mSimSelectNotification.onReceive(mContext, intent);
+        ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
+        verify(mContext).startActivity(intentCaptor.capture());
+        Intent capturedIntent = intentCaptor.getValue();
+        assertThat(capturedIntent).isNotNull();
+        assertThat(capturedIntent.getComponent().getClassName()).isEqualTo(
+                SimDialogActivity.class.getName());
+        assertThat(capturedIntent.getFlags() & Intent.FLAG_ACTIVITY_NEW_TASK)
+                .isNotEqualTo(0);
+        assertThat(capturedIntent.getIntExtra(SimDialogActivity.DIALOG_TYPE_KEY, INVALID_PICK))
+                .isEqualTo(PICK_DISMISS);
+    }
+    @Test
     public void onReceivePrimarySubListChange_DualCdmaWarning_notificationShouldSend() {
         Intent intent = new Intent(TelephonyManager.ACTION_PRIMARY_SUBSCRIPTION_LIST_CHANGED);
 
diff --git a/tests/robotests/src/com/android/settings/slices/SettingsSliceProviderTest.java b/tests/robotests/src/com/android/settings/slices/SettingsSliceProviderTest.java
index b5c6c44..c2c67e3 100644
--- a/tests/robotests/src/com/android/settings/slices/SettingsSliceProviderTest.java
+++ b/tests/robotests/src/com/android/settings/slices/SettingsSliceProviderTest.java
@@ -565,7 +565,8 @@
         final Intent settingsIntent = new Intent(Settings.ACTION_SETTINGS)
                 .setPackage(Utils.SETTINGS_PACKAGE_NAME);
         PendingIntent settingsPendingIntent =
-                PendingIntent.getActivity(mContext, 0, settingsIntent, 0);
+                PendingIntent.getActivity(mContext, 0, settingsIntent,
+                        PendingIntent.FLAG_IMMUTABLE);
 
         assertThat(pendingIntent).isEqualTo(settingsPendingIntent);
     }
diff --git a/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java b/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java
index 2c68269..6fb2eae 100644
--- a/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java
+++ b/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java
@@ -43,6 +43,7 @@
 import com.android.settings.security.SecurityFeatureProvider;
 import com.android.settings.slices.SlicesFeatureProvider;
 import com.android.settings.users.UserFeatureProvider;
+import com.android.settings.wifi.WifiTrackerLibProvider;
 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
 
 import org.mockito.Answers;
@@ -77,6 +78,8 @@
     public SearchFeatureProvider searchFeatureProvider;
     public ContextualCardFeatureProvider mContextualCardFeatureProvider;
 
+    public WifiTrackerLibProvider wifiTrackerLibProvider;
+
     /**
      * Call this in {@code @Before} method of the test class to use fake factory.
      */
@@ -120,6 +123,7 @@
         mBluetoothFeatureProvider = mock(BluetoothFeatureProvider.class);
         mAwareFeatureProvider = mock(AwareFeatureProvider.class);
         mFaceFeatureProvider = mock(FaceFeatureProvider.class);
+        wifiTrackerLibProvider = mock(WifiTrackerLibProvider.class);
     }
 
     @Override
@@ -231,4 +235,9 @@
     public FaceFeatureProvider getFaceFeatureProvider() {
         return mFaceFeatureProvider;
     }
+
+    @Override
+    public WifiTrackerLibProvider getWifiTrackerLibProvider() {
+        return wifiTrackerLibProvider;
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/testutils/FakeToggleController.java b/tests/robotests/src/com/android/settings/testutils/FakeToggleController.java
index 8bceb13..6812451 100644
--- a/tests/robotests/src/com/android/settings/testutils/FakeToggleController.java
+++ b/tests/robotests/src/com/android/settings/testutils/FakeToggleController.java
@@ -12,9 +12,7 @@
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- *
  */
-
 package com.android.settings.testutils;
 
 import android.content.Context;
@@ -26,8 +24,6 @@
 import com.android.settings.core.TogglePreferenceController;
 import com.android.settings.slices.SliceBackgroundWorker;
 
-import java.io.IOException;
-
 public class FakeToggleController extends TogglePreferenceController {
 
     public static final String AVAILABILITY_KEY = "fake_toggle_availability_key";
diff --git a/tests/robotests/src/com/android/settings/testutils/SliceTester.java b/tests/robotests/src/com/android/settings/testutils/SliceTester.java
index f2cce3c..ede5fbd 100644
--- a/tests/robotests/src/com/android/settings/testutils/SliceTester.java
+++ b/tests/robotests/src/com/android/settings/testutils/SliceTester.java
@@ -322,4 +322,4 @@
         expectedKeywords.add(data.getScreenTitle().toString());
         assertThat(keywords).containsExactlyElementsIn(expectedKeywords);
     }
-}
\ No newline at end of file
+}
diff --git a/tests/robotests/src/com/android/settings/users/UserDetailsSettingsTest.java b/tests/robotests/src/com/android/settings/users/UserDetailsSettingsTest.java
index 90c9172..50ddd2a 100644
--- a/tests/robotests/src/com/android/settings/users/UserDetailsSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/users/UserDetailsSettingsTest.java
@@ -363,7 +363,7 @@
         mFragment.initialize(mActivity, mArguments);
 
         verify(mRemoveUserPref).setOnPreferenceClickListener(mFragment);
-        verify(mRemoveUserPref).setTitle(R.string.user_exit_guest_title);
+        verify(mRemoveUserPref).setTitle(R.string.user_exit_guest_menu);
         verify(mFragment, never()).removePreference(KEY_REMOVE_USER);
     }
 
diff --git a/tests/robotests/src/com/android/settings/widget/DonutViewTest.java b/tests/robotests/src/com/android/settings/widget/DonutViewTest.java
deleted file mode 100644
index cc41f92..0000000
--- a/tests/robotests/src/com/android/settings/widget/DonutViewTest.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.android.settings.widget;
-
-import android.content.Context;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class DonutViewTest {
-    @Test
-    public void getPercentageStringSpannable_doesntCrashForMissingPercentage() {
-        Context context = RuntimeEnvironment.application;
-
-        DonutView.getPercentageStringSpannable(context.getResources(), "50%", "h");
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/widget/RadioButtonPreferenceWithExtraWidgetTest.java b/tests/robotests/src/com/android/settings/widget/RadioButtonPreferenceWithExtraWidgetTest.java
deleted file mode 100644
index 2e2d786..0000000
--- a/tests/robotests/src/com/android/settings/widget/RadioButtonPreferenceWithExtraWidgetTest.java
+++ /dev/null
@@ -1,140 +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.settings.widget;
-
-import static com.android.settings.widget.RadioButtonPreferenceWithExtraWidget.EXTRA_WIDGET_VISIBILITY_GONE;
-import static com.android.settings.widget.RadioButtonPreferenceWithExtraWidget.EXTRA_WIDGET_VISIBILITY_INFO;
-import static com.android.settings.widget.RadioButtonPreferenceWithExtraWidget.EXTRA_WIDGET_VISIBILITY_SETTING;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.junit.Assert.assertEquals;
-
-import android.app.Application;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import androidx.preference.PreferenceViewHolder;
-
-import com.android.settings.R;
-
-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 RadioButtonPreferenceWithExtraWidgetTest {
-
-    private Application mContext;
-    private RadioButtonPreferenceWithExtraWidget mPreference;
-
-    private TextView mSummary;
-    private ImageView mExtraWidget;
-    private View mExtraWidgetDivider;
-
-    private boolean mIsClickListenerCalled = false;
-    private View.OnClickListener mClickListener = new View.OnClickListener() {
-        @Override
-        public void onClick(View v) {
-            mIsClickListenerCalled = true;
-        }
-    };
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-        mPreference = new RadioButtonPreferenceWithExtraWidget(mContext);
-        mPreference.setSummary("test summary");
-
-        View view = LayoutInflater.from(mContext)
-                .inflate(R.layout.preference_radio_with_extra_widget, null);
-        PreferenceViewHolder preferenceViewHolder =
-                PreferenceViewHolder.createInstanceForTests(view);
-        mPreference.onBindViewHolder(preferenceViewHolder);
-
-        mSummary = view.findViewById(android.R.id.summary);
-        mExtraWidget = view.findViewById(R.id.radio_extra_widget);
-        mExtraWidgetDivider = view.findViewById(R.id.radio_extra_widget_divider);
-    }
-
-    @Test
-    public void shouldHaveRadioPreferenceWithExtraWidgetLayout() {
-        assertThat(mPreference.getLayoutResource())
-                .isEqualTo(R.layout.preference_radio_with_extra_widget);
-    }
-
-    @Test
-    public void iconSpaceReservedShouldBeFalse() {
-        assertThat(mPreference.isIconSpaceReserved()).isFalse();
-    }
-
-    @Test
-    public void summaryShouldBeVisible() {
-        assertEquals(View.VISIBLE, mSummary.getVisibility());
-    }
-
-    @Test
-    public void testSetExtraWidgetVisibility_gone() {
-        mPreference.setExtraWidgetVisibility(EXTRA_WIDGET_VISIBILITY_GONE);
-        assertEquals(View.GONE, mExtraWidget.getVisibility());
-        assertEquals(View.GONE, mExtraWidgetDivider.getVisibility());
-        assertThat(mExtraWidget.isClickable()).isFalse();
-    }
-
-    @Test
-    public void testSetExtraWidgetVisibility_info() {
-        mPreference.setExtraWidgetVisibility(EXTRA_WIDGET_VISIBILITY_INFO);
-        assertEquals(View.VISIBLE, mExtraWidget.getVisibility());
-        assertEquals(View.VISIBLE, mExtraWidgetDivider.getVisibility());
-        assertThat(mExtraWidget.isClickable()).isTrue();
-        assertEquals(mContext.getResources().getText(R.string.information_label),
-                mExtraWidget.getContentDescription());
-    }
-
-    @Test
-    public void testSetExtraWidgetVisibility_setting() {
-        mPreference.setExtraWidgetVisibility(EXTRA_WIDGET_VISIBILITY_SETTING);
-        assertEquals(View.VISIBLE, mExtraWidget.getVisibility());
-        assertEquals(View.VISIBLE, mExtraWidgetDivider.getVisibility());
-        assertThat(mExtraWidget.isClickable()).isTrue();
-        assertEquals(mContext.getResources().getText(R.string.settings_label),
-                mExtraWidget.getContentDescription());
-    }
-
-    @Test
-    public void testSetExtraWidgetOnClickListener() {
-        mPreference.setExtraWidgetOnClickListener(mClickListener);
-
-        assertThat(mIsClickListenerCalled).isFalse();
-        mExtraWidget.callOnClick();
-        assertThat(mIsClickListenerCalled).isTrue();
-    }
-
-    @Test
-    public void extraWidgetStaysEnabledWhenPreferenceIsDisabled() {
-        mPreference.setEnabled(false);
-        mExtraWidget.setEnabled(false);
-
-        assertThat(mExtraWidget.isEnabled()).isFalse();
-        mPreference.setExtraWidgetOnClickListener(mClickListener);
-        assertThat(mExtraWidget.isEnabled()).isTrue();
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragmentTest.java b/tests/robotests/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragmentTest.java
index 70c7810..24d4c47 100644
--- a/tests/robotests/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragmentTest.java
@@ -20,6 +20,7 @@
 
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyLong;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
@@ -41,6 +42,7 @@
 import androidx.fragment.app.FragmentActivity;
 
 import com.android.settings.R;
+import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.wifitrackerlib.WifiEntry;
 import com.android.wifitrackerlib.WifiPickerTracker;
 
@@ -82,6 +84,8 @@
     @Mock
     private WifiEntry mWifiEntry;
 
+    private FakeFeatureFactory mFakeFeatureFactory;
+
     @Mock
     private WifiPickerTracker mWifiPickerTracker;
 
@@ -106,6 +110,8 @@
         mSavedWpaConfigurationEntry = generateRegularWifiConfiguration(FAKE_NEW_SAVED_WPA_SSID,
                 WifiConfiguration.KeyMgmt.WPA_PSK, "\"1234567890\"");
 
+        mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
+
         mAddAppNetworksFragment.mWifiPickerTracker = mWifiPickerTracker;
         setUpOneScannedNetworkWithScanedLevel4();
     }
@@ -485,6 +491,9 @@
     }
 
     private void setupFragment() {
+        when(mFakeFeatureFactory.wifiTrackerLibProvider.createWifiPickerTracker(
+                any(), any(), any(), any(), any(), anyLong(), anyLong(), any()))
+                .thenReturn(mWifiPickerTracker);
         FragmentController.setupFragment(mAddAppNetworksFragment);
     }
 
diff --git a/tests/robotests/src/com/android/settings/wifi/slice/WifiScanWorkerTest.java b/tests/robotests/src/com/android/settings/wifi/slice/WifiScanWorkerTest.java
index 395048c..2a8d265 100644
--- a/tests/robotests/src/com/android/settings/wifi/slice/WifiScanWorkerTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/slice/WifiScanWorkerTest.java
@@ -20,11 +20,14 @@
 
 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 androidx.lifecycle.Lifecycle;
 
+import com.android.wifitrackerlib.MergedCarrierEntry;
 import com.android.wifitrackerlib.WifiEntry;
 import com.android.wifitrackerlib.WifiPickerTracker;
 
@@ -44,6 +47,8 @@
     private WifiScanWorker mWifiScanWorker;
     @Mock
     WifiPickerTracker mWifiPickerTracker;
+    @Mock
+    MergedCarrierEntry mMergedCarrierEntry;
 
     @Before
     public void setUp() {
@@ -51,6 +56,7 @@
 
         mWifiScanWorker = new WifiScanWorker(RuntimeEnvironment.application, WIFI_SLICE_URI);
         mWifiScanWorker.mWifiPickerTracker = mWifiPickerTracker;
+        when(mWifiPickerTracker.getMergedCarrierEntry()).thenReturn(mMergedCarrierEntry);
     }
 
     @Test
@@ -102,4 +108,24 @@
 
         assertThat(mWifiScanWorker.getWifiEntry(key)).isEqualTo(reachableWifiEntry);
     }
+
+    @Test
+    public void setCarrierNetworkEnabled_shouldCallMergedCarrierEntrySetEnabled() {
+        mWifiScanWorker.setCarrierNetworkEnabled(true);
+
+        verify(mMergedCarrierEntry).setEnabled(true);
+
+        mWifiScanWorker.setCarrierNetworkEnabled(false);
+
+        verify(mMergedCarrierEntry).setEnabled(false);
+    }
+
+    @Test
+    public void connectCarrierNetwork_shouldCallMergedCarrierEntryConnect() {
+        when(mMergedCarrierEntry.canConnect()).thenReturn(true);
+
+        mWifiScanWorker.connectCarrierNetwork();
+
+        verify(mMergedCarrierEntry).connect(any());
+    }
 }
diff --git a/tests/unit/Android.bp b/tests/unit/Android.bp
index 7556cbe..b857a0a 100644
--- a/tests/unit/Android.bp
+++ b/tests/unit/Android.bp
@@ -18,6 +18,7 @@
         "androidx.test.espresso.contrib-nodeps",
         "androidx.test.espresso.intents-nodeps",
         "androidx.test.ext.junit",
+        "androidx.preference_preference",
         "mockito-target-minus-junit4",
         "platform-test-annotations",
         "truth-prebuilt",
diff --git a/tests/unit/OWNERS b/tests/unit/OWNERS
new file mode 100644
index 0000000..4123742
--- /dev/null
+++ b/tests/unit/OWNERS
@@ -0,0 +1,2 @@
+# Additional reviewers for this and subdirectories.
+goldmanj@google.com
diff --git a/tests/robotests/src/com/android/settings/LinkifyUtilsTest.java b/tests/unit/src/com/android/settings/LinkifyUtilsTest.java
similarity index 91%
rename from tests/robotests/src/com/android/settings/LinkifyUtilsTest.java
rename to tests/unit/src/com/android/settings/LinkifyUtilsTest.java
index de06302..34586d5 100644
--- a/tests/robotests/src/com/android/settings/LinkifyUtilsTest.java
+++ b/tests/unit/src/com/android/settings/LinkifyUtilsTest.java
@@ -21,13 +21,14 @@
 import android.text.style.ClickableSpan;
 import android.widget.TextView;
 
+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.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class LinkifyUtilsTest {
     private static final String TEST_STRING = "to LINK_BEGINscanning settingsLINK_END.";
     private static final String WRONG_STRING = "to scanning settingsLINK_END.";
@@ -41,7 +42,7 @@
     public void setUp() throws Exception {
         mSpanStringBuilder = new StringBuilder(TEST_STRING);
         mWrongSpanStringBuilder = new StringBuilder(WRONG_STRING);
-        mTextView = new TextView(RuntimeEnvironment.application);
+        mTextView = new TextView(ApplicationProvider.getApplicationContext());
     }
 
     @Test
diff --git a/tests/unit/src/com/android/settings/TestUtils.java b/tests/unit/src/com/android/settings/TestUtils.java
new file mode 100644
index 0000000..d7b1ea4
--- /dev/null
+++ b/tests/unit/src/com/android/settings/TestUtils.java
@@ -0,0 +1,25 @@
+/*
+ * 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.settings;
+
+/**
+ * Convenience methods and constants for testing.
+ */
+public class TestUtils {
+    public static final long KILOBYTE = 1024L; // TODO: Change to 1000 in O Robolectric.
+    public static final long MEGABYTE = KILOBYTE * KILOBYTE;
+    public static final long GIGABYTE = KILOBYTE * MEGABYTE;
+}
diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceControllerTest.java b/tests/unit/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceControllerTest.java
similarity index 93%
rename from tests/robotests/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceControllerTest.java
rename to tests/unit/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceControllerTest.java
index 53f6cc0..7d903ee 100644
--- a/tests/robotests/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceControllerTest.java
@@ -19,6 +19,9 @@
 import static com.android.settings.accessibility.AccessibilityUtil.State.OFF;
 import static com.android.settings.accessibility.AccessibilityUtil.State.ON;
 
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import static com.google.common.truth.Truth.assertThat;
 
 import android.content.Context;
@@ -30,10 +33,8 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class AccessibilityShortcutPreferenceControllerTest {
 
     private Context mContext;
@@ -42,7 +43,7 @@
 
     @Before
     public void setUp() {
-        mContext = RuntimeEnvironment.application;
+        mContext = ApplicationProvider.getApplicationContext();
         mPreference = new SwitchPreference(mContext);
         mController = new AccessibilityShortcutPreferenceController(mContext,
                 "accessibility_shortcut_preference");
diff --git a/tests/robotests/src/com/android/settings/accessibility/DisableAnimationsPreferenceControllerTest.java b/tests/unit/src/com/android/settings/accessibility/DisableAnimationsPreferenceControllerTest.java
similarity index 92%
rename from tests/robotests/src/com/android/settings/accessibility/DisableAnimationsPreferenceControllerTest.java
rename to tests/unit/src/com/android/settings/accessibility/DisableAnimationsPreferenceControllerTest.java
index 245fb74..5706008 100644
--- a/tests/robotests/src/com/android/settings/accessibility/DisableAnimationsPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/accessibility/DisableAnimationsPreferenceControllerTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 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.
@@ -26,16 +26,16 @@
 import android.provider.Settings;
 
 import androidx.preference.SwitchPreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 
 import com.android.settings.core.BasePreferenceController;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class DisableAnimationsPreferenceControllerTest {
 
     private Context mContext;
@@ -44,7 +44,7 @@
 
     @Before
     public void setUp() {
-        mContext = RuntimeEnvironment.application;
+        mContext = ApplicationProvider.getApplicationContext();
         mPreference = new SwitchPreference(mContext);
         mController = new DisableAnimationsPreferenceController(mContext, "disable_animation");
     }
diff --git a/tests/robotests/src/com/android/settings/accessibility/FontWeightAdjustmentPreferenceControllerTest.java b/tests/unit/src/com/android/settings/accessibility/FontWeightAdjustmentPreferenceControllerTest.java
similarity index 93%
rename from tests/robotests/src/com/android/settings/accessibility/FontWeightAdjustmentPreferenceControllerTest.java
rename to tests/unit/src/com/android/settings/accessibility/FontWeightAdjustmentPreferenceControllerTest.java
index eb49edd..7f4048d 100644
--- a/tests/robotests/src/com/android/settings/accessibility/FontWeightAdjustmentPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/accessibility/FontWeightAdjustmentPreferenceControllerTest.java
@@ -22,16 +22,16 @@
 import android.provider.Settings;
 
 import androidx.preference.SwitchPreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 
 import com.android.settings.core.BasePreferenceController;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class FontWeightAdjustmentPreferenceControllerTest {
     private static final int ON = FontWeightAdjustmentPreferenceController.BOLD_TEXT_ADJUSTMENT;
     private static final int OFF = 0;
@@ -42,7 +42,7 @@
 
     @Before
     public void setUp() {
-        mContext = RuntimeEnvironment.application;
+        mContext = ApplicationProvider.getApplicationContext();
         mPreference = new SwitchPreference(mContext);
         mController = new FontWeightAdjustmentPreferenceController(
                 mContext, "font_weight_adjustment");
diff --git a/tests/robotests/src/com/android/settings/accessibility/HighTextContrastPreferenceControllerTest.java b/tests/unit/src/com/android/settings/accessibility/HighTextContrastPreferenceControllerTest.java
similarity index 91%
rename from tests/robotests/src/com/android/settings/accessibility/HighTextContrastPreferenceControllerTest.java
rename to tests/unit/src/com/android/settings/accessibility/HighTextContrastPreferenceControllerTest.java
index 6eaf7a7..6250fef 100644
--- a/tests/robotests/src/com/android/settings/accessibility/HighTextContrastPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/accessibility/HighTextContrastPreferenceControllerTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 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.
@@ -22,16 +22,16 @@
 import android.provider.Settings;
 
 import androidx.preference.SwitchPreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 
 import com.android.settings.core.BasePreferenceController;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class HighTextContrastPreferenceControllerTest {
 
     private static final int ON = 1;
@@ -44,7 +44,7 @@
 
     @Before
     public void setUp() {
-        mContext = RuntimeEnvironment.application;
+        mContext = ApplicationProvider.getApplicationContext();
         mPreference = new SwitchPreference(mContext);
         mController = new HighTextContrastPreferenceController(mContext, "text_contrast");
     }
diff --git a/tests/robotests/src/com/android/settings/accessibility/LargePointerIconPreferenceControllerTest.java b/tests/unit/src/com/android/settings/accessibility/LargePointerIconPreferenceControllerTest.java
similarity index 92%
rename from tests/robotests/src/com/android/settings/accessibility/LargePointerIconPreferenceControllerTest.java
rename to tests/unit/src/com/android/settings/accessibility/LargePointerIconPreferenceControllerTest.java
index 1f7f5ad..db588e8 100644
--- a/tests/robotests/src/com/android/settings/accessibility/LargePointerIconPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/accessibility/LargePointerIconPreferenceControllerTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 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.
@@ -25,16 +25,16 @@
 import android.provider.Settings;
 
 import androidx.preference.SwitchPreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 
 import com.android.settings.core.BasePreferenceController;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class LargePointerIconPreferenceControllerTest {
 
     private static final int UNKNOWN = -1;
@@ -45,7 +45,7 @@
 
     @Before
     public void setUp() {
-        mContext = RuntimeEnvironment.application;
+        mContext = ApplicationProvider.getApplicationContext();
         mPreference = new SwitchPreference(mContext);
         mController = new LargePointerIconPreferenceController(mContext, "large_pointer");
     }
diff --git a/tests/robotests/src/com/android/settings/accessibility/MagnificationPreferenceControllerTest.java b/tests/unit/src/com/android/settings/accessibility/MagnificationPreferenceControllerTest.java
similarity index 83%
rename from tests/robotests/src/com/android/settings/accessibility/MagnificationPreferenceControllerTest.java
rename to tests/unit/src/com/android/settings/accessibility/MagnificationPreferenceControllerTest.java
index d462c2a..a81c3e4 100644
--- a/tests/robotests/src/com/android/settings/accessibility/MagnificationPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/accessibility/MagnificationPreferenceControllerTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 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.
@@ -20,15 +20,16 @@
 
 import android.content.Context;
 
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import com.android.settings.core.BasePreferenceController;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class MagnificationPreferenceControllerTest {
 
     private Context mContext;
@@ -36,7 +37,7 @@
 
     @Before
     public void setUp() {
-        mContext = RuntimeEnvironment.application;
+        mContext = ApplicationProvider.getApplicationContext();
         mController = new MagnificationPreferenceController(mContext, "magnification");
     }
 
diff --git a/tests/robotests/src/com/android/settings/accessibility/PreferredShortcutTest.java b/tests/unit/src/com/android/settings/accessibility/PreferredShortcutTest.java
similarity index 100%
rename from tests/robotests/src/com/android/settings/accessibility/PreferredShortcutTest.java
rename to tests/unit/src/com/android/settings/accessibility/PreferredShortcutTest.java
diff --git a/tests/robotests/src/com/android/settings/accessibility/PreferredShortcutsTest.java b/tests/unit/src/com/android/settings/accessibility/PreferredShortcutsTest.java
similarity index 96%
rename from tests/robotests/src/com/android/settings/accessibility/PreferredShortcutsTest.java
rename to tests/unit/src/com/android/settings/accessibility/PreferredShortcutsTest.java
index a694aa3..95a0b83 100644
--- a/tests/robotests/src/com/android/settings/accessibility/PreferredShortcutsTest.java
+++ b/tests/unit/src/com/android/settings/accessibility/PreferredShortcutsTest.java
@@ -22,13 +22,13 @@
 import android.content.Context;
 
 import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
 
 /** Tests for {@link PreferredShortcuts} */
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class PreferredShortcutsTest {
 
     private static final String PACKAGE_NAME_1 = "com.test1.example";
diff --git a/tests/robotests/src/com/android/settings/accessibility/PrimaryMonoPreferenceControllerTest.java b/tests/unit/src/com/android/settings/accessibility/PrimaryMonoPreferenceControllerTest.java
similarity index 91%
rename from tests/robotests/src/com/android/settings/accessibility/PrimaryMonoPreferenceControllerTest.java
rename to tests/unit/src/com/android/settings/accessibility/PrimaryMonoPreferenceControllerTest.java
index fab1b95..8caeaff 100644
--- a/tests/robotests/src/com/android/settings/accessibility/PrimaryMonoPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/accessibility/PrimaryMonoPreferenceControllerTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 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.
@@ -23,16 +23,16 @@
 import android.provider.Settings;
 
 import androidx.preference.SwitchPreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 
 import com.android.settings.core.BasePreferenceController;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class PrimaryMonoPreferenceControllerTest {
 
     private static final int ON = 1;
@@ -45,7 +45,7 @@
 
     @Before
     public void setUp() {
-        mContext = RuntimeEnvironment.application;
+        mContext = ApplicationProvider.getApplicationContext();
         mPreference = new SwitchPreference(mContext);
         mController = new PrimaryMonoPreferenceController(mContext, "test_key");
     }
diff --git a/tests/unit/src/com/android/settings/accessibility/ReduceBrightColorsIntensityPreferenceControllerTest.java b/tests/unit/src/com/android/settings/accessibility/ReduceBrightColorsIntensityPreferenceControllerTest.java
new file mode 100644
index 0000000..dee8817
--- /dev/null
+++ b/tests/unit/src/com/android/settings/accessibility/ReduceBrightColorsIntensityPreferenceControllerTest.java
@@ -0,0 +1,86 @@
+/*
+ * 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.settings.accessibility;
+
+import static com.google.common.truth.Truth.assertThat;
+
+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.Resources;
+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;
+
+@RunWith(AndroidJUnit4.class)
+public class ReduceBrightColorsIntensityPreferenceControllerTest {
+
+    private Context mContext;
+    private Resources mResources;
+    private ReduceBrightColorsIntensityPreferenceController mPreferenceController;
+
+    @Before
+    public void setUp() {
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        mResources = spy(mContext.getResources());
+        when(mContext.getResources()).thenReturn(mResources);
+        mPreferenceController = new ReduceBrightColorsIntensityPreferenceController(mContext,
+                "rbc_intensity");
+    }
+
+    @Test
+    public void isAvailable_configuredRbcAvailable_enabledRbc_shouldReturnTrue() {
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED, 1);
+        doReturn(true).when(mResources).getBoolean(
+                com.android.internal.R.bool.config_setColorTransformAccelerated);
+        assertThat(mPreferenceController.isAvailable()).isTrue();
+    }
+    @Test
+    public void isAvailable_configuredRbcAvailable_disabledRbc_shouldReturnTrue() {
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED, 0);
+        doReturn(true).when(mResources).getBoolean(
+                com.android.internal.R.bool.config_setColorTransformAccelerated);
+        assertThat(mPreferenceController.isAvailable()).isTrue();
+    }
+    @Test
+    public void isAvailable_configuredRbcUnavailable_enabledRbc_shouldReturnFalse() {
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED, 1);
+        doReturn(false).when(mResources).getBoolean(
+                com.android.internal.R.bool.config_setColorTransformAccelerated);
+        assertThat(mPreferenceController.isAvailable()).isFalse();
+    }
+
+    @Test
+    public void onPreferenceChange_changesTemperature() {
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED, 1);
+        mPreferenceController.onPreferenceChange(/* preference= */ null, 20);
+        assertThat(Settings.Secure.getInt(mContext.getContentResolver(),
+                Settings.Secure.REDUCE_BRIGHT_COLORS_LEVEL, 0))
+                .isEqualTo(20);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/accessibility/ReduceBrightColorsPersistencePreferenceControllerTest.java b/tests/unit/src/com/android/settings/accessibility/ReduceBrightColorsPersistencePreferenceControllerTest.java
similarity index 100%
rename from tests/robotests/src/com/android/settings/accessibility/ReduceBrightColorsPersistencePreferenceControllerTest.java
rename to tests/unit/src/com/android/settings/accessibility/ReduceBrightColorsPersistencePreferenceControllerTest.java
diff --git a/tests/robotests/src/com/android/settings/accessibility/SelectLongPressTimeoutPreferenceControllerTest.java b/tests/unit/src/com/android/settings/accessibility/SelectLongPressTimeoutPreferenceControllerTest.java
similarity index 90%
rename from tests/robotests/src/com/android/settings/accessibility/SelectLongPressTimeoutPreferenceControllerTest.java
rename to tests/unit/src/com/android/settings/accessibility/SelectLongPressTimeoutPreferenceControllerTest.java
index 1bdfb41..899fc09 100644
--- a/tests/robotests/src/com/android/settings/accessibility/SelectLongPressTimeoutPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/accessibility/SelectLongPressTimeoutPreferenceControllerTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 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.
@@ -21,15 +21,16 @@
 import android.content.Context;
 import android.provider.Settings;
 
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import com.android.settings.core.BasePreferenceController;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class SelectLongPressTimeoutPreferenceControllerTest {
     private static final int VALID_VALUE = 1500;
     private static final int INVALID_VALUE = 0;
@@ -40,7 +41,7 @@
 
     @Before
     public void setUp() {
-        mContext = RuntimeEnvironment.application;
+        mContext = ApplicationProvider.getApplicationContext();
         mController = new SelectLongPressTimeoutPreferenceController(mContext, "press_timeout");
     }
 
diff --git a/tests/robotests/src/com/android/settings/accounts/RemoveUserFragmentTest.java b/tests/unit/src/com/android/settings/accounts/RemoveUserFragmentTest.java
similarity index 87%
rename from tests/robotests/src/com/android/settings/accounts/RemoveUserFragmentTest.java
rename to tests/unit/src/com/android/settings/accounts/RemoveUserFragmentTest.java
index 4537eb9..e38f42d 100644
--- a/tests/robotests/src/com/android/settings/accounts/RemoveUserFragmentTest.java
+++ b/tests/unit/src/com/android/settings/accounts/RemoveUserFragmentTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016 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.
@@ -18,13 +18,14 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
 import java.lang.reflect.Modifier;
-import org.robolectric.RobolectricTestRunner;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class RemoveUserFragmentTest {
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/accounts/SyncStateSwitchPreferenceTest.java b/tests/unit/src/com/android/settings/accounts/SyncStateSwitchPreferenceTest.java
similarity index 86%
rename from tests/robotests/src/com/android/settings/accounts/SyncStateSwitchPreferenceTest.java
rename to tests/unit/src/com/android/settings/accounts/SyncStateSwitchPreferenceTest.java
index 9c7b346..cda6373 100644
--- a/tests/robotests/src/com/android/settings/accounts/SyncStateSwitchPreferenceTest.java
+++ b/tests/unit/src/com/android/settings/accounts/SyncStateSwitchPreferenceTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2018 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.
@@ -22,13 +22,14 @@
 import android.content.Context;
 import android.os.UserHandle;
 
+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.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class SyncStateSwitchPreferenceTest {
 
     private Context mContext;
@@ -36,7 +37,7 @@
 
     @Before
     public void setup() {
-        mContext = RuntimeEnvironment.application;
+        mContext = ApplicationProvider.getApplicationContext();
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/applications/AppStateInstallAppsBridgeTest.java b/tests/unit/src/com/android/settings/applications/AppStateInstallAppsBridgeTest.java
similarity index 85%
rename from tests/robotests/src/com/android/settings/applications/AppStateInstallAppsBridgeTest.java
rename to tests/unit/src/com/android/settings/applications/AppStateInstallAppsBridgeTest.java
index 277f63e..a3bfff9 100644
--- a/tests/robotests/src/com/android/settings/applications/AppStateInstallAppsBridgeTest.java
+++ b/tests/unit/src/com/android/settings/applications/AppStateInstallAppsBridgeTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 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.
@@ -11,26 +11,26 @@
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
- * limitations under the License
+ * limitations under the License.
  */
-
 package com.android.settings.applications;
 
 import static com.google.common.truth.Truth.assertThat;
 
 import android.app.AppOpsManager;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class AppStateInstallAppsBridgeTest {
 
     @Test
     public void testInstallAppsStateCanInstallApps() {
         AppStateInstallAppsBridge.InstallAppsState appState =
-            new AppStateInstallAppsBridge.InstallAppsState();
+                new AppStateInstallAppsBridge.InstallAppsState();
         assertThat(appState.canInstallApps()).isFalse();
 
         appState.permissionRequested = true;
@@ -46,7 +46,7 @@
     @Test
     public void testInstallAppsStateIsPotentialAppSource() {
         AppStateInstallAppsBridge.InstallAppsState appState =
-            new AppStateInstallAppsBridge.InstallAppsState();
+                new AppStateInstallAppsBridge.InstallAppsState();
         assertThat(appState.isPotentialAppSource()).isFalse();
 
         appState.appOpMode = AppOpsManager.MODE_ERRORED;
diff --git a/tests/robotests/src/com/android/settings/applications/EnterpriseDefaultAppsTest.java b/tests/unit/src/com/android/settings/applications/EnterpriseDefaultAppsTest.java
similarity index 85%
rename from tests/robotests/src/com/android/settings/applications/EnterpriseDefaultAppsTest.java
rename to tests/unit/src/com/android/settings/applications/EnterpriseDefaultAppsTest.java
index 558334d..b956089 100644
--- a/tests/robotests/src/com/android/settings/applications/EnterpriseDefaultAppsTest.java
+++ b/tests/unit/src/com/android/settings/applications/EnterpriseDefaultAppsTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 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.
@@ -11,24 +11,24 @@
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
- * limitations under the License
+ * limitations under the License.
  */
-
 package com.android.settings.applications;
 
 import static org.junit.Assert.assertTrue;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import com.android.settings.R;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class EnterpriseDefaultAppsTest {
     @Test
     public void testNumberOfIntentsCorrelateWithUI() {
-        final int concatenation_templates[] =
+        final int[] concatenation_templates =
                 new int[]{0 /* no need for single app name */,
                         R.string.app_names_concatenation_template_2,
                         R.string.app_names_concatenation_template_3};
diff --git a/tests/robotests/src/com/android/settings/applications/assist/AssistSettingObserverTest.java b/tests/unit/src/com/android/settings/applications/assist/AssistSettingObserverTest.java
similarity index 88%
rename from tests/robotests/src/com/android/settings/applications/assist/AssistSettingObserverTest.java
rename to tests/unit/src/com/android/settings/applications/assist/AssistSettingObserverTest.java
index f930106..2bfdd0c 100644
--- a/tests/robotests/src/com/android/settings/applications/assist/AssistSettingObserverTest.java
+++ b/tests/unit/src/com/android/settings/applications/assist/AssistSettingObserverTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 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.
@@ -18,13 +18,14 @@
 
 import android.net.Uri;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
 import java.util.List;
-import org.robolectric.RobolectricTestRunner;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class AssistSettingObserverTest {
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/applications/manageapplications/AppFilterRegistryTest.java b/tests/unit/src/com/android/settings/applications/manageapplications/AppFilterRegistryTest.java
similarity index 96%
rename from tests/robotests/src/com/android/settings/applications/manageapplications/AppFilterRegistryTest.java
rename to tests/unit/src/com/android/settings/applications/manageapplications/AppFilterRegistryTest.java
index 4c51ae7..ba7a0d2 100644
--- a/tests/robotests/src/com/android/settings/applications/manageapplications/AppFilterRegistryTest.java
+++ b/tests/unit/src/com/android/settings/applications/manageapplications/AppFilterRegistryTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 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.
@@ -37,11 +37,12 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class AppFilterRegistryTest {
 
     @Test
diff --git a/tests/unit/src/com/android/settings/applications/specialaccess/notificationaccess/ApprovalPreferenceControllerTest.java b/tests/unit/src/com/android/settings/applications/specialaccess/notificationaccess/ApprovalPreferenceControllerTest.java
new file mode 100644
index 0000000..064f813
--- /dev/null
+++ b/tests/unit/src/com/android/settings/applications/specialaccess/notificationaccess/ApprovalPreferenceControllerTest.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.settings.applications.specialaccess.notificationaccess;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.doReturn;
+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.NotificationManager;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+
+import androidx.preference.SwitchPreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.testutils.FakeFeatureFactory;
+
+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 ApprovalPreferenceControllerTest {
+
+    private Context mContext;
+    private FakeFeatureFactory mFeatureFactory;
+    @Mock
+    private NotificationAccessDetails mFragment;
+    private ApprovalPreferenceController mController;
+    @Mock
+    NotificationManager mNm;
+    @Mock
+    PackageManager mPm;
+    PackageInfo mPkgInfo;
+    ComponentName mCn = new ComponentName("a", "b");
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mFeatureFactory = FakeFeatureFactory.setupForTest();
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        doReturn(mContext).when(mFragment).getContext();
+
+        mPkgInfo = new PackageInfo();
+        mPkgInfo.applicationInfo = mock(ApplicationInfo.class);
+        when(mPkgInfo.applicationInfo.loadLabel(mPm)).thenReturn("LABEL");
+
+        mController = new ApprovalPreferenceController(mContext, "key");
+        mController.setCn(mCn);
+        mController.setNm(mNm);
+        mController.setParent(mFragment);
+        mController.setPkgInfo(mPkgInfo);
+    }
+
+    @Test
+    public void updateState_checked() {
+        when(mNm.isNotificationListenerAccessGranted(mCn)).thenReturn(true);
+        SwitchPreference pref = new SwitchPreference(mContext);
+
+        mController.updateState(pref);
+        assertThat(pref.isChecked()).isTrue();
+    }
+
+    @Test
+    public void enable() {
+        mController.enable(mCn);
+        verify(mFeatureFactory.metricsFeatureProvider).action(
+                mContext,
+                MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_NOTIVIEW_ALLOW,
+                "a");
+
+        verify(mNm).setNotificationListenerAccessGranted(mCn, true);
+    }
+
+    @Test
+    public void disable() {
+        mController.disable(mCn);
+        verify(mFeatureFactory.metricsFeatureProvider).action(
+                mContext,
+                MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_NOTIVIEW_ALLOW,
+                "a");
+
+        verify(mNm).setNotificationListenerAccessGranted(mCn, false);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/biometrics/face/FaceSettingsAttentionPreferenceControllerTest.java b/tests/unit/src/com/android/settings/biometrics/face/FaceSettingsAttentionPreferenceControllerTest.java
similarity index 82%
rename from tests/robotests/src/com/android/settings/biometrics/face/FaceSettingsAttentionPreferenceControllerTest.java
rename to tests/unit/src/com/android/settings/biometrics/face/FaceSettingsAttentionPreferenceControllerTest.java
index 6dd53a3..c46f84a 100644
--- a/tests/robotests/src/com/android/settings/biometrics/face/FaceSettingsAttentionPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/biometrics/face/FaceSettingsAttentionPreferenceControllerTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 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.
@@ -20,13 +20,14 @@
 
 import android.content.Context;
 
+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.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class FaceSettingsAttentionPreferenceControllerTest {
 
     private Context mContext;
@@ -34,7 +35,7 @@
 
     @Before
     public void setUp() {
-        mContext = RuntimeEnvironment.application;
+        mContext = ApplicationProvider.getApplicationContext();
         mController = new FaceSettingsAttentionPreferenceController(mContext);
     }
 
diff --git a/tests/unit/src/com/android/settings/core/BadPreferenceController.java b/tests/unit/src/com/android/settings/core/BadPreferenceController.java
new file mode 100644
index 0000000..68d3b53
--- /dev/null
+++ b/tests/unit/src/com/android/settings/core/BadPreferenceController.java
@@ -0,0 +1,37 @@
+/*
+ * 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.settings.core;
+
+import android.content.Context;
+
+public class BadPreferenceController extends BasePreferenceController {
+
+    public BadPreferenceController(Context context, String preferenceKey) {
+        super(context, preferenceKey);
+        throw new IllegalArgumentException("error");
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return AVAILABLE;
+    }
+
+    @Override
+    public boolean useDynamicSliceSummary() {
+        return true;
+    }
+}
diff --git a/tests/unit/src/com/android/settings/core/BasePreferenceControllerSignatureInspector.java b/tests/unit/src/com/android/settings/core/BasePreferenceControllerSignatureInspector.java
new file mode 100644
index 0000000..d2f5346
--- /dev/null
+++ b/tests/unit/src/com/android/settings/core/BasePreferenceControllerSignatureInspector.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.settings.core;
+
+import static com.google.common.truth.Truth.assertWithMessage;
+
+import android.content.Context;
+
+import com.android.settings.core.codeinspection.CodeInspector;
+
+import java.lang.reflect.Constructor;
+import java.util.ArrayList;
+import java.util.List;
+
+public class BasePreferenceControllerSignatureInspector extends CodeInspector {
+
+    private final List<String> mExemptList;
+
+    public BasePreferenceControllerSignatureInspector(List<Class<?>> classes) {
+        super(classes);
+        mExemptList = new ArrayList<>();
+        initializeExemptList(mExemptList,
+                "exempt_invalid_base_preference_controller_constructor");
+    }
+
+    @Override
+    public void run() {
+        StringBuilder badClasses = new StringBuilder();
+
+        for (Class c : mClasses) {
+            if (!isConcreteSettingsClass(c)) {
+                // Not a Settings class, or is abstract, don't care.
+                continue;
+            }
+            if (!BasePreferenceController.class.isAssignableFrom(c)) {
+                // Not a BasePreferenceController, don't care.
+                continue;
+            }
+            final String className = c.getName();
+            if (mExemptList.remove(className)) {
+                continue;
+            }
+            final Constructor[] constructors = c.getDeclaredConstructors();
+            if (constructors == null || constructors.length == 0) {
+                badClasses.append(c.getName()).append(",");
+            }
+
+            boolean hasValidConstructor = false;
+            for (Constructor constructor : constructors) {
+                if (hasValidConstructorSignature(constructor)) {
+                    hasValidConstructor = true;
+                    break;
+                }
+            }
+            if (!hasValidConstructor) {
+                badClasses.append(className).append(",");
+            }
+        }
+
+        assertWithMessage("All BasePreferenceController (and subclasses) constructor must either"
+                + " only take Context, or (Context, String). No other types are allowed")
+                .that(badClasses.toString())
+                .isEmpty();
+
+        assertWithMessage("Something in the exempt list is no longer relevant. Please remove"
+            + "it from packages/apps/Settings/tests/robotests/assets/"
+            + "exempt_invalid_base_preference_controller_constructor")
+                .that(mExemptList)
+                .isEmpty();
+    }
+
+    private static boolean hasValidConstructorSignature(Constructor constructor) {
+        final Class[] parameterTypes = constructor.getParameterTypes();
+        if (parameterTypes.length == 1) {
+            return Context.class.isAssignableFrom(parameterTypes[0]);
+        } else if (parameterTypes.length == 2) {
+            return Context.class.isAssignableFrom(parameterTypes[0])
+                    && String.class.isAssignableFrom(parameterTypes[1]);
+        }
+        return false;
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/core/SettingsSliderPreferenceControllerTest.java b/tests/unit/src/com/android/settings/core/SettingsSliderPreferenceControllerTest.java
similarity index 73%
rename from tests/robotests/src/com/android/settings/core/SettingsSliderPreferenceControllerTest.java
rename to tests/unit/src/com/android/settings/core/SettingsSliderPreferenceControllerTest.java
index a04ec37..846ffd7 100644
--- a/tests/robotests/src/com/android/settings/core/SettingsSliderPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/core/SettingsSliderPreferenceControllerTest.java
@@ -1,33 +1,35 @@
 /*
- * Copyright (C) 2018 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. You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
  *
  *      http://www.apache.org/licenses/LICENSE-2.0
  *
- * Unless required by applicable law or agreed to in writing, software distributed under the
- * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the specific language governing
- * permissions and limitations under the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
-
 package com.android.settings.core;
 
 import static com.google.common.truth.Truth.assertThat;
 
 import android.content.Context;
 
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import com.android.settings.slices.SliceData;
 import com.android.settings.widget.SeekBarPreference;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class SettingsSliderPreferenceControllerTest {
 
     private FakeSliderPreferenceController mSliderController;
@@ -36,9 +38,9 @@
 
     @Before
     public void setUp() {
-        mPreference = new SeekBarPreference(RuntimeEnvironment.application);
-        mSliderController = new FakeSliderPreferenceController(RuntimeEnvironment.application,
-                "key");
+        mPreference = new SeekBarPreference(ApplicationProvider.getApplicationContext());
+        mSliderController = new FakeSliderPreferenceController(
+                ApplicationProvider.getApplicationContext(), "key");
 
         mPreference.setContinuousUpdates(true);
         mPreference.setMin(mSliderController.getMin());
@@ -71,7 +73,7 @@
 
     private class FakeSliderPreferenceController extends SliderPreferenceController {
 
-        private final int MAX_STEPS = 2112;
+        private static final int MAX_STEPS = 2112;
         private int mPosition;
 
         private FakeSliderPreferenceController(Context context, String key) {
diff --git a/tests/robotests/src/com/android/settings/core/TogglePreferenceControllerTest.java b/tests/unit/src/com/android/settings/core/TogglePreferenceControllerTest.java
similarity index 89%
rename from tests/robotests/src/com/android/settings/core/TogglePreferenceControllerTest.java
rename to tests/unit/src/com/android/settings/core/TogglePreferenceControllerTest.java
index 541f0c4..8817a17 100644
--- a/tests/robotests/src/com/android/settings/core/TogglePreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/core/TogglePreferenceControllerTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 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.
@@ -20,16 +20,16 @@
 import android.content.Context;
 
 import androidx.preference.SwitchPreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 
 import com.android.settings.slices.SliceData;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class TogglePreferenceControllerTest {
 
     private FakeToggle mToggleController;
@@ -39,7 +39,7 @@
 
     @Before
     public void setUp() {
-        mContext = RuntimeEnvironment.application;
+        mContext = ApplicationProvider.getApplicationContext();
         mPreference = new SwitchPreference(mContext);
         mToggleController = new FakeToggle(mContext, "key");
     }
@@ -102,7 +102,7 @@
 
     private static class FakeToggle extends TogglePreferenceController {
 
-        private boolean checkedFlag;
+        private boolean mCheckedFlag;
 
         private FakeToggle(Context context, String preferenceKey) {
             super(context, preferenceKey);
@@ -110,12 +110,12 @@
 
         @Override
         public boolean isChecked() {
-            return checkedFlag;
+            return mCheckedFlag;
         }
 
         @Override
         public boolean setChecked(boolean isChecked) {
-            checkedFlag = isChecked;
+            mCheckedFlag = isChecked;
             return true;
         }
 
diff --git a/tests/unit/src/com/android/settings/core/codeinspection/ClassScanner.java b/tests/unit/src/com/android/settings/core/codeinspection/ClassScanner.java
new file mode 100644
index 0000000..b129ecd
--- /dev/null
+++ b/tests/unit/src/com/android/settings/core/codeinspection/ClassScanner.java
@@ -0,0 +1,66 @@
+/*
+ * 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.settings.core.codeinspection;
+
+import com.google.common.reflect.ClassPath;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Scans and builds all classes in current classloader.
+ */
+public class ClassScanner {
+
+    public List<Class<?>> getClassesForPackage(String packageName) throws ClassNotFoundException {
+        final List<Class<?>> classes = new ArrayList<>();
+
+        try {
+            ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+            ClassPath classPath = ClassPath.from(classLoader);
+
+            // Some anonymous classes don't return true when calling isAnonymousClass(), but they
+            // always seem to be nested anonymous classes like com.android.settings.Foo$1$2. In
+            // general we don't want any anonymous classes so we just filter these out by searching
+            // for $[0-9] in the name.
+            Pattern anonymousClassPattern = Pattern.compile(".*\\$\\d+.*");
+            Matcher anonymousClassMatcher = anonymousClassPattern.matcher("");
+
+            for (ClassPath.ClassInfo info : classPath.getAllClasses()) {
+                if (info.getPackageName().startsWith(packageName)) {
+                    try {
+                        Class clazz = classLoader.loadClass(info.getName());
+                        if (clazz.isAnonymousClass() || anonymousClassMatcher.reset(
+                                clazz.getName()).matches()) {
+                            continue;
+                        }
+                        classes.add(clazz);
+                    } catch (NoClassDefFoundError e) {
+                        // do nothing. this class hasn't been found by the
+                        // loader, and we don't care.
+                    }
+                }
+            }
+        } catch (final IOException e) {
+            throw new ClassNotFoundException("Error when parsing " + packageName, e);
+        }
+        return classes;
+    }
+}
diff --git a/tests/unit/src/com/android/settings/core/codeinspection/CodeInspector.java b/tests/unit/src/com/android/settings/core/codeinspection/CodeInspector.java
new file mode 100644
index 0000000..fb8ad6e
--- /dev/null
+++ b/tests/unit/src/com/android/settings/core/codeinspection/CodeInspector.java
@@ -0,0 +1,94 @@
+/*
+ * 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.settings.core.codeinspection;
+
+import static com.google.common.truth.Truth.assertWithMessage;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.lang.reflect.Modifier;
+import java.util.List;
+
+/**
+ * Inspector takes a list of class objects and perform static code analysis in its {@link #run()}
+ * method.
+ */
+public abstract class CodeInspector {
+
+    protected static final String PACKAGE_NAME = "com.android.settings";
+
+    private static final String TEST_CLASS_SUFFIX = "Test";
+    private static final String TEST_INNER_CLASS_SIGNATURE = "Test$";
+
+    protected final List<Class<?>> mClasses;
+
+    public CodeInspector(List<Class<?>> classes) {
+        mClasses = classes;
+    }
+
+    /**
+     * Code inspection runner method.
+     */
+    public abstract void run();
+
+    protected void assertNoObsoleteInExemptList(String listName, List<String> list) {
+        final StringBuilder obsoleteExemptItems = new StringBuilder(listName).append(
+                " contains item that should not be exempted.\n");
+        for (String c : list) {
+            obsoleteExemptItems.append(c).append("\n");
+        }
+        assertWithMessage(obsoleteExemptItems.toString()).that(list).isEmpty();
+    }
+
+    protected boolean isConcreteSettingsClass(Class clazz) {
+        // Abstract classes
+        if (Modifier.isAbstract(clazz.getModifiers())) {
+            return false;
+        }
+        final String packageName = clazz.getPackage().getName();
+        // Classes that are not in Settings
+        if (!packageName.contains(PACKAGE_NAME + ".") && !packageName.endsWith(PACKAGE_NAME)) {
+            return false;
+        }
+        final String className = clazz.getName();
+        // Classes from tests
+        if (className.endsWith(TEST_CLASS_SUFFIX)) {
+            return false;
+        }
+        if (className.contains(TEST_INNER_CLASS_SIGNATURE)) {
+            return false;
+        }
+        return true;
+    }
+
+    public static void initializeExemptList(List<String> exemptList, String filename) {
+        try {
+            final InputStream in = ApplicationProvider.getApplicationContext()
+                    .getAssets().open(filename);
+            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
+            String line;
+            while ((line = reader.readLine()) != null) {
+                exemptList.add(line);
+            }
+        } catch (Exception e) {
+            throw new IllegalArgumentException("Error initializing exempt list " + filename, e);
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/settings/core/codeinspection/LifecycleObserverCodeInspector.java b/tests/unit/src/com/android/settings/core/codeinspection/LifecycleObserverCodeInspector.java
new file mode 100644
index 0000000..f8b2a46
--- /dev/null
+++ b/tests/unit/src/com/android/settings/core/codeinspection/LifecycleObserverCodeInspector.java
@@ -0,0 +1,93 @@
+/*
+ * 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.settings.core.codeinspection;
+
+import static org.junit.Assert.fail;
+
+import android.util.ArraySet;
+
+import com.android.settingslib.core.lifecycle.LifecycleObserver;
+import com.android.settingslib.core.lifecycle.events.OnAttach;
+import com.android.settingslib.core.lifecycle.events.OnCreate;
+import com.android.settingslib.core.lifecycle.events.OnCreateOptionsMenu;
+import com.android.settingslib.core.lifecycle.events.OnDestroy;
+import com.android.settingslib.core.lifecycle.events.OnOptionsItemSelected;
+import com.android.settingslib.core.lifecycle.events.OnPause;
+import com.android.settingslib.core.lifecycle.events.OnPrepareOptionsMenu;
+import com.android.settingslib.core.lifecycle.events.OnResume;
+import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState;
+import com.android.settingslib.core.lifecycle.events.OnStart;
+import com.android.settingslib.core.lifecycle.events.OnStop;
+import com.android.settingslib.core.lifecycle.events.SetPreferenceScreen;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
+
+public class LifecycleObserverCodeInspector extends CodeInspector {
+
+    private static final List<Class> LIFECYCLE_EVENTS = Arrays.asList(
+            OnAttach.class,
+            OnCreate.class,
+            OnCreateOptionsMenu.class,
+            OnDestroy.class,
+            OnOptionsItemSelected.class,
+            OnPause.class,
+            OnPrepareOptionsMenu.class,
+            OnResume.class,
+            OnSaveInstanceState.class,
+            OnStart.class,
+            OnStop.class,
+            SetPreferenceScreen.class
+    );
+
+    public LifecycleObserverCodeInspector(List<Class<?>> classes) {
+        super(classes);
+    }
+
+    @Override
+    public void run() {
+        final Set<String> notImplementingLifecycleObserver = new ArraySet<>();
+        for (Class clazz : mClasses) {
+            if (!isConcreteSettingsClass(clazz)) {
+                continue;
+            }
+            boolean classObservesLifecycleEvent = false;
+            for (Class event : LIFECYCLE_EVENTS) {
+                if (event.isAssignableFrom(clazz)) {
+                    classObservesLifecycleEvent = true;
+                    break;
+                }
+            }
+            if (classObservesLifecycleEvent && !LifecycleObserver.class.isAssignableFrom(clazz)) {
+                // Observes LifecycleEvent but not implementing LifecycleObserver. Something is
+                // wrong.
+                notImplementingLifecycleObserver.add(clazz.getName());
+            }
+        }
+        if (!notImplementingLifecycleObserver.isEmpty()) {
+            final String errorTemplate =
+                    "The following class(es) implements lifecycle.events.*, but don't "
+                            + "implement LifecycleObserver. Something is wrong:\n";
+            final StringBuilder error = new StringBuilder(errorTemplate);
+            for (String name : notImplementingLifecycleObserver) {
+                error.append(name).append('\n');
+            }
+            fail(error.toString());
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/settings/core/instrumentation/InstrumentableFragmentCodeInspector.java b/tests/unit/src/com/android/settings/core/instrumentation/InstrumentableFragmentCodeInspector.java
new file mode 100644
index 0000000..98958cf
--- /dev/null
+++ b/tests/unit/src/com/android/settings/core/instrumentation/InstrumentableFragmentCodeInspector.java
@@ -0,0 +1,73 @@
+/*
+ * 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.settings.core.instrumentation;
+
+import static com.google.common.truth.Truth.assertWithMessage;
+
+import android.util.ArraySet;
+
+import androidx.fragment.app.Fragment;
+
+import com.android.settings.core.codeinspection.CodeInspector;
+import com.android.settingslib.core.instrumentation.Instrumentable;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * {@link CodeInspector} that verifies all fragments implements Instrumentable.
+ */
+public class InstrumentableFragmentCodeInspector extends CodeInspector {
+
+    private final List<String> mNotImplementingInstrumentableExemptList;
+
+    public InstrumentableFragmentCodeInspector(List<Class<?>> classes) {
+        super(classes);
+        mNotImplementingInstrumentableExemptList = new ArrayList<>();
+        initializeExemptList(mNotImplementingInstrumentableExemptList,
+                "exempt_not_implementing_instrumentable");
+    }
+
+    @Override
+    public void run() {
+        final Set<String> broken = new ArraySet<>();
+
+        for (Class clazz : mClasses) {
+            if (!isConcreteSettingsClass(clazz)) {
+                continue;
+            }
+            final String className = clazz.getName();
+            // If it's a fragment, it must also be instrumentable.
+            final boolean allowlisted =
+                    mNotImplementingInstrumentableExemptList.remove(className);
+            if (Fragment.class.isAssignableFrom(clazz)
+                    && !Instrumentable.class.isAssignableFrom(clazz)
+                    && !allowlisted) {
+                broken.add(className);
+            }
+        }
+        final StringBuilder sb = new StringBuilder(
+                "All fragments should implement Instrumentable, but the following are not:\n");
+        for (String c : broken) {
+            sb.append(c).append("\n");
+        }
+        assertWithMessage(sb.toString()).that(broken.isEmpty()).isTrue();
+        assertNoObsoleteInExemptList("exempt_not_implementing_instrumentable",
+                mNotImplementingInstrumentableExemptList);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/dashboard/CategoryManagerTest.java b/tests/unit/src/com/android/settings/dashboard/CategoryManagerTest.java
similarity index 97%
rename from tests/robotests/src/com/android/settings/dashboard/CategoryManagerTest.java
rename to tests/unit/src/com/android/settings/dashboard/CategoryManagerTest.java
index a0db866..98540f9 100644
--- a/tests/robotests/src/com/android/settings/dashboard/CategoryManagerTest.java
+++ b/tests/unit/src/com/android/settings/dashboard/CategoryManagerTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016 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.
@@ -29,6 +29,9 @@
 import android.os.Bundle;
 import android.util.Pair;
 
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import com.android.settingslib.drawer.ActivityTile;
 import com.android.settingslib.drawer.CategoryKey;
 import com.android.settingslib.drawer.DashboardCategory;
@@ -38,13 +41,11 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
 import java.util.HashMap;
 import java.util.Map;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class CategoryManagerTest {
 
     private ActivityInfo mActivityInfo;
@@ -55,7 +56,7 @@
 
     @Before
     public void setUp() {
-        mContext = RuntimeEnvironment.application;
+        mContext = ApplicationProvider.getApplicationContext();
         mActivityInfo = new ActivityInfo();
         mActivityInfo.packageName = "pkg";
         mActivityInfo.name = "class";
@@ -144,7 +145,8 @@
         mCategoryByKeyMap.put(CATEGORY_HOMEPAGE, category);
 
         // Sort their priorities
-        mCategoryManager.sortCategories(RuntimeEnvironment.application, mCategoryByKeyMap);
+        mCategoryManager.sortCategories(ApplicationProvider.getApplicationContext(),
+                mCategoryByKeyMap);
 
         // Verify they are now sorted.
         assertThat(category.getTile(0)).isSameInstanceAs(tile3);
diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentRegistryTest.java b/tests/unit/src/com/android/settings/dashboard/DashboardFragmentRegistryTest.java
similarity index 91%
rename from tests/robotests/src/com/android/settings/dashboard/DashboardFragmentRegistryTest.java
rename to tests/unit/src/com/android/settings/dashboard/DashboardFragmentRegistryTest.java
index 10aaad8..435fe01 100644
--- a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentRegistryTest.java
+++ b/tests/unit/src/com/android/settings/dashboard/DashboardFragmentRegistryTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2018 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.
@@ -18,14 +18,15 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import com.android.settings.accounts.AccountDashboardFragment;
 import com.android.settingslib.drawer.CategoryKey;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class DashboardFragmentRegistryTest {
     @Test
     public void pageAndKeyShouldHave1to1Mapping() {
diff --git a/tests/unit/src/com/android/settings/dashboard/DashboardFragmentSearchIndexProviderInspector.java b/tests/unit/src/com/android/settings/dashboard/DashboardFragmentSearchIndexProviderInspector.java
new file mode 100644
index 0000000..68a6788
--- /dev/null
+++ b/tests/unit/src/com/android/settings/dashboard/DashboardFragmentSearchIndexProviderInspector.java
@@ -0,0 +1,84 @@
+/*
+ * 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.settings.dashboard;
+
+import android.content.Context;
+
+import androidx.fragment.app.Fragment;
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.core.BasePreferenceController;
+import com.android.settings.core.PreferenceControllerListHelper;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settings.search.DatabaseIndexingUtils;
+import com.android.settingslib.core.AbstractPreferenceController;
+
+import java.util.List;
+
+public class DashboardFragmentSearchIndexProviderInspector {
+
+    public static boolean isSharingPreferenceControllers(Class clazz) {
+        final Context context = ApplicationProvider.getApplicationContext();
+        final Fragment fragment;
+        try {
+            fragment = Fragment.instantiate(context, clazz.getName());
+        } catch (Throwable e) {
+            // Can't do much with exception, assume the test passed.
+            return true;
+        }
+        if (!(fragment instanceof DashboardFragment)) {
+            return true;
+        }
+
+        final BaseSearchIndexProvider provider =
+                (BaseSearchIndexProvider) DatabaseIndexingUtils.getSearchIndexProvider(clazz);
+        if (provider == null) {
+            return true;
+        }
+        final List<AbstractPreferenceController> controllersFromSearchIndexProvider;
+        final List<AbstractPreferenceController> controllersFromFragment;
+        try {
+            controllersFromSearchIndexProvider = provider.getPreferenceControllers(context);
+        } catch (Throwable e) {
+            // Can't do much with exception, assume the test passed.
+            return true;
+        }
+        try {
+            controllersFromFragment =
+                    ((DashboardFragment) fragment).createPreferenceControllers(context);
+            List<BasePreferenceController> controllersFromXml = PreferenceControllerListHelper
+                    .getPreferenceControllersFromXml(context,
+                            ((DashboardFragment) fragment).getPreferenceScreenResId());
+            final List<BasePreferenceController> uniqueControllerFromXml =
+                    PreferenceControllerListHelper.filterControllers(
+                            controllersFromXml, controllersFromFragment);
+            controllersFromFragment.addAll(uniqueControllerFromXml);
+
+        } catch (Throwable e) {
+            // Can't do much with exception, assume the test passed.
+            return true;
+        }
+
+        if (controllersFromFragment == controllersFromSearchIndexProvider) {
+            return true;
+        } else if (controllersFromFragment != null && controllersFromSearchIndexProvider != null) {
+            return controllersFromFragment.size() == controllersFromSearchIndexProvider.size();
+        } else {
+            return false;
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/settings/datausage/DataUsageSummaryPreferenceTest.java b/tests/unit/src/com/android/settings/datausage/DataUsageSummaryPreferenceTest.java
new file mode 100644
index 0000000..76deec6
--- /dev/null
+++ b/tests/unit/src/com/android/settings/datausage/DataUsageSummaryPreferenceTest.java
@@ -0,0 +1,571 @@
+/*
+ * 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.settings.datausage;
+
+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.doReturn;
+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.content.res.Resources;
+import android.graphics.Typeface;
+import android.net.ConnectivityManager;
+import android.net.NetworkTemplate;
+import android.os.Bundle;
+import android.telephony.SubscriptionManager;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.View.MeasureSpec;
+import android.widget.TextView;
+
+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.settings.SettingsActivity;
+import com.android.settings.testutils.ResourcesUtils;
+import com.android.settingslib.Utils;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.MockitoAnnotations;
+
+import java.util.concurrent.TimeUnit;
+
+@RunWith(AndroidJUnit4.class)
+public class DataUsageSummaryPreferenceTest {
+
+    private static final long CYCLE_DURATION_MILLIS = 1000000000L;
+    private static final long UPDATE_LAG_MILLIS = 10000000L;
+    private static final String FAKE_CARRIER = "z-mobile";
+
+    private Context mContext;
+    private Resources mResources;
+    private PreferenceViewHolder mHolder;
+    private DataUsageSummaryPreference mSummaryPreference;
+
+    private long mCycleEnd;
+    private long mUpdateTime;
+
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        mResources = spy(mContext.getResources());
+        when(mContext.getResources()).thenReturn(mResources);
+        mSummaryPreference = spy(new DataUsageSummaryPreference(mContext, null /* attrs */));
+        LayoutInflater inflater = mContext.getSystemService(LayoutInflater.class);
+        View view = inflater.inflate(
+                mSummaryPreference.getLayoutResource(),
+                null /* root */, false /* attachToRoot */);
+
+        mHolder = spy(PreferenceViewHolder.createInstanceForTests(view));
+        assertThat(mSummaryPreference.getDataUsed(mHolder)).isNotNull();
+
+        final long now = System.currentTimeMillis();
+        mCycleEnd = now + CYCLE_DURATION_MILLIS;
+        mUpdateTime = now - UPDATE_LAG_MILLIS;
+    }
+
+    @UiThreadTest
+    @Test
+    public void testSetUsageInfo_withLaunchIntent_launchButtonShown() {
+        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
+                new Intent());
+
+        mSummaryPreference.onBindViewHolder(mHolder);
+        assertThat(mSummaryPreference.getLaunchButton(mHolder).getVisibility())
+                .isEqualTo(View.VISIBLE);
+    }
+
+    @Test
+    public void testSetUsageInfo_withoutLaunchIntent_launchButtonNotShown() {
+        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
+                null /* launchIntent */);
+
+        mSummaryPreference.onBindViewHolder(mHolder);
+        assertThat(mSummaryPreference.getLaunchButton(mHolder).getVisibility())
+                .isEqualTo(View.GONE);
+    }
+
+    @Test
+    public void testSetUsageInfo_withDataPlans_carrierInfoShown() {
+        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 1 /* numPlans */,
+                new Intent());
+
+        mSummaryPreference.onBindViewHolder(mHolder);
+        assertThat(mSummaryPreference.getCarrierInfo(mHolder).getVisibility())
+                .isEqualTo(View.VISIBLE);
+    }
+
+    @Test
+    public void testSetUsageInfo_withNoDataPlans_carrierInfoNotShown() {
+        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
+                new Intent());
+
+        mSummaryPreference.onBindViewHolder(mHolder);
+        assertThat(mSummaryPreference.getCarrierInfo(mHolder).getVisibility())
+                .isEqualTo(View.GONE);
+    }
+
+    @Test
+    public void testCarrierUpdateTime_shouldFormatDaysCorrectly() {
+        int baseUnit = 2;
+        int smudge = 6;
+        final long updateTime = System.currentTimeMillis()
+                - TimeUnit.DAYS.toMillis(baseUnit) - TimeUnit.HOURS.toMillis(smudge);
+        mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */,
+                new Intent());
+
+        mSummaryPreference.onBindViewHolder(mHolder);
+        assertThat(mSummaryPreference.getCarrierInfo(mHolder).getText().toString())
+                .isEqualTo("Updated by " + FAKE_CARRIER + " " + baseUnit + " days ago");
+    }
+
+    @Test
+    public void testCarrierUpdateTime_shouldFormatHoursCorrectly() {
+        int baseUnit = 2;
+        int smudge = 6;
+        final long updateTime = System.currentTimeMillis()
+                - TimeUnit.HOURS.toMillis(baseUnit) - TimeUnit.MINUTES.toMillis(smudge);
+        mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */,
+                new Intent());
+
+        mSummaryPreference.onBindViewHolder(mHolder);
+        assertThat(mSummaryPreference.getCarrierInfo(mHolder).getText().toString())
+                .isEqualTo("Updated by " + FAKE_CARRIER + " " + baseUnit + " hr ago");
+    }
+
+    @Test
+    public void testCarrierUpdateTime_shouldFormatMinutesCorrectly() {
+        int baseUnit = 2;
+        int smudge = 6;
+        final long updateTime = System.currentTimeMillis()
+                - TimeUnit.MINUTES.toMillis(baseUnit) - TimeUnit.SECONDS.toMillis(smudge);
+        mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */,
+                new Intent());
+
+        mSummaryPreference.onBindViewHolder(mHolder);
+        assertThat(mSummaryPreference.getCarrierInfo(mHolder).getText().toString())
+                .isEqualTo("Updated by " + FAKE_CARRIER + " " + baseUnit + " min ago");
+    }
+
+    @Test
+    public void testCarrierUpdateTime_shouldFormatLessThanMinuteCorrectly() {
+        final long updateTime = System.currentTimeMillis() - TimeUnit.SECONDS.toMillis(45);
+        mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */,
+                new Intent());
+
+        mSummaryPreference.onBindViewHolder(mHolder);
+        assertThat(mSummaryPreference.getCarrierInfo(mHolder).getText().toString())
+                .isEqualTo("Updated by " + FAKE_CARRIER + " just now");
+    }
+
+    @Test
+    public void testCarrierUpdateTimeWithNoCarrier_shouldSayJustNow() {
+        final long updateTime = System.currentTimeMillis() - TimeUnit.SECONDS.toMillis(45);
+        mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, null /* carrier */,
+                1 /* numPlans */, new Intent());
+
+        mSummaryPreference.onBindViewHolder(mHolder);
+        assertThat(mSummaryPreference.getCarrierInfo(mHolder).getText().toString())
+                .isEqualTo("Updated just now");
+    }
+
+    @Test
+    public void testCarrierUpdateTimeWithNoCarrier_shouldFormatTime() {
+        final long updateTime = System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(2);
+        mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, null /* carrier */,
+                1 /* numPlans */, new Intent());
+
+        mSummaryPreference.onBindViewHolder(mHolder);
+        assertThat(mSummaryPreference.getCarrierInfo(mHolder).getText().toString())
+                .isEqualTo("Updated 2 min ago");
+    }
+
+    @Test
+    public void setUsageInfo_withRecentCarrierUpdate_doesNotSetCarrierInfoWarningColorAndFont() {
+        final long updateTime = System.currentTimeMillis() - TimeUnit.HOURS.toMillis(1);
+        mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */,
+                new Intent());
+
+        mSummaryPreference.onBindViewHolder(mHolder);
+        TextView carrierInfo = mSummaryPreference.getCarrierInfo(mHolder);
+        assertThat(carrierInfo.getVisibility()).isEqualTo(View.VISIBLE);
+        assertThat(carrierInfo.getCurrentTextColor()).isEqualTo(
+                Utils.getColorAttrDefaultColor(mContext, android.R.attr.textColorSecondary));
+        assertThat(carrierInfo.getTypeface()).isEqualTo(Typeface.SANS_SERIF);
+    }
+
+    @Test
+    public void testSetUsageInfo_withStaleCarrierUpdate_setsCarrierInfoWarningColorAndFont() {
+        final long updateTime = System.currentTimeMillis() - TimeUnit.HOURS.toMillis(7);
+        mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */,
+                new Intent());
+
+        mSummaryPreference.onBindViewHolder(mHolder);
+        TextView carrierInfo = mSummaryPreference.getCarrierInfo(mHolder);
+        assertThat(carrierInfo.getVisibility()).isEqualTo(View.VISIBLE);
+        assertThat(carrierInfo.getCurrentTextColor()).isEqualTo(
+                Utils.getColorAttrDefaultColor(mContext, android.R.attr.colorError));
+        assertThat(carrierInfo.getTypeface()).isEqualTo(
+                DataUsageSummaryPreference.SANS_SERIF_MEDIUM);
+    }
+
+    @Test
+    public void testSetUsageInfo_withNoDataPlans_usageTitleNotShown() {
+        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
+                new Intent());
+
+        mSummaryPreference.onBindViewHolder(mHolder);
+        assertThat(mSummaryPreference.getUsageTitle(mHolder).getVisibility()).isEqualTo(View.GONE);
+    }
+
+    @Test
+    public void testSetUsageInfo_withMultipleDataPlans_usageTitleShown() {
+        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 2 /* numPlans */,
+                new Intent());
+
+        mSummaryPreference.onBindViewHolder(mHolder);
+        assertThat(mSummaryPreference.getUsageTitle(mHolder).getVisibility())
+                .isEqualTo(View.VISIBLE);
+    }
+
+    @Test
+    public void testSetUsageInfo_cycleRemainingTimeIsLessOneDay() {
+        // just under one day
+        final long cycleEnd = System.currentTimeMillis() + TimeUnit.HOURS.toMillis(23);
+        mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
+                new Intent());
+
+        mSummaryPreference.onBindViewHolder(mHolder);
+        assertThat(mSummaryPreference.getCycleTime(mHolder).getVisibility())
+                .isEqualTo(View.VISIBLE);
+        assertThat(mSummaryPreference.getCycleTime(mHolder).getText()).isEqualTo(
+                ResourcesUtils.getResourcesString(
+                        mContext, "billing_cycle_less_than_one_day_left"));
+    }
+
+    @Test
+    public void testSetUsageInfo_cycleRemainingTimeNegativeDaysLeft_shouldDisplayNoneLeft() {
+        final long cycleEnd = System.currentTimeMillis() - 1L;
+        mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
+                new Intent());
+
+        mSummaryPreference.onBindViewHolder(mHolder);
+        assertThat(mSummaryPreference.getCycleTime(mHolder).getVisibility())
+                .isEqualTo(View.VISIBLE);
+        assertThat(mSummaryPreference.getCycleTime(mHolder).getText()).isEqualTo(
+                ResourcesUtils.getResourcesString(mContext, "billing_cycle_none_left"));
+    }
+
+    @Test
+    public void testSetUsageInfo_cycleRemainingTimeDaysLeft_shouldUsePlurals() {
+        final int daysLeft = 3;
+        final long cycleEnd = System.currentTimeMillis() + TimeUnit.DAYS.toMillis(daysLeft)
+                + TimeUnit.HOURS.toMillis(1);
+        mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
+                new Intent());
+
+        mSummaryPreference.onBindViewHolder(mHolder);
+        assertThat(mSummaryPreference.getCycleTime(mHolder).getVisibility())
+                .isEqualTo(View.VISIBLE);
+        assertThat(mSummaryPreference.getCycleTime(mHolder).getText())
+                .isEqualTo(daysLeft + " days left");
+    }
+
+    @Test
+    public void testSetLimitInfo_withLimitInfo_dataLimitsShown() {
+        final String limitText = "test limit text";
+        mSummaryPreference.setLimitInfo(limitText);
+
+        mSummaryPreference.onBindViewHolder(mHolder);
+        assertThat(mSummaryPreference.getDataLimits(mHolder).getVisibility())
+                .isEqualTo(View.VISIBLE);
+        assertThat(mSummaryPreference.getDataLimits(mHolder).getText()).isEqualTo(limitText);
+    }
+
+    @Test
+    public void testSetLimitInfo_withNullLimitInfo_dataLimitsNotShown() {
+        mSummaryPreference.setLimitInfo(null);
+
+        mSummaryPreference.onBindViewHolder(mHolder);
+        assertThat(mSummaryPreference.getDataLimits(mHolder).getVisibility()).isEqualTo(View.GONE);
+    }
+
+    @Test
+    public void testSetLimitInfo_withEmptyLimitInfo_dataLimitsNotShown() {
+        final String emptyLimitText = "";
+        mSummaryPreference.setLimitInfo(emptyLimitText);
+
+        mSummaryPreference.onBindViewHolder(mHolder);
+        assertThat(mSummaryPreference.getDataLimits(mHolder).getVisibility()).isEqualTo(View.GONE);
+    }
+
+    @Test
+    public void testSetChartEnabledFalse_hidesLabelBar() {
+        setValidLabels();
+        mSummaryPreference.setChartEnabled(false);
+
+        mSummaryPreference.onBindViewHolder(mHolder);
+        assertThat(mSummaryPreference.getLabelBar(mHolder).getVisibility()).isEqualTo(View.GONE);
+        assertThat(mSummaryPreference.getProgressBar(mHolder).getVisibility()).isEqualTo(View.GONE);
+    }
+
+    @Test
+    public void testSetEmptyLabels_hidesLabelBar() {
+        mSummaryPreference.setLabels("", "");
+
+        mSummaryPreference.onBindViewHolder(mHolder);
+        assertThat(mSummaryPreference.getLabelBar(mHolder).getVisibility()).isEqualTo(View.GONE);
+        assertThat(mSummaryPreference.getProgressBar(mHolder).getVisibility()).isEqualTo(View.GONE);
+    }
+
+    @Test
+    public void testLabelBar_isVisible_whenLabelsSet() {
+        setValidLabels();
+        //mChartEnabled defaults to true
+
+        mSummaryPreference.onBindViewHolder(mHolder);
+        assertThat(mSummaryPreference.getLabelBar(mHolder).getVisibility())
+                .isEqualTo(View.VISIBLE);
+        assertThat(mSummaryPreference.getProgressBar(mHolder).getVisibility())
+                .isEqualTo(View.VISIBLE);
+    }
+
+    @Test
+    public void testSetProgress_updatesProgressBar() {
+        setValidLabels();
+        mSummaryPreference.setProgress(.5f);
+
+        mSummaryPreference.onBindViewHolder(mHolder);
+        assertThat(mSummaryPreference.getProgressBar(mHolder).getProgress()).isEqualTo(50);
+    }
+
+    private void setValidLabels() {
+        mSummaryPreference.setLabels("0.0 GB", "5.0 GB");
+    }
+
+    @Test
+    public void testSetUsageAndRemainingInfo_withUsageInfo_dataUsageAndRemainingShown() {
+        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 1 /* numPlans */,
+                new Intent());
+        mSummaryPreference.setUsageNumbers(
+                BillingCycleSettings.MIB_IN_BYTES,
+                10 * BillingCycleSettings.MIB_IN_BYTES,
+                true /* hasMobileData */);
+
+        mSummaryPreference.onBindViewHolder(mHolder);
+        assertThat(mSummaryPreference.getDataUsed(mHolder).getText().toString())
+                .isEqualTo("1.00 MB used");
+        assertThat(mSummaryPreference.getDataRemaining(mHolder).getText().toString())
+                .isEqualTo("9.00 MB left");
+        assertThat(mSummaryPreference.getDataRemaining(mHolder).getVisibility())
+                .isEqualTo(View.VISIBLE);
+        final int colorId = Utils.getColorAttrDefaultColor(mContext, android.R.attr.colorAccent);
+        assertThat(mSummaryPreference.getDataRemaining(mHolder).getCurrentTextColor())
+                .isEqualTo(colorId);
+    }
+
+    @Test
+    public void testSetUsageInfo_withDataOverusage() {
+        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 1 /* numPlans */,
+                new Intent());
+        mSummaryPreference.setUsageNumbers(
+                11 * BillingCycleSettings.MIB_IN_BYTES,
+                10 * BillingCycleSettings.MIB_IN_BYTES,
+                true /* hasMobileData */);
+
+        mSummaryPreference.onBindViewHolder(mHolder);
+        assertThat(mSummaryPreference.getDataUsed(mHolder).getText().toString())
+                .isEqualTo("11.00 MB used");
+        assertThat(mSummaryPreference.getDataRemaining(mHolder).getText().toString())
+                .isEqualTo("1.00 MB over");
+        final int colorId = Utils.getColorAttrDefaultColor(mContext, android.R.attr.colorError);
+        assertThat(mSummaryPreference.getDataRemaining(mHolder).getCurrentTextColor())
+                .isEqualTo(colorId);
+    }
+
+    @Test
+    public void testSetUsageInfo_withUsageInfo_dataUsageShown() {
+        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
+                new Intent());
+        mSummaryPreference.setUsageNumbers(
+                BillingCycleSettings.MIB_IN_BYTES, -1L, true /* hasMobileData */);
+
+        mSummaryPreference.onBindViewHolder(mHolder);
+        assertThat(mSummaryPreference.getDataUsed(mHolder).getText().toString())
+                .isEqualTo("1.00 MB used");
+        assertThat(mSummaryPreference.getDataRemaining(mHolder).getText()).isEqualTo("");
+    }
+
+    @Test
+    public void testSetAppIntent_toMdpApp_intentCorrect() {
+        final Intent intent = new Intent(SubscriptionManager.ACTION_MANAGE_SUBSCRIPTION_PLANS);
+        intent.setPackage("test-owner.example.com");
+        intent.putExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, 42);
+
+        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
+                intent);
+
+        mSummaryPreference.onBindViewHolder(mHolder);
+        assertThat(mSummaryPreference.getLaunchButton(mHolder).getVisibility())
+                .isEqualTo(View.VISIBLE);
+        assertThat(mSummaryPreference.getLaunchButton(mHolder).getText())
+                .isEqualTo(ResourcesUtils.getResourcesString(mContext, "launch_mdp_app_text"));
+
+        doNothing().when(mContext).startActivity(any(Intent.class));
+        mSummaryPreference.getLaunchButton(mHolder).callOnClick();
+        final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(
+                Intent.class);
+        verify(mContext).startActivity(intentCaptor.capture());
+        final Intent startedIntent = intentCaptor.getValue();
+
+        assertThat(startedIntent.getAction())
+                .isEqualTo(SubscriptionManager.ACTION_MANAGE_SUBSCRIPTION_PLANS);
+        assertThat(startedIntent.getPackage()).isEqualTo("test-owner.example.com");
+        assertThat(startedIntent.getIntExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, -1))
+                .isEqualTo(42);
+    }
+
+    @Test
+    public void testSetUsageInfo_withOverflowStrings_dataRemainingNotShown() {
+        LayoutInflater inflater = LayoutInflater.from(mContext);
+        View view = inflater.inflate(mSummaryPreference.getLayoutResource(), null /* root */,
+                false /* attachToRoot */);
+
+        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 1 /* numPlans */,
+                new Intent());
+        mSummaryPreference.setUsageNumbers(
+                BillingCycleSettings.MIB_IN_BYTES,
+                10 * BillingCycleSettings.MIB_IN_BYTES,
+                true /* hasMobileData */);
+
+        int data_used_formatted_id = ResourcesUtils.getResourcesId(
+                mContext, "string", "data_used_formatted");
+        int data_remaining_id = ResourcesUtils.getResourcesId(
+                mContext, "string", "data_remaining");
+        CharSequence data_used_formatted_cs = "^1 ^2 used with long trailing text";
+        CharSequence data_remaining_cs = "^1 left";
+        doReturn(data_used_formatted_cs).when(mResources).getText(data_used_formatted_id);
+        doReturn(data_remaining_cs).when(mResources).getText(data_remaining_id);
+
+        mSummaryPreference.onBindViewHolder(mHolder);
+
+        TextView dataUsed = mSummaryPreference.getDataUsed(mHolder);
+        TextView dataRemaining = mSummaryPreference.getDataRemaining(mHolder);
+        int width = MeasureSpec.makeMeasureSpec(500, MeasureSpec.EXACTLY);
+        dataUsed.measure(width, MeasureSpec.UNSPECIFIED);
+        dataRemaining.measure(width, MeasureSpec.UNSPECIFIED);
+
+        assertThat(dataRemaining.getVisibility()).isEqualTo(View.VISIBLE);
+
+        MeasurableLinearLayout layout = mSummaryPreference.getLayout(mHolder);
+        layout.measure(
+                MeasureSpec.makeMeasureSpec(800, View.MeasureSpec.EXACTLY),
+                MeasureSpec.makeMeasureSpec(1000, View.MeasureSpec.EXACTLY));
+
+        assertThat(dataUsed.getText().toString()).isEqualTo("1.00 MB used with long trailing text");
+        // TODO(b/175389659): re-enable this line once cuttlefish device specs are verified.
+        // assertThat(dataRemaining.getVisibility()).isEqualTo(View.GONE);
+    }
+
+    @Test
+    public void testSetWifiMode_withUsageInfo_dataUsageShown() {
+        final int daysLeft = 3;
+        final long cycleEnd = System.currentTimeMillis() + TimeUnit.DAYS.toMillis(daysLeft)
+                + TimeUnit.HOURS.toMillis(1);
+        mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
+                new Intent());
+        mSummaryPreference.setUsageNumbers(1000000L, -1L, true);
+        final String cycleText = "The quick fox";
+        mSummaryPreference.setWifiMode(true /* isWifiMode */, cycleText, false /* isSingleWifi */);
+        doReturn(200L).when(mSummaryPreference).getHistoricalUsageLevel();
+
+        mSummaryPreference.onBindViewHolder(mHolder);
+        assertThat(mSummaryPreference.getUsageTitle(mHolder).getText().toString())
+                .isEqualTo(ResourcesUtils.getResourcesString(mContext, "data_usage_wifi_title"));
+        assertThat(mSummaryPreference.getUsageTitle(mHolder).getVisibility())
+                .isEqualTo(View.VISIBLE);
+        assertThat(mSummaryPreference.getCycleTime(mHolder).getVisibility())
+                .isEqualTo(View.VISIBLE);
+        assertThat(mSummaryPreference.getCycleTime(mHolder).getText()).isEqualTo(cycleText);
+        assertThat(mSummaryPreference.getCarrierInfo(mHolder).getVisibility()).isEqualTo(View.GONE);
+        assertThat(mSummaryPreference.getDataLimits(mHolder).getVisibility()).isEqualTo(View.GONE);
+        assertThat(mSummaryPreference.getLaunchButton(mHolder).getVisibility())
+                .isEqualTo(View.VISIBLE);
+        assertThat(mSummaryPreference.getLaunchButton(mHolder).getText())
+                .isEqualTo(ResourcesUtils.getResourcesString(mContext, "launch_wifi_text"));
+
+        doNothing().when(mContext).startActivity(any(Intent.class));
+        mSummaryPreference.getLaunchButton(mHolder).callOnClick();
+
+        final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(
+                Intent.class);
+        verify(mContext).startActivity(intentCaptor.capture());
+        final Intent startedIntent = intentCaptor.getValue();
+
+        final Bundle expect = new Bundle(1);
+        expect.putParcelable(DataUsageList.EXTRA_NETWORK_TEMPLATE,
+                NetworkTemplate.buildTemplateWifiWildcard());
+        final Bundle actual = startedIntent
+                .getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS);
+        assertThat((NetworkTemplate) actual.getParcelable(DataUsageList.EXTRA_NETWORK_TEMPLATE))
+                .isEqualTo(NetworkTemplate.buildTemplateWifiWildcard());
+
+        assertThat(startedIntent.getIntExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID, 0))
+                .isEqualTo(ResourcesUtils.getResourcesId(mContext, "string", "wifi_data_usage"));
+    }
+
+    @UiThreadTest
+    @Test
+    public void testSetWifiMode_noUsageInfo_shouldDisableLaunchButton() {
+        mSummaryPreference.setWifiMode(true /* isWifiMode */, "Test cycle text",
+                false /* isSingleWifi */);
+        doReturn(0L).when(mSummaryPreference).getHistoricalUsageLevel();
+
+        mSummaryPreference.onBindViewHolder(mHolder);
+
+        assertThat(mSummaryPreference.getLaunchButton(mHolder).isEnabled()).isFalse();
+    }
+
+    @Test
+    public void launchWifiDataUsage_shouldSetWifiNetworkTypeInIntentExtra() {
+        doNothing().when(mContext).startActivity(any(Intent.class));
+        mSummaryPreference.launchWifiDataUsage(mContext);
+
+        final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(
+                Intent.class);
+        verify(mContext).startActivity(intentCaptor.capture());
+        final Intent launchIntent = intentCaptor.getValue();
+        final Bundle args =
+                launchIntent.getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS);
+
+        assertThat(args.getInt(DataUsageList.EXTRA_NETWORK_TYPE))
+            .isEqualTo(ConnectivityManager.TYPE_WIFI);
+    }
+}
diff --git a/tests/unit/src/com/android/settings/datausage/OWNERS b/tests/unit/src/com/android/settings/datausage/OWNERS
new file mode 100644
index 0000000..18806f4
--- /dev/null
+++ b/tests/unit/src/com/android/settings/datausage/OWNERS
@@ -0,0 +1 @@
+include /src/com/android/settings/datausage/OWNERS
diff --git a/tests/robotests/src/com/android/settings/datetime/timezone/RegionZonePickerTest.java b/tests/unit/src/com/android/settings/datetime/timezone/RegionZonePickerTest.java
similarity index 93%
rename from tests/robotests/src/com/android/settings/datetime/timezone/RegionZonePickerTest.java
rename to tests/unit/src/com/android/settings/datetime/timezone/RegionZonePickerTest.java
index dd734bb..de607da 100644
--- a/tests/robotests/src/com/android/settings/datetime/timezone/RegionZonePickerTest.java
+++ b/tests/unit/src/com/android/settings/datetime/timezone/RegionZonePickerTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2018 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.
@@ -20,6 +20,8 @@
 
 import android.icu.text.Collator;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import com.android.settings.datetime.timezone.RegionZonePicker.TimeZoneInfoComparator;
 import com.android.settings.datetime.timezone.TimeZoneInfo.Formatter;
 
@@ -31,9 +33,8 @@
 import java.util.Date;
 import java.util.List;
 import java.util.Locale;
-import org.robolectric.RobolectricTestRunner;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class RegionZonePickerTest {
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/datetime/timezone/TimeZoneInfoPreferenceControllerTest.java b/tests/unit/src/com/android/settings/datetime/timezone/TimeZoneInfoPreferenceControllerTest.java
similarity index 89%
rename from tests/robotests/src/com/android/settings/datetime/timezone/TimeZoneInfoPreferenceControllerTest.java
rename to tests/unit/src/com/android/settings/datetime/timezone/TimeZoneInfoPreferenceControllerTest.java
index 563bf8d..64d8abb 100644
--- a/tests/robotests/src/com/android/settings/datetime/timezone/TimeZoneInfoPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/datetime/timezone/TimeZoneInfoPreferenceControllerTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2018 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.
@@ -23,18 +23,19 @@
 
 import android.content.Context;
 
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import com.android.settings.datetime.timezone.TimeZoneInfo.Formatter;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
 import java.util.Date;
 import java.util.Locale;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class TimeZoneInfoPreferenceControllerTest {
 
     private TimeZoneInfo mTimeZoneInfo;
@@ -42,7 +43,7 @@
 
     @Before
     public void setUp() {
-        final Context context = RuntimeEnvironment.application;
+        final Context context = ApplicationProvider.getApplicationContext();
         final Date now = new Date(0L); // 00:00 1/1/1970
         final Formatter formatter = new Formatter(Locale.US, now);
         mTimeZoneInfo = formatter.format("America/Los_Angeles");
diff --git a/tests/robotests/src/com/android/settings/datetime/timezone/TimeZoneInfoTest.java b/tests/unit/src/com/android/settings/datetime/timezone/TimeZoneInfoTest.java
similarity index 93%
rename from tests/robotests/src/com/android/settings/datetime/timezone/TimeZoneInfoTest.java
rename to tests/unit/src/com/android/settings/datetime/timezone/TimeZoneInfoTest.java
index fd8b81f..f43cde3 100644
--- a/tests/robotests/src/com/android/settings/datetime/timezone/TimeZoneInfoTest.java
+++ b/tests/unit/src/com/android/settings/datetime/timezone/TimeZoneInfoTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2018 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.
@@ -18,6 +18,8 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import com.android.settings.datetime.timezone.TimeZoneInfo.Formatter;
 
 import org.junit.Test;
@@ -25,9 +27,8 @@
 
 import java.util.Date;
 import java.util.Locale;
-import org.robolectric.RobolectricTestRunner;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class TimeZoneInfoTest {
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/development/OverlaySettingsPreferenceControllerTest.java b/tests/unit/src/com/android/settings/development/OverlaySettingsPreferenceControllerTest.java
similarity index 95%
rename from tests/robotests/src/com/android/settings/development/OverlaySettingsPreferenceControllerTest.java
rename to tests/unit/src/com/android/settings/development/OverlaySettingsPreferenceControllerTest.java
index 4f04c38..827f5a1 100644
--- a/tests/robotests/src/com/android/settings/development/OverlaySettingsPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/development/OverlaySettingsPreferenceControllerTest.java
@@ -22,14 +22,14 @@
 import android.content.SharedPreferences;
 
 import androidx.preference.SwitchPreference;
+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.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class OverlaySettingsPreferenceControllerTest {
 
     private Context mContext;
@@ -38,7 +38,7 @@
 
     @Before
     public void setUp() {
-        mContext = RuntimeEnvironment.application;
+        mContext = ApplicationProvider.getApplicationContext();
         mController = new OverlaySettingsPreferenceController(mContext);
         mPreference = new SwitchPreference(mContext);
     }
diff --git a/tests/unit/src/com/android/settings/development/autofill/AutofillTestingHelper.java b/tests/unit/src/com/android/settings/development/autofill/AutofillTestingHelper.java
new file mode 100644
index 0000000..c1ef2b5
--- /dev/null
+++ b/tests/unit/src/com/android/settings/development/autofill/AutofillTestingHelper.java
@@ -0,0 +1,62 @@
+/*
+ * 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.settings.development.autofill;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.provider.Settings;
+import android.provider.Settings.SettingNotFoundException;
+
+final class AutofillTestingHelper {
+    private final ContentResolver mResolver;
+
+    AutofillTestingHelper(Context context) {
+        mResolver = context.getContentResolver();
+    }
+
+    public void setLoggingLevel(int max) {
+        setGlobal(Settings.Global.AUTOFILL_LOGGING_LEVEL, max);
+    }
+
+    public void setMaxPartitionsSize(int max) {
+        setGlobal(Settings.Global.AUTOFILL_MAX_PARTITIONS_SIZE, max);
+    }
+
+    public void setMaxVisibleDatasets(int level) {
+        setGlobal(Settings.Global.AUTOFILL_MAX_VISIBLE_DATASETS, level);
+    }
+
+    public int getLoggingLevel() throws SettingNotFoundException {
+        return getGlobal(Settings.Global.AUTOFILL_LOGGING_LEVEL);
+    }
+
+    public int getMaxPartitionsSize() throws SettingNotFoundException {
+        return getGlobal(Settings.Global.AUTOFILL_MAX_PARTITIONS_SIZE);
+    }
+
+    public int getMaxVisibleDatasets() throws SettingNotFoundException {
+        return getGlobal(Settings.Global.AUTOFILL_MAX_VISIBLE_DATASETS);
+    }
+
+    private void setGlobal(String key, int value) {
+        Settings.Global.putInt(mResolver, key, value);
+    }
+
+    private int getGlobal(String key) throws SettingNotFoundException {
+        return Settings.Global.getInt(mResolver, key);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/development/featureflags/FeatureFlagPersistentTest.java b/tests/unit/src/com/android/settings/development/featureflags/FeatureFlagPersistentTest.java
similarity index 93%
rename from tests/robotests/src/com/android/settings/development/featureflags/FeatureFlagPersistentTest.java
rename to tests/unit/src/com/android/settings/development/featureflags/FeatureFlagPersistentTest.java
index 7d7e36b..9b978b0 100644
--- a/tests/robotests/src/com/android/settings/development/featureflags/FeatureFlagPersistentTest.java
+++ b/tests/unit/src/com/android/settings/development/featureflags/FeatureFlagPersistentTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2018 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.
@@ -22,14 +22,15 @@
 import android.provider.Settings;
 import android.util.FeatureFlagUtils;
 
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 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;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class FeatureFlagPersistentTest {
 
     private static final String TEST_FEATURE_NAME = "test_feature";
@@ -43,7 +44,7 @@
 
     @Before
     public void setUp() {
-        mContext = RuntimeEnvironment.application;
+        mContext = ApplicationProvider.getApplicationContext();
 
         FeatureFlagPersistent.getAllPersistentFlags().add(TEST_FEATURE_NAME);
         FeatureFlagUtils.getAllFeatureFlags().put(TEST_FEATURE_NAME, "false");
@@ -137,7 +138,8 @@
 
         FeatureFlagPersistent.setEnabled(mContext, TEST_FEATURE_NAME, true);
 
-        assertThat(SystemProperties.get(FeatureFlagUtils.PERSIST_PREFIX + TEST_FEATURE_NAME)).isEqualTo("true");
+        assertThat(SystemProperties.get(FeatureFlagUtils.PERSIST_PREFIX + TEST_FEATURE_NAME))
+                .isEqualTo("true");
         assertThat(FeatureFlagUtils.isEnabled(mContext, TEST_FEATURE_NAME)).isTrue();
     }
 
@@ -150,7 +152,8 @@
 
         FeatureFlagPersistent.setEnabled(mContext, TEST_FEATURE_NAME, false);
 
-        assertThat(SystemProperties.get(FeatureFlagUtils.PERSIST_PREFIX + TEST_FEATURE_NAME)).isEqualTo("false");
+        assertThat(SystemProperties.get(FeatureFlagUtils.PERSIST_PREFIX + TEST_FEATURE_NAME))
+                .isEqualTo("false");
         assertThat(FeatureFlagUtils.isEnabled(mContext, TEST_FEATURE_NAME)).isFalse();
     }
 }
diff --git a/tests/robotests/src/com/android/settings/development/transcode/TranscodeDefaultOptionPreferenceControllerTest.java b/tests/unit/src/com/android/settings/development/transcode/TranscodeDefaultOptionPreferenceControllerTest.java
similarity index 96%
rename from tests/robotests/src/com/android/settings/development/transcode/TranscodeDefaultOptionPreferenceControllerTest.java
rename to tests/unit/src/com/android/settings/development/transcode/TranscodeDefaultOptionPreferenceControllerTest.java
index 06e66a1..550613b 100644
--- a/tests/robotests/src/com/android/settings/development/transcode/TranscodeDefaultOptionPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/development/transcode/TranscodeDefaultOptionPreferenceControllerTest.java
@@ -22,15 +22,15 @@
 import android.os.SystemProperties;
 
 import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 
 import com.android.settings.core.BasePreferenceController;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class TranscodeDefaultOptionPreferenceControllerTest {
     private static final String TRANSCODE_DEFAULT_SYS_PROP_KEY =
             "persist.sys.fuse.transcode_default";
diff --git a/tests/robotests/src/com/android/settings/development/transcode/TranscodeGlobalTogglePreferenceControllerTest.java b/tests/unit/src/com/android/settings/development/transcode/TranscodeGlobalTogglePreferenceControllerTest.java
similarity index 96%
rename from tests/robotests/src/com/android/settings/development/transcode/TranscodeGlobalTogglePreferenceControllerTest.java
rename to tests/unit/src/com/android/settings/development/transcode/TranscodeGlobalTogglePreferenceControllerTest.java
index aa2e672..7c0acd7 100644
--- a/tests/robotests/src/com/android/settings/development/transcode/TranscodeGlobalTogglePreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/development/transcode/TranscodeGlobalTogglePreferenceControllerTest.java
@@ -22,13 +22,13 @@
 import android.os.SystemProperties;
 
 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.robolectric.RobolectricTestRunner;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class TranscodeGlobalTogglePreferenceControllerTest {
 
     private static final String TRANSCODE_ENABLED_PROP_KEY = "persist.sys.fuse.transcode_enabled";
diff --git a/tests/robotests/src/com/android/settings/development/transcode/TranscodeUserControlPreferenceControllerTest.java b/tests/unit/src/com/android/settings/development/transcode/TranscodeUserControlPreferenceControllerTest.java
similarity index 96%
rename from tests/robotests/src/com/android/settings/development/transcode/TranscodeUserControlPreferenceControllerTest.java
rename to tests/unit/src/com/android/settings/development/transcode/TranscodeUserControlPreferenceControllerTest.java
index 8cba0c3..3caf8ae 100644
--- a/tests/robotests/src/com/android/settings/development/transcode/TranscodeUserControlPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/development/transcode/TranscodeUserControlPreferenceControllerTest.java
@@ -22,15 +22,15 @@
 import android.os.SystemProperties;
 
 import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 
 import com.android.settings.core.BasePreferenceController;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class TranscodeUserControlPreferenceControllerTest {
     private static final String TRANSCODE_USER_CONTROL_SYS_PROP_KEY =
             "persist.sys.fuse.transcode_user_control";
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/DeviceNamePreferenceControllerTest.java b/tests/unit/src/com/android/settings/deviceinfo/DeviceNamePreferenceControllerTest.java
similarity index 77%
rename from tests/robotests/src/com/android/settings/deviceinfo/DeviceNamePreferenceControllerTest.java
rename to tests/unit/src/com/android/settings/deviceinfo/DeviceNamePreferenceControllerTest.java
index 50a2cd1..1c13506 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/DeviceNamePreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/deviceinfo/DeviceNamePreferenceControllerTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2018 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.
@@ -18,75 +18,94 @@
 
 import static com.android.settings.core.BasePreferenceController.AVAILABLE;
 import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE;
+import static com.android.settings.deviceinfo.DeviceNamePreferenceController.RES_SHOW_DEVICE_NAME_BOOL;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 import android.bluetooth.BluetoothAdapter;
 import android.content.Context;
+import android.content.res.Resources;
 import android.net.wifi.SoftApConfiguration;
 import android.net.wifi.WifiManager;
 import android.os.Build;
+import android.os.Looper;
 import android.provider.Settings;
 
+import androidx.preference.PreferenceManager;
 import androidx.preference.PreferenceScreen;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 
-import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
 import com.android.settings.widget.ValidatedEditTextPreference;
 
+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.shadows.ShadowApplication;
 
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowBluetoothAdapter.class})
+@RunWith(AndroidJUnit4.class)
 public class DeviceNamePreferenceControllerTest {
     private static final String TESTING_STRING = "Testing";
+    private static final String TEST_PREFERENCE_KEY = "test_key";
 
     @Mock
     private WifiManager mWifiManager;
-    @Mock
     private PreferenceScreen mScreen;
     private ValidatedEditTextPreference mPreference;
     private DeviceNamePreferenceController mController;
     private Context mContext;
+    private Resources mResources;
     private BluetoothAdapter mBluetoothAdapter;
 
 
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
-        ShadowApplication shadowApplication = ShadowApplication.getInstance();
-        shadowApplication.setSystemService(Context.WIFI_SERVICE, mWifiManager);
-        mContext = RuntimeEnvironment.application;
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        when(mContext.getSystemService(WifiManager.class)).thenReturn(mWifiManager);
+        mResources = spy(mContext.getResources());
+        when(mContext.getResources()).thenReturn(mResources);
+
+        if (Looper.myLooper() == null) {
+            Looper.prepare();
+        }
+        PreferenceManager preferenceManager = new PreferenceManager(mContext);
+        mScreen = preferenceManager.createPreferenceScreen(mContext);
         mPreference = new ValidatedEditTextPreference(mContext);
-        when(mScreen.findPreference(anyString())).thenReturn(mPreference);
+        mPreference.setKey(TEST_PREFERENCE_KEY);
+        mScreen.addPreference(mPreference);
+
         final SoftApConfiguration configuration =
                 new SoftApConfiguration.Builder().setSsid("test-ap").build();
         when(mWifiManager.getSoftApConfiguration()).thenReturn(configuration);
 
-        mController = new DeviceNamePreferenceController(mContext, "test_key");
+        mController = new DeviceNamePreferenceController(mContext, TEST_PREFERENCE_KEY);
         mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
     }
 
+    @After
+    public void tearDown() {
+        Settings.Global.putString(
+                mContext.getContentResolver(), Settings.Global.DEVICE_NAME, null);
+    }
+
     @Test
     public void getAvailibilityStatus_availableByDefault() {
         assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
     }
 
     @Test
-    @Config(qualifiers = "mcc999")
     public void getAvailabilityStatus_unsupportedWhenSet() {
+        doReturn(false).when(mResources).getBoolean(RES_SHOW_DEVICE_NAME_BOOL);
         assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
     }
 
@@ -122,6 +141,8 @@
         assertThat(mPreference.getSummary()).isEqualTo(TESTING_STRING);
     }
 
+    // TODO(b/175389659): Determine why this test case fails for virtual but not local devices.
+    @Ignore
     @Test
     public void setDeviceName_bluetoothNameUpdatedWhenDeviceNameUpdated() {
         acceptDeviceName(true);
@@ -151,15 +172,6 @@
     }
 
     @Test
-    public void setDeviceName_ignoresIfCancelPressed() {
-        acceptDeviceName(true);
-        mController.displayPreference(mScreen);
-        mController.onPreferenceChange(mPreference, TESTING_STRING);
-
-        assertThat(mBluetoothAdapter.getName()).isEqualTo(TESTING_STRING);
-    }
-
-    @Test
     public void setDeviceName_okInDeviceNameWarningDialog_shouldChangePreferenceText() {
         acceptDeviceName(true);
         mController.displayPreference(mScreen);
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/legal/ModuleLicenseProviderTest.java b/tests/unit/src/com/android/settings/deviceinfo/legal/ModuleLicenseProviderTest.java
similarity index 93%
rename from tests/robotests/src/com/android/settings/deviceinfo/legal/ModuleLicenseProviderTest.java
rename to tests/unit/src/com/android/settings/deviceinfo/legal/ModuleLicenseProviderTest.java
index b65137b..7719186 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/legal/ModuleLicenseProviderTest.java
+++ b/tests/unit/src/com/android/settings/deviceinfo/legal/ModuleLicenseProviderTest.java
@@ -11,7 +11,7 @@
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
- * limitations under the License
+ * limitations under the License.
  */
 
 package com.android.settings.deviceinfo.legal;
@@ -28,27 +28,23 @@
 import android.content.ContentResolver;
 import android.content.Context;
 import android.content.SharedPreferences;
-import android.content.pm.ApplicationInfo;
 import android.content.pm.ModuleInfo;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
-import android.content.res.AssetFileDescriptor;
-import android.content.res.AssetManager;
-import android.content.res.Resources;
 import android.net.Uri;
-import android.os.ParcelFileDescriptor;
+
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
 import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class ModuleLicenseProviderTest {
     public static final String PACKAGE_NAME = "com.android.test_package";
     @Test
@@ -149,7 +145,7 @@
         ModuleLicenseProvider provider = spy(new ModuleLicenseProvider());
         Context context = mock(Context.class);
         PackageManager packageManager = mock(PackageManager.class);
-        when(provider.getContext()).thenReturn(context);
+        when(provider.getModuleContext()).thenReturn(context);
         when(context.getPackageManager()).thenReturn(packageManager);
         when(packageManager.getModuleInfo(PACKAGE_NAME, 0))
                 .thenThrow(new PackageManager.NameNotFoundException());
@@ -168,7 +164,7 @@
         ModuleLicenseProvider provider = spy(new ModuleLicenseProvider());
         Context context = mock(Context.class);
         PackageManager packageManager = mock(PackageManager.class);
-        when(provider.getContext()).thenReturn(context);
+        when(provider.getModuleContext()).thenReturn(context);
         when(context.getPackageManager()).thenReturn(packageManager);
         when(packageManager.getModuleInfo(PACKAGE_NAME, 0))
                 .thenReturn(new ModuleInfo());
@@ -249,7 +245,7 @@
         ModuleLicenseProvider provider = spy(new ModuleLicenseProvider());
         Context context = mock(Context.class);
         PackageManager packageManager = mock(PackageManager.class);
-        when(provider.getContext()).thenReturn(context);
+        when(provider.getModuleContext()).thenReturn(context);
         when(context.getPackageManager()).thenReturn(packageManager);
         when(packageManager.getModuleInfo(PACKAGE_NAME, 0))
                 .thenThrow(new PackageManager.NameNotFoundException());
@@ -268,7 +264,7 @@
         ModuleLicenseProvider provider = spy(new ModuleLicenseProvider());
         Context context = mock(Context.class);
         PackageManager packageManager = mock(PackageManager.class);
-        when(provider.getContext()).thenReturn(context);
+        when(provider.getModuleContext()).thenReturn(context);
         when(context.getPackageManager()).thenReturn(packageManager);
         when(packageManager.getModuleInfo(PACKAGE_NAME, 0))
                 .thenReturn(new ModuleInfo());
@@ -284,7 +280,7 @@
     @Test
     public void isCachedHtmlFileOutdated_packageNotInSharedPrefs_returnTrue()
             throws PackageManager.NameNotFoundException {
-        Context context = RuntimeEnvironment.application;
+        Context context = ApplicationProvider.getApplicationContext();
         context.getSharedPreferences(ModuleLicenseProvider.PREFS_NAME, Context.MODE_PRIVATE)
                 .edit().clear().commit();
 
@@ -294,7 +290,7 @@
     @Test
     public void isCachedHtmlFileOutdated_versionCodeDiffersFromSharedPref_returnTrue()
             throws PackageManager.NameNotFoundException {
-        Context context = spy(RuntimeEnvironment.application);
+        Context context = spy(ApplicationProvider.getApplicationContext());
         SharedPreferences.Editor editor = context.getSharedPreferences(
                 ModuleLicenseProvider.PREFS_NAME, Context.MODE_PRIVATE)
                 .edit();
@@ -313,7 +309,7 @@
     @Test
     public void isCachedHtmlFileOutdated_fileDoesNotExist_returnTrue()
             throws PackageManager.NameNotFoundException {
-        Context context = spy(RuntimeEnvironment.application);
+        Context context = spy(ApplicationProvider.getApplicationContext());
         context.getSharedPreferences(ModuleLicenseProvider.PREFS_NAME, Context.MODE_PRIVATE)
                 .edit().clear().commit();
         SharedPreferences.Editor editor = context.getSharedPreferences(
@@ -335,7 +331,7 @@
     @Test
     public void isCachedHtmlFileOutdated_fileIsEmpty_returnTrue()
             throws PackageManager.NameNotFoundException, IOException {
-        Context context = spy(RuntimeEnvironment.application);
+        Context context = spy(ApplicationProvider.getApplicationContext());
         context.getSharedPreferences(ModuleLicenseProvider.PREFS_NAME, Context.MODE_PRIVATE)
                 .edit().clear().commit();
         SharedPreferences.Editor editor = context.getSharedPreferences(
@@ -360,7 +356,7 @@
     @Test
     public void isCachedHtmlFileOutdated_notOutdated_returnFalse()
             throws PackageManager.NameNotFoundException, IOException {
-        Context context = spy(RuntimeEnvironment.application);
+        Context context = spy(ApplicationProvider.getApplicationContext());
         context.getSharedPreferences(ModuleLicenseProvider.PREFS_NAME, Context.MODE_PRIVATE)
                 .edit().clear().commit();
         SharedPreferences.Editor editor = context.getSharedPreferences(
@@ -388,6 +384,8 @@
     @Test
     public void getUriForPackage_returnsProperlyFormattedUri() {
         assertThat(ModuleLicenseProvider.getUriForPackage(PACKAGE_NAME))
-                .isEqualTo(Uri.parse("content://com.android.settings.module_licenses/com.android.test_package/NOTICE.html"));
+                .isEqualTo(Uri.parse(
+                        "content://com.android.settings.module_licenses/"
+                        + "com.android.test_package/NOTICE.html"));
     }
 }
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java b/tests/unit/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java
similarity index 85%
rename from tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java
rename to tests/unit/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java
index a854c04..e94c4e7 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java
+++ b/tests/unit/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java
@@ -28,13 +28,11 @@
 import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.NETWORK_PROVIDER_VALUE_ID;
 import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.OPERATOR_INFO_LABEL_ID;
 import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.OPERATOR_INFO_VALUE_ID;
-import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.PHONE_NUMBER_VALUE_ID;
 import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.ROAMING_INFO_VALUE_ID;
 import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.SERVICE_STATE_VALUE_ID;
 import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.SIGNAL_STRENGTH_LABEL_ID;
 import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.SIGNAL_STRENGTH_VALUE_ID;
 
-
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.eq;
@@ -45,16 +43,11 @@
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
-import static org.robolectric.Shadows.shadowOf;
 
 import android.content.Context;
-import android.content.pm.PackageInfo;
 import android.os.PersistableBundle;
 import android.telephony.CarrierConfigManager;
 import android.telephony.CellSignalStrength;
-import android.telephony.CellSignalStrengthCdma;
-import android.telephony.CellSignalStrengthLte;
-import android.telephony.CellSignalStrengthWcdma;
 import android.telephony.PhoneStateListener;
 import android.telephony.ServiceState;
 import android.telephony.SignalStrength;
@@ -65,34 +58,27 @@
 import android.telephony.euicc.EuiccManager;
 
 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.settings.R;
-import com.android.settings.testutils.shadow.ShadowDeviceInfoUtils;
-import com.android.settingslib.DeviceInfoUtils;
+import com.android.settings.testutils.ResourcesUtils;
 import com.android.settingslib.core.lifecycle.Lifecycle;
 
-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.RuntimeEnvironment;
-import org.robolectric.Shadows;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadows.ShadowPackageManager;
-import org.robolectric.shadows.ShadowTelephonyManager;
-import org.robolectric.util.ReflectionHelpers;
 
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowDeviceInfoUtils.class})
+@RunWith(AndroidJUnit4.class)
 public class SimStatusDialogControllerTest {
 
     @Mock
@@ -107,14 +93,13 @@
     @Mock
     private SignalStrength mSignalStrength;
     @Mock
-    private CellSignalStrengthCdma mCellSignalStrengthCdma;
+    private CellSignalStrength mCellSignalStrengthCdma;
     @Mock
-    private CellSignalStrengthLte mCellSignalStrengthLte;
+    private CellSignalStrength mCellSignalStrengthLte;
     @Mock
-    private CellSignalStrengthWcdma mCellSignalStrengthWcdma;
+    private CellSignalStrength mCellSignalStrengthWcdma;
     @Mock
     private CarrierConfigManager mCarrierConfigManager;
-    @Mock
     private PersistableBundle mPersistableBundle;
     @Mock
     private EuiccManager mEuiccManager;
@@ -122,6 +107,7 @@
 
     private SimStatusDialogController mController;
     private Context mContext;
+    @Mock
     private LifecycleOwner mLifecycleOwner;
     private Lifecycle mLifecycle;
 
@@ -131,27 +117,31 @@
     private static final int MAX_PHONE_COUNT_DUAL_SIM = 2;
 
     @Before
+    @UiThreadTest
     public void setup() {
         MockitoAnnotations.initMocks(this);
-        mContext = spy(RuntimeEnvironment.application);
+        mContext = spy(ApplicationProvider.getApplicationContext());
         when(mDialog.getContext()).thenReturn(mContext);
-        mLifecycleOwner = () -> mLifecycle;
         mLifecycle = new Lifecycle(mLifecycleOwner);
 
-        mSubscriptionManager = spy(mContext.getSystemService(SubscriptionManager.class));
-
         mTelephonyManager = spy(mContext.getSystemService(TelephonyManager.class));
-        final ShadowTelephonyManager shadowTelephonyMgr = shadowOf(mTelephonyManager);
-        shadowTelephonyMgr.setTelephonyManagerForSubscriptionId(
-                SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, mTelephonyManager);
+        mSubscriptionManager = spy(mContext.getSystemService(SubscriptionManager.class));
+        doReturn(mSubscriptionInfo).when(mSubscriptionManager)
+                .getActiveSubscriptionInfoForSimSlotIndex(anyInt());
+
+        when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
+        when(mContext.getSystemService(CarrierConfigManager.class)).thenReturn(
+                    mCarrierConfigManager);
+        when(mContext.getSystemService(EuiccManager.class)).thenReturn(mEuiccManager);
+        when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager);
+
+        doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(
+                SubscriptionManager.DEFAULT_SUBSCRIPTION_ID);
         doReturn(2).when(mTelephonyManager).getCardIdForDefaultEuicc();
         doReturn(TelephonyManager.NETWORK_TYPE_LTE).when(mTelephonyManager).getDataNetworkType();
 
-        doReturn(mEuiccManager).when(mContext).getSystemService(EuiccManager.class);
-
         mController = spy(new SimStatusDialogController(mDialog, mLifecycle, 0 /* phone id */));
-        ShadowDeviceInfoUtils.setPhoneNumber("");
-        //CellSignalStrength setup
+        // CellSignalStrength setup
         doReturn(0).when(mCellSignalStrengthCdma).getDbm();
         doReturn(0).when(mCellSignalStrengthCdma).getAsuLevel();
         doReturn(0).when(mCellSignalStrengthLte).getDbm();
@@ -163,12 +153,6 @@
         doReturn(mPhoneStateListener).when(mController).getPhoneStateListener();
         doReturn(mSubscriptionInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(anyInt());
 
-        ReflectionHelpers.setField(mController, "mTelephonyManager", mTelephonyManager);
-        ReflectionHelpers.setField(mController, "mCarrierConfigManager", mCarrierConfigManager);
-        ReflectionHelpers.setField(mController, "mSubscriptionInfo", mSubscriptionInfo);
-        ReflectionHelpers.setField(mController, "mEuiccManager", mEuiccManager);
-        ReflectionHelpers.setField(mController, "mSubscriptionManager", mSubscriptionManager);
-
         when(mTelephonyManager.getActiveModemCount()).thenReturn(MAX_PHONE_COUNT_SINGLE_SIM);
         doReturn(new ArrayList<UiccCardInfo>()).when(mTelephonyManager).getUiccCardsInfo();
         doReturn(new HashMap<Integer, Integer>()).when(mTelephonyManager)
@@ -178,23 +162,13 @@
         when(mEuiccManager.getEid()).thenReturn("");
         when(mEuiccManager.createForCardId(anyInt())).thenReturn(mEuiccManager);
 
+        mPersistableBundle = new PersistableBundle();
         when(mCarrierConfigManager.getConfigForSubId(anyInt())).thenReturn(mPersistableBundle);
-        when(mPersistableBundle.getBoolean(
-                CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL))
-                .thenReturn(true);
+
+        mPersistableBundle.putBoolean(
+                CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL, true);
         doReturn(mServiceState).when(mTelephonyManager).getServiceState();
         doReturn(mSignalStrength).when(mTelephonyManager).getSignalStrength();
-
-        final ShadowPackageManager shadowPackageManager =
-                Shadows.shadowOf(RuntimeEnvironment.application.getPackageManager());
-        final PackageInfo sysUIPackageInfo = new PackageInfo();
-        sysUIPackageInfo.packageName = "com.android.systemui";
-        shadowPackageManager.addPackage(sysUIPackageInfo);
-    }
-
-    @After
-    public void tearDown() {
-        ShadowDeviceInfoUtils.reset();
     }
 
     @Test
@@ -208,15 +182,10 @@
     }
 
     @Test
-    public void initialize_updatePhoneNumberWith1111111111_shouldUpdatePhoneNumber() {
-        ShadowDeviceInfoUtils.setPhoneNumber("1111111111");
-
-        final String phoneNumber = DeviceInfoUtils.getBidiFormattedPhoneNumber(mContext,
-                mSubscriptionInfo);
-
+    public void initialize_shouldUpdatePhoneNumber() {
         mController.initialize();
 
-        verify(mDialog).setText(PHONE_NUMBER_VALUE_ID, phoneNumber);
+        verify(mController).updatePhoneNumber();
     }
 
     @Test
@@ -235,19 +204,19 @@
 
         mController.initialize();
 
-        final String inServiceText = mContext.getString(R.string.radioInfo_service_in);
+        final String inServiceText = ResourcesUtils.getResourcesString(
+                mContext, "radioInfo_service_in");
         verify(mDialog).setText(SERVICE_STATE_VALUE_ID, inServiceText);
     }
 
     @Test
     public void initialize_updateServiceStateWithPowerOff_shouldUpdateTextAndResetSignalStrength() {
         when(mServiceState.getState()).thenReturn(ServiceState.STATE_POWER_OFF);
-        when(mPersistableBundle.getBoolean(
-                CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL)).thenReturn(true);
 
         mController.initialize();
 
-        final String offServiceText = mContext.getString(R.string.radioInfo_service_off);
+        final String offServiceText = ResourcesUtils.getResourcesString(
+                mContext, "radioInfo_service_off");
         verify(mDialog).setText(SERVICE_STATE_VALUE_ID, offServiceText);
         verify(mDialog).setText(SIGNAL_STRENGTH_VALUE_ID, "0");
     }
@@ -257,12 +226,11 @@
         when(mServiceState.getState()).thenReturn(ServiceState.STATE_OUT_OF_SERVICE);
         when(mServiceState.getDataRegistrationState()).thenReturn(
                 ServiceState.STATE_OUT_OF_SERVICE);
-        when(mPersistableBundle.getBoolean(
-                CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL)).thenReturn(true);
 
         mController.initialize();
 
-        final String offServiceText = mContext.getString(R.string.radioInfo_service_out);
+        final String offServiceText = ResourcesUtils.getResourcesString(
+                mContext, "radioInfo_service_out");
         verify(mDialog).setText(SERVICE_STATE_VALUE_ID, offServiceText);
         verify(mDialog).setText(SIGNAL_STRENGTH_VALUE_ID, "0");
     }
@@ -271,12 +239,11 @@
     public void initialize_updateVoiceOutOfServiceDataInService_shouldUpdateTextToBeInService() {
         when(mServiceState.getState()).thenReturn(ServiceState.STATE_OUT_OF_SERVICE);
         when(mServiceState.getDataRegistrationState()).thenReturn(ServiceState.STATE_IN_SERVICE);
-        when(mPersistableBundle.getBoolean(
-                CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL)).thenReturn(true);
 
         mController.initialize();
 
-        final String inServiceText = mContext.getString(R.string.radioInfo_service_in);
+        final String inServiceText = ResourcesUtils.getResourcesString(
+                mContext, "radioInfo_service_in");
         verify(mDialog).setText(SERVICE_STATE_VALUE_ID, inServiceText);
     }
 
@@ -287,13 +254,11 @@
         final int wcdmaDbm = 40;
         final int wcdmaAsu = 40;
         setupCellSignalStrength_lteWcdma(lteDbm, lteAsu, wcdmaDbm, wcdmaAsu);
-        when(mPersistableBundle.getBoolean(
-                CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL)).thenReturn(true);
 
         mController.initialize();
 
-        final String signalStrengthString =
-                mContext.getString(R.string.sim_signal_strength, lteDbm, lteAsu);
+        final String signalStrengthString = ResourcesUtils.getResourcesString(
+                mContext, "sim_signal_strength", lteDbm, lteAsu);
         verify(mDialog, times(2)).setText(SIGNAL_STRENGTH_VALUE_ID, signalStrengthString);
     }
 
@@ -304,13 +269,11 @@
         final int cdmaDbm = 30;
         final int cdmaAsu = 30;
         setupCellSignalStrength_lteCdma(lteDbm, lteAsu, cdmaDbm, cdmaAsu);
-        when(mPersistableBundle.getBoolean(
-                CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL)).thenReturn(true);
 
         mController.initialize();
 
-        final String signalStrengthString =
-                mContext.getString(R.string.sim_signal_strength, lteDbm, lteAsu);
+        final String signalStrengthString = ResourcesUtils.getResourcesString(
+                mContext, "sim_signal_strength", lteDbm, lteAsu);
         verify(mDialog, times(2)).setText(SIGNAL_STRENGTH_VALUE_ID, signalStrengthString);
     }
 
@@ -318,19 +281,15 @@
     public void initialize_updateVoiceOutOfServiceDataInService_shouldUpdateSignalStrengthTo50() {
         when(mServiceState.getState()).thenReturn(ServiceState.STATE_OUT_OF_SERVICE);
         when(mServiceState.getDataRegistrationState()).thenReturn(ServiceState.STATE_IN_SERVICE);
-        when(mPersistableBundle.getBoolean(
-                CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL)).thenReturn(true);
 
         final int lteDbm = 50;
         final int lteAsu = 50;
         setupCellSignalStrength_lteOnly(lteDbm, lteAsu);
-        when(mPersistableBundle.getBoolean(
-                CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL)).thenReturn(true);
 
         mController.initialize();
 
-        final String signalStrengthString =
-                mContext.getString(R.string.sim_signal_strength, lteDbm, lteAsu);
+        final String signalStrengthString = ResourcesUtils.getResourcesString(
+                mContext, "sim_signal_strength", lteDbm, lteAsu);
         verify(mDialog, times(2)).setText(SIGNAL_STRENGTH_VALUE_ID, signalStrengthString);
     }
 
@@ -362,7 +321,8 @@
 
         mController.initialize();
 
-        final String roamingOnString = mContext.getString(R.string.radioInfo_roaming_in);
+        final String roamingOnString = ResourcesUtils.getResourcesString(
+                mContext, "radioInfo_roaming_in");
         verify(mDialog).setText(ROAMING_INFO_VALUE_ID, roamingOnString);
     }
 
@@ -372,14 +332,15 @@
 
         mController.initialize();
 
-        final String roamingOffString = mContext.getString(R.string.radioInfo_roaming_not);
+        final String roamingOffString = ResourcesUtils.getResourcesString(
+                mContext, "radioInfo_roaming_not");
         verify(mDialog).setText(ROAMING_INFO_VALUE_ID, roamingOffString);
     }
 
     @Test
     public void initialize_doNotShowIccid_shouldRemoveIccidSetting() {
-        when(mPersistableBundle.getBoolean(
-                CarrierConfigManager.KEY_SHOW_ICCID_IN_SIM_STATUS_BOOL)).thenReturn(false);
+        mPersistableBundle.putBoolean(
+                CarrierConfigManager.KEY_SHOW_ICCID_IN_SIM_STATUS_BOOL, false);
 
         mController.initialize();
 
@@ -389,9 +350,8 @@
 
     @Test
     public void initialize_doNotShowSignalStrength_shouldRemoveSignalStrengthSetting() {
-        when(mPersistableBundle.getBoolean(
-                CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL))
-                .thenReturn(false);
+        mPersistableBundle.putBoolean(
+                CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL, false);
 
         mController.initialize();
 
@@ -414,8 +374,7 @@
     @Test
     public void initialize_showIccid_shouldSetIccidToSetting() {
         final String iccid = "12351351231241";
-        when(mPersistableBundle.getBoolean(
-                CarrierConfigManager.KEY_SHOW_ICCID_IN_SIM_STATUS_BOOL)).thenReturn(true);
+        mPersistableBundle.putBoolean(CarrierConfigManager.KEY_SHOW_ICCID_IN_SIM_STATUS_BOOL, true);
         doReturn(iccid).when(mTelephonyManager).getSimSerialNumber();
 
         mController.initialize();
@@ -720,8 +679,8 @@
     @Test
     @Ignore
     public void initialize_imsRegistered_shouldSetImsRegistrationStateSummaryToRegisterd() {
-        when(mPersistableBundle.getBoolean(
-                CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL)).thenReturn(true);
+        mPersistableBundle.putBoolean(
+                CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL, true);
         when(mTelephonyManager.isImsRegistered(anyInt())).thenReturn(true);
 
         mController.initialize();
@@ -733,8 +692,8 @@
     @Test
     @Ignore
     public void initialize_imsNotRegistered_shouldSetImsRegistrationStateSummaryToNotRegisterd() {
-        when(mPersistableBundle.getBoolean(
-                CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL)).thenReturn(true);
+        mPersistableBundle.putBoolean(
+                CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL, true);
         when(mTelephonyManager.isImsRegistered(anyInt())).thenReturn(false);
 
         mController.initialize();
@@ -746,8 +705,8 @@
     @Test
     @Ignore
     public void initialize_showImsRegistration_shouldNotRemoveImsRegistrationStateSetting() {
-        when(mPersistableBundle.getBoolean(
-                CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL)).thenReturn(true);
+        mPersistableBundle.putBoolean(
+                CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL, true);
 
         mController.initialize();
 
@@ -757,8 +716,8 @@
     @Test
     @Ignore
     public void initialize_doNotShowImsRegistration_shouldRemoveImsRegistrationStateSetting() {
-        when(mPersistableBundle.getBoolean(
-                CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL)).thenReturn(false);
+        mPersistableBundle.putBoolean(
+                CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL, false);
 
         mController.initialize();
 
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/storage/VolumeSizesLoaderTest.java b/tests/unit/src/com/android/settings/deviceinfo/storage/VolumeSizesLoaderTest.java
similarity index 61%
rename from tests/robotests/src/com/android/settings/deviceinfo/storage/VolumeSizesLoaderTest.java
rename to tests/unit/src/com/android/settings/deviceinfo/storage/VolumeSizesLoaderTest.java
index 5aa9f72..79c5db8 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/storage/VolumeSizesLoaderTest.java
+++ b/tests/unit/src/com/android/settings/deviceinfo/storage/VolumeSizesLoaderTest.java
@@ -1,3 +1,18 @@
+/*
+ * 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.settings.deviceinfo.storage;
 
 import static com.google.common.truth.Truth.assertThat;
@@ -8,14 +23,15 @@
 
 import android.os.storage.VolumeInfo;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import com.android.settingslib.deviceinfo.PrivateStorageInfo;
 import com.android.settingslib.deviceinfo.StorageVolumeProvider;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class VolumeSizesLoaderTest {
     @Test
     public void getVolumeSize_getsValidSizes() throws Exception {
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleRadioButtonsControllerTest.java b/tests/unit/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleRadioButtonsControllerTest.java
similarity index 82%
rename from tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleRadioButtonsControllerTest.java
rename to tests/unit/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleRadioButtonsControllerTest.java
index 2919edc..b807114 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleRadioButtonsControllerTest.java
+++ b/tests/unit/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleRadioButtonsControllerTest.java
@@ -1,3 +1,18 @@
+/*
+ * 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.settings.fuelgauge.batterysaver;
 
 import static com.google.common.truth.Truth.assertThat;
@@ -9,13 +24,14 @@
 import android.provider.Settings.Global;
 import android.provider.Settings.Secure;
 
+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.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class BatterySaverScheduleRadioButtonsControllerTest {
     private Context mContext;
     private ContentResolver mResolver;
@@ -24,7 +40,7 @@
 
     @Before
     public void setUp() {
-        mContext = RuntimeEnvironment.application;
+        mContext = ApplicationProvider.getApplicationContext();
         mSeekBarController = new BatterySaverScheduleSeekBarController(mContext);
         mController = new BatterySaverScheduleRadioButtonsController(
                 mContext, mSeekBarController);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverStickyPreferenceControllerTest.java b/tests/unit/src/com/android/settings/fuelgauge/batterysaver/BatterySaverStickyPreferenceControllerTest.java
similarity index 87%
rename from tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverStickyPreferenceControllerTest.java
rename to tests/unit/src/com/android/settings/fuelgauge/batterysaver/BatterySaverStickyPreferenceControllerTest.java
index 0e7c312..8cfedf6 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverStickyPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/fuelgauge/batterysaver/BatterySaverStickyPreferenceControllerTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016 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.
@@ -21,13 +21,15 @@
 import android.content.Context;
 import android.provider.Settings;
 import android.provider.Settings.Global;
+
+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.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class BatterySaverStickyPreferenceControllerTest {
 
     private static final String PREF_KEY = "battery_saver_sticky";
@@ -37,7 +39,7 @@
 
     @Before
     public void setup() {
-        mContext = RuntimeEnvironment.application;
+        mContext = ApplicationProvider.getApplicationContext();
         mController = new BatterySaverStickyPreferenceController(mContext, PREF_KEY);
     }
 
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AppInfoTest.java b/tests/unit/src/com/android/settings/fuelgauge/batterytip/AppInfoTest.java
similarity index 95%
rename from tests/robotests/src/com/android/settings/fuelgauge/batterytip/AppInfoTest.java
rename to tests/unit/src/com/android/settings/fuelgauge/batterytip/AppInfoTest.java
index ad546f3..069f123 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AppInfoTest.java
+++ b/tests/unit/src/com/android/settings/fuelgauge/batterytip/AppInfoTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2018 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.
@@ -21,6 +21,8 @@
 import android.os.Parcel;
 import android.text.format.DateUtils;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -28,9 +30,8 @@
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
-import org.robolectric.RobolectricTestRunner;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class AppInfoTest {
 
     private static final String PACKAGE_NAME = "com.android.app";
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicyTest.java b/tests/unit/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicyTest.java
similarity index 94%
rename from tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicyTest.java
rename to tests/unit/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicyTest.java
index 9b54fc7..4be2ae6 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicyTest.java
+++ b/tests/unit/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicyTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 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.
@@ -22,13 +22,14 @@
 import android.provider.Settings;
 import android.text.format.DateUtils;
 
+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.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class BatteryTipPolicyTest {
 
     private static final String BATTERY_TIP_CONSTANTS_VALUE = "battery_tip_enabled=true"
@@ -54,7 +55,7 @@
 
     @Before
     public void setUp() {
-        mContext = RuntimeEnvironment.application;
+        mContext = ApplicationProvider.getApplicationContext();
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/gestures/OneHandedAppTapsExitPreferenceControllerTest.java b/tests/unit/src/com/android/settings/gestures/OneHandedAppTapsExitPreferenceControllerTest.java
similarity index 93%
rename from tests/robotests/src/com/android/settings/gestures/OneHandedAppTapsExitPreferenceControllerTest.java
rename to tests/unit/src/com/android/settings/gestures/OneHandedAppTapsExitPreferenceControllerTest.java
index 28ce802..18738e9 100644
--- a/tests/robotests/src/com/android/settings/gestures/OneHandedAppTapsExitPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/gestures/OneHandedAppTapsExitPreferenceControllerTest.java
@@ -21,16 +21,16 @@
 import android.content.Context;
 
 import androidx.preference.SwitchPreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 
 import com.android.settings.core.TogglePreferenceController;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class OneHandedAppTapsExitPreferenceControllerTest {
 
     private static final String KEY = "gesture_app_taps_to_exit";
@@ -42,7 +42,7 @@
 
     @Before
     public void setUp() {
-        mContext = RuntimeEnvironment.application;
+        mContext = ApplicationProvider.getApplicationContext();
         mController = new OneHandedAppTapsExitPreferenceController(mContext, KEY);
         mSwitchPreference = new SwitchPreference(mContext);
         mSwitchPreference.setKey(KEY);
diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/CardDatabaseHelperTest.java b/tests/unit/src/com/android/settings/homepage/contextualcards/CardDatabaseHelperTest.java
similarity index 89%
rename from tests/robotests/src/com/android/settings/homepage/contextualcards/CardDatabaseHelperTest.java
rename to tests/unit/src/com/android/settings/homepage/contextualcards/CardDatabaseHelperTest.java
index c908225..cf9b3c6 100644
--- a/tests/robotests/src/com/android/settings/homepage/contextualcards/CardDatabaseHelperTest.java
+++ b/tests/unit/src/com/android/settings/homepage/contextualcards/CardDatabaseHelperTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2018 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.
@@ -22,14 +22,15 @@
 import android.database.Cursor;
 import android.database.sqlite.SQLiteDatabase;
 
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 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;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class CardDatabaseHelperTest {
 
     private Context mContext;
@@ -38,7 +39,7 @@
 
     @Before
     public void setUp() {
-        mContext = RuntimeEnvironment.application;
+        mContext = ApplicationProvider.getApplicationContext();
         mCardDatabaseHelper = CardDatabaseHelper.getInstance(mContext);
         mDatabase = mCardDatabaseHelper.getReadableDatabase();
     }
diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardLookupTableTest.java b/tests/unit/src/com/android/settings/homepage/contextualcards/ContextualCardLookupTableTest.java
similarity index 96%
rename from tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardLookupTableTest.java
rename to tests/unit/src/com/android/settings/homepage/contextualcards/ContextualCardLookupTableTest.java
index 36f9c96..a7acffc 100644
--- a/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardLookupTableTest.java
+++ b/tests/unit/src/com/android/settings/homepage/contextualcards/ContextualCardLookupTableTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2018 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.
@@ -18,18 +18,19 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import com.android.settings.homepage.contextualcards.ContextualCardLookupTable.ControllerRendererMapping;
 
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
 
 import java.util.ArrayList;
 import java.util.List;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class ContextualCardLookupTableTest {
 
     private static final int UNSUPPORTED_CARD_TYPE = -99999;
diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardsDiffCallbackTest.java b/tests/unit/src/com/android/settings/homepage/contextualcards/ContextualCardsDiffCallbackTest.java
similarity index 95%
rename from tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardsDiffCallbackTest.java
rename to tests/unit/src/com/android/settings/homepage/contextualcards/ContextualCardsDiffCallbackTest.java
index 1e17a0b..3e7dadf 100644
--- a/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardsDiffCallbackTest.java
+++ b/tests/unit/src/com/android/settings/homepage/contextualcards/ContextualCardsDiffCallbackTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 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.
@@ -11,9 +11,8 @@
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
- * limitations under the License
+ * limitations under the License.
  */
-
 package com.android.settings.homepage.contextualcards;
 
 import static com.android.settings.intelligence.ContextualCardProto.ContextualCard.Category.IMPORTANT_VALUE;
@@ -23,15 +22,16 @@
 
 import android.net.Uri;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
 
 import java.util.ArrayList;
 import java.util.List;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class ContextualCardsDiffCallbackTest {
 
     private static final Uri TEST_SLICE_URI = Uri.parse("content://test/test");
diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionFooterContextualCardTest.java b/tests/unit/src/com/android/settings/homepage/contextualcards/conditional/ConditionFooterContextualCardTest.java
similarity index 90%
rename from tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionFooterContextualCardTest.java
rename to tests/unit/src/com/android/settings/homepage/contextualcards/conditional/ConditionFooterContextualCardTest.java
index b658822..0a039a9 100644
--- a/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionFooterContextualCardTest.java
+++ b/tests/unit/src/com/android/settings/homepage/contextualcards/conditional/ConditionFooterContextualCardTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2018 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.
@@ -18,13 +18,14 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import com.android.settings.homepage.contextualcards.ContextualCard;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class ConditionFooterContextualCardTest {
 
     @Test(expected = IllegalArgumentException.class)
diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionHeaderContextualCardTest.java b/tests/unit/src/com/android/settings/homepage/contextualcards/conditional/ConditionHeaderContextualCardTest.java
similarity index 90%
rename from tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionHeaderContextualCardTest.java
rename to tests/unit/src/com/android/settings/homepage/contextualcards/conditional/ConditionHeaderContextualCardTest.java
index 275e96b..59ff550 100644
--- a/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionHeaderContextualCardTest.java
+++ b/tests/unit/src/com/android/settings/homepage/contextualcards/conditional/ConditionHeaderContextualCardTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2018 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.
@@ -18,13 +18,14 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import com.android.settings.homepage.contextualcards.ContextualCard;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class ConditionHeaderContextualCardTest {
 
     @Test(expected = IllegalArgumentException.class)
diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionalContextualCardTest.java b/tests/unit/src/com/android/settings/homepage/contextualcards/conditional/ConditionalContextualCardTest.java
similarity index 92%
rename from tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionalContextualCardTest.java
rename to tests/unit/src/com/android/settings/homepage/contextualcards/conditional/ConditionalContextualCardTest.java
index 3f57228..a06afc8 100644
--- a/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/ConditionalContextualCardTest.java
+++ b/tests/unit/src/com/android/settings/homepage/contextualcards/conditional/ConditionalContextualCardTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2018 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.
@@ -21,13 +21,14 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import com.android.settings.homepage.contextualcards.ContextualCard;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class ConditionalContextualCardTest {
 
     @Test(expected = IllegalArgumentException.class)
diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSliceTest.java b/tests/unit/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSliceTest.java
similarity index 93%
rename from tests/robotests/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSliceTest.java
rename to tests/unit/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSliceTest.java
index 6f212df..a67d2e9 100644
--- a/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSliceTest.java
+++ b/tests/unit/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSliceTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 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.
@@ -11,9 +11,8 @@
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
- * limitations under the License
+ * limitations under the License.
  */
-
 package com.android.settings.homepage.contextualcards.slices;
 
 import static com.google.common.truth.Truth.assertThat;
@@ -31,14 +30,14 @@
 import androidx.slice.SliceMetadata;
 import androidx.slice.SliceProvider;
 import androidx.slice.widget.SliceLiveData;
+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.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class FaceSetupSliceTest {
 
     private Context mContext;
@@ -48,7 +47,7 @@
     public void setUp() {
         // Set-up specs for SliceMetadata.
         SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS);
-        mContext = spy(RuntimeEnvironment.application);
+        mContext = spy(ApplicationProvider.getApplicationContext());
         mPackageManager = mock(PackageManager.class);
         when(mContext.getPackageManager()).thenReturn(mPackageManager);
     }
diff --git a/tests/unit/src/com/android/settings/network/AirplaneSafeNetworksSliceTest.java b/tests/unit/src/com/android/settings/network/AirplaneSafeNetworksSliceTest.java
index ce47eb7..a344ab6 100644
--- a/tests/unit/src/com/android/settings/network/AirplaneSafeNetworksSliceTest.java
+++ b/tests/unit/src/com/android/settings/network/AirplaneSafeNetworksSliceTest.java
@@ -34,7 +34,8 @@
 import androidx.test.core.app.ApplicationProvider;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 
-import com.android.settings.AirplaneModeEnabler;
+import com.android.settings.testutils.AirplaneModeRule;
+import com.android.settings.testutils.ResourcesUtils;
 
 import org.junit.Before;
 import org.junit.Rule;
@@ -47,24 +48,20 @@
 @RunWith(AndroidJUnit4.class)
 public class AirplaneSafeNetworksSliceTest {
 
-    private static final String VIEW_AIRPLANE_SAFE_NETWORKS = "View airplane-safe networks";
-    private static final String TURN_OFF_AIRPLANE_MODE = "Turn off Airplane Mode";
-
     @Rule
     public MockitoRule mMocks = MockitoJUnit.rule();
+    @Rule
+    public AirplaneModeRule mAirplaneModeRule = new AirplaneModeRule();
     @Mock
     private WifiManager mWifiManager;
 
     private Context mContext;
-    private AirplaneModeEnabler mAirplaneModeEnabler;
     private AirplaneSafeNetworksSlice mAirplaneSafeNetworksSlice;
 
     @Before
     public void setUp() {
         mContext = spy(ApplicationProvider.getApplicationContext());
         when(mContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(mWifiManager);
-        mAirplaneModeEnabler =
-                new AirplaneModeEnabler(mContext, null /* OnAirplaneModeChangedListener */);
 
         // Set-up specs for SliceMetadata.
         SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS);
@@ -74,14 +71,14 @@
 
     @Test
     public void getSlice_airplaneModeOff_shouldBeNull() {
-        mAirplaneModeEnabler.setAirplaneMode(false);
+        mAirplaneModeRule.setAirplaneMode(false);
 
         assertThat(mAirplaneSafeNetworksSlice.getSlice()).isNull();
     }
 
     @Test
     public void getSlice_wifiDisabled_shouldShowViewAirplaneSafeNetworks() {
-        mAirplaneModeEnabler.setAirplaneMode(true);
+        mAirplaneModeRule.setAirplaneMode(true);
         when(mWifiManager.isWifiEnabled()).thenReturn(false);
 
         final Slice slice = mAirplaneSafeNetworksSlice.getSlice();
@@ -89,12 +86,13 @@
         assertThat(slice).isNotNull();
         final SliceItem sliceTitle =
                 SliceMetadata.from(mContext, slice).getListContent().getHeader().getTitleItem();
-        assertThat(sliceTitle.getText()).isEqualTo(VIEW_AIRPLANE_SAFE_NETWORKS);
+        assertThat(sliceTitle.getText()).isEqualTo(
+                ResourcesUtils.getResourcesString(mContext, "view_airplane_safe_networks"));
     }
 
     @Test
     public void getSlice_wifiEnabled_shouldShowTurnOffAirplaneMode() {
-        mAirplaneModeEnabler.setAirplaneMode(true);
+        mAirplaneModeRule.setAirplaneMode(true);
         when(mWifiManager.isWifiEnabled()).thenReturn(true);
 
         final Slice slice = mAirplaneSafeNetworksSlice.getSlice();
@@ -102,12 +100,13 @@
         assertThat(slice).isNotNull();
         final SliceItem sliceTitle =
                 SliceMetadata.from(mContext, slice).getListContent().getHeader().getTitleItem();
-        assertThat(sliceTitle.getText()).isEqualTo(TURN_OFF_AIRPLANE_MODE);
+        assertThat(sliceTitle.getText()).isEqualTo(
+                ResourcesUtils.getResourcesString(mContext, "turn_off_airplane_mode"));
     }
 
     @Test
     public void onNotifyChange_viewAirplaneSafeNetworks_shouldSetWifiEnabled() {
-        mAirplaneModeEnabler.setAirplaneMode(true);
+        mAirplaneModeRule.setAirplaneMode(true);
         when(mWifiManager.isWifiEnabled()).thenReturn(false);
         Intent intent = mAirplaneSafeNetworksSlice.getIntent();
 
@@ -118,12 +117,12 @@
 
     @Test
     public void onNotifyChange_turnOffAirplaneMode_shouldSetAirplaneModeOff() {
-        mAirplaneModeEnabler.setAirplaneMode(true);
+        mAirplaneModeRule.setAirplaneMode(true);
         when(mWifiManager.isWifiEnabled()).thenReturn(true);
         Intent intent = mAirplaneSafeNetworksSlice.getIntent();
 
         mAirplaneSafeNetworksSlice.onNotifyChange(intent);
 
-        assertThat(mAirplaneModeEnabler.isAirplaneModeOn()).isFalse();
+        assertThat(mAirplaneModeRule.isAirplaneModeOn()).isFalse();
     }
 }
diff --git a/tests/robotests/src/com/android/settings/security/CredentialManagementAppButtonsControllerTest.java b/tests/unit/src/com/android/settings/network/EraseEuiccDataControllerTest.java
similarity index 60%
copy from tests/robotests/src/com/android/settings/security/CredentialManagementAppButtonsControllerTest.java
copy to tests/unit/src/com/android/settings/network/EraseEuiccDataControllerTest.java
index ecc2f2d..05b92a8 100644
--- a/tests/robotests/src/com/android/settings/security/CredentialManagementAppButtonsControllerTest.java
+++ b/tests/unit/src/com/android/settings/network/EraseEuiccDataControllerTest.java
@@ -14,37 +14,38 @@
  * limitations under the License.
  */
 
-package com.android.settings.security;
+package com.android.settings.network;
 
 import static com.google.common.truth.Truth.assertThat;
 
+import static org.mockito.Mockito.spy;
+
 import android.content.Context;
 
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import com.android.settings.core.BasePreferenceController;
 
 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 CredentialManagementAppButtonsControllerTest {
+@RunWith(AndroidJUnit4.class)
+public class EraseEuiccDataControllerTest {
 
-    private Context mContext;
-    private CredentialManagementAppButtonsController mController;
+    private static final String ERASE_EUICC_DATA_PREFERENCE_KEY = "erase_euicc_data";
 
-    private static final String PREF_KEY_CREDENTIAL_MANAGEMENT_APP = "certificate_management_app";
+    private EraseEuiccDataController mController;
 
     @Before
     public void setUp() {
-        mContext = RuntimeEnvironment.application;
-        mController = new CredentialManagementAppButtonsController(
-                mContext, PREF_KEY_CREDENTIAL_MANAGEMENT_APP);
+        Context context = ApplicationProvider.getApplicationContext();
+        mController = new EraseEuiccDataController(context, ERASE_EUICC_DATA_PREFERENCE_KEY);
     }
 
     @Test
-    public void getAvailabilityStatus_shouldAlwaysReturnAvailableUnsearchable() {
+    public void getAvailabilityStatus_byDefault_true() {
         assertThat(mController.getAvailabilityStatus())
                 .isEqualTo(BasePreferenceController.AVAILABLE_UNSEARCHABLE);
     }
diff --git a/tests/unit/src/com/android/settings/network/ProviderModelSliceHelperTest.java b/tests/unit/src/com/android/settings/network/ProviderModelSliceHelperTest.java
new file mode 100644
index 0000000..abbc2ec
--- /dev/null
+++ b/tests/unit/src/com/android/settings/network/ProviderModelSliceHelperTest.java
@@ -0,0 +1,307 @@
+/*
+ * 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.settings.network;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static junit.framework.Assert.assertEquals;
+
+import static org.mockito.ArgumentMatchers.anyInt;
+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.graphics.drawable.Drawable;
+import android.net.ConnectivityManager;
+import android.net.Network;
+import android.net.NetworkCapabilities;
+import android.net.Uri;
+import android.os.PersistableBundle;
+import android.telephony.CarrierConfigManager;
+import android.telephony.ServiceState;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+
+import androidx.slice.Slice;
+import androidx.slice.builders.GridRowBuilder;
+import androidx.slice.builders.GridRowBuilder.CellBuilder;
+import androidx.slice.builders.ListBuilder;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.settings.Utils;
+import com.android.settings.slices.CustomSliceable;
+import com.android.settings.testutils.ResourcesUtils;
+import com.android.settings.wifi.slice.WifiSliceItem;
+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.List;
+
+@RunWith(AndroidJUnit4.class)
+public class ProviderModelSliceHelperTest {
+    private Context mContext;
+    private MockProviderModelSliceHelper mProviderModelSliceHelper;
+    private PersistableBundle mBundle;
+    private Network mNetwork;
+    private NetworkCapabilities mNetworkCapabilities;
+
+    @Mock
+    private SubscriptionManager mSubscriptionManager;
+    @Mock
+    private CarrierConfigManager mCarrierConfigManager;
+    @Mock
+    private ConnectivityManager mConnectivityManager;
+    @Mock
+    private TelephonyManager mTelephonyManager;
+    @Mock
+    private ServiceState mServiceState;
+    @Mock
+    private WifiSliceItem mWifiSliceItem1;
+    @Mock
+    private WifiSliceItem mWifiSliceItem2;
+    @Mock
+    private SubscriptionInfo mDefaultDataSubscriptionInfo;
+    @Mock
+    private Drawable mDrawableWithSignalStrength;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        mBundle = new PersistableBundle();
+        mNetwork = new Network(anyInt());
+
+        when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager);
+        when(mContext.getSystemService(CarrierConfigManager.class)).thenReturn(
+                mCarrierConfigManager);
+        when(mCarrierConfigManager.getConfigForSubId(anyInt())).thenReturn(mBundle);
+        when(mContext.getSystemService(ConnectivityManager.class)).thenReturn(mConnectivityManager);
+        when(mConnectivityManager.getActiveNetwork()).thenReturn(mNetwork);
+        when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
+        when(mTelephonyManager.createForSubscriptionId(anyInt())).thenReturn(mTelephonyManager);
+
+        TestCustomSliceable testCustomSliceable = new TestCustomSliceable();
+        mProviderModelSliceHelper = new MockProviderModelSliceHelper(mContext, testCustomSliceable);
+    }
+
+    @Test
+    public void createMessageGridRow_inputTheResourceId_verifyTitle() {
+        int messageResId = ResourcesUtils.getResourcesId(mContext, "string",
+                "non_carrier_network_unavailable");
+        CharSequence title = ResourcesUtils.getResourcesString(mContext,
+                "non_carrier_network_unavailable");
+
+        GridRowBuilder testGridRow = mProviderModelSliceHelper.createMessageGridRow(messageResId);
+        List<CellBuilder> cellItem = testGridRow.getCells();
+
+        assertThat(cellItem.get(0).getTitle()).isEqualTo(title);
+    }
+
+    @Test
+    public void getConnectedWifiItem_inputListInvolveOneConnectedWifiItem_verifyReturnItem() {
+        when(mWifiSliceItem1.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_CONNECTED);
+        when(mWifiSliceItem2.getConnectedState()).thenReturn(
+                WifiEntry.CONNECTED_STATE_DISCONNECTED);
+        List<WifiSliceItem> wifiList = new ArrayList<>();
+        wifiList.add(mWifiSliceItem1);
+        wifiList.add(mWifiSliceItem2);
+
+        WifiSliceItem testItem = mProviderModelSliceHelper.getConnectedWifiItem(wifiList);
+
+        assertThat(testItem).isNotNull();
+        assertEquals(mWifiSliceItem1, testItem);
+    }
+
+    @Test
+    public void getConnectedWifiItem_inputListInvolveNoConnectedWifiItem_verifyReturnItem() {
+        when(mWifiSliceItem1.getConnectedState()).thenReturn(
+                WifiEntry.CONNECTED_STATE_DISCONNECTED);
+        when(mWifiSliceItem2.getConnectedState()).thenReturn(
+                WifiEntry.CONNECTED_STATE_DISCONNECTED);
+        List<WifiSliceItem> wifiList = new ArrayList<>();
+        wifiList.add(mWifiSliceItem1);
+        wifiList.add(mWifiSliceItem2);
+
+        WifiSliceItem testItem = mProviderModelSliceHelper.getConnectedWifiItem(wifiList);
+
+        assertThat(testItem).isNull();
+    }
+
+    @Test
+    public void getConnectedWifiItem_inputNull_verifyReturnItem() {
+        List<WifiSliceItem> wifiList = null;
+
+        WifiSliceItem testItem = mProviderModelSliceHelper.getConnectedWifiItem(wifiList);
+
+        assertThat(testItem).isNull();
+    }
+
+    @Test
+    public void createCarrierRow_hasDefaultDataSubscriptionId_verifyTitle() {
+        String expectDisplayName = "Name1";
+        int defaultDataSubId = SubscriptionManager.getDefaultDataSubscriptionId();
+        when(mSubscriptionManager.getActiveSubscriptionInfo(defaultDataSubId)).thenReturn(
+                mDefaultDataSubscriptionInfo);
+        when(mDefaultDataSubscriptionInfo.getDisplayName()).thenReturn(expectDisplayName);
+        when(mServiceState.getState()).thenReturn(ServiceState.STATE_IN_SERVICE);
+        mBundle.putBoolean(CarrierConfigManager.KEY_INFLATE_SIGNAL_STRENGTH_BOOL, false);
+
+        ListBuilder.RowBuilder testRowBuild = mProviderModelSliceHelper.createCarrierRow();
+
+        assertThat(testRowBuild.getTitle()).isEqualTo(expectDisplayName);
+    }
+
+    @Test
+    public void isNoCarrierData_mobileDataOnAndNoData_returnTrue() {
+        when(mTelephonyManager.isDataEnabled()).thenReturn(true);
+        when(mTelephonyManager.getDataState()).thenReturn(mTelephonyManager.DATA_DISCONNECTED);
+        when(mTelephonyManager.getServiceState()).thenReturn(mServiceState);
+        when(mServiceState.getState()).thenReturn(ServiceState.STATE_IN_SERVICE);
+
+        assertThat(mProviderModelSliceHelper.isNoCarrierData()).isTrue();
+    }
+
+    @Test
+    public void isNoCarrierData_mobileDataOffAndOutOfService_returnTrue() {
+        when(mTelephonyManager.isDataEnabled()).thenReturn(false);
+        when(mTelephonyManager.getDataState()).thenReturn(mTelephonyManager.DATA_DISCONNECTED);
+        when(mTelephonyManager.getServiceState()).thenReturn(mServiceState);
+        when(mServiceState.getState()).thenReturn(ServiceState.STATE_OUT_OF_SERVICE);
+
+        assertThat(mProviderModelSliceHelper.isNoCarrierData()).isTrue();
+    }
+
+    @Test
+    public void isNoCarrierData_mobileDataOnAndDataConnected_returnFalse() {
+        when(mTelephonyManager.isDataEnabled()).thenReturn(true);
+        when(mTelephonyManager.getDataState()).thenReturn(mTelephonyManager.DATA_CONNECTED);
+        when(mTelephonyManager.getServiceState()).thenReturn(mServiceState);
+        when(mServiceState.getState()).thenReturn(ServiceState.STATE_IN_SERVICE);
+
+        assertThat(mProviderModelSliceHelper.isNoCarrierData()).isFalse();
+    }
+
+    @Test
+    public void isNoCarrierData_mobileDataOffAndVoiceIsInService_returnFalse() {
+        when(mTelephonyManager.isDataEnabled()).thenReturn(false);
+        when(mTelephonyManager.getDataState()).thenReturn(mTelephonyManager.DATA_DISCONNECTED);
+        when(mTelephonyManager.getServiceState()).thenReturn(mServiceState);
+        when(mServiceState.getState()).thenReturn(ServiceState.STATE_IN_SERVICE);
+
+        assertThat(mProviderModelSliceHelper.isNoCarrierData()).isFalse();
+    }
+
+    @Test
+    public void getMobileDrawable_noCarrierData_getMobileDrawable() throws Throwable {
+        when(mTelephonyManager.isDataEnabled()).thenReturn(false);
+        when(mTelephonyManager.getDataState()).thenReturn(mTelephonyManager.DATA_DISCONNECTED);
+        when(mTelephonyManager.getServiceState()).thenReturn(mServiceState);
+        when(mServiceState.getState()).thenReturn(ServiceState.STATE_OUT_OF_SERVICE);
+        int defaultDataSubId = SubscriptionManager.getDefaultDataSubscriptionId();
+        when(mSubscriptionManager.getActiveSubscriptionInfo(defaultDataSubId)).thenReturn(
+                mDefaultDataSubscriptionInfo);
+        when(mConnectivityManager.getActiveNetwork()).thenReturn(null);
+        Drawable expectDrawable = mock(Drawable.class);
+
+        assertThat(mProviderModelSliceHelper.getMobileDrawable(expectDrawable)).isEqualTo(
+                expectDrawable);
+    }
+
+    @Test
+    public void getMobileDrawable_hasCarrierDataAndDataIsOnCellular_getMobileDrawable()
+            throws Throwable {
+        when(mTelephonyManager.isDataEnabled()).thenReturn(true);
+        when(mTelephonyManager.getDataState()).thenReturn(mTelephonyManager.DATA_CONNECTED);
+        when(mTelephonyManager.getServiceState()).thenReturn(mServiceState);
+        when(mServiceState.getState()).thenReturn(ServiceState.STATE_IN_SERVICE);
+        Drawable drawable = mock(Drawable.class);
+        int defaultDataSubId = SubscriptionManager.getDefaultDataSubscriptionId();
+        when(mSubscriptionManager.getActiveSubscriptionInfo(defaultDataSubId)).thenReturn(
+                mDefaultDataSubscriptionInfo);
+        addNetworkTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);
+
+        assertThat(mProviderModelSliceHelper.getMobileDrawable(drawable)).isEqualTo(
+                mDrawableWithSignalStrength);
+
+        verify(mDrawableWithSignalStrength).setTint(Utils.getColorAccentDefaultColor(mContext));
+    }
+
+    @Test
+    public void getMobileDrawable_hasCarrierDataAndDataIsOnWifi_getMobileDrawable()
+            throws Throwable {
+        when(mTelephonyManager.isDataEnabled()).thenReturn(true);
+        when(mTelephonyManager.getDataState()).thenReturn(mTelephonyManager.DATA_CONNECTED);
+        when(mTelephonyManager.getServiceState()).thenReturn(mServiceState);
+        when(mServiceState.getState()).thenReturn(ServiceState.STATE_IN_SERVICE);
+        Drawable drawable = mock(Drawable.class);
+        int defaultDataSubId = SubscriptionManager.getDefaultDataSubscriptionId();
+        when(mSubscriptionManager.getActiveSubscriptionInfo(defaultDataSubId)).thenReturn(
+                mDefaultDataSubscriptionInfo);
+        addNetworkTransportType(NetworkCapabilities.TRANSPORT_WIFI);
+
+        assertThat(mProviderModelSliceHelper.getMobileDrawable(drawable)).isEqualTo(
+                mDrawableWithSignalStrength);
+    }
+
+    private void addNetworkTransportType(int networkType) {
+        mNetworkCapabilities = new NetworkCapabilities().addTransportType(networkType);
+        when(mConnectivityManager.getNetworkCapabilities(mNetwork)).thenReturn(
+                mNetworkCapabilities);
+    }
+
+    private class TestCustomSliceable implements CustomSliceable {
+        TestCustomSliceable() {
+        }
+
+        @Override
+        public Slice getSlice() {
+            return null;
+        }
+
+        @Override
+        public Uri getUri() {
+            return Uri.parse("content://android.settings.slices/action/provider_model");
+        }
+
+        @Override
+        public Intent getIntent() {
+            return new Intent();
+        }
+    }
+
+    private class MockProviderModelSliceHelper extends ProviderModelSliceHelper {
+        MockProviderModelSliceHelper(Context context, CustomSliceable sliceable) {
+            super(context, sliceable);
+        }
+
+        @Override
+        public Drawable getDrawableWithSignalStrength() {
+            return mDrawableWithSignalStrength;
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/settings/network/ProviderModelSliceTest.java b/tests/unit/src/com/android/settings/network/ProviderModelSliceTest.java
new file mode 100644
index 0000000..f9450db
--- /dev/null
+++ b/tests/unit/src/com/android/settings/network/ProviderModelSliceTest.java
@@ -0,0 +1,365 @@
+/*
+ * 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.settings.network;
+
+import static android.app.slice.Slice.EXTRA_TOGGLE_STATE;
+
+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.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
+import android.net.ConnectivityManager;
+import android.net.Uri;
+import android.net.wifi.WifiManager;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+
+import androidx.slice.Slice;
+import androidx.slice.SliceProvider;
+import androidx.slice.builders.GridRowBuilder;
+import androidx.slice.builders.ListBuilder;
+import androidx.slice.builders.SliceAction;
+import androidx.slice.widget.SliceLiveData;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.settings.Utils;
+import com.android.settings.network.telephony.NetworkProviderWorker;
+import com.android.settings.testutils.ResourcesUtils;
+import com.android.settings.wifi.slice.WifiSliceItem;
+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.List;
+
+@RunWith(AndroidJUnit4.class)
+public class ProviderModelSliceTest {
+    private static final Uri PROVIDER_MODEL_SLICE_URI =
+            Uri.parse("content://com.android.settings.slices/action/provider_model");
+    private static final int MOCK_SLICE_LEVEL = 3;
+
+    private Context mContext;
+    private MockProviderModelSlice mMockProviderModelSlice;
+    List<WifiSliceItem> mWifiList = new ArrayList<>();
+    private ListBuilder mListBuilder;
+    private MockNetworkProviderWorker mMockNetworkProviderWorker;
+
+    @Mock
+    private SubscriptionManager mSubscriptionManager;
+    @Mock
+    private ConnectivityManager mConnectivityManager;
+    @Mock
+    private TelephonyManager mTelephonyManager;
+    @Mock
+    private WifiManager mWifiManager;
+    @Mock
+    private ProviderModelSliceHelper mProviderModelSliceHelper;
+    @Mock
+    private WifiSliceItem mMockWifiSliceItem1;
+    @Mock
+    private WifiSliceItem mMockWifiSliceItem2;
+    @Mock
+    private WifiSliceItem mMockWifiSliceItem3;
+    @Mock
+    ListBuilder.RowBuilder mMockCarrierRowBuild;
+    @Mock
+    ListBuilder.HeaderBuilder mMockHeader;
+    @Mock
+    GridRowBuilder mMockGridRowBuilderNonCarrierNetworkUnavailable;
+    @Mock
+    GridRowBuilder mMockGridRowBuilderAllNetworkUnavailable;
+
+    @Before
+    @UiThreadTest
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = spy(ApplicationProvider.getApplicationContext());
+
+        when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager);
+        when(mContext.getSystemService(ConnectivityManager.class)).thenReturn(mConnectivityManager);
+        when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
+        when(mTelephonyManager.createForSubscriptionId(anyInt())).thenReturn(mTelephonyManager);
+        when(mContext.getSystemService(WifiManager.class)).thenReturn(mWifiManager);
+
+
+        // Set-up specs for SliceMetadata.
+        SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS);
+        mMockNetworkProviderWorker = spy(new MockNetworkProviderWorker(mContext,
+                PROVIDER_MODEL_SLICE_URI));
+        mMockProviderModelSlice = new MockProviderModelSlice(mContext, mMockNetworkProviderWorker);
+        mListBuilder = spy(new ListBuilder(mContext, PROVIDER_MODEL_SLICE_URI,
+                ListBuilder.INFINITY).setAccentColor(-1));
+        when(mProviderModelSliceHelper.createListBuilder(PROVIDER_MODEL_SLICE_URI)).thenReturn(
+                mListBuilder);
+        when(mProviderModelSliceHelper.getSubscriptionManager()).thenReturn(mSubscriptionManager);
+
+        mWifiList = new ArrayList<>();
+        mMockNetworkProviderWorker.updateSelfResults(mWifiList);
+
+        mockBuilder();
+    }
+
+    @Test
+    @UiThreadTest
+    public void getSlice_noWorkerAndNoCarrier_getOneHeaderOneGridRowWithAllNetworkUnavailable() {
+        mWifiList.clear();
+        mMockProviderModelSlice = new MockProviderModelSlice(mContext, null);
+        mockHelperCondition(false, false, false, null);
+
+        final Slice slice = mMockProviderModelSlice.getSlice();
+
+        assertThat(slice).isNotNull();
+        verify(mListBuilder, times(1)).setHeader(mMockHeader);
+        verify(mListBuilder, times(1)).addGridRow(mMockGridRowBuilderAllNetworkUnavailable);
+    }
+
+    @Test
+    @UiThreadTest
+    public void getSlice_noWifiAndNoCarrier_getOneHeaderOneGridRowWithAllNetworkUnavailable() {
+        mWifiList.clear();
+        mMockNetworkProviderWorker.updateSelfResults(null);
+        mockHelperCondition(false, false, false, null);
+
+        final Slice slice = mMockProviderModelSlice.getSlice();
+
+        assertThat(slice).isNotNull();
+        verify(mListBuilder, times(1)).setHeader(mMockHeader);
+        verify(mListBuilder, times(1)).addGridRow(mMockGridRowBuilderAllNetworkUnavailable);
+    }
+
+    @Test
+    @UiThreadTest
+    public void getSlice_noWifiAndHasCarrierNoData_oneCarrierOneGridRowWithAllNetworkUnavailable() {
+        mWifiList.clear();
+        mMockNetworkProviderWorker.updateSelfResults(null);
+        mockHelperCondition(false, true, true, null);
+
+        final Slice slice = mMockProviderModelSlice.getSlice();
+
+        assertThat(slice).isNotNull();
+        verify(mListBuilder, times(1)).addRow(mMockCarrierRowBuild);
+        verify(mListBuilder, times(1)).addGridRow(mMockGridRowBuilderAllNetworkUnavailable);
+    }
+
+    @Test
+    @UiThreadTest
+    public void getSlice_noWifiAndNoCarrier_oneCarrierOneGridRowWithNonCarrierNetworkUnavailable() {
+        mWifiList.clear();
+        mMockProviderModelSlice = new MockProviderModelSlice(mContext, null);
+        mockHelperCondition(false, true, false, null);
+
+        final Slice slice = mMockProviderModelSlice.getSlice();
+
+        assertThat(slice).isNotNull();
+        verify(mListBuilder, times(1)).addRow(mMockCarrierRowBuild);
+        verify(mListBuilder, times(1)).addGridRow(mMockGridRowBuilderNonCarrierNetworkUnavailable);
+    }
+
+    @Test
+    @UiThreadTest
+    public void getSlice_haveTwoWifiAndOneCarrier_getCarrierAndTwoWiFi() {
+        mWifiList.clear();
+        mockWifiItemCondition(mMockWifiSliceItem1, "wifi1", "wifi1",
+                WifiEntry.CONNECTED_STATE_CONNECTED, "wifi1_key", true);
+        mWifiList.add(mMockWifiSliceItem1);
+        mockWifiItemCondition(mMockWifiSliceItem2, "wifi2", "wifi2",
+                WifiEntry.CONNECTED_STATE_DISCONNECTED, "wifi2_key", true);
+        mWifiList.add(mMockWifiSliceItem2);
+        mMockNetworkProviderWorker.updateSelfResults(mWifiList);
+        mockHelperCondition(false, true, false, mWifiList.get(0));
+
+        final Slice slice = mMockProviderModelSlice.getSlice();
+
+        assertThat(slice).isNotNull();
+        verify(mListBuilder, times(1)).addRow(mMockCarrierRowBuild);
+        verify(mListBuilder, times(3)).addRow(any(ListBuilder.RowBuilder.class));
+    }
+
+    @Test
+    @UiThreadTest
+    public void getSlice_haveOneConnectedWifiAndTwoDisconnectedWifiAndNoCarrier_getTwoRow() {
+        mWifiList.clear();
+        mockWifiItemCondition(mMockWifiSliceItem1, "wifi1", "wifi1",
+                WifiEntry.CONNECTED_STATE_CONNECTED, "wifi1_key", true);
+        mWifiList.add(mMockWifiSliceItem1);
+        mockWifiItemCondition(mMockWifiSliceItem2, "wifi2", "wifi2",
+                WifiEntry.CONNECTED_STATE_DISCONNECTED, "wifi2_key", true);
+        mWifiList.add(mMockWifiSliceItem2);
+        mockWifiItemCondition(mMockWifiSliceItem3, "wifi3", "wifi3",
+                WifiEntry.CONNECTED_STATE_DISCONNECTED, "wifi3_key", true);
+        mWifiList.add(mMockWifiSliceItem3);
+        mMockNetworkProviderWorker.updateSelfResults(mWifiList);
+        mockHelperCondition(false, false, false, mWifiList.get(0));
+
+        final Slice slice = mMockProviderModelSlice.getSlice();
+
+        assertThat(slice).isNotNull();
+        verify(mListBuilder, times(3)).addRow(any(ListBuilder.RowBuilder.class));
+    }
+
+    @Test
+    @UiThreadTest
+    public void getSlice_haveTwoDisconnectedWifiAndNoCarrier_getTwoRow() {
+        mWifiList.clear();
+        mockWifiItemCondition(mMockWifiSliceItem1, "wifi1", "wifi1",
+                WifiEntry.CONNECTED_STATE_DISCONNECTED, "wifi1_key", true);
+        mWifiList.add(mMockWifiSliceItem1);
+        mockWifiItemCondition(mMockWifiSliceItem2, "wifi2", "wifi2",
+                WifiEntry.CONNECTED_STATE_DISCONNECTED, "wifi2_key", true);
+        mWifiList.add(mMockWifiSliceItem2);
+        mMockNetworkProviderWorker.updateSelfResults(mWifiList);
+        mockHelperCondition(false, false, false, null);
+
+        final Slice slice = mMockProviderModelSlice.getSlice();
+
+        assertThat(slice).isNotNull();
+        verify(mListBuilder, times(2)).addRow(any(ListBuilder.RowBuilder.class));
+    }
+
+    @Test
+    public void providerModelSlice_hasCorrectUri() {
+        assertThat(mMockProviderModelSlice.getUri()).isEqualTo(PROVIDER_MODEL_SLICE_URI);
+    }
+
+    private void mockHelperCondition(boolean airplaneMode, boolean hasCarrier,
+            boolean isNoCarrierData, WifiSliceItem connectedWifiItem) {
+        when(mProviderModelSliceHelper.isAirplaneModeEnabled()).thenReturn(airplaneMode);
+        when(mProviderModelSliceHelper.hasCarrier()).thenReturn(hasCarrier);
+        when(mProviderModelSliceHelper.isNoCarrierData()).thenReturn(isNoCarrierData);
+        when(mProviderModelSliceHelper.getConnectedWifiItem(any())).thenReturn(connectedWifiItem);
+    }
+
+    private void mockWifiItemCondition(WifiSliceItem mockWifiItem, String title, String summary,
+            int connectedState, String key, boolean shouldEditBeforeConnect) {
+        when(mockWifiItem.getTitle()).thenReturn(title);
+        when(mockWifiItem.getSummary()).thenReturn(summary);
+        when(mockWifiItem.getConnectedState()).thenReturn(connectedState);
+        when(mockWifiItem.getLevel()).thenReturn(MOCK_SLICE_LEVEL);
+        when(mockWifiItem.getKey()).thenReturn(key);
+        when(mockWifiItem.shouldEditBeforeConnect()).thenReturn(shouldEditBeforeConnect);
+    }
+
+    private void mockBuilder() {
+        SliceAction mockSliceAction = getPrimarySliceAction();
+        when(mMockHeader.getTitle()).thenReturn("mockHeader");
+        when(mMockHeader.getPrimaryAction()).thenReturn(mockSliceAction);
+        when(mProviderModelSliceHelper.createHeader()).thenReturn(mMockHeader);
+
+        int resId = ResourcesUtils.getResourcesId(mContext, "string",
+                "non_carrier_network_unavailable");
+        when(mProviderModelSliceHelper.createMessageGridRow(resId)).thenReturn(
+                mMockGridRowBuilderNonCarrierNetworkUnavailable);
+        resId = ResourcesUtils.getResourcesId(mContext, "string",
+                "all_network_unavailable");
+        when(mProviderModelSliceHelper.createMessageGridRow(resId)).thenReturn(
+                mMockGridRowBuilderAllNetworkUnavailable);
+
+        when(mMockCarrierRowBuild.getTitle()).thenReturn("mockRow");
+        when(mMockCarrierRowBuild.getPrimaryAction()).thenReturn(mockSliceAction);
+        when(mProviderModelSliceHelper.createCarrierRow()).thenReturn(mMockCarrierRowBuild);
+    }
+
+    private SliceAction getPrimarySliceAction() {
+        return SliceAction.createDeeplink(
+                getPrimaryAction(),
+                Utils.createIconWithDrawable(new ColorDrawable(Color.TRANSPARENT)),
+                ListBuilder.ICON_IMAGE,
+                ResourcesUtils.getResourcesString(mContext, "summary_placeholder"));
+    }
+
+    private PendingIntent getPrimaryAction() {
+        final Intent intent = new Intent("android.settings.NETWORK_PROVIDER_SETTINGS")
+                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        return PendingIntent.getActivity(mContext, 0 /* requestCode */,
+                intent, PendingIntent.FLAG_IMMUTABLE /* flags */);
+    }
+
+    public class MockNetworkProviderWorker extends NetworkProviderWorker {
+        MockNetworkProviderWorker(Context context, Uri uri) {
+            super(context, uri);
+        }
+
+        public void updateSelfResults(List<WifiSliceItem> results) {
+            this.updateResults(results);
+        }
+    }
+
+    public class MockProviderModelSlice extends ProviderModelSlice {
+        private MockNetworkProviderWorker mNetworkProviderWorker;
+
+        MockProviderModelSlice(Context context, MockNetworkProviderWorker networkProviderWorker) {
+            super(context);
+            mNetworkProviderWorker = networkProviderWorker;
+        }
+
+        @Override
+        ProviderModelSliceHelper getHelper() {
+            return mProviderModelSliceHelper;
+        }
+
+        @Override
+        NetworkProviderWorker getWorker() {
+            return mNetworkProviderWorker;
+        }
+    }
+
+    @Test
+    public void onNotifyChange_intentToggleActionOn_shouldSetCarrierNetworkEnabledTrue() {
+        Intent intent = mMockProviderModelSlice.getBroadcastIntent(mContext).getIntent();
+        intent.putExtra(EXTRA_TOGGLE_STATE, true);
+
+        mMockProviderModelSlice.onNotifyChange(intent);
+
+        verify(mMockNetworkProviderWorker).setCarrierNetworkEnabled(true);
+    }
+
+    @Test
+    public void onNotifyChange_intentToggleActionOff_shouldSetCarrierNetworkEnabledFalse() {
+        Intent intent = mMockProviderModelSlice.getBroadcastIntent(mContext).getIntent();
+        intent.putExtra(EXTRA_TOGGLE_STATE, false);
+
+        mMockProviderModelSlice.onNotifyChange(intent);
+
+        verify(mMockNetworkProviderWorker).setCarrierNetworkEnabled(false);
+    }
+
+    @Test
+    public void onNotifyChange_intentPrimaryAction_shouldConnectCarrierNetwork() {
+        Intent intent = mMockProviderModelSlice.getBroadcastIntent(mContext).getIntent();
+
+        mMockProviderModelSlice.onNotifyChange(intent);
+
+        verify(mMockNetworkProviderWorker).connectCarrierNetwork();
+    }
+}
diff --git a/tests/unit/src/com/android/settings/network/SubscriptionsPreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/SubscriptionsPreferenceControllerTest.java
new file mode 100644
index 0000000..27dd2aa
--- /dev/null
+++ b/tests/unit/src/com/android/settings/network/SubscriptionsPreferenceControllerTest.java
@@ -0,0 +1,673 @@
+/*
+ * 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.settings.network;
+
+import static android.telephony.SignalStrength.NUM_SIGNAL_STRENGTH_BINS;
+import static android.telephony.SignalStrength.SIGNAL_STRENGTH_GOOD;
+import static android.telephony.SignalStrength.SIGNAL_STRENGTH_GREAT;
+import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID;
+
+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.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.drawable.Drawable;
+import android.net.ConnectivityManager;
+import android.net.Network;
+import android.net.NetworkCapabilities;
+import android.os.Looper;
+import android.provider.Settings;
+import android.telephony.ServiceState;
+import android.telephony.SignalStrength;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.lifecycle.LifecycleRegistry;
+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.settings.Utils;
+import com.android.settings.network.SubscriptionsPreferenceController.SubsPrefCtrlInjector;
+import com.android.settings.testutils.ResourcesUtils;
+import com.android.settings.wifi.WifiPickerTrackerHelper;
+import com.android.settingslib.core.lifecycle.Lifecycle;
+
+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.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+public class SubscriptionsPreferenceControllerTest {
+    private static final String KEY = "preference_group";
+
+    @Mock
+    private SubscriptionManager mSubscriptionManager;
+    @Mock
+    private ConnectivityManager mConnectivityManager;
+    @Mock
+    private TelephonyManager mTelephonyManager;
+    @Mock
+    private TelephonyManager mTelephonyManagerForSub;
+    @Mock
+    private Network mActiveNetwork;
+    @Mock
+    private Lifecycle mLifecycle;
+    @Mock
+    private LifecycleOwner mLifecycleOwner;
+    @Mock
+    private WifiPickerTrackerHelper mWifiPickerTrackerHelper;
+    private LifecycleRegistry mLifecycleRegistry;
+    private int mOnChildUpdatedCount;
+    private Context mContext;
+    private SubscriptionsPreferenceController.UpdateListener mUpdateListener;
+    private PreferenceCategory mPreferenceCategory;
+    private PreferenceScreen mPreferenceScreen;
+    private PreferenceManager mPreferenceManager;
+    private NetworkCapabilities mNetworkCapabilities;
+
+    private FakeSubscriptionsPreferenceController mController;
+    private static SubsPrefCtrlInjector sInjector;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        if (Looper.myLooper() == null) {
+            Looper.prepare();
+        }
+        mLifecycleRegistry = new LifecycleRegistry(mLifecycleOwner);
+
+        when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager);
+        when(mContext.getSystemService(ConnectivityManager.class)).thenReturn(mConnectivityManager);
+        when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
+        when(mTelephonyManager.createForSubscriptionId(anyInt())).thenReturn(mTelephonyManager);
+        when(mConnectivityManager.getActiveNetwork()).thenReturn(mActiveNetwork);
+        when(mConnectivityManager.getNetworkCapabilities(mActiveNetwork))
+                .thenReturn(mNetworkCapabilities);
+        when(mLifecycleOwner.getLifecycle()).thenReturn(mLifecycleRegistry);
+
+        mPreferenceManager = new PreferenceManager(mContext);
+        mPreferenceScreen = mPreferenceManager.createPreferenceScreen(mContext);
+        mPreferenceScreen.setInitialExpandedChildrenCount(3);
+        mPreferenceCategory = new PreferenceCategory(mContext);
+        mPreferenceCategory.setKey(KEY);
+        mPreferenceCategory.setOrderingAsAdded(true);
+        mPreferenceScreen.addPreference(mPreferenceCategory);
+
+        mOnChildUpdatedCount = 0;
+        mUpdateListener = () -> mOnChildUpdatedCount++;
+        sInjector = spy(new SubsPrefCtrlInjector());
+        initializeMethod(true, 1, 1, 1, false, false);
+        mController =  new FakeSubscriptionsPreferenceController(mContext, mLifecycle,
+                mUpdateListener, KEY, 5);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 0);
+    }
+
+    @After
+    public void tearDown() {
+        SubscriptionUtil.setActiveSubscriptionsForTesting(null);
+    }
+
+    @Test
+    public void isAvailable_oneSubscription_availableFalse() {
+        setupMockSubscriptions(1);
+
+        assertThat(mController.isAvailable()).isFalse();
+    }
+
+    @Test
+    public void isAvailable_oneSubAndProviderOn_availableTrue() {
+        doReturn(true).when(sInjector).isProviderModelEnabled(mContext);
+        setupMockSubscriptions(1);
+
+        assertThat(mController.isAvailable()).isTrue();
+    }
+
+    @Test
+    public void isAvailable_twoSubscriptions_availableTrue() {
+        setupMockSubscriptions(2);
+
+        assertThat(mController.isAvailable()).isTrue();
+    }
+
+    @Test
+    public void isAvailable_fiveSubscriptions_availableTrue() {
+        doReturn(true).when(sInjector).canSubscriptionBeDisplayed(mContext, 0);
+        setupMockSubscriptions(5);
+
+        assertThat(mController.isAvailable()).isTrue();
+    }
+
+    @Test
+    public void isAvailable_airplaneModeOn_availableFalse() {
+        setupMockSubscriptions(2);
+
+        assertThat(mController.isAvailable()).isTrue();
+
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 1);
+
+        assertThat(mController.isAvailable()).isFalse();
+    }
+
+    @Test
+    @UiThreadTest
+    public void onAirplaneModeChanged_airplaneModeTurnedOn_eventFired() {
+        setupMockSubscriptions(2);
+
+        mController.onResume();
+        mController.displayPreference(mPreferenceScreen);
+
+        assertThat(mController.isAvailable()).isTrue();
+
+        final int updateCountBeforeModeChange = mOnChildUpdatedCount;
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 1);
+
+        mController.onAirplaneModeChanged(true);
+
+        assertThat(mController.isAvailable()).isFalse();
+        assertThat(mOnChildUpdatedCount).isEqualTo(updateCountBeforeModeChange + 1);
+    }
+
+    @Test
+    @UiThreadTest
+    public void onAirplaneModeChanged_airplaneModeTurnedOff_eventFired() {
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 1);
+        setupMockSubscriptions(2);
+
+        mController.onResume();
+        mController.displayPreference(mPreferenceScreen);
+        assertThat(mController.isAvailable()).isFalse();
+
+        final int updateCountBeforeModeChange = mOnChildUpdatedCount;
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 0);
+
+        mController.onAirplaneModeChanged(true);
+
+        assertThat(mController.isAvailable()).isTrue();
+        assertThat(mOnChildUpdatedCount).isEqualTo(updateCountBeforeModeChange + 1);
+    }
+
+    @Test
+    @UiThreadTest
+    public void onSubscriptionsChanged_countBecameTwo_eventFired() {
+        final List<SubscriptionInfo> subs = setupMockSubscriptions(2);
+        SubscriptionUtil.setActiveSubscriptionsForTesting(subs.subList(0, 1));
+
+        mController.onResume();
+        mController.displayPreference(mPreferenceScreen);
+
+        assertThat(mController.isAvailable()).isFalse();
+
+        final int updateCountBeforeSubscriptionChange = mOnChildUpdatedCount;
+        SubscriptionUtil.setActiveSubscriptionsForTesting(subs);
+
+        mController.onSubscriptionsChanged();
+
+        assertThat(mController.isAvailable()).isTrue();
+        assertThat(mOnChildUpdatedCount).isEqualTo(updateCountBeforeSubscriptionChange + 1);
+    }
+
+    @Test
+    @UiThreadTest
+    public void onSubscriptionsChanged_countBecameOne_eventFiredAndPrefsRemoved() {
+        final List<SubscriptionInfo> subs = setupMockSubscriptions(2);
+
+        mController.onResume();
+        mController.displayPreference(mPreferenceScreen);
+
+        assertThat(mController.isAvailable()).isTrue();
+        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(2);
+
+        final int updateCountBeforeSubscriptionChange = mOnChildUpdatedCount;
+        SubscriptionUtil.setActiveSubscriptionsForTesting(subs.subList(0, 1));
+
+        mController.onSubscriptionsChanged();
+
+        assertThat(mController.isAvailable()).isFalse();
+        assertThat(mOnChildUpdatedCount).isEqualTo(updateCountBeforeSubscriptionChange + 1);
+        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    @UiThreadTest
+    public void onSubscriptionsChanged_subscriptionReplaced_preferencesChanged() {
+        final List<SubscriptionInfo> subs = setupMockSubscriptions(3);
+
+        // Start out with only sub1 and sub2.
+        SubscriptionUtil.setActiveSubscriptionsForTesting(subs.subList(0, 2));
+        mController.onResume();
+        mController.displayPreference(mPreferenceScreen);
+
+        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(2);
+        assertThat(mPreferenceCategory.getPreference(0).getTitle()).isEqualTo("sub2");
+        assertThat(mPreferenceCategory.getPreference(1).getTitle()).isEqualTo("sub1");
+
+        // Now replace sub2 with sub3, and make sure the old preference was removed and the new
+        // preference was added.
+        final int updateCountBeforeSubscriptionChange = mOnChildUpdatedCount;
+        SubscriptionUtil.setActiveSubscriptionsForTesting(Arrays.asList(subs.get(0), subs.get(2)));
+        mController.onSubscriptionsChanged();
+
+        assertThat(mController.isAvailable()).isTrue();
+        assertThat(mOnChildUpdatedCount).isEqualTo(updateCountBeforeSubscriptionChange + 1);
+        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(2);
+        assertThat(mPreferenceCategory.getPreference(0).getTitle()).isEqualTo("sub3");
+        assertThat(mPreferenceCategory.getPreference(1).getTitle()).isEqualTo("sub1");
+    }
+
+    @Test
+    public void getSummary_twoSubsOneDefaultForEverythingDataActive() {
+        setupMockSubscriptions(2);
+
+        doReturn(11).when(sInjector).getDefaultSmsSubscriptionId();
+        doReturn(11).when(sInjector).getDefaultVoiceSubscriptionId();
+        when(mTelephonyManager.isDataEnabled()).thenReturn(true);
+        doReturn(true).when(sInjector).isActiveCellularNetwork(mContext);
+
+        assertThat(mController.getSummary(11, true)).isEqualTo(
+                ResourcesUtils.getResourcesString(mContext, "default_for_calls_and_sms")
+                        + System.lineSeparator()
+                        + ResourcesUtils.getResourcesString(mContext, "mobile_data_active"));
+
+        assertThat(mController.getSummary(22, false)).isEqualTo(
+                ResourcesUtils.getResourcesString(mContext, "subscription_available"));
+    }
+
+    @Test
+    public void getSummary_twoSubsOneDefaultForEverythingDataNotActive() {
+        setupMockSubscriptions(2, 1, true);
+
+        doReturn(1).when(sInjector).getDefaultSmsSubscriptionId();
+        doReturn(1).when(sInjector).getDefaultVoiceSubscriptionId();
+
+        assertThat(mController.getSummary(1, true)).isEqualTo(
+                ResourcesUtils.getResourcesString(mContext, "default_for_calls_and_sms")
+                        + System.lineSeparator()
+                        + ResourcesUtils.getResourcesString(mContext, "default_for_mobile_data"));
+
+        assertThat(mController.getSummary(2, false)).isEqualTo(
+                ResourcesUtils.getResourcesString(mContext, "subscription_available"));
+    }
+
+    @Test
+    public void getSummary_twoSubsOneDefaultForEverythingDataDisabled() {
+        setupMockSubscriptions(2);
+
+        doReturn(1).when(sInjector).getDefaultSmsSubscriptionId();
+        doReturn(1).when(sInjector).getDefaultVoiceSubscriptionId();
+
+        assertThat(mController.getSummary(1, true)).isEqualTo(
+                ResourcesUtils.getResourcesString(mContext, "default_for_calls_and_sms")
+                        + System.lineSeparator()
+                        + ResourcesUtils.getResourcesString(mContext, "mobile_data_off"));
+
+        assertThat(mController.getSummary(2, false)).isEqualTo(
+                ResourcesUtils.getResourcesString(mContext, "subscription_available"));
+    }
+
+    @Test
+    public void getSummary_twoSubsOneForCallsAndDataOneForSms() {
+        setupMockSubscriptions(2, 1, true);
+
+        doReturn(2).when(sInjector).getDefaultSmsSubscriptionId();
+        doReturn(1).when(sInjector).getDefaultVoiceSubscriptionId();
+
+        assertThat(mController.getSummary(1, true)).isEqualTo(
+                ResourcesUtils.getResourcesString(mContext, "default_for_calls")
+                        + System.lineSeparator()
+                        + ResourcesUtils.getResourcesString(mContext, "default_for_mobile_data"));
+
+        assertThat(mController.getSummary(2, false)).isEqualTo(
+                ResourcesUtils.getResourcesString(mContext, "default_for_sms"));
+    }
+
+    @Test
+    @UiThreadTest
+    public void setIcon_greatSignal_correctLevels() {
+        final List<SubscriptionInfo> subs = setupMockSubscriptions(2, 1, true);
+        setMockSubSignalStrength(subs, 0, SIGNAL_STRENGTH_GREAT);
+        setMockSubSignalStrength(subs, 1, SIGNAL_STRENGTH_GREAT);
+        final Preference pref = new Preference(mContext);
+        final Drawable greatDrawWithoutCutOff = mock(Drawable.class);
+        doReturn(greatDrawWithoutCutOff).when(sInjector)
+                .getIcon(mContext, 4, NUM_SIGNAL_STRENGTH_BINS, true);
+
+        mController.setIcon(pref, 1, true /* isDefaultForData */);
+        assertThat(pref.getIcon()).isEqualTo(greatDrawWithoutCutOff);
+
+        final Drawable greatDrawWithCutOff = mock(Drawable.class);
+        doReturn(greatDrawWithCutOff).when(sInjector)
+                .getIcon(mContext, 4, NUM_SIGNAL_STRENGTH_BINS, true);
+        mController.setIcon(pref, 2, false /* isDefaultForData */);
+        assertThat(pref.getIcon()).isEqualTo(greatDrawWithCutOff);
+    }
+
+    @Test
+    @UiThreadTest
+    public void displayPreference_providerAndHasSim_showPreference() {
+        final List<SubscriptionInfo> sub = setupMockSubscriptions(1);
+        doReturn(true).when(sInjector).isProviderModelEnabled(mContext);
+        doReturn(sub.get(0)).when(mSubscriptionManager).getDefaultDataSubscriptionInfo();
+
+        mController.onResume();
+        mController.displayPreference(mPreferenceScreen);
+
+        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(1);
+        assertThat(mPreferenceCategory.getPreference(0).getTitle()).isEqualTo("sub1");
+    }
+
+    @Test
+    @UiThreadTest
+    public void displayPreference_providerAndHasMultiSim_showDataSubPreference() {
+        final List<SubscriptionInfo> sub = setupMockSubscriptions(2);
+        doReturn(true).when(sInjector).isProviderModelEnabled(mContext);
+        doReturn(sub.get(0)).when(mSubscriptionManager).getDefaultDataSubscriptionInfo();
+
+        mController.onResume();
+        mController.displayPreference(mPreferenceScreen);
+
+        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(1);
+        assertThat(mPreferenceCategory.getPreference(0).getTitle()).isEqualTo("sub1");
+    }
+
+    @Test
+    @UiThreadTest
+    public void displayPreference_providerAndNoSim_noPreference() {
+        doReturn(true).when(sInjector).isProviderModelEnabled(mContext);
+        doReturn(null).when(mSubscriptionManager).getDefaultDataSubscriptionInfo();
+
+        mController.onResume();
+        mController.displayPreference(mPreferenceScreen);
+
+        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    @UiThreadTest
+    public void onAirplaneModeChanged_providerAndHasSim_noPreference() {
+        setupMockSubscriptions(1);
+        doReturn(true).when(sInjector).isProviderModelEnabled(mContext);
+        mController.onResume();
+        mController.displayPreference(mPreferenceScreen);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 1);
+
+        mController.onAirplaneModeChanged(true);
+
+        assertThat(mController.isAvailable()).isFalse();
+        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    @UiThreadTest
+    public void dataSubscriptionChanged_providerAndHasMultiSim_showSubId1Preference() {
+        final List<SubscriptionInfo> sub = setupMockSubscriptions(2);
+        doReturn(true).when(sInjector).isProviderModelEnabled(mContext);
+        doReturn(sub.get(0)).when(mSubscriptionManager).getDefaultDataSubscriptionInfo();
+        Intent intent = new Intent(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED);
+
+        mController.onResume();
+        mController.displayPreference(mPreferenceScreen);
+        mController.mDataSubscriptionChangedReceiver.onReceive(mContext, intent);
+
+        assertThat(mController.isAvailable()).isTrue();
+        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(1);
+        assertThat(mPreferenceCategory.getPreference(0).getTitle()).isEqualTo("sub1");
+    }
+
+    @Test
+    @UiThreadTest
+    public void dataSubscriptionChanged_providerAndHasMultiSim_showSubId2Preference() {
+        final List<SubscriptionInfo> sub = setupMockSubscriptions(2);
+        final int subId = sub.get(0).getSubscriptionId();
+        doReturn(true).when(sInjector).isProviderModelEnabled(mContext);
+        doReturn(sub.get(0)).when(mSubscriptionManager).getDefaultDataSubscriptionInfo();
+        Intent intent = new Intent(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED);
+
+        mController.onResume();
+        mController.displayPreference(mPreferenceScreen);
+
+        assertThat(mController.isAvailable()).isTrue();
+        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(1);
+        assertThat(mPreferenceCategory.getPreference(0).getTitle()).isEqualTo("sub1");
+
+        doReturn(sub.get(1)).when(mSubscriptionManager).getDefaultDataSubscriptionInfo();
+
+        mController.mDataSubscriptionChangedReceiver.onReceive(mContext, intent);
+
+        assertThat(mController.isAvailable()).isTrue();
+        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(1);
+        assertThat(mPreferenceCategory.getPreference(0).getTitle()).isEqualTo("sub2");
+    }
+
+    @Test
+    @UiThreadTest
+    public void getIcon_cellularIsActive_iconColorIsAccentDefaultColor() {
+        final List<SubscriptionInfo> sub = setupMockSubscriptions(1);
+        doReturn(true).when(sInjector).isProviderModelEnabled(mContext);
+        doReturn(sub.get(0)).when(mSubscriptionManager).getDefaultDataSubscriptionInfo();
+        Drawable icon = mock(Drawable.class);
+        doReturn(icon).when(sInjector).getIcon(any(), anyInt(), anyInt(), eq(false));
+        setupGetIconConditions(sub.get(0).getSubscriptionId(), true, true,
+                TelephonyManager.DATA_CONNECTED, ServiceState.STATE_IN_SERVICE);
+
+        mController.onResume();
+        mController.displayPreference(mPreferenceScreen);
+
+        verify(icon).setTint(Utils.getColorAccentDefaultColor(mContext));
+    }
+
+    @Test
+    @UiThreadTest
+    public void getIcon_dataStateConnectedAndMobileDataOn_iconIsSignalIcon() {
+        final List<SubscriptionInfo> subs = setupMockSubscriptions(1);
+        final int subId = subs.get(0).getSubscriptionId();
+        doReturn(true).when(sInjector).isProviderModelEnabled(mContext);
+        doReturn(subs.get(0)).when(mSubscriptionManager).getDefaultDataSubscriptionInfo();
+        Drawable icon = mock(Drawable.class);
+        doReturn(icon).when(sInjector).getIcon(any(), anyInt(), anyInt(), eq(false));
+        setupGetIconConditions(subId, false, true,
+                TelephonyManager.DATA_CONNECTED, ServiceState.STATE_IN_SERVICE);
+        mController.onResume();
+        mController.displayPreference(mPreferenceScreen);
+        Drawable actualIcon = mPreferenceCategory.getPreference(0).getIcon();
+
+        assertThat(icon).isEqualTo(actualIcon);
+    }
+
+    @Test
+    @UiThreadTest
+    public void getIcon_voiceInServiceAndMobileDataOff_iconIsSignalIcon() {
+        final List<SubscriptionInfo> subs = setupMockSubscriptions(1);
+        final int subId = subs.get(0).getSubscriptionId();
+        doReturn(true).when(sInjector).isProviderModelEnabled(mContext);
+        doReturn(subs.get(0)).when(mSubscriptionManager).getDefaultDataSubscriptionInfo();
+        Drawable icon = mock(Drawable.class);
+        doReturn(icon).when(sInjector).getIcon(any(), anyInt(), anyInt(), eq(false));
+
+        setupGetIconConditions(subId, false, false,
+                TelephonyManager.DATA_DISCONNECTED, ServiceState.STATE_IN_SERVICE);
+
+        mController.onResume();
+        mController.displayPreference(mPreferenceScreen);
+        Drawable actualIcon = mPreferenceCategory.getPreference(0).getIcon();
+        doReturn(TelephonyManager.DATA_CONNECTED).when(mTelephonyManagerForSub).getDataState();
+
+        assertThat(icon).isEqualTo(actualIcon);
+    }
+
+    @Test
+    public void connectCarrierNetwork_isDataEnabled_helperConnect() {
+        when(mTelephonyManager.isDataEnabled()).thenReturn(true);
+        mController.setWifiPickerTrackerHelper(mWifiPickerTrackerHelper);
+
+        mController.connectCarrierNetwork();
+
+        verify(mWifiPickerTrackerHelper).connectCarrierNetwork(any());
+    }
+
+    @Test
+    public void connectCarrierNetwork_isNotDataEnabled_helperNeverConnect() {
+        when(mTelephonyManager.isDataEnabled()).thenReturn(false);
+        mController.setWifiPickerTrackerHelper(mWifiPickerTrackerHelper);
+
+        mController.connectCarrierNetwork();
+
+        verify(mWifiPickerTrackerHelper, never()).connectCarrierNetwork(any());
+    }
+
+    private void setupGetIconConditions(int subId, boolean isActiveCellularNetwork,
+            boolean isDataEnable, int dataState, int servicestate) {
+        doReturn(mTelephonyManagerForSub).when(mTelephonyManager).createForSubscriptionId(subId);
+        doReturn(isActiveCellularNetwork).when(sInjector).isActiveCellularNetwork(mContext);
+        doReturn(isDataEnable).when(mTelephonyManagerForSub).isDataEnabled();
+        doReturn(dataState).when(mTelephonyManagerForSub).getDataState();
+        ServiceState ss = mock(ServiceState.class);
+        doReturn(ss).when(mTelephonyManagerForSub).getServiceState();
+        doReturn(servicestate).when(ss).getState();
+    }
+
+    private List<SubscriptionInfo> setupMockSubscriptions(int count) {
+        return setupMockSubscriptions(count, 0, true);
+    }
+
+    /** Helper method to setup several mock active subscriptions. The generated subscription id's
+     * start at 1.
+     *
+     * @param count How many subscriptions to create
+     * @param defaultDataSubId The subscription id of the default data subscription - pass
+     *                         INVALID_SUBSCRIPTION_ID if there should not be one
+     * @param mobileDataEnabled Whether mobile data should be considered enabled for the default
+     *                          data subscription
+     */
+    private List<SubscriptionInfo> setupMockSubscriptions(int count, int defaultDataSubId,
+            boolean mobileDataEnabled) {
+        if (defaultDataSubId != INVALID_SUBSCRIPTION_ID) {
+            when(sInjector.getDefaultDataSubscriptionId()).thenReturn(defaultDataSubId);
+        }
+        final ArrayList<SubscriptionInfo> infos = new ArrayList<>();
+        for (int i = 0; i < count; i++) {
+            final int subscriptionId = i + 1;
+            final SubscriptionInfo info = mock(SubscriptionInfo.class);
+            final TelephonyManager mgrForSub = mock(TelephonyManager.class);
+            final SignalStrength signalStrength = mock(SignalStrength.class);
+
+            if (subscriptionId == defaultDataSubId) {
+                when(mgrForSub.isDataEnabled()).thenReturn(mobileDataEnabled);
+            }
+            when(info.getSubscriptionId()).thenReturn(subscriptionId);
+            when(info.getDisplayName()).thenReturn("sub" + (subscriptionId));
+            doReturn(mgrForSub).when(mTelephonyManager).createForSubscriptionId(eq(subscriptionId));
+            when(mgrForSub.getSignalStrength()).thenReturn(signalStrength);
+            when(signalStrength.getLevel()).thenReturn(SIGNAL_STRENGTH_GOOD);
+            doReturn(true).when(sInjector).canSubscriptionBeDisplayed(mContext, subscriptionId);
+            infos.add(info);
+        }
+        SubscriptionUtil.setActiveSubscriptionsForTesting(infos);
+        return infos;
+    }
+
+    /**
+     * Helper method to set the signal strength returned for a mock subscription
+     * @param subs The list of subscriptions
+     * @param index The index in of the subscription in |subs| to change
+     * @param level The signal strength level to return for the subscription. Pass -1 to force
+     *              return of a null SignalStrength object for the subscription.
+     */
+    private void setMockSubSignalStrength(List<SubscriptionInfo> subs, int index, int level) {
+        final int subId =  subs.get(index).getSubscriptionId();
+        doReturn(mTelephonyManagerForSub).when(mTelephonyManager).createForSubscriptionId(subId);
+        if (level == -1) {
+            when(mTelephonyManagerForSub.getSignalStrength()).thenReturn(null);
+        } else {
+            final SignalStrength signalStrength = mock(SignalStrength.class);
+            doReturn(signalStrength).when(mTelephonyManagerForSub).getSignalStrength();
+            when(signalStrength.getLevel()).thenReturn(level);
+        }
+    }
+
+    private void initializeMethod(boolean isSubscriptionCanBeDisplayed,
+            int defaultSmsSubscriptionId, int defaultVoiceSubscriptionId,
+            int defaultDataSubscriptionId, boolean isActiveCellularNetwork,
+            boolean isProviderModelEnabled) {
+        doReturn(isSubscriptionCanBeDisplayed)
+                .when(sInjector).canSubscriptionBeDisplayed(mContext, eq(anyInt()));
+        doReturn(defaultSmsSubscriptionId).when(sInjector).getDefaultSmsSubscriptionId();
+        doReturn(defaultVoiceSubscriptionId).when(sInjector).getDefaultVoiceSubscriptionId();
+        doReturn(defaultDataSubscriptionId).when(sInjector).getDefaultDataSubscriptionId();
+        doReturn(isActiveCellularNetwork).when(sInjector).isActiveCellularNetwork(mContext);
+        doReturn(isProviderModelEnabled).when(sInjector).isProviderModelEnabled(mContext);
+        doReturn(mock(Drawable.class))
+                .when(sInjector).getIcon(any(), anyInt(), anyInt(), eq(false));
+    }
+
+    private static class FakeSubscriptionsPreferenceController
+            extends SubscriptionsPreferenceController {
+
+        /**
+         * @param context            the context for the UI where we're placing these preferences
+         * @param lifecycle          for listening to lifecycle events for the UI
+         * @param updateListener     called to let our parent controller know that our
+         *                           availability has
+         *                           changed, or that one or more of the preferences we've placed
+         *                           in the
+         *                           PreferenceGroup has changed
+         * @param preferenceGroupKey the key used to lookup the PreferenceGroup where Preferences
+         *                          will
+         *                           be placed
+         * @param startOrder         the order that should be given to the first Preference
+         *                           placed into
+         *                           the PreferenceGroup; the second will use startOrder+1, third
+         *                           will
+         *                           use startOrder+2, etc. - this is useful for when the parent
+         *                           wants
+         *                           to have other preferences in the same PreferenceGroup and wants
+         */
+        FakeSubscriptionsPreferenceController(Context context, Lifecycle lifecycle,
+                UpdateListener updateListener, String preferenceGroupKey, int startOrder) {
+            super(context, lifecycle, updateListener, preferenceGroupKey, startOrder);
+        }
+
+        @Override
+        protected SubsPrefCtrlInjector createSubsPrefCtrlInjector() {
+            return sInjector;
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/settings/network/ims/MockVtQueryImsState.java b/tests/unit/src/com/android/settings/network/ims/MockVtQueryImsState.java
new file mode 100644
index 0000000..0949f1c
--- /dev/null
+++ b/tests/unit/src/com/android/settings/network/ims/MockVtQueryImsState.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.settings.network.ims;
+
+import android.content.Context;
+import android.telephony.ims.ImsException;
+
+/**
+ * Controller class for mock VT status
+ */
+public class MockVtQueryImsState extends VtQueryImsState {
+
+    private Boolean mIsTtyOnVolteEnabled;
+    private Boolean mIsEnabledOnPlatform;
+    private Boolean mIsProvisionedOnDevice;
+    private Boolean mIsEnabledByUser;
+    private Boolean mIsServiceStateReady;
+
+    /**
+     * Constructor
+     *
+     * @param context {@link Context}
+     * @param subId subscription's id
+     */
+    public MockVtQueryImsState(Context context, int subId) {
+        super(context, subId);
+    }
+
+    public void setIsTtyOnVolteEnabled(boolean enabled) {
+        mIsTtyOnVolteEnabled = enabled;
+    }
+
+    @Override
+    boolean isTtyOnVolteEnabled(int subId) {
+        if (mIsTtyOnVolteEnabled != null) {
+            return mIsTtyOnVolteEnabled;
+        }
+        return super.isTtyOnVolteEnabled(subId);
+    }
+
+    public void setIsEnabledByPlatform(boolean isEnabled) {
+        mIsEnabledOnPlatform = isEnabled;
+    }
+
+    @Override
+    boolean isEnabledByPlatform(int subId) throws InterruptedException, ImsException,
+            IllegalArgumentException {
+        if (mIsEnabledOnPlatform != null) {
+            return mIsEnabledOnPlatform;
+        }
+        return super.isEnabledByPlatform(subId);
+    }
+
+    public void setIsProvisionedOnDevice(boolean isProvisioned) {
+        mIsProvisionedOnDevice = isProvisioned;
+    }
+
+    @Override
+    boolean isProvisionedOnDevice(int subId) {
+        if (mIsProvisionedOnDevice != null) {
+            return mIsProvisionedOnDevice;
+        }
+        return super.isProvisionedOnDevice(subId);
+    }
+
+    public void setServiceStateReady(boolean isReady) {
+        mIsServiceStateReady = isReady;
+    }
+
+    @Override
+    boolean isServiceStateReady(int subId) throws InterruptedException, ImsException,
+            IllegalArgumentException {
+        if (mIsServiceStateReady != null) {
+            return mIsServiceStateReady;
+        }
+        return super.isServiceStateReady(subId);
+    }
+
+    public void setIsEnabledByUser(boolean enabled) {
+        mIsEnabledByUser = enabled;
+    }
+
+    @Override
+    boolean isEnabledByUser(int subId) {
+        if (mIsEnabledByUser != null) {
+            return mIsEnabledByUser;
+        }
+        return super.isEnabledByUser(subId);
+    }
+}
diff --git a/tests/unit/src/com/android/settings/network/ims/MockWifiCallingQueryImsState.java b/tests/unit/src/com/android/settings/network/ims/MockWifiCallingQueryImsState.java
new file mode 100644
index 0000000..abea839
--- /dev/null
+++ b/tests/unit/src/com/android/settings/network/ims/MockWifiCallingQueryImsState.java
@@ -0,0 +1,106 @@
+/*
+ * 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.settings.network.ims;
+
+import android.content.Context;
+import android.telephony.ims.ImsException;
+
+/**
+ * Controller class for mock Wifi calling status
+ */
+public class MockWifiCallingQueryImsState extends WifiCallingQueryImsState {
+
+    private Boolean mIsTtyOnVolteEnabled;
+    private Boolean mIsEnabledOnPlatform;
+    private Boolean mIsProvisionedOnDevice;
+    private Boolean mIsServiceStateReady;
+    private Boolean mIsEnabledByUser;
+
+    /**
+     * Constructor
+     *
+     * @param context {@code Context}
+     * @param subId subscription's id
+     */
+    public MockWifiCallingQueryImsState(Context context, int subId) {
+        super(context, subId);
+    }
+
+    public void setIsTtyOnVolteEnabled(boolean enabled) {
+        mIsTtyOnVolteEnabled = enabled;
+    }
+
+    @Override
+    boolean isTtyOnVolteEnabled(int subId) {
+        if (mIsTtyOnVolteEnabled != null) {
+            return mIsTtyOnVolteEnabled;
+        }
+        return super.isTtyOnVolteEnabled(subId);
+    }
+
+
+    public void setIsEnabledByPlatform(boolean isEnabled) {
+        mIsEnabledOnPlatform = isEnabled;
+    }
+
+    @Override
+    boolean isEnabledByPlatform(int subId) throws InterruptedException, ImsException,
+            IllegalArgumentException {
+        if (mIsEnabledOnPlatform != null) {
+            return mIsEnabledOnPlatform;
+        }
+        return super.isEnabledByPlatform(subId);
+    }
+
+    public void setIsProvisionedOnDevice(boolean isProvisioned) {
+        mIsProvisionedOnDevice = isProvisioned;
+    }
+
+    @Override
+    boolean isProvisionedOnDevice(int subId) {
+        if (mIsProvisionedOnDevice != null) {
+            return mIsProvisionedOnDevice;
+        }
+        return super.isProvisionedOnDevice(subId);
+    }
+
+    public void setServiceStateReady(boolean isReady) {
+        mIsServiceStateReady = isReady;
+    }
+
+    @Override
+    boolean isServiceStateReady(int subId) throws InterruptedException, ImsException,
+            IllegalArgumentException {
+        if (mIsServiceStateReady != null) {
+            return mIsServiceStateReady;
+        }
+        return super.isServiceStateReady(subId);
+    }
+
+    public void setIsEnabledByUser(boolean enabled) {
+        mIsEnabledByUser = enabled;
+    }
+
+    @Override
+    boolean isEnabledByUser(int subId) {
+        if (mIsEnabledByUser != null) {
+            return mIsEnabledByUser;
+        }
+        return super.isEnabledByUser(subId);
+    }
+
+}
diff --git a/tests/unit/src/com/android/settings/network/telephony/Enhanced4gLteSliceHelperTest.java b/tests/unit/src/com/android/settings/network/telephony/Enhanced4gLteSliceHelperTest.java
index 2b812c7..2c6a8c6 100644
--- a/tests/unit/src/com/android/settings/network/telephony/Enhanced4gLteSliceHelperTest.java
+++ b/tests/unit/src/com/android/settings/network/telephony/Enhanced4gLteSliceHelperTest.java
@@ -237,14 +237,15 @@
         final Intent intent = new Intent(action);
         intent.setClass(mContext, SliceBroadcastReceiver.class);
         return PendingIntent.getBroadcast(mContext, 0 /* requestCode */, intent,
-                PendingIntent.FLAG_NO_CREATE);
+                PendingIntent.FLAG_NO_CREATE | PendingIntent.FLAG_IMMUTABLE);
     }
 
     private PendingIntent getActivityIntent(String action) {
         final Intent intent = new Intent(action);
         intent.setPackage(SETTINGS_PACKAGE_NAME);
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        return PendingIntent.getActivity(mContext, 0 /* requestCode */, intent, 0 /* flags */);
+        return PendingIntent.getActivity(mContext, 0 /* requestCode */, intent,
+                PendingIntent.FLAG_IMMUTABLE);
     }
 
     private void assertTitle(List<SliceItem> sliceItems, String title) {
diff --git a/tests/unit/src/com/android/settings/network/telephony/NetworkProviderWorkerTest.java b/tests/unit/src/com/android/settings/network/telephony/NetworkProviderWorkerTest.java
new file mode 100644
index 0000000..a4fc745
--- /dev/null
+++ b/tests/unit/src/com/android/settings/network/telephony/NetworkProviderWorkerTest.java
@@ -0,0 +1,264 @@
+/*
+ * 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.settings.network.telephony;
+
+import static com.android.settings.slices.CustomSliceRegistry.PROVIDER_MODEL_SLICE_URI;
+
+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 android.content.Context;
+import android.net.ConnectivityManager;
+import android.net.Uri;
+import android.telephony.ServiceState;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyDisplayInfo;
+import android.telephony.TelephonyManager;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.wifitrackerlib.WifiEntry;
+import com.android.wifitrackerlib.WifiPickerTracker;
+
+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 NetworkProviderWorkerTest {
+    private Context mContext;
+    private MockNetworkProviderWorker mMockNetworkProviderWorker;
+
+    @Mock
+    WifiPickerTracker mMockWifiPickerTracker;
+    @Mock
+    private SubscriptionManager mSubscriptionManager;
+    @Mock
+    private ConnectivityManager mConnectivityManager;
+    @Mock
+    private TelephonyManager mTelephonyManager;
+
+    @Before
+    @UiThreadTest
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = spy(ApplicationProvider.getApplicationContext());
+
+        when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager);
+        when(mContext.getSystemService(ConnectivityManager.class)).thenReturn(mConnectivityManager);
+        when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
+        when(mTelephonyManager.createForSubscriptionId(anyInt())).thenReturn(mTelephonyManager);
+
+        mMockNetworkProviderWorker = new MockNetworkProviderWorker(mContext,
+                PROVIDER_MODEL_SLICE_URI);
+        mMockNetworkProviderWorker.setWifiPickerTracker(mMockWifiPickerTracker);
+    }
+
+    @Test
+    @UiThreadTest
+    public void onConstructor_shouldBeInCreatedState() {
+        assertThat(mMockNetworkProviderWorker.getLifecycle().getCurrentState())
+                .isEqualTo(Lifecycle.State.CREATED);
+    }
+
+    @Test
+    @UiThreadTest
+    public void onSlicePinned_shouldBeInResumedState() {
+        mMockNetworkProviderWorker.onSlicePinned();
+
+        assertThat(mMockNetworkProviderWorker.getLifecycle().getCurrentState())
+                .isEqualTo(Lifecycle.State.RESUMED);
+    }
+
+    @Test
+    @UiThreadTest
+    public void onSliceUnpinned_shouldBeInCreatedState() {
+        mMockNetworkProviderWorker.onSlicePinned();
+        mMockNetworkProviderWorker.onSliceUnpinned();
+
+        assertThat(mMockNetworkProviderWorker.getLifecycle().getCurrentState())
+                .isEqualTo(Lifecycle.State.CREATED);
+    }
+
+    @Test
+    @UiThreadTest
+    public void close_shouldBeInDestroyedState() {
+        mMockNetworkProviderWorker.close();
+
+        assertThat(mMockNetworkProviderWorker.getLifecycle().getCurrentState())
+                .isEqualTo(Lifecycle.State.DESTROYED);
+    }
+
+    @Test
+    @UiThreadTest
+    public void getWifiEntry_connectedWifiKey_shouldGetConnectedWifi() {
+        final String key = "key";
+        final WifiEntry connectedWifiEntry = mock(WifiEntry.class);
+        when(connectedWifiEntry.getKey()).thenReturn(key);
+        when(mMockWifiPickerTracker.getConnectedWifiEntry()).thenReturn(connectedWifiEntry);
+
+        assertThat(mMockNetworkProviderWorker.getWifiEntry(key)).isEqualTo(connectedWifiEntry);
+    }
+
+    @Test
+    @UiThreadTest
+    public void getWifiEntry_reachableWifiKey_shouldGetReachableWifi() {
+        final String key = "key";
+        final WifiEntry reachableWifiEntry = mock(WifiEntry.class);
+        when(reachableWifiEntry.getKey()).thenReturn(key);
+        when(mMockWifiPickerTracker.getWifiEntries()).thenReturn(Arrays.asList(reachableWifiEntry));
+
+        assertThat(mMockNetworkProviderWorker.getWifiEntry(key)).isEqualTo(reachableWifiEntry);
+    }
+
+    @Test
+    @UiThreadTest
+    public void onSubscriptionsChanged_notifySubscriptionChanged_callUpdateSlice() {
+        mMockNetworkProviderWorker.onSlicePinned();
+        mMockNetworkProviderWorker.receiveNotification(false);
+
+        mMockNetworkProviderWorker.onSubscriptionsChanged();
+
+        assertThat(mMockNetworkProviderWorker.hasNotification()).isTrue();
+    }
+
+    @Test
+    @UiThreadTest
+    public void onAirplaneModeChanged_airplaneModeOn_callUpdateSlice() {
+        mMockNetworkProviderWorker.onSlicePinned();
+        mMockNetworkProviderWorker.receiveNotification(false);
+
+        mMockNetworkProviderWorker.onAirplaneModeChanged(false);
+
+        assertThat(mMockNetworkProviderWorker.hasNotification()).isTrue();
+    }
+
+    @Test
+    @UiThreadTest
+    public void onAirplaneModeChanged_airplaneModeOff_callUpdateSlice() {
+        mMockNetworkProviderWorker.onSlicePinned();
+        mMockNetworkProviderWorker.receiveNotification(false);
+
+        mMockNetworkProviderWorker.onAirplaneModeChanged(true);
+
+        assertThat(mMockNetworkProviderWorker.hasNotification()).isTrue();
+    }
+
+    @Test
+    @UiThreadTest
+    public void onSignalStrengthChanged_notifySignalStrengthChanged_callUpdateSlice() {
+        mMockNetworkProviderWorker.onSlicePinned();
+        mMockNetworkProviderWorker.receiveNotification(false);
+
+        mMockNetworkProviderWorker.onSignalStrengthChanged();
+
+        assertThat(mMockNetworkProviderWorker.hasNotification()).isTrue();
+    }
+
+    @Test
+    @UiThreadTest
+    public void onMobileDataEnabledChange_notifyMobileDataEnabledChanged_callUpdateSlice() {
+        mMockNetworkProviderWorker.onSlicePinned();
+        mMockNetworkProviderWorker.receiveNotification(false);
+
+        mMockNetworkProviderWorker.onMobileDataEnabledChange();
+
+        assertThat(mMockNetworkProviderWorker.hasNotification()).isTrue();
+    }
+
+    @Test
+    @UiThreadTest
+    public void onDataConnectivityChange_notifyDataConnectivityChanged_callUpdateSlice() {
+        mMockNetworkProviderWorker.onSlicePinned();
+        mMockNetworkProviderWorker.receiveNotification(false);
+
+        mMockNetworkProviderWorker.onDataConnectivityChange();
+
+        assertThat(mMockNetworkProviderWorker.hasNotification()).isTrue();
+    }
+
+    @Test
+    @UiThreadTest
+    public void onServiceStateChanged_notifyPhoneStateListener_callUpdateSlice() {
+        mMockNetworkProviderWorker.onSlicePinned();
+        mMockNetworkProviderWorker.receiveNotification(false);
+
+        mMockNetworkProviderWorker.mPhoneStateListener.onServiceStateChanged(new ServiceState());
+
+        assertThat(mMockNetworkProviderWorker.hasNotification()).isTrue();
+    }
+
+    @Test
+    @UiThreadTest
+    public void onActiveDataSubscriptionIdChanged_notifyPhoneStateListener_callUpdateSlice() {
+        mMockNetworkProviderWorker.onSlicePinned();
+        mMockNetworkProviderWorker.receiveNotification(false);
+
+        mMockNetworkProviderWorker.mPhoneStateListener.onActiveDataSubscriptionIdChanged(1);
+
+        assertThat(mMockNetworkProviderWorker.hasNotification()).isTrue();
+    }
+
+    @Test
+    @UiThreadTest
+    public void onDisplayInfoChanged_notifyPhoneStateListener_callUpdateSlice() {
+        mMockNetworkProviderWorker.onSlicePinned();
+        mMockNetworkProviderWorker.receiveNotification(false);
+
+        mMockNetworkProviderWorker.mPhoneStateListener.onDisplayInfoChanged(
+                new TelephonyDisplayInfo(14, 0));
+
+        assertThat(mMockNetworkProviderWorker.hasNotification()).isTrue();
+    }
+
+    public class MockNetworkProviderWorker extends NetworkProviderWorker {
+        private boolean mHasNotification = false;
+
+        MockNetworkProviderWorker(Context context, Uri uri) {
+            super(context, uri);
+        }
+
+        public void receiveNotification(boolean inputValue) {
+            mHasNotification = inputValue;
+        }
+
+        public boolean hasNotification() {
+            return mHasNotification;
+        }
+
+        @Override
+        public void updateSlice() {
+            super.updateSlice();
+            receiveNotification(true);
+        }
+
+        public void setWifiPickerTracker(WifiPickerTracker wifiPickerTracker) {
+            mWifiPickerTracker = wifiPickerTracker;
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/nfc/NfcDetectionPointControllerTest.java b/tests/unit/src/com/android/settings/nfc/NfcDetectionPointControllerTest.java
similarity index 84%
rename from tests/robotests/src/com/android/settings/nfc/NfcDetectionPointControllerTest.java
rename to tests/unit/src/com/android/settings/nfc/NfcDetectionPointControllerTest.java
index 31ac7d6..3b9df6d 100644
--- a/tests/robotests/src/com/android/settings/nfc/NfcDetectionPointControllerTest.java
+++ b/tests/unit/src/com/android/settings/nfc/NfcDetectionPointControllerTest.java
@@ -18,20 +18,22 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+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.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class NfcDetectionPointControllerTest {
 
     private NfcDetectionPointController mController;
 
     @Before
     public void setUp() {
-        mController = new NfcDetectionPointController(RuntimeEnvironment.application, "fakeKey");
+        mController = new NfcDetectionPointController(ApplicationProvider.getApplicationContext(),
+                "fakeKey");
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/nfc/SecureNfcPreferenceControllerTest.java b/tests/unit/src/com/android/settings/nfc/SecureNfcPreferenceControllerTest.java
similarity index 81%
rename from tests/robotests/src/com/android/settings/nfc/SecureNfcPreferenceControllerTest.java
rename to tests/unit/src/com/android/settings/nfc/SecureNfcPreferenceControllerTest.java
index 56f012a..c05e208 100644
--- a/tests/robotests/src/com/android/settings/nfc/SecureNfcPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/nfc/SecureNfcPreferenceControllerTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 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.
@@ -20,13 +20,14 @@
 
 import android.content.Context;
 
+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.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class SecureNfcPreferenceControllerTest {
 
     private Context mContext;
@@ -34,7 +35,7 @@
 
     @Before
     public void setUp() {
-        mContext = RuntimeEnvironment.application;
+        mContext = ApplicationProvider.getApplicationContext();
         mController = new SecureNfcPreferenceController(mContext, "nfc_secure_settings");
     }
 
diff --git a/tests/unit/src/com/android/settings/notification/zen/ZenRuleCustomPrefContrTestBase.java b/tests/unit/src/com/android/settings/notification/zen/ZenRuleCustomPrefContrTestBase.java
new file mode 100644
index 0000000..53ad7c5
--- /dev/null
+++ b/tests/unit/src/com/android/settings/notification/zen/ZenRuleCustomPrefContrTestBase.java
@@ -0,0 +1,40 @@
+/*
+ * 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.settings.notification.zen;
+
+import android.app.AutomaticZenRule;
+import android.app.NotificationManager;
+import android.service.notification.ZenPolicy;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+abstract class ZenRuleCustomPrefContrTestBase {
+    public static final String RULE_ID = "test_rule_id";
+    public static final String PREF_KEY = "main_pref";
+
+    AutomaticZenRule mRule = new AutomaticZenRule("test", null, null, null, null,
+            NotificationManager.INTERRUPTION_FILTER_PRIORITY, true);
+
+    abstract AbstractZenCustomRulePreferenceController getController();
+
+    void updateControllerZenPolicy(ZenPolicy policy) {
+        mRule.setZenPolicy(policy);
+        getController().onResume(mRule, RULE_ID);
+    }
+}
diff --git a/tests/unit/src/com/android/settings/panel/FakePanelContent.java b/tests/unit/src/com/android/settings/panel/FakePanelContent.java
new file mode 100644
index 0000000..f64d2f2
--- /dev/null
+++ b/tests/unit/src/com/android/settings/panel/FakePanelContent.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.settings.panel;
+
+import static com.android.settings.slices.CustomSliceRegistry.WIFI_SLICE_URI;
+
+import android.app.settings.SettingsEnums;
+import android.content.Intent;
+import android.net.Uri;
+
+import androidx.core.graphics.drawable.IconCompat;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Fake PanelContent for testing.
+ */
+public class FakePanelContent implements PanelContent {
+
+    public static final String FAKE_ACTION = "fake_action";
+
+    public static final CharSequence TITLE = "title";
+
+    public static final List<Uri> SLICE_URIS = Arrays.asList(
+            WIFI_SLICE_URI
+    );
+
+    public static final Intent INTENT = new Intent();
+
+    private CharSequence mTitle = TITLE;
+    private CharSequence mSubTitle;
+    private IconCompat mIcon;
+    private int mViewType;
+    private boolean mIsCustomizedButtonUsed = false;
+    private CharSequence mCustomizedButtonTitle;
+
+    @Override
+    public IconCompat getIcon() {
+        return mIcon;
+    }
+
+    public void setIcon(IconCompat icon) {
+        mIcon = icon;
+    }
+
+    @Override
+    public CharSequence getSubTitle() {
+        return mSubTitle;
+    }
+
+    public void setSubTitle(CharSequence subTitle) {
+        mSubTitle = subTitle;
+    }
+
+    @Override
+    public CharSequence getTitle() {
+        return mTitle;
+    }
+
+    public void setTitle(CharSequence title) {
+        mTitle = title;
+    }
+
+    @Override
+    public List<Uri> getSlices() {
+        return SLICE_URIS;
+    }
+
+    @Override
+    public Intent getSeeMoreIntent() {
+        return INTENT;
+    }
+
+    @Override
+    public int getMetricsCategory() {
+        return SettingsEnums.TESTING;
+    }
+
+    public void setViewType(int viewType) {
+        mViewType = viewType;
+    }
+
+    @Override
+    public int getViewType() {
+        return mViewType;
+    }
+
+    @Override
+    public boolean isCustomizedButtonUsed() {
+        return mIsCustomizedButtonUsed;
+    }
+
+    public void setIsCustomizedButtonUsed(boolean isUsed) {
+        mIsCustomizedButtonUsed = isUsed;
+    }
+
+    @Override
+    public CharSequence getCustomizedButtonTitle() {
+        return mCustomizedButtonTitle;
+    }
+
+    public void setCustomizedButtonTitle(CharSequence title) {
+        mCustomizedButtonTitle = title;
+    }
+}
diff --git a/tests/unit/src/com/android/settings/panel/FakeSettingsPanelActivity.java b/tests/unit/src/com/android/settings/panel/FakeSettingsPanelActivity.java
new file mode 100644
index 0000000..7e1275e
--- /dev/null
+++ b/tests/unit/src/com/android/settings/panel/FakeSettingsPanelActivity.java
@@ -0,0 +1,33 @@
+/*
+ * 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.settings.panel;
+
+import android.content.ComponentName;
+import android.content.Intent;
+
+public class FakeSettingsPanelActivity extends SettingsPanelActivity {
+    @Override
+    public ComponentName getCallingActivity() {
+        return new ComponentName("fake-package", "fake-class");
+    }
+
+    @Override
+    public Intent getIntent() {
+        final Intent intent = new Intent(FakePanelContent.FAKE_ACTION);
+        return intent;
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/panel/NfcPanelTest.java b/tests/unit/src/com/android/settings/panel/NfcPanelTest.java
similarity index 82%
rename from tests/robotests/src/com/android/settings/panel/NfcPanelTest.java
rename to tests/unit/src/com/android/settings/panel/NfcPanelTest.java
index 1de2c5a..60adfdd 100644
--- a/tests/robotests/src/com/android/settings/panel/NfcPanelTest.java
+++ b/tests/unit/src/com/android/settings/panel/NfcPanelTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 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.
@@ -20,25 +20,25 @@
 
 import android.net.Uri;
 
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import com.android.settings.slices.CustomSliceRegistry;
 
 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)
+@RunWith(AndroidJUnit4.class)
 public class NfcPanelTest {
 
     private NfcPanel mPanel;
 
     @Before
     public void setUp() {
-        mPanel = NfcPanel.create(RuntimeEnvironment.application);
+        mPanel = NfcPanel.create(ApplicationProvider.getApplicationContext());
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/panel/PanelFeatureProviderImplTest.java b/tests/unit/src/com/android/settings/panel/PanelFeatureProviderImplTest.java
similarity index 88%
rename from tests/robotests/src/com/android/settings/panel/PanelFeatureProviderImplTest.java
rename to tests/unit/src/com/android/settings/panel/PanelFeatureProviderImplTest.java
index f924d7a..3b61a73 100644
--- a/tests/robotests/src/com/android/settings/panel/PanelFeatureProviderImplTest.java
+++ b/tests/unit/src/com/android/settings/panel/PanelFeatureProviderImplTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2018 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.
@@ -12,9 +12,7 @@
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- *
  */
-
 package com.android.settings.panel;
 
 import static com.android.settings.panel.SettingsPanelActivity.KEY_MEDIA_PACKAGE_NAME;
@@ -26,13 +24,14 @@
 import android.os.Bundle;
 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.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class PanelFeatureProviderImplTest {
 
     private static final String TEST_PACKAGENAME = "com.test.packagename";
@@ -43,7 +42,7 @@
 
     @Before
     public void setUp() {
-        mContext = RuntimeEnvironment.application;
+        mContext = ApplicationProvider.getApplicationContext();
         mProvider = new PanelFeatureProviderImpl();
         mBundle = new Bundle();
         mBundle.putString(KEY_MEDIA_PACKAGE_NAME, TEST_PACKAGENAME);
diff --git a/tests/robotests/src/com/android/settings/panel/PanelSlicesLoaderCountdownLatchTest.java b/tests/unit/src/com/android/settings/panel/PanelSlicesLoaderCountdownLatchTest.java
similarity index 90%
rename from tests/robotests/src/com/android/settings/panel/PanelSlicesLoaderCountdownLatchTest.java
rename to tests/unit/src/com/android/settings/panel/PanelSlicesLoaderCountdownLatchTest.java
index dd8a91f..3794e00 100644
--- a/tests/robotests/src/com/android/settings/panel/PanelSlicesLoaderCountdownLatchTest.java
+++ b/tests/unit/src/com/android/settings/panel/PanelSlicesLoaderCountdownLatchTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 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.
@@ -22,14 +22,14 @@
 import android.content.Context;
 import android.net.Uri;
 
+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.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class PanelSlicesLoaderCountdownLatchTest {
 
     private Context mContext;
@@ -43,7 +43,7 @@
 
     @Before
     public void setUp() {
-        mContext = RuntimeEnvironment.application;
+        mContext = ApplicationProvider.getApplicationContext();
         mSliceCountdownLatch = new PanelSlicesLoaderCountdownLatch(URIS.length);
     }
 
@@ -89,4 +89,4 @@
         // Verify the second call returns false without external state change
         assertThat(mSliceCountdownLatch.isPanelReadyToLoad()).isFalse();
     }
-}
\ No newline at end of file
+}
diff --git a/tests/robotests/src/com/android/settings/panel/WifiPanelTest.java b/tests/unit/src/com/android/settings/panel/WifiPanelTest.java
similarity index 82%
rename from tests/robotests/src/com/android/settings/panel/WifiPanelTest.java
rename to tests/unit/src/com/android/settings/panel/WifiPanelTest.java
index 08db23e..b03075e 100644
--- a/tests/robotests/src/com/android/settings/panel/WifiPanelTest.java
+++ b/tests/unit/src/com/android/settings/panel/WifiPanelTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 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.
@@ -20,24 +20,25 @@
 
 import android.net.Uri;
 
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import com.android.settings.slices.CustomSliceRegistry;
 
 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)
+@RunWith(AndroidJUnit4.class)
 public class WifiPanelTest {
 
     private WifiPanel mPanel;
 
     @Before
     public void setUp() {
-        mPanel = WifiPanel.create(RuntimeEnvironment.application);
+        mPanel = WifiPanel.create(ApplicationProvider.getApplicationContext());
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/password/ScreenLockTypeTest.java b/tests/unit/src/com/android/settings/password/ScreenLockTypeTest.java
similarity index 93%
rename from tests/robotests/src/com/android/settings/password/ScreenLockTypeTest.java
rename to tests/unit/src/com/android/settings/password/ScreenLockTypeTest.java
index 05c3f64..f05e576 100644
--- a/tests/robotests/src/com/android/settings/password/ScreenLockTypeTest.java
+++ b/tests/unit/src/com/android/settings/password/ScreenLockTypeTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 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.
@@ -11,20 +11,20 @@
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
- * limitations under the License
+ * limitations under the License.
  */
-
 package com.android.settings.password;
 
 import static com.google.common.truth.Truth.assertThat;
 
 import android.app.admin.DevicePolicyManager;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class ScreenLockTypeTest {
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/search/CustomSiteMapRegistryTest.java b/tests/unit/src/com/android/settings/search/CustomSiteMapRegistryTest.java
similarity index 97%
rename from tests/robotests/src/com/android/settings/search/CustomSiteMapRegistryTest.java
rename to tests/unit/src/com/android/settings/search/CustomSiteMapRegistryTest.java
index 181821b..1a4737b 100644
--- a/tests/robotests/src/com/android/settings/search/CustomSiteMapRegistryTest.java
+++ b/tests/unit/src/com/android/settings/search/CustomSiteMapRegistryTest.java
@@ -18,6 +18,8 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import com.android.settings.DisplaySettings;
 import com.android.settings.backup.UserBackupSettingsActivity;
 import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
@@ -39,9 +41,8 @@
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class CustomSiteMapRegistryTest {
 
     @Test
diff --git a/tests/unit/src/com/android/settings/search/DatabaseIndexingUtils.java b/tests/unit/src/com/android/settings/search/DatabaseIndexingUtils.java
new file mode 100644
index 0000000..42eb45b
--- /dev/null
+++ b/tests/unit/src/com/android/settings/search/DatabaseIndexingUtils.java
@@ -0,0 +1,53 @@
+/*
+ * 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.settings.search;
+
+import android.util.Log;
+
+import com.android.settingslib.search.Indexable;
+
+import java.lang.reflect.Field;
+
+/**
+ * Utility class for {@like DatabaseIndexingManager} to handle the mapping between Payloads
+ * and Preference controllers, and managing indexable classes.
+ */
+public class DatabaseIndexingUtils {
+
+    private static final String TAG = "IndexingUtil";
+
+    public static final String FIELD_NAME_SEARCH_INDEX_DATA_PROVIDER =
+            "SEARCH_INDEX_DATA_PROVIDER";
+
+    public static Indexable.SearchIndexProvider getSearchIndexProvider(final Class<?> clazz) {
+        try {
+            final Field f = clazz.getField(FIELD_NAME_SEARCH_INDEX_DATA_PROVIDER);
+            return (Indexable.SearchIndexProvider) f.get(null);
+        } catch (NoSuchFieldException e) {
+            Log.d(TAG, "Cannot find field '" + FIELD_NAME_SEARCH_INDEX_DATA_PROVIDER + "'");
+        } catch (SecurityException se) {
+            Log.d(TAG,
+                    "Security exception for field '" + FIELD_NAME_SEARCH_INDEX_DATA_PROVIDER + "'");
+        } catch (IllegalAccessException e) {
+            Log.d(TAG, "Illegal access to field '" + FIELD_NAME_SEARCH_INDEX_DATA_PROVIDER + "'");
+        } catch (IllegalArgumentException e) {
+            Log.d(TAG, "Illegal argument when accessing field '"
+                    + FIELD_NAME_SEARCH_INDEX_DATA_PROVIDER + "'");
+        }
+        return null;
+    }
+}
diff --git a/tests/unit/src/com/android/settings/search/FakeSettingsFragment.java b/tests/unit/src/com/android/settings/search/FakeSettingsFragment.java
new file mode 100644
index 0000000..6dbb7fb
--- /dev/null
+++ b/tests/unit/src/com/android/settings/search/FakeSettingsFragment.java
@@ -0,0 +1,117 @@
+/*
+ * 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.settings.search;
+
+import android.content.Context;
+import android.provider.SearchIndexableResource;
+
+import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.dashboard.DashboardFragment;
+import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.search.SearchIndexableRaw;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Test class for Settings Search Indexing.
+ * If you change this class, please run robotests to make sure they still pass.
+ */
+public class FakeSettingsFragment extends DashboardFragment {
+
+    public static final String TITLE = "raw title";
+    public static final String SUMMARY_ON = "raw summary on";
+    public static final String SUMMARY_OFF = "raw summary off";
+    public static final String ENTRIES = "rawentries";
+    public static final String KEYWORDS = "keywords, keywordss, keywordsss";
+    public static final String SPACE_KEYWORDS = "keywords keywordss keywordsss";
+    public static final String SCREEN_TITLE = "raw screen title";
+    public static final String CLASS_NAME = FakeSettingsFragment.class.getName();
+    public static final int ICON = 0xff;
+    public static final String INTENT_ACTION = "raw action";
+    public static final String PACKAGE_NAME = "raw target package";
+    public static final String TARGET_CLASS = "raw target class";
+    public static final String TARGET_PACKAGE = "raw package name";
+    public static final String KEY = "raw key";
+    public static final boolean ENABLED = true;
+
+
+    @Override
+    public int getMetricsCategory() {
+        return MetricsProto.MetricsEvent.DISPLAY;
+    }
+
+    @Override
+    protected String getLogTag() {
+        return "";
+    }
+
+    @Override
+    protected int getPreferenceScreenResId() {
+        return com.android.settings.R.xml.display_settings;
+    }
+
+    @Override
+    protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
+        return null;
+    }
+
+    /** Index provider used to expose this fragment in search. */
+    public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+            new BaseSearchIndexProvider() {
+                @Override
+                public List<SearchIndexableRaw> getRawDataToIndex(Context context,
+                        boolean enabled) {
+                    final SearchIndexableRaw data = new SearchIndexableRaw(context);
+                    data.title = TITLE;
+                    data.summaryOn = SUMMARY_ON;
+                    data.summaryOff = SUMMARY_OFF;
+                    data.entries = ENTRIES;
+                    data.keywords = KEYWORDS;
+                    data.screenTitle = SCREEN_TITLE;
+                    data.packageName = PACKAGE_NAME;
+                    data.intentAction = INTENT_ACTION;
+                    data.intentTargetClass = TARGET_CLASS;
+                    data.intentTargetPackage = TARGET_PACKAGE;
+                    data.key = KEY;
+                    data.iconResId = ICON;
+                    data.enabled = ENABLED;
+
+                    final List<SearchIndexableRaw> result = new ArrayList<>(1);
+                    result.add(data);
+                    return result;
+                }
+
+                @Override
+                public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
+                        boolean enabled) {
+                    final ArrayList<SearchIndexableResource> result = new ArrayList<>();
+
+                    final SearchIndexableResource sir = new SearchIndexableResource(context);
+                    sir.xmlResId = com.android.settings.R.xml.display_settings;
+                    result.add(sir);
+                    return result;
+                }
+
+                @Override
+                public List<String> getNonIndexableKeys(Context context) {
+                    List<String> keys = super.getNonIndexableKeys(context);
+                    keys.add("pref_key_1");
+                    keys.add("pref_key_3");
+                    return keys;
+                }
+            };
+}
diff --git a/tests/unit/src/com/android/settings/search/SearchIndexProviderCodeInspector.java b/tests/unit/src/com/android/settings/search/SearchIndexProviderCodeInspector.java
new file mode 100644
index 0000000..bc5b41f
--- /dev/null
+++ b/tests/unit/src/com/android/settings/search/SearchIndexProviderCodeInspector.java
@@ -0,0 +1,204 @@
+/*
+ * 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.settings.search;
+
+import static com.google.common.truth.Truth.assertWithMessage;
+
+import android.provider.SearchIndexableResource;
+import android.util.ArraySet;
+import android.util.Log;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.SettingsPreferenceFragment;
+import com.android.settings.core.codeinspection.CodeInspector;
+import com.android.settings.dashboard.DashboardFragmentSearchIndexProviderInspector;
+import com.android.settingslib.search.Indexable;
+import com.android.settingslib.search.SearchIndexableData;
+import com.android.settingslib.search.SearchIndexableResources;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * {@link CodeInspector} to ensure fragments implement search components correctly.
+ */
+public class SearchIndexProviderCodeInspector extends CodeInspector {
+    private static final String TAG = "SearchCodeInspector";
+
+    private static final String NOT_CONTAINING_PROVIDER_OBJECT_ERROR =
+            "Indexable should have public field "
+                    + DatabaseIndexingUtils.FIELD_NAME_SEARCH_INDEX_DATA_PROVIDER
+                    + " but these are not:\n";
+    private static final String NOT_SHARING_PREF_CONTROLLERS_BETWEEN_FRAG_AND_PROVIDER =
+            "DashboardFragment should share pref controllers with its SearchIndexProvider, but "
+                    + " these are not: \n";
+    private static final String NOT_IN_INDEXABLE_PROVIDER_REGISTRY =
+            "Class containing " + DatabaseIndexingUtils.FIELD_NAME_SEARCH_INDEX_DATA_PROVIDER
+                    + " must be added to " + SearchIndexableResources.class.getName()
+                    + " but these are not: \n";
+    private static final String NOT_PROVIDING_VALID_RESOURCE_ERROR =
+            "SearchIndexableProvider must either provide no resource to index, or valid ones. "
+                    + "But the followings contain resource with xml id = 0\n";
+
+    private final List<String> mNotImplementingIndexProviderExemptList;
+    private final List<String> mNotInSearchIndexableRegistryExemptList;
+    private final List<String> mNotSharingPrefControllersExemptList;
+
+    public SearchIndexProviderCodeInspector(List<Class<?>> classes) {
+        super(classes);
+        mNotImplementingIndexProviderExemptList = new ArrayList<>();
+        mNotInSearchIndexableRegistryExemptList = new ArrayList<>();
+        mNotSharingPrefControllersExemptList = new ArrayList<>();
+        initializeExemptList(mNotImplementingIndexProviderExemptList,
+                "exempt_not_implementing_index_provider");
+        initializeExemptList(mNotInSearchIndexableRegistryExemptList,
+                "exempt_not_in_search_index_provider_registry");
+        initializeExemptList(mNotSharingPrefControllersExemptList,
+                "exempt_not_sharing_pref_controllers_with_search_provider");
+    }
+
+    @Override
+    public void run() {
+        final Set<String> notImplementingIndexProvider = new ArraySet<>();
+        final Set<String> notInSearchProviderRegistry = new ArraySet<>();
+        final Set<String> notSharingPreferenceControllers = new ArraySet<>();
+        final Set<String> notProvidingValidResource = new ArraySet<>();
+        final Set<Class> providerClasses = new ArraySet<>();
+
+        final SearchFeatureProvider provider = new SearchFeatureProviderImpl();
+        for (SearchIndexableData bundle :
+                provider.getSearchIndexableResources().getProviderValues()) {
+            providerClasses.add(bundle.getTargetClass());
+        }
+
+        for (Class clazz : mClasses) {
+            if (!isConcreteSettingsClass(clazz)) {
+                continue;
+            }
+            final String className = clazz.getName();
+            // Skip fragments if it's not SettingsPreferenceFragment.
+            if (!SettingsPreferenceFragment.class.isAssignableFrom(clazz)) {
+                continue;
+            }
+            final boolean hasSearchIndexProvider = hasSearchIndexProvider(clazz);
+            // If it implements Indexable, it must also implement the index provider field.
+            if (!hasSearchIndexProvider) {
+                if (!mNotImplementingIndexProviderExemptList.remove(className)) {
+                    notImplementingIndexProvider.add(className);
+                }
+                continue;
+            }
+            // If it implements index provider field AND it's a DashboardFragment, its fragment and
+            // search provider must share the same set of PreferenceControllers.
+            final boolean isSharingPrefControllers = DashboardFragmentSearchIndexProviderInspector
+                    .isSharingPreferenceControllers(clazz);
+            if (!isSharingPrefControllers) {
+                if (!mNotSharingPrefControllersExemptList.remove(className)) {
+                    notSharingPreferenceControllers.add(className);
+                }
+                continue;
+            }
+            // Must be in SearchProviderRegistry
+            if (!providerClasses.contains(clazz)) {
+                if (!mNotInSearchIndexableRegistryExemptList.remove(className)) {
+                    notInSearchProviderRegistry.add(className);
+                }
+            }
+            // Search provider must either don't provider resource xml, or provide valid ones.
+            if (!hasValidResourceFromProvider(clazz)) {
+                notProvidingValidResource.add(className);
+            }
+        }
+
+        // Build error messages
+        final String indexProviderError = buildErrorMessage(NOT_CONTAINING_PROVIDER_OBJECT_ERROR,
+                notImplementingIndexProvider);
+        final String notSharingPrefControllerError = buildErrorMessage(
+                NOT_SHARING_PREF_CONTROLLERS_BETWEEN_FRAG_AND_PROVIDER,
+                notSharingPreferenceControllers);
+        final String notInProviderRegistryError =
+                buildErrorMessage(NOT_IN_INDEXABLE_PROVIDER_REGISTRY, notInSearchProviderRegistry);
+        final String notProvidingValidResourceError = buildErrorMessage(
+                NOT_PROVIDING_VALID_RESOURCE_ERROR, notProvidingValidResource);
+        assertWithMessage(indexProviderError)
+                .that(notImplementingIndexProvider)
+                .isEmpty();
+        assertWithMessage(notSharingPrefControllerError)
+                .that(notSharingPreferenceControllers)
+                .isEmpty();
+        assertWithMessage(notInProviderRegistryError)
+                .that(notInSearchProviderRegistry)
+                .isEmpty();
+        assertWithMessage(notProvidingValidResourceError)
+                .that(notProvidingValidResource)
+                .isEmpty();
+        assertNoObsoleteInExemptList("exempt_not_implementing_index_provider",
+                mNotImplementingIndexProviderExemptList);
+        assertNoObsoleteInExemptList("exempt_not_in_search_index_provider_registry",
+                mNotInSearchIndexableRegistryExemptList);
+        assertNoObsoleteInExemptList(
+                "exempt_not_sharing_pref_controllers_with_search_provider",
+                mNotSharingPrefControllersExemptList);
+    }
+
+    private boolean hasSearchIndexProvider(Class clazz) {
+        try {
+            final Field f = clazz.getField(
+                    DatabaseIndexingUtils.FIELD_NAME_SEARCH_INDEX_DATA_PROVIDER);
+            return f != null;
+        } catch (NoClassDefFoundError e) {
+            // Cannot find class def, ignore
+            return true;
+        } catch (NoSuchFieldException e) {
+            Log.e(TAG, "error fetching search provider from class " + clazz.getName());
+            return false;
+        }
+    }
+
+    private boolean hasValidResourceFromProvider(Class clazz) {
+        try {
+            final Indexable.SearchIndexProvider provider =
+                    DatabaseIndexingUtils.getSearchIndexProvider(clazz);
+            final List<SearchIndexableResource> resources = provider.getXmlResourcesToIndex(
+                    ApplicationProvider.getApplicationContext(), true /* enabled */);
+            if (resources == null) {
+                // No resource, that's fine.
+                return true;
+            }
+            for (SearchIndexableResource res : resources) {
+                if (res.xmlResId == 0) {
+                    // Invalid resource
+                    return false;
+                }
+            }
+        } catch (Exception e) {
+            // Ignore.
+        }
+        return true;
+    }
+
+    private String buildErrorMessage(String errorSummary, Set<String> errorClasses) {
+        final StringBuilder error = new StringBuilder(errorSummary);
+        for (String c : errorClasses) {
+            error.append(c).append("\n");
+        }
+        return error.toString();
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/security/CredentialManagementAppButtonsControllerTest.java b/tests/unit/src/com/android/settings/security/CredentialManagementAppButtonsControllerTest.java
similarity index 88%
rename from tests/robotests/src/com/android/settings/security/CredentialManagementAppButtonsControllerTest.java
rename to tests/unit/src/com/android/settings/security/CredentialManagementAppButtonsControllerTest.java
index ecc2f2d..bbe9e35 100644
--- a/tests/robotests/src/com/android/settings/security/CredentialManagementAppButtonsControllerTest.java
+++ b/tests/unit/src/com/android/settings/security/CredentialManagementAppButtonsControllerTest.java
@@ -20,15 +20,16 @@
 
 import android.content.Context;
 
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import com.android.settings.core.BasePreferenceController;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class CredentialManagementAppButtonsControllerTest {
 
     private Context mContext;
@@ -38,7 +39,7 @@
 
     @Before
     public void setUp() {
-        mContext = RuntimeEnvironment.application;
+        mContext = ApplicationProvider.getApplicationContext();
         mController = new CredentialManagementAppButtonsController(
                 mContext, PREF_KEY_CREDENTIAL_MANAGEMENT_APP);
     }
diff --git a/tests/robotests/src/com/android/settings/security/CredentialManagementAppHeaderControllerTest.java b/tests/unit/src/com/android/settings/security/CredentialManagementAppHeaderControllerTest.java
similarity index 88%
rename from tests/robotests/src/com/android/settings/security/CredentialManagementAppHeaderControllerTest.java
rename to tests/unit/src/com/android/settings/security/CredentialManagementAppHeaderControllerTest.java
index e77e4c1..35470a7 100644
--- a/tests/robotests/src/com/android/settings/security/CredentialManagementAppHeaderControllerTest.java
+++ b/tests/unit/src/com/android/settings/security/CredentialManagementAppHeaderControllerTest.java
@@ -20,15 +20,16 @@
 
 import android.content.Context;
 
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import com.android.settings.core.BasePreferenceController;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class CredentialManagementAppHeaderControllerTest {
 
     private Context mContext;
@@ -38,7 +39,7 @@
 
     @Before
     public void setUp() {
-        mContext = RuntimeEnvironment.application;
+        mContext = ApplicationProvider.getApplicationContext();
         mController = new CredentialManagementAppHeaderController(
                 mContext, PREF_KEY_CREDENTIAL_MANAGEMENT_APP);
     }
diff --git a/tests/unit/src/com/android/settings/slices/FakeContextOnlyPreferenceController.java b/tests/unit/src/com/android/settings/slices/FakeContextOnlyPreferenceController.java
new file mode 100644
index 0000000..78587a0
--- /dev/null
+++ b/tests/unit/src/com/android/settings/slices/FakeContextOnlyPreferenceController.java
@@ -0,0 +1,34 @@
+/*
+ * 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.settings.slices;
+
+import android.content.Context;
+
+import com.android.settings.core.BasePreferenceController;
+
+public class FakeContextOnlyPreferenceController extends BasePreferenceController {
+
+    public static final String KEY = "fakeController2";
+
+    public FakeContextOnlyPreferenceController(Context context) {
+        super(context, KEY);
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return AVAILABLE;
+    }
+}
diff --git a/tests/unit/src/com/android/settings/slices/FakePreferenceController.java b/tests/unit/src/com/android/settings/slices/FakePreferenceController.java
new file mode 100644
index 0000000..f543893
--- /dev/null
+++ b/tests/unit/src/com/android/settings/slices/FakePreferenceController.java
@@ -0,0 +1,53 @@
+/*
+ * 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.settings.slices;
+
+import android.content.Context;
+
+import com.android.settings.core.BasePreferenceController;
+
+public class FakePreferenceController extends BasePreferenceController {
+
+    public FakePreferenceController(Context context, String preferenceKey) {
+        super(context, preferenceKey);
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return AVAILABLE;
+    }
+
+    @Override
+    public int getSliceType() {
+        return SliceData.SliceType.SLIDER;
+    }
+
+    @Override
+    public boolean isSliceable() {
+        return true;
+    }
+
+    @Override
+    public boolean isPublicSlice() {
+        return true;
+    }
+
+    @Override
+    public boolean useDynamicSliceSummary() {
+        return true;
+    }
+}
diff --git a/tests/unit/src/com/android/settings/slices/SliceControllerInXmlCodeInspector.java b/tests/unit/src/com/android/settings/slices/SliceControllerInXmlCodeInspector.java
new file mode 100644
index 0000000..ce8338c
--- /dev/null
+++ b/tests/unit/src/com/android/settings/slices/SliceControllerInXmlCodeInspector.java
@@ -0,0 +1,174 @@
+/*
+ * 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.settings.slices;
+
+import static com.android.settings.core.PreferenceXmlParserUtils.METADATA_CONTROLLER;
+
+import static com.google.common.truth.Truth.assertThat;
+import static com.google.common.truth.Truth.assertWithMessage;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.provider.SearchIndexableResource;
+import android.text.TextUtils;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.core.PreferenceXmlParserUtils;
+import com.android.settings.core.SliderPreferenceController;
+import com.android.settings.core.TogglePreferenceController;
+import com.android.settings.core.codeinspection.CodeInspector;
+import com.android.settings.overlay.FeatureFactory;
+import com.android.settings.search.SearchFeatureProvider;
+import com.android.settings.search.SearchFeatureProviderImpl;
+import com.android.settings.testutils.FakeFeatureFactory;
+import com.android.settingslib.search.Indexable;
+import com.android.settingslib.search.SearchIndexableData;
+
+import org.xmlpull.v1.XmlPullParserException;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
+public class SliceControllerInXmlCodeInspector extends CodeInspector {
+
+    private static final List<Class> sSliceControllerClasses = Arrays.asList(
+            TogglePreferenceController.class,
+            SliderPreferenceController.class
+    );
+
+    private final List<String> mXmlDeclaredControllers = new ArrayList<>();
+    private final List<String> mExemptedClasses = new ArrayList<>();
+
+    private static final String ERROR_MISSING_CONTROLLER =
+            "The following controllers were expected to be declared by "
+                    + "'settings:controller=Controller_Class_Name' in their corresponding Xml. "
+                    + "If it should not appear in XML, add the controller's classname to "
+                    + "exempt_slice_controller_not_in_xml. Controllers:\n";
+
+    private final Context mContext;
+    private final SearchFeatureProvider mSearchProvider;
+    private final FakeFeatureFactory mFakeFeatureFactory;
+
+    public SliceControllerInXmlCodeInspector(List<Class<?>> classes) throws Exception {
+        super(classes);
+        mContext = ApplicationProvider.getApplicationContext();
+        mSearchProvider = new SearchFeatureProviderImpl();
+        mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
+        mFakeFeatureFactory.searchFeatureProvider = mSearchProvider;
+
+        CodeInspector.initializeExemptList(mExemptedClasses,
+                "exempt_slice_controller_not_in_xml");
+        initDeclaredControllers();
+    }
+
+    private void initDeclaredControllers() throws IOException, XmlPullParserException {
+        final List<Integer> xmlResources = getIndexableXml();
+        for (int xmlResId : xmlResources) {
+            final List<Bundle> metadata = PreferenceXmlParserUtils.extractMetadata(mContext,
+                    xmlResId, PreferenceXmlParserUtils.MetadataFlag.FLAG_NEED_PREF_CONTROLLER);
+            for (Bundle bundle : metadata) {
+                final String controllerClassName = bundle.getString(METADATA_CONTROLLER);
+                if (TextUtils.isEmpty(controllerClassName)) {
+                    continue;
+                }
+                mXmlDeclaredControllers.add(controllerClassName);
+            }
+        }
+        // We definitely have some controllers in xml, so assert not-empty here as a proxy to
+        // make sure the parser didn't fail
+        assertThat(mXmlDeclaredControllers).isNotEmpty();
+    }
+
+    @Override
+    public void run() {
+        final List<String> missingControllersInXml = new ArrayList<>();
+
+        for (Class<?> clazz : mClasses) {
+            if (!isConcreteSettingsClass(clazz)) {
+                // Only care about non-abstract classes.
+                continue;
+            }
+            if (!isInlineSliceClass(clazz)) {
+                // Only care about inline-slice controller classes.
+                continue;
+            }
+
+            if (!mXmlDeclaredControllers.contains(clazz.getName())) {
+                // Class clazz should have been declared in XML (unless allowlisted).
+                missingControllersInXml.add(clazz.getName());
+            }
+        }
+
+        // Removed allowlisted classes
+        missingControllersInXml.removeAll(mExemptedClasses);
+
+        final String missingControllerError =
+                buildErrorMessage(ERROR_MISSING_CONTROLLER, missingControllersInXml);
+
+        assertWithMessage(missingControllerError).that(missingControllersInXml).isEmpty();
+    }
+
+    private boolean isInlineSliceClass(Class clazz) {
+        while (clazz != null) {
+            clazz = clazz.getSuperclass();
+            if (sSliceControllerClasses.contains(clazz)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private String buildErrorMessage(String errorSummary, List<String> errorClasses) {
+        final StringBuilder error = new StringBuilder(errorSummary);
+        for (String c : errorClasses) {
+            error.append(c).append("\n");
+        }
+        return error.toString();
+    }
+
+    private List<Integer> getIndexableXml() {
+        final List<Integer> xmlResSet = new ArrayList<>();
+
+        final Collection<SearchIndexableData> bundles = FeatureFactory.getFactory(
+                mContext).getSearchFeatureProvider().getSearchIndexableResources()
+                .getProviderValues();
+
+        for (SearchIndexableData bundle : bundles) {
+            Indexable.SearchIndexProvider provider = bundle.getSearchIndexProvider();
+
+            if (provider == null) {
+                continue;
+            }
+
+            List<SearchIndexableResource> resources = provider.getXmlResourcesToIndex(mContext,
+                    true);
+
+            if (resources == null) {
+                continue;
+            }
+
+            for (SearchIndexableResource resource : resources) {
+                // Add '0's anyway. It won't break the test.
+                xmlResSet.add(resource.xmlResId);
+            }
+        }
+        return xmlResSet;
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/slices/SliceDataTest.java b/tests/unit/src/com/android/settings/slices/SliceDataTest.java
similarity index 91%
rename from tests/robotests/src/com/android/settings/slices/SliceDataTest.java
rename to tests/unit/src/com/android/settings/slices/SliceDataTest.java
index fa3f8b9..4d18544 100644
--- a/tests/robotests/src/com/android/settings/slices/SliceDataTest.java
+++ b/tests/unit/src/com/android/settings/slices/SliceDataTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 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.
@@ -20,24 +20,25 @@
 
 import android.net.Uri;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class SliceDataTest {
 
-    private final String KEY = "KEY";
-    private final String TITLE = "title";
-    private final String SUMMARY = "summary";
-    private final String SCREEN_TITLE = "screen title";
-    private final String KEYWORDS = "a, b, c";
-    private final String FRAGMENT_NAME = "fragment name";
-    private final int ICON = 1234; // I declare a thumb war
-    private final Uri URI = Uri.parse("content://com.android.settings.slices/test");
-    private final String PREF_CONTROLLER = "com.android.settings.slices.tester";
-    private final int SLICE_TYPE = SliceData.SliceType.SWITCH;
-    private final String UNAVAILABLE_SLICE_SUBTITLE = "subtitleOfUnavailableSlice";
+    private static final String KEY = "KEY";
+    private static final String TITLE = "title";
+    private static final String SUMMARY = "summary";
+    private static final String SCREEN_TITLE = "screen title";
+    private static final String KEYWORDS = "a, b, c";
+    private static final String FRAGMENT_NAME = "fragment name";
+    private static final int ICON = 1234; // I declare a thumb war
+    private static final Uri URI = Uri.parse("content://com.android.settings.slices/test");
+    private static final String PREF_CONTROLLER = "com.android.settings.slices.tester";
+    private static final int SLICE_TYPE = SliceData.SliceType.SWITCH;
+    private static final String UNAVAILABLE_SLICE_SUBTITLE = "subtitleOfUnavailableSlice";
 
     @Test
     public void testBuilder_buildsMatchingObject() {
diff --git a/tests/unit/src/com/android/settings/slices/SliceTestUtils.java b/tests/unit/src/com/android/settings/slices/SliceTestUtils.java
new file mode 100644
index 0000000..1b035cd
--- /dev/null
+++ b/tests/unit/src/com/android/settings/slices/SliceTestUtils.java
@@ -0,0 +1,82 @@
+/*
+ * 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.settings.slices;
+
+import android.content.ContentResolver;
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.sqlite.SQLiteDatabase;
+import android.net.Uri;
+import android.provider.SettingsSlicesContract;
+
+import com.android.settings.testutils.FakeIndexProvider;
+import com.android.settings.testutils.FakeToggleController;
+
+class SliceTestUtils {
+
+    public static final String FAKE_TITLE = "title";
+    public static final String FAKE_SUMMARY = "summary";
+    public static final String FAKE_SCREEN_TITLE = "screen_title";
+    public static final String FAKE_KEYWORDS = "a, b, c";
+    public static final int FAKE_ICON = 1234;
+    public static final String FAKE_FRAGMENT_NAME = FakeIndexProvider.class.getName();
+    public static final String FAKE_CONTROLLER_NAME = FakeToggleController.class.getName();
+
+
+    public static void insertSliceToDb(Context context, String key) {
+        insertSliceToDb(context, key, true /* isPlatformSlice */);
+    }
+
+    public static void insertSliceToDb(Context context, String key, boolean isPlatformSlice) {
+        insertSliceToDb(context, key, isPlatformSlice, null /*customizedUnavailableSliceSubtitle*/);
+    }
+
+    public static void insertSliceToDb(Context context, String key, boolean isPlatformSlice,
+            String customizedUnavailableSliceSubtitle) {
+        insertSliceToDb(context, key, isPlatformSlice, customizedUnavailableSliceSubtitle, false);
+    }
+
+    public static void insertSliceToDb(Context context, String key, boolean isPlatformSlice,
+            String customizedUnavailableSliceSubtitle, boolean isPublicSlice) {
+        final SQLiteDatabase db = SlicesDatabaseHelper.getInstance(context).getWritableDatabase();
+        ContentValues values = new ContentValues();
+        values.put(SlicesDatabaseHelper.IndexColumns.KEY, key);
+        values.put(SlicesDatabaseHelper.IndexColumns.SLICE_URI,
+                new Uri.Builder()
+                        .scheme(ContentResolver.SCHEME_CONTENT)
+                        .authority(isPlatformSlice
+                                ? SettingsSlicesContract.AUTHORITY
+                                : SettingsSliceProvider.SLICE_AUTHORITY)
+                        .appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
+                        .appendPath(key)
+                        .build().toSafeString());
+        values.put(SlicesDatabaseHelper.IndexColumns.TITLE, FAKE_TITLE);
+        values.put(SlicesDatabaseHelper.IndexColumns.SUMMARY, FAKE_SUMMARY);
+        values.put(SlicesDatabaseHelper.IndexColumns.SCREENTITLE, FAKE_SCREEN_TITLE);
+        values.put(SlicesDatabaseHelper.IndexColumns.KEYWORDS, FAKE_KEYWORDS);
+        values.put(SlicesDatabaseHelper.IndexColumns.ICON_RESOURCE, FAKE_ICON);
+        values.put(SlicesDatabaseHelper.IndexColumns.FRAGMENT, FAKE_FRAGMENT_NAME);
+        values.put(SlicesDatabaseHelper.IndexColumns.CONTROLLER, FAKE_CONTROLLER_NAME);
+        values.put(SlicesDatabaseHelper.IndexColumns.SLICE_TYPE, SliceData.SliceType.INTENT);
+        values.put(SlicesDatabaseHelper.IndexColumns.UNAVAILABLE_SLICE_SUBTITLE,
+                customizedUnavailableSliceSubtitle);
+        values.put(SlicesDatabaseHelper.IndexColumns.PUBLIC_SLICE, isPublicSlice);
+
+        db.replaceOrThrow(SlicesDatabaseHelper.Tables.TABLE_SLICES_INDEX, null, values);
+        db.close();
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/slices/SpecialCaseSliceManagerTest.java b/tests/unit/src/com/android/settings/slices/SpecialCaseSliceManagerTest.java
similarity index 88%
rename from tests/robotests/src/com/android/settings/slices/SpecialCaseSliceManagerTest.java
rename to tests/unit/src/com/android/settings/slices/SpecialCaseSliceManagerTest.java
index d483f9e..4fcbd15 100644
--- a/tests/robotests/src/com/android/settings/slices/SpecialCaseSliceManagerTest.java
+++ b/tests/unit/src/com/android/settings/slices/SpecialCaseSliceManagerTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2018 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.
@@ -12,9 +12,7 @@
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- *
  */
-
 package com.android.settings.slices;
 
 import static com.google.common.truth.Truth.assertThat;
@@ -27,24 +25,24 @@
 import android.provider.SettingsSlicesContract;
 
 import androidx.slice.Slice;
+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.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class SpecialCaseSliceManagerTest {
 
-    private final String FAKE_PARAMETER_KEY = "fake_parameter_key";
-    private final String FAKE_PARAMETER_VALUE = "fake_value";
+    private static final String FAKE_PARAMETER_KEY = "fake_parameter_key";
+    private static final String FAKE_PARAMETER_VALUE = "fake_value";
 
     private Context mContext;
 
     @Before
     public void setUp() {
-        mContext = RuntimeEnvironment.application;
+        mContext = ApplicationProvider.getApplicationContext();
         CustomSliceRegistry.sUriToSlice.clear();
         CustomSliceRegistry.sUriToSlice.put(FakeSliceable.URI, FakeSliceable.class);
     }
@@ -113,7 +111,7 @@
 
         static final Slice SLICE = new Slice.Builder(URI).build();
 
-        static boolean backingData = false;
+        static boolean sBackingData = false;
 
         final Context mContext;
 
@@ -133,7 +131,7 @@
 
         @Override
         public void onNotifyChange(Intent intent) {
-            backingData = !backingData;
+            sBackingData = !sBackingData;
         }
 
         @Override
diff --git a/tests/robotests/src/com/android/settings/sound/MediaControlsPreferenceControllerTest.java b/tests/unit/src/com/android/settings/sound/MediaControlsPreferenceControllerTest.java
similarity index 93%
rename from tests/robotests/src/com/android/settings/sound/MediaControlsPreferenceControllerTest.java
rename to tests/unit/src/com/android/settings/sound/MediaControlsPreferenceControllerTest.java
index f281e25..510928d 100644
--- a/tests/robotests/src/com/android/settings/sound/MediaControlsPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/sound/MediaControlsPreferenceControllerTest.java
@@ -26,14 +26,15 @@
 import android.content.Context;
 import android.provider.Settings;
 
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class MediaControlsPreferenceControllerTest {
 
     private static final String KEY = "media_controls_resume_switch";
@@ -46,7 +47,7 @@
 
     @Before
     public void setUp() {
-        mContext = spy(RuntimeEnvironment.application);
+        mContext = spy(ApplicationProvider.getApplicationContext());
         mContentResolver = mContext.getContentResolver();
         mOriginalQs = Settings.Global.getInt(mContentResolver,
                 Settings.Global.SHOW_MEDIA_ON_QUICK_SETTINGS, 1);
diff --git a/tests/unit/src/com/android/settings/testutils/AirplaneModeRule.java b/tests/unit/src/com/android/settings/testutils/AirplaneModeRule.java
new file mode 100644
index 0000000..545f6ad
--- /dev/null
+++ b/tests/unit/src/com/android/settings/testutils/AirplaneModeRule.java
@@ -0,0 +1,76 @@
+/*
+ * 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.settings.testutils;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.UserHandle;
+import android.provider.Settings;
+import android.util.Log;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import org.junit.rules.ExternalResource;
+
+/** A test rule that is used to manager the Airplane Mode resource for testing. */
+public final class AirplaneModeRule extends ExternalResource {
+
+    private static final String TAG = "AirplaneModeRule";
+
+    private Context mContext;
+    private boolean mBackupValue;
+    private boolean mShouldRestore;
+
+    @Override
+    protected void before() throws Throwable {
+        mContext = ApplicationProvider.getApplicationContext();
+    }
+
+    @Override
+    protected void after() {
+        if (mShouldRestore) {
+            Log.d(TAG, "Restore Airplane Mode value:" + mBackupValue);
+            setAirplaneMode(mContext, mBackupValue);
+        }
+    }
+
+    public void setAirplaneMode(boolean enable) {
+        if (!mShouldRestore && isAirplaneModeOn() != enable) {
+            mShouldRestore = true;
+            mBackupValue = isAirplaneModeOn();
+            Log.d(TAG, "Backup Airplane Mode value:" + mBackupValue);
+        }
+        Log.d(TAG, "Set Airplane Mode enable:" + enable);
+        setAirplaneMode(mContext, enable);
+    }
+
+    public boolean isAirplaneModeOn() {
+        return Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.AIRPLANE_MODE_ON, 0) != 0;
+    }
+
+    private static void setAirplaneMode(Context context, boolean enable) {
+        // Change the system setting
+        Settings.Global.putInt(context.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON,
+                enable ? 1 : 0);
+
+        // Post the intent
+        final Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
+        intent.putExtra("state", enable);
+        context.sendBroadcastAsUser(intent, UserHandle.ALL);
+    }
+}
diff --git a/tests/unit/src/com/android/settings/testutils/ApplicationTestUtils.java b/tests/unit/src/com/android/settings/testutils/ApplicationTestUtils.java
new file mode 100644
index 0000000..91f296f
--- /dev/null
+++ b/tests/unit/src/com/android/settings/testutils/ApplicationTestUtils.java
@@ -0,0 +1,45 @@
+/*
+ * 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.settings.testutils;
+
+import android.content.pm.ApplicationInfo;
+
+/**
+ * Helper for mocking installed applications.
+ */
+public class ApplicationTestUtils {
+    /**
+     * Create and populate an {@link android.content.pm.ApplicationInfo} object that describes an
+     * installed app.
+     *
+     * @param uid The app's uid
+     * @param packageName The app's package name.
+     * @param flags Flags describing the app. See {@link android.content.pm.ApplicationInfo#flags}
+     *         for possible values.
+     * @param targetSdkVersion The app's target SDK version
+     *
+     * @see android.content.pm.ApplicationInfo
+     */
+    public static ApplicationInfo buildInfo(int uid, String packageName, int flags,
+            int targetSdkVersion) {
+        final ApplicationInfo info = new ApplicationInfo();
+        info.uid = uid;
+        info.packageName = packageName;
+        info.flags = flags;
+        info.targetSdkVersion = targetSdkVersion;
+        return info;
+    }
+}
diff --git a/tests/unit/src/com/android/settings/testutils/BatteryTestUtils.java b/tests/unit/src/com/android/settings/testutils/BatteryTestUtils.java
new file mode 100644
index 0000000..57bd3f5
--- /dev/null
+++ b/tests/unit/src/com/android/settings/testutils/BatteryTestUtils.java
@@ -0,0 +1,49 @@
+/*
+ * 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.settings.testutils;
+
+import android.content.Intent;
+import android.os.BatteryManager;
+
+public class BatteryTestUtils {
+
+    public static Intent getChargingIntent() {
+        return getCustomBatteryIntent(
+                BatteryManager.BATTERY_PLUGGED_AC,
+                50 /* level */,
+                100 /* scale */,
+                BatteryManager.BATTERY_STATUS_CHARGING);
+    }
+
+    public static Intent getDischargingIntent() {
+        return getCustomBatteryIntent(
+                0 /* plugged */,
+                10 /* level */,
+                100 /* scale */,
+                BatteryManager.BATTERY_STATUS_DISCHARGING);
+    }
+
+    private static Intent getCustomBatteryIntent(int plugged, int level, int scale, int status) {
+        Intent intent = new Intent();
+        intent.putExtra(BatteryManager.EXTRA_PLUGGED, plugged);
+        intent.putExtra(BatteryManager.EXTRA_LEVEL, level);
+        intent.putExtra(BatteryManager.EXTRA_SCALE, scale);
+        intent.putExtra(BatteryManager.EXTRA_STATUS, status);
+
+        return intent;
+    }
+}
diff --git a/tests/unit/src/com/android/settings/testutils/CustomActivity.java b/tests/unit/src/com/android/settings/testutils/CustomActivity.java
new file mode 100644
index 0000000..89cdcfc
--- /dev/null
+++ b/tests/unit/src/com/android/settings/testutils/CustomActivity.java
@@ -0,0 +1,26 @@
+/*
+ * 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.settings.testutils;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.UserHandle;
+
+public class CustomActivity extends Activity {
+    @Override
+    public void startActivityAsUser(Intent intent, UserHandle user) {}
+}
diff --git a/tests/unit/src/com/android/settings/testutils/FakeCopyableController.java b/tests/unit/src/com/android/settings/testutils/FakeCopyableController.java
new file mode 100644
index 0000000..3bdbb54
--- /dev/null
+++ b/tests/unit/src/com/android/settings/testutils/FakeCopyableController.java
@@ -0,0 +1,43 @@
+/*
+ * 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.settings.testutils;
+
+import android.content.Context;
+
+import com.android.settings.core.BasePreferenceController;
+
+public class FakeCopyableController extends BasePreferenceController {
+
+    public FakeCopyableController(Context context, String preferenceKey) {
+        super(context, preferenceKey);
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return AVAILABLE;
+    }
+
+    @Override
+    public boolean isSliceable() {
+        return true;
+    }
+
+    @Override
+    public boolean isCopyableSlice() {
+        return true;
+    }
+}
diff --git a/tests/unit/src/com/android/settings/testutils/FakeFeatureFactory.java b/tests/unit/src/com/android/settings/testutils/FakeFeatureFactory.java
index 47851b9..d20fc12 100644
--- a/tests/unit/src/com/android/settings/testutils/FakeFeatureFactory.java
+++ b/tests/unit/src/com/android/settings/testutils/FakeFeatureFactory.java
@@ -41,6 +41,7 @@
 import com.android.settings.security.SecurityFeatureProvider;
 import com.android.settings.slices.SlicesFeatureProvider;
 import com.android.settings.users.UserFeatureProvider;
+import com.android.settings.wifi.WifiTrackerLibProvider;
 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
 
 /**
@@ -72,6 +73,8 @@
     public SearchFeatureProvider searchFeatureProvider;
     public ContextualCardFeatureProvider mContextualCardFeatureProvider;
 
+    public WifiTrackerLibProvider wifiTrackerLibProvider;
+
     /**
      * Call this in {@code @Before} method of the test class to use fake factory.
      */
@@ -106,6 +109,7 @@
         mBluetoothFeatureProvider = mock(BluetoothFeatureProvider.class);
         mAwareFeatureProvider = mock(AwareFeatureProvider.class);
         mFaceFeatureProvider = mock(FaceFeatureProvider.class);
+        wifiTrackerLibProvider = mock(WifiTrackerLibProvider.class);
     }
 
     @Override
@@ -217,4 +221,9 @@
     public FaceFeatureProvider getFaceFeatureProvider() {
         return mFaceFeatureProvider;
     }
+
+    @Override
+    public WifiTrackerLibProvider getWifiTrackerLibProvider() {
+        return wifiTrackerLibProvider;
+    }
 }
diff --git a/tests/unit/src/com/android/settings/testutils/FakeIndexProvider.java b/tests/unit/src/com/android/settings/testutils/FakeIndexProvider.java
new file mode 100644
index 0000000..5cbfb54
--- /dev/null
+++ b/tests/unit/src/com/android/settings/testutils/FakeIndexProvider.java
@@ -0,0 +1,46 @@
+/*
+ * 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.settings.testutils;
+
+import android.content.Context;
+
+import com.android.settings.R;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settingslib.search.Indexable;
+
+import java.util.List;
+
+public class FakeIndexProvider implements Indexable {
+
+    public static final String KEY = "TestKey";
+
+    /**
+     * The fake SearchIndexProvider. Note that the use of location_settings below implies that tests
+     * using this should be using the res/xml-mcc999/location_settings.xml or
+     * res/xml-mcc998/location_settings.xml. Annotate tests with
+     * {@code @Config(qualifiers = "mcc999")}.
+     */
+    public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+            new BaseSearchIndexProvider(R.xml.location_settings) {
+
+                @Override
+                public List<String> getNonIndexableKeys(Context context) {
+                    List<String> result = super.getNonIndexableKeys(context);
+                    result.add(KEY);
+                    return result;
+                }
+            };
+}
diff --git a/tests/unit/src/com/android/settings/testutils/FakeInvalidSliderController.java b/tests/unit/src/com/android/settings/testutils/FakeInvalidSliderController.java
new file mode 100644
index 0000000..15d214d
--- /dev/null
+++ b/tests/unit/src/com/android/settings/testutils/FakeInvalidSliderController.java
@@ -0,0 +1,31 @@
+/*
+ * 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.settings.testutils;
+
+import android.content.Context;
+
+public class FakeInvalidSliderController extends FakeSliderController {
+
+    public FakeInvalidSliderController(Context context, String key) {
+        super(context, key);
+    }
+
+    @Override
+    public int getMax() {
+        // Return 0 to make it invalid
+        return 0;
+    }
+}
diff --git a/tests/unit/src/com/android/settings/testutils/FakeSliderController.java b/tests/unit/src/com/android/settings/testutils/FakeSliderController.java
new file mode 100644
index 0000000..f8685fc
--- /dev/null
+++ b/tests/unit/src/com/android/settings/testutils/FakeSliderController.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.settings.testutils;
+
+import android.content.Context;
+import android.provider.Settings;
+
+import com.android.settings.core.SliderPreferenceController;
+
+public class FakeSliderController extends SliderPreferenceController {
+
+    public static final String AVAILABILITY_KEY = "fake_slider_availability_key";
+
+    public static final int MAX_VALUE = 9;
+
+    private static final String SETTING_KEY = "fake_slider_key";
+
+    public FakeSliderController(Context context, String key) {
+        super(context, key);
+    }
+
+    @Override
+    public int getSliderPosition() {
+        return Settings.System.getInt(mContext.getContentResolver(), SETTING_KEY, 0);
+    }
+
+    @Override
+    public boolean setSliderPosition(int position) {
+        return Settings.System.putInt(mContext.getContentResolver(), SETTING_KEY, position);
+    }
+
+    @Override
+    public int getMax() {
+        return MAX_VALUE;
+    }
+
+    @Override
+    public int getMin() {
+        return 0;
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return Settings.Global.getInt(mContext.getContentResolver(), AVAILABILITY_KEY, AVAILABLE);
+    }
+
+    @Override
+    public boolean isSliceable() {
+        return true;
+    }
+}
diff --git a/tests/unit/src/com/android/settings/testutils/FakeToggleController.java b/tests/unit/src/com/android/settings/testutils/FakeToggleController.java
new file mode 100644
index 0000000..9eda8b6
--- /dev/null
+++ b/tests/unit/src/com/android/settings/testutils/FakeToggleController.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.settings.testutils;
+
+import android.content.Context;
+import android.content.IntentFilter;
+import android.net.Uri;
+import android.net.wifi.WifiManager;
+import android.provider.Settings;
+
+import com.android.settings.core.TogglePreferenceController;
+import com.android.settings.slices.SliceBackgroundWorker;
+
+public class FakeToggleController extends TogglePreferenceController {
+
+    public static final String AVAILABILITY_KEY = "fake_toggle_availability_key";
+
+    public static final IntentFilter INTENT_FILTER = new IntentFilter(
+            WifiManager.WIFI_AP_STATE_CHANGED_ACTION);
+
+    private static final String SETTING_KEY = "toggle_key";
+
+    private static final int ON = 1;
+    private static final int OFF = 0;
+
+    private boolean mIsAsyncUpdate = false;
+
+    public FakeToggleController(Context context, String preferenceKey) {
+        super(context, preferenceKey);
+    }
+
+    @Override
+    public boolean isChecked() {
+        return Settings.System.getInt(mContext.getContentResolver(),
+                SETTING_KEY, OFF) == ON;
+    }
+
+    @Override
+    public boolean setChecked(boolean isChecked) {
+        return Settings.System.putInt(mContext.getContentResolver(), SETTING_KEY,
+                isChecked ? ON : OFF);
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return Settings.Global.getInt(mContext.getContentResolver(),
+                AVAILABILITY_KEY, AVAILABLE);
+    }
+
+    @Override
+    public IntentFilter getIntentFilter() {
+        return INTENT_FILTER;
+    }
+
+    @Override
+    public boolean isSliceable() {
+        return true;
+    }
+
+    @Override
+    public Class<? extends SliceBackgroundWorker> getBackgroundWorkerClass() {
+        return TestWorker.class;
+    }
+
+    @Override
+    public boolean hasAsyncUpdate() {
+        return mIsAsyncUpdate;
+    }
+
+    public void setAsyncUpdate(boolean isAsyncUpdate) {
+        mIsAsyncUpdate = isAsyncUpdate;
+    }
+
+    public static class TestWorker extends SliceBackgroundWorker<Void> {
+
+        public TestWorker(Context context, Uri uri) {
+            super(context, uri);
+        }
+
+        @Override
+        protected void onSlicePinned() {
+        }
+
+        @Override
+        protected void onSliceUnpinned() {
+        }
+
+        @Override
+        public void close() {
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/settings/testutils/FakeUnavailablePreferenceController.java b/tests/unit/src/com/android/settings/testutils/FakeUnavailablePreferenceController.java
new file mode 100644
index 0000000..97379e3
--- /dev/null
+++ b/tests/unit/src/com/android/settings/testutils/FakeUnavailablePreferenceController.java
@@ -0,0 +1,40 @@
+/*
+ * 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.settings.testutils;
+
+import android.content.Context;
+import android.provider.Settings;
+
+import com.android.settings.core.BasePreferenceController;
+
+public class FakeUnavailablePreferenceController extends BasePreferenceController {
+
+    public static final String AVAILABILITY_KEY = "fake_availability_key";
+
+    public FakeUnavailablePreferenceController(Context context) {
+        super(context, "key");
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return Settings.Global.getInt(mContext.getContentResolver(), AVAILABILITY_KEY, 0);
+    }
+
+    @Override
+    public boolean isSliceable() {
+        return true;
+    }
+}
diff --git a/tests/unit/src/com/android/settings/testutils/ResolveInfoBuilder.java b/tests/unit/src/com/android/settings/testutils/ResolveInfoBuilder.java
new file mode 100644
index 0000000..5eaf2a4
--- /dev/null
+++ b/tests/unit/src/com/android/settings/testutils/ResolveInfoBuilder.java
@@ -0,0 +1,71 @@
+/*
+ * 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.settings.testutils;
+
+import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.ProviderInfo;
+import android.content.pm.ResolveInfo;
+
+import com.google.common.base.Preconditions;
+
+/**
+ * Helper for building {@link ResolveInfo}s to be used in Robolectric tests.
+ *
+ * <p>The resulting {@link PackageInfo}s should typically be added to {@link
+ * org.robolectric.shadows.ShadowPackageManager#addResolveInfoForIntent(Intent, ResolveInfo)}.
+ */
+public final class ResolveInfoBuilder {
+
+    private final String mPackageName;
+    private ActivityInfo mActivityInfo;
+    private ProviderInfo mProviderInfo;
+
+    public ResolveInfoBuilder(String packageName) {
+        this.mPackageName = Preconditions.checkNotNull(packageName);
+    }
+
+    public ResolveInfoBuilder setActivity(String packageName, String className) {
+        mActivityInfo = new ActivityInfo();
+        mActivityInfo.packageName = packageName;
+        mActivityInfo.name = className;
+        return this;
+    }
+
+    public ResolveInfoBuilder setProvider(
+            String packageName, String className, String authority, boolean isSystemApp) {
+        mProviderInfo = new ProviderInfo();
+        mProviderInfo.authority = authority;
+        mProviderInfo.applicationInfo = new ApplicationInfo();
+        if (isSystemApp) {
+            mProviderInfo.applicationInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+        }
+        mProviderInfo.packageName = mPackageName;
+        mProviderInfo.applicationInfo.packageName  = mPackageName;
+        mProviderInfo.name = className;
+        return this;
+    }
+
+    public ResolveInfo build() {
+        ResolveInfo info = new ResolveInfo();
+        info.activityInfo = mActivityInfo;
+        info.resolvePackageName = mPackageName;
+        info.providerInfo = mProviderInfo;
+        return info;
+    }
+}
diff --git a/tests/unit/src/com/android/settings/testutils/ResourcesUtils.java b/tests/unit/src/com/android/settings/testutils/ResourcesUtils.java
index 636954d..8ef310d 100644
--- a/tests/unit/src/com/android/settings/testutils/ResourcesUtils.java
+++ b/tests/unit/src/com/android/settings/testutils/ResourcesUtils.java
@@ -17,16 +17,44 @@
 
 import android.content.Context;
 
+/**
+ * Test util to provide the correct resources.
+ */
 public final class ResourcesUtils {
+    /**
+     * Return a resource identifier for the given resource name.
+     * @param context Context to use.
+     * @param type Optional default resource type to find, if "type/" is not included in the name.
+     *             Can be null to require an explicit type.
+     * @param name The name of the desired resource.
+     * @return The associated resource identifier. Returns 0 if no such resource was found.
+     * (0 is not a valid resource ID.)
+     */
     public static int getResourcesId(Context context, String type, String name) {
         return context.getResources().getIdentifier(name, type, context.getPackageName());
     }
 
+    /**
+     * Returns a localized string from the application's package's default string table.
+     * @param context Context to use.
+     * @param name The name of the desired resource.
+     * @return The string data associated with the resource, stripped of styled text information.
+     */
     public static String getResourcesString(Context context, String name) {
         return context.getResources().getString(getResourcesId(context, "string", name));
     }
 
-    public static String getResourcesString(Context context, String name, Object value) {
+    /**
+     * Return the string value associated with a particular neame of resource,
+     * substituting the format arguments as defined in {@link java.util.Formatter}
+     * and {@link java.lang.String#format}. It will be stripped of any styled text
+     * information.
+     * @param context Context to use.
+     * @param name The name of the desired resource.
+     * @param value The format arguments that will be used for substitution.
+     * @return The string data associated with the resource, stripped of styled text information.
+     */
+    public static String getResourcesString(Context context, String name, Object... value) {
         return context.getResources().getString(getResourcesId(context, "string", name), value);
     }
 }
diff --git a/tests/unit/src/com/android/settings/testutils/SliceTester.java b/tests/unit/src/com/android/settings/testutils/SliceTester.java
new file mode 100644
index 0000000..be13e13
--- /dev/null
+++ b/tests/unit/src/com/android/settings/testutils/SliceTester.java
@@ -0,0 +1,324 @@
+/*
+ * 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.settings.testutils;
+
+import static android.app.slice.Slice.HINT_TITLE;
+import static android.app.slice.Slice.SUBTYPE_COLOR;
+import static android.app.slice.SliceItem.FORMAT_IMAGE;
+import static android.app.slice.SliceItem.FORMAT_INT;
+import static android.app.slice.SliceItem.FORMAT_TEXT;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.app.PendingIntent;
+import android.content.Context;
+import android.text.TextUtils;
+
+import androidx.core.graphics.drawable.IconCompat;
+import androidx.slice.Slice;
+import androidx.slice.SliceItem;
+import androidx.slice.SliceMetadata;
+import androidx.slice.builders.ListBuilder;
+import androidx.slice.core.SliceAction;
+import androidx.slice.core.SliceQuery;
+import androidx.slice.widget.EventInfo;
+
+import com.android.settings.Utils;
+import com.android.settings.slices.SettingsSliceProvider;
+import com.android.settings.slices.SliceBuilderUtils;
+import com.android.settings.slices.SliceData;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * Testing utility class to verify the contents of the different Settings Slices.
+ *
+ * TODO (77712944) check Summary, range (metadata.getRange()), toggle icons.
+ */
+public class SliceTester {
+
+    /**
+     * Test the contents of an intent based slice, including:
+     * - No toggles
+     * - Correct intent
+     * - Correct title
+     * - Correct keywords
+     * - TTL
+     * - Color
+     */
+    public static void testSettingsIntentSlice(Context context, Slice slice, SliceData sliceData) {
+        final SliceMetadata metadata = SliceMetadata.from(context, slice);
+
+        final long sliceTTL = metadata.getExpiry();
+        assertThat(sliceTTL).isEqualTo(ListBuilder.INFINITY);
+
+        final SliceItem colorItem = SliceQuery.findSubtype(slice, FORMAT_INT, SUBTYPE_COLOR);
+        final int color = colorItem.getInt();
+        assertThat(color).isEqualTo(Utils.getColorAccentDefaultColor(context));
+
+        final List<SliceAction> toggles = metadata.getToggles();
+        assertThat(toggles).isEmpty();
+
+        final PendingIntent primaryPendingIntent = metadata.getPrimaryAction().getAction();
+        assertThat(primaryPendingIntent).isEqualTo(
+                SliceBuilderUtils.getContentPendingIntent(context, sliceData));
+
+        assertThat(metadata.getTitle()).isEqualTo(sliceData.getTitle());
+
+        assertKeywords(metadata, sliceData);
+    }
+
+    /**
+     * Test the contents of an toggle based slice, including:
+     * - Contains one toggle
+     * - Correct toggle intent
+     * - Correct content intent
+     * - Correct title
+     * - Correct keywords
+     * - TTL
+     * - Color
+     */
+    public static void testSettingsToggleSlice(Context context, Slice slice, SliceData sliceData) {
+        final SliceMetadata metadata = SliceMetadata.from(context, slice);
+
+        final SliceItem colorItem = SliceQuery.findSubtype(slice, FORMAT_INT, SUBTYPE_COLOR);
+        final int color = colorItem.getInt();
+        assertThat(color).isEqualTo(Utils.getColorAccentDefaultColor(context));
+
+        final List<SliceAction> toggles = metadata.getToggles();
+        assertThat(toggles).hasSize(1);
+
+        final long sliceTTL = metadata.getExpiry();
+        assertThat(sliceTTL).isEqualTo(ListBuilder.INFINITY);
+
+        final SliceAction mainToggleAction = toggles.get(0);
+
+        assertThat(mainToggleAction.getIcon()).isNull();
+
+        // Check intent in Toggle Action
+        final PendingIntent togglePendingIntent = mainToggleAction.getAction();
+        assertThat(togglePendingIntent).isEqualTo(SliceBuilderUtils.getActionIntent(context,
+                SettingsSliceProvider.ACTION_TOGGLE_CHANGED, sliceData));
+
+        // Check primary intent
+        final PendingIntent primaryPendingIntent = metadata.getPrimaryAction().getAction();
+        assertThat(primaryPendingIntent).isEqualTo(
+                SliceBuilderUtils.getContentPendingIntent(context, sliceData));
+
+        assertThat(metadata.getTitle()).isEqualTo(sliceData.getTitle());
+
+        assertKeywords(metadata, sliceData);
+    }
+
+    /**
+     * Test the contents of an slider based slice, including:
+     * - No intent
+     * - Correct title
+     * - Correct keywords
+     * - TTL
+     * - Color
+     */
+    public static void testSettingsSliderSlice(Context context, Slice slice, SliceData sliceData) {
+        final SliceMetadata metadata = SliceMetadata.from(context, slice);
+        final SliceAction primaryAction = metadata.getPrimaryAction();
+
+        final IconCompat icon = primaryAction.getIcon();
+        if (icon == null) {
+            final SliceItem colorItem = SliceQuery.findSubtype(slice, FORMAT_INT, SUBTYPE_COLOR);
+            final int color = colorItem.getInt();
+            assertThat(color).isEqualTo(Utils.getColorAccentDefaultColor(context));
+
+        } else {
+            final IconCompat expectedIcon = IconCompat.createWithResource(context,
+                    sliceData.getIconResource());
+            assertThat(expectedIcon.toString()).isEqualTo(icon.toString());
+        }
+
+        final long sliceTTL = metadata.getExpiry();
+        assertThat(sliceTTL).isEqualTo(ListBuilder.INFINITY);
+
+        final int headerType = metadata.getHeaderType();
+        assertThat(headerType).isEqualTo(EventInfo.ROW_TYPE_SLIDER);
+
+        // Check primary intent
+        final PendingIntent primaryPendingIntent = primaryAction.getAction();
+        assertThat(primaryPendingIntent).isEqualTo(
+                SliceBuilderUtils.getContentPendingIntent(context, sliceData));
+
+        assertThat(metadata.getTitle()).isEqualTo(sliceData.getTitle());
+
+        assertKeywords(metadata, sliceData);
+    }
+
+    /**
+     * Test the copyable slice, including:
+     * - No intent
+     * - Correct title
+     * - Correct intent
+     * - Correct keywords
+     * - TTL
+     * - Color
+     */
+    public static void testSettingsCopyableSlice(Context context, Slice slice,
+            SliceData sliceData) {
+        final SliceMetadata metadata = SliceMetadata.from(context, slice);
+
+        final SliceItem colorItem = SliceQuery.findSubtype(slice, FORMAT_INT, SUBTYPE_COLOR);
+        final int color = colorItem.getInt();
+        assertThat(color).isEqualTo(Utils.getColorAccentDefaultColor(context));
+
+        final SliceAction primaryAction = metadata.getPrimaryAction();
+
+        final IconCompat expectedIcon = IconCompat.createWithResource(context,
+                sliceData.getIconResource());
+        assertThat(expectedIcon.toString()).isEqualTo(primaryAction.getIcon().toString());
+
+        final long sliceTTL = metadata.getExpiry();
+        assertThat(sliceTTL).isEqualTo(ListBuilder.INFINITY);
+
+        // Check primary intent
+        final PendingIntent primaryPendingIntent = primaryAction.getAction();
+        assertThat(primaryPendingIntent).isEqualTo(
+                SliceBuilderUtils.getContentPendingIntent(context, sliceData));
+
+        assertThat(metadata.getTitle()).isEqualTo(sliceData.getTitle());
+
+        assertKeywords(metadata, sliceData);
+    }
+
+    /**
+     * Test the contents of an unavailable slice, including:
+     * - No toggles
+     * - Correct title
+     * - Correct intent
+     * - Correct keywords
+     * - Color
+     * - TTL
+     */
+    public static void testSettingsUnavailableSlice(Context context, Slice slice,
+            SliceData sliceData) {
+        final SliceMetadata metadata = SliceMetadata.from(context, slice);
+
+        final long sliceTTL = metadata.getExpiry();
+        assertThat(sliceTTL).isEqualTo(ListBuilder.INFINITY);
+
+        final SliceItem colorItem = SliceQuery.findSubtype(slice, FORMAT_INT, SUBTYPE_COLOR);
+        final int color = colorItem.getInt();
+        assertThat(color).isEqualTo(Utils.getColorAccentDefaultColor(context));
+
+        final List<SliceAction> toggles = metadata.getToggles();
+        assertThat(toggles).isEmpty();
+
+        final PendingIntent primaryPendingIntent = metadata.getPrimaryAction().getAction();
+        assertThat(primaryPendingIntent).isEqualTo(SliceBuilderUtils.getContentPendingIntent(
+                context, sliceData));
+
+        assertThat(metadata.getTitle()).isEqualTo(sliceData.getTitle());
+
+        assertKeywords(metadata, sliceData);
+    }
+
+    /**
+     * Assert any slice item contains title.
+     *
+     * @param sliceItems All slice items of a Slice.
+     * @param title Title for asserting.
+     */
+    public static void assertAnySliceItemContainsTitle(List<SliceItem> sliceItems, String title) {
+        assertThat(hasText(sliceItems, title, HINT_TITLE)).isTrue();
+    }
+
+    /**
+     * Assert any slice item contains subtitle.
+     *
+     * @param sliceItems All slice items of a Slice.
+     * @param subtitle Subtitle for asserting.
+     */
+    public static void assertAnySliceItemContainsSubtitle(List<SliceItem> sliceItems,
+            String subtitle) {
+        // Subtitle has no hints
+        assertThat(hasText(sliceItems, subtitle, null /* hints */)).isTrue();
+    }
+
+    /**
+     * Assert no slice item contains subtitle.
+     *
+     * @param sliceItems All slice items of a Slice.
+     * @param subtitle Subtitle for asserting.
+     */
+    public static void assertNoSliceItemContainsSubtitle(List<SliceItem> sliceItems,
+            String subtitle) {
+        // Subtitle has no hints
+        assertThat(hasText(sliceItems, subtitle, null /* hints */)).isFalse();
+    }
+
+    private static boolean hasText(List<SliceItem> sliceItems, String text, String hints) {
+        boolean hasText = false;
+        for (SliceItem item : sliceItems) {
+            List<SliceItem> textItems = SliceQuery.findAll(item, FORMAT_TEXT, hints,
+                    null /* non-hints */);
+            if (textItems == null) {
+                continue;
+            }
+
+            for (SliceItem textItem : textItems) {
+                if (TextUtils.equals(textItem.getText(), text)) {
+                    hasText = true;
+                    break;
+                }
+            }
+        }
+        return hasText;
+    }
+
+    /**
+     * Assert any slice item contains icon.
+     *
+     * @param sliceItems All slice items of a Slice.
+     * @param icon Icon for asserting.
+     */
+    public static void assertAnySliceItemContainsIcon(List<SliceItem> sliceItems, IconCompat icon) {
+        boolean hasIcon = false;
+        for (SliceItem item : sliceItems) {
+            List<SliceItem> iconItems = SliceQuery.findAll(item, FORMAT_IMAGE,
+                    (String) null /* hints */, null /* non-hints */);
+            if (iconItems == null) {
+                continue;
+            }
+
+            for (SliceItem iconItem : iconItems) {
+                if (icon.toString().equals(iconItem.getIcon().toString())) {
+                    hasIcon = true;
+                    break;
+                }
+            }
+        }
+        assertThat(hasIcon).isTrue();
+    }
+
+    private static void assertKeywords(SliceMetadata metadata, SliceData data) {
+        final List<String> keywords = metadata.getSliceKeywords();
+        final Set<String> expectedKeywords = Arrays.stream(data.getKeywords().split(","))
+                .map(s -> s = s.trim())
+                .collect(Collectors.toSet());
+        expectedKeywords.add(data.getTitle());
+        expectedKeywords.add(data.getScreenTitle().toString());
+        assertThat(keywords).containsExactlyElementsIn(expectedKeywords);
+    }
+}
diff --git a/tests/unit/src/com/android/settings/testutils/XmlTestUtils.java b/tests/unit/src/com/android/settings/testutils/XmlTestUtils.java
new file mode 100644
index 0000000..5640bee
--- /dev/null
+++ b/tests/unit/src/com/android/settings/testutils/XmlTestUtils.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.settings.testutils;
+
+import static com.android.settings.core.PreferenceXmlParserUtils.METADATA_KEY;
+import static com.android.settings.core.PreferenceXmlParserUtils.MetadataFlag
+        .FLAG_INCLUDE_PREF_SCREEN;
+import static com.android.settings.core.PreferenceXmlParserUtils.MetadataFlag.FLAG_NEED_KEY;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.text.TextUtils;
+
+import com.android.settings.core.PreferenceXmlParserUtils;
+
+import org.xmlpull.v1.XmlPullParserException;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Util class for parsing XML
+ */
+public class XmlTestUtils {
+
+    /**
+     * Parses a preference screen's xml, collects and returns all keys used by preferences
+     * on the screen.
+     *
+     * @param context of the preference screen.
+     * @param xmlId   of the Preference Xml to be parsed.
+     * @return List of all keys in the preference Xml
+     */
+    public static List<String> getKeysFromPreferenceXml(Context context, int xmlId) {
+        final List<String> keys = new ArrayList<>();
+        try {
+            List<Bundle> metadata = PreferenceXmlParserUtils.extractMetadata(context, xmlId,
+                    FLAG_NEED_KEY | FLAG_INCLUDE_PREF_SCREEN);
+            for (Bundle bundle : metadata) {
+                final String key = bundle.getString(METADATA_KEY);
+                if (!TextUtils.isEmpty(key)) {
+                    keys.add(key);
+                }
+            }
+        } catch (java.io.IOException | XmlPullParserException e) {
+            return null;
+        }
+
+        return keys;
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/users/MultiUserTopIntroPreferenceControllerTest.java b/tests/unit/src/com/android/settings/users/MultiUserTopIntroPreferenceControllerTest.java
similarity index 86%
rename from tests/robotests/src/com/android/settings/users/MultiUserTopIntroPreferenceControllerTest.java
rename to tests/unit/src/com/android/settings/users/MultiUserTopIntroPreferenceControllerTest.java
index bc0b060..624750c 100644
--- a/tests/robotests/src/com/android/settings/users/MultiUserTopIntroPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/users/MultiUserTopIntroPreferenceControllerTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2018 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.
@@ -23,15 +23,15 @@
 
 import android.content.Context;
 
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 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;
 
-@RunWith(RobolectricTestRunner.class)
-@Ignore
+@RunWith(AndroidJUnit4.class)
 public class MultiUserTopIntroPreferenceControllerTest {
 
     private Context mContext;
@@ -39,10 +39,11 @@
 
     @Before
     public void setUp() {
-        mContext = RuntimeEnvironment.application;
+        mContext = ApplicationProvider.getApplicationContext();
         mController = new MultiUserTopIntroPreferenceController(mContext, "top_info");
     }
 
+    @Ignore
     @Test
     public void getAvailabilityStatus_multiUserOff_shouldReturnEnabled() {
         mController.mUserCaps.mEnabled = true;
@@ -51,6 +52,7 @@
         assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE_UNSEARCHABLE);
     }
 
+    @Ignore
     @Test
     public void getAvailabilityStatus_multiUserOn_shouldReturnDisabled() {
         mController.mUserCaps.mEnabled = true;
diff --git a/tests/robotests/src/com/android/settings/utils/LocalClassLoaderContextThemeWrapperTest.java b/tests/unit/src/com/android/settings/utils/LocalClassLoaderContextThemeWrapperTest.java
similarity index 81%
rename from tests/robotests/src/com/android/settings/utils/LocalClassLoaderContextThemeWrapperTest.java
rename to tests/unit/src/com/android/settings/utils/LocalClassLoaderContextThemeWrapperTest.java
index 5a17622..3bafd50 100644
--- a/tests/robotests/src/com/android/settings/utils/LocalClassLoaderContextThemeWrapperTest.java
+++ b/tests/unit/src/com/android/settings/utils/LocalClassLoaderContextThemeWrapperTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016 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.
@@ -20,19 +20,20 @@
 
 import android.content.Context;
 
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class LocalClassLoaderContextThemeWrapperTest {
 
     private LocalClassLoaderContextThemeWrapper mContextThemeWrapper;
 
     @Test
     public void getClassLoader_shouldUseLocalClassLoader() {
-        final Context context = RuntimeEnvironment.application;
+        final Context context = ApplicationProvider.getApplicationContext();
         final Class clazz = LocalClassLoaderContextThemeWrapperTest.class;
         mContextThemeWrapper = new LocalClassLoaderContextThemeWrapper(clazz, context, 0);
 
diff --git a/tests/robotests/src/com/android/settings/vpn2/VpnUtilsTest.java b/tests/unit/src/com/android/settings/vpn2/VpnUtilsTest.java
similarity index 89%
rename from tests/robotests/src/com/android/settings/vpn2/VpnUtilsTest.java
rename to tests/unit/src/com/android/settings/vpn2/VpnUtilsTest.java
index 7856b06..f214764 100644
--- a/tests/robotests/src/com/android/settings/vpn2/VpnUtilsTest.java
+++ b/tests/unit/src/com/android/settings/vpn2/VpnUtilsTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 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.
@@ -23,11 +23,12 @@
 
 import android.net.ConnectivityManager;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public final class VpnUtilsTest {
     @Test
     public void testIsAlwaysOnVpnSet() {
diff --git a/tests/robotests/src/com/android/settings/widget/DefaultIndicatorSeekBarTest.java b/tests/unit/src/com/android/settings/widget/DefaultIndicatorSeekBarTest.java
similarity index 79%
rename from tests/robotests/src/com/android/settings/widget/DefaultIndicatorSeekBarTest.java
rename to tests/unit/src/com/android/settings/widget/DefaultIndicatorSeekBarTest.java
index ac95afa..777d984 100644
--- a/tests/robotests/src/com/android/settings/widget/DefaultIndicatorSeekBarTest.java
+++ b/tests/unit/src/com/android/settings/widget/DefaultIndicatorSeekBarTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 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.
@@ -18,21 +18,23 @@
 
 import static org.junit.Assert.assertEquals;
 
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 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;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class DefaultIndicatorSeekBarTest {
 
     private DefaultIndicatorSeekBar mDefaultIndicatorSeekBar;
 
     @Before
     public void setUp() {
-        mDefaultIndicatorSeekBar = new DefaultIndicatorSeekBar(RuntimeEnvironment.application);
+        mDefaultIndicatorSeekBar = new DefaultIndicatorSeekBar(
+                ApplicationProvider.getApplicationContext());
         mDefaultIndicatorSeekBar.setMax(100);
     }
 
diff --git a/tests/unit/src/com/android/settings/widget/DonutViewTest.java b/tests/unit/src/com/android/settings/widget/DonutViewTest.java
new file mode 100644
index 0000000..ad02d0e
--- /dev/null
+++ b/tests/unit/src/com/android/settings/widget/DonutViewTest.java
@@ -0,0 +1,34 @@
+/*
+ * 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.settings.widget;
+
+import android.content.Context;
+
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public class DonutViewTest {
+    @Test
+    public void getPercentageStringSpannable_doesntCrashForMissingPercentage() {
+        Context context = ApplicationProvider.getApplicationContext();
+
+        DonutView.getPercentageStringSpannable(context.getResources(), "50%", "h");
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/widget/PreferenceCategoryControllerTest.java b/tests/unit/src/com/android/settings/widget/PreferenceCategoryControllerTest.java
similarity index 89%
rename from tests/robotests/src/com/android/settings/widget/PreferenceCategoryControllerTest.java
rename to tests/unit/src/com/android/settings/widget/PreferenceCategoryControllerTest.java
index 59cd13d..5e730f9 100644
--- a/tests/robotests/src/com/android/settings/widget/PreferenceCategoryControllerTest.java
+++ b/tests/unit/src/com/android/settings/widget/PreferenceCategoryControllerTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 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.
@@ -23,18 +23,19 @@
 
 import android.content.Context;
 
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import com.android.settingslib.core.AbstractPreferenceController;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
 import java.util.ArrayList;
 import java.util.List;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class PreferenceCategoryControllerTest {
 
     private Context mContext;
@@ -43,7 +44,7 @@
 
     @Before
     public void setUp() {
-        mContext = RuntimeEnvironment.application;
+        mContext = ApplicationProvider.getApplicationContext();
         mChildren = new ArrayList<>();
         mController = new PreferenceCategoryController(mContext, "pref_key").setChildren(mChildren);
     }
diff --git a/tests/robotests/src/com/android/settings/widget/RingProgressBarTest.java b/tests/unit/src/com/android/settings/widget/RingProgressBarTest.java
similarity index 87%
rename from tests/robotests/src/com/android/settings/widget/RingProgressBarTest.java
rename to tests/unit/src/com/android/settings/widget/RingProgressBarTest.java
index 1d76f1b..f857e8f 100644
--- a/tests/robotests/src/com/android/settings/widget/RingProgressBarTest.java
+++ b/tests/unit/src/com/android/settings/widget/RingProgressBarTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016 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.
@@ -22,16 +22,17 @@
 import android.content.Context;
 import android.view.View.MeasureSpec;
 
+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.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class RingProgressBarTest {
 
-    private Context mContext = RuntimeEnvironment.application;
+    private Context mContext = ApplicationProvider.getApplicationContext();
 
     private RingProgressBar mProgressBar;
 
diff --git a/tests/robotests/src/com/android/settings/widget/RtlCompatibleViewPagerTest.java b/tests/unit/src/com/android/settings/widget/RtlCompatibleViewPagerTest.java
similarity index 91%
rename from tests/robotests/src/com/android/settings/widget/RtlCompatibleViewPagerTest.java
rename to tests/unit/src/com/android/settings/widget/RtlCompatibleViewPagerTest.java
index 8cb0539..cc53eee 100644
--- a/tests/robotests/src/com/android/settings/widget/RtlCompatibleViewPagerTest.java
+++ b/tests/unit/src/com/android/settings/widget/RtlCompatibleViewPagerTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016 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.
@@ -13,7 +13,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package com.android.settings.widget;
 
 import static com.google.common.truth.Truth.assertThat;
@@ -23,17 +22,17 @@
 import android.view.View;
 import android.view.ViewGroup;
 
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.viewpager.widget.PagerAdapter;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
 import java.util.Locale;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class RtlCompatibleViewPagerTest {
 
     private Locale mLocaleEn;
@@ -42,7 +41,7 @@
 
     @Before
     public void setUp() {
-        mViewPager = new RtlCompatibleViewPager(RuntimeEnvironment.application);
+        mViewPager = new RtlCompatibleViewPager(ApplicationProvider.getApplicationContext());
         mViewPager.setAdapter(new ViewPagerAdapter());
         mLocaleEn = new Locale("en");
         mLocaleHe = new Locale("he");
diff --git a/tests/unit/src/com/android/settings/wifi/WifiPickerTrackerHelperTest.java b/tests/unit/src/com/android/settings/wifi/WifiPickerTrackerHelperTest.java
new file mode 100644
index 0000000..851b115
--- /dev/null
+++ b/tests/unit/src/com/android/settings/wifi/WifiPickerTrackerHelperTest.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.wifi;
+
+import static com.google.common.truth.Truth.assertThat;
+
+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.os.HandlerThread;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.wifitrackerlib.MergedCarrierEntry;
+import com.android.wifitrackerlib.WifiEntry;
+import com.android.wifitrackerlib.WifiPickerTracker;
+
+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;
+
+@RunWith(AndroidJUnit4.class)
+public class WifiPickerTrackerHelperTest {
+
+    @Rule
+    public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+    @Mock
+    public WifiPickerTracker mWifiPickerTracker;
+    @Mock
+    public MergedCarrierEntry mMergedCarrierEntry;
+    @Mock
+    public WifiEntry.ConnectCallback mConnectCallback;
+
+    private WifiPickerTrackerHelper mWifiPickerTrackerHelper;
+
+    @Before
+    public void setUp() {
+        mWifiPickerTrackerHelper = new WifiPickerTrackerHelper(mock(Lifecycle.class),
+                ApplicationProvider.getApplicationContext(), null);
+    }
+
+    @Test
+    public void getWifiPickerTracker_returnNonNull() {
+        assertThat(mWifiPickerTrackerHelper.getWifiPickerTracker()).isNotNull();
+    }
+
+    @Test
+    public void onDestroy_workerThreadQuit() {
+        final HandlerThread workerThread = mock(HandlerThread.class);
+        mWifiPickerTrackerHelper.setWorkerThread(workerThread);
+
+        mWifiPickerTrackerHelper.onDestroy();
+
+        verify(workerThread).quit();
+    }
+
+    @Test
+    public void setCarrierNetworkEnabled_returnTrueAndSetEnabled() {
+        mWifiPickerTrackerHelper.setWifiPickerTracker(mWifiPickerTracker);
+        when(mWifiPickerTracker.getMergedCarrierEntry()).thenReturn(mMergedCarrierEntry);
+
+        assertThat(mWifiPickerTrackerHelper.setCarrierNetworkEnabled(true)).isTrue();
+        verify(mMergedCarrierEntry).setEnabled(true);
+
+        assertThat(mWifiPickerTrackerHelper.setCarrierNetworkEnabled(false)).isTrue();
+        verify(mMergedCarrierEntry).setEnabled(false);
+    }
+
+    @Test
+    public void setCarrierNetworkEnabled_mergedCarrierEntryIsNull_returnFalse() {
+        mWifiPickerTrackerHelper.setWifiPickerTracker(mWifiPickerTracker);
+        when(mWifiPickerTracker.getMergedCarrierEntry()).thenReturn(null);
+
+        assertThat(mWifiPickerTrackerHelper.setCarrierNetworkEnabled(true)).isFalse();
+        assertThat(mWifiPickerTrackerHelper.setCarrierNetworkEnabled(false)).isFalse();
+    }
+
+    @Test
+    public void connectCarrierNetwork_returnTrueAndConnect() {
+        mWifiPickerTrackerHelper.setWifiPickerTracker(mWifiPickerTracker);
+        when(mWifiPickerTracker.getMergedCarrierEntry()).thenReturn(mMergedCarrierEntry);
+        when(mMergedCarrierEntry.canConnect()).thenReturn(true);
+
+        assertThat(mWifiPickerTrackerHelper.connectCarrierNetwork(mConnectCallback)).isTrue();
+        verify(mMergedCarrierEntry).connect(mConnectCallback);
+    }
+
+    @Test
+    public void connectCarrierNetwork_mergedCarrierEntryIsNull_returnFalse() {
+        mWifiPickerTrackerHelper.setWifiPickerTracker(mWifiPickerTracker);
+        when(mWifiPickerTracker.getMergedCarrierEntry()).thenReturn(null);
+
+        assertThat(mWifiPickerTrackerHelper.connectCarrierNetwork(mConnectCallback)).isFalse();
+    }
+
+    @Test
+    public void connectCarrierNetwork_canConnectIsFalse_returnFalseAndNeverConnect() {
+        mWifiPickerTrackerHelper.setWifiPickerTracker(mWifiPickerTracker);
+        when(mWifiPickerTracker.getMergedCarrierEntry()).thenReturn(mMergedCarrierEntry);
+        when(mMergedCarrierEntry.canConnect()).thenReturn(false);
+
+        assertThat(mWifiPickerTrackerHelper.connectCarrierNetwork(mConnectCallback)).isFalse();
+        verify(mMergedCarrierEntry, never()).connect(mConnectCallback);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiUtilsTest.java b/tests/unit/src/com/android/settings/wifi/WifiUtilsTest.java
similarity index 94%
rename from tests/robotests/src/com/android/settings/wifi/WifiUtilsTest.java
rename to tests/unit/src/com/android/settings/wifi/WifiUtilsTest.java
index 630b319..7a75443 100644
--- a/tests/robotests/src/com/android/settings/wifi/WifiUtilsTest.java
+++ b/tests/unit/src/com/android/settings/wifi/WifiUtilsTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 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.
@@ -23,13 +23,14 @@
 
 import android.net.wifi.WifiConfiguration;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import com.android.wifitrackerlib.WifiEntry;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class WifiUtilsTest {
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/wifi/details2/WifiSubscriptionDetailPreferenceController2Test.java b/tests/unit/src/com/android/settings/wifi/details2/WifiSubscriptionDetailPreferenceController2Test.java
similarity index 90%
rename from tests/robotests/src/com/android/settings/wifi/details2/WifiSubscriptionDetailPreferenceController2Test.java
rename to tests/unit/src/com/android/settings/wifi/details2/WifiSubscriptionDetailPreferenceController2Test.java
index 18a5b86..d4d724d 100644
--- a/tests/robotests/src/com/android/settings/wifi/details2/WifiSubscriptionDetailPreferenceController2Test.java
+++ b/tests/unit/src/com/android/settings/wifi/details2/WifiSubscriptionDetailPreferenceController2Test.java
@@ -24,16 +24,17 @@
 
 import android.content.Context;
 
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import com.android.wifitrackerlib.WifiEntry;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class WifiSubscriptionDetailPreferenceController2Test {
 
     @Mock
@@ -44,7 +45,7 @@
 
     @Before
     public void setUp() {
-        mContext = RuntimeEnvironment.application;
+        mContext = ApplicationProvider.getApplicationContext();
 
         mMockWifiEntry = mock(WifiEntry.class);
         WifiSubscriptionDetailPreferenceController2 preferenceController =
diff --git a/tests/robotests/src/com/android/settings/wifi/dpp/WifiNetworkConfigTest.java b/tests/unit/src/com/android/settings/wifi/dpp/WifiNetworkConfigTest.java
similarity index 91%
rename from tests/robotests/src/com/android/settings/wifi/dpp/WifiNetworkConfigTest.java
rename to tests/unit/src/com/android/settings/wifi/dpp/WifiNetworkConfigTest.java
index 1b7c0a8..85cf259 100644
--- a/tests/robotests/src/com/android/settings/wifi/dpp/WifiNetworkConfigTest.java
+++ b/tests/unit/src/com/android/settings/wifi/dpp/WifiNetworkConfigTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2018 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.
@@ -20,12 +20,13 @@
 
 import android.content.Intent;
 
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class WifiNetworkConfigTest {
     private WifiNetworkConfig mWifiConfig;
 
@@ -43,4 +44,4 @@
         String qrcode = mWifiConfig.getQrCode();
         assertThat(qrcode).isEqualTo("WIFI:S:Pixel\\:_ABCD\\;;T:WPA;P:\\\\012345678\\,;H:false;;");
     }
-}
\ No newline at end of file
+}
