diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 44d4c19..097f207 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -2031,10 +2031,8 @@
         <!-- Bluetooth stuff -->
 
         <activity android:name=".bluetooth.BluetoothPairingDialog"
-                  android:label="@string/bluetooth_pairing_request"
                   android:excludeFromRecents="true"
-                  android:windowSoftInputMode="stateVisible|adjustResize"
-                  android:theme="@*android:style/Theme.DeviceDefault.Light.Dialog.Alert">
+                  android:theme="@android:style/Theme.DeviceDefault.Light.Dialog.NoActionBar">
             <intent-filter android:priority="1">
                 <action android:name="android.bluetooth.device.action.PAIRING_REQUEST" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -3071,6 +3069,18 @@
                        android:value="com.android.settings.datausage.DataUsageSummary"/>
         </activity-alias>
 
+        <activity android:name=".Settings$AppAndNotificationDashboardActivity"
+                  android:label="@string/app_and_notification_dashboard_title"
+                  android:icon="@drawable/ic_settings_applications">
+            <intent-filter android:priority="8">
+                <action android:name="com.android.settings.action.SETTINGS"/>
+            </intent-filter>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                       android:value="com.android.settings.applications.AppAndNotificationDashboardFragment"/>
+            <meta-data android:name="com.android.settings.category"
+                       android:value="com.android.settings.category.ia.homepage"/>
+        </activity>
+
         <activity-alias android:name="BatteryDashboardAlias"
                         android:targetActivity="Settings$PowerUsageSummaryActivity">
             <intent-filter android:priority="7">
@@ -3095,10 +3105,23 @@
                        android:value="true" />
         </activity-alias>
 
+        <activity-alias android:name="SoundDashboardAlias"
+                        android:targetActivity="Settings$SoundSettingsActivity">
+            <intent-filter android:priority="5">
+                <action android:name="com.android.settings.action.SETTINGS" />
+            </intent-filter>
+            <meta-data android:name="com.android.settings.category"
+                       android:value="com.android.settings.category.ia.homepage" />
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                       android:value="com.android.settings.notification.SoundSettings" />
+            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
+                       android:value="true" />
+        </activity-alias>
+
         <activity android:name=".Settings$StorageDashboardActivity"
                   android:label="@string/storage_settings"
                   android:icon="@drawable/ic_settings_storage">
-            <intent-filter android:priority="5">
+            <intent-filter android:priority="4">
                 <action android:name="com.android.settings.action.SETTINGS" />
             </intent-filter>
             <meta-data android:name="com.android.settings.category"
@@ -3136,6 +3159,19 @@
                        android:value="true" />
         </activity-alias>
 
+        <activity-alias android:name="LocationDashboardAlias"
+                        android:targetActivity="Settings$LocationSettingsActivity">
+            <intent-filter>
+                <action android:name="com.android.settings.action.SETTINGS" />
+            </intent-filter>
+            <meta-data android:name="com.android.settings.category"
+                       android:value="com.android.settings.category.ia.security" />
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                       android:value="com.android.settings.location.LocationSettings" />
+            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
+                       android:value="true" />
+        </activity-alias>
+
         <activity android:name=".Settings$SystemDashboardActivity"
                   android:label="@string/header_category_system"
                   android:icon="@drawable/ic_settings_about">
@@ -3203,6 +3239,20 @@
                        android:value="true" />
         </activity-alias>
 
+        <activity-alias android:name="GestureDashboardAlias"
+                        android:targetActivity="Settings$GestureSettingsActivity"
+                        android:enabled="@bool/config_gesture_settings_enabled">
+            <intent-filter android:priority="70">
+                <action android:name="com.android.settings.action.SETTINGS"/>
+            </intent-filter>
+            <meta-data android:name="com.android.settings.category"
+                       android:value="com.android.settings.category.ia.system"/>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                       android:value="com.android.settings.gestures.GestureSettings"/>
+            <meta-data android:name="com.android.settings.summary"
+                       android:resource="@string/gesture_preference_summary"/>
+        </activity-alias>
+
         <activity-alias android:name="BackupResetDashboardAlias"
                         android:targetActivity="Settings$PrivacySettingsActivity">
             <intent-filter android:priority="60">
@@ -3290,6 +3340,94 @@
                        android:value="com.android.settings.category.ia.device" />
         </activity-alias>
 
+        <activity-alias android:name="ManageApplicationsDashboardAlias"
+                        android:targetActivity="Settings$ManageApplicationsActivity">
+            <intent-filter android:priority="200">
+                <action android:name="com.android.settings.action.SETTINGS" />
+            </intent-filter>
+            <meta-data android:name="com.android.settings.category"
+                       android:value="com.android.settings.category.ia.apps" />
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                       android:value="com.android.settings.applications.ManageApplications" />
+            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
+                       android:value="true" />
+        </activity-alias>
+
+        <activity-alias android:name="AppNotificationDashboardAlias"
+                        android:targetActivity="Settings$NotificationAppListActivity">
+            <intent-filter android:priority="150">
+                <action android:name="com.android.settings.action.SETTINGS"/>
+            </intent-filter>
+            <meta-data android:name="com.android.settings.category"
+                       android:value="com.android.settings.category.ia.apps"/>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                       android:value="com.android.settings.applications.NotificationApps"/>
+        </activity-alias>
+
+        <activity-alias android:name="ConfigureNotificationDashboardAlias"
+                  android:targetActivity="Settings$ConfigureNotificationSettingsActivity">
+            <intent-filter android:priority="120">
+                <action android:name="com.android.settings.action.SETTINGS"/>
+            </intent-filter>
+            <meta-data android:name="com.android.settings.category"
+                       android:value="com.android.settings.category.ia.apps"/>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                       android:value="com.android.settings.notification.ConfigureNotificationSettings" />
+            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
+                       android:value="true" />
+        </activity-alias>
+
+        <activity android:name=".Settings$UserAndAccountDashboardActivity"
+                  android:label="@string/account_dashboard_title"
+                  android:icon="@drawable/ic_settings_accounts">
+            <intent-filter android:priority="2">
+                <action android:name="com.android.settings.action.SETTINGS"/>
+            </intent-filter>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                       android:value="com.android.settings.accounts.UserAndAccountDashboardFragment"/>
+            <meta-data android:name="com.android.settings.category"
+                       android:value="com.android.settings.category.ia.homepage"/>
+        </activity>
+
+        <activity-alias android:name="UserDashboardAlias"
+                        android:targetActivity="Settings$UserSettingsActivity">
+            <intent-filter android:priority="8">
+                <action android:name="com.android.settings.action.SETTINGS"/>
+            </intent-filter>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                       android:value="com.android.settings.users.UserSettings" />
+            <meta-data android:name="com.android.settings.category"
+                       android:value="com.android.settings.category.ia.accounts" />
+        </activity-alias>
+
+        <activity-alias android:name="AppDefaultDashboardAlias"
+                        android:targetActivity="Settings$AdvancedAppsActivity"
+                        android:label="@string/app_default_dashboard_title"
+                        android:icon="@drawable/ic_settings_applications">
+            <intent-filter android:priority="130">
+                <action android:name="com.android.settings.action.SETTINGS"/>
+            </intent-filter>
+            <meta-data android:name="com.android.settings.category"
+                       android:value="com.android.settings.category.ia.apps"/>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                       android:value="com.android.settings.applications.AdvancedAppSettings" />
+            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
+                       android:value="true" />
+        </activity-alias>
+
+        <activity-alias android:name="PaymentSettingsDashboardAlias"
+                        android:targetActivity="Settings$PaymentSettingsActivity">
+            <intent-filter android:priority="10">
+                <action android:name="com.android.settings.action.SETTINGS"/>
+            </intent-filter>
+            <meta-data android:name="com.android.settings.category"
+                       android:value="com.android.settings.category.ia.apps.default"/>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                       android:value="com.android.settings.nfc.PaymentSettings"/>
+            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
+                       android:value="true"/>
+        </activity-alias>
+
         <!-- End of information architecture host activities -->
 
         <service
diff --git a/PREUPLOAD.cfg b/PREUPLOAD.cfg
new file mode 100644
index 0000000..653380c
--- /dev/null
+++ b/PREUPLOAD.cfg
@@ -0,0 +1,4 @@
+[Hook Scripts]
+checkstyle_hook = ../../../development/tools/checkstyle/checkstyle.py --sha ${PREUPLOAD_COMMIT}
+                  -fw src/com/android/settings/print/
+
diff --git a/res/color/white_disabled.xml b/res/color/white_disabled.xml
new file mode 100644
index 0000000..17008a8
--- /dev/null
+++ b/res/color/white_disabled.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:color="@android:color/white"
+        android:alpha="?android:attr/disabledAlpha" />
+</selector>
diff --git a/res/drawable/enrollment_fingerprint_isolated.xml b/res/drawable/enrollment_fingerprint_isolated.xml
index fc31ff8..de3965e 100644
--- a/res/drawable/enrollment_fingerprint_isolated.xml
+++ b/res/drawable/enrollment_fingerprint_isolated.xml
@@ -17,14 +17,14 @@
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:name="enrollment_fingerprint_isolated"
-    android:width="75dp"
-    android:viewportWidth="75"
+    android:width="88dp"
     android:height="88dp"
-    android:viewportHeight="88" >
+    android:viewportWidth="176"
+    android:viewportHeight="176" >
     <group
         android:name="fingerprint_ridges_2"
-        android:translateX="37.5835"
-        android:translateY="43.66685" >
+        android:translateX="88"
+        android:translateY="87.66685" >
         <group
             android:name="ridge_5" >
             <path
diff --git a/res/drawable/fingerprint_progress_ring.xml b/res/drawable/fingerprint_progress_ring.xml
deleted file mode 100644
index 44a69e9..0000000
--- a/res/drawable/fingerprint_progress_ring.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:id="@android:id/background">
-        <shape
-            android:innerRadius="?attr/fingerprint_ring_radius"
-            android:shape="ring"
-            android:thickness="@dimen/fingerprint_ring_thickness"
-            android:useLevel="false">
-            <solid android:color="@color/fingerprint_progress_ring_bg" />
-        </shape>
-    </item>
-    <item android:id="@android:id/progress">
-        <shape
-            android:innerRadius="?attr/fingerprint_ring_radius"
-            android:shape="ring"
-            android:thickness="@dimen/fingerprint_ring_thickness">
-            <gradient
-                android:startColor="@color/fingerprint_progress_ring"
-                android:endColor="@color/fingerprint_progress_ring"
-                android:angle="0"
-            />
-        </shape>
-    </item>
-</layer-list>
diff --git a/res/drawable/fp_illustration.xml b/res/drawable/fp_illustration.xml
new file mode 100644
index 0000000..17ab4d2
--- /dev/null
+++ b/res/drawable/fp_illustration.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ 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
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item
+        android:id="@+id/fingerprint_background"
+        android:drawable="@drawable/fp_illustration_enrollment" />
+
+    <item
+        android:id="@+id/fingerprint_animation"
+        android:drawable="@drawable/enrollment_fingerprint_isolated_animation" />
+
+</layer-list>
diff --git a/res/drawable/fp_illustration_enrollment.xml b/res/drawable/fp_illustration_enrollment.xml
index f9b7ed4..630c6bd 100644
--- a/res/drawable/fp_illustration_enrollment.xml
+++ b/res/drawable/fp_illustration_enrollment.xml
@@ -16,21 +16,25 @@
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
         android:width="88.0dp"
         android:height="88.0dp"
-        android:viewportWidth="88.0"
-        android:viewportHeight="88.0">
-    <path
-        android:fillColor="#FF000000"
-        android:pathData="M67.74,11.59c-0.41,0.0 -0.82,-0.1 -1.2,-0.31c-7.44,-4.06 -15.0,-6.04 -23.11,-6.04c-7.92,0.0 -14.67,1.85 -21.88,6.01c-1.2,0.69 -2.73,0.28 -3.42,-0.92s-0.28,-2.72 0.92,-3.41c7.9,-4.55 15.65,-6.68 24.37,-6.68c8.97,0.0 17.32,2.17 25.51,6.65c1.21,0.66 1.66,2.18 1.0,3.39C69.48,11.12 68.62,11.59 67.74,11.59z"/>
-    <path
-        android:fillColor="#FF000000"
-        android:pathData="M9.25,34.74c-0.48,0.0 -0.96,-0.14 -1.39,-0.42c-1.15,-0.77 -1.45,-2.32 -0.68,-3.47c4.09,-6.09 9.3,-10.89 15.49,-14.27c6.52,-3.55 13.91,-5.43 21.38,-5.43c7.44,0.0 14.8,1.86 21.3,5.39c6.17,3.35 11.38,8.12 15.47,14.16c0.77,1.14 0.47,2.7 -0.67,3.47c-1.14,0.77 -2.7,0.47 -3.47,-0.67c-3.64,-5.38 -8.25,-9.61 -13.71,-12.57c-5.77,-3.13 -12.31,-4.78 -18.92,-4.78c-6.63,0.0 -13.2,1.67 -18.98,4.82c-5.48,2.99 -10.1,7.25 -13.73,12.66C10.85,34.35 10.06,34.74 9.25,34.74z"/>
-    <path
-        android:fillColor="#FF000000"
-        android:pathData="M34.76,86.82c-0.67,0.0 -1.33,-0.27 -1.82,-0.79c-3.49,-3.72 -5.51,-6.25 -8.26,-11.45c-2.84,-5.35 -4.34,-11.88 -4.34,-18.86c0.0,-13.02 10.59,-23.61 23.61,-23.61c13.02,0.0 23.61,10.59 23.61,23.61c0.0,1.38 -1.12,2.5 -2.5,2.5s-2.5,-1.12 -2.5,-2.5c0.0,-10.26 -8.35,-18.61 -18.61,-18.61c-10.26,0.0 -18.61,8.35 -18.61,18.61c0.0,6.17 1.3,11.89 3.76,16.52c2.62,4.94 4.37,7.04 7.49,10.37c0.94,1.01 0.89,2.59 -0.11,3.53C35.99,86.6 35.38,86.82 34.76,86.82z"/>
-    <path
-        android:fillColor="#FF000000"
-        android:pathData="M64.28,78.84c-4.99,0.0 -9.35,-1.32 -12.98,-3.92c-6.17,-4.43 -9.86,-11.6 -9.86,-19.19c0.0,-1.38 1.12,-2.5 2.5,-2.5s2.5,1.12 2.5,2.5c0.0,5.98 2.91,11.64 7.77,15.13c2.8,2.01 6.09,2.98 10.06,2.98c0.97,0.0 2.57,-0.11 4.17,-0.4c1.36,-0.25 2.66,0.64 2.92,2.0c0.25,1.36 -0.64,2.66 -2.0,2.92C66.93,78.8 64.86,78.84 64.28,78.84z"/>
-    <path
-        android:fillColor="#FF000000"
-        android:pathData="M55.92,87.75c-0.23,0.0 -0.46,-0.03 -0.7,-0.1c-6.6,-1.91 -10.92,-4.49 -15.4,-9.2c-5.76,-6.06 -8.94,-14.13 -8.94,-22.72c0.0,-7.2 5.86,-13.05 13.05,-13.05c7.2,0.0 13.05,5.86 13.05,13.05c0.0,4.44 3.61,8.05 8.05,8.05s8.05,-3.61 8.05,-8.05c0.0,-16.08 -13.08,-29.16 -29.16,-29.16c-11.43,0.0 -21.86,6.73 -26.58,17.15c-1.57,3.48 -2.37,7.52 -2.37,12.01c0.0,3.36 0.28,8.62 2.71,15.49c0.46,1.3 -0.22,2.73 -1.52,3.19c-1.3,0.46 -2.73,-0.22 -3.19,-1.52c-2.02,-5.7 -3.0,-11.31 -3.0,-17.16c0.0,-5.21 0.95,-9.94 2.82,-14.07c5.52,-12.2 17.74,-20.09 31.13,-20.09c18.83,0.0 34.16,15.32 34.16,34.16c0.0,7.2 -5.86,13.05 -13.05,13.05S52.0,62.92 52.0,55.73c0.0,-4.44 -3.61,-8.05 -8.05,-8.05s-8.05,3.61 -8.05,8.05c0.0,7.3 2.69,14.15 7.56,19.28c3.86,4.06 7.43,6.18 13.17,7.84c1.33,0.38 2.09,1.77 1.71,3.1C58.01,87.04 57.01,87.75 55.92,87.75z"/>
+        android:viewportWidth="176.0"
+        android:viewportHeight="176.0">
+    <group
+        android:translateX="44"
+        android:translateY="44">
+        <path
+            android:fillColor="#FF000000"
+            android:pathData="M67.74,11.59c-0.41,0.0 -0.82,-0.1 -1.2,-0.31c-7.44,-4.06 -15.0,-6.04 -23.11,-6.04c-7.92,0.0 -14.67,1.85 -21.88,6.01c-1.2,0.69 -2.73,0.28 -3.42,-0.92s-0.28,-2.72 0.92,-3.41c7.9,-4.55 15.65,-6.68 24.37,-6.68c8.97,0.0 17.32,2.17 25.51,6.65c1.21,0.66 1.66,2.18 1.0,3.39C69.48,11.12 68.62,11.59 67.74,11.59z"/>
+        <path
+            android:fillColor="#FF000000"
+            android:pathData="M9.25,34.74c-0.48,0.0 -0.96,-0.14 -1.39,-0.42c-1.15,-0.77 -1.45,-2.32 -0.68,-3.47c4.09,-6.09 9.3,-10.89 15.49,-14.27c6.52,-3.55 13.91,-5.43 21.38,-5.43c7.44,0.0 14.8,1.86 21.3,5.39c6.17,3.35 11.38,8.12 15.47,14.16c0.77,1.14 0.47,2.7 -0.67,3.47c-1.14,0.77 -2.7,0.47 -3.47,-0.67c-3.64,-5.38 -8.25,-9.61 -13.71,-12.57c-5.77,-3.13 -12.31,-4.78 -18.92,-4.78c-6.63,0.0 -13.2,1.67 -18.98,4.82c-5.48,2.99 -10.1,7.25 -13.73,12.66C10.85,34.35 10.06,34.74 9.25,34.74z"/>
+        <path
+            android:fillColor="#FF000000"
+            android:pathData="M34.76,86.82c-0.67,0.0 -1.33,-0.27 -1.82,-0.79c-3.49,-3.72 -5.51,-6.25 -8.26,-11.45c-2.84,-5.35 -4.34,-11.88 -4.34,-18.86c0.0,-13.02 10.59,-23.61 23.61,-23.61c13.02,0.0 23.61,10.59 23.61,23.61c0.0,1.38 -1.12,2.5 -2.5,2.5s-2.5,-1.12 -2.5,-2.5c0.0,-10.26 -8.35,-18.61 -18.61,-18.61c-10.26,0.0 -18.61,8.35 -18.61,18.61c0.0,6.17 1.3,11.89 3.76,16.52c2.62,4.94 4.37,7.04 7.49,10.37c0.94,1.01 0.89,2.59 -0.11,3.53C35.99,86.6 35.38,86.82 34.76,86.82z"/>
+        <path
+            android:fillColor="#FF000000"
+            android:pathData="M64.28,78.84c-4.99,0.0 -9.35,-1.32 -12.98,-3.92c-6.17,-4.43 -9.86,-11.6 -9.86,-19.19c0.0,-1.38 1.12,-2.5 2.5,-2.5s2.5,1.12 2.5,2.5c0.0,5.98 2.91,11.64 7.77,15.13c2.8,2.01 6.09,2.98 10.06,2.98c0.97,0.0 2.57,-0.11 4.17,-0.4c1.36,-0.25 2.66,0.64 2.92,2.0c0.25,1.36 -0.64,2.66 -2.0,2.92C66.93,78.8 64.86,78.84 64.28,78.84z"/>
+        <path
+            android:fillColor="#FF000000"
+            android:pathData="M55.92,87.75c-0.23,0.0 -0.46,-0.03 -0.7,-0.1c-6.6,-1.91 -10.92,-4.49 -15.4,-9.2c-5.76,-6.06 -8.94,-14.13 -8.94,-22.72c0.0,-7.2 5.86,-13.05 13.05,-13.05c7.2,0.0 13.05,5.86 13.05,13.05c0.0,4.44 3.61,8.05 8.05,8.05s8.05,-3.61 8.05,-8.05c0.0,-16.08 -13.08,-29.16 -29.16,-29.16c-11.43,0.0 -21.86,6.73 -26.58,17.15c-1.57,3.48 -2.37,7.52 -2.37,12.01c0.0,3.36 0.28,8.62 2.71,15.49c0.46,1.3 -0.22,2.73 -1.52,3.19c-1.3,0.46 -2.73,-0.22 -3.19,-1.52c-2.02,-5.7 -3.0,-11.31 -3.0,-17.16c0.0,-5.21 0.95,-9.94 2.82,-14.07c5.52,-12.2 17.74,-20.09 31.13,-20.09c18.83,0.0 34.16,15.32 34.16,34.16c0.0,7.2 -5.86,13.05 -13.05,13.05S52.0,62.92 52.0,55.73c0.0,-4.44 -3.61,-8.05 -8.05,-8.05s-8.05,3.61 -8.05,8.05c0.0,7.3 2.69,14.15 7.56,19.28c3.86,4.06 7.43,6.18 13.17,7.84c1.33,0.38 2.09,1.77 1.71,3.1C58.01,87.04 57.01,87.75 55.92,87.75z"/>
+    </group>
 </vector>
diff --git a/res/drawable/ring_progress.xml b/res/drawable/ring_progress.xml
new file mode 100644
index 0000000..02fcd5b
--- /dev/null
+++ b/res/drawable/ring_progress.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:id="@android:id/background">
+        <shape
+            android:innerRadiusRatio="2.2"
+            android:shape="ring"
+            android:thickness="@dimen/ring_progress_bar_thickness"
+            android:useLevel="false"
+            android:tint="?android:colorControlNormal">
+            <solid android:color="@color/white_disabled" />
+        </shape>
+    </item>
+    <item android:id="@android:id/progress">
+        <rotate
+            android:fromDegrees="270"
+            android:pivotX="50%"
+            android:pivotY="50%"
+            android:toDegrees="270">
+            <shape
+                android:innerRadiusRatio="2.2"
+                android:shape="ring"
+                android:thickness="@dimen/ring_progress_bar_thickness"
+                android:tint="?android:attr/colorControlActivated">
+                <solid android:color="@android:color/white" />
+            </shape>
+        </rotate>
+    </item>
+</layer-list>
diff --git a/res/layout-land/fingerprint_enroll_enrolling.xml b/res/layout-land/fingerprint_enroll_enrolling.xml
index ba0f803..27af681 100644
--- a/res/layout-land/fingerprint_enroll_enrolling.xml
+++ b/res/layout-land/fingerprint_enroll_enrolling.xml
@@ -49,7 +49,7 @@
                 android:layout_height="wrap_content"
                 android:layout_marginStart="0dp"
                 android:layout_marginEnd="0dp"
-                android:src="@drawable/ic_lock" />
+                android:src="@drawable/ic_fingerprint_header" />
 
             <TextView
                 android:id="@+id/suw_layout_title"
@@ -97,8 +97,8 @@
             android:layout_height="match_parent">
 
             <include layout="@layout/fingerprint_enroll_enrolling_content"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
                 android:layout_gravity="center"/>
 
             <TextView
diff --git a/res/layout-land/fingerprint_enroll_find_sensor.xml b/res/layout-land/fingerprint_enroll_find_sensor.xml
index 0a3a33f..b64b27f 100644
--- a/res/layout-land/fingerprint_enroll_find_sensor.xml
+++ b/res/layout-land/fingerprint_enroll_find_sensor.xml
@@ -50,7 +50,7 @@
                     android:layout_height="wrap_content"
                     android:layout_marginStart="0dp"
                     android:layout_marginEnd="0dp"
-                    android:src="@drawable/ic_lock" />
+                    android:src="@drawable/ic_fingerprint_header" />
 
                 <TextView
                     android:id="@+id/suw_layout_title"
diff --git a/res/layout/battery_history_detail.xml b/res/layout/battery_history_detail.xml
index e254711..b782e39 100644
--- a/res/layout/battery_history_detail.xml
+++ b/res/layout/battery_history_detail.xml
@@ -14,54 +14,56 @@
      limitations under the License.
 -->
 
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<ScrollView
+    xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:settings="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
-    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
-    android:orientation="vertical">
+    android:layout_height="match_parent">
 
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:focusable="true"
+        android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+        android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
         android:orientation="vertical">
-        <TextView
-            android:id="@+id/charge"
+
+        <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:textAppearance="?android:attr/textAppearanceLarge"
-            android:textSize="36sp"
-            android:textColor="?android:attr/colorAccent" />
+            android:focusable="true"
+            android:orientation="vertical">
 
-        <TextView
-            android:id="@+id/estimation"
+            <TextView
+                android:id="@+id/charge"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:textAppearance="?android:attr/textAppearanceLarge"
+                android:textSize="36sp"
+                android:textColor="?android:attr/colorAccent"/>
+
+            <TextView
+                android:id="@+id/estimation"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:paddingBottom="8dp"
+                android:textAppearance="?android:attr/textAppearanceMedium"
+                android:textColor="?android:attr/textColorSecondary"/>
+
+            <com.android.settingslib.graph.UsageView
+                android:id="@+id/battery_usage"
+                android:layout_width="match_parent"
+                android:layout_height="141dp"
+                settings:sideLabels="@array/battery_labels"
+                android:colorAccent="?android:attr/colorAccent"
+                android:gravity="end"
+                settings:textColor="?android:attr/textColorSecondary"/>
+        </LinearLayout>
+
+        <View
             android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:paddingBottom="8dp"
-            android:textAppearance="?android:attr/textAppearanceMedium"
-            android:textColor="?android:attr/textColorSecondary" />
-
-        <com.android.settingslib.graph.UsageView
-            android:id="@+id/battery_usage"
-            android:layout_width="match_parent"
-            android:layout_height="141dp"
-            settings:sideLabels="@array/battery_labels"
-            android:colorAccent="?android:attr/colorAccent"
-            android:gravity="end"
-            settings:textColor="?android:attr/textColorSecondary" />
-    </LinearLayout>
-
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="1dp"
-        android:layout_marginTop="2dp"
-        android:background="?android:attr/listDivider" />
-
-    <ScrollView
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
+            android:layout_height="1dp"
+            android:layout_marginTop="2dp"
+            android:background="?android:attr/listDivider"/>
 
         <LinearLayout
             android:layout_width="match_parent"
@@ -94,6 +96,6 @@
 
         </LinearLayout>
 
-    </ScrollView>
+    </LinearLayout>
 
-</LinearLayout>
+</ScrollView>
diff --git a/res/layout/bluetooth_pin_confirm.xml b/res/layout/bluetooth_pin_confirm.xml
index 1e5eb0b..33140d9 100644
--- a/res/layout/bluetooth_pin_confirm.xml
+++ b/res/layout/bluetooth_pin_confirm.xml
@@ -41,7 +41,7 @@
             android:text="@string/bluetooth_pairing_key_msg"
             android:visibility="gone"
             android:textAppearance="@android:style/TextAppearance.Material.Body1"
-            android:textColor="@*android:color/secondary_text_material_light"  />
+            android:textColor="@color/bluetooth_dialog_text_color"  />
 
         <TextView
             android:id="@+id/pairing_subhead"
@@ -64,7 +64,7 @@
             android:gravity="center_vertical"
             android:text="@string/bluetooth_enter_passkey_msg"
             android:textAppearance="@android:style/TextAppearance.Material.Subhead"
-            android:textColor="@*android:color/secondary_text_material_light"
+            android:textColor="@color/bluetooth_dialog_text_color"
             android:visibility="gone" />
 
         <CheckBox
@@ -74,7 +74,7 @@
             android:layout_marginStart="@dimen/bluetooth_dialog_padding"
             android:layout_marginEnd="@dimen/bluetooth_dialog_padding"
             android:textAppearance="@android:style/TextAppearance.Material.Body1"
-            android:textColor="@*android:color/secondary_text_material_light"  />
+            android:textColor="@color/bluetooth_dialog_text_color"  />
 
     </LinearLayout>
 
diff --git a/res/layout/condition_card.xml b/res/layout/condition_card.xml
index 7c9e46d..4edd0f2 100644
--- a/res/layout/condition_card.xml
+++ b/res/layout/condition_card.xml
@@ -66,7 +66,7 @@
         <LinearLayout
             android:id="@+id/detail_group"
             android:layout_width="match_parent"
-            android:layout_height="0dp"
+            android:layout_height="wrap_content"
             android:paddingStart="72dp"
             android:visibility="gone"
             android:orientation="vertical">
@@ -96,7 +96,7 @@
                 android:layout_height="wrap_content"
                 android:paddingTop="8dp"
                 android:paddingBottom="8dp"
-                style="?attr/buttonBarStyle"
+                style="?android:attr/buttonBarStyle"
                 android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">
 
                 <Button
diff --git a/res/layout/confirm_lock_pattern_base.xml b/res/layout/confirm_lock_pattern_base.xml
index 7c960a2..e6b7887 100644
--- a/res/layout/confirm_lock_pattern_base.xml
+++ b/res/layout/confirm_lock_pattern_base.xml
@@ -29,47 +29,54 @@
         android:layout_gravity="top|center_horizontal"
         android:paddingTop="@dimen/confirm_credentials_top_padding">
 
-        <TextView
-            style="@android:style/TextAppearance.Material.Headline"
-            android:id="@+id/headerText"
-            android:layout_marginStart="?attr/confirmDeviceCredentialsSideMargin"
-            android:layout_marginEnd="?attr/confirmDeviceCredentialsSideMargin"
-            android:layout_marginTop="?attr/confirmDeviceCredentialsTopMargin"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:textColor="?android:attr/colorAccent"/>
+        <ScrollView
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:layout_weight="2">
 
-        <TextView
-            style="@android:style/TextAppearance.Material.Body1"
-            android:id="@+id/detailsText"
-            android:layout_marginStart="?attr/confirmDeviceCredentialsSideMargin"
-            android:layout_marginEnd="?attr/confirmDeviceCredentialsSideMargin"
-            android:layout_marginTop="12dp"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            />
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:orientation="vertical">
 
-        <Button
-            style="@android:style/Widget.Material.Button.Borderless"
-            android:id="@+id/cancelButton"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/cancel"
-            android:layout_marginStart="16dp"
-            android:layout_marginEnd="16dp"
-            android:layout_marginTop="16dp"/>
+                <TextView
+                    style="@android:style/TextAppearance.Material.Headline"
+                    android:id="@+id/headerText"
+                    android:layout_marginStart="?attr/confirmDeviceCredentialsSideMargin"
+                    android:layout_marginEnd="?attr/confirmDeviceCredentialsSideMargin"
+                    android:layout_marginTop="?attr/confirmDeviceCredentialsTopMargin"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:textColor="?android:attr/colorAccent"/>
 
-        <View android:layout_width="match_parent"
-              android:layout_height="0dp"
-              android:layout_weight="0.5"/>
+                <TextView
+                    style="@android:style/TextAppearance.Material.Body1"
+                    android:id="@+id/detailsText"
+                    android:layout_marginStart="?attr/confirmDeviceCredentialsSideMargin"
+                    android:layout_marginEnd="?attr/confirmDeviceCredentialsSideMargin"
+                    android:layout_marginTop="12dp"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"/>
+
+                <Button
+                    style="@android:style/Widget.Material.Button.Borderless"
+                    android:id="@+id/cancelButton"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/cancel"
+                    android:layout_marginStart="16dp"
+                    android:layout_marginEnd="16dp"
+                    android:layout_marginTop="16dp"/>
+            </LinearLayout>
+
+        </ScrollView>
 
         <com.android.internal.widget.LockPatternView
             android:id="@+id/lockPattern"
             android:layout_width="312dp"
-            android:layout_height="312dp"
-            android:layout_gravity="center_horizontal"
-            android:layout_marginTop="-46dp"
-            android:layout_marginBottom="-46dp"/>
+            android:layout_height="0dp"
+            android:layout_weight="3"
+            android:layout_gravity="center_horizontal"/>
 
         <LinearLayout
             android:layout_width="match_parent"
diff --git a/res/layout/expand_preference.xml b/res/layout/expand_preference.xml
new file mode 100644
index 0000000..640cda7
--- /dev/null
+++ b/res/layout/expand_preference.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  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.
+  -->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="@drawable/selectable_card_grey"
+    android:gravity="center_vertical"
+    android:minHeight="?android:attr/listPreferredItemHeight"
+    android:orientation="vertical"
+    android:paddingEnd="?android:attr/scrollbarSize">
+    <TextView
+        android:id="@android:id/title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"/>
+</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/fingerprint_enroll_enrolling_base.xml b/res/layout/fingerprint_enroll_enrolling_base.xml
index e9e3385..33a5acf 100644
--- a/res/layout/fingerprint_enroll_enrolling_base.xml
+++ b/res/layout/fingerprint_enroll_enrolling_base.xml
@@ -55,8 +55,9 @@
         </FrameLayout>
 
         <include layout="@layout/fingerprint_enroll_enrolling_content"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
+            android:layout_width="@dimen/fingerprint_progress_bar_max_size"
+            android:layout_height="0dp"
+            android:layout_weight="1"
             android:layout_gravity="center_horizontal"
             android:layout_marginTop="@dimen/fingerprint_enrolling_content_margin_top"/>
 
diff --git a/res/layout/fingerprint_enroll_enrolling_content.xml b/res/layout/fingerprint_enroll_enrolling_content.xml
index 42769d1..1622f3f 100644
--- a/res/layout/fingerprint_enroll_enrolling_content.xml
+++ b/res/layout/fingerprint_enroll_enrolling_content.xml
@@ -15,32 +15,11 @@
   ~ limitations under the License
   -->
 
-<RelativeLayout
+<com.android.settings.widget.RingProgressBar
     xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/fingerprint_progress_bar"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
-    android:layout_gravity="center_horizontal">
-
-    <ImageView
-        android:id="@+id/fingerprint_animator"
-        android:layout_width="@dimen/fingerprint_animation_size"
-        android:layout_height="@dimen/fingerprint_animation_size"
-        android:layout_centerInParent="true"
-        android:background="@drawable/fp_illustration_enrollment"
-        android:backgroundTint="@color/fingerprint_indicator_background_resting"
-        android:src="@drawable/enrollment_fingerprint_isolated_animation"/>
-
-    <ProgressBar
-        android:id="@+id/fingerprint_progress_bar"
-        android:layout_width="?attr/fingerprint_progress_bar_size"
-        android:layout_height="?attr/fingerprint_progress_bar_size"
-        android:layout_centerInParent="true"
-        style="?android:attr/progressBarStyleHorizontal"
-        android:max="10000"
-        android:mirrorForRtl="false"
-        android:progress="0"
-        android:indeterminate="false"
-        android:progressDrawable="@drawable/fingerprint_progress_ring"
-        android:rotation="-90"/>
-
-</RelativeLayout>
+    android:background="@drawable/fp_illustration"
+    android:minHeight="@dimen/fingerprint_progress_bar_min_size"
+    android:progress="0" />
diff --git a/res/layout/see_all.xml b/res/layout/see_all.xml
deleted file mode 100644
index 44b263c..0000000
--- a/res/layout/see_all.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:background="?android:attr/selectableItemBackground"
-        android:gravity="center_vertical"
-        android:minHeight="@dimen/dashboard_tile_minimum_height"
-        android:clickable="true"
-        android:focusable="true">
-
-    <View
-            android:layout_width="@dimen/dashboard_tile_image_size"
-            android:layout_height="@dimen/dashboard_tile_image_size"
-            android:layout_marginStart="@dimen/dashboard_tile_image_margin_start"
-            android:layout_marginEnd="@dimen/dashboard_tile_image_margin_end"
-            android:visibility="invisible" />
-
-    <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:orientation="vertical">
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="0dip"
-            android:orientation="vertical"
-            android:gravity="center_vertical"
-            android:layout_weight="1">
-
-            <RelativeLayout
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content">
-
-                <TextView android:id="@android:id/title"
-                          android:layout_width="wrap_content"
-                          android:layout_height="wrap_content"
-                          android:singleLine="true"
-                          android:textAppearance="@android:style/TextAppearance.Material.Widget.Button.Inverse"
-                          android:textColor="?android:attr/colorAccent"
-                          android:ellipsize="marquee"
-                          android:fadingEdge="horizontal" />
-
-            </RelativeLayout>
-
-        </LinearLayout>
-
-    </LinearLayout>
-
-</LinearLayout>
diff --git a/res/layout/support_disclaimer_content.xml b/res/layout/support_disclaimer_content.xml
index d6697c3..196bef2 100644
--- a/res/layout/support_disclaimer_content.xml
+++ b/res/layout/support_disclaimer_content.xml
@@ -13,24 +13,27 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<LinearLayout
+<ScrollView
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:orientation="vertical"
-    android:padding="24dp">
-
-    <com.android.settings.widget.LinkTextView
-        android:id="@+id/support_disclaimer_text"
+    android:layout_height="wrap_content">
+    <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:paddingBottom="24dp"/>
+        android:orientation="vertical"
+        android:padding="24dp">
 
-    <CheckBox
-        android:id="@+id/support_disclaimer_do_not_show_again"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:text="@string/support_disclaimer_do_not_show"
-        android:textColor="?android:attr/textColorSecondary"/>
+        <com.android.settings.widget.LinkTextView
+            android:id="@+id/support_disclaimer_text"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:paddingBottom="24dp"/>
 
-</LinearLayout>
+        <CheckBox
+            android:id="@+id/support_disclaimer_do_not_show_again"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:text="@string/support_disclaimer_do_not_show"
+            android:textColor="?android:attr/textColorSecondary"/>
+    </LinearLayout>
+</ScrollView>
diff --git a/res/layout/support_escalation_options.xml b/res/layout/support_escalation_options.xml
index b214561..63cc85d 100644
--- a/res/layout/support_escalation_options.xml
+++ b/res/layout/support_escalation_options.xml
@@ -42,7 +42,8 @@
         android:gravity="center_horizontal"
         android:orientation="horizontal">
         <LinearLayout
-            android:layout_width="wrap_content"
+            android:layout_width="0dp"
+            android:layout_weight="1"
             android:layout_height="wrap_content"
             android:layout_marginStart="8dp"
             android:layout_marginEnd="8dp"
@@ -63,7 +64,8 @@
                 android:textColor="?android:attr/textColorSecondary"/>
         </LinearLayout>
         <LinearLayout
-            android:layout_width="wrap_content"
+            android:layout_width="0dp"
+            android:layout_weight="1"
             android:layout_height="wrap_content"
             android:layout_marginStart="8dp"
             android:layout_marginEnd="8dp"
diff --git a/res/layout/support_tile.xml b/res/layout/support_tile.xml
index e5e49f4..e294868 100644
--- a/res/layout/support_tile.xml
+++ b/res/layout/support_tile.xml
@@ -34,7 +34,7 @@
         android:id="@+id/tile_title"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:singleLine="true"
+        android:maxLines="2"
         android:textAppearance="@style/TextAppearance.TileTitle"
         android:ellipsize="end"
         android:fadingEdge="horizontal"/>
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index ea33881..5707c1b 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Ontkoppel"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Weergawe <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Vergeet VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Vervang bestaande VPN?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Jy is reeds aan \'n VPN gekoppel. As jy aan \'n ander een koppel, sal jou bestaande VPN vervang word."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Vervang bestaande VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Stel altyd-aan VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"As jy hierdie instelling aanskakel, sal jy nie \'n internetverbinding hê totdat die VPN suksesvol koppel nie"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Jou bestaande VPN sal vervang word en jy sal nie \'n internetverbinding hê totdat die VPN suksesvol koppel nie"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Jy is reeds aan \'n altyd-aan VPN gekoppel. As jy aan \'n ander een koppel, sal jou bestaande VPN vervang word en sal altyd-aan-modus afgeskakel word."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Jy is reeds aan \'n VPN gekoppel. As jy aan \'n ander een koppel, sal jou bestaande VPN vervang word."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Skakel aan"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> kan nie koppel nie"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Hierdie program steun nie altyd-aan VPN nie."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2523,8 +2528,11 @@
       <item quantity="one">Wys %d versteekte item</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Netwerk en internet"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Gekoppelde toestelle"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Programme en kennisgewings"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Gebruiker en rekeninge"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Programverstekke"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Taal: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Instellings"</string>
     <string name="search_menu" msgid="6283419262313758339">"Soekinstellings"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Soekinstellings"</string>
@@ -2626,7 +2634,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Vervang werkprofielklanke?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Vervang"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Jou huidige werkprofielklanke sal vervang word met jou persoonlike profiel se klanke"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Stel kennisgewings op"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"Gevorderd"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Werkkennisgewings"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Flikker kennisgewing-liggie"</string>
@@ -3032,8 +3041,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Dinsdag 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Dinsdag 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Dinsdag 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Sien alles"</string>
-    <string name="see_less" msgid="1250265310929558370">"Sien minder"</string>
     <string name="disconnected" msgid="5787956818111197212">"Ontkoppel"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> van die data is gebruik"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 000fa48..4816de9 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"ግንኙነት አቋርጥ"</string>
     <string name="vpn_version" msgid="1939804054179766249">"ሥሪት <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPNን እርሳ"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"አሁን ያለው VPN ይተካል?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"አስቀድመው ከአንድ ቪፒኤን ጋር ተገናኝተዋል። ከተለየ ጋር ከተገናኙ ነባሩ የእርስዎ ቪፒኤን ይተካል።"</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"አሁን ያለው VPN ይተካ?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"ሁልጊዜ-የበራ VPN ይቀናበር?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"ይህን ቅንብር በማብራት VPN በተሳካ ሁኔታ እስኪገናኝ ድረስ የበይነመረብ ግንኙነት አይኖረዎትም"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"የእርስዎ ነባር VPN ይተካል፣ እና VPN በተሳካ ሁኔታ እስኪገናኝ ድረስ የበይነመረብ ግንኙነት አይኖረዎትም"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"አስቀድመው ሁልጊዜ ከበራ VPN ጋር ተገናኝተዋል። ከተለየ ጋር ከተገናኙ ነባሩ የእርስዎ VPN  ይተካል፣ እና የሁልጊዜ-በርቷል ሁነታ ይጠፋል።"</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"አስቀድመው ከአንድ VPN ጋር ተገናኝተዋል። ከተለየ ጋር ከተገናኙ ነባሩ የእርስዎ VPN ይተካል።"</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"አብራ"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> መገናኘት አልቻለም"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"ይህ መተግበሪያ ሁልጊዜ-የሚበራ ቪፒኤን አይደግፍም።"</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2523,8 +2528,11 @@
       <item quantity="other">%d የተደበቁ ንጥሎችን አሳይ</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"አውታረ መረብ እና በይነመረብ"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"የተገናኙ መሣሪያዎች"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"መተግበሪያዎች እና ማሳወቂያዎች"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"ተጠቃሚ እና መለያዎች"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"የመተግበሪያ ነባሪዎች"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"ቋንቋ፦ <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"ቅንብሮች"</string>
     <string name="search_menu" msgid="6283419262313758339">"የፍለጋ ቅንብሮች"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"የፍለጋ ቅንብሮች"</string>
@@ -2626,7 +2634,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"በመገለጫ ድምጾች ይተኩ?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"ተካ"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"የአሁኑ የስራ መገለጫዎ ድምጾች በግል መገለጫ ድምጾችዎ ይተካሉ"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"ማሳወቂያዎችን አዋቅር"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"የላቀ"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"የስራ ማሳወቂያዎች"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"የማሳወቂያ ብርሃን አሳይ"</string>
@@ -3032,8 +3041,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"ማክሰኞ 6:10 ከሰዓት (አመሻሽ)"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"ማክሰኞ 6:02 ከሰዓት (አመሻሽ)"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"ማክሰኞ 6:03 ከሰዓት (አመሻሽ)"</string>
-    <string name="see_all" msgid="8883901630052886984">"ሁሉንም ይመልከቱ"</string>
-    <string name="see_less" msgid="1250265310929558370">"ያነሰ ይመልከቱ"</string>
     <string name="disconnected" msgid="5787956818111197212">"ግንኙነት ተቋርጧል"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> ከውሂብ ጥቅም ላይ ውሏል"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 0bc0be2..5ff4ef8 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -2348,8 +2348,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"قطع الاتصال"</string>
     <string name="vpn_version" msgid="1939804054179766249">"الإصدار <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"نسيان الشبكة الظاهرية الخاصة"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"هل تريد استبدال الشبكة الظاهرية الخاصة الحالية؟"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"‏أنت متصل بالفعل بشبكة ظاهرية خاصة (VPN). وإذا اتصلت بشبكة ظاهرية خاصة أخرى، فسيتم استبدال شبكتك الظاهرية الخاصة الحالية."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"هل تريد استبدال الشبكة الظاهرية الخاصة الحالية؟"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"هل تريد تشغيل الشبكة الظاهرية الخاصة باستمرار؟"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"‏عند تشغيل هذا الإعداد، لن تتمكن من الاتصال بالإنترنت إلا بعد أن ينجح اتصال الشبكة الظاهرية الخاصة (VPN)"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"‏سيتم استبدال شبكتك الظاهرية الخاصة (VPN) الحالية ولن تتمكن من استخدام اتصال الإنترنت إلا بعد أن ينجح اتصال الشبكة الظاهرية الخاصة"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"‏أنت متصل حاليًا بشبكة ظاهرية خاصة (VPN) مضبوطة على وضع التشغيل الدائم. وإذا اتصلت بشبكة ظاهرية خاصة أخرى، فسيتم استبدال شبكتك الظاهرية الخاصة الحالية، كما سيتم إيقاف وضع التشغيل الدائم."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"‏أنت متصل حاليًا بشبكة ظاهرية خاصة (VPN). وإذا اتصلت بشبكة ظاهرية خاصة أخرى، فسيتم استبدال شبكتك الظاهرية الخاصة الحالية."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"تشغيل"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"يتعذر الاتصال بـ <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"‏لا يتوافق هذا التطبيق مع التشغيل الدائم للشبكة الظاهرية الخاصة (VPN)."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2611,8 +2616,11 @@
       <item quantity="one">‏عرض %d عنصر مخفي</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"الشبكة والإنترنت"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"الأجهزة المرتبطة"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"التطبيقات والإشعارات"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"المستخدم والحسابات"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"الاعدادات الافتراضية للتطبيق"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"اللغة: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"الإعدادات"</string>
     <string name="search_menu" msgid="6283419262313758339">"إعدادات البحث"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"إعدادات البحث"</string>
@@ -2714,7 +2722,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"أتستبدل أصوات ملف العمل؟"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"استبدال"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"سيتم استبدال الأصوات الحالية للملف الشخصي للعمل بأصوات ملفك الشخصي على حسابك الشخصي."</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"تهيئة الإشعارات"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"متقدمة"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"إشعارات العمل"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"ضوء الاشعار بالنبض"</string>
@@ -3152,8 +3161,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"الثلاثاء ٦:٠١ م"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"الثلاثاء ٦:٠٢ م"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"الثلاثاء ٦:٠٣ م"</string>
-    <string name="see_all" msgid="8883901630052886984">"عرض الكل"</string>
-    <string name="see_less" msgid="1250265310929558370">"عرض عناصر أقل"</string>
     <string name="disconnected" msgid="5787956818111197212">"تم قطع الاتصال"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"تم استخدام <xliff:g id="AMOUNT">%1$s</xliff:g> من البيانات"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-az-rAZ/strings.xml b/res/values-az-rAZ/strings.xml
index 7fd0f1c..ae1fdc6 100644
--- a/res/values-az-rAZ/strings.xml
+++ b/res/values-az-rAZ/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Bağlantını kəsin"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versiya <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN\'i unudun"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Mövcud VPN əvəz edilsin?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Artıq VPN\'ə qoşulmusunuz. Əgər başqa birinə qoşulsanız, mövcud VPN əvəz ediləcək."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Mövcud VPN əvəz edilsin?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Hər zaman aktiv VPN quraşdırılsın?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Bu ayarı aktiv etməklə, uğurlu VPN bağlantısına kimi İnternet bağlantınız olmayacaq"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Mövcud VPN əvəz ediləcək və uğurlu VPN bağlantısına kimi İnternet bağlantınız olmayacaq"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Artıq hər zaman aktiv VPN\'ə qoşulmusunuz. Əgər başqa birinə qoşulsanız, mövcud VPN əvəz ediləcək və hər zaman aktiv rejimi deaktiv ediləcək."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Artıq VPN\'ə qoşulmusunuz. Əgər başqa birinə qoşulsanız, mövcud VPN əvəz ediləcək."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Aktiv edin"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> qoşula bilməz"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Bu tətbiq hər zaman aktiv olan VPN\'i dəstəkləmir."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2523,8 +2528,11 @@
       <item quantity="one">%d gizli element göstərin</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Şəbəkə və İnternet"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Qoşulmuş cihazlar"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Tətbiq və bildirişlər"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"İstifadəçi və hesablar"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Tətbiq defoltları"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Dil: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Ayarlar"</string>
     <string name="search_menu" msgid="6283419262313758339">"Axtarış ayarları"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Axtarış ayarları"</string>
@@ -2626,7 +2634,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"İş profili səsləri əvəz edilsin?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Əvəz edin"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Cari iş profili səsləriniz şəxsi profil səsləri ilə əvəz olunacaq"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Konfiqurasiya bildirişləri"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"Qabaqcıl"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"İş bildirişləri"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Puls bildiriş işığı"</string>
@@ -3032,8 +3041,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Ç.a 6:01GƏ"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Ç.a 6:02GƏ"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Ç.a 6:03GƏ"</string>
-    <string name="see_all" msgid="8883901630052886984">"Hamısına baxın"</string>
-    <string name="see_less" msgid="1250265310929558370">"Baxışı kiçildin"</string>
     <string name="disconnected" msgid="5787956818111197212">"Bağlantı kəsilib"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> data istifadə edildi"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 15a42e8..2938e65 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -2297,8 +2297,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Prekini vezu"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Verzija <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Zaboravi VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Želite li da zamenite postojeći VPN?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Već ste povezani sa VPN-om. Kada biste se povezali sa nekim drugim VPN-om, postojeći VPN bi bio zamenjen."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Želite li da zamenite postojeći VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Želite li da podesite uvek uključeni VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Ako uključite ovo podešavanje, nećete imati internet vezu dok se VPN ne poveže"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Postojeći VPN će biti zamenjen i nećete imati internet vezu dok se VPN ne poveže"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Već ste povezani sa uvek uključenim VPN-om. Ako se povežete sa nekim drugim, postojeći VPN će biti zamenjen, a režim Uvek uključen će biti isključen."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Već ste povezani sa VPN-om. Ako se povežete sa nekim drugim, postojeći VPN će biti zamenjen."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Uključi"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Povezivanje sa VPN-om <xliff:g id="VPN_NAME">%1$s</xliff:g> nije uspelo"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Ova aplikacija ne podržava stalno uključeni VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2545,8 +2550,11 @@
       <item quantity="other">Prikaži %d skrivenih stavki</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Mreža i internet"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Povezani uređaji"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplikacije i obaveštenja"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Korisnik i nalozi"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Podrazumevane aplikacije"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Jezik: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Podešavanja"</string>
     <string name="search_menu" msgid="6283419262313758339">"Pretražite podešavanja"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Podešavanja pretrage"</string>
@@ -2648,7 +2656,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Zameniti zvuke profila za Work?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Zameni"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Aktuelni zvuci profila za Work će biti zamenjeni zvucima sa ličnog profila"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Konfigurišite obaveštenja"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Podešavanja obaveštenja"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Napredna"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Obaveštenja za Work"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Pulsirajuće obaveštenje"</string>
@@ -3062,8 +3070,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Uto 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Uto 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Uto 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Prikaži sve"</string>
-    <string name="see_less" msgid="1250265310929558370">"Prikaži manje"</string>
     <string name="disconnected" msgid="5787956818111197212">"Veza je prekinuta"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Koristi se <xliff:g id="AMOUNT">%1$s</xliff:g> podataka"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-be-rBY/strings.xml b/res/values-be-rBY/strings.xml
index 94c5cd7..41b81e5 100644
--- a/res/values-be-rBY/strings.xml
+++ b/res/values-be-rBY/strings.xml
@@ -2314,8 +2314,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Адключыць"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Версія <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Забыць VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Замяніць існуючую VPN?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Вы ўжо падключаны да VPN. Калі вы падключыцеся да іншай, ваша існуючая VPN будзе заменена."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Замяніць існуючую VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Наладзіць заўсёды ўключаную VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Калі вы ўключыце гэту наладу, у вас не будзе падключэння да інтэрнэту, пакуль VPN паспяхова не падключыцца"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Ваша існуючая VPN будзе заменена, і ў вас не будзе падключэння да інтэрнэту, пакуль VPN паспяхова не падключыцца"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Вы ўжо падключаны да заўсёды ўключанай VPN. Калі вы падключыцеся да іншай, ваша існуючая VPN будзе заменена, а рэжым \"заўсёды ўключана\" будзе адключаны."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Вы ўжо падключаны да VPN. Калі вы падключыцеся да іншай, ваша існуючая VPN будзе заменена."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Уключыць"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> не можа падключыцца"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Гэта праграма не падтрымлівае пастаянна ўключаную VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2567,8 +2572,11 @@
       <item quantity="other">Паказаць %d схаванага элемента</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Сетка і інтэрнэт"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Падключаныя прылады"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Праграмы і апавяшчэнні"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Карыстальнік і ўліковыя запісы"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Cтандартныя налады праграмы"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Мова: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Налады"</string>
     <string name="search_menu" msgid="6283419262313758339">"Налады пошуку"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Налады пошуку"</string>
@@ -2670,7 +2678,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Замяніць гукі прац. профілю?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Замяніць"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Вашы бягучыя гукі працоўнага профілю будуць заменены гукамі вашага асабістага профілю"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Наладзіць апавяшчэнні"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"Пашыраныя"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Апавяшчэнні працоўнага профілю"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Мігценне індыкатара апавяшчэння"</string>
@@ -3092,8 +3101,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Аўторак, 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Аўторак, 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Аўторак, 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Прагледзець усё"</string>
-    <string name="see_less" msgid="1250265310929558370">"Паказаць менш"</string>
     <string name="disconnected" msgid="5787956818111197212">"Адлучана"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> трафіку выкарыстана"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 025185b..180c787 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Прекратяване на връзката"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Версия <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Забравяне на вирт. частна мрежа (VPN)"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Да се замени ли съществуващата VPN?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Вече сте свързани с виртуална частна мрежа (VPN). Ако установите връзка с друга VPN, съществуващата ще бъде заменена."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Да се замени ли съществуващата VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Да се зададе ли винаги включена виртуална частна мрежа (VPN)?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Ако включите тази настройка, няма да имате достъп до интернет, докато не се установи успешна връзка с виртуалната частна мрежа (VPN)"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Съществуващата ви виртуална частна мрежа (VPN) ще бъде заменена и няма да имате достъп до интернет, докато не се установи успешна връзка с новата VPN"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Вече сте свързани с винаги включена виртуална частна мрежа (VPN). Ако установите връзка с друга VPN, съществуващата ще бъде заменена и режимът за винаги включена виртуална частна мрежа ще се деактивира."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Вече сте свързани с виртуална частна мрежа (VPN). Ако установите връзка с друга VPN, съществуващата ще бъде заменена."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Включване"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Не може да се установи връзка с мрежата „<xliff:g id="VPN_NAME">%1$s</xliff:g>“"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Това приложение не поддържа винаги включени VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2523,8 +2528,11 @@
       <item quantity="one">Показване на %d скрит елемент</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Мрежа и интернет"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Свързани устройства"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Приложения и известия"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Потребител и профили"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Стандартни настройки на приложението"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Език: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Настройки"</string>
     <string name="search_menu" msgid="6283419262313758339">"Търсете в настройките"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Настройки за търсене"</string>
@@ -2626,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Замяна на звуците за служебния потребителски профил?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Замяна"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Текущите звуци за служебния ви потребителски профил ще бъдат заменени с тези за личния ви"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Конфигуриране на известията"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Предпочитания за известията"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Разширени"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Служебни известия"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Пулсираща светлина"</string>
@@ -3032,8 +3040,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"вт, 18:01 ч."</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"вт, 18:02 ч."</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"вт, 18:03 ч."</string>
-    <string name="see_all" msgid="8883901630052886984">"Преглед на всичко"</string>
-    <string name="see_less" msgid="1250265310929558370">"Преглед на по-малко"</string>
     <string name="disconnected" msgid="5787956818111197212">"Връзката е прекратена"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Използвали сте <xliff:g id="AMOUNT">%1$s</xliff:g> от данните"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-bn-rBD/strings.xml b/res/values-bn-rBD/strings.xml
index a97819b..56137cb 100644
--- a/res/values-bn-rBD/strings.xml
+++ b/res/values-bn-rBD/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"সংযোগ বিচ্ছিন্ন করুন"</string>
     <string name="vpn_version" msgid="1939804054179766249">"<xliff:g id="VERSION">%s</xliff:g> সংস্করণ"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN সরিয়ে দিন"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"বিদ্যমান VPN প্রতিস্থাপন করতে চান?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"আপনি ইতিমধ্যেই একটি VPN এর সাথে সংযুক্ত রয়েছেন৷ যদি আপনি অন্য আরেকটিতে সংযুক্ত করে থাকেন তবে আপনার বিদ্যমান VPN প্রতিস্থাপন করা হবে৷"</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"বিদ্যমান VPN প্রতিস্থাপন করতে চান?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"সর্বদা-চালু VPN সেট করতে চান?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"এই সেটিং চালু করলে, VPN সফলভাবে সংযুক্ত না হওয়া পর্যন্ত আপনার কাছে কোনো ইন্টারনেট সংযোগ থাকবে না"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"আপনার বিদ্যমান VPN প্রতিস্থাপন করা হবে এবং VPN সফলভাবে সংযুক্ত না হওয়া পর্যন্ত আপনার কাছে কোনো ইন্টারনেট সংযোগ থাকবে না"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"আপনি ইতিমধ্যেই একটি সর্বদা-চালু VPN এর সাথে সংযুক্ত রয়েছেন৷ আপনি যদি অন্য আরেকটিতে সংযোগ করেন তবে আপনার বিদ্যমান VPN প্রতিস্থাপন করা হবে এবং সর্বদা-চালু মোড বন্ধ হবে৷"</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"আপনি ইতিমধ্যেই একটি VPN এর সাথে সংযুক্ত রয়েছেন৷ যদি আপনি অন্য আরেকটিতে সংযুক্ত করে থাকেন তবে আপনার বিদ্যমান VPN প্রতিস্থাপন করা হবে৷"</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"চালু করুন"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> সংযোগ করতে পারেনি"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"এই অ্যাপ্লিকেশানটি সর্বদা-চালু VPN সমর্থন করে না৷"</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2522,10 +2527,12 @@
       <item quantity="one">%dটি লুকানো আইটেম দেখান</item>
       <item quantity="other">%dটি লুকানো আইটেম দেখান</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"নেটওয়ার্ক ও ইন্টারনেট"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"সংযুক্ত ডিভাইস"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"অ্যাপ্স &amp; বিজ্ঞপ্তিগুলি"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"ব্যবহারকারি &amp; অ্যাকাউন্টগুলি"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"অ্যাপ ডিফল্টগুলি"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"ভাষা: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"সেটিংস"</string>
     <string name="search_menu" msgid="6283419262313758339">"অনুসন্ধান সেটিংস"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"অনুসন্ধান সেটিংস"</string>
@@ -2627,7 +2634,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"কর্মস্থলের প্রোফাইলের ধ্বনিগুলিকে প্রতিস্থাপন করতে চান?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"প্রতিস্থাপন করুন"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"আপনার বর্তমান কর্মস্থালের প্রোফাইলের ধ্বনিগুলিকে আপনার ব্যক্তিগত প্রোফাইলের ধ্বনিগুলির সাথে প্রতিস্থাপন করা হবে"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"বিজ্ঞপ্তি কনফিগার করুন"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"উন্নত"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"কর্মস্থলের বিজ্ঞপ্তিগুলি"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"পাল্স বিজ্ঞপ্তির জন্য আলো"</string>
@@ -3033,8 +3041,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"মঙ্গলবার সন্ধ্যা ৬.০১ এ"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"মঙ্গলবার সন্ধ্যা ৬.০২ এ"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"মঙ্গলবার সন্ধ্যা ৬.০৩ এ"</string>
-    <string name="see_all" msgid="8883901630052886984">"সবগুলি দেখুন"</string>
-    <string name="see_less" msgid="1250265310929558370">"কম দেখুন"</string>
     <string name="disconnected" msgid="5787956818111197212">"সংযোগ বিচ্ছিন্ন হয়েছে"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> ডেটা ব্যবহৃত হয়েছে"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-bs-rBA/strings.xml b/res/values-bs-rBA/strings.xml
index 0ff7283..f4543e1 100644
--- a/res/values-bs-rBA/strings.xml
+++ b/res/values-bs-rBA/strings.xml
@@ -2297,8 +2297,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Prekini vezu"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Verzija <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Zaboravi VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Želite li zamijeniti postojeći VPN?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Već ste povezani na VPN. Ako se povežete na drugi VPN, postojeći VPN će biti zamijenjen."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Želite li zamijeniti postojeći VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Želite li postaviti uvijek uključen VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Ako uključite ovu postavku, nećete imati internetsku vezu dok se VPN ne poveže uspješno."</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Vaša postojeći VPN će biti zamijenjen i nećete imati internetsku vezu dok se VPN ne poveže uspješno."</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Već ste povezani na \"uvijek uključen\" VPN. Ako se povežete na drugu mrežu, vaša postojeća VPN će biti zamijenjena, a način rada \"uvijek uključeno\" će se isključiti."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Već ste povezani na VPN. Ako se povežete na drugu, postojeći VPN će biti zamijenjen."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Uključi"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> se ne može povezati"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Ova aplikacija ne podržava uvijek aktivni VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2545,8 +2550,11 @@
       <item quantity="other">Prikaži %d skrivenih stavki</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Mreža i internet"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Povezani uređaji"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplikacije i obavještenja"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Korisnik i računi"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Zadane akcije aplikacije"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Jezik: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Postavke"</string>
     <string name="search_menu" msgid="6283419262313758339">"Postavke pretraživanja"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Postavke pretraživanja"</string>
@@ -2648,7 +2656,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Želite li zamijeniti zvuke radnog profila?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Zamijeni"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Postojeći zvuci vašeg radnog profila će se zamijeniti zvucima vašeg ličnog profila"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Konfiguriraj obavještenja"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"Napredno"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Obavještenja za posao"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Pulsirajuće svjetlo obavještenja"</string>
@@ -3062,8 +3071,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Uto 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Uto 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Uto 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Prikaži sve"</string>
-    <string name="see_less" msgid="1250265310929558370">"Vidi manje"</string>
     <string name="disconnected" msgid="5787956818111197212">"Isključen"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> podataka u upotrebi"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 41b9f7c..6a3c14c 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Desconnecta"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versió <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Oblida la VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Vols substituir la VPN actual?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Ja t\'has connectat a una VPN. Si et connectes a una altra VPN, se substituirà l\'actual."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Vols substituir la VPN actual?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Vols definir la VPN sempre activa?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"En activar aquesta opció de configuració, no tindràs connexió a Internet fins que la VPN es connecti correctament"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"La VPN existent se substituirà i no tindràs connexió a Internet fins que la VPN es connecti correctament"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Ja estàs connectat a una VPN que està sempre activa. Si et connectes a una altra, se substituirà la VPN existent i el mode sempre actiu es desactivarà."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Ja t\'has connectat a una VPN. Si et connectes a una altra VPN, se substituirà l\'actual."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Activa"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"No es pot connectar amb <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Aquesta aplicació no és compatible amb una VPN sempre activada."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2523,8 +2528,11 @@
       <item quantity="one">Mostra %d element amagat</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Xarxa i Internet"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Dispositius connectats"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplicacions i notificacions"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Usuari i comptes"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Valors predeterminats de l\'aplicació"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Idioma: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Configuració"</string>
     <string name="search_menu" msgid="6283419262313758339">"Configuració de la cerca"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Configuració de la cerca"</string>
@@ -2626,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Subst. sons del perfil prof.?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Substitueix"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"El sons actuals del teu perfil professional se substituiran pels del perfil personal"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Configura les notificacions"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Preferències de notificació"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Avançada"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Notificacions de la feina"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Llum de notificació"</string>
@@ -3032,8 +3040,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Dimarts a les 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Dimarts a les 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Dimarts a les 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Mostra-ho tot"</string>
-    <string name="see_less" msgid="1250265310929558370">"Mostra\'n menys"</string>
     <string name="disconnected" msgid="5787956818111197212">"Desconnectada"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> de dades utilitzades"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index aab8f9a..ff297eb 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -811,7 +811,7 @@
     <string name="wifi_advanced_ip_address_title" msgid="6215297094363164846">"IP adresa"</string>
     <string name="wifi_saved_access_points_label" msgid="2013409399392285262">"Uložené sítě"</string>
     <string name="wifi_advanced_settings_label" msgid="3654366894867838338">"Nastavení IP adresy"</string>
-    <string name="wifi_advanced_not_available" msgid="5823045095444154586">"Pokročilá nastavení sítě Wi-Fi nejsou pro tohoto uživatele dostupná."</string>
+    <string name="wifi_advanced_not_available" msgid="5823045095444154586">"Rozšířená nastavení sítě Wi-Fi nejsou pro tohoto uživatele dostupná."</string>
     <string name="wifi_ip_settings_menu_save" msgid="7296724066102908366">"Uložit"</string>
     <string name="wifi_ip_settings_menu_cancel" msgid="6582567330136502340">"Zrušit"</string>
     <string name="wifi_ip_settings_invalid_ip_address" msgid="2513142355364274970">"Zadejte platnou IP adresu."</string>
@@ -2314,8 +2314,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Odpojit"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Verze <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Zapomenout VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Nahradit stávající síť VPN?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Již jste připojeni k síti VPN. Pokud se připojíte k jiné, stávající bude nahrazena."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Nahradit stávající síť VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Nastavit trvalou síť VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Pokud toto nastavení zapnete, do úspěšného připojení k VPN budete odpojeni od internetu"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Stávající síť VPN bude nahrazena a do jejího úspěšného připojení budete odpojeni od internetu."</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Již jste připojeni k trvalé síti VPN. Pokud se připojíte k jiné, stávající síť VPN bude nahrazena a trvalý režim vypnut."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Již jste připojeni k síti VPN. Pokud se připojíte k jiné, stávající síť VPN bude nahrazena."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Zapnout"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Síť <xliff:g id="VPN_NAME">%1$s</xliff:g> se nedokáže připojit"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Tato aplikace nepodporuje trvalou síť VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"Síť VPN"</string>
@@ -2567,8 +2572,11 @@
       <item quantity="one">Zobrazit %d skrytou položku</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Síť a internet"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Připojená zařízení"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplikace a oznámení"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Uživatel a účty"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Výchozí aplikace"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Jazyk: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Nastavení"</string>
     <string name="search_menu" msgid="6283419262313758339">"Nastavení vyhledávání"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Vyhledávání nastavení"</string>
@@ -2670,7 +2678,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Nahradit zvuky prac. profilu?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Nahradit"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Zvuky aktuálního pracovního profilu budou nahrazeny zvuky z osobního profilu"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Konfigurovat oznámení"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Nastavení oznámení"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Rozšířená nastavení"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Pracovní oznámení"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Blikat kontrolkou oznámení"</string>
@@ -3092,8 +3100,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Út 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Út 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Út 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Zobrazit vše"</string>
-    <string name="see_less" msgid="1250265310929558370">"Zobrazit méně"</string>
     <string name="disconnected" msgid="5787956818111197212">"Odpojeno"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Využití dat: <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index d33c683..75668c8 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -1341,7 +1341,7 @@
     <string name="legal_information" msgid="5769301644270604095">"Juridiske oplysninger"</string>
     <string name="contributors_title" msgid="5917703088825286504">"Bidragydere"</string>
     <string name="manual" msgid="3025943393642974445">"Brugervejledning"</string>
-    <string name="regulatory_labels" msgid="1293050314122427492">"Etiketter for regler"</string>
+    <string name="regulatory_labels" msgid="1293050314122427492">"Certificeringer"</string>
     <string name="safety_and_regulatory_info" msgid="5103161279848427185">"Brugervejledning i sikkerhed og regler"</string>
     <string name="copyright_title" msgid="865906688917260647">"Ophavsret"</string>
     <string name="license_title" msgid="1990487604356037871">"Licens"</string>
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Afbryd"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Version <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Glem VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Vil du erstatte det eksisterende VPN?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Du har allerede forbindelse til et VPN. Hvis du opretter forbindelse til et andet, erstattes dit eksisterende VPN."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Erstat det eksisterende VPN-netværk?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Skal VPN altid være slået til?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Hvis du aktiverer denne indstilling, vil du ikke have nogen internetforbindelse, før VPN-netværket etablerer forbindelse."</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Dit eksisterende VPN-netværk erstattes, og du vil ikke have nogen internetforbindelse, før VPN-netværket etablerer forbindelse."</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Du har allerede forbindelse til et VPN-netværk, der altid er slået til. Hvis du opretter forbindelse til et andet netværk, erstattes dit eksisterende VPN, og Altid slået til-tilstanden deaktiveres."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Du har allerede forbindelse til et VPN-netværk. Hvis du opretter forbindelse til et andet, erstattes dit eksisterende VPN."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Aktivér"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> kan ikke oprette forbindelse"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Denne app understøtter ikke VPN, der altid er aktiveret."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2522,17 +2527,19 @@
       <item quantity="one">Vis %d skjult element</item>
       <item quantity="other">Vis %d skjulte elementer</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Netværk &amp; internet"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Tilsluttede enheder"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apps og underretninger"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Bruger og konti"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Appstandarder"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Sprog: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Indstillinger"</string>
     <string name="search_menu" msgid="6283419262313758339">"Søgeindstillinger"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Indstillinger for søgning"</string>
     <string name="search_recents_queries_label" msgid="2128811638532309069">"Seneste søgninger"</string>
     <string name="search_results_label" msgid="4163304782363526148">"Resultater"</string>
     <string name="keywords_wifi" msgid="1395786161993828719">"wifi, wi-fi, netværksforbindelse"</string>
-    <string name="keywords_more_default_sms_app" msgid="2265154063220360784">"sms-besked, sms, beskeder, chat"</string>
+    <string name="keywords_more_default_sms_app" msgid="2265154063220360784">"sms, sende sms-beskeder, beskeder, chat"</string>
     <string name="keywords_more_mobile_networks" msgid="1538131503712402851">"mobil, mobilselskab, trådløs, data, 4g, 3g, 2g, lte"</string>
     <string name="keywords_wifi_calling" msgid="1784064367330122679">"wifi, wi-fi, ring op, opkald"</string>
     <string name="keywords_home" msgid="3626170808219458848">"starter"</string>
@@ -2616,7 +2623,7 @@
     <string name="zen_mode_option_alarms" msgid="5785372117288803600">"Kun alarmer"</string>
     <string name="zen_mode_option_no_interruptions" msgid="8107126344850276878">"Total stilhed"</string>
     <string name="zen_mode_summary_combination" msgid="8715563402849273459">"<xliff:g id="MODE">%1$s</xliff:g>: <xliff:g id="EXIT_CONDITION">%2$s</xliff:g>"</string>
-    <string name="zen_mode_visual_interruptions_settings_title" msgid="6751708745442997940">"Bloker synsforstyrrelser"</string>
+    <string name="zen_mode_visual_interruptions_settings_title" msgid="6751708745442997940">"Bloker visuelle forstyrrelser"</string>
     <string name="sound_work_settings" msgid="6774324553228566442">"Lyde for arbejdsprofil"</string>
     <string name="work_use_personal_sounds_title" msgid="1148331221338458874">"Brug lyde fra privat profil"</string>
     <string name="work_use_personal_sounds_summary" msgid="2940241783139859361">"Lydene for arbejdsprofil er de samme som din private profil"</string>
@@ -2627,7 +2634,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Erstat lyde for arbejdsprofil?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Erstat"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Dine aktuelle lyde for din arbejdsprofil erstattes af lydene fra din private profil"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Konfigurer underretninger"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"Avanceret"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Arbejdsunderretninger"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Blink ved nye underretninger"</string>
@@ -2761,10 +2769,10 @@
     <string name="zen_mode_summary_alarms_only_by_time" msgid="7465525754879341907">"Skift til Kun alarmer frem til <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
     <string name="zen_mode_summary_always" msgid="6172985102689237703">"Skift til Afbryd altid"</string>
     <string name="zen_mode_screen_on" msgid="7712038508173845101">"Bloker, når skærmen er tændt"</string>
-    <string name="zen_mode_screen_on_summary" msgid="6444425984146305149">"Undgå, at underretninger, der er lydløse, når Forstyr ikke er slået til, vises på skærmen"</string>
+    <string name="zen_mode_screen_on_summary" msgid="6444425984146305149">"Underretninger, der gøres lydløse af Forstyr ikke, vises ikke på skærmen"</string>
     <string name="zen_mode_screen_off" msgid="5026854939192419879">"Bloker, når skærmen er slukket"</string>
-    <string name="zen_mode_screen_off_summary" msgid="6490932947651798094">"Undgå, at underretninger, der er lydløse, når Forstyr ikke er slået til, tænder skærmen eller får underretningslyset til at blinke"</string>
-    <string name="zen_mode_screen_off_summary_no_led" msgid="3758698381956461866">"Undgå, at underretninger, der er lydløse, når Forstyr ikke er slået til, tænder skærmen"</string>
+    <string name="zen_mode_screen_off_summary" msgid="6490932947651798094">"Underretninger, der gøres lydløse af Forstyr ikke, tænder ikke skærmen og får ikke underretningslyset til at blinke"</string>
+    <string name="zen_mode_screen_off_summary_no_led" msgid="3758698381956461866">"Underretninger, der gøres lydløse af Forstyr ikke, tænder ikke skærmen"</string>
     <string name="zen_mode_all_visual_interruptions" msgid="2851308980832487411">"Fra"</string>
     <string name="zen_mode_screen_on_visual_interruptions" msgid="7373348148129140528">"Når skærmen er tændt"</string>
     <string name="zen_mode_screen_off_visual_interruptions" msgid="4850792880144382633">"Når skærmen er slukket"</string>
@@ -3033,8 +3041,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Tir. 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Tir. 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Tir. 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Se alle"</string>
-    <string name="see_less" msgid="1250265310929558370">"Se mindre"</string>
     <string name="disconnected" msgid="5787956818111197212">"Afbrudt"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Du har brugt <xliff:g id="AMOUNT">%1$s</xliff:g> data"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index f1228f4..9c18935 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Verbindung trennen"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Version <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN entfernen"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Aktuelles VPN ersetzen?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Du bist schon mit einem VPN verbunden. Wenn du eine Verbindung mit einem anderen VPN herstellst, wird dein aktuelles ersetzt."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Aktuelles VPN ersetzen?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Durchgehend aktives VPN aktivieren?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Wenn du diese Einstellung aktivierst, wird die Internetverbindung erst dann hergestellt, wenn eine VPN-Verbindung besteht"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Dein aktuelles VPN wird ersetzt. Die Internetverbindung wird erst dann hergestellt, wenn eine VPN-Verbindung besteht"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Du bist schon mit einem durchgehend aktiven VPN verbunden. Wenn du eine Verbindung mit einem anderen VPN herstellst, wird dein aktuelles ersetzt und der Modus \"Durchgehend aktives VPN\" wird deaktiviert."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Du bist schon mit einem VPN verbunden. Wenn du eine Verbindung mit einem anderen VPN herstellst, wird dein aktuelles ersetzt."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Aktivieren"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Verbindung zu <xliff:g id="VPN_NAME">%1$s</xliff:g> kann nicht hergestellt werden"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Bei dieser App wird Always-On-VPN nicht unterstützt."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2355,7 +2360,7 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="1659125858619760573">"Nicht eingerichtet – Arbeitsprofil"</string>
     <string name="user_admin" msgid="993402590002400782">"Administrator"</string>
     <string name="user_you" msgid="1639158809315025986">"Ich (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="5148818000228994488">"Alias"</string>
+    <string name="user_nickname" msgid="5148818000228994488">"Spitzname"</string>
     <string name="user_add_user_type_title" msgid="2146438670792322349">"Hinzufügen"</string>
     <string name="user_add_max_count" msgid="5405885348463433157">"Du kannst bis zu <xliff:g id="USER_COUNT">%1$d</xliff:g> Nutzer hinzufügen."</string>
     <string name="user_add_user_item_summary" msgid="4702776187132008661">"Die Nutzer haben eigene Apps und Inhalte."</string>
@@ -2523,8 +2528,11 @@
       <item quantity="one">%d ausgeblendetes Element anzeigen</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Netzwerk &amp; Internet"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Verbundene Geräte"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apps &amp; Benachrichtigungen"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Nutzer &amp; Konten"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"App-Standardeinstellungen"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Sprache: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Einstellungen"</string>
     <string name="search_menu" msgid="6283419262313758339">"Sucheinstellungen"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Sucheinstellungen"</string>
@@ -2626,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Töne für Arbeitsprofil ersetzen?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Ersetzen"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Deine aktuellen Töne für das Arbeitsprofil werden durch die Töne für das persönliche Profil ersetzt"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Benachrichtigungen"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Benachrichtigungseinstellungen"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Erweitert"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Geschäftliche Benachrichtigungen"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Benachrichtigungslicht"</string>
@@ -3034,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Di. 18:01 Uhr"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Di. 18:02 Uhr"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Di. 18:03 Uhr"</string>
-    <string name="see_all" msgid="8883901630052886984">"Alle anzeigen"</string>
-    <string name="see_less" msgid="1250265310929558370">"Weniger anzeigen"</string>
     <string name="disconnected" msgid="5787956818111197212">"Verbindung getrennt"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> genutzt"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
@@ -3186,7 +3192,7 @@
     <string name="support_escalation_title" msgid="4111071371281023145">"Wir sind für dich da"</string>
     <string name="support_escalation_24_7_title" msgid="8118369197749832074">"Wir sind täglich rund um die Uhr für dich da"</string>
     <string name="support_escalation_24_7_content_description" msgid="3772776213036994533">"Wir sind täglich rund um die Uhr für dich da"</string>
-    <string name="support_escalation_summary" msgid="8473084168776014405">"Unser Kundenservice hilft dir beim Lösen von Problemen"</string>
+    <string name="support_escalation_summary" msgid="8473084168776014405">"Unser Kundenservice hilft dir gerne weiter"</string>
     <string name="support_escalation_24_7_summary" msgid="2802773279262547187">"Unser Kundenservice steht täglich rund um die Uhr zur Verfügung"</string>
     <string name="support_escalation_closed_summary" msgid="2240967274380168303">"Durchsuche die Hilfe oder versuche es noch einmal während der Geschäftszeiten des Supports (Ortszeit):&lt;br&gt;&lt;b&gt;<xliff:g id="OPERATION_HOURS">%s</xliff:g>&lt;/b&gt;"</string>
     <string name="support_escalation_no_internet_summary" msgid="2526082812336597989">"Geschäftszeiten des telefonischen Supports (Ortszeit)&lt;br&gt;&lt;b&gt;<xliff:g id="OPERATION_HOURS">%s</xliff:g>&lt;/b&gt;"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index eac5eaa..8a88794 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -756,7 +756,7 @@
     <string name="wifi_wps_nfc_enter_password" msgid="2288214226916117159">"Εισαγάγετε κωδικό πρόσβασης δικτύου"</string>
     <string name="wifi_scan_always_turnon_message" msgid="203123538572122989">"Για τη βελτίωση της ακρίβειας της τοποθεσίας σας και για άλλους σκοπούς, η εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> επιθυμεί να ενεργοποιήσει τη σάρωση δικτύων, ακόμη και όταν το Wi-Fi είναι απενεργοποιημένο.\n\nΝα επιτρέπεται αυτή η ενέργεια για όλες τις εφαρμογές που επιθυμούν σάρωση;"</string>
     <string name="wifi_scan_always_turnoff_message" msgid="5538901671131941043">"Για να το απενεργοποιήσετε, μεταβείτε στις Σύνθετες ρυθμίσεις, στο μενού υπερχείλισης."</string>
-    <string name="wifi_scan_always_confirm_allow" msgid="5355973075896817232">"Να επιτραπεί"</string>
+    <string name="wifi_scan_always_confirm_allow" msgid="5355973075896817232">"Να επιτρέπεται"</string>
     <string name="wifi_scan_always_confirm_deny" msgid="4463982053823520710">"Απόρριψη"</string>
     <string name="wifi_hotspot_title" msgid="7726205804813286950">"Να γίνει σύνδεση στο σημείο πρόσβασης Wi-Fi;"</string>
     <string name="wifi_hotspot_message" msgid="3673833421453455747">"Η εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> απαιτεί σύνδεση διαδικτύου, πριν από τη σύνδεση στο δίκτυο."</string>
@@ -1240,8 +1240,8 @@
     <string name="master_clear_accounts" product="default" msgid="6412857499147999073">\n\n"Αυτήν τη στιγμή είστε συνδεδεμένοι στους παρακάτω λογαριασμούς:\n"</string>
     <string name="master_clear_other_users_present" product="default" msgid="5161423070702470742">\n\n"Υπάρχουν άλλοι χρήστες σε αυτήν τη συσκευή.\n"</string>
     <string name="master_clear_desc_also_erases_external" msgid="1903185203791274237"><li>"Μουσική"</li>\n<li>"Φωτογραφίες"</li>\n<li>"Άλλα δεδομένα χρήστη"</li></string>
-    <string name="master_clear_desc_erase_external_storage" product="nosdcard" msgid="7744115866662613411">\n\n"Πρέπει να γίνει διαγραφή του "<b>"αποθηκευτικού χώρου USB"</b>" για να γίνει, επίσης, εκκαθάριση της μουσικής, των εικόνων και άλλων δεδομένων."</string>
-    <string name="master_clear_desc_erase_external_storage" product="default" msgid="4801026652617377093">\n\n"Πρέπει να γίνει εκκαθάριση της "<b>"κάρτας SD"</b>" για να γίνει, επίσης, εκκαθάριση της μουσικής, των εικόνων και άλλων δεδομένων."</string>
+    <string name="master_clear_desc_erase_external_storage" product="nosdcard" msgid="7744115866662613411">\n\n"Πρέπει να γίνει διαγραφή του "<b>"αποθηκευτικού χώρου USB"</b>" για να γίνει, επίσης, διαγραφή της μουσικής, των εικόνων και άλλων δεδομένων."</string>
+    <string name="master_clear_desc_erase_external_storage" product="default" msgid="4801026652617377093">\n\n"Πρέπει να γίνει διαγραφή της "<b>"κάρτας SD"</b>" για να γίνει, επίσης, διαγραφή της μουσικής, των εικόνων και άλλων δεδομένων."</string>
     <string name="erase_external_storage" product="nosdcard" msgid="969364037450286809">"Διαγρ. αποθ. χώρου USB"</string>
     <string name="erase_external_storage" product="default" msgid="1397239046334307625">"Διαγραφή κάρτας SD"</string>
     <string name="erase_external_storage_description" product="nosdcard" msgid="4728558173931599429">"Διαγράψτε όλα τα δεδομένα που υπάρχουν στον εσωτερικό αποθηκευτικό χώρο USB του τηλεφώνου σας, όπως αρχεία μουσικής και φωτογραφίες"</string>
@@ -1442,13 +1442,13 @@
     <string name="screen_compatibility_label" msgid="663250687205465394">"Συμβατότητα οθόνης"</string>
     <string name="permissions_label" msgid="2605296874922726203">"Άδειες"</string>
     <string name="cache_header_label" msgid="1877197634162461830">"Κρυφή μνήμη"</string>
-    <string name="clear_cache_btn_text" msgid="5756314834291116325">"Εκκαθάριση προσωρινής μνήμης"</string>
+    <string name="clear_cache_btn_text" msgid="5756314834291116325">"Διαγραφή προσωρινής μνήμης"</string>
     <string name="cache_size_label" msgid="7505481393108282913">"Κρυφή μνήμη"</string>
     <plurals name="uri_permissions_text" formatted="false" msgid="3983110543017963732">
       <item quantity="other">%d στοιχεία</item>
       <item quantity="one">1 στοιχείο</item>
     </plurals>
-    <string name="clear_uri_btn_text" msgid="8575655132961012158">"Εκκαθάριση πρόσβασης"</string>
+    <string name="clear_uri_btn_text" msgid="8575655132961012158">"Διαγραφή πρόσβασης"</string>
     <string name="controls_label" msgid="7611113077086853799">"Στοιχεία ελέγχου"</string>
     <string name="force_stop" msgid="7435006169872876756">"Αναγκαστική διακοπή"</string>
     <string name="total_size_label" msgid="1048676419552557254">"Σύνολο"</string>
@@ -1462,12 +1462,12 @@
     <string name="install_text" msgid="884360662922471113">"Εγκατάσταση"</string>
     <string name="disable_text" msgid="6544054052049395202">"Απενεργοποίηση"</string>
     <string name="enable_text" msgid="9217362512327828987">"Ενεργοποίηση"</string>
-    <string name="clear_user_data_text" msgid="5597622864770098388">"Εκκαθάριση δεδομένων"</string>
+    <string name="clear_user_data_text" msgid="5597622864770098388">"Διαγραφή δεδομένων"</string>
     <string name="app_factory_reset" msgid="6635744722502563022">"Κατάργηση εγκατάστασης ενημερώσεων"</string>
     <string name="auto_launch_enable_text" msgid="4275746249511874845">"Έχετε επιλέξει να γίνεται εκκίνηση αυτής της εφαρμογής από προεπιλογή για ορισμένες ενέργειες."</string>
     <string name="always_allow_bind_appwidgets_text" msgid="566822577792032925">"Έχετε επιλέξει να επιτρέπεται σε αυτήν την εφαρμογή η δημιουργία γραφικών στοιχείων και η πρόσβαση στα δεδομένα τους."</string>
     <string name="auto_launch_disable_text" msgid="7800385822185540166">"Δεν έχουν οριστεί προεπιλογές."</string>
-    <string name="clear_activities" msgid="7408923511535174430">"Εκκαθάριση προεπιλογών"</string>
+    <string name="clear_activities" msgid="7408923511535174430">"Διαγραφή προεπιλογών"</string>
     <string name="screen_compatibility_text" msgid="1616155457673106022">"Αυτή η εφαρμογή ενδέχεται να μην έχει σχεδιαστεί για την οθόνη σας. Εδώ μπορείτε να ελέγξετε τον τρόπο προσαρμογής της στην οθόνη σας."</string>
     <string name="ask_compatibility" msgid="7225195569089607846">"Να ερωτώμαι κατά την εκκίνηση"</string>
     <string name="enable_compatibility" msgid="5806819252068617811">"Κλιμάκωση εφαρμογών"</string>
@@ -1505,8 +1505,8 @@
     <string name="app_not_found_dlg_title" msgid="3127123411738434964"></string>
     <string name="app_not_found_dlg_text" msgid="4893589904687340011">"Η εφαρμογή δεν βρέθηκε στη λίστα με τις εγκατεστημένες εφαρμογές."</string>
     <string name="clear_data_failed" msgid="7214074331627422248">"Δεν ήταν δυνατή η απαλοιφή των δεδομένων εφαρμογής."</string>
-    <string name="clear_failed_dlg_title" msgid="2387060805294783175">"Εκκαθάριση δεδομένων"</string>
-    <string name="clear_failed_dlg_text" msgid="5464475937929941008">"Δεν ήταν δυνατή η εκκαθάριση δεδομένων για την εφαρμογή."</string>
+    <string name="clear_failed_dlg_title" msgid="2387060805294783175">"Διαγραφή δεδομένων"</string>
+    <string name="clear_failed_dlg_text" msgid="5464475937929941008">"Δεν ήταν δυνατή η διαγραφή δεδομένων για την εφαρμογή."</string>
     <string name="security_settings_desc" product="tablet" msgid="1292421279262430109">"Αυτή η εφαρμογή μπορεί να αποκτήσει πρόσβαση στα ακόλουθα στο tablet σας:"</string>
     <string name="security_settings_desc" product="default" msgid="61749028818785244">"Αυτή η εφαρμογή μπορεί να αποκτήσει πρόσβαση στα ακόλουθα στο τηλέφωνό σας:"</string>
     <string name="security_settings_desc_multi" product="tablet" msgid="7300932212437084403">"Αυτή η εφαρμογή έχει τη δυνατότητα πρόσβασης στα παρακάτω στοιχεία στο tablet σας. Προκειμένου να βελτιωθεί η απόδοση και να περιοριστεί η χρήση μνήμης, ορισμένα από αυτά τα δικαιώματα είναι διαθέσιμα στην εφαρμογή <xliff:g id="BASE_APP_NAME">%1$s</xliff:g> καθώς εκτελείται με την ίδια διαδικασία με τις εφαρμογές <xliff:g id="ADDITIONAL_APPS_LIST">%2$s</xliff:g>:"</string>
@@ -2000,7 +2000,7 @@
     <string name="credentials_install" product="default" msgid="953914549998062317">"Εγκατάσταση από κάρτα SD"</string>
     <string name="credentials_install_summary" product="nosdcard" msgid="4220422806818210676">"Εγκατάσταση πιστοποιητικών από συσκευή αποθήκευσης"</string>
     <string name="credentials_install_summary" product="default" msgid="5737658257407822713">"Εγκατάσταση πιστοποιητικών από την κάρτα SD"</string>
-    <string name="credentials_reset" msgid="3239382277144980418">"Εκκαθάριση διαπιστευτηρίων"</string>
+    <string name="credentials_reset" msgid="3239382277144980418">"Διαγραφή διαπιστευτηρίων"</string>
     <string name="credentials_reset_summary" msgid="3369361230171260282">"Κατάργηση όλων των πιστοποιητικών"</string>
     <string name="trusted_credentials" msgid="4266945289534242402">"Αξιόπιστα διαπ/τήρια"</string>
     <string name="trusted_credentials_summary" msgid="6735221351155686632">"Προβολή αξιόπιστων πιστοποιητικών CA"</string>
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Αποσύνδεση"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Έκδοση <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Διαγραφή VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Αντικατάσταση υπάρχοντος VPN;"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Είστε ήδη συνδεδεμένοι σε ένα VPN. Εάν συνδεθείτε σε κάποιο άλλο, το υπάρχον VPN θα αντικατασταθεί."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Αντικατάσταση υπάρχοντος VPN;"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Ενεργοποίηση του μονίμως ενεργού VPN;"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Με την ενεργοποίηση αυτής της ρύθμισης, δεν θα έχετε σύνδεση στο διαδίκτυο μέχρι να συνδεθεί επιτυχώς το VPN"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Το υπάρχον VPN θα αντικατασταθεί και δεν θα έχετε σύνδεση στο διαδίκτυο μέχρι να συνδεθεί επιτυχώς το VPN"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Είστε ήδη συνδεδεμένοι σε ένα μονίμως ενεργό VPN. Εάν συνδεθείτε σε κάποιο άλλο, το υπάρχον VPN θα αντικατασταθεί και η λειτουργία μόνιμης ενεργοποίησης θα απενεργοποιηθεί."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Είστε ήδη συνδεδεμένοι σε κάποιο VPN. Εάν συνδεθείτε σε κάποιο άλλο, το υπάρχον VPN θα αντικατασταθεί."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Ενεργοποίηση"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Αδυναμία σύνδεσης <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Αυτή η εφαρμογή δεν υποστηρίζει μονίμως ενεργό VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2523,8 +2528,11 @@
       <item quantity="one">Εμφάνιση %d κρυφού στοιχείου</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Δίκτυο και διαδίκτυο"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Συνδεδεμένες συσκευές"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Εφαρμογές και ειδοποιήσεις"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Χρήστης και λογαριασμοί"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Προεπιλογές εφαρμογής"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Γλώσσα: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Ρυθμίσεις"</string>
     <string name="search_menu" msgid="6283419262313758339">"Ρυθμίσεις αναζήτησης"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Ρυθμίσεις αναζήτησης"</string>
@@ -2549,7 +2557,7 @@
     <string name="keywords_text_to_speech_output" msgid="5150660047085754699">"αξιολόγηση, γλώσσα, προεπιλογή, μιλώ, ομιλία, tts, προσβασιμότητα, αναγνώστης οθόνης, τυφλός"</string>
     <string name="keywords_date_and_time" msgid="758325881602648204">"ρολόι, στρατιωτικό"</string>
     <string name="keywords_network_reset" msgid="6024276007080940820">"επαναφορά, επαναφορά, εργοστασιακές ρυθμίσεις"</string>
-    <string name="keywords_factory_data_reset" msgid="5894970373671252165">"σβήσιμο, διαγραφή, αποκατάσταση, εκκαθάριση, κατάργηση"</string>
+    <string name="keywords_factory_data_reset" msgid="5894970373671252165">"σβήσιμο, διαγραφή, αποκατάσταση, διαγραφή, κατάργηση"</string>
     <string name="keywords_printing" msgid="1701778563617114846">"εκτυπωτής"</string>
     <string name="keywords_sounds" msgid="7146245090127541167">"ηχητικό σήμα ομιλητή"</string>
     <string name="keywords_sounds_and_notifications_interruptions" msgid="5426093074031208917">"μην μην ενοχλείτε, διακόπτω, διακοπή, διάλειμμα"</string>
@@ -2626,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Αντικατάσταση ήχων προφίλ εργασίας;"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Αντικατάσταση"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Οι τρέχοντες ήχοι του προφίλ εργασίας σας θα αντικατασταθούν με τους ήχους του προσωπικού προφίλ σας"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Διαμόρφωση ειδοποιήσεων"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Προτιμήσεις ειδοποιήσεων"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Σύνθετες ρυθμίσεις"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Ειδοποιήσεις εργασίας"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Φωτεινή ένδειξη ειδοπ."</string>
@@ -3032,8 +3040,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Τρίτη 6:01 μ.μ."</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Τρίτη 6:02 μ.μ."</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Τρίτη 6:03 μ.μ."</string>
-    <string name="see_all" msgid="8883901630052886984">"Εμφάνιση όλων"</string>
-    <string name="see_less" msgid="1250265310929558370">"Εμφάνιση λιγότερων"</string>
     <string name="disconnected" msgid="5787956818111197212">"Αποσυνδεδεμένο"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Χρησιμοποιήθηκε το <xliff:g id="AMOUNT">%1$s</xliff:g> των δεδομένων"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
@@ -3166,8 +3172,8 @@
     <string name="notification_log_details_ranking_null" msgid="244660392058720919">"Το αντικείμενο κατάταξης λείπει."</string>
     <string name="notification_log_details_ranking_none" msgid="599607025882587844">"Το αντικείμενο κατάταξης δεν περιέχει αυτό το κλειδί."</string>
     <string name="special_access" msgid="8275242424094109976">"Ειδική πρόσβαση"</string>
-    <string name="confirm_convert_to_fbe_warning" msgid="1487005506049137659">"Να γίνει όντως εκκαθάριση των δεδομένων χρήστη και μετατροπή σε κρυπτογράφηση αρχείου;"</string>
-    <string name="button_confirm_convert_fbe" msgid="7101855374850373091">"Εκκαθάριση και μετατροπή"</string>
+    <string name="confirm_convert_to_fbe_warning" msgid="1487005506049137659">"Να γίνει όντως διαγραφή των δεδομένων χρήστη και μετατροπή σε κρυπτογράφηση αρχείου;"</string>
+    <string name="button_confirm_convert_fbe" msgid="7101855374850373091">"Διαγραφή και μετατροπή"</string>
     <string name="reset_shortcut_manager_throttling" msgid="6495066467198668994">"Επαναφορά ορίου ρυθμού ShortcutManager"</string>
     <string name="reset_shortcut_manager_throttling_complete" msgid="1826770872063707900">"Έγινε επαναφορά του ορίου ρυθμού ShortcutManager"</string>
     <string name="notification_suggestion_title" msgid="4506524937307816475">"Έλεγχος ειδοποιήσεων κλειδώματος οθόνης"</string>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index b96d10a..ba7f4fd 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Disconnect"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Version <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Forget VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Replace existing VPN?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"You\'re already connected to a VPN. If you connect to a different one, your existing VPN will be replaced."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Replace existing VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Set always-on VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"By turning on this setting, you won\'t have an Internet connection until the VPN successfully connects"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Your existing VPN will be replaced and you won\'t have an Internet connection until the VPN successfully connects"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"You\'re already connected to an always-on VPN. If you connect to a different one, your existing VPN will be replaced and always-on mode will turn off."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"You\'re already connected to a VPN. If you connect to a different one, your existing VPN will be replaced."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Turn on"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> can\'t connect"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"This app doesn\'t support always-on VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2523,8 +2528,11 @@
       <item quantity="one">Show %d hidden item</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Network &amp; Internet"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Connected devices"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apps &amp; notifications"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"User &amp; accounts"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"App defaults"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Language: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Settings"</string>
     <string name="search_menu" msgid="6283419262313758339">"Search Settings"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Search settings"</string>
@@ -2626,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Replace work profile sounds?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Replace"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Your current work profile sounds will be replaced with your personal profile sounds"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Configure notifications"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Notification preferences"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Advanced"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Work notifications"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Pulse notification light"</string>
@@ -3032,8 +3040,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Tue 6:01 p.m."</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Tue 6:02 p.m."</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Tue 6:03 p.m."</string>
-    <string name="see_all" msgid="8883901630052886984">"See all"</string>
-    <string name="see_less" msgid="1250265310929558370">"See less"</string>
     <string name="disconnected" msgid="5787956818111197212">"Disconnected"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> of data used"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 568ab05..41b53b2 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Disconnect"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Version <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Forget VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Replace existing VPN?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"You\'re already connected to a VPN. If you connect to a different one, your existing VPN will be replaced."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Replace existing VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Set always-on VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"By turning on this setting, you won\'t have an Internet connection until the VPN successfully connects"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Your existing VPN will be replaced and you won\'t have an Internet connection until the VPN successfully connects"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"You\'re already connected to an always-on VPN. If you connect to a different one, your existing VPN will be replaced and always-on mode will turn off."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"You\'re already connected to a VPN. If you connect to a different one, your existing VPN will be replaced."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Turn on"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> can\'t connect"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"This app doesn\'t support always-on VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2523,8 +2528,11 @@
       <item quantity="one">Show %d hidden item</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Network &amp; Internet"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Connected devices"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apps &amp; notifications"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"User &amp; accounts"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"App defaults"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Language: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Settings"</string>
     <string name="search_menu" msgid="6283419262313758339">"Search Settings"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Search settings"</string>
@@ -2626,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Replace work profile sounds?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Replace"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Your current work profile sounds will be replaced with your personal profile sounds"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Configure notifications"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Notification preferences"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Advanced"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Work notifications"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Pulse notification light"</string>
@@ -3032,8 +3040,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Tue 6:01 p.m."</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Tue 6:02 p.m."</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Tue 6:03 p.m."</string>
-    <string name="see_all" msgid="8883901630052886984">"See all"</string>
-    <string name="see_less" msgid="1250265310929558370">"See less"</string>
     <string name="disconnected" msgid="5787956818111197212">"Disconnected"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> of data used"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 568ab05..41b53b2 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Disconnect"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Version <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Forget VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Replace existing VPN?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"You\'re already connected to a VPN. If you connect to a different one, your existing VPN will be replaced."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Replace existing VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Set always-on VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"By turning on this setting, you won\'t have an Internet connection until the VPN successfully connects"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Your existing VPN will be replaced and you won\'t have an Internet connection until the VPN successfully connects"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"You\'re already connected to an always-on VPN. If you connect to a different one, your existing VPN will be replaced and always-on mode will turn off."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"You\'re already connected to a VPN. If you connect to a different one, your existing VPN will be replaced."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Turn on"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> can\'t connect"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"This app doesn\'t support always-on VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2523,8 +2528,11 @@
       <item quantity="one">Show %d hidden item</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Network &amp; Internet"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Connected devices"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apps &amp; notifications"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"User &amp; accounts"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"App defaults"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Language: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Settings"</string>
     <string name="search_menu" msgid="6283419262313758339">"Search Settings"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Search settings"</string>
@@ -2626,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Replace work profile sounds?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Replace"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Your current work profile sounds will be replaced with your personal profile sounds"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Configure notifications"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Notification preferences"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Advanced"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Work notifications"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Pulse notification light"</string>
@@ -3032,8 +3040,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Tue 6:01 p.m."</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Tue 6:02 p.m."</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Tue 6:03 p.m."</string>
-    <string name="see_all" msgid="8883901630052886984">"See all"</string>
-    <string name="see_less" msgid="1250265310929558370">"See less"</string>
     <string name="disconnected" msgid="5787956818111197212">"Disconnected"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> of data used"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 667ec4c..e27b898 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Desconectar"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versión <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Borrar VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"¿Reemplazar VPN existente?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Ya estás conectado a una VPN. Si te conectas a otra, se reemplazará la VPN actual."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"¿Reemplazar VPN existente?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"¿Configurar la VPN siempre activa?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Si activas esta configuración, no tendrás conexión a Internet hasta que la VPN se conecte correctamente"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Se reemplazará tu VPN actual y no tendrás conexión a Internet hasta que la VPN se conecte correctamente."</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Ya estás conectado a una VPN siempre activa. Si te conectas a otra, se reemplazará la VPN actual y se desactivará el modo siempre activo."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Ya estás conectado a una VPN. Si te conectas a otra, se reemplazará la VPN actual."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Activar"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"No se puede establecer conexión con <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Esta app no admite VPN siempre activada."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2523,8 +2528,11 @@
       <item quantity="one">Mostrar %d elemento oculto</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Internet y red"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Dispositivos conectados"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apps y notificaciones"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Usuario y cuentas"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Valores predeterminados de apps"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Idioma: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Configuración"</string>
     <string name="search_menu" msgid="6283419262313758339">"Configuración de búsqueda"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Configuración de búsqueda"</string>
@@ -2626,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"¿Reemplazar sonidos de perfil?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Reemplazar"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Se reemplazarán los sonidos actuales de tu perfil de trabajo por los de tu perfil personal"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Configurar las notificaciones"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Preferencias de notificaciones"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Avanzada"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Notificaciones de trabajo"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Luz de notificación"</string>
@@ -3030,8 +3038,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Mar 6:01 p.m."</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Mar 6:02 p.m."</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Mar 6:03 p.m."</string>
-    <string name="see_all" msgid="8883901630052886984">"Ver todas"</string>
-    <string name="see_less" msgid="1250265310929558370">"Ver menos"</string>
     <string name="disconnected" msgid="5787956818111197212">"Desconectado"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> de datos usados"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index a22c406..e510f2f 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -2278,8 +2278,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Desconectar"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versión <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Borrar VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"¿Sustituir VPN actual?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Ya estás conectado a una red VPN. Si te conectas a otra, la VPN actual se sustituirá."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"¿Sustituir VPN actual?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"¿Configurar el modo de VPN siempre activada?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Si activas esta opción, no tendrás acceso a Internet hasta que se conecte la red VPN"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"La nueva red VPN sustituirá a la actual y no tendrás acceso a Internet hasta que dicha VPN se conecte"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Ya estás conectado a una red VPN siempre activada. Si te conectas a otra, esta sustituirá a la VPN actual y se desactivará el modo de VPN siempre activada."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Ya estás conectado a una red VPN. Si te conectas a otra, esta sustituirá a la VPN actual."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Activar"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"No se puede conectar a <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Esta aplicación no admite una red VPN siempre activada."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2521,8 +2526,11 @@
       <item quantity="one">Mostrar %d elemento oculto</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Red e Internet"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Dispositivos conectados"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplicaciones y notificaciones"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Cuentas de usuario"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Valores predeterminados de aplicaciones"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Idioma: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Ajustes"</string>
     <string name="search_menu" msgid="6283419262313758339">"Ajustes de búsqueda"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Ajustes de búsqueda"</string>
@@ -2624,7 +2632,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"¿Sustituir sonidos del perfil de trabajo?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Sustituir"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Se sustituirán los sonidos actuales del perfil de trabajo por los sonidos del perfil personal"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Configurar notificaciones"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Preferencias de notificaciones"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Opciones avanzadas"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Notificaciones de trabajo"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Usar LED de notificaciones"</string>
@@ -3030,8 +3038,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Martes a las 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Martes a las 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Martes a las 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Ver todo"</string>
-    <string name="see_less" msgid="1250265310929558370">"Ver menos"</string>
     <string name="disconnected" msgid="5787956818111197212">"Desconectado"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> de datos usados"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml
index a84c007..1c747dc 100644
--- a/res/values-et-rEE/strings.xml
+++ b/res/values-et-rEE/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Katkesta ühendus"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versioon <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Unusta VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Kas asendada olemasolev VPN?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Teil juba on ühendus VPN-iga. Kui jätkate mõne teisega, asendatakse teie olemasolev VPN."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Kas asendada olemasolev VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Kas määrata alati sisselülitatud VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Kui selle seade sisse lülitate, pole teil Interneti-ühendust, kuni VPN-iga ühenduse loomine õnnestub"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Teie olemasolev VPN asendatakse ja teil pole Interneti-ühendust, kuni VPN-iga ühenduse loomine õnnestub"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Teil juba on ühendus alati sisselülitatud VPN-iga. Kui jätkate mõne teisega, asendatakse teie olemasolev VPN ja alati sisselülitatud režiim lülitatakse välja."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Teil juba on ühendus VPN-iga. Kui jätkate mõne teisega, asendatakse teie olemasolev VPN."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Lülita sisse"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> ei saa ühendust luua"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"See rakendus ei toeta alati sisselülitatud VPN-i."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2523,8 +2528,11 @@
       <item quantity="one">Kuva %d peidetud üksus</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Võrk ja Internet"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Ühendatud seadmed"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Rakendused ja märguanded"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Kasutaja ja kontod"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Vaikerakendused"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Keel: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Seaded"</string>
     <string name="search_menu" msgid="6283419262313758339">"Otsingu seaded"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Otsinguseaded"</string>
@@ -2626,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Kas asendada tööprofiili helid?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Asenda"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Teie praegused tööprofiili helid asendatakse isikliku profiili helidega"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Märguannete seadistamine"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Märguannete eelistused"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Täpsemad"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Töö märguanded"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Vilkuv märguande tuli"</string>
@@ -3032,8 +3040,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Teisipäev, 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Teisipäev, 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Teisipäev, 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Kuva kõik"</string>
-    <string name="see_less" msgid="1250265310929558370">"Kuva vähem"</string>
     <string name="disconnected" msgid="5787956818111197212">"Ühendus on katkestatud"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Kasutatud andmemaht on <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-eu-rES/strings.xml b/res/values-eu-rES/strings.xml
index 3fd2ca4..43efc66 100644
--- a/res/values-eu-rES/strings.xml
+++ b/res/values-eu-rES/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Deskonektatu"</string>
     <string name="vpn_version" msgid="1939804054179766249">"<xliff:g id="VERSION">%s</xliff:g> bertsioa"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Ahaztu VPN konexioa"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Dagoen VPN konexioa ordeztu nahi duzu?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Bazaude VPN sare batera konektatuta. Beste batera konektatzen bazara, daukazuna ordeztuko da."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Dagoen VPN konexioa ordeztu nahi duzu?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"VPNa beti aktibatuta egoteko aukera ezarri nahi duzu?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Ezarpen hau aktibatzen baduzu, ez duzu Interneteko konexiorik izango VPN sarera behar bezala konektatu arte"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Lehendik duzun VPNa ordeztuko da eta ez duzu Interneteko konexiorik izango VPN sarera behar bezala konektatu arte"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Beti aktibatuta dagoen VPN sare batera konektatuta zaude dagoeneko. Beste VPN batera konektatzen bazara, lehendik duzuna ordeztuko da eta desaktibatu egingo da beti aktibatuta edukitzeko modua."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Bazaude VPN sare batera konektatuta. Beste batera konektatzen bazara, daukazuna ordeztuko da."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Aktibatu"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Ezin da konektatu <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Aplikazio honek ez du onartzen beti aktibatuta dagoen VPN sarea."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2522,10 +2527,12 @@
       <item quantity="other">Erakutsi %d elementu ezkutu</item>
       <item quantity="one">Erakutsi %d elementu ezkutu</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Sareak eta Internet"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Konektatutako gailuak"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplikazioak eta jakinarazpenak"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Erabiltzailea eta kontuak"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Aplikazio lehenetsiak"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Hizkuntza: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Ezarpenak"</string>
     <string name="search_menu" msgid="6283419262313758339">"Bilaketa-ezarpenak"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Bilaketa-ezarpenak"</string>
@@ -2627,7 +2634,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Laneko profilaren soinua ordeztu?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Ordeztu"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Laneko profilaren soinuak profil pertsonaleko soinuekin ordeztuko dira"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Konfiguratu jakinarazpenak"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"Ezarpen aurreratuak"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Laneko jakinarazpenak"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Jakinarazpen-argi keinukaria"</string>
@@ -3033,8 +3041,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Asteartea, 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Asteartea, 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Asteartea, 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Ikusi guztiak"</string>
-    <string name="see_less" msgid="1250265310929558370">"Ikusi gutxiago"</string>
     <string name="disconnected" msgid="5787956818111197212">"Deskonektatuta"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Datuen <xliff:g id="AMOUNT">%1$s</xliff:g> erabili dira"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index e09b877..430cd31 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"قطع ارتباط"</string>
     <string name="vpn_version" msgid="1939804054179766249">"نسخه <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"‏فراموش کردن VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"‏VPN موجود جایگزین شود؟"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"‏درحال حاضر به VPN وصل هستید. اگر به VPN دیگری متصل شوید، VPN فعلی‌تان جایگزین می‌شود."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"‏VPN موجود جایگزین شود؟"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"‏VPN همیشه روشن تنظیم شود؟"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"‏با روشن کردن این تنظیم، تا وقتی VPN با موفقیت متصل نشود، اتصال اینترنت نخواهید داشت"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"‏VPN فعلی شما جایگزین می‌شود و تا وقتی VPN با موفقیت متصل نشود، اتصال اینترنت نخواهید داشت"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"‏درحال‌حاضر به VPN همیشه روشنی وصل هستید. اگر به VPN دیگری متصل شوید، VPN فعلی‌تان جایگزین می‌شود و حالت همیشه روشن خاموش می‌شود."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"‏درحال حاضر به VPN وصل هستید. اگر به VPN دیگری متصل شوید، VPN فعلی‌تان جایگزین می‌شود."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"فعال کردن"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> نمی‌تواند متصل شود"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"‏این برنامه از VPN همیشه روشن پشتیبانی نمی‌کند."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2522,10 +2527,12 @@
       <item quantity="one">‏نمایش %d مورد پنهان</item>
       <item quantity="other">‏نمایش %d مورد پنهان</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"شبکه و اینترنت"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"دستگاه‌های متصل"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"برنامه‌ها و اعلان‌ها"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"حساب‌های کاربر"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"پیش‌فرض‌های برنامه"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"زبان: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"تنظیمات"</string>
     <string name="search_menu" msgid="6283419262313758339">"تنظیمات جستجو"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"تنظیمات جستجو"</string>
@@ -2627,7 +2634,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"صداهای نمایه کاری‌تان جایگزین شوند؟"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"جایگزینی"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"صداهای نمایه کاری کنونی‌تان با صداهای نمایه شخصی‌تان جایگزین می‌شوند"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"پیکربندی اعلان‌ها"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"پیشرفته"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"اعلان‌های کار"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"چراغ اعلان چشمک بزند"</string>
@@ -3033,8 +3041,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"سه‌شنبه ۶:۰۱ ب.ظ"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"سه‌شنبه ۶:۰۲ ب.ظ"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"سه‌شنبه ۶:۰۳ ب.ظ"</string>
-    <string name="see_all" msgid="8883901630052886984">"مشاهده همه"</string>
-    <string name="see_less" msgid="1250265310929558370">"مشاهده موارد کمتر"</string>
     <string name="disconnected" msgid="5787956818111197212">"قطع ارتباط"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> داده استفاده‌شده"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 6581bf0..b997344 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Katkaise yhteys"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versio <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Unohda VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Korvataanko nykyinen VPN?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Olet jo yhteydessä VPN-verkkoon. Jos muodostat yhteyden uuteen VPN:ään, nykyinen verkkosi korvataan."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Korvataanko nykyinen VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Määritetäänkö aina käytössä oleva VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Jos otat tämän asetuksen käyttöön, et voi muodostaa internetyhteyttä ennen kuin VPN-yhteys on muodostettu."</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Nykyinen VPN korvataan, etkä voi muodostaa internetyhteyttä ennen kuin VPN-yhteys on muodostettu."</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Olet jo yhteydessä aina käytössä olevaan VPN-verkkoon. Jos muodostat yhteyden uuteen VPN:ään, nykyinen verkkosi korvataan ja aina käytössä ‑tila poistetaan käytöstä."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Olet jo yhteydessä VPN-verkkoon. Jos muodostat yhteyden uuteen VPN:ään, nykyinen verkkosi korvataan."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Ota käyttöön"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Yhteyttä verkkoon <xliff:g id="VPN_NAME">%1$s</xliff:g> ei voi muodostaa"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Sovellus ei tue aina käytössä olevaa VPN-yhteyttä."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2523,8 +2528,11 @@
       <item quantity="one">Näytä %d piilotettu kohde</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Verkko ja internet"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Yhdistetyt laitteet"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Sovellukset ja ilmoitukset"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Käyttäjä ja tilit"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Oletussovellukset"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Kieli: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Asetukset"</string>
     <string name="search_menu" msgid="6283419262313758339">"Hakuasetukset"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Hakuasetukset"</string>
@@ -2626,7 +2634,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Korvataanko työprofiiliäänet?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Korvaa"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Työprofiilin nykyiset äänet korvataan henkilökohtaisen profiilin äänillä."</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Ilmoitusten määrittäminen"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"Lisäasetukset"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Työilmoitukset"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Vilkuta ilmoitusvaloa"</string>
@@ -3032,8 +3041,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Ti klo 18.01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Ti klo 18.02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Ti klo 18.03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Näytä kaikki"</string>
-    <string name="see_less" msgid="1250265310929558370">"Näytä vähemmän"</string>
     <string name="disconnected" msgid="5787956818111197212">"Yhteys katkaistu"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> datasta käytetty"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index bb15810..413f659 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -599,7 +599,7 @@
     <string name="bluetooth_device_context_connect_advanced" msgid="2643129703569788771">"Options…"</string>
     <string name="bluetooth_menu_advanced" msgid="8572178316357220524">"Options avancées"</string>
     <string name="bluetooth_advanced_titlebar" msgid="2142159726881547669">"Paramètres Bluetooth avancés"</string>
-    <string name="bluetooth_empty_list_bluetooth_off" msgid="6351930724051893423">"Si Bluetooth activé, appareil peut communiquer avec autres appareils Bluetooth à proximité."</string>
+    <string name="bluetooth_empty_list_bluetooth_off" msgid="6351930724051893423">"Si la fonctionnalité Bluetooth est activée, l\'appareil peut communiquer avec les autres appareils Bluetooth à proximité"</string>
     <string name="ble_scan_notify_text" msgid="1295915006005700650">"Pour améliorer la précision de la localisation, les applications et les services système peuvent toujours détecter les appareils Bluetooth. Vous pouvez modifier ce paramètre dans les <xliff:g id="LINK_BEGIN_0">LINK_BEGIN</xliff:g>paramètres de recherche<xliff:g id="LINK_END_1">LINK_END</xliff:g>."</string>
     <string name="bluetooth_connect_specific_profiles_title" msgid="6952214406025825164">"Se connecter à…"</string>
     <string name="bluetooth_disconnect_a2dp_profile" msgid="3524648279150937177">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> sera déconnecté de l\'audio du support."</string>
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Déconnecter"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Version <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Oublier le profil RPV"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Remplacer le RPV existant?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Vous êtes déjà connecté à un RPV. Si vous vous connectez à un RPV différent, votre RPV actuel sera remplacé."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Remplacer le RPV existant?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Définir le RPV permanent?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Si vous activez ce paramètre, vous ne disposerez d\'aucune connexion Internet jusqu\'à ce que le RPV parvienne à se connecter"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Votre RPV existant sera remplacé, et vous ne disposerez d\'aucune connexion Internet jusqu\'à ce que le RPV parvienne à se connecter"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Vous êtes déjà connecté à un RPV permanent. Si vous vous connectez à un autre RPV, le RPV actuel sera remplacé et le mode permanent sera désactivé."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Vous êtes déjà connecté à un RPV. Si vous vous connectez à un RPV différent, votre RPV actuel sera remplacé."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Activer"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> n\'est pas en mesure de se connecter"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Cette application ne prend pas en charge le RPV permanent."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2522,10 +2527,12 @@
       <item quantity="one">Afficher %d élément masqué</item>
       <item quantity="other">Afficher %d éléments masqués</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Réseau et Internet"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Appareils connectés"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Applications et notifications"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Utilisateurs et comptes"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Valeurs par défaut de l\'application"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Langue : <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Paramètres"</string>
     <string name="search_menu" msgid="6283419262313758339">"Paramètres de recherche"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Paramètres de recherche"</string>
@@ -2627,7 +2634,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Remplacer sons du profil prof.?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Remplacer"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Les sons actuels de votre profil professionnel seront remplacés par ceux de votre profil personnel."</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Configurer les notifications"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"Paramètres avancés"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Notifications professionnelles"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Voyant de notification"</string>
@@ -3033,8 +3041,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Mardi à 18 h 01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Mardi à 18 h 02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Mardi à 18 h 03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Tout afficher"</string>
-    <string name="see_less" msgid="1250265310929558370">"En voir moins"</string>
     <string name="disconnected" msgid="5787956818111197212">"Déconnecté"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> de données utilisées"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
@@ -3198,7 +3204,7 @@
     <string name="support_escalation_by_phone" msgid="4843223043487058711">"Téléphone"</string>
     <string name="support_escalation_by_chat" msgid="977019859110763749">"Clavardage"</string>
     <string name="support_tips_and_tricks_title" msgid="4153466795695447828">"Découvrir des conseils et des astuces"</string>
-    <string name="support_help_feedback_title" msgid="693440287222186718">"Rechercher dans l\'aide et envoyer commentaires"</string>
+    <string name="support_help_feedback_title" msgid="693440287222186718">"Rechercher dans l\'aide et envoyer des commentaires"</string>
     <string name="support_sign_in_required_title" msgid="1367187789121480440">"Communiquer avec l\'équipe d\'assistance"</string>
     <string name="support_sign_in_button_text" msgid="3054769428620671241">"Connexion"</string>
     <string name="support_sign_in_required_help" msgid="5200654782405538114">"Vous n\'arrivez pas à vous connecter?"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 803d247..e397e67 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Déconnecter"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Version <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Supprimer le VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Remplacer le VPN existant ?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Vous êtes déjà connecté à un VPN. Si vous vous connectez à un autre VPN, le VPN actuel sera remplacé."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Remplacer le VPN existant ?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Définir le VPN permanent ?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Si vous activez ce paramètre, vous ne disposerez d\'aucune connexion Internet jusqu\'à ce que le VPN parvienne à se connecter"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Votre VPN existant sera remplacé, et vous ne disposerez d\'aucune connexion Internet jusqu\'à ce que le VPN parvienne à se connecter"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Vous êtes déjà connecté à un VPN permanent. Si vous vous connectez à un autre VPN, le VPN actuel sera remplacé et le mode permanent sera désactivé."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Vous êtes déjà connecté à un VPN. Si vous vous connectez à un autre VPN, le VPN actuel sera remplacé."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Activer"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> ne peut pas se connecter"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Cette application n\'est pas compatible avec le VPN permanent."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2522,10 +2527,12 @@
       <item quantity="one">Afficher %d élément masqué</item>
       <item quantity="other">Afficher %d éléments masqués</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Réseau et Internet"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Appareils connectés"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Applications et notifications"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Utilisateur et comptes"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Valeurs par défaut de l\'application"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Langue : <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Paramètres"</string>
     <string name="search_menu" msgid="6283419262313758339">"Paramètres de recherche"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Paramètres de recherche"</string>
@@ -2627,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Remplacer sons du profil pro ?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Remplacer"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Les sons actuels de votre profil professionnel seront remplacés par ceux de votre profil personnel."</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Configurer les notifications"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Préférences de notification"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Paramètres avancés"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Notifications profil pro"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Voyant de notification"</string>
@@ -3033,8 +3040,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Mardi à 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Mardi à 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Mardi à 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Tout afficher"</string>
-    <string name="see_less" msgid="1250265310929558370">"Moins de détails"</string>
     <string name="disconnected" msgid="5787956818111197212">"Déconnecté"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> des données sont utilisées."</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
@@ -3198,7 +3203,7 @@
     <string name="support_escalation_by_phone" msgid="4843223043487058711">"Téléphone"</string>
     <string name="support_escalation_by_chat" msgid="977019859110763749">"Chat"</string>
     <string name="support_tips_and_tricks_title" msgid="4153466795695447828">"Parcourir les conseils et les astuces"</string>
-    <string name="support_help_feedback_title" msgid="693440287222186718">"Rechercher dans l\'aide ou envoyer comment."</string>
+    <string name="support_help_feedback_title" msgid="693440287222186718">"Rechercher dans l\'aide et envoyer des commentaires"</string>
     <string name="support_sign_in_required_title" msgid="1367187789121480440">"Contacter le service d\'assistance"</string>
     <string name="support_sign_in_button_text" msgid="3054769428620671241">"Connexion"</string>
     <string name="support_sign_in_required_help" msgid="5200654782405538114">"Vous ne pouvez pas vous connecter ?"</string>
diff --git a/res/values-gl-rES/strings.xml b/res/values-gl-rES/strings.xml
index 89e2b6f..bc2d010 100644
--- a/res/values-gl-rES/strings.xml
+++ b/res/values-gl-rES/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Desconectar"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versión <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Esquecer perfil da VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Queres substituír a VPN existente?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Xa te conectaches a unha VPN. Se te conectas a unha distinta, substituirase a VPN actual."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Queres substituír a VPN existente?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Queres definir a VPN como sempre activa?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Ao activar esta configuración, non terás conexión a Internet ata que se conecte a VPN correctamente"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"A VPN existente substituirase e non terás conexión a Internet ata que se conecte á VPN correctamente"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Xa te conectaches a unha VPN sempre activa. Se te conectas a unha VPN distinta, substituirase a actual e desactivarase o modo de VPN sempre activa."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Xa te conectaches a unha VPN. Se te conectas a unha distinta, substituirase a VPN actual."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Activar"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Non se pode conectar a <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Esta aplicación non é compatible con VPN que estean sempre activadas."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2523,8 +2528,11 @@
       <item quantity="one">Mostrar %d elemento oculto</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Rede e Internet"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Dispositivos conectados"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplicacións e notificacións"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Usuario e contas"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Valores predeterminados das aplicacións"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Idioma: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Configuración"</string>
     <string name="search_menu" msgid="6283419262313758339">"Configuración de busca"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Configuración de busca"</string>
@@ -2626,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Substit. sons perfil traballo?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Substituír"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Os sons actuais do perfil do traballo substituiranse cos sons do teu perfil persoal"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Configurar notificacións"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Preferencias de notificacións"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Avanzada"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Notificacións do traballo"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Luz de notificación"</string>
@@ -3032,8 +3040,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Martes ás 6:01 p.m."</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Martes ás 6:02 p.m."</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Martes ás 6:03 p.m."</string>
-    <string name="see_all" msgid="8883901630052886984">"Ver todo"</string>
-    <string name="see_less" msgid="1250265310929558370">"Ver menos"</string>
     <string name="disconnected" msgid="5787956818111197212">"Desconectada"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> de datos utilizados"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-gu-rIN/strings.xml b/res/values-gu-rIN/strings.xml
index 2180f08..5e8021c 100644
--- a/res/values-gu-rIN/strings.xml
+++ b/res/values-gu-rIN/strings.xml
@@ -879,12 +879,12 @@
     <string name="musicfx_title" msgid="3415566786340790345">"સંગીત પ્રભાવો"</string>
     <string name="ring_volume_title" msgid="5592466070832128777">"રિંગ વૉલ્યુમ"</string>
     <string name="vibrate_in_silent_title" msgid="3897968069156767036">"શાંત હોય ત્યારે વાઇબ્રેટ કરો"</string>
-    <string name="notification_sound_title" msgid="5137483249425507572">"ડિફોલ્ટ સૂચના ધ્વનિ"</string>
+    <string name="notification_sound_title" msgid="5137483249425507572">"ડિફોલ્ટ સૂચના માટે ધ્વનિ"</string>
     <string name="incoming_call_volume_title" msgid="8073714801365904099">"રિંગટોન"</string>
     <string name="notification_volume_title" msgid="2012640760341080408">"સૂચના"</string>
     <string name="checkbox_notification_same_as_incoming_call" msgid="1073644356290338921">"સૂચનાઓ માટે ઇનકમિંગ કૉલ વોલ્યુમનો ઉપયોગ કરો"</string>
     <string name="home_work_profile_not_supported" msgid="7457951997970419085">"કાર્ય પ્રોફાઇલ્સનું સમર્થન કરતું નથી"</string>
-    <string name="notification_sound_dialog_title" msgid="3805140135741385667">"ડિફોલ્ટ સૂચના ધ્વનિ"</string>
+    <string name="notification_sound_dialog_title" msgid="3805140135741385667">"ડિફોલ્ટ સૂચના માટે ધ્વનિ"</string>
     <string name="media_volume_title" msgid="3576565767317118106">"મીડિયા"</string>
     <string name="media_volume_summary" msgid="5363248930648849974">"સંગીત અને વિડિઓ માટે વોલ્યૂમ સેટ કરો"</string>
     <string name="alarm_volume_title" msgid="2285597478377758706">"એલાર્મ"</string>
@@ -2282,8 +2282,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"ડિસ્કનેક્ટ કરો"</string>
     <string name="vpn_version" msgid="1939804054179766249">"સંસ્કરણ <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN ભૂલી ગયાં"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"અસ્તિત્વમાંની VPN ને બદલીએ?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"તમે પહેલાંથી VPN થી કનેક્ટ થયેલ છો. જો તમે કોઈ બીજાથી કનેક્ટ કરો છો, તો તમારા અસ્તિત્વમાંના VPN ને બદલવામાં આવશે."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"અસ્તિત્વમાંની VPN ને બદલીએ?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"હંમેશાં ચાલુ VPN સેટ કરીએ?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"આ સેટિંગ ચાલુ કરવાથી, જ્યાં સુધી VPN સફળતાપૂર્વક કનેક્ટ ન થાય ત્યાં સુધી તમારી પાસે ઇન્ટરનેટ કનેક્શન હશે નહીં"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"તમારા અસ્તિત્વમાંના VPN ને બદલવામાં આવશે અને VPN સફળતાપૂર્વક કનેક્ટ ન થાય ત્યાં સુધી તમારી પાસે ઇન્ટરનેટ કનેક્શન હશે નહીં"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"તમે પહેલાંથી હંમેશાં-ચાલુ VPN થી કનેક્ટ થયેલ છો. જો તમે કોઈ બીજાથી કનેક્ટ કરો છો, તો તમારા અસ્તિત્વમાંના VPN ને બદલવામાં આવશે અને હંમેશાં-ચાલુ મોડ બંધ થઈ જશે."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"તમે પહેલાંથી VPN થી કનેક્ટ થયેલ છો. જો તમે કોઈ બીજાથી કનેક્ટ કરો છો, તો તમારા અસ્તિત્વમાંના VPN ને બદલવામાં આવશે."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"ચાલુ કરો"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> થી કનેક્ટ કરી શકાતું નથી"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"આ ઍપ્લિકેશન હંમેશાં ચાલુ VPN નું સમર્થન કરતી નથી."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2524,10 +2529,12 @@
       <item quantity="one">%d છુપાયેલ આઇટમ બતાવો</item>
       <item quantity="other">%d છુપાયેલ આઇટમ બતાવો</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"નેટવર્ક અને ઇન્ટરનેટ"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"કનેક્ટ થયેલ ઉપકરણો"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"ઍપ્લિકેશનો અને સૂચનાઓ"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"વપરાશકર્તા અને એકાઉન્ટ્સ"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"ઍપ્લિકેશન ડિફૉલ્ટ્સ"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"ભાષા: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"સેટિંગ્સ"</string>
     <string name="search_menu" msgid="6283419262313758339">"શોધ સેટિંગ્સ"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"શોધ સેટિંગ્સ"</string>
@@ -2629,7 +2636,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"કાર્ય પ્રોફાઇલ ધ્વનિઓ બદલીએ?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"બદલો"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"તમારી વર્તમાન કાર્ય પ્રોફાઇલ ધ્વનિઓ તમારી વ્યક્તિગત પ્રોફાઇલ ધ્વનિઓ સાથે બદલવામાં આવશે"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"સૂચનાઓ ગોઠવો"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"વિગતવાર"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"કાર્યની સૂચનાઓ"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"પલ્સ સૂચના પ્રકાશ"</string>
@@ -3035,8 +3043,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"મંગળ 6:01 સાંજે"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"મંગળ 6:02 સાંજે"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"મંગળ 6:03 સાંજે"</string>
-    <string name="see_all" msgid="8883901630052886984">"બધું જુઓ"</string>
-    <string name="see_less" msgid="1250265310929558370">"ઓછું જુઓ"</string>
     <string name="disconnected" msgid="5787956818111197212">"ડિસ્કનેક્ટ કર્યું"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> ડેટા વાપર્યો"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 3263c4b..e5b2789 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"डिस्कनेक्ट करें"</string>
     <string name="vpn_version" msgid="1939804054179766249">"वर्शन <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN भूल जाएं"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"मौजूदा VPN को बदलें?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"आप पहले से ही किसी VPN से कनेक्ट हैं. यदि आप किसी दूसरे से कनेक्ट करते हैं, तो आपका माैजूदा VPN बदल दिया जाएगा."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"मौजूदा VPN को बदलें?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"हमेशा-चालू VPN सेट करें?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"यह सेटिंग चालू करने से, आपके पास तब तक इंटरनेट कनेक्शन नहीं होगा जब तक कि VPN सफलतापूर्वक कनेक्ट नहीं हो जाता"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"आपका मौजूदा VPN बदल दिया जाएगा और आपके पास तब तक इंटरनेट कनेक्शन नहीं होगा जब तक कि VPN सफलतापूर्वक कनेक्ट नहीं हो जाता"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"आप हमेशा चालू रहने वाले किसी VPN से पहले से कनेक्ट हैं. यदि आप किसी दूसरे से कनेक्ट करते हैं तो मौजूदा VPN बदल दिया जाएगा और हमेशा-चालू मोड बंद हो जाएगा."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"आप पहले से ही किसी VPN से कनेक्ट हैं. यदि आप किसी दूसरे से कनेक्ट करते हैं, तो आपका माैजूदा VPN बदल दिया जाएगा."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"चालू करें"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> कनेक्ट नहीं कर सकता"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"यह ऐप्लिकेशन हमेशा-चालू VPN का समर्थन नहीं करता."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2523,8 +2528,11 @@
       <item quantity="other">छिपे हुए %d आइटम दिखाएं</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"नेटवर्क और इंटरनेट"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"कनेक्ट किए गए डिवाइस"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"ऐप्लिकेशन और नोटिफ़िकेशन"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"उपयोगकर्ता और खाते"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"ऐप्लिकेशन डिफ़ॉल्ट"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"भाषा: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"सेटिंग"</string>
     <string name="search_menu" msgid="6283419262313758339">"खोज सेटिंग"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"खोज सेटिंग"</string>
@@ -2626,7 +2634,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"कार्य प्रोफाइल ध्वनियां बदलें?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"बदलें"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"आपकी वर्तमान कार्य प्रोफ़ाइल की ध्वनियां आपकी व्यक्तिगत प्रोफ़ाइल की ध्वनियों से बदल दी जाएंगी"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"नोटिफिकेशन कॉन्फ़िगर किए गए"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"उन्नत"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"कार्य नोटिफ़िकेशन"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"पल्‍स नोटिफिकेशन लाइट"</string>
@@ -3032,8 +3041,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"मंगलवार शाम 6:01 बजे"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"मंगलवार शाम 6:02 बजे"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"मंगलवार शाम 6:03 बजे"</string>
-    <string name="see_all" msgid="8883901630052886984">"सभी देखें"</string>
-    <string name="see_less" msgid="1250265310929558370">"कम देखें"</string>
     <string name="disconnected" msgid="5787956818111197212">"डिस्कनेक्ट किया गया"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> डेटा का उपयोग किया गया है"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 00f3d46..a199500 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -2297,8 +2297,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Prekini vezu"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Verzija <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Zaboravi VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Želite li zamijeniti dosadašnji VPN?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Već ste povezani s VPN-om. Ako se povežete s nekim drugi VPN-om, on će zamijeniti dosadašnji."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Želite li zamijeniti dosadašnji VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Želite li postaviti uvijek uključeni VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Ako uključite tu postavku, nećete imati internetsku vezu dok se VPN ne poveže"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Vaš dosadašnji VPN zamijenit će se i nećete imati internetsku vezu dok se VPN ne poveže"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Već ste povezani s uvijek uključenim VPN-om. Ako se povežete s nekim drugim VPN-om, on će zamijeniti dosadašnji, a način rada \"uvijek uključeno\" isključit će se."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Već ste povezani s VPN-om. Ako se povežete s nekim drugi VPN-om, on će zamijeniti dosadašnji."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Uključi"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Povezivanje s <xliff:g id="VPN_NAME">%1$s</xliff:g> mrežom nije uspjelo"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Ova aplikacija ne podržava uvijek uključeni VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2545,8 +2550,11 @@
       <item quantity="other">Prikaži %d skrivenih stavki</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Mreža i internet"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Povezani uređaji"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplikacije i obavijesti"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Korisnik i postavke"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Zadane aplikacije"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Jezik: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Postavke"</string>
     <string name="search_menu" msgid="6283419262313758339">"Postavke pretraživanja"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Postavke pretraživanja"</string>
@@ -2648,7 +2656,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Zamjena zvuka radnog profila?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Zamijeni"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Trenutačni zvukovi radnog profila zamijenit će se zvukovima osobnog profila"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Konfiguriranje obavijesti"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"Napredno"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Obavijesti s radnog profila"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Pulsno svjetlo obavijesti"</string>
@@ -3062,8 +3071,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Uto, 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Uto, 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Uto, 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Prikaži sve"</string>
-    <string name="see_less" msgid="1250265310929558370">"Prikaži manje"</string>
     <string name="disconnected" msgid="5787956818111197212">"Veza je prekinuta"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Količina iskorištenih podataka: <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 8001a1b..5ae84d6 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Leválasztás"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Verzió: <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN elfelejtése"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Lecseréli a meglévő VPN-t?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Már csatlakozott egy VPN-hez. Ha másikhoz csatlakozik, a meglévő VPN-t lecseréljük."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Lecseréli a meglévő VPN-t?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Beállítja a mindig bekapcsolt VPN-t?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"A beállítás bekapcsolása után a VPN sikeres csatlakozásáig nem lesz internetkapcsolata"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"A rendszer lecseréli meglévő VPN-jét, valamint az új VPN csatlakozásáig nem lesz internetkapcsolata."</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Már csatlakozik egy mindig bekapcsolt VPN-hez. Ha másik VPN-re csatlakozik, akkor a rendszer lecseréli a meglévőt, valamint kikapcsolja a mindig bekapcsolt módot."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Már csatlakozik VPN-hez. Ha másikhoz csatlakozik, a meglévő VPN-t lecseréljük."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Bekapcsolás"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"A(z) <xliff:g id="VPN_NAME">%1$s</xliff:g> nem tud csatlakozni"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Ez az alkalmazás nem támogatja a mindig bekapcsolt VPN-t."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2522,10 +2527,12 @@
       <item quantity="other">%d rejtett elem megjelenítése</item>
       <item quantity="one">%d rejtett elem megjelenítése</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Hálózat és internet"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Társított eszközök"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Alkalmazások és értesítések"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Felhasználó és fiókok"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Alapértelmezett alkalmazások"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Nyelv: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Beállítások"</string>
     <string name="search_menu" msgid="6283419262313758339">"Keresési beállítások"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Keresési beállítások"</string>
@@ -2627,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Lecseréli a munkaprofil hangbeállításait?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Csere"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"A munkaprofil jelenlegi hangbeállításait lecseréljük a személyes profilban lévőkkel"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Értesítések beállítása"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Értesítési beállítások"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Speciális"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Munkahelyi profil értesítései"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Villogó értesítő fény"</string>
@@ -3033,8 +3040,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Kedd 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Kedd 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Kedd 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Az összes megjelenítése"</string>
-    <string name="see_less" msgid="1250265310929558370">"Kevesebb megjelenítése"</string>
     <string name="disconnected" msgid="5787956818111197212">"Kapcsolat bontva"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Felhasznált adatmennyiség: <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
index a594196..60578ff 100644
--- a/res/values-hy-rAM/strings.xml
+++ b/res/values-hy-rAM/strings.xml
@@ -705,8 +705,8 @@
     <string name="wifi_more" msgid="3195296805089107950">"Ավելին"</string>
     <string name="wifi_setup_wps" msgid="8128702488486283957">"Ինքնուրույն կարգավորում (WPS)"</string>
     <string name="wifi_show_advanced" msgid="3409422789616520979">"Ընդլայնված ընտրանքներ"</string>
-    <string name="wifi_advanced_toggle_description_expanded" msgid="2380600578544493084">"Ընդլայնված ընտրանքների բացվող ցանկ: Կրկնակի հպեք՝ կոծկելու համար:"</string>
-    <string name="wifi_advanced_toggle_description_collapsed" msgid="1463812308429197263">"Ընդլայնված ընտրանքների բացվող ցանկ: Կրկնակի հպեք՝ ընդարձակելու համար:"</string>
+    <string name="wifi_advanced_toggle_description_expanded" msgid="2380600578544493084">"Ընդլայնված ընտրանքների իջնող ցանկ: Կրկնակի հպեք՝ կոծկելու համար:"</string>
+    <string name="wifi_advanced_toggle_description_collapsed" msgid="1463812308429197263">"Ընդլայնված ընտրանքների իջնող ցանկ: Կրկնակի հպեք՝ ընդարձակելու համար:"</string>
     <string name="wifi_wps_setup_title" msgid="8207552222481570175">"Wi‑Fi-ով պաշտպանված կարգավորում"</string>
     <string name="wifi_wps_setup_msg" msgid="315174329121275092">"WPS-ը մեկնարկում է..."</string>
     <string name="wifi_wps_onstart_pbc" msgid="817003360936932340">"Սեղմեք երթուղիչի «անվտանգ Wi‑Fi կարգավորում» կոճակը: Այն կարող է կոչվել «WPS» կամ նշված լինել այս նշանով՝"</string>
@@ -2026,7 +2026,7 @@
     <string name="credentials_enabled" msgid="7588607413349978930">"Վկայականի պահոցը միացված է:"</string>
     <string name="credentials_configure_lock_screen_hint" msgid="6757119179588664966">"Վկայականների պահոցն օգտագործելու համար անհրաժեշտ է, որ էկրանը կողպող PIN կամ գաղտնաբառ կիրառեք:"</string>
     <string name="usage_access_title" msgid="332333405495457839">"Թույլատրված հավելվածներ"</string>
-    <string name="emergency_tone_title" msgid="1055954530111587114">"Արտակարգ իրավիճակ ահազանգող ազդանշան"</string>
+    <string name="emergency_tone_title" msgid="1055954530111587114">"Շտապ կանչի ազդանշանը"</string>
     <string name="emergency_tone_summary" msgid="722259232924572153">"Կարգավորել աշխատանքի ռեժիմը շտապ կանչի դեպքում"</string>
     <string name="privacy_settings" msgid="5446972770562918934">"Պահուստավորում և վերակայում"</string>
     <string name="privacy_settings_title" msgid="4856282165773594890">"Պահուստավորում և վերականգնում"</string>
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Անջատել"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Տարբերակ <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Մոռանալ VPN-ը"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Փոխարինե՞լ ընթացիկ VPN-ը:"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Դուք արդեն միացած եք VPN ցանցին: Մեկ այլ ցանցին միանալու դեպքում, ընթացիկ VPN-ը կփոխարինվի նորով:"</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Փոխարինե՞լ ընթացիկ VPN-ը:"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Սահմանե՞լ որպես «միշտ միացված» VPN:"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Այս կարգավորումը միացնելու դեպքում դուք մինչև VPN-ի բարեհաջող միացումը ինտերնետ կապ չեք ունենա"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Ձեր ընթացիկ VPN-ը կփոխարինվի նորով և դուք մինչև VPN-ի բարեհաջող միացումը ինտերնետ կապ չեք ունենա"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Դուք արդեն միացած եք «միշտ միացված» VPN ցանցին: Մեկ այլ VPN ցանցին միանալու դեպքում ընթացիկ VPN-ը կփոխարինվի նորով և «միշտ միացված» ռեժիմը կանջատվի:"</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Դուք արդեն միացած եք VPN ցանցին: Մեկ այլ ցանցին միանալու դեպքում ընթացիկ VPN-ը կփոխարինվի նորով:"</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Միացնել"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Հնարավոր չէ միանալ <xliff:g id="VPN_NAME">%1$s</xliff:g> ցանցին"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Այս հավելվածը չի աջակցում VPN-ի միշտ միացված ռեժիմը:"</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2523,8 +2528,11 @@
       <item quantity="other">Ցույց տալ %d թաքնված տարրեր</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Ցանց և ինտերնետ"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Կապակցված սարքեր"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Հավելվածներ և ծանուցումներ"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Օգտվող և հաշիվներ"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Հավելվածի կանխադրված կարգավորումներ"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Լեզուն՝ <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Կարգավորումներ"</string>
     <string name="search_menu" msgid="6283419262313758339">"Որոնման կարգավորումներ"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Որոնման կարգավորումներ"</string>
@@ -2626,7 +2634,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Փոխարինե՞լ աշխատանքային պրոֆիլի ձայները:"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Փոխարինել"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Աշխատանքային պրոֆիլի ընթացիկ ձայները կփոխարինվեն անձնական հաշվի ձայներով"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Ծանուցումների կազմաձևում"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"Լրացուցիչ"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Աշխատանքային ծանուցումներ"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Ծանուցման լույսի թարթում"</string>
@@ -3032,8 +3041,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Երք, 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Երք, 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Երք, 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Տեսնել բոլորը"</string>
-    <string name="see_less" msgid="1250265310929558370">"Տեսնել ավելի քիչ"</string>
     <string name="disconnected" msgid="5787956818111197212">"Անջատված է"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Օգտագործած տվյալներ՝ <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index f39d1ca..c464ebc 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Putuskan sambungan"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versi <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Lupakan VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Ganti VPN yang sudah ada?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Anda sudah terhubung ke VPN. Jika Anda terhubung ke VPN yang berbeda, VPN yang ada akan digantikan."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Ganti VPN yang sudah ada?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Setel VPN selalu aktif?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Jika setelan ini diaktifkan, sambungan internet akan tersedia jika VPN berhasil terhubung"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"VPN yang sudah ada akan digantikan, dan sambungan internet akan tersedia jika VPN berhasil terhubung"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Anda sudah terhubung ke VPN selalu aktif. Jika Anda terhubung ke VPN yang berbeda, VPN yang sudah ada akan digantikan, dan mode selalu aktif akan dinonaktifkan."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Anda sudah terhubung ke VPN. Jika Anda terhubung ke VPN yang berbeda, VPN yang sudah ada akan digantikan."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Aktifkan"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> tidak dapat terhubung"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Aplikasi ini tidak mendukung VPN yang selalu aktif."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2523,8 +2528,11 @@
       <item quantity="one">Tampilkan %d item tersembunyi</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Jaringan &amp; Internet"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Perangkat yang terhubung"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplikasi &amp; notifikasi"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Pengguna &amp; akun"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Aplikasi default"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Bahasa: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Setelan"</string>
     <string name="search_menu" msgid="6283419262313758339">"Setelan penelusuran"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Setelan penelusuran"</string>
@@ -2626,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Ganti suara profil kerja?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Ganti"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Suara profil kerja saat ini akan diganti dengan suara profil pribadi"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Konfigurasikan notifikasi"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Preferensi notifikasi"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Lanjutan"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Notifikasi kerja"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Kedipkan lampu notifikasi"</string>
@@ -3032,8 +3040,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Sel 18.01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Sel 18.02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Sel 18.03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Lihat semua"</string>
-    <string name="see_less" msgid="1250265310929558370">"Lihat lebih sedikit"</string>
     <string name="disconnected" msgid="5787956818111197212">"Terputus"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> data digunakan"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-is-rIS/strings.xml b/res/values-is-rIS/strings.xml
index c053fce..c7b0b11 100644
--- a/res/values-is-rIS/strings.xml
+++ b/res/values-is-rIS/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Aftengja"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Útgáfa <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Gleyma VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Skipta út núverandi VPN?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Þú ert nú þegar með VPN tengt. Ef þú tengist öðru neti kemur það í stað fyrirliggjandi VPN."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Skipta út núverandi VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Velja VPN sem alltaf er kveikt á?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Ef þú kveikir á þessari stillingu nærðu ekki nettengingu fyrr en VPN nær að tengjast"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Núverandi VPN verður skipt út og engin nettenging verður fyrir hendi fyrr en VPN nær að tengjast"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Þú ert þegar með tengingu við VPN sem alltaf er kveikt á. Ef þú tengist við annað net verður fyrirliggjandi VPN skipt út og slökkt verður á stillingunni „Alltaf kveikt“."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Þú ert nú þegar með VPN tengt. Ef þú tengist öðru neti kemur það í stað fyrirliggjandi VPN."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Kveikja"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> getur ekki tengst"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Þetta forrit styður ekki sívirkt VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2523,8 +2528,11 @@
       <item quantity="other">Sýna %d falin atriði</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Netkerfi og internet"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Tengd tæki"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Forrit og tilkynningar"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Notandi og reikningar"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Sjálfgefnar stillingar forrits"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Tungumál: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Stillingar"</string>
     <string name="search_menu" msgid="6283419262313758339">"Leitarstillingar"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Leitarstillingar"</string>
@@ -2626,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Skipta út hljóðum vinnuprófíls?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Skipta út"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Núverandi hljóðum vinnuprófílsins verður skipt út fyrir hljóð úr persónulega prófílnum"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Stilla tilkynningar"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Tilkynningastillingar"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Ítarlegt"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Vinnutilkynningar"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Hægt blikkandi tilkynningaljós"</string>
@@ -3032,8 +3040,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Þri 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Þri 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Þri 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Sjá allt"</string>
-    <string name="see_less" msgid="1250265310929558370">"Sjá minna"</string>
     <string name="disconnected" msgid="5787956818111197212">"Aftengt"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> notuð"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index c51cea9..fab69eb 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Disconnetti"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versione <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Rimuovi VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Sostituire la rete VPN esistente?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Sei già collegato a una rete VPN. Se ti connetti a un\'altra rete, la VPN attuale verrà sostituita."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Sostituire la rete VPN esistente?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Impostare la rete VPN sempre attiva?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Se attivi questa impostazione, la connessione Internet non sarà disponibile fino a quando la rete VPN sarà connessa correttamente"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"La rete VPN attuale sarà sostituita e la connessione Internet non sarà disponibile fino a quando la rete VPN sarà connessa correttamente"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Sei già collegato a una rete VPN sempre attiva. Se ti connetti a un\'altra rete, la rete VPN attuale verrà sostituita e la modalità sempre attiva verrà disattivata."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Sei già collegato a una rete VPN. Se ti connetti a un\'altra rete, la VPN attuale verrà sostituita."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Attiva"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Impossibile connettersi alla rete <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Questa app non supporta le reti VPN sempre attive."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2523,8 +2528,11 @@
       <item quantity="one">Mostra %d elemento nascosto</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Rete e Internet"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Dispositivi collegati"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"App e notifiche"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Utente e account"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"App predefinite"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Lingua: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Impostazioni"</string>
     <string name="search_menu" msgid="6283419262313758339">"Impostazioni di ricerca"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Impostazioni di ricerca"</string>
@@ -2626,7 +2634,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Sostituire suoni lavoro?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Sostituisci"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"I suoni attuali del profilo di lavoro verranno sostituiti con i suoni del tuo profilo personale"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Configura le notifiche"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"Avanzate"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Notifiche di lavoro"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Luce intermittente"</string>
@@ -3032,8 +3041,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Mar 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Mar 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Mar 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Mostra tutto"</string>
-    <string name="see_less" msgid="1250265310929558370">"Comprimi"</string>
     <string name="disconnected" msgid="5787956818111197212">"Disconnesso"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> di dati utilizzati"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 32d4503..28a6e20 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -2314,8 +2314,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"נתק"</string>
     <string name="vpn_version" msgid="1939804054179766249">"גרסה <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"‏שכח VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"‏האם להחליף VPN קיים?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"‏אתה כבר מחובר ל-VPN. אם תתחבר לרשת שונה, ה-VPN הקיים תוחלף."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"‏האם להחליף רשת VPN קיימת?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"‏האם להגדיר את רשת ה-VPN בחיבור תמידי?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"‏על ידי הפעלת הגדרה זו לא יהיה לך חיבור אינטרנט עד שחיבור ה-VPN יסתיים בהצלחה"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"‏רשת ה-VPN הקיימת תוחלף ולא יהיה לך חיבור אינטרנט עד שחיבור ה-VPN יסתיים בהצלחה"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"‏אתה כבר מחובר לרשת VPN בחיבור תמידי. אם תתחבר לרשת VPN שונה, הרשת הקיימת תוחלף ומצב החיבור התמידי ייכבה."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"‏אתה כבר מחובר לרשת VPN. אם תתחבר לרשת VPN שונה, הרשת הקיימת תוחלף."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"הפעל"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> לא מצליחה להתחבר"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"‏אפליקציה זו אינה תומכת באפשרות של רשת VPN הפועלת תמיד"</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2568,10 +2573,12 @@
       <item quantity="other">‏הצג %d פריטים מוסתרים</item>
       <item quantity="one">‏הצג פריט %d מוסתר</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"רשת ואינטרנט"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"מכשירים מחוברים"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"אפליקציות והודעות"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"משתמש וחשבונות"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"אפליקציות ברירות מחדל"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"שפה: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"הגדרות"</string>
     <string name="search_menu" msgid="6283419262313758339">"הגדרות חיפוש"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"הגדרות חיפוש"</string>
@@ -2673,7 +2680,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"להחליף צלילי פרופיל עבודה?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"החלף"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"הצלילים המוגדרים לפרופיל העבודה שלך יוחלפו בצלילים שהוגדרו לפרופיל האישי"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"הגדרת הודעות"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"העדפות התראה"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"מתקדם"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"הודעות עבודה"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"תאורת התראה מהבהבת"</string>
@@ -3095,8 +3102,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"יום שלישי 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"יום שלישי 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"יום שלישי 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"הצג הכל"</string>
-    <string name="see_less" msgid="1250265310929558370">"הצג פחות"</string>
     <string name="disconnected" msgid="5787956818111197212">"מנותק"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> מהנתונים בשימוש"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index a92f2ac..66a657d 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -2284,8 +2284,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"接続を解除"</string>
     <string name="vpn_version" msgid="1939804054179766249">"バージョン<xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN を削除"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"既存の VPN を置き換えますか？"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"VPN に既に接続されています。別の VPN に接続する場合は、既存の VPN が置き換えられます。"</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"既存の VPN を置き換えますか？"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"常時接続 VPN を設定しますか？"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"この設定を有効にすると、VPN に接続するまではインターネットに接続できなくなります"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"既存の VPN が置き換えられ、VPN に接続するまではインターネットに接続できなくなります"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"すでに常時接続 VPN に接続しています。別の VPN に接続する場合は、既存の VPN が置き換えられ、常時接続モードは無効になります。"</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"すでに VPN に接続しています。別の VPN に接続する場合は、既存の VPN が置き換えられます。"</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"有効にする"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"「<xliff:g id="VPN_NAME">%1$s</xliff:g>」に接続できません"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"このアプリは常時接続 VPN に対応していません。"</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2526,10 +2531,12 @@
       <item quantity="other">%d 件の非表示のアイテムを表示</item>
       <item quantity="one">%d 件の非表示のアイテムを表示</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"ネットワークとインターネット"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"接続済みの端末"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"アプリと通知"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"ユーザーとアカウント"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"デフォルトのアプリ"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"言語: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"設定"</string>
     <string name="search_menu" msgid="6283419262313758339">"検索設定"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"検索設定"</string>
@@ -2611,10 +2618,10 @@
     <string name="emergency_tone_alert" msgid="8941852695428130667">"アラート"</string>
     <string name="emergency_tone_vibrate" msgid="8281126443204950847">"バイブレーション"</string>
     <string name="boot_sounds_title" msgid="567029107382343709">"電源オンの音"</string>
-    <string name="zen_mode_settings_title" msgid="2689740350895257590">"通知を非表示"</string>
+    <string name="zen_mode_settings_title" msgid="2689740350895257590">"マナーモード"</string>
     <string name="zen_mode_priority_settings_title" msgid="2623117023031824309">"優先する通知のみを許可"</string>
     <string name="zen_mode_automation_settings_title" msgid="4228995740594063774">"自動ルール"</string>
-    <string name="zen_mode_automation_suggestion_title" msgid="3373871113435938830">"[通知を非表示] スケジュールの設定"</string>
+    <string name="zen_mode_automation_suggestion_title" msgid="3373871113435938830">"マナーモード スケジュールの設定"</string>
     <string name="zen_mode_automation_suggestion_summary" msgid="8554080399360506596">"所定の時間にマナーモードにする"</string>
     <string name="zen_mode_option_important_interruptions" msgid="3903928008177972500">"優先する通知のみ"</string>
     <string name="zen_mode_option_alarms" msgid="5785372117288803600">"アラームのみ"</string>
@@ -2631,7 +2638,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"仕事用プロファイルの音の置換"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"置換"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"現在の仕事用プロファイルの音は個人用プロファイルの音に置き換えられます"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"通知の設定"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"詳細設定"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"仕事用プロファイルの通知"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"光を点滅させて通知"</string>
@@ -2667,8 +2675,8 @@
     </plurals>
     <string name="no_notification_listeners" msgid="3487091564454192821">"通知へのアクセスをリクエストしたインストール済みアプリはありません。"</string>
     <string name="notification_listener_security_warning_title" msgid="5522924135145843279">"<xliff:g id="SERVICE">%1$s</xliff:g>での通知へのアクセスを許可しますか？"</string>
-    <string name="notification_listener_security_warning_summary" msgid="119203147791040151">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> はすべての通知を読み取ることができます。通知には、連絡先名などの個人情報や受信したメッセージの本文も含まれます。また、通知を非表示にしたり、通知内のボタン操作を実行したりすることもできます。\n\nこれにより、アプリが通知の非表示設定を切り替えたり、関連する設定を変更したりすることも可能になります。"</string>
-    <string name="notification_listener_disable_warning_summary" msgid="6738915379642948000">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> の通知アクセスを OFF にすると、[通知を非表示] のアクセスも OFF になります。"</string>
+    <string name="notification_listener_security_warning_summary" msgid="119203147791040151">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> はすべての通知を読み取ることができます。通知には、連絡先名などの個人情報や受信したメッセージの本文も含まれます。また、通知を非表示にしたり、通知内のボタン操作を実行したりすることもできます。\n\nこれにより、アプリがマナーモード設定を切り替えたり、関連する設定を変更したりすることも可能になります。"</string>
+    <string name="notification_listener_disable_warning_summary" msgid="6738915379642948000">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> の通知アクセスを OFF にすると、マナーモードのアクセスも OFF になります。"</string>
     <string name="notification_listener_disable_warning_confirm" msgid="8333442186428083057">"OFF にする"</string>
     <string name="notification_listener_disable_warning_cancel" msgid="8586417377104211584">"キャンセル"</string>
     <string name="vr_listeners_title" msgid="1318901577754715777">"VR ヘルパー サービス"</string>
@@ -2678,16 +2686,16 @@
     <string name="display_vr_pref_title" msgid="8104485269504335481">"端末が VR モードの場合"</string>
     <string name="display_vr_pref_low_persistence" msgid="5707494209944718537">"手ぶれ補正を弱くする（推奨）"</string>
     <string name="display_vr_pref_off" msgid="2190091757123260989">"ちらつきを減らす"</string>
-    <string name="manage_zen_access_title" msgid="2611116122628520522">"[通知を非表示]へのアクセス"</string>
-    <string name="zen_access_empty_text" msgid="8772967285742259540">"[通知を非表示]へのアクセスをリクエストしたインストール済みアプリはありません"</string>
+    <string name="manage_zen_access_title" msgid="2611116122628520522">"マナーモードへのアクセス"</string>
+    <string name="zen_access_empty_text" msgid="8772967285742259540">"マナーモードへのアクセスをリクエストしたインストール済みアプリはありません"</string>
     <string name="loading_notification_apps" msgid="5031818677010335895">"アプリを読み込んでいます..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"チャンネル"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"すべてブロック"</string>
     <string name="app_notification_block_summary" msgid="9049487483231233726">"このアプリからの通知を表示しない"</string>
     <string name="channel_notification_block_title" msgid="1570538726036580979">"すべてブロック"</string>
     <string name="channel_notification_block_summary" msgid="3024773079420038146">"このチャンネルからの通知を表示しない"</string>
-    <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"[通知を非表示] をオーバーライドする"</string>
-    <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"[通知を非表示] が [優先する通知のみ] に設定されているとき、この通知を引き続き表示する"</string>
+    <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"マナーモードをオーバーライドする"</string>
+    <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"[マナーモード] が [優先する通知のみ] に設定されているとき、この通知を引き続き表示する"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"ロック画面"</string>
     <string name="app_notification_row_banned" msgid="5983655258784814773">"ブロック済み"</string>
     <string name="app_notification_row_priority" msgid="7723839972982746568">"優先"</string>
@@ -2708,9 +2716,9 @@
     <string name="zen_mode_rule_type_unknown" msgid="3049377282766700600">"不明"</string>
     <string name="zen_mode_configure_rule" msgid="8865785428056490305">"ルールを設定"</string>
     <string name="zen_schedule_rule_type_name" msgid="142936744435271449">"時間ルール"</string>
-    <string name="zen_schedule_rule_enabled_toast" msgid="3379499360390382259">"自動ルールでは指定時間内は[通知を非表示]をONに設定します"</string>
+    <string name="zen_schedule_rule_enabled_toast" msgid="3379499360390382259">"自動ルールでは指定時間内はマナーモードを ON に設定します"</string>
     <string name="zen_event_rule_type_name" msgid="2645981990973086797">"予定ルール"</string>
-    <string name="zen_event_rule_enabled_toast" msgid="6910577623330811480">"自動ルールでは指定した予定の間は[通知を非表示]をONに設定します"</string>
+    <string name="zen_event_rule_enabled_toast" msgid="6910577623330811480">"自動ルールでは指定した予定の間はマナーモードを ON に設定します"</string>
     <string name="zen_mode_event_rule_calendar" msgid="8787906563769067418">"対象となる予定"</string>
     <string name="zen_mode_event_rule_summary_calendar_template" msgid="5135844750232403975">"対象となる予定: <xliff:g id="CALENDAR">%1$s</xliff:g>"</string>
     <string name="zen_mode_event_rule_summary_any_calendar" msgid="4936646399126636358">"すべてのカレンダー"</string>
@@ -2765,10 +2773,10 @@
     <string name="zen_mode_summary_alarms_only_by_time" msgid="7465525754879341907">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>までアラームのみに変更します"</string>
     <string name="zen_mode_summary_always" msgid="6172985102689237703">"常に割り込みに変更します"</string>
     <string name="zen_mode_screen_on" msgid="7712038508173845101">"画面が ON のときにブロックする"</string>
-    <string name="zen_mode_screen_on_summary" msgid="6444425984146305149">"[通知を非表示] でサイレントに設定した通知を受信したときに、画面上にポップアップ表示されなくなります"</string>
+    <string name="zen_mode_screen_on_summary" msgid="6444425984146305149">"マナーモードでサイレントに設定した通知を受信したときに、画面上にポップアップ表示されなくなります"</string>
     <string name="zen_mode_screen_off" msgid="5026854939192419879">"画面が OFF のときにブロックする"</string>
-    <string name="zen_mode_screen_off_summary" msgid="6490932947651798094">"[通知を非表示] でサイレントに設定した通知を受信したときに、画面が ON になったり光が点滅したりしなくなります"</string>
-    <string name="zen_mode_screen_off_summary_no_led" msgid="3758698381956461866">"[通知を非表示] でサイレントに設定した通知を受信したときに画面が ON にならなくなります"</string>
+    <string name="zen_mode_screen_off_summary" msgid="6490932947651798094">"マナーモードでサイレントに設定した通知を受信したときに、画面が ON になったり光が点滅したりしなくなります"</string>
+    <string name="zen_mode_screen_off_summary_no_led" msgid="3758698381956461866">"マナーモードでサイレントに設定した通知を受信したときに画面が ON にならなくなります"</string>
     <string name="zen_mode_all_visual_interruptions" msgid="2851308980832487411">"OFF"</string>
     <string name="zen_mode_screen_on_visual_interruptions" msgid="7373348148129140528">"画面が ON のとき"</string>
     <string name="zen_mode_screen_off_visual_interruptions" msgid="4850792880144382633">"画面が OFF のとき"</string>
@@ -2836,7 +2844,7 @@
     <string name="notifications_silenced" msgid="4728603513072110381">"マナーモード"</string>
     <string name="notifications_redacted" msgid="4493588975742803160">"ロック画面にプライベートな内容を表示しない"</string>
     <string name="notifications_hidden" msgid="3619610536038757468">"ロック画面に表示しない"</string>
-    <string name="notifications_priority" msgid="1066342037602085552">"[通知を非表示] をオーバーライド"</string>
+    <string name="notifications_priority" msgid="1066342037602085552">"マナーモードをオーバーライド済み"</string>
     <string name="notifications_summary_divider" msgid="9013807608804041387">" / "</string>
     <string name="notification_summary_level" msgid="2726571692704140826">"レベル %d"</string>
     <plurals name="permissions_summary" formatted="false" msgid="6402730318075959117">
@@ -2859,7 +2867,7 @@
     <string name="filter_work_apps" msgid="24519936790795574">"仕事用"</string>
     <string name="filter_notif_blocked_apps" msgid="3446926933792244485">"ブロック中"</string>
     <string name="filter_with_domain_urls_apps" msgid="4573276638806792792">"ドメインURLあり"</string>
-    <string name="filter_notif_priority_apps" msgid="5056470299318500609">"[通知を非表示] をオーバーライド"</string>
+    <string name="filter_notif_priority_apps" msgid="5056470299318500609">"マナーモードをオーバーライド"</string>
     <string name="filter_notif_sensitive_apps" msgid="3847012996691991486">"ロック画面にプライベートな内容を表示しない"</string>
     <string name="filter_notif_hide_notifications_apps" msgid="3977513041080404368">"ロック画面に表示しない"</string>
     <string name="filter_notif_silent" msgid="8533960664617048281">"マナーモードで表示"</string>
@@ -2977,11 +2985,11 @@
     <string name="running_frequency" msgid="6622624669948277693">"頻度"</string>
     <string name="memory_maximum_usage" msgid="6513785462055278341">"最大使用量"</string>
     <string name="no_data_usage" msgid="9131454024293628063">"データ通信の使用はありません"</string>
-    <string name="zen_access_warning_dialog_title" msgid="1198189958031157142">"<xliff:g id="APP">%1$s</xliff:g>の[通知を非表示]へのアクセスを許可しますか？"</string>
-    <string name="zen_access_warning_dialog_summary" msgid="4015885767653010873">"アプリは[通知を非表示]のON/OFFを切り替えたり、関連する設定を変更したりできるようになります。"</string>
+    <string name="zen_access_warning_dialog_title" msgid="1198189958031157142">"<xliff:g id="APP">%1$s</xliff:g> のマナーモードへのアクセスを許可しますか？"</string>
+    <string name="zen_access_warning_dialog_summary" msgid="4015885767653010873">"アプリはマナーモードの ON / OFF を切り替えたり、関連する設定を変更したりできるようになります。"</string>
     <string name="zen_access_disabled_package_warning" msgid="302820100078584431">"通知アクセスが ON になっているため ON のままにしておく必要があります"</string>
-    <string name="zen_access_revoke_warning_dialog_title" msgid="558779234015793950">"「<xliff:g id="APP">%1$s</xliff:g>」の「通知を非表示」に対する権限を取り消しますか？"</string>
-    <string name="zen_access_revoke_warning_dialog_summary" msgid="5518216907304930148">"このアプリで作成したすべての「通知を非表示」ルールは削除されます。"</string>
+    <string name="zen_access_revoke_warning_dialog_title" msgid="558779234015793950">"<xliff:g id="APP">%1$s</xliff:g> のマナーモードに対する権限を取り消しますか？"</string>
+    <string name="zen_access_revoke_warning_dialog_summary" msgid="5518216907304930148">"このアプリで作成したすべてのマナーモード ルールは削除されます。"</string>
     <string name="ignore_optimizations_on" msgid="6915689518016285116">"最適化しない"</string>
     <string name="ignore_optimizations_off" msgid="6153196256410296835">"最適化する"</string>
     <string name="ignore_optimizations_on_desc" msgid="2321398930330555815">"電池の消耗が速くなる可能性があります"</string>
@@ -3037,8 +3045,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"火 午後6:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"火 午後6:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"火 午後6:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"すべて表示"</string>
-    <string name="see_less" msgid="1250265310929558370">"一部を表示"</string>
     <string name="disconnected" msgid="5787956818111197212">"切断されています"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> のデータを使用しています"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
@@ -3072,7 +3078,7 @@
     <string name="condition_hotspot_summary" msgid="3433182779269409683">"ポータブル Wi-Fi アクセス ポイント（<xliff:g id="ID_1">%1$s</xliff:g>）が有効です。この端末では Wi-Fi が OFF になっています。"</string>
     <string name="condition_airplane_title" msgid="287356299107070503">"機内モードが ON"</string>
     <string name="condition_airplane_summary" msgid="2136872325308526329">"Wi-Fi、Bluetooth、モバイル ネットワークが OFF になっています。電話の発信やインターネットへの接続はできません。"</string>
-    <string name="condition_zen_title" msgid="2679168532600816392">"[通知を非通知] が ON（<xliff:g id="ID_1">%1$s</xliff:g>）"</string>
+    <string name="condition_zen_title" msgid="2679168532600816392">"マナーモードが ON（<xliff:g id="ID_1">%1$s</xliff:g>）"</string>
     <string name="condition_battery_title" msgid="3272131008388575349">"バッテリー セーバー ON"</string>
     <string name="condition_battery_summary" msgid="4418839236027977450">"パフォーマンスが制限されています。位置情報サービスとバックグラウンド データは OFF です。"</string>
     <string name="condition_cellular_title" msgid="2398754272044917264">"モバイルデータ OFF"</string>
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml
index 4a60fe7..c7e359e 100644
--- a/res/values-ka-rGE/strings.xml
+++ b/res/values-ka-rGE/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"კავშირის გაწყვეტა"</string>
     <string name="vpn_version" msgid="1939804054179766249">"ვერსია <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN-ის დავიწყება"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"გსურთ არსებული VPN-ის ჩანაცვლება?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"თქვენ უკვე დაკავშირებული ხართ VPN-თან. ახალ VPN-თან დაკავშირების შემთხვევაში, არსებული ჩანაცვლდება."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"გსურთ არსებული VPN-ის ჩანაცვლება?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"გსურთ ყოველთვის ჩართული VPN-ის დაყენება?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"ამ პარამეტრის ჩართვის შემთხვევაში, VPN-ის წარმატებით დაკავშირებამდე ინტერნეტ-კავშირი არ გექნებათ"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"თქვენი არსებული VPN ჩანაცვლდება და VPN-ის წარმატებით დაკავშირებამდე ინტერნეტ-კავშირი არ გექნებათ"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"თქვენ უკვე დაკავშირებული ხართ ყოველთვის ჩართულ VPN-თან. ახალ VPN-თან დაკავშირების შემთხვევაში, არსებული ჩანაცვლდება, ხოლო ყოველთვის ჩართული რეჟიმი გამოირთვება."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"თქვენ უკვე დაკავშირებული ხართ VPN-თან. ახალ VPN-თან დაკავშირების შემთხვევაში, არსებული ჩანაცვლდება."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"ჩართვა"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g>-მა კავშირი ვერ დაამყარა"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"ყოველთვის ჩართული VPN მხარდაუჭერელია ამ აპის მიერ."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2523,8 +2528,11 @@
       <item quantity="one">%d დამალული ერთეულის ჩვენება</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"ქსელი და ინტერნეტი"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"დაკავშირებული მოწყობილობები"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"აპები და შეტყობინებები"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"მომხმარებელი და ანგარიშები"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"აპის ნაგულისხმევი პარამეტრები"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"ენა: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"პარამეტრები"</string>
     <string name="search_menu" msgid="6283419262313758339">"ძიების პარამეტრები"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"ძიების პარამეტრები"</string>
@@ -2626,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"ჩანაცვლდეს სამსახურის პროფილის ხმები?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"ჩანაცვლება"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"სამსახურის პროფილის ამჟამინდელი ხმები თქვენი პირადი პროფილის ხმებით ჩანაცვლდება"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"შეტყობინ. კონფიგურაცია"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"შეტყობინების პარამეტრები"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"გაფართოებული"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"სამსახურის შეტყობინებები"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"მოვლენების ინდიკატორი"</string>
@@ -3032,8 +3040,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"სამ, 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"სამ, 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"სამ, 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"ყველას ნახვა"</string>
-    <string name="see_less" msgid="1250265310929558370">"ნაკლების ნახვა"</string>
     <string name="disconnected" msgid="5787956818111197212">"გათიშულია"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"გამოყენებულია მონაცემთა <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-kk-rKZ/strings.xml b/res/values-kk-rKZ/strings.xml
index bde0e2a..646f09e 100644
--- a/res/values-kk-rKZ/strings.xml
+++ b/res/values-kk-rKZ/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Ажырату"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Нұсқасы: <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN ұмыту"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Бар VPN қолданбасын ауыстыру керек пе?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Сіз VPN желісіне қосылдыңыз. Егер басқа желіге қосылсаңыз, қолданыстағы VPN желісі алмастырылады."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Бар VPN қолданбасын ауыстыру керек пе?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Әрқашан қосулы VPN режимін орнату"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Бұл параметрді іске қоссаңыз, VPN сәтті қосылғанша интернетке қосыла алмайсыз"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Қолданыстағы VPN желісі алмастырылады және VPN сәтті қосылғанша интернетке қосыла алмайсыз"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Сіз әрқашан қосулы VPN желісіне қосылдыңыз. Егер басқа желіге қосылсаңыз, қолданыстағы VPN желісі алмастырылады және әрқашан қосулы режим өшіріледі."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Сіз VPN желісіне қосылдыңыз. Егер басқа желіге қосылсаңыз, қолданыстағы VPN желісі алмастырылады."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Қосу"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> қосыла алмайды"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Бұл қолданба \"әрқашан қосулы\" VPN желісін қолдамайды."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN (Виртуалды жеке желі)"</string>
@@ -2523,8 +2528,11 @@
       <item quantity="one">%d жасырын элементті көрсету</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Желі және интернет"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Қосылған құрылғылар"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Қолданбалар мен хабарландырулар"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Пайдаланушы және есептік жазбалар"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Қолданбаның әдепкі мәндері"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Тіл: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Параметрлер"</string>
     <string name="search_menu" msgid="6283419262313758339">"Іздеу параметрлері"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Іздеу параметрлері"</string>
@@ -2626,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Жұмыс профилінің дыбыстары ауыстырылсын ба?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Ауыстыру"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Ағымдағы жұмыс профилі дыбыстарының орнына жеке профильдікі қолданылады"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Хабарландырулар конфигурациясы"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Хабарландыру параметрлері"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Кеңейтілген"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Жұмыс хабарландырулары"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Хабар беру шамы"</string>
@@ -3032,8 +3040,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Бс 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Бс 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Бс 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Барлығын көру"</string>
-    <string name="see_less" msgid="1250265310929558370">"Азырақ көру"</string>
     <string name="disconnected" msgid="5787956818111197212">"Ажыратылған"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Деректердің <xliff:g id="AMOUNT">%1$s</xliff:g> пайдаланылған"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
index e322c82..83d42f5 100644
--- a/res/values-km-rKH/strings.xml
+++ b/res/values-km-rKH/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"ផ្ដាច់"</string>
     <string name="vpn_version" msgid="1939804054179766249">"កំណែ <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"បំភ្លេច VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"ជំនួស VPN ដែលមានស្រាប់ឬ?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"អ្នកបានភ្ជាប់ទៅ VPN រួចហើយ។ ប្រសិនបើអ្នកភ្ជាប់ទៅ VPN មួយផ្សេងទៀត នោះ VPN ដែលមានស្រាប់របស់អ្នកនឹងត្រូវបានជំនួស។"</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"ជំនួស VPN ដែលមានស្រាប់ឬ?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"កំណត់ VPN ឲ្យបើកជានិច្ចឬ?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"ប្រសិនបើបើកការកំណត់នេះ អ្នកនឹងមិនមានការតភ្ជាប់អ៊ីនធឺណិតទេ រហូតទាល់តែ VPN នោះបានភ្ជាប់ដោយជោគជ័យ"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"VPN ដែលមានស្រាប់របស់អ្នកនឹងត្រូវបានជំនួស ហើយអ្នកនឹងមិនមានការតភ្ជាប់អ៊ីនធឺណិតទេ រហូតទាល់តែ VPN នោះបានភ្ជាប់ដោយជោគជ័យ"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"អ្នកបានភ្ជាប់ទៅ VPN ដែលបើកជានិច្ចរួចហើយ។ ប្រសិនបើអ្នកភ្ជាប់ទៅ VPN មួយផ្សេងទៀត នោះ VPN ដែលមានស្រាប់របស់អ្នកនឹងត្រូវបានជំនួស ហើយមុខងារបើកជានិច្ចនឹងបិទ។"</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"អ្នកបានភ្ជាប់ទៅ VPN រួចហើយ។ ប្រសិនបើអ្នកភ្ជាប់ទៅ VPN មួយផ្សេងទៀត នោះ VPN ដែលមានស្រាប់របស់អ្នកនឹងត្រូវបានជំនួស។"</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"បើក"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> មិនអាចភ្ជាប់បានទេ"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"កម្មវិធីនេះមិនគាំទ្ររបៀបបើក VPN ជានិច្ចនោះទេ។"</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2522,10 +2527,12 @@
       <item quantity="other">បង្ហាញធាតុ %d ដែលបានលាក់</item>
       <item quantity="one">បង្ហាញធាតុ %d ដែលបានលាក់</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"បណ្តាញ និងអ៊ីនធឺណិត"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"ឧបករណ៍ដែលបានភ្ជាប់"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"កម្មវិធី និងការជូនដំណឹង"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"អ្នកប្រើ និងគណនី"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"លំនាំដើមកម្មវិធី"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"ភាសា៖ <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"ការកំណត់"</string>
     <string name="search_menu" msgid="6283419262313758339">"ការកំណត់ការស្វែងរក"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"កំណត់​ការ​​ស្វែងរក"</string>
@@ -2627,7 +2634,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"ជំនួសសំឡេងប្រវត្តិការងារឬ?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"ជំនួស"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"សំឡេងប្រវត្តិរូបការងារបច្ចុប្បន្នរបស់អ្នកនឹងត្រូវបានជំនួសដោយសំឡេងប្រវត្តិរូបផ្ទាល់ខ្លួនរបស់អ្នក"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"កំណត់រចនាសម្ព័ន្ធការជូនដំណឹង"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"កម្រិតខ្ពស់"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"ការជូនដំណឹងពីកន្លែងធ្វើការ"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"ពន្លឺ​ជូន​ដំណឹង​ភ្លឺបភ្លែត"</string>
@@ -3033,8 +3041,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"អង្គារ៍ 6:01PM"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"អង្គារ៍ 6:02PM"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"អង្គារ៍ 6:03PM"</string>
-    <string name="see_all" msgid="8883901630052886984">"មើលទាំងអស់"</string>
-    <string name="see_less" msgid="1250265310929558370">"​មើល​តិច​ជាង"</string>
     <string name="disconnected" msgid="5787956818111197212">"បាន​ផ្ដាច់"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"បានប្រើទិន្នន័យអស់ <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn-rIN/strings.xml
index c04b861..61b9e1d 100644
--- a/res/values-kn-rIN/strings.xml
+++ b/res/values-kn-rIN/strings.xml
@@ -256,7 +256,7 @@
     <string name="sd_card_settings_label" product="nosdcard" msgid="8101475181301178428">"USB ಸಂಗ್ರಹಣೆ"</string>
     <string name="sd_card_settings_label" product="default" msgid="5743100901106177102">"SD ಕಾರ್ಡ್"</string>
     <string name="proxy_settings_label" msgid="3271174136184391743">"ಪ್ರಾಕ್ಸಿ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
-    <string name="cancel" msgid="6859253417269739139">"ರದ್ದುಮಾಡು"</string>
+    <string name="cancel" msgid="6859253417269739139">"ರದ್ದುಮಾಡಿ"</string>
     <string name="okay" msgid="1997666393121016642">"ಸರಿ"</string>
     <string name="forget" msgid="1400428660472591263">"ಮರೆತುಬಿಡಿ"</string>
     <string name="save" msgid="879993180139353333">"ಉಳಿಸು"</string>
@@ -342,7 +342,7 @@
     <string name="security_settings_fingerprint_enroll_introduction_message" msgid="3508870672887336095">"ನಿಮ್ಮ ಫೋನ್ ಅನ್‌ಲಾಕ್ ಮಾಡಲು, ಖರೀದಿಗಳನ್ನು ದೃಢೀಕರಿಸಲು ಅಥವಾ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ ಸೈನ್ ಇನ್ ಮಾಡಲು ಕೇವಲ ಬೆರಳಚ್ಚು ಸೆನ್ಸರ್ ಸ್ಪರ್ಶಿಸಿ‌. ನೀವು ಸೇರಿಸುವ ಬೆರಳಚ್ಚು‌ಗಳ ಬಗ್ಗೆ ಜಾಗರೂಕರಾಗಿರಿ. ಒಂದು ಹೆಚ್ಚಿನ ಬೆರಳಚ್ಚು ಸಹ ಇವುಗಳಲ್ಲಿ ಯಾವುದನ್ನಾದರೂ ಮಾಡಬಹುದು.\n\nಗಮನಿಸಿ: ನಿಮ್ಮ ಬೆರಳಚ್ಚು ಬಲವಾದ ಪ್ಯಾಟರ್ನ್ ಅಥವಾ ‌ಪಿನ್‌ಗಿಂತ ಕಡಿಮೆ ಸುರಕ್ಷಿತವಾಗಿರಬಹುದು."</string>
     <string name="security_settings_fingerprint_enroll_introduction_message_unlock_disabled" msgid="4193477159493347679">"ಖರೀದಿಗಳನ್ನು ದೃಢೀಕರಿಸಲು ಅಥವಾ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ ಸೈನ್ ಇನ್ ಮಾಡಲು ಕೇವಲ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಸೆನ್ಸರ್ ಸ್ಪರ್ಶಿಸಿ. ನೀವು ಸೇರಿಸುವ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್‌ಗಳ ಬಗ್ಗೆ ಕಾಳಜಿವಹಿಸಿ. ಒಂದು ಹೆಚ್ಚಿನ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಸಹ ಇವುಗಳಲ್ಲಿ ಯಾವುದನ್ನಾದರೂ ಮಾಡಬಹುದು.\n\nಗಮನಿಸಿ: ಈ ಸಾಧನವನ್ನು ಅನ್‌ಲಾಕ್ ಮಾಡಲು ನೀವು ನಿಮ್ಮ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಅನ್ನು ಬಳಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ, ನಿಮ್ಮ ಸಂಸ್ಥೆಯ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ."</string>
     <string name="security_settings_fingerprint_enroll_introduction_message_setup" msgid="3635924459027832861">"ನಿಮ್ಮ ಫೋನ್ ಅನ್‌ಲಾಕ್ ಮಾಡಲು, ಖರೀದಿಗಳನ್ನು ದೃಢೀಕರಿಸಲು ಅಥವಾ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ ಸೈನ್ ಇನ್ ಮಾಡಲು ಕೇವಲ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಸೆನ್ಸರ್ ಸ್ಪರ್ಶಿಸಿ‌. ನೀವು ಯಾರ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್‌ಗಳನ್ನು ಸೇರಿಸುತ್ತೀರಿ ಎಂಬುದರ ಕುರಿತು ಎಚ್ಚರಿಕೆಯಿಂದಿರಿ. ಒಂದು ಸೇರಿಸಲಾದ ಮುದ್ರಣವು ಸಹ ಇವುಗಳಲ್ಲಿ ಯಾವುದನ್ನಾದರೂ ಪೂರೈಸಬಹುದು.\n\nನಿಮ್ಮ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್‌ ಬಲವಾದ ಪ್ಯಾಟರ್ನ್ ಅಥವಾ ಪಿನ್‌ಗಿಂತಲೂ ಕಡಿಮೆ ಸುರಕ್ಷತೆ ಹೊಂದಿರಬಹುದು."</string>
-    <string name="security_settings_fingerprint_enroll_introduction_cancel" msgid="3199351118385606526">"ರದ್ದುಮಾಡು"</string>
+    <string name="security_settings_fingerprint_enroll_introduction_cancel" msgid="3199351118385606526">"ರದ್ದುಮಾಡಿ"</string>
     <string name="security_settings_fingerprint_enroll_introduction_continue" msgid="7472492858148162530">"ಮುಂದುವರಿಸು"</string>
     <string name="security_settings_fingerprint_enroll_introduction_cancel_setup" msgid="5021369420474432665">"ಸ್ಕಿಪ್‌"</string>
     <string name="security_settings_fingerprint_enroll_introduction_continue_setup" msgid="8386444182056861429">"ಬೆರಳಚ್ಚು ಸೇರಿಸಿ"</string>
@@ -546,8 +546,8 @@
     <string name="lockpassword_password_recently_used" msgid="4687102591995446860">"ಸಾಧನ ನಿರ್ವಾಹಕ ಇತ್ತೀಚಿನ ಪಾಸ್‌ವರ್ಡ್‌ ಬಳಸಲು ಅನುಮತಿಸುವುದಿಲ್ಲ."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="6830610582179569631">"ಅಂಕಿಗಳ ಆರೋಹಣ, ಅವರೋಹಣ ಅಥವಾ ಪುನಾವರ್ತಿತ ಅನುಕ್ರಮವನ್ನು ನಿಷೇಧಿಸಲಾಗಿದೆ"</string>
     <string name="lockpassword_ok_label" msgid="313822574062553672">"ಸರಿ"</string>
-    <string name="lockpassword_cancel_label" msgid="8818529276331121899">"ರದ್ದುಮಾಡು"</string>
-    <string name="lockpattern_tutorial_cancel_label" msgid="6431583477570493261">"ರದ್ದುಮಾಡು"</string>
+    <string name="lockpassword_cancel_label" msgid="8818529276331121899">"ರದ್ದುಮಾಡಿ"</string>
+    <string name="lockpattern_tutorial_cancel_label" msgid="6431583477570493261">"ರದ್ದುಮಾಡಿ"</string>
     <string name="lockpattern_tutorial_continue_label" msgid="3559793618653400434">"ಮುಂದೆ"</string>
     <string name="lock_setup" msgid="3355847066343753943">"ಸೆಟಪ್ ಪೂರ್ಣಗೊಂಡಿದೆ."</string>
     <string name="device_admin_title" msgid="3562216873644263804">"ಸಾಧನ ನಿರ್ವಹಣೆ"</string>
@@ -774,7 +774,7 @@
     <string name="wifi_failed_forget_message" msgid="1348172929201654986">"ನೆಟ್‌ವರ್ಕ್‌ ಮರೆಯಲು ವಿಫಲವಾಗಿದೆ"</string>
     <string name="wifi_save" msgid="3331121567988522826">"ಉಳಿಸು"</string>
     <string name="wifi_failed_save_message" msgid="6650004874143815692">"ನೆಟ್‌ವರ್ಕ್‌ ಉಳಿಸಲು ವಿಫಲವಾಗಿದೆ"</string>
-    <string name="wifi_cancel" msgid="6763568902542968964">"ರದ್ದುಮಾಡು"</string>
+    <string name="wifi_cancel" msgid="6763568902542968964">"ರದ್ದುಮಾಡಿ"</string>
     <string name="wifi_skip_anyway" msgid="6965361454438011190">"ಅದೇನೇ ಇರಲಿ ಸ್ಕಿಪ್‌ ಮಾಡು"</string>
     <string name="wifi_dont_skip" msgid="3615535136327231588">"ಹಿಂತಿರುಗು"</string>
     <string name="wifi_skipped_message" product="tablet" msgid="6761689889733331124">"ಎಚ್ಚರಿಕೆ: ನೀವು ವೈ-ಫೈ ಸ್ಕಿಪ್ ಮಾಡಿದರೆ, ಆರಂಭಿಕ ಡೌನ್‌ಲೋಡ್‌ಗಳು ಮತ್ತು ನವೀಕರಣಗಳಿಗಾಗಿ ನಿಮ್ಮ ಟ್ಯಾಬ್ಲೆಟ್ ಸೆಲ್ಯುಲಾರ್ ಡೇಟಾವನ್ನು ಮಾತ್ರ ಬಳಸುತ್ತದೆ. ಸಂಭಾವ್ಯ ಡೇಟಾ ಶುಲ್ಕಗಳನ್ನು ನಿಯಂತ್ರಿಸಲು, ವೈ-ಫೈ ಗೆ ಸಂಪರ್ಕಪಡಿಸಿ."</string>
@@ -795,7 +795,7 @@
     <string name="wifi_advanced_settings_label" msgid="3654366894867838338">"IP ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
     <string name="wifi_advanced_not_available" msgid="5823045095444154586">"ಈ ಬಳಕೆದಾರರಿಗೆ ವೈ ಫೈ ಸುಧಾರಿತ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಲಭ್ಯವಿಲ್ಲ"</string>
     <string name="wifi_ip_settings_menu_save" msgid="7296724066102908366">"ಉಳಿಸು"</string>
-    <string name="wifi_ip_settings_menu_cancel" msgid="6582567330136502340">"ರದ್ದುಮಾಡು"</string>
+    <string name="wifi_ip_settings_menu_cancel" msgid="6582567330136502340">"ರದ್ದುಮಾಡಿ"</string>
     <string name="wifi_ip_settings_invalid_ip_address" msgid="2513142355364274970">"ಮಾನ್ಯವಾದ IP ವಿಳಾಸವನ್ನು ಟೈಪ್‌ ಮಾಡಿ."</string>
     <string name="wifi_ip_settings_invalid_gateway" msgid="8164264988361096450">"ಮಾನ್ಯವಾದ ಗೇಟ್‌ವೇ ವಿಳಾಸವನ್ನು ಟೈಪ್‌ ಮಾಡಿ."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="8744583948328391047">"ಮಾನ್ಯವಾದ DNS ವಿಳಾಸವನ್ನು ಟೈಪ್‌ ಮಾಡಿ."</string>
@@ -999,7 +999,7 @@
     <string name="sim_change_succeeded" msgid="8556135413096489627">"ಸಿಮ್‌ ಪಿನ್‌ ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಬದಲಾಯಿಸಲಾಗಿದೆ"</string>
     <string name="sim_lock_failed" msgid="2489611099235575984">"ಸಿಮ್‌ ಕಾರ್ಡ್ ಲಾಕ್ ಸ್ಥಿತಿಯನ್ನು ಬದಲಾಯಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.\nಬಹುಶಃ ತಪ್ಪಾದ ಪಿನ್‌."</string>
     <string name="sim_enter_ok" msgid="6475946836899218919">"ಸರಿ"</string>
-    <string name="sim_enter_cancel" msgid="6240422158517208036">"ರದ್ದುಮಾಡು"</string>
+    <string name="sim_enter_cancel" msgid="6240422158517208036">"ರದ್ದುಮಾಡಿ"</string>
     <string name="sim_multi_sims_title" msgid="9159427879911231239">"ಬಹು ಸಿಮ್‌ ಗಳು ಕಂಡುಬಂದಿವೆ"</string>
     <string name="sim_multi_sims_summary" msgid="7018740080801483990">"ಸೆಲ್ಯುಲಾರ್ ಡೇಟಾಗೆ ನೀವು ಬಯಸುವ ಸಿಮ್‌ ಆಯ್ಕೆಮಾಡಿ."</string>
     <string name="sim_change_data_title" msgid="294357201685244532">"ಡೇಟಾ ಸಿಮ್‌ ಬದಲಾಯಿಸುವುದೇ?"</string>
@@ -1501,7 +1501,7 @@
     <string name="clear_data_dlg_title" msgid="5605258400134511197">"ಅಪ್ಲಿಕೇಶನ್ ಡೇಟಾ ಅಳಿಸುವುದೇ?"</string>
     <string name="clear_data_dlg_text" msgid="3951297329833822490">"ಈ ಎಲ್ಲ ಅಪ್ಲಿಕೇಶನ್‌ನ ಡೇಟಾವನ್ನು ಶಾಶ್ವತವಾಗಿ ಅಳಿಸಲಾಗುತ್ತದೆ. ಇದರಲ್ಲಿ ಎಲ್ಲ ಫೈಲ್‌ಗಳು, ಸೆಟ್ಟಿಂಗ್‌ಗಳು, ಖಾತೆಗಳು, ಡೇಟಾಬೇಸ್‌ಗಳು ಇತರೆ ಒಳಗೊಂಡಿರುತ್ತದೆ."</string>
     <string name="dlg_ok" msgid="2402639055725653590">"ಸರಿ"</string>
-    <string name="dlg_cancel" msgid="1674753358972975911">"ರದ್ದುಮಾಡು"</string>
+    <string name="dlg_cancel" msgid="1674753358972975911">"ರದ್ದುಮಾಡಿ"</string>
     <string name="app_not_found_dlg_title" msgid="3127123411738434964"></string>
     <string name="app_not_found_dlg_text" msgid="4893589904687340011">"ಸ್ಥಾಪಿಸಲಾಗಿರುವ ಅಪ್ಲಿಕೇಶನ್‍ಗಳ ಪಟ್ಟಿಯಲ್ಲಿ ಅಪ್ಲಿಕೇಶನ್ ಕಂಡುಬಂದಿಲ್ಲ."</string>
     <string name="clear_data_failed" msgid="7214074331627422248">"ಅಪ್ಲಿಕೇಶನ್ ಡೇಟಾವನ್ನು ತೆರವುಗೊಳಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ."</string>
@@ -1814,7 +1814,7 @@
     <string name="print_print_jobs" msgid="3582094777756968793">"ಮುದ್ರಣ ಕಾರ್ಯಗಳು"</string>
     <string name="print_print_job" msgid="7563741676053287211">"ಮುದ್ರಣ ಕಾರ್ಯ"</string>
     <string name="print_restart" msgid="8373999687329384202">"ಮರುಪ್ರಾರಂಭಿಸಿ"</string>
-    <string name="print_cancel" msgid="3621199386568672235">"ರದ್ದುಮಾಡು"</string>
+    <string name="print_cancel" msgid="3621199386568672235">"ರದ್ದುಮಾಡಿ"</string>
     <string name="print_job_summary" msgid="8472427347192930694">"<xliff:g id="PRINTER">%1$s</xliff:g>\n<xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="print_printing_state_title_template" msgid="5736107667714582025">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> ಮುದ್ರಿಸಲಾಗುತ್ತಿದೆ"</string>
     <string name="print_cancelling_state_title_template" msgid="7102968925358219875">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> ರದ್ದು ಮಾಡಲಾಗುತ್ತಿದೆ"</string>
@@ -2083,7 +2083,7 @@
     <string name="wifi_setup_connect" msgid="7954456989590237049">"ಸಂಪರ್ಕಪಡಿಸು"</string>
     <string name="wifi_setup_forget" msgid="2562847595567347526">"ಮರೆತುಬಿಡು"</string>
     <string name="wifi_setup_save" msgid="3659235094218508211">"ಉಳಿಸು"</string>
-    <string name="wifi_setup_cancel" msgid="3185216020264410239">"ರದ್ದುಮಾಡು"</string>
+    <string name="wifi_setup_cancel" msgid="3185216020264410239">"ರದ್ದುಮಾಡಿ"</string>
     <string name="wifi_setup_status_scanning" msgid="5317003416385428036">"ನೆಟ್‌ವರ್ಕ್‌ಗಳನ್ನು ಸ್ಕ್ಯಾನ್‌ ಮಾಡಲಾಗುತ್ತಿದೆ…"</string>
     <string name="wifi_setup_status_select_network" msgid="3960480613544747397">"ನೆಟ್‌ವರ್ಕ್‌ಗೆ ಸಂಪರ್ಕಗೊಳಿಸಲು ಅದನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
     <string name="wifi_setup_status_existing_network" msgid="6394925174802598186">"ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ನೆಟ್‌ವರ್ಕ್‌ಗೆ ಸಂಪರ್ಕಗೊಳಿಸಿ"</string>
@@ -2268,7 +2268,7 @@
     <string name="vpn_not_used" msgid="9094191054524660891">"(ಬಳಸಲಾಗಿಲ್ಲ)"</string>
     <string name="vpn_no_ca_cert" msgid="8776029412793353361">"(ಸರ್ವರ್‌ ಅನ್ನು ಪರಿಶೀಲಿಸದಿರು)"</string>
     <string name="vpn_no_server_cert" msgid="2167487440231913330">"(ಸರ್ವರ್‌ನಿಂದ ಸ್ವೀಕರಿಸಲಾಗಿದೆ)"</string>
-    <string name="vpn_cancel" msgid="1979937976123659332">"ರದ್ದುಮಾಡು"</string>
+    <string name="vpn_cancel" msgid="1979937976123659332">"ರದ್ದುಮಾಡಿ"</string>
     <string name="vpn_done" msgid="8678655203910995914">"ವಜಾಗೊಳಿಸು"</string>
     <string name="vpn_save" msgid="4233484051644764510">"ಉಳಿಸು"</string>
     <string name="vpn_connect" msgid="8469608541746132301">"ಸಂಪರ್ಕಿಸು"</string>
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸು"</string>
     <string name="vpn_version" msgid="1939804054179766249">"<xliff:g id="VERSION">%s</xliff:g> ಆವೃತ್ತಿ"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN ಮರೆತುಬಿಡು"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ VPN ಸ್ಥಾನಾಂತರಿಸುವುದೇ?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"ನೀವು ಈಗಾಗಲೇ VPN ಗೆ ಸಂಪರ್ಕ ಹೊಂದಿರುವಿರಿ. ಒಂದು ವೇಳೆ ನೀವು ಬೇರೊಂದಕ್ಕೆ ಸಂಪರ್ಕಗೊಂಡಲ್ಲಿ, ನಿಮ್ಮ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ VPN ಅನ್ನು ಸ್ಥಾನಾಂತರಿಸಲಾಗುವುದು."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ VPN ಸ್ಥಾನಾಂತರಿಸುವುದೇ?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"VPN ಯಾವಾಗಲೂ ಆನ್ ಆಗಿರುವಂತೆ ಹೊಂದಿಸುವುದೇ?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"ಈ ಸೆಟ್ಟಿಂಗ್ ಆನ್ ಮಾಡುವ ಮೂಲಕ, VPN ಯಶಸ್ವಿಯಾಗಿ ಸಂಪರ್ಕವಾಗುವವರೆಗೆ ನೀವು ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕವನ್ನು ಹೊಂದುವುದಿಲ್ಲ"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"ನಿಮ್ಮ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ VPN ಅನ್ನು ಸ್ಥಾನಾಂತರಿಸಲಾಗುವುದು ಮತ್ತು VPN ಯಶಸ್ವಿಯಾಗಿ ಸಂಪರ್ಕವಾಗುವವರೆಗೆ ನೀವು ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕವನ್ನು ಹೊಂದುವುದಿಲ್ಲ"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"ಯಾವಾಗಲೂ ಆನ್ ಆಗಿರುವ VPN ಗೆ ನೀವು ಈಗಾಗಲೇ ಸಂಪರ್ಕಗೊಂಡಿರುವಿರಿ. ನೀವು ಬೇರೊಂದಕ್ಕೆ ಸಂಪರ್ಕಗೊಂಡಲ್ಲಿ, ನಿಮ್ಮ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ VPN ಅನ್ನು ಸ್ಥಾನಾಂತರಿಸಲಾಗುವುದು ಮತ್ತು ಯಾವಾಗಲೂ ಆನ್ ಮೋಡ್‌ನಲ್ಲಿರುವುದನ್ನು ಆಫ್ ಮಾಡಲಾಗುತ್ತದೆ."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"ನೀವು ಈಗಾಗಲೇ VPN ಗೆ ಸಂಪರ್ಕ ಹೊಂದಿರುವಿರಿ. ಒಂದು ವೇಳೆ ನೀವು ಬೇರೊಂದಕ್ಕೆ ಸಂಪರ್ಕಗೊಂಡಲ್ಲಿ, ನಿಮ್ಮ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ VPN ಅನ್ನು ಸ್ಥಾನಾಂತರಿಸಲಾಗುವುದು."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"ಆನ್ ಮಾಡು"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> ಸಂಪರ್ಕ ಸಾಧ್ಯವಿಲ್ಲ"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"ಈ ಅಪ್ಲಿಕೇಶನ್ ಯಾವಾಗಲೂ-ಆನ್ VPN ಬೆಂಬಲಿಸುವುದಿಲ್ಲ."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2319,7 +2324,7 @@
     <string name="new_backup_pw_prompt" msgid="8755501377391998428">"ಸಂಪೂರ್ಣ ಬ್ಯಾಕಪ್‌ಗಳಿಗಾಗಿ ಹೊಸ ಪಾಸ್‌ವರ್ಡನ್ನು ಇಲ್ಲಿ ಟೈಪ್ ಮಾಡಿ"</string>
     <string name="confirm_new_backup_pw_prompt" msgid="3238728882512787864">"ನಿಮ್ಮ ಹೊಸ ಪೂರ್ಣ ಬ್ಯಾಕಪ್ ಪಾಸ್‌ವರ್ಡ್‌ ಅನ್ನು ಇಲ್ಲಿ ಮರುಟೈಪ್ ಮಾಡಿ"</string>
     <string name="backup_pw_set_button_text" msgid="2387480910044648795">"ಬ್ಯಾಕಪ್ ಪಾಸ್‌ವರ್ಡ್‌ ಹೊಂದಿಸಿ"</string>
-    <string name="backup_pw_cancel_button_text" msgid="8845630125391744615">"ರದ್ದುಮಾಡು"</string>
+    <string name="backup_pw_cancel_button_text" msgid="8845630125391744615">"ರದ್ದುಮಾಡಿ"</string>
     <string name="additional_system_update_settings_list_item_title" msgid="214987609894661992">"ಹೆಚ್ಚುವರಿ ಸಿಸ್ಟಂ ಅಪ್‌ಡೇಟ್‌ಗಳು"</string>
     <string name="selinux_status_disabled" msgid="924551035552323327">"ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
     <string name="selinux_status_permissive" msgid="6004965534713398778">"ಅನುಮೋದನೆ"</string>
@@ -2522,10 +2527,12 @@
       <item quantity="one">%d ಮರೆಮಾಡಲಾದ ಐಟಂಗಳನ್ನು ತೋರಿಸಿ</item>
       <item quantity="other">%d ಮರೆಮಾಡಲಾದ ಐಟಂಗಳನ್ನು ತೋರಿಸಿ</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"ನೆಟ್‌ವರ್ಕ್ ಮತ್ತು ಇಂಟರ್ನೆಟ್"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"ಸಂಪರ್ಕ ಹೊಂದಿರುವ ಸಾಧನಗಳು"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಮತ್ತು ಅಧಿಸೂಚನೆಗಳು"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"ಬಳಕೆದಾರ ಮತ್ತು ಖಾತೆಗಳು"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"ಅಪ್ಲಿಕೇಶನ್ ಡಿಫಾಲ್ಟ್‌ಗಳು"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"ಭಾಷೆ: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
     <string name="search_menu" msgid="6283419262313758339">"ಹುಡುಕಾಟ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"ಹುಡುಕಾಟ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
@@ -2627,7 +2634,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"ಕೆಲಸದ ಪ್ರೊಫೈಲ್ ಧ್ವನಿಗಳನ್ನು ಬದಲಾಯಿಸುವುದೇ?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"ಸ್ಥಾನಾಂತರಿಸು"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"ನಿಮ್ಮ ಪ್ರಸ್ತುತ ಕೆಲಸದ ಪ್ರೊಫೈಲ್ ಧ್ವನಿಗಳನ್ನು ನಿಮ್ಮ ವೈಯಕ್ತಿಕ ಪ್ರೊಫೈಲ್ ಧ್ವನಿಯಾಗಿ ಸ್ಥಾನಾಂತರಿಸಲಾಗುತ್ತದೆ"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"ಅಧಿಸೂಚನೆಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"ಸುಧಾರಿತ"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"ಕೆಲಸದ ಅಧಿಸೂಚನೆಗಳು"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"ಪಲ್ಸ್ ಅಧಿಸೂಚನೆ ಬೆಳಕು"</string>
@@ -2666,7 +2674,7 @@
     <string name="notification_listener_security_warning_summary" msgid="119203147791040151">"ಸಂಪರ್ಕ ಹೆಸರುಗಳು ಮತ್ತು ನೀವು ಸ್ವೀಕರಿಸುವ ಸಂದೇಶಗಳ ಪಠ್ಯದಂತಹ ವೈಯಕ್ತಿಕ ಮಾಹಿತಿ ಸೇರಿದಂತೆ <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> ಗೆ ಎಲ್ಲ ಅಧಿಸೂಚನೆಗಳನ್ನು ಓದಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ. ಇದಕ್ಕೆ ಅಧಿಸೂಚನೆಗಳನ್ನು ವಜಾ ಮಾಡಲು ಅಥವಾ ಅವುಗಳು ಹೊಂದಿರುವಂತಹ ಕ್ರಿಯೆ ಬಟನ್‌ಗಳನ್ನು ಟ್ರಿಗ್ಗರ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ. \n\nಈ ಅಪ್ಲಿಕೇಶನ್ ಸಂಬಂಧಿಸಿದ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಲು ಮತ್ತು ಅಡಚಣೆ ಮಾಡಬೇಡ ಆನ್ ಅಥವಾ ಆಫ್ ಮಾಡುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಈ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ನೀಡುತ್ತದೆ."</string>
     <string name="notification_listener_disable_warning_summary" msgid="6738915379642948000">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> ಗೆ ನೀವು ಅಧಿಸೂಚನೆ ಪ್ರವೇಶಿಸುವಿಕೆಯನ್ನು ಆಫ್ ಮಾಡಿದರೆ, ಅಡಚಣೆ ಮಾಡಬೇಡಿ ಪ್ರವೇಶವು ಸಹ ಆಫ್ ಆಗಬಹುದು."</string>
     <string name="notification_listener_disable_warning_confirm" msgid="8333442186428083057">"ಆಫ್ ಮಾಡು"</string>
-    <string name="notification_listener_disable_warning_cancel" msgid="8586417377104211584">"ರದ್ದು ಮಾಡು"</string>
+    <string name="notification_listener_disable_warning_cancel" msgid="8586417377104211584">"ರದ್ದು ಮಾಡಿ"</string>
     <string name="vr_listeners_title" msgid="1318901577754715777">"VR ಸಹಾಯ ಸೇವೆಗಳು"</string>
     <string name="no_vr_listeners" msgid="2689382881717507390">"ಯಾವುದೇ ಸ್ಥಾಪಿಸಿದ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು VR ಸಹಾಯಕ ಸೇವೆಗಳ ರೀತಿಯಲ್ಲಿ ರನ್ ಮಾಡಲು ವಿನಂತಿಸಿಲ್ಲ."</string>
     <string name="vr_listener_security_warning_title" msgid="8309673749124927122">"<xliff:g id="SERVICE">%1$s</xliff:g> ಗೆ VR ಸೇವೆ ಪ್ರವೇಶವನ್ನು ಅನುಮತಿಸುವುದೇ?"</string>
@@ -3033,8 +3041,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"ಮಂಗಳ 6:01PM"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"ಮಂಗಳ 6:02PM"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"ಮಂಗಳ 6:03PM"</string>
-    <string name="see_all" msgid="8883901630052886984">"ಎಲ್ಲವನ್ನೂ ನೋಡಿ"</string>
-    <string name="see_less" msgid="1250265310929558370">"ಕಡಿಮೆ ನೋಡಿ"</string>
     <string name="disconnected" msgid="5787956818111197212">"ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಲಾಗಿದೆ"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> ಡೇಟಾ ಬಳಸಲಾಗಿದೆ"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 00b2048..3b6ae5b 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"연결 해제"</string>
     <string name="vpn_version" msgid="1939804054179766249">"버전 <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN 삭제"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"기존 VPN을 교체하시겠습니까?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"이미 VPN에 연결되어 있습니다. 다른 VPN에 연결하면 기존 VPN은 교체됩니다."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"기존 VPN을 교체하시겠습니까?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"연결 유지 VPN을 설정하시겠습니까?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"이 설정을 사용하면 VPN이 연결될 때까지 인터넷에 연결되지 않습니다."</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"기존 VPN이 교체되며 VPN에 연결될 때까지 인터넷에 연결되지 않습니다."</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"이미 연결 유지 VPN에 연결되어 있습니다. 다른 VPN에 연결하면 기존 VPN은 교체되며 연결 유지 모드가 사용 중지됩니다."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"이미 VPN에 연결되어 있습니다. 다른 VPN에 연결하면 기존 VPN은 교체됩니다."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"사용"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g>에 연결할 수 없습니다."</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"이 앱은 연결 유지 VPN을 지원하지 않습니다."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2522,10 +2527,12 @@
       <item quantity="other">%d개의 숨겨진 항목 표시</item>
       <item quantity="one">%d개의 숨겨진 항목 표시</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"네트워크 및 인터넷"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"연결된 기기"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"앱 및 알림"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"사용자 및 계정"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"앱 기본값"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"언어: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"설정"</string>
     <string name="search_menu" msgid="6283419262313758339">"검색 설정"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"검색 설정"</string>
@@ -2627,7 +2634,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"직장 프로필 사운드 바꾸기"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"바꾸기"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"현재 직장 프로필 사운드가 개인 프로필 사운드로 대체됩니다."</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"알림 구성"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"고급"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"직장 알림"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"알림등 반복 표시"</string>
@@ -3033,8 +3041,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"화요일 오후 6시 1분"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"화요일 오후 6시 2분"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"화요일 오후 6시 3분"</string>
-    <string name="see_all" msgid="8883901630052886984">"모두 보기"</string>
-    <string name="see_less" msgid="1250265310929558370">"간략히 보기"</string>
     <string name="disconnected" msgid="5787956818111197212">"연결 해제됨"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"데이터 <xliff:g id="AMOUNT">%1$s</xliff:g> 사용됨"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-ky-rKG/strings.xml b/res/values-ky-rKG/strings.xml
index 776529d..a0d06f2 100644
--- a/res/values-ky-rKG/strings.xml
+++ b/res/values-ky-rKG/strings.xml
@@ -2279,8 +2279,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Ажыратуу"</string>
     <string name="vpn_version" msgid="1939804054179766249">"<xliff:g id="VERSION">%s</xliff:g> версиясы"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN профили унутулсун"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Учурдагы VPN алмаштырылсынбы?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"VPN кызматы туташылган. Эгер башкасына туташсаңыз, учурдагы VPN өчүрүлөт."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Учурдагы VPN алмаштырылсынбы?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Дайым иштеген VPN\'ди жөндөө керекпи?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Бул орнотууну куйгүзүү менен VPN ийгиликтүү туташмайынча, интернетиңиз жок болуп турат"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Күйгүзүлгөн VPN\'ңиз алмаштырылып, VPN ийгиликтүү туташмайынча, интернетиңиз жок болуп турат"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Дайым иштеген VPN кызматыңыз туташылган. Эгер башкасына туташсаңыз, учурдагы VPN алмаштырылып, дайым күйүк режими өчүрүлүп калат."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"VPN кызматы туташылган. Эгер башкасына туташсаңыз, учурдагы VPN өчүрүлөт."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Күйгүзүү"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> туташпай жатат"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Бул колдонмо дайым иштеген VPN кызматына туташпайт."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2522,8 +2527,11 @@
       <item quantity="one">Жашырылган %d нерсе көрсөтүлсүн</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Тармак жана Интернет"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Туташкан түзмөктөр"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Колдонмолор жана эскертмелер"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Колдонуучу жана каттоо эсептери"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Демейки колдонмолор"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Тили: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Жөндөөлөр"</string>
     <string name="search_menu" msgid="6283419262313758339">"Издөө жөндөөлөрү"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Издөө жөндөөлөрү"</string>
@@ -2625,7 +2633,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Үндөр алмаштырылсынбы?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Алмаштыруу"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Учурдагы жумуш профилиңиздин үндөрү жеке профилиңиздин үндөрү менен алмаштырылат."</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Эскертмелерди жөндөө"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"Өркүндөтүлгөн"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Жумуш боюнча эскертмелер"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Тармактын индикатору"</string>
@@ -3031,8 +3040,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Шй. 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Шй. 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Шй. 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Бардыгын көрүү"</string>
-    <string name="see_less" msgid="1250265310929558370">"Азыраак көрүү"</string>
     <string name="disconnected" msgid="5787956818111197212">"Ажыратылган"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Дайындардын <xliff:g id="AMOUNT">%1$s</xliff:g> колдонулду"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml
index 929aa93..2d5b789 100644
--- a/res/values-lo-rLA/strings.xml
+++ b/res/values-lo-rLA/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"ຕັດການເຊື່ອມຕໍ່"</string>
     <string name="vpn_version" msgid="1939804054179766249">"ເວີ​ຊັນ <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"ລືມ VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"ຂຽນທັບ VPN ທີ່ມີຢູ່ກ່ອນແລ້ວຂອງທ່ານບໍ?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"ທ່ານເຊື່ອມຕໍ່ຫາ VPN ຢູ່ກ່ອນແລ້ວ. ຫາກທ່ານເຊື່ອມຕໍ່ຫາອັນອື່ນອີກ, VPN ທີ່ມີຢູ່ແລ້ວຂອງທ່ານຈະຖືກແທນທີ່."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"ຂຽນທັບ VPN ທີ່ມີຢູ່ກ່ອນແລ້ວຂອງທ່ານບໍ?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Set always-on VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"By turning on this setting, you won\'t have an Internet connection until the VPN successfully connects"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Your existing VPN will be replaced, and you won\'t have an Internet connection until the VPN successfully connects"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"You\'re already connected to an always-on VPN. If you connect to a different one, your existing VPN will be replaced, and always-on mode will turn off."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"ທ່ານເຊື່ອມຕໍ່ຫາ VPN ຢູ່ກ່ອນແລ້ວ. ຫາກທ່ານເຊື່ອມຕໍ່ຫາອັນອື່ນອີກ, VPN ທີ່ມີຢູ່ແລ້ວຂອງທ່ານຈະຖືກແທນທີ່."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"ເປີດໃຊ້"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> ບໍ່ສາມາດເຊື່ອມຕໍ່ໄດ້"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"ແອັບນີ້ບໍ່ຮອງຮັບ VPN ແບບເປີດຕະຫຼອດເວລາ."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2522,10 +2527,12 @@
       <item quantity="other">ສະແດງ %d ລາຍການທີ່ເຊື່ອງໄວ້</item>
       <item quantity="one">ສະແດງ %d ລາຍການທີ່ເຊື່ອງໄວ້</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"ເຄືອຂ່າຍ ແລະ ອິນເຕີເນັດ"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"ອຸປະກອນທີ່ເຊື່ອມຕໍ່ແລ້ວ"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"ແອັບ ແລະ ການແຈ້ງເຕືອນ"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"User &amp; accounts"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"App defaults"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Language: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"​ການ​ຕັ້ງ​ຄ່າ"</string>
     <string name="search_menu" msgid="6283419262313758339">"​ການ​ຕັ້ງ​ຄ່າ​ການ​ຊອກ​ຫາ"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"​ການ​ຕັ້ງ​ຄ່າ​ການ​ຊອກ​ຫາ"</string>
@@ -2627,7 +2634,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"ແທນທີ່ສຽງໂປຣໄຟລ໌ບ່ອນເຮັດວຽກບໍ?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"ແທນທີ່"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"ສຽງໂປຣໄຟລ໌ບ່ອນເຮັດວຽກຂອງທ່ານໃນປັດຈຸບັນຈະຖືກແທນທີ່ດ້ວຍສຽງໂປຣໄຟລ໌ສ່ວນຕົວຂອງທ່ານ"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"ປັບແຕ່ງການແຈ້ງເຕືອນ"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"​ຂັ້ນ​ສູງ"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"ການແຈ້ງເຕືອນວຽກ"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"ໄຟກະພິບແຈ້ງເຕືອນ"</string>
@@ -3033,8 +3041,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"ອັງຄານ 6:01 ໂມງແລງ"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"ອັງຄານ 6:02 ໂມງແລງ"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"ອັງຄານ 6:03 ໂມງແລງ"</string>
-    <string name="see_all" msgid="8883901630052886984">"ເບິ່ງ​ທັງ​ໝົດ"</string>
-    <string name="see_less" msgid="1250265310929558370">"​​ເບິ່ງ​ໜ້ອຍ​ລົງ"</string>
     <string name="disconnected" msgid="5787956818111197212">"​ຕັດ​ການ​ເຊື່ອມ​ຕໍ່​ແລ້ວ"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"ໃຊ້ຂໍ້ມູນໄປແລ້ວ <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index d61c372..d2e09e0 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -2314,8 +2314,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Atsijungti"</string>
     <string name="vpn_version" msgid="1939804054179766249">"<xliff:g id="VERSION">%s</xliff:g> versija"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Pamiršti VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Pakeisti esamą VPN?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Jau prisijungėte prie VPN. Prisijungus prie kito VPN, esamas VPN bus pakeistas."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Pakeisti esamą VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Nustatyti visada įjungtą VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Įjungę šį nustatymą neturėsite interneto ryšio, kol VPN nebus sėkmingai įjungtas"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Esamas VPN bus pakeistas ir jūs neturėsite interneto ryšio, kol VPN nebus sėkmingai įjungtas"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Jau esate prisijungę prie visada įjungto VPN. Jei prisijungsite prie kito VPN, esamas VPN bus pakeistas ir visada įjungto VPN režimas bus išjungtas."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Jau esate prisijungę prie VPN. Jei prisijungsite prie kito VPN, esamas VPN bus pakeistas."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Įjungti"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Nepavyko prisijungti prie „<xliff:g id="VPN_NAME">%1$s</xliff:g>“"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Ši programa nepalaiko visada įjungto VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2567,8 +2572,11 @@
       <item quantity="other">Rodyti %d paslėptų elementų</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Tinkas ir internetas"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Prijungti įrenginiai"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Programos ir pranešimai"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Naudotojas ir paskyros"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Programos numatytieji nustatymai"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Kalba: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Nustatymai"</string>
     <string name="search_menu" msgid="6283419262313758339">"Paieškos nustatymai"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Paieškos nustatymai"</string>
@@ -2670,7 +2678,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Pakeisti darbo profil. garsus?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Pakeisti"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Dabartiniai darbo profilio garsai bus pakeisti asmeninio profilio garsais"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Pranešimų konfigūravimas"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Pranešimų nuostatos"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Išplėstiniai"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Darbo profilio pranešimai"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Pulsuojanti įspėjimo šviesa"</string>
@@ -3094,8 +3102,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"A., 18.01 val."</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"A., 18.02 val."</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"A., 18.03 val."</string>
-    <string name="see_all" msgid="8883901630052886984">"Žr. viską"</string>
-    <string name="see_less" msgid="1250265310929558370">"Žr. mažiau"</string>
     <string name="disconnected" msgid="5787956818111197212">"Atsijungta"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Panaudota duomenų: <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 3bde22c..a6cf1a0 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -2297,8 +2297,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Pārtraukt savienojumu"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versija <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Aizmirst VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Vai aizstāt esošo VPN?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Jau ir izveidots savienojums ar VPN. Izveidojot savienojumu ar citu VPN, esošais tiks aizstāts."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Vai aizstāt esošo VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Vai iestatīt vienmēr ieslēgtu VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Ieslēdzot šo iestatījumu, jums nebūs interneta savienojuma, kamēr nebūs sekmīgi izveidots VPN savienojums."</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Jūsu esošais VPN tiks aizstāts, un jums nebūs interneta savienojuma, kamēr nebūs sekmīgi izveidots VPN savienojums."</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Jūs jau esat izveidojis savienojumu ar vienmēr ieslēgtu VPN. Ja izveidosiet savienojumu ar citu VPN, esošais VPN tiks aizstāts un režīms “vienmēr ieslēgts” tiks izslēgts."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Jau ir izveidots savienojums ar VPN. Izveidojot savienojumu ar citu VPN, esošais tiks aizstāts."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Ieslēgt"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g>: nevar izveidot savienojumu"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Šajā lietotnē netiek atbalstīts vienmēr ieslēgts VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2544,10 +2549,12 @@
       <item quantity="one">Rādīt %d slēptu vienumu</item>
       <item quantity="other">Rādīt %d slēptus vienumus</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Tīkls un internets"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Pievienotās ierīces"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Lietotnes un paziņojumi"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Lietotāji un konti"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Noklusējuma lietotnes"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Valoda: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Iestatījumi"</string>
     <string name="search_menu" msgid="6283419262313758339">"Meklēšanas iestatījumi"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Meklēšanas iestatījumi"</string>
@@ -2649,7 +2656,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Aizstāt darba profila signālus?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Aizstāt"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Jūsu pašreizējā darba profila signāli tiks aizstāti ar jūsu personiskā profila signāliem."</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Paziņojumu konfigurēšana"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Paziņojumu preferences"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Papildu"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Darba paziņojumi"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Pulsa paziņojuma indikators"</string>
@@ -3063,8 +3070,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Otrdien plkst. 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Otrdien plkst. 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Otrdien plkst. 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Skatīt visus"</string>
-    <string name="see_less" msgid="1250265310929558370">"Skatīt mazāk"</string>
     <string name="disconnected" msgid="5787956818111197212">"Atvienots"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Izmantoti <xliff:g id="AMOUNT">%1$s</xliff:g> datu"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-mk-rMK/strings.xml b/res/values-mk-rMK/strings.xml
index e923fff..fef1182 100644
--- a/res/values-mk-rMK/strings.xml
+++ b/res/values-mk-rMK/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Исклучи"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Верзија <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Заборави VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Да се замени постоечката VPN?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Веќе сте поврзани на VPN. Ако се поврзете на друга мрежа, постојната VPN ќе биде заменета."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Да се замени постојната VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Да се постави „секогаш вклучена“ VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Ако ја вклучите поставкава, нема да имате интернет-врска сѐ додека VPN успешно се поврзе"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Вашата постојна VPN ќе се замени и нема да имате интернет-врска сѐ додека VPN успешно се поврзе"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Веќе сте поврзани на „секогаш вклучена“ VPN. Ако се поврзете на друга мрежа, вашата постојна VPN ќе се замени и режимот „секогаш вклучена“ ќе се исклучи."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Веќе сте поврзани на VPN. Ако се поврзете на друга мрежа, вашата постојна VPN ќе се замени."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Вклучете"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> не може да се поврзе"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Оваа апликација не поддржува постојано вклучен VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"Виртуелна приватна мрежа (VPN)"</string>
@@ -2522,10 +2527,12 @@
       <item quantity="one">Прикажи %d сокриена ставка</item>
       <item quantity="other">Прикажи %d сокриени ставки</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Мрежа и Интернет"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Поврзани уреди"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Апликации и известувања"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Корисник и сметки"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Стандардни апликации"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Јазик: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Поставки"</string>
     <string name="search_menu" msgid="6283419262313758339">"Поставки за пребарување"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Поставки за пребарување"</string>
@@ -2627,7 +2634,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Заменете звуци на раб. профил?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Замени"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Тековните звуци на работниот профил ќе бидат заменети со звуците од личниот профил"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Конфигурирајте известувања"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"Напредни"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Известувања за работен профил"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Пулсирачко светло за известување"</string>
@@ -3033,8 +3041,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Вто 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Вто 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Вто 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Види ги сите"</string>
-    <string name="see_less" msgid="1250265310929558370">"Види помалку"</string>
     <string name="disconnected" msgid="5787956818111197212">"Исклучено"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> од податоците се искористени"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-ml-rIN/strings.xml b/res/values-ml-rIN/strings.xml
index df0b42d..d6ed12e 100644
--- a/res/values-ml-rIN/strings.xml
+++ b/res/values-ml-rIN/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"വിച്ഛേദിക്കുക"</string>
     <string name="vpn_version" msgid="1939804054179766249">"പതിപ്പ് <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN മറക്കുക"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"നിലവിലുള്ള VPN-ന് പകരം പുതിയതാക്കണോ?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"ഇതിനകം തന്നെ നിങ്ങൾ ഒരു VPN-ലേക്ക് കണക്റ്റുചെയ്തിട്ടുണ്ട്. നിങ്ങൾ വേറൊരു VPN-ലേക്ക് കണക്റ്റുചെയ്യുന്ന പക്ഷം, നിലവിലുള്ളതിന് പകരം പുതിയത് ഉപയോഗിക്കും."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"നിലവിലുള്ള VPN-ന് പകരം പുതിയതാക്കണോ?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"\'എല്ലായ്പ്പോഴും ഓൺ\' VPN സജ്ജമാക്കണോ?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"ഈ ക്രമീകരണം ഓണാക്കുകയാണെങ്കിൽ, VPN കണക്റ്റുചെയ്യുന്നത് വരെ നിങ്ങൾക്ക് ഇന്റർനെറ്റ് കണക്ഷൻ ഉണ്ടായിരിക്കുകയില്ല."</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"നിലവിലുള്ള VPN-ന് പകരം പുതിയത് ഉപയോഗിക്കും, VPN കണക്റ്റുചെയ്യുന്നത് വരെ നിങ്ങൾക്ക് ഇന്റർനെറ്റ് കണക്ഷൻ ഉണ്ടായിരിക്കുകയുമില്ല."</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"ഇതിനകം തന്നെ നിങ്ങളൊരു \'എല്ലായ്പ്പോഴും ഓൺ\' VPN-ലേക്ക് കണക്റ്റുചെയ്തിട്ടുണ്ട്. നിങ്ങൾ വേറൊരു VPN-ലേക്ക് കണക്റ്റുചെയ്യുന്ന പക്ഷം, നിലവിലുള്ളതിന് പകരം പുതിയത് ഉപയോഗിക്കും, \'എല്ലായ്പ്പോഴും ഓൺ\' മോഡ് ഓഫാവുകയും ചെയ്യും."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"ഇതിനകം തന്നെ നിങ്ങൾ ഒരു VPN-ലേക്ക് കണക്റ്റുചെയ്തിട്ടുണ്ട്. നിങ്ങൾ വേറൊരു VPN-ലേക്ക് കണക്റ്റുചെയ്യുന്ന പക്ഷം, നിലവിലുള്ളതിന് പകരം പുതിയത് ഉപയോഗിക്കും."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"ഓൺ ചെയ്യുക"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> കണക്റ്റുചെയ്യാൻ കഴിയില്ല"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"ഈ ആപ്പ് \'എല്ലായ്‌പ്പോഴും ഓണായിരിക്കുന്ന VPN\' പിന്തുണയ്ക്കുന്നില്ല."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2522,10 +2527,12 @@
       <item quantity="other">മറച്ച %d ഇനങ്ങൾ കാണിക്കുക</item>
       <item quantity="one">മറച്ച %d ഇനം കാണിക്കുക</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"നെറ്റ്‌വർക്കും ഇന്റർനെറ്റും"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"കണക്‌റ്റുചെയ്‌ത ഉപകരണങ്ങൾ"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"ആപ്‌സും അറിയിപ്പുകളും"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"ഉപയോക്താവും അക്കൗണ്ടുകളും"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"ആപ്പ് ഡിഫോൾട്ടുകൾ"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"ഭാഷ: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"ക്രമീകരണം"</string>
     <string name="search_menu" msgid="6283419262313758339">"തിരയൽ ക്രമീകരണം"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"തിരയൽ ക്രമീകരണങ്ങൾ"</string>
@@ -2627,7 +2634,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"ഔദ്യോഗിക പ്രൊഫൈൽ ശബ്ദങ്ങൾ മാറ്റണോ?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"മാറ്റിസ്ഥാപിക്കുക"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"നിങ്ങളുടെ നിലവിലെ ഔദ്യോഗിക പ്രൊഫൈൽ ശബ്ദങ്ങൾക്ക് പകരമായി നിങ്ങളുടെ വ്യക്തിഗത പ്രൊഫൈൽ ശബ്ദങ്ങൾ ഉപയോഗിക്കപ്പെടും"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"അറിയിപ്പ് കോൺഫിഗർചെയ്യൂ"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"വിപുലമായത്"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"ഔദ്യോഗിക അറിയിപ്പുകൾ"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"അറിയിപ്പുലൈറ്റ് പ്രകാശിപ്പിക്കൂ"</string>
@@ -3033,8 +3041,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"ചൊവ്വ 6:01PM"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"ചൊവ്വ 6:02PM"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"ചൊവ്വ 6:03PM"</string>
-    <string name="see_all" msgid="8883901630052886984">"എല്ലാം കാണുക"</string>
-    <string name="see_less" msgid="1250265310929558370">"കുറച്ച് കാണുക"</string>
     <string name="disconnected" msgid="5787956818111197212">"വിച്ഛേദിച്ചു"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> ഡാറ്റ ഉപയോഗിച്ചു"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml
index 4d97773..ff83d6a 100644
--- a/res/values-mn-rMN/strings.xml
+++ b/res/values-mn-rMN/strings.xml
@@ -1690,7 +1690,7 @@
     <string name="battery_history_minutes_no_seconds" msgid="7780294302606853082">"<xliff:g id="MINUTES">%1$d</xliff:g>м"</string>
     <string name="usage_stats_label" msgid="5890846333487083609">"Ашиглалтын статистик"</string>
     <string name="testing_usage_stats" msgid="7823048598893937339">"Ашиглалтын статистик"</string>
-    <string name="display_order_text" msgid="8592776965827565271">"Эрэмблэх:"</string>
+    <string name="display_order_text" msgid="8592776965827565271">"Эрэмбэлэх:"</string>
     <string name="app_name_label" msgid="5440362857006046193">"Апп"</string>
     <string name="last_time_used_label" msgid="8459441968795479307">"Ашигласан сүүлийн цаг"</string>
     <string name="usage_time_label" msgid="295954901452833058">"Ашиглалтын цаг"</string>
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Салгах"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Хувилбар <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN мартсан"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Энэ VPN-ийг солих уу?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Та VPN-д аль хэдийн холбогдсон байна. Хэрэв та өөр VPN-д холбогдвол одоогийн ашиглаж байгаа VPN-г орлуулах болно."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Энэ VPN-г солих уу?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"VPN-г тогтмол асаалттайгаар тохируулах уу?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Та энэ тохиргоог асааснаар VPN-г холбогдох хүртэл Интернэтэд холбогдох боломжгүй болно"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Таны одоогийн VPN-г солих бөгөөд та VPN-г холбогдох хүртэл Интернэтэд холбогдох боломжгүй болно"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Та аль хэдийн тогтмол асаалттай VPN-д холбогдсон байна. Хэрэв та өөр холболтод холбогдвол таны одоогийн VPN-г сольж, тогтмол асаалттай горим унтрах болно."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Та аль хэдийн VPN-д холбогдсон байна. Хэрэв та өөр холболтод холбогдвол одоогийн ашиглаж байгаа VPN-г солих болно."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Асаах"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> холбогдох боломжгүй байна"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Энэ апп нь тотгмол асаалттай VPN-г дэмждэггүй."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2522,10 +2527,12 @@
       <item quantity="other">Нуусан %d зүйлийг харуулах</item>
       <item quantity="one">Нуусан %d зүйлийг харуулах</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Сүлжээ &amp; интернэт"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Холбогдсон төхөөрөмж"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Апп; мэдэгдэл"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Хэрэглэгч &amp; бүртгэл"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Апп-н өгөгдмөл"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Хэл: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Тохиргоо"</string>
     <string name="search_menu" msgid="6283419262313758339">"Хайлтын тохиргоо"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Хайлтын тохиргоо"</string>
@@ -2627,7 +2634,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Ажлын профайлын дууг солих уу?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Солих"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Таны ажлын профайлын одоогийн дууг таны хувийн профайлын дуугаар солих болно"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Мэдэгдлийг оновчлох"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"Нарийвчилсан"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Ажлын мэдэгдэл"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Анивчих мэдэгдлийн гэрэл"</string>
@@ -3031,8 +3039,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Мя 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Мя 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Мя 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Бүгдийг харах"</string>
-    <string name="see_less" msgid="1250265310929558370">"Цөөнийг харах"</string>
     <string name="disconnected" msgid="5787956818111197212">"Салгасан"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> датаг ашигласан"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-mr-rIN/strings.xml b/res/values-mr-rIN/strings.xml
index ca64607..8f3e1da 100644
--- a/res/values-mr-rIN/strings.xml
+++ b/res/values-mr-rIN/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"‍डिस्कनेक्ट करा"</string>
     <string name="vpn_version" msgid="1939804054179766249">"आवृत्ती <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN विसरा"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"विद्यमान VPN पुनर्स्थित करायचे?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"आपण आधीपासून एका VPN शी कनेक्ट केले आहे. आपण भिन्न VPN शी कनेक्ट केल्यास, आपले विद्यमान VPN बदलले जाईल."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"विद्यमान VPN पुनर्स्थित करायचे?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"नेहमी-चालू VPN सेट करायचे?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"हे सेटिंग चालू करून, VPN यशस्वीरित्या कनेक्ट करेपर्यंत आपल्याकडे इंटरनेट कनेक्शन असणार नाही"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"आपले विद्यमान VPN पुनर्स्थित केले जाईल आणि VPN यशस्वीरित्या कनेक्ट करेपर्यंत आपल्याकडे इंटरनेट कनेक्शन असणार नाही"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"आपण आधीपासून नेहमी-चालू VPN शी कनेक्ट केले आहे. आपण एका भिन्न VPN शी कनेक्ट केल्यास, आपले विद्यमान VPN पुनर्स्थित केले जाईल आणि नेहमी-चालू मोड बंद होईल."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"आपण आधीपासून एका VPN शी कनेक्ट केले आहे. आपण भिन्न VPN शी कनेक्ट केल्यास, आपले विद्यमान VPN बदलले जाईल."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"चालू करा"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> कनेक्ट करू शकत नाही"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"हा अॅप नेहमी-चालू VPN ला समर्थन देत नाही."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2522,10 +2527,12 @@
       <item quantity="one">%d लपविलेला आयटम दर्शवा</item>
       <item quantity="other">%d लपविलेले आयटम दर्शवा</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"नेटवर्क आणि इंटरनेट"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"कनेक्‍ट केलेले डिव्‍हाइसेस"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"अॅप्स आणि सूचना"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"वापरकर्ता आणि खाती"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"अॅप डीफॉल्ट"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"भाषा: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"सेटिंग्ज"</string>
     <string name="search_menu" msgid="6283419262313758339">"शोध सेटिंग्ज"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"शोध सेटिंग्ज"</string>
@@ -2627,7 +2634,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"कार्य प्रोफाईल ध्वनी पुनर्स्थित करायचे?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"पुनर्स्थित करा"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"आपले वर्तमान कार्य प्रोफाइल ध्वनी आपल्या वैयक्तिक प्रोफाइल ध्वनींनी पुनर्स्थित केले जातील"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"सूचना कॉन्फिगर करा"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"प्रगत"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"कार्य सूचना"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"पल्स सूचना प्रकाश"</string>
@@ -3033,8 +3041,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"मंगळवारी 6:01PM वाजता"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"मंगळवारी 6:02PM वाजता"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"मंगळवारी 6:03PM वाजता"</string>
-    <string name="see_all" msgid="8883901630052886984">"सर्व पहा"</string>
-    <string name="see_less" msgid="1250265310929558370">"कमी पहा"</string>
     <string name="disconnected" msgid="5787956818111197212">"डिस्कनेक्ट केले"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> डेटा वापरला"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
index 18655cb..e3f572e 100644
--- a/res/values-ms-rMY/strings.xml
+++ b/res/values-ms-rMY/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Putuskan sambungan"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versi <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Lupakan VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Gantikan VPN yang sedia ada?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Anda sudah disambungkan ke VPN. Jika anda menyambung ke VPN yang lain, VPN anda yang sedia ada akan digantikan."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Gantikan VPN yang sedia ada?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Tetapkan VPN sentiasa hidup?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Dengan menghidupkan tetapan ini, anda tidak akan ada sambungan Internet sehingga VPN berjaya disambungkan"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"VPN anda yang sedia ada akan digantikan dan anda tidak akan ada sambungan Internet sehingga VPN berjaya disambungkan"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Anda sudah disambungkan ke VPN sentiasa hidup. Jika anda menyambung ke VPN yang lain, VPN anda yang sedia ada akan digantikan dan mod sentiasa hidup akan dimatikan."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Anda sudah disambungkan ke VPN. Jika anda menyambung ke VPN yang lain, VPN anda yang sedia ada akan digantikan."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Hidupkan"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> tidak dapat menyambung"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Apl ini tidak menyokong VPN yang sentiasa hidup"</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2522,10 +2527,12 @@
       <item quantity="other">Tunjukkan %d item yang tersembunyi</item>
       <item quantity="one">Tunjukkan %d item yang tersembunyi</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Rangkaian &amp; Internet"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Peranti yang disambungkan"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apl &amp; pemberitahuan"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Pengguna &amp; akaun"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Lalai apl"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Bahasa: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Tetapan"</string>
     <string name="search_menu" msgid="6283419262313758339">"Tetapan carian"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Tetapan carian"</string>
@@ -2627,7 +2634,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Gantikan bunyi profil kerja?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Gantikan"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Bunyi profil kerja semasa akan digantikan dengan bunyi profil peribadi anda."</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Konfigurasikan pemberitahuan"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"Terperinci"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Pemberitahuan kerja"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Kelip lampu pemberitahuan"</string>
@@ -3033,8 +3041,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Sel 6:01PTG"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Sel 6:02PTG"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Sel 6:03 PTG"</string>
-    <string name="see_all" msgid="8883901630052886984">"Lihat semua"</string>
-    <string name="see_less" msgid="1250265310929558370">"Lihat kurang"</string>
     <string name="disconnected" msgid="5787956818111197212">"Diputuskan sambungan"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> data digunakan"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-my-rMM/strings.xml b/res/values-my-rMM/strings.xml
index 976bbad..5b473ce 100644
--- a/res/values-my-rMM/strings.xml
+++ b/res/values-my-rMM/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"ဆက်သွယ်မှု ဖြတ်ရန်"</string>
     <string name="vpn_version" msgid="1939804054179766249">"ဗားရှင်း <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN ကိုမေ့လိုက်ပါ"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"ရှိပြီးသား VPN ကိုအစားထိုးမလား။"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"VPN သို့ချိတ်ဆက်ပြီးသား ဖြစ်ပါသည်။ အခြားတစ်ခုသို့ ချိတ်ဆက်လျှင်၊ လက်ရှိ VPN ကိုအစားထိုးသွားပါမည်။"</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"ရှိပြီးသား VPN ကိုအစားထိုးမလား။"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"VPN ကို အမြဲတမ်းဖွင့်ထားရန် သတ်မှတ်မလား။"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"ဤဆက်တင်ကို ဖွင့်ခြင်းဖြင့် VPN အောင်မြင်စွာ မချိတ်မချင်း သင့်တွင် အင်တာနက်ချိတ်ဆက်မှု ရှိမည်မဟုတ်ပါ"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"သင်၏ လက်ရှိ VPN ကို အစားထိုးသွားမည်ဖြစ်၍ VPN အောင်မြင်စွာ မချိတ်မချင်း သင့်ထံတွင် အင်တာနက် ချိတ်ဆက်မှု ရှိမည်မဟုတ်ပါ"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"သင်သည် အမြဲတမ်းဖွင့်ထားရသော VPN နှင့် ချိတ်ဆက်ပြီးသားဖြစ်သည်။ အခြားတစ်ခုနှင့် ချိတ်ဆက်လိုက်လျှင် လက်ရှိ VPN ကို အစားထိုးသွားမည်ဖြစ်၍ အမြဲဖွင့်ထားရသော မုဒ်သည် ပိတ်သွားပါမည်။"</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"VPN သို့ ချိတ်ဆက်ပြီးသား ဖြစ်ပါသည်။ အခြားတစ်ခုသို့ ချိတ်ဆက်လျှင် လက်ရှိ VPN ကိုအစားထိုးသွားပါမည်။"</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"ဖွင့်ရန်"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> ချိတ်ဆက်၍မရပါ"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"ဤအက်ပ်သည် VPN အမြဲတမ်းဖွင့်ထားခြင်းကို ပံ့ပိုးမှုမရှိပါ။"</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2522,9 +2527,12 @@
       <item quantity="other">ဖျောက်ထားသည့် %d ခုကို ပြပါ</item>
       <item quantity="one">ဖျောက်ထားသည့် %d ခုကို ပြပါ</item>
     </plurals>
-    <string name="network_dashboard_title" msgid="4771589228992391573">"ကွန်ရန်နှင့် အင်တာနက်"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"ကွန်ရက်နှင့် အင်တာနက်"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"ချိတ်ဆက်ထားသော စက်ပစ္စည်းများ"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"အက်ပ်များနှင့် အကြောင်းကြားချက်များ"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"အသုံးပြုသူနှင့် အကောင့်များ"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"အက်ပ်မူရင်းဆက်တင်များ"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"ဘာသာစကား - <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"ဆက်တင်များ"</string>
     <string name="search_menu" msgid="6283419262313758339">"ရှာဖွေမှု ဆက်တင်များ"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"ရှာဖွေမှု ဆက်တင်များ"</string>
@@ -2626,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"အလုပ်၏အသံများကို အစားထိုးမလား။"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"အစားထိုးရန်"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"သင့်လက်ရှိအလုပ်ပရိုဖိုင်ဆိုင်ရာ အသံများကို သင်၏ကိုယ်ရေးကိုယ်တာပရိုဖိုင်ဆိုင်ရာအသံများနှင့် အစားထိုးလိုက်ပါမည်။"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"အကြောင်းကြားချက်များ သတ်မှတ်ခြင်း"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"အကြောင်းကြားချက် ရွေးချယ်မှု"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"အဆင့်မြင့်"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"အလုပ်သတိပေးချက်များ"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"အကြောင်းကြားချက်ပြ မီးဖွင့်ရန်"</string>
@@ -3032,8 +3040,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"အင်္ဂါနေ့ ညနေ ၆:၀၁"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"အင်္ဂါနေ့ ညနေ ၆:၀၂"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"အင်္ဂါနေ့ ညနေ ၆:၀၃"</string>
-    <string name="see_all" msgid="8883901630052886984">"အားလုံးကြည့်ပါ"</string>
-    <string name="see_less" msgid="1250265310929558370">"လျှော့ ကြည့်ရန်"</string>
     <string name="disconnected" msgid="5787956818111197212">"ချိတ်ဆက်မှုပြတ်တောက်သည်"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"ဒေတာ၏ <xliff:g id="AMOUNT">%1$s</xliff:g> ကိုအသုံးပြုထားသည်"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index cc15f65..2df0648 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Koble fra"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versjon <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Glem VPN-profilen"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Vil du erstatte det nåværende VPN-et?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Du er allerede koblet til et VPN. Hvis du kobler til et nytt VPN, erstattes tilkoblingen til det nåværende VPN-et."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Vil du erstatte det nåværende VPN-et?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Vil du angi alltid på-VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Ved å slå på denne innstillingen kommer du ikke til å ha Internett-tilkobling før VPN-tilkoblingen er opprettet."</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Det eksisterende VPN-et ditt blir byttet ut, og du kommer ikke til å ha Internett-tilkobling før VPN-tilkoblingen er opprettet."</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Du er allerede koblet til et alltid på-VPN. Hvis du kobler til et annet, blir det eksisterende VPN-et byttet ut, og alltid på-modus blir slått av."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Du er allerede koblet til et VPN. Hvis du kobler til et nytt VPN, erstattes tilkoblingen til det nåværende VPN-et."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Slå på"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Kan ikke koble til <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Denne appen støtter ikke alltid-på VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2523,8 +2528,11 @@
       <item quantity="one">Vis %d skjult element</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Nettverk og Internett"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Tilkoblede enheter"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apper og varsler"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Bruker og kontoer"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Appstandarder"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Språk: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Innstillinger"</string>
     <string name="search_menu" msgid="6283419262313758339">"Søkeinnstillinger"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Søkeinnstillinger"</string>
@@ -2626,7 +2634,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Bytte lyder for jobbprofilen?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Erstatt"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"De nåværende lydene for jobbprofilen din blir byttet ut med lydene for den personlige profilen din"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Konfigurer varsler"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"Avansert"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Jobbvarsler"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"La varsellampen pulsere"</string>
@@ -3032,8 +3041,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"tirs kl. 18.01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"tirs kl. 18.02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"tirs kl. 18.03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Se alle"</string>
-    <string name="see_less" msgid="1250265310929558370">"Se mindre"</string>
     <string name="disconnected" msgid="5787956818111197212">"Frakoblet"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> av dataen er brukt"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-ne-rNP/strings.xml b/res/values-ne-rNP/strings.xml
index 5f122ec..0fa96ce 100644
--- a/res/values-ne-rNP/strings.xml
+++ b/res/values-ne-rNP/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"विच्छेदन गर्नुहोस्"</string>
     <string name="vpn_version" msgid="1939804054179766249">"संस्करण <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN लाई बिर्सनुहोस्"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"विद्यमान VPN लाई बदल्ने हो?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"तपाईँले पहिले नै एउटा VPN मा जडान गर्नुभएको छ। तपाईँले कुनै नयाँ VPN मा ज‍डान गर्नुभयो भने तपाईँको विद्यमान VPN लाई प्रतिस्थापन गरिनेछ।"</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"विद्यमान VPN लाई बदल्ने हो?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"सधैँ-सक्रिय VPN लाई सेट गर्ने हो?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"यो सेटिङलाई सक्रिय गरेर सफलतापूर्वक VPN जडान नहोउन्जेलसम्म तपाईंसँग इन्टरनेट जडान हुने छैन"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"तपाईंको विद्यमान VPN लाई प्रतिस्थापन गरिने छ र सफलतापूर्वक VPN जडान नहोउन्जेल तपाईंसँग इन्टरनेट जडान हुने छैन"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"तपाईँले पहिले नै एउटा सधैं-सक्रिय VPN मा जडान गर्नुभएको छ। तपाईंले अर्को कुनै VPN मा ज‍डान गर्नुभयो भने तपाईंको विद्यमान VPN लाई प्रतिस्थापन गरिनेछ र सधैं-सक्रिय मोड निष्क्रिय हुने छ।"</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"तपाईँले पहिले नै एउटा VPN मा जडान गर्नुभएको छ। तपाईँले कुनै नयाँ VPN मा ज‍डान गर्नुभयो भने तपाईँको विद्यमान VPN लाई प्रतिस्थापन गरिनेछ।"</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"सक्रिय गर्नुहोस्"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> जडान गर्न सक्दैन"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"यस अनुप्रयोगले सधैँ सक्रिय रहने VPN लाई समर्थन गर्दैन।"</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2522,10 +2527,12 @@
       <item quantity="other">लुकाइएका %d वस्तुहरू देखाउनुहोस्</item>
       <item quantity="one">लुकाइएको %d वस्तु देखाउनुहोस्</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"नेटवर्क र इन्टरनेट"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"जडान गरिएका यन्त्रहरू"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"अनुप्रयोग सम्बन्धी &amp; सूचनाहरू"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"प्रयोगकर्ता रamp; खाता"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"अनुप्रयोगको पूर्वनिर्धारित अवस्था"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"भाषा: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"सेटिङहरू"</string>
     <string name="search_menu" msgid="6283419262313758339">"खोज सेटिङहरू"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"खोज सेटिङहरू"</string>
@@ -2627,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"कार्य प्रोफाइलका ध्वनिहरूलाई प्रतिस्थापन गर्ने हो?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"प्रतिस्थापन गर्नुहोस्"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"तपाईँको हालको कार्य प्रोफाइलका ध्वनिहरूलाई तपाईँको व्यक्तिगत प्रोफाइलका ध्वनिहरूले प्रतिस्थापन गरिनेछ"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"सूचनाहरू कन्फिगर गर्नुहोस्"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"सूचना सम्बन्धी प्राथमिकताहरू"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"उन्‍नत"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"कार्यका सूचनाहरू"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"प्रकाशका सम्बन्धमा पल्स सूचना"</string>
@@ -3033,8 +3040,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"मंगलबार बेलुका ६.०१ बजे"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"मंगलबार बेलुका ६.०२ बजे"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"मंगलबार बेलुका ६.०३ बजे"</string>
-    <string name="see_all" msgid="8883901630052886984">"सबै हेर्नुहोस्"</string>
-    <string name="see_less" msgid="1250265310929558370">"कम हेर्नुहोस्"</string>
     <string name="disconnected" msgid="5787956818111197212">"विच्छेद भयो"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"डेटाको <xliff:g id="AMOUNT">%1$s</xliff:g> प्रयोग गरियो"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index d64ba7e..93db5c2 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Verbinding verbreken"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versie <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN vergeten"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Bestaande VPN vervangen?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Je hebt al verbinding met een VPN. Als je verbinding met een ander VPN maakt, wordt je bestaande VPN vervangen."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Bestaande VPN vervangen?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Always-on VPN instellen?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Als je deze instelling inschakelt, wordt de internetverbinding verbroken totdat het VPN verbinding heeft gemaakt"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Je bestaande VPN wordt vervangen en je hebt pas weer internetverbinding nadat het VPN verbinding heeft gemaakt"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Je hebt al verbinding met een Always-on VPN. Als je verbinding maakt met een ander VPN, wordt je bestaande VPN vervangen en wordt de Always-on-modus uitgeschakeld."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Je hebt al verbinding met een VPN. Als je verbinding met een ander VPN maakt, wordt je bestaande VPN vervangen."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Inschakelen"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> kan geen verbinding maken"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Deze app biedt geen ondersteuning voor Always-on VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2523,8 +2528,11 @@
       <item quantity="one">%d verborgen item weergeven</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Netwerk en internet"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Verbonden apparaten"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apps en meldingen"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Gebruiker en accounts"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Standaard-apps"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Taal: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Instellingen"</string>
     <string name="search_menu" msgid="6283419262313758339">"Zoekinstellingen"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Zoekinstellingen"</string>
@@ -2626,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Geluid werkprofiel vervangen?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Vervangen"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"De huidige geluiden van je werkprofiel worden vervangen door de huidige geluiden van je persoonlijke profiel"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Meldingen configureren"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Meldingsvoorkeuren"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Geavanceerd"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Werkmeldingen"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Meldingslampje knippert"</string>
@@ -3032,8 +3040,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Di. 18:01 uur"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Di. 18:02 uur"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Di. 18:03 uur"</string>
-    <string name="see_all" msgid="8883901630052886984">"Alles weergeven"</string>
-    <string name="see_less" msgid="1250265310929558370">"Minder weergeven"</string>
     <string name="disconnected" msgid="5787956818111197212">"Verbinding verbroken"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> van data gebruikt"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-pa-rIN/strings.xml b/res/values-pa-rIN/strings.xml
index fb69f16..1cc7bc2 100644
--- a/res/values-pa-rIN/strings.xml
+++ b/res/values-pa-rIN/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"ਡਿਸਕਨੈਕਟ ਕਰੋ"</string>
     <string name="vpn_version" msgid="1939804054179766249">"ਸੰਸਕਰਨ <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN ਨੂੰ ਛੱਡੋ"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"ਕੀ ਮੌਜੂਦਾ VPN ਨੂੰ ਤਬਦੀਲ ਕਰਨਾ ਹੈ?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"ਤੁਸੀਂ ਪਹਿਲਾਂ ਤੋਂ ਹੀ ਕਿਸੇ VPN ਨਾਲ ਕਨੈਕਟ ਹੋ। ਜੇਕਰ ਤੁਸੀਂ ਕਿਸੇ ਹੋਰ ਨਾਲ ਕਨੈਕਟ ਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਡੇ ਵਰਤਮਾਨ VPN ਨੂੰ ਤਬਦੀਲ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ।"</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"ਕੀ ਮੌਜੂਦਾ VPN ਨੂੰ ਤਬਦੀਲ ਕਰਨਾ ਹੈ?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"ਕੀ ਹਮੇਸ਼ਾ-ਚਾਲੂ VPN ਨੂੰ ਸੈੱਟ ਕਰਨਾ ਹੈ?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"ਇਸ ਸੈਟਿੰਗ ਨੂੰ ਚਾਲੂ ਕਰਨ ਨਾਲ, ਤੁਹਾਡੇ ਕੋਲ ਇੱਕ ਇੰਟਰਨੈੱਟ ਕਨੈਕਸ਼ਨ ਤਦ ਤੱਕ ਨਹੀਂ ਹੋਵੇਗਾ ਜਦ ਤੱਕ VPN ਸਫ਼ਲਤਾਪੂਰਵਕ ਕਨੈਕਟ ਨਹੀਂ ਹੋ ਜਾਂਦਾ"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"ਤੁਹਾਡੇ ਮੌਜੂਦਾ VPN ਨੂੰ ਤਬਦੀਲ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ, ਅਤੇ ਤੁਹਾਡੇ ਕੋਲ ਤਦ ਤੱਕ ਇੱਕ ਇੰਟਰਨੈੱਟ ਕਨੈਕਸ਼ਨ ਨਹੀਂ ਹੋਵੇਗਾ ਜਦ ਤੱਕ VPN ਸਫ਼ਲਤਾਪੂਰਵਕ ਕਨੈਕਟ ਨਹੀਂ ਹੋ ਜਾਂਦਾ"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"ਤੁਸੀਂ ਪਹਿਲਾਂ ਹੀ ਹਮੇਸ਼ਾ-ਚਾਲੂ VPN ਨਾਲ ਕਨੈਕਟ ਹੋ। ਜੇਕਰ ਤੁਸੀਂ ਕਿਸੇ ਹੋਰ ਨਾਲ ਕਨੈਕਟ ਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਡੇ ਮੌਜੂਦਾ VPN ਨੂੰ ਤਬਦੀਲ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ, ਅਤੇ ਹਮੇਸ਼ਾ-ਚਾਲੂ ਮੋਡ ਬੰਦ ਹੋ ਜਾਵੇਗਾ।"</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"ਤੁਸੀਂ ਪਹਿਲਾਂ ਤੋਂ ਹੀ ਕਿਸੇ VPN ਨਾਲ ਕਨੈਕਟ ਹੋ। ਜੇਕਰ ਤੁਸੀਂ ਕਿਸੇ ਹੋਰ ਨਾਲ ਕਨੈਕਟ ਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਡੇ ਵਰਤਮਾਨ VPN ਨੂੰ ਤਬਦੀਲ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ।"</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"ਚਾਲੂ ਕਰੋ"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> ਨਾਲ ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"ਇਹ ਐਪ ਹਮੇਸ਼ਾਂ-ਚਾਲੂ ਰਹਿਣ ਵਾਲੇ VPN ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦੀ ਹੈ।"</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2522,10 +2527,12 @@
       <item quantity="one">%d ਲੁਕੀਆਂ ਹੋਈਆਂ ਆਈਟਮਾਂ ਵਿਖਾਓ</item>
       <item quantity="other">%d ਲੁਕੀਆਂ ਹੋਈਆਂ ਆਈਟਮਾਂ ਵਿਖਾਓ</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"ਨੈੱਟਵਰਕ ਅਤੇ ਇੰਟਰਨੈੱਟ"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"ਕਨੈਕਟ ਕੀਤੀਆਂ ਡੀਵਾਈਸਾਂ"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"ਐਪਾਂ ਅਤੇ ਸੂਚਨਾਵਾਂ"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"ਵਰਤੋਂਕਾਰ ਅਤੇ ਖਾਤੇ"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"ਐਪ ਪੂਰਵ-ਨਿਰਧਾਰਤ"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"ਭਾਸ਼ਾ: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"ਸੈਟਿੰਗਾਂ"</string>
     <string name="search_menu" msgid="6283419262313758339">"ਖੋਜ ਸੈੱਟਿੰਗਜ਼"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"ਖੋਜ ਸੈਟਿੰਗਾਂ"</string>
@@ -2627,7 +2634,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"ਕੀ ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਧੁਨੀਆਂ ਬਦਲਣੀਆਂ ਹਨ?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"ਬਦਲੋ"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"ਤੁਹਾਡੀਆਂ ਵਰਤਮਾਨ ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਧੁਨੀਆਂ ਤੁਹਾਡੀਆਂ ਨਿੱਜੀ ਪ੍ਰੋਫਾਈਲ ਧੁਨੀਆਂ ਦੇ ਨਾਲ ਬਦਲੀਆਂ ਜਾਣਗੀਆਂ"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"ਸੂਚਨਾਵਾਂ ਦਾ ਸੰਰੂਪਣ ਕਰੋ"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"ਉੱਨਤ"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"ਕੰਮ ਸਬੰਧੀ ਸੂਚਨਾਵਾਂ"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"ਪਲਸ ਸੂਚਨਾ ਲਾਈਟ"</string>
@@ -3033,8 +3041,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"ਮੰਗਲ 6:01PM"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"ਮੰਗਲ 6:02PM"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"ਮੰਗਲ 6:03PM"</string>
-    <string name="see_all" msgid="8883901630052886984">"ਸਭ ਵੇਖੋ"</string>
-    <string name="see_less" msgid="1250265310929558370">"ਘੱਟ ਵੇਖੋ"</string>
     <string name="disconnected" msgid="5787956818111197212">"ਡਿਸਕਨੈਕਟ ਹੋਇਆ"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> ਡੈਟਾ ਵਰਤਿਆ ਗਿਆ"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index d2df975..8df1f3d 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -2314,8 +2314,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Odłącz"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Wersja <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Zapomnij VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Zastąpić obecną sieć VPN?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Masz już połączenie z siecią VPN. Jeśli połączysz się z inną, obecna zostanie zastąpiona."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Zastąpić obecną sieć VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Ustawić stały VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Po włączeniu tego ustawienia utracisz połączenie internetowe do czasu nawiązania połączenia przez VPN"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Dotychczasowe połączenie VPN zostanie zastąpione i nie będziesz mieć połączenia internetowego do czasu połączenia z VPN"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Masz już połączenie ze stałą siecią VPN. Jeśli połączysz się z inną, obecna zostanie zastąpiona, a tryb stały zostanie wyłączony."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Masz już połączenie z siecią VPN. Jeśli połączysz się z inną, obecna zostanie zastąpiona."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Włącz"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Nie można połączyć z siecią <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Ta aplikacja nie obsługuje łączenia tylko przez sieć VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2567,8 +2572,11 @@
       <item quantity="one">Pokaż %d ukryty element</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Sieć i internet"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Połączone urządzenia"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplikacje i powiadomienia"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Użytkownik i konta"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Domyślne aplikacje"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Język: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Ustawienia"</string>
     <string name="search_menu" msgid="6283419262313758339">"Ustawienia wyszukiwania"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Ustawienia wyszukiwania"</string>
@@ -2670,7 +2678,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Zastąpić dźwięki w profilu do pracy?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Zastąp"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Dźwięki w Twoim profilu do pracy zostaną zastąpione dźwiękami z Twojego profilu osobistego."</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Skonfiguruj powiadomienia"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"Zaawansowane"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Powiadomienia związane z pracą"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Pulsująca dioda"</string>
@@ -3092,8 +3101,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Wt. 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Wt. 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Wt. 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Pokaż wszystko"</string>
-    <string name="see_less" msgid="1250265310929558370">"Pokaż mniej"</string>
     <string name="disconnected" msgid="5787956818111197212">"Rozłączono"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Użycie danych: <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml
index 0cb1232..072e344 100644
--- a/res/values-pt-rBR/strings.xml
+++ b/res/values-pt-rBR/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Desconectar"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versão <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Esquecer VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Substituir VPN já existente?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Você já está conectado a uma VPN. Caso se conecte a uma diferente, a VPN já existente será substituída."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Substituir VPN já existente?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Configurar VPN sempre ativa?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Se você ativar esta configuração, sua conexão com a Internet não estará disponível até que a VPN se conecte"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Sua VPN já existente será substituída, e você não terá uma conexão com a Internet até que a VPN se conecte"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Você já está conectado a uma VPN sempre ativa. Caso se conecte a uma diferente, a VPN já existente será substituída, e o modo sempre ativo será desativado."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Você já está conectado a uma VPN. Caso se conecte a uma diferente, a VPN já existente será substituída."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Ativar"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Não é possível conectar-se a <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Este app não é compatível com VPN sempre ativa."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2522,10 +2527,12 @@
       <item quantity="one">Mostrar %d item oculto</item>
       <item quantity="other">Mostrar %d itens ocultos</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Rede e Internet"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Dispositivos conectados"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apps e notificações"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Usuário e contas"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Padrões de apps"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Idioma: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Configurações"</string>
     <string name="search_menu" msgid="6283419262313758339">"Configurações de pesquisa"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Configurações de pesquisa"</string>
@@ -2627,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Substituir sons do perfil de trabalho?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Substituir"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Os sons atuais do seu perfil de trabalho serão substituídos pelos sons do seu perfil pessoal"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Configurar notificações"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Preferências de notificação"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Avançadas"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Notificações de trabalho"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Pulsar luz de notificação"</string>
@@ -3033,8 +3040,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Ter 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Ter 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Ter 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Ver tudo"</string>
-    <string name="see_less" msgid="1250265310929558370">"Ver menos"</string>
     <string name="disconnected" msgid="5787956818111197212">"Desconectado"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> de dados usados"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index c5826b4..2000835 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Desligar"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versão <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Esquecer VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Pretende substituir a VPN existente?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Já está ligado a uma VPN. Se ligar a outra, a VPN existente será substituída."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Pretende substituir a VPN existente?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Pretende definir a VPN como sempre ativa?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Ao ativar esta definição, não terá uma ligação à Internet até a VPN estabelecer ligação com êxito"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"A sua VPN existente será substituída e não terá uma ligação à Internet até a VPN estabelecer ligação com êxito"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Já está ligado a uma VPN sempre ativa. Se ligar a outra, a VPN existente será substituída e o modo sempre ativo será desativado."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Já está ligado a uma VPN. Se ligar a outra, a VPN existente será substituída."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Ativar"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Não é possível ligar <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Esta aplicação não é compatível com uma VPN sempre ativada."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2523,8 +2528,11 @@
       <item quantity="one">Mostrar %d item oculto</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Rede e Internet"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Dispositivos ligados"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplicações e notificações"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Utilizador e contas"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Predefinições da aplicação"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Idioma: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Definições"</string>
     <string name="search_menu" msgid="6283419262313758339">"Definições de pesquisa"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Definições de pesquisa"</string>
@@ -2626,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Subst. sons perfil de trab.?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Substituir"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Os sons atuais do seu perfil de trabalho serão substituídos pelos sons do seu perfil pessoal"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Configurar notificações"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Preferências de notificação"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Avançadas"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Notificações de trabalho"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Usar luz de notificações"</string>
@@ -3032,8 +3040,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Terça-feira às 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Terça-feira às 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Terça-feira às 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Ver tudo"</string>
-    <string name="see_less" msgid="1250265310929558370">"Ver menos"</string>
     <string name="disconnected" msgid="5787956818111197212">"Desligado"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> dos dados utilizados"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 0cb1232..072e344 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Desconectar"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versão <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Esquecer VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Substituir VPN já existente?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Você já está conectado a uma VPN. Caso se conecte a uma diferente, a VPN já existente será substituída."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Substituir VPN já existente?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Configurar VPN sempre ativa?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Se você ativar esta configuração, sua conexão com a Internet não estará disponível até que a VPN se conecte"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Sua VPN já existente será substituída, e você não terá uma conexão com a Internet até que a VPN se conecte"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Você já está conectado a uma VPN sempre ativa. Caso se conecte a uma diferente, a VPN já existente será substituída, e o modo sempre ativo será desativado."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Você já está conectado a uma VPN. Caso se conecte a uma diferente, a VPN já existente será substituída."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Ativar"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Não é possível conectar-se a <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Este app não é compatível com VPN sempre ativa."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2522,10 +2527,12 @@
       <item quantity="one">Mostrar %d item oculto</item>
       <item quantity="other">Mostrar %d itens ocultos</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Rede e Internet"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Dispositivos conectados"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apps e notificações"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Usuário e contas"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Padrões de apps"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Idioma: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Configurações"</string>
     <string name="search_menu" msgid="6283419262313758339">"Configurações de pesquisa"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Configurações de pesquisa"</string>
@@ -2627,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Substituir sons do perfil de trabalho?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Substituir"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Os sons atuais do seu perfil de trabalho serão substituídos pelos sons do seu perfil pessoal"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Configurar notificações"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Preferências de notificação"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Avançadas"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Notificações de trabalho"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Pulsar luz de notificação"</string>
@@ -3033,8 +3040,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Ter 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Ter 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Ter 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Ver tudo"</string>
-    <string name="see_less" msgid="1250265310929558370">"Ver menos"</string>
     <string name="disconnected" msgid="5787956818111197212">"Desconectado"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> de dados usados"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 0e0e3e8..e985ebe 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -2297,8 +2297,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Deconectați-vă"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versiunea <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Eliminați profilul VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Înlocuiți rețeaua VPN existentă?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"V-ați conectat deja la o rețea VPN. Dacă vă conectați la altă rețea, rețeaua VPN existentă va fi înlocuită."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Înlocuiți rețeaua VPN existentă?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Setați rețeaua VPN ca activată permanent?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Dacă activați această setare, nu veți avea conexiune la internet până când nu se conectează rețeaua VPN."</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Rețeaua VPN existentă va fi înlocuită și nu veți avea conexiune la internet până când nu se conectează rețeaua VPN."</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"V-ați conectat deja la o rețea VPN activată permanent. Dacă vă conectați la altă rețea, rețeaua VPN existentă va fi înlocuită și modul activat permanent va fi dezactivat."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"V-ați conectat deja la o rețea VPN. Dacă vă conectați la altă rețea, rețeaua VPN existentă va fi înlocuită."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Activați"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Nu vă puteți conecta la <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Această aplicație nu acceptă rețele VPN activate permanent."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2545,8 +2550,11 @@
       <item quantity="one">Afișați %d element ascuns</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Rețea și internet"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Dispozitive conectate"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplicații și notificări"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Utilizator și conturi"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Setări prestabilite ale aplicației"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Limba: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Setări"</string>
     <string name="search_menu" msgid="6283419262313758339">"Setări de căutare"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Setări pentru căutare"</string>
@@ -2648,7 +2656,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Înlocuiți sunetele profilului de serviciu?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Înlocuiți"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Sunetele actuale ale profilului de serviciu vor fi înlocuite cu cele ale profilului personal"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Configurați notificările"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Preferințe privind notificările"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Avansate"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Notificări profil de serviciu"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Indicator luminos intermitent"</string>
@@ -2693,7 +2701,7 @@
     <string name="no_vr_listeners" msgid="2689382881717507390">"Nicio aplicație instalată nu a solicitat să fie rulată ca un serviciu de ajutor pentru Realitatea virtuală."</string>
     <string name="vr_listener_security_warning_title" msgid="8309673749124927122">"Permiteți accesul la serviciul de Realitate virtuală pentru <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
     <string name="vr_listener_security_warning_summary" msgid="6931541068825094653">"<xliff:g id="VR_LISTENER_NAME">%1$s</xliff:g> va putea rula când folosiți aplicațiile în modul de realitate virtuală."</string>
-    <string name="display_vr_pref_title" msgid="8104485269504335481">"Când dispozitivul este în modul VR"</string>
+    <string name="display_vr_pref_title" msgid="8104485269504335481">"Când dispozitivul este în modul RV"</string>
     <string name="display_vr_pref_low_persistence" msgid="5707494209944718537">"Reduceți estomparea (recomandat)"</string>
     <string name="display_vr_pref_off" msgid="2190091757123260989">"Reduceți pâlpâirea"</string>
     <string name="manage_zen_access_title" msgid="2611116122628520522">"Accesul Nu deranja"</string>
@@ -3062,8 +3070,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Marți, la 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Marți, la 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Marți, la 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Afișați-le pe toate"</string>
-    <string name="see_less" msgid="1250265310929558370">"Afișați mai puține"</string>
     <string name="disconnected" msgid="5787956818111197212">"Deconectată"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Date folosite: <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-ru/arrays.xml b/res/values-ru/arrays.xml
index e669210..1d9273c 100644
--- a/res/values-ru/arrays.xml
+++ b/res/values-ru/arrays.xml
@@ -475,6 +475,6 @@
   <string-array name="automatic_storage_management_days">
     <item msgid="687318592238852312">"Добавленные более 30 дней назад"</item>
     <item msgid="2900554746706302178">"Добавленные более 60 дней назад"</item>
-    <item msgid="5692284879054004388">"Добавленные более 60 дней назад"</item>
+    <item msgid="5692284879054004388">"Добавленные более 90 дней назад"</item>
   </string-array>
 </resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 4db3539..957b13d 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -959,7 +959,7 @@
     <string name="night_display_category_schedule" msgid="2044072617637348966">"Расписание"</string>
     <string name="night_display_category_status" msgid="1952928783124400330">"Статус"</string>
     <string name="night_display_auto_mode_title" msgid="8046314360381608455">"Включать автоматически"</string>
-    <string name="night_display_auto_mode_never" msgid="6723636142053240947">"Всегда выключать"</string>
+    <string name="night_display_auto_mode_never" msgid="6723636142053240947">"Никогда"</string>
     <string name="night_display_auto_mode_custom" msgid="6012300346981608242">"Мое расписание"</string>
     <string name="night_display_auto_mode_twilight" msgid="2123345097508167094">"От заката до рассвета"</string>
     <string name="night_display_start_time_title" msgid="8918016772613689584">"Время включения"</string>
@@ -2314,8 +2314,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Да"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Версия <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Удалить VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Сменить существующую сеть VPN?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Вы уже подключены. Если вы подключитесь к другой сети, текущая VPN-сеть будет заменена."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Сменить текущую VPN-сеть?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Настроить постоянную VPN-сеть?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Если включить эту настройку, доступ к Интернету появится только после подключения к VPN."</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Вы замените текущую VPN-сеть, а доступ к Интернету появится только после подключения к новой сети."</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Вы уже подключены к постоянной VPN-сети. Если выбрать другую сеть, режим постоянного подключения будет сброшен."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Вы уже подключены. Если вы подключитесь к другой VPN-сети, то замените текущую."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Включить"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Не удалось подключиться к сети \"<xliff:g id="VPN_NAME">%1$s</xliff:g>\""</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Это приложение не поддерживает постоянное подключение к VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"Настройки VPN"</string>
@@ -2566,10 +2571,14 @@
       <item quantity="many">Показать %d скрытых объектов</item>
       <item quantity="other">Показать %d скрытых объекта</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Сеть и Интернет"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Подключенные устройства"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Приложения и уведомления"</string>
+    <!-- no translation found for account_dashboard_title (38701889336378742) -->
     <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <!-- no translation found for app_default_dashboard_title (8176215295082796426) -->
     <skip />
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Язык: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Настройки"</string>
     <string name="search_menu" msgid="6283419262313758339">"Поиск настроек"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Поиск настроек"</string>
@@ -2671,7 +2680,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Изменить настройки?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Да"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Сигналы в рабочем профиле будут заменены звуками, выбранными в личном."</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Настройка уведомлений"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"Расширенные настройки"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Рабочие уведомления"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Световой индикатор"</string>
@@ -3093,8 +3103,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Вт, 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Вт, 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Вт, 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Показать все"</string>
-    <string name="see_less" msgid="1250265310929558370">"Скрыть"</string>
     <string name="disconnected" msgid="5787956818111197212">"Нет подключения"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Использовано трафика: <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml
index 3e6def6..6817259 100644
--- a/res/values-si-rLK/strings.xml
+++ b/res/values-si-rLK/strings.xml
@@ -2282,8 +2282,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"විසන්ධි කරන්න"</string>
     <string name="vpn_version" msgid="1939804054179766249">"අනුවාදය <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN අමතක කරන්න"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"පවතින VPN ප්‍රතිස්ථාපනය කරන්නද?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"ඔබට දැනටමත් VPN එකකට සම්බන්ධය. ඔබ වෙනත් එකකට සබැඳුණහොත්, ඔබේ පවතින VPN ප්‍රතිස්ථාපනය වනු ඇත."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"පවතින VPN ප්‍රතිස්ථාපනය කරන්නද?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"සැම විට ක්‍රියාත්මක VPN සකසන්නද?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"මෙම සැකසීම ක්‍රියාත්මක කිරීමෙන්, ඔබට VPN සාර්ථකව සම්බන්ධ වන තෙක් අන්තර්ජාල සබැඳුමක් නොතිබෙනු ඇත"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"ඔබේ පවතින VPN ප්‍රතිස්ථාපනය වනු ඇති අතර, ඔබට VPN සාර්ථකව සම්බන්ධ වන තෙක් අන්තර්ජාල සබැඳුමක් නොතිබෙනු ඇත"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"ඔබට දැනටමත් සැම විට ක්‍රියාත්මක VPN එකකට සම්බන්ධය. ඔබ වෙනත් එකකට සම්බන්ධ වුවහොත්, ඔබේ පවතින VPN ප්‍රතිස්ථාපනය වනු ඇති අතර, සැම විට ක්‍රියාත්මක ප්‍රකාරය ක්‍රියාවිරහිත වනු ඇත."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"ඔබට දැනටමත් VPN එකකට සම්බන්ධය. ඔබ වෙනත් එකකට සබැඳුණහොත්, ඔබේ පවතින VPN ප්‍රතිස්ථාපනය වනු ඇත."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"ක්‍රියාත්මක කරන්න"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> හට සම්බන්ධ විය නොහැකිය"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"මෙම යෙදුම සැම විට ක්‍රියාත්මක VPN සඳහා සහාය නොදක්වයි."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2525,8 +2530,11 @@
       <item quantity="other">සඟවන ලද අයිතම %dක් පෙන්වන්න</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"ජාලය සහ අන්තර්ජාලය"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"සම්බන්ධ කළ උපාංග"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"යෙදුම් සහ දැනුම්දීම්"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"පරිශීලක සහ ගිණුම්"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"යෙදුම් පෙරනිමි"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"භාෂාව: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"සැකසීම්"</string>
     <string name="search_menu" msgid="6283419262313758339">"සැකසීම් සොයන්න"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"සැකසීම් සොයන්න"</string>
@@ -2628,7 +2636,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"කා. පැතිකඩ හඩ ප්‍රතිස්ථා. කර.?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"ප්‍රතිස්ථාපනය කරන්න"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"ඔබේ වත්මන් කාර්යාල පැතිකඩ හඬවල් ඔබේ පුද්ගලික පැතිකඩ හඬවල්වලින් ප්‍රතිස්ථාපනය වනු ඇත"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"දැනුම්දීම් වින්‍යාස කිරීම"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"උසස්"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"වැඩ දැනුම්දීම්"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"ස්පන්ද දැනුම්දීම් එළිය"</string>
@@ -3034,8 +3043,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"අඟ ප.ව. 6:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"අඟ ප.ව. 6:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"අඟ ප.ව. 6:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"සියල්ල බලන්න"</string>
-    <string name="see_less" msgid="1250265310929558370">"අඩුවෙන් බලන්න"</string>
     <string name="disconnected" msgid="5787956818111197212">"විසන්ධි වුණි"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"දත්තවලින් <xliff:g id="AMOUNT">%1$s</xliff:g>ක් ස්ථාපනය කරන ලදී"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 3ee888f..eb09dae 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -2314,8 +2314,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Odpojiť"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Verzia <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Zabudnúť profil VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Nahradiť existujúce VPN?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"K sieti VPN ste sa už pripojili. Ak sa pripojíte k inej sieti, vaša súčasná sieť VPN bude nahradená."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Nahradiť existujúcu sieť VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Nastaviť sieť VPN, ktorá je vždy zapnutá?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Ak zapnete toto nastavenie, nebudete mať internetové pripojenie, dokým nedôjde k úspešnému nadviazaniu pripojenia VPN"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Vaša súčasná sieť VPN bude nahradená a nebudete mať internetové pripojenie, dokým nedôjde k úspešnému nadviazaniu pripojenia VPN"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"K sieti VPN, ktorá je vždy zapnutá, ste sa už pripojili. Ak sa pripojíte k inej sieti, vaša súčasná sieť VPN bude nahradená a vypne sa režim vždy zapnutej siete."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"K sieti VPN ste sa už pripojili. Ak sa pripojíte k inej sieti, vaša súčasná sieť VPN bude nahradená."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Zapnúť"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> nie je možné pripojiť"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Táto aplikácia nepodporuje siete VPN, ktoré sú vždy zapnuté."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2566,10 +2571,12 @@
       <item quantity="other">Zobraziť %d skrytých položiek</item>
       <item quantity="one">Zobraziť %d skrytú položku</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Sieť a internet"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Pripojené zariadenia"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplikácie a upozornenia"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Používateľ a účty"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Predvolené aplikácie"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Jazyk: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Nastavenia"</string>
     <string name="search_menu" msgid="6283419262313758339">"Nastavenia vyhľadávania"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Nastavenia vyhľadávania"</string>
@@ -2671,7 +2678,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Nahradiť zvuky prac. profilu?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Nahradiť"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Vaše súčasné zvuky pracovného profilu budú nahradené zvukmi osobného profilu"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Konfigurácia upozornení"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Predvoľby upozornení"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Rozšírené"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Pracovné upozornenia"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Blikať kontrolkou upozornenia"</string>
@@ -3093,8 +3100,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Ut 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Ut 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Ut 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Zobraziť všetko"</string>
-    <string name="see_less" msgid="1250265310929558370">"Zobraziť menej"</string>
     <string name="disconnected" msgid="5787956818111197212">"Odpojené"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Objem využitých dát: <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 43fddc8..74a7027 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -2314,8 +2314,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Prekini povezavo"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Različica <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Pozabi omrežje VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Želite zamenjati obstoječe omrežje VPN?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Z omrežjem VPN ste že povezani. Če se povežete z drugim, bo obstoječe omrežje VPN zamenjano."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Želite zamenjati obstoječe omrežje VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Ali želite, da je omrežje VPN stalno vklopljeno?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Če vklopite to nastavitev, ne boste imeli internetne povezave, dokler se ne vzpostavi povezava z omrežjem VPN."</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Vaše obstoječe omrežje VPN bo zamenjano in ne boste imeli internetne povezave, dokler se ne vzpostavi povezava z omrežjem VPN."</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"S stalno vklopljenim omrežjem VPN ste že povezani. Če se povežete z drugim, bo obstoječe omrežje VPN zamenjano in stalno vklopljeni način se bo izklopil."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Z omrežjem VPN ste že povezani. Če se povežete z drugim, bo obstoječe omrežje VPN zamenjano."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Vklopi"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Z omrežjem VPN <xliff:g id="VPN_NAME">%1$s</xliff:g> ni mogoče vzpostaviti povezave."</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Ta aplikacija ne podpira stalno vklopljenih omrežij VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2566,10 +2571,12 @@
       <item quantity="few">Pokaži %d skrite elemente</item>
       <item quantity="other">Pokaži %d skritih elementov</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Omrežje in internet"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Povezane naprave"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplikacije in obvestila"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Uporabnik in računi"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Privzete aplikacije"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Jezik: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Nastavitve"</string>
     <string name="search_menu" msgid="6283419262313758339">"Nastavitve iskanja"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Nastavitve iskanja"</string>
@@ -2671,7 +2678,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Zamenj. zvokov v del. profilu?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Zamenjaj"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Trenutne zvoke v delovnem profilu bodo nadomestili zvoki iz osebnega profila"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Konfiguriranje obvestil"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"Dodatno"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Obvestila za delovni profil"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Lučka za obvestila z utripanjem"</string>
@@ -3093,8 +3101,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Tor., 18.01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Tor., 18.02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Tor., 18.03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Pokaži vse"</string>
-    <string name="see_less" msgid="1250265310929558370">"Pokaži manj"</string>
     <string name="disconnected" msgid="5787956818111197212">"Povezava prekinjena"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Prenesenih podatkov: <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-sq-rAL/strings.xml b/res/values-sq-rAL/strings.xml
index bfb0248..b6538c1 100644
--- a/res/values-sq-rAL/strings.xml
+++ b/res/values-sq-rAL/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Shkëpute"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Versioni <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Harroje rrjetin VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Të zëvendësohet rrjeti ekzistues VPN?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Je tashmë i lidhur me një rrjet VPN. Nëse je lidhur me një tjetër, rrjeti yt ekzistues VPN do të zëvendësohet."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Të zëvendësohet rrjeti ekzistues VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Të caktohet rrjeti VPN gjithmonë aktiv?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Duke aktivizuar këtë cilësim, nuk do të kesh një lidhje interneti deri sa rrjeti VPN të lidhet me sukses"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Rrjeti yt ekzistues VPN do të zëvendësohet dhe nuk do të kesh një lidhje interneti deri sa rrjeti VPN të lidhet me sukses"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Je tashmë i lidhur me një rrjet VPN gjithmonë aktiv. Nëse je lidhur me një tjetër, rrjeti yt ekzistues VPN do të zëvendësohet dhe modaliteti gjithmonë aktiv do të çaktivizohet."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Je tashmë i lidhur me një rrjet VPN. Nëse je lidhur me një tjetër, rrjeti yt ekzistues VPN do të zëvendësohet."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Aktivizo"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> nuk mund të lidhet"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Ky aplikacion nuk mbështet VPN-në që është gjithmonë aktive."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2522,10 +2527,12 @@
       <item quantity="other">Shfaq %d artikuj të fshehur</item>
       <item quantity="one">Shfaq %d artikull të fshehur</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Rrjeti dhe interneti"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Pajisje të lidhura"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplikacionet dhe njoftimet"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Përdoruesi dhe llogaritë"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Parazgjedhjet e aplikacionit"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Gjuha: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Cilësimet"</string>
     <string name="search_menu" msgid="6283419262313758339">"Cilësimet e kërkimit"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Cilësimet e kërkimit"</string>
@@ -2627,7 +2634,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Të zëvendësohen tingujt e profilit të punës?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Zëvendëso"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Tingujt aktualë të profilit tënd të punës do të zëvendësohen me tingujt e profilit tënd personal"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Konfiguro njoftimet"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"Të përparuara"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Njoftimet e punës"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Pulso dritën e njoftimeve"</string>
@@ -3033,8 +3041,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"E martë 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"E martë 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"E martë 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Shikoji të gjitha"</string>
-    <string name="see_less" msgid="1250265310929558370">"Shiko më pak"</string>
     <string name="disconnected" msgid="5787956818111197212">"E shkëputur"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> nga të dhënat janë përdorur"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 6719d16..bd31527 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -2297,8 +2297,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Прекини везу"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Верзија <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Заборави VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Желите ли да замените постојећи VPN?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Већ сте повезани са VPN-ом. Када бисте се повезали са неким другим VPN-ом, постојећи VPN би био замењен."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Желите ли да замените постојећи VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Желите ли да подесите увек укључени VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Ако укључите ово подешавање, нећете имати интернет везу док се VPN не повеже"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Постојећи VPN ће бити замењен и нећете имати интернет везу док се VPN не повеже"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Већ сте повезани са увек укљученим VPN-ом. Ако се повежете са неким другим, постојећи VPN ће бити замењен, а режим Увек укључен ће бити искључен."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Већ сте повезани са VPN-ом. Ако се повежете са неким другим, постојећи VPN ће бити замењен."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Укључи"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Повезивање са VPN-ом <xliff:g id="VPN_NAME">%1$s</xliff:g> није успело"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Ова апликација не подржава стално укључени VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2545,8 +2550,11 @@
       <item quantity="other">Прикажи %d скривених ставки</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Мрежа и интернет"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Повезани уређаји"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aпликације и обавештења"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Корисник и налози"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Подразумеване апликације"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Језик: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Подешавања"</string>
     <string name="search_menu" msgid="6283419262313758339">"Претражите подешавања"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Подешавања претраге"</string>
@@ -2648,7 +2656,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Заменити звуке профилa за Work?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Замени"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Актуелни звуци профилa за Work ће бити замењени звуцима са личног профила"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Конфигуришите обавештења"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Подешавања обавештења"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Напредна"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Обавештења за Work"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Пулсирајуће обавештење"</string>
@@ -3062,8 +3070,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Уто 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Уто 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Уто 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Прикажи све"</string>
-    <string name="see_less" msgid="1250265310929558370">"Прикажи мање"</string>
     <string name="disconnected" msgid="5787956818111197212">"Веза је прекинута"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Користи се <xliff:g id="AMOUNT">%1$s</xliff:g> података"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index ba7a09f..944ecc7 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Koppla från"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Version <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Glöm VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Vill du byta ut befintligt VPN?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Du är redan ansluten till ett VPN. Om du ansluter till ett annat ersätts ditt befintliga VPN."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Vill du byta ut befintligt VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Vill du ange Always-on VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Om du inaktiverar den här inställningen har du ingen internetanslutning förrän VPN är anslutet"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Ditt befintliga VPN ersätts, och du har ingen internetanslutning förrän VPN är anslutet."</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Du är redan ansluten till ett Always-on VPN. Om du ansluter till ett annat ersätts ditt befintliga VPN, och Always-on-läge inaktiveras."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Du är redan ansluten till ett VPN. Om du ansluter till ett annat ersätts ditt befintliga VPN."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Aktivera"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> kan inte ansluta"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Appen stöder inte Always-on VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2522,10 +2527,12 @@
       <item quantity="other">Visa %d dolda objekt</item>
       <item quantity="one">Visa %d dolt objekt</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Nätverk och internet"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Anslutna enheter"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Appar och aviseringar"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Användare och konton"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Standardappar"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Språk: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Inställningar"</string>
     <string name="search_menu" msgid="6283419262313758339">"Sökinställningar"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Sökinställningar"</string>
@@ -2627,7 +2634,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Ersätta jobbprofilljuden?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Ersätt"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"De nuvarande ljuden i jobbprofilen ersätts med dem i den personliga profilen."</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Konfigurera aviseringar"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"Avancerat"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Jobbaviseringar"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Blinkande ljusavisering"</string>
@@ -3033,8 +3041,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Tis. 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Tis. 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Tis. 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Visa alla"</string>
-    <string name="see_less" msgid="1250265310929558370">"Visa färre"</string>
     <string name="disconnected" msgid="5787956818111197212">"Frånkopplad"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> data används"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 49c1192..ed78c8d 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -2286,8 +2286,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Kata muungnisho"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Toleo la <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Ondoa VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Ungependa kubadilisha VPN iliyopo?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Tayari umeunganishwa kwenye VPN. Ikiwa utaunganisha kwenye programu tofauti, programu hiyo itaondoa VPN iliyopo."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Ungependa kubadilisha VPN iliyopo?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Ungependa kuweka VPN iliyowashwa kila mara?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Kwa kuwasha mIpangilio hii, hutapata muunganisho wa Intaneti hadi VPN itakapounganishwa"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Programu itaondoa VPN iliyopo, na hutaweza kuwa na muunganisho wa Intaneti hadi  VPN itakapounganishwa"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Tayari umeunganisha kwenye VPN ambayo imewashwa kila mara. Ikiwa utaunganisha kwenye programu tofauti, programu hiyo itaondoa VPN iliyopo na kuzima hali ya imewashwa kila mara."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Tayari umeunganisha kwenye VPN. Ikiwa utaunganisha kwenye programu tofauti, programu hiyo itaondoa VPN iliyopo."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Washa"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Haiwezi kuunganisha <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Programu hii haitumii VPN iliyo katika hali ya kuwaka kila mara."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2529,8 +2534,11 @@
       <item quantity="one">Onyesha kipengee %d kilichofichwa</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Mtandao na Intaneti"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Vifaa vilivyounganishwa"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Programu na arifa"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Watumiaji na akaunti"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Chaguo-msingi za programu"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Lugha: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Mipangilio"</string>
     <string name="search_menu" msgid="6283419262313758339">"Mipangilio ya utafutaji"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Mipangilio ya utafutaji"</string>
@@ -2632,7 +2640,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Ungependa kubadilisha sauti za wasifu wako wa kazini?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Badilisha"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Sauti za wasifu wako wa sasa wa kazini zitabadilishwa na nafasi zao kuchuliwa na sauti za wasifu wako binafsi"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Arifa za kuweka mipangilio"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"Mipangilio ya kina"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Arifa za kazini"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Arifu ya mwangaza wa palsi"</string>
@@ -3038,8 +3047,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Jumanne saa 12:01 jioni"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Jumanne saa 12:02 jioni"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Jumanne saa 12:03 jioni"</string>
-    <string name="see_all" msgid="8883901630052886984">"Angalia zote"</string>
-    <string name="see_less" msgid="1250265310929558370">"Angalia chache"</string>
     <string name="disconnected" msgid="5787956818111197212">"Imeondolewa"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> ya data imetumika"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-sw400dp/dimens.xml b/res/values-sw400dp/dimens.xml
index 9c82d90..7ae4061 100755
--- a/res/values-sw400dp/dimens.xml
+++ b/res/values-sw400dp/dimens.xml
@@ -16,13 +16,10 @@
   -->
 
 <resources>
-    <dimen name="fingerprint_ring_radius">106dp</dimen>
-    <dimen name="fingerprint_animation_size">100dp</dimen>
-    <dimen name="fingerprint_progress_bar_size">220dp</dimen>
     <dimen name="fingerprint_enrolling_content_margin_top">56dp</dimen>
     <dimen name="fingerprint_in_app_indicator_size">176dp</dimen>
     <dimen name="fingerprint_find_sensor_graphic_size">240dp</dimen>
 
-    <dimen name="setup_fingerprint_ring_radius">92dp</dimen>
-    <dimen name="setup_fingerprint_progress_bar_size">192dp</dimen>
+    <dimen name="support_escalation_card_padding_start">56dp</dimen>
+    <dimen name="support_escalation_card_padding_end">56dp</dimen>
 </resources>
diff --git a/res/values-ta-rIN/strings.xml b/res/values-ta-rIN/strings.xml
index 2ce5f8e..bc20756 100644
--- a/res/values-ta-rIN/strings.xml
+++ b/res/values-ta-rIN/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"தொடர்பைத் துண்டி"</string>
     <string name="vpn_version" msgid="1939804054179766249">"பதிப்பு <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPNஐ நீக்கு"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"தற்போதுள்ள VPNஐ மாற்றியமைக்கவா?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"நீங்கள் ஏற்கனவே ஒரு VPN உடன் இணைத்துள்ளீர்கள். வேறொன்றுடன் இணைத்தால், அது தற்போதுள்ள VPNக்குப் பதிலாக மாற்றியமைக்கப்படும்."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"தற்போதுள்ள VPNஐ மாற்றியமைக்கவா?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"எப்போதும் இயங்கும் VPNஐ அமைக்கவா?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"இந்த அமைப்பை இயக்கினால், VPN இணைக்கப்படும் வரை இணைய இணைப்பு கிடைக்காது"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"தற்போதுள்ள VPN மாற்றியமைக்கப்படும், மேலும் VPN இணைக்கப்படும் வரை இணைய இணைப்பு கிடைக்காது"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"எப்போதும் இயங்கும் VPN உடன் ஏற்கனவே இணைத்துள்ளீர்கள். வேறொன்றுடன் இணைத்தால், அது தற்போதுள்ள VPNக்குப் பதிலாக மாற்றியமைக்கப்படும், மேலும் எப்போதும் இயங்கும் பயன்முறை முடக்கப்படும்."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"ஏற்கனவே ஒரு VPN உடன் இணைத்துள்ளீர்கள். வேறொன்றுடன் இணைத்தால், அது தற்போதுள்ள VPNக்குப் பதிலாக மாற்றியமைக்கப்படும்."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"இயக்கு"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g>ஐ இணைக்க முடியாது"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"இந்தப் பயன்பாடு எப்போதும் இயங்கும் VPNஐ ஆதரிக்கவில்லை."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2522,10 +2527,12 @@
       <item quantity="other">மறைந்துள்ள %d உருப்படிகளைக் காட்டு</item>
       <item quantity="one">மறைந்துள்ள %d உருப்படியைக் காட்டு</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"நெட்வொர்க் &amp; இணையம்"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"இணைத்த சாதனங்கள்"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"பயன்பாடுகள் &amp; அறிவிப்புகள்"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"பயனர் &amp; கணக்குகள்"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"பயன்பாட்டின் இயல்புகள்"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"மொழி: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"அமைப்பு"</string>
     <string name="search_menu" msgid="6283419262313758339">"தேடல் அமைப்புகள்"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"தேடல் அமைப்பு"</string>
@@ -2627,7 +2634,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"பணி விவர ஒலிகளை மாற்றவா?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"மாற்று"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"உங்கள் பணி விவர ஒலிகளானது தனிப்பட்ட சுயவிவர ஒலிகளாக மாற்றப்படும்"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"அறிவிப்புகளை உள்ளமை"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"மேம்பட்டவை"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"பணி அறிவிப்புகள்"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"தொடர் அறிவிப்பு விளக்கு"</string>
@@ -3033,8 +3041,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"செவ் 6:01PM"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"செவ் 6:02PM"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"செவ் 6:03PM"</string>
-    <string name="see_all" msgid="8883901630052886984">"எல்லாம் காட்டு"</string>
-    <string name="see_less" msgid="1250265310929558370">"குறைவாகக் காட்டு"</string>
     <string name="disconnected" msgid="5787956818111197212">"துண்டிக்கப்பட்டது"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> தரவு பயன்படுத்தப்பட்டுள்ளது"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-te-rIN/strings.xml b/res/values-te-rIN/strings.xml
index b3a66c2..67449fe 100644
--- a/res/values-te-rIN/strings.xml
+++ b/res/values-te-rIN/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"డిస్‌కనెక్ట్ చేయి"</string>
     <string name="vpn_version" msgid="1939804054179766249">"సంస్కరణ <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPNని విస్మరించు"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"ఇప్పటికే ఉన్న VPNని భర్తీ చేయాలా?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"మీరు ఇప్పటికే VPNకి కనెక్ట్ అయ్యారు. మీరు వేరొక దానికి కనెక్ట్ చేస్తే, మీకు ఇప్పటికే ఉన్న VPN భర్తీ చేయబడుతుంది."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"ఇప్పటికే ఉన్న VPNని భర్తీ చేయాలా?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"ఎల్లప్పుడూ ఆన్‌లో ఉండే VPNని సెట్ చేయాలా?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"ఈ సెట్టింగ్‌ను ఆన్ చేస్తే, VPN విజయవంతంగా కనెక్ట్ అయ్యే వరకు మీకు ఇంటర్నెట్ కనెక్షన్ ఉండదు"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"ఇప్పటికే ఉన్న మీ VPN భర్తీ చేయబడుతుంది మరియు VPN విజయవంతంగా కనెక్ట్ అయ్యే వరకు మీకు ఇంటర్నెట్ కనెక్షన్ ఉండదు"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"మీరు ఇప్పటికే ఎల్లప్పుడూ ఆన్‌లో ఉండే VPNకి కనెక్ట్ అయ్యారు. మీరు వేరొక దానికి కనెక్ట్ చేస్తే, ఇప్పటికే ఉన్న మీ VPN భర్తీ చేయబడుతుంది మరియు ఎల్లప్పుడూ ఆన్‌లో ఉంచే మోడ్ ఆఫ్ చేయబడుతుంది."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"మీరు ఇప్పటికే VPNకి కనెక్ట్ అయ్యారు. మీరు వేరొక దానికి కనెక్ట్ చేస్తే, మీ ప్రస్తుత VPN భర్తీ చేయబడుతుంది."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"ఆన్ చేయి"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g>కి కనెక్ట్ కావడం సాధ్యపడదు"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"ఈ అనువర్తనం ఎల్లప్పుడూ ఆన్‌లో ఉండే VPNకు మద్దతివ్వదు."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2523,8 +2528,11 @@
       <item quantity="one">%d దాచబడిన అంశాన్ని చూపుతుంది</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"నెట్‌వర్క్ &amp; ఇంటర్నెట్"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"కనెక్ట్ చేసిన పరికరాలు"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"అనువర్తనాలు &amp; నోటిఫికేషన్‌లు"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"వినియోగదారు &amp; ఖాతాలు"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"అనువర్తన డిఫాల్ట్‌లు"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"భాష: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"సెట్టింగ్‌లు"</string>
     <string name="search_menu" msgid="6283419262313758339">"శోధన సెట్టింగ్‌లు"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"శోధన సెట్టింగ్‌లు"</string>
@@ -2626,7 +2634,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"కార్యాలయ ప్రొఫైల్ శబ్దాలు భర్తీ చేయాలా?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"భర్తీ చేయి"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"మీ ప్రస్తుత కార్యాలయ ప్రొఫైల్ శబ్దాలు మీ వ్యక్తిగత ప్రొఫైల్ శబ్దాలతో భర్తీ చేయబడతాయి"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"నోటిఫికేషన్‌లను కాన్ఫిగర్ చేయి"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"అధునాతనం"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"కార్యాలయ నోటిఫికేషన్‌లు"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"నోటిఫికేషన్ లైట్‌ను మిణుకుమిణుకుమనేలా చేయి"</string>
@@ -3032,8 +3041,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"మంగళ 6:01PM"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"మంగళ 6:02PM"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"మంగళ 6:03PM"</string>
-    <string name="see_all" msgid="8883901630052886984">"అన్నీ చూడండి"</string>
-    <string name="see_less" msgid="1250265310929558370">"తక్కువ చూడండి"</string>
     <string name="disconnected" msgid="5787956818111197212">"డిస్‌కనెక్ట్ చేయబడింది"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> డేటా ఉపయోగించబడింది"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 48dc1e0..04c903d 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"ยกเลิกการเชื่อมต่อ"</string>
     <string name="vpn_version" msgid="1939804054179766249">"เวอร์ชัน <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"ลืม VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"แทนที่ VPN ที่มีอยู่ไหม"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"คุณเชื่อมต่ออยู่กับ VPN แล้ว หากคุณเชื่อมต่อรายการอื่น ระบบจะแทนที่ VPN ที่มีอยู่"</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"แทนที่ VPN ที่มีอยู่หรือไม่"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"ตั้งค่า VPN แบบเปิดตลอดเวลาหรือไม่"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"เมื่อเปิดการตั้งค่านี้ คุณจะไม่มีการเชื่อมต่ออินเทอร์เน็ตจนกว่า VPN จะเชื่อมต่อสำเร็จ"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"ระบบจะแทนที่ VPN ที่มีอยู่และคุณจะไม่มีการเชื่อมต่ออินเทอร์เน็ตจนกว่า VPN จะเชื่อมต่อสำเร็จ"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"คุณเชื่อมต่ออยู่กับ VPN แบบเปิดตลอดเวลาแล้ว หากเชื่อมต่อรายการอื่น ระบบจะแทนที่ VPN ที่มีอยู่และปิดโหมดเปิดตลอดเวลา"</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"คุณเชื่อมต่ออยู่กับ VPN แล้ว หากเชื่อมต่อรายการอื่น ระบบจะแทนที่ VPN ที่มีอยู่"</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"เปิด"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> ไม่สามารถเชื่อมต่อได้"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"แอปนี้ไม่สนับสนุน VPN ที่เปิดอยู่เสมอ"</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2522,10 +2527,12 @@
       <item quantity="other">แสดงรายการที่ซ่อน %d รายการ</item>
       <item quantity="one">แสดงรายการที่ซ่อน %d รายการ</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"เครือข่ายและอินเทอร์เน็ต"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"อุปกรณ์ที่เชื่อมต่อ"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"แอปและการแจ้งเตือน"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"ผู้ใช้และบัญชี"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"ค่าเริ่มต้นของแอป"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"ภาษา: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"การตั้งค่า"</string>
     <string name="search_menu" msgid="6283419262313758339">"การตั้งค่าการค้นหา"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"การตั้งค่าการค้นหา"</string>
@@ -2627,7 +2634,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"เปลี่ยนเสียงในโปรไฟล์งานไหม"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"แทนที่"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"ระบบจะใช้เสียงในโปรไฟล์ส่วนตัวของคุณแทนเสียงในโปรไฟล์งานปัจจุบัน"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"กำหนดค่าการแจ้งเตือน"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"ขั้นสูง"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"การแจ้งเตือนงาน"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"ไฟกระพริบแจ้งเตือน"</string>
@@ -3033,8 +3041,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"อังคาร 18.01 น."</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"อังคาร 18.02 น."</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"อังคาร 18.03 น."</string>
-    <string name="see_all" msgid="8883901630052886984">"ดูทั้งหมด"</string>
-    <string name="see_less" msgid="1250265310929558370">"ดูน้อยลง"</string>
     <string name="disconnected" msgid="5787956818111197212">"ยกเลิกการเชื่อมต่อแล้ว"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"ใช้อินเทอร์เน็ตไป <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index ef5bd80..0363928 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Putulin ang koneksyon"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Bersyon <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Kalimutan ang VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Palitan ang dati nang VPN?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Nakakonekta ka na sa isang VPN. Kung kokonekta ka sa iba, papalitan ang dati mo nang VPN."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Gusto mo bang palitan ang dati nang VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Gusto mo bang itakda ang VPN na palaging naka-on?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Kapag na-on ang setting na ito, wala kang magagamit na koneksyon sa Internet hanggang sa matagumpay na makakonekta ang VPN"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Papalitan ang dati mo nang VPN at wala kang magagamit na koneksyon sa Internet hanggang sa matagumpay na makakonekta ang VPN"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Nakakonekta ka na sa isang VPN na palaging naka-on. Kung kokonekta ka sa iba, papalitan ang dati mo nang VPN at io-off ang palaging naka-on na mode."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Nakakonekta ka na sa isang VPN. Kung kokonekta ka sa iba, papalitan ang dati mo nang VPN."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"I-on"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Hindi makakonekta ang <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Hindi sinusuportahan ng app na ito ang VPN na palaging naka-on."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2522,10 +2527,12 @@
       <item quantity="one">Ipakita ang %d nakatagong item</item>
       <item quantity="other">Ipakita ang %d na nakatagong item</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Network at Internet"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Mga nakakonektang device"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Mga app at notification"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"User at mga account"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Mga default na app"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Wika: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Mga Setting"</string>
     <string name="search_menu" msgid="6283419262313758339">"Mga setting ng paghahanap"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Mga setting ng paghahanap"</string>
@@ -2627,7 +2634,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Palitan tunog sa profile sa trabaho?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Palitan"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Papalitan ang kasalukuyang mga tunog sa profile sa trabaho ng mga tunog sa iyong personal na profile"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"I-configure ang mga notification"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"Advanced"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Mga notification sa trabaho"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Pulse na ilaw ng notification"</string>
@@ -3033,8 +3041,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Mar 6:01PM"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Mar 6:02PM"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Mar 6:03PM"</string>
-    <string name="see_all" msgid="8883901630052886984">"Tingnan lahat"</string>
-    <string name="see_less" msgid="1250265310929558370">"Tumingin nang kaunti"</string>
     <string name="disconnected" msgid="5787956818111197212">"Naputol ang Koneksyon"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> ng data ang ginamit"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 466e807..6e36df6 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Bağlantıyı kes"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Sürüm <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN\'yi unut"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Mevcut VPN değiştirilsin mi?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Bir VPN\'ye zaten bağlısınız. Farklı bir VPN\'ye bağlanırsanız mevcut VPN\'niz değiştirilecek."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Mevcut VPN değiştirilsin mi?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Her zaman açık VPN ayarlansın mı?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Bu ayarı açtığınızda VPN doğru bir şekilde bağlanana kadar İnternet bağlantınız olmayacak."</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Mevcut VPN\'niz değiştirilecek ve VPN başarıyla bağlanana kadar İnternet bağlantınız olmayacak."</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Her zaman açık moddaki VPN\'ye zaten bağlısınız. Farklı bir VPN\'ye bağlanırsanız mevcut VPN\'niz değişir ve her zaman açık modu kapanır."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Bir VPN\'ye zaten bağlısınız. Farklı bir VPN\'ye bağlanırsanız mevcut VPN\'niz değiştirilecek."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Aç"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> bağlantısı yapılamıyor"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Bu uygulama her zaman açık durumda olan VPN\'yi desteklemez."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2522,10 +2527,12 @@
       <item quantity="other">Gizli %d öğeyi göster</item>
       <item quantity="one">Gizli %d öğeyi göster</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Ağ ve İnternet"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Bağlı cihazlar"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Uygulamalar ve bildirimler"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Kullanıcı ve hesaplar"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Uygulama varsayılanları"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Dil: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Ayarlar"</string>
     <string name="search_menu" msgid="6283419262313758339">"Arama ayarları"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Arama ayarları"</string>
@@ -2627,7 +2634,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"İş profili seslerini değiştir?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Değiştir"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Mevcut iş profili sesleriniz kişisel profil seslerinizle değiştirilecek"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Bildirimleri yapılandır"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"Gelişmiş"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"İş bildirimleri"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Bildirim ışığını yakıp söndür"</string>
@@ -3033,8 +3041,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Sal 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Sal 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Sal 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Tümünü göster"</string>
-    <string name="see_less" msgid="1250265310929558370">"Daha az göster"</string>
     <string name="disconnected" msgid="5787956818111197212">"Bağlantı kesildi"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> veri kullanıldı"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 029e8f1..d531bc5 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -2314,8 +2314,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Відключити"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Версія <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Забути мережу VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Замінити наявну мережу VPN?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Пристрій уже під’єднано до мережі VPN. Якщо під’єднати його до іншої мережі, наявну мережу VPN буде замінено."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Замінити наявну мережу VPN?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Увімкнути постійну мережу VPN?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Якщо ввімкнути це налаштування, пристрій не матиме з’єднання з Інтернетом, доки не під’єднається мережа VPN"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Наявну мережу VPN буде замінено, а пристрій не матиме з’єднання з Інтернетом, доки не під’єднається мережа VPN"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Пристрій уже під’єднано до постійної мережі VPN. Якщо під’єднати його до іншої мережі, наявну мережу VPN буде замінено, а режим постійної мережі VPN буде вимкнено."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Пристрій уже під’єднано до мережі VPN. Якщо під’єднати його до іншої мережі, наявну мережу VPN буде замінено."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Увімкнути"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Не вдається під’єднатися до мережі <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Цей додаток не підтримує постійну мережу VPN."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2567,8 +2572,11 @@
       <item quantity="other">Показати %d схованого елемента</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Мережа й Інтернет"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Під’єднані пристрої"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Додатки та сповіщення"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Користувач і облікові записи"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Додатки за умовчанням"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Мова: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Налаштування"</string>
     <string name="search_menu" msgid="6283419262313758339">"Налаштування пошуку"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Налаштуваня пошуку"</string>
@@ -2670,7 +2678,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Замінити звуки робоч. профілю?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Замінити"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Поточні звуки робочого профілю буде замінено на звуки особистого профілю"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Налаштування сповіщень"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Налаштування сповіщень"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Розширені налаштування"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Робочі сповіщення"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Світловий сигнал"</string>
@@ -3092,8 +3100,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Вт 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Вт 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Вт 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Показати все"</string>
-    <string name="see_less" msgid="1250265310929558370">"Показати менше"</string>
     <string name="disconnected" msgid="5787956818111197212">"Від’єднано"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Використовується трафіку: <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-ur-rPK/strings.xml b/res/values-ur-rPK/strings.xml
index a1f8577..23c01e6 100644
--- a/res/values-ur-rPK/strings.xml
+++ b/res/values-ur-rPK/strings.xml
@@ -2270,8 +2270,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"غیر منسلک کریں"</string>
     <string name="vpn_version" msgid="1939804054179766249">"ورژن <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"‏VPN بھول جائیں"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"‏موجودہ VPN بدلیں؟"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"‏آپ پہلے سے VPN سے منسلک ہیں۔ اگر آپ کسی مختلف سے منسلک ہوتے ہیں تو آپ کا موجودہ VPN بدل دیا جائے گا۔"</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"‏موجودہ VPN بدلیں؟"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"‏ہمیشہ آن VPN سیٹ کریں؟"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"‏اس ترتیب کو آن کرنے سے، آپ کے پاس تب تک انٹرنیٹ کنکشن نہیں ہو گا جب تک VPN کامیابی کے ساتھ منسلک نہیں ہو جاتا"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"‏آپ کا موجودہ VPN بدل دیا جائے گا اور آپ کے پاس تب تک انٹرنیٹ کنکشن نہیں ہو گا جب تک VPN کامیابی کے ساتھ منسلک نہیں ہو جاتا"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"‏آپ پہلے سے ایک ہمیشہ آن VPN سے منسلک ہیں۔ اگر آپ کسی مختلف سے منسلک ہوتے ہیں تو آپ کا موجودہ VPN بدل دیا جائے گا اور ہمیشہ آن موڈ آف ہو جائے گا۔"</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"‏آپ پہلے سے VPN سے منسلک ہیں۔ اگر آپ کسی مختلف سے منسلک ہوتے ہیں تو آپ کا موجودہ VPN بدل دیا جائے گا۔"</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"آن کریں"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> منسلک نہیں ہو سکتا"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"‏یہ ایپ ہمیشہ آن VPN کو سپورٹ نہیں کرتی۔"</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2510,10 +2515,12 @@
     <string name="dashboard_title" msgid="5453710313046681820">"ترتیبات"</string>
     <!-- String.format failed for translation -->
     <!-- no translation found for settings_suggestion_header_summary_hidden_items (5597356221942118048) -->
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"نیٹ ورک اور انٹرنیٹ"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"منسلک آلات"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"ایپس اور اطلاعات"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"صارف اور اکاؤنٹس"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"ایپ ڈیفالٹس"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"زبان: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"ترتیبات"</string>
     <string name="search_menu" msgid="6283419262313758339">"تلاش کی ترتیبات"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"تلاش کی ترتیبات"</string>
@@ -2615,7 +2622,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"دفتری پروفائل کی آوازیں بدلیں؟"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"بدلیں"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"آپ کی موجودہ دفتری پروفائل کی آوازیں آپ کی ذاتی پروفائل کی آوازوں سے تبدیل ہو جائیں گی۔"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"اطلاعات کنفیگر کریں"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"جدید ترین"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"دفتری اطلاعات"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"پلس اطلاعی روشنی"</string>
@@ -3021,8 +3029,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"منگل 6:01 بجے رات"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"منگل 6:02 بجے رات"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"منگل 6:03 بجے رات"</string>
-    <string name="see_all" msgid="8883901630052886984">"سبھی دیکھیں"</string>
-    <string name="see_less" msgid="1250265310929558370">"کم دیکھیں"</string>
     <string name="disconnected" msgid="5787956818111197212">"غیر منسلک ہے"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> ڈیٹا استعمال ہو گیا"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-uz-rUZ/strings.xml b/res/values-uz-rUZ/strings.xml
index f91c669..a1ae883 100644
--- a/res/values-uz-rUZ/strings.xml
+++ b/res/values-uz-rUZ/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Aloqani uzish"</string>
     <string name="vpn_version" msgid="1939804054179766249">"<xliff:g id="VERSION">%s</xliff:g> versiya"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPNni o‘chirish"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Mavjud VPN tarmog‘i almashtirilsinmi?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Allaqachon VPN tarmog‘iga ulangan. Yangisiga ulansangiz, mavjud tarmoq almashtiriladi."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Mavjud VPN tarmog‘i almashtirilsinmi?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Doimiy VPN o‘rnatilsinmi?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Bu sozlama yoqilganda to VPN to‘liq ulanmaguncha internet ishlamaydi"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Mavjud VPN tarmog‘i almashtiriladi va to VPN to‘liq ulanmaguncha internet ishlamaydi"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Doimiy VPN tarmog‘iga allaqachon ulangansiz. Agar boshqasiga ulansangiz, mavjud VPN tarmog‘i almashtiriladi va doimiy rejim o‘chirib qo‘yiladi."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Allaqachon VPN tarmog‘iga ulangan. Yangisiga ulansangiz, mavjud tarmoq almashtiriladi."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Yoqish"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"“<xliff:g id="VPN_NAME">%1$s</xliff:g>” tarmog‘iga ulanib bo‘lmadi"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Bu ilova doimiy VPN tarmog‘iga ulanishni qo‘llab-quvvatlamaydi."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2522,9 +2527,12 @@
       <item quantity="other">%d ta yashirin elementni ko‘rsatish</item>
       <item quantity="one">%d ta yashirin elementni ko‘rsatish</item>
     </plurals>
-    <string name="network_dashboard_title" msgid="4771589228992391573">"Tarmoq va internet"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Tarmoq va Internet"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Ulangan qurilmalar"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Ilova va bildirishnomalar"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Foydalanuvchi va hisoblar"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Birlamchi ilovalar"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Til: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Sozlamalar"</string>
     <string name="search_menu" msgid="6283419262313758339">"Qidiruv sozlamalari"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Qidiruv sozlamalari"</string>
@@ -2626,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Ishchi ovozlar almashtirilsinmi?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Almashtirish"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Joriy ishchi profil ovozlari shaxsiy profil ovozlari bilan almashtiriladi"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Bildirishnomalarni sozlash"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Bildirishnoma sozlamalari"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Kengaytirilgan sozlamalar"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Ishga oid bildirishnomalar"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Yoritkichli indikator"</string>
@@ -3032,8 +3040,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Seshanba, 18:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Seshanba, 18:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Seshanba, 18:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"Hammasini ko‘rsatish"</string>
-    <string name="see_less" msgid="1250265310929558370">"Kamroq"</string>
     <string name="disconnected" msgid="5787956818111197212">"Aloqa uzildi"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Sarflangan trafik: <xliff:g id="AMOUNT">%1$s</xliff:g>"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index a80021a..4536626 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Ngắt kết nối"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Phiên bản <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Quên VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Thay thế VPN hiện có?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Bạn đã kết nối với một VPN. Nếu bạn kết nối với một VPN khác, VPN hiện có của bạn sẽ bị thay thế."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Thay thế VPN hiện có?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Đặt VPN luôn bật?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Bằng cách bật cài đặt này, bạn sẽ không có kết nối Internet cho đến khi VPN kết nối thành công"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"VPN hiện có của bạn sẽ được thay thế và bạn sẽ không có kết nối Internet cho đến khi VPN kết nối thành công"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Bạn đã kết nối với một VPN luôn bật. Nếu bạn kết nối với một VPN khác, VPN hiện có của bạn sẽ bị thay thế và chế độ luôn bật sẽ tắt."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Bạn đã kết nối với một VPN. Nếu bạn kết nối với một VPN khác, VPN hiện có của bạn sẽ bị thay thế."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Bật"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> không thể kết nối"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Ứng dụng này không hỗ trợ VPN luôn bật."</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2522,10 +2527,12 @@
       <item quantity="other">Hiển thị %d mục ẩn</item>
       <item quantity="one">Hiển thị %d mục ẩn</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Mạng và Internet"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Thiết bị đã kết nối"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Ứng dụng và thông báo"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Người dùng và tài khoản"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Mặc định của ứng dụng"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Ngôn ngữ: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Cài đặt"</string>
     <string name="search_menu" msgid="6283419262313758339">"Cài đặt tìm kiếm"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Cài đặt tìm kiếm"</string>
@@ -2627,7 +2634,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Thay thế âm thanh hồ sơ công việc?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Thay thế"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Âm thanh hồ sơ công việc hiện tại của bạn sẽ được thay thế bằng âm thanh hồ sơ cá nhân của bạn"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Định cấu hình thông báo"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"Nâng cao"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Thông báo công việc"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Đèn thông báo dạng xung"</string>
@@ -3033,8 +3041,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Thứ Ba 6:01 CH"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Thứ Ba 6:02 CH"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Thứ Ba 6:03 CH"</string>
-    <string name="see_all" msgid="8883901630052886984">"Xem tất cả"</string>
-    <string name="see_less" msgid="1250265310929558370">"Xem bớt"</string>
     <string name="disconnected" msgid="5787956818111197212">"Đã ngắt kết nối"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"Đã sử dụng <xliff:g id="AMOUNT">%1$s</xliff:g> dữ liệu"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 0659350..174a314 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -2280,8 +2280,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"断开连接"</string>
     <string name="vpn_version" msgid="1939804054179766249">"版本 <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"取消保存 VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"替换现有 VPN？"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"您已连接到 VPN。如果要连接到其他 VPN，则系统将替换现有 VPN。"</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"要替换现有 VPN 吗？"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"要设置始终开启的 VPN 吗？"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"开启这项设置后，在 VPN 成功连接之前，您将无法连接到互联网"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"系统将替换现有 VPN，而且在 VPN 成功连接之前，您将无法连接到互联网"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"您已连接到某个始终开启的 VPN。如果您要连接到其他 VPN，则系统将替换现有 VPN，并关闭始终开启模式。"</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"您已连接到 VPN。如果您要连接到其他 VPN，则系统将替换现有 VPN。"</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"开启"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"无法连接到<xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"此应用不支持始终开启的 VPN。"</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2522,10 +2527,12 @@
       <item quantity="other">显示 %d 项隐藏内容</item>
       <item quantity="one">显示 %d 项隐藏内容</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"网络和互联网"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"已关联的设备"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"应用和通知"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"用户和帐号"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"应用默认设置"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"语言：<xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"设置"</string>
     <string name="search_menu" msgid="6283419262313758339">"搜索设置"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"搜索设置"</string>
@@ -2627,7 +2634,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"要替换工作资料提示音吗？"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"替换"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"系统将使用您的个人资料提示音替换您当前的工作资料提示音"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"配置通知"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"高级"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"工作通知"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"收到通知时指示灯闪烁"</string>
@@ -3033,8 +3041,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"周二下午 6:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"周二下午 6:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"周二下午 6:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"查看全部"</string>
-    <string name="see_less" msgid="1250265310929558370">"隐藏部分"</string>
     <string name="disconnected" msgid="5787956818111197212">"已断开连接"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"已使用 <xliff:g id="AMOUNT">%1$s</xliff:g> 的数据"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 70ccbbf..ef69d2f 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -2285,8 +2285,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"中斷連線"</string>
     <string name="vpn_version" msgid="1939804054179766249">"版本為：<xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"刪除 VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"要取代現有的 VPN 嗎？"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"您已連接至 VPN。如果您連接至另一個 VPN，目前的 VPN 將會被取代。"</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"要取代目前的 VPN 嗎？"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"要設定永遠開啟的 VPN 嗎？"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"開啟此設定後，VPN 成功連線前，您將無法連線至互聯網"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"目前的 VPN 將會被取代，而 VPN 成功連線前，您將無法連線至互聯網"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"您已連線至永遠開啟的 VPN。如果您連線至另一個 VPN，目前的 VPN 將會被取代，而永遠開啟模式亦將會關閉。"</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"您已連線至 VPN。如果您連線至另一個 VPN，目前的 VPN 將會被取代。"</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"開啟"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"無法連接 <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"此應用程式不支援永遠開啟的 VPN。"</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2527,10 +2532,12 @@
       <item quantity="other">顯示 %d 個隱藏項目</item>
       <item quantity="one">顯示 %d 個隱藏項目</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"網絡和互聯網"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"已連結的裝置"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"應用程式和通知"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"使用者和帳戶"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"應用程式預設"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"語言：<xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"設定"</string>
     <string name="search_menu" msgid="6283419262313758339">"搜尋設定"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"搜尋設定"</string>
@@ -2632,7 +2639,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"要取代工作設定檔聲音嗎？"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"取代"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"目前的工作設定檔聲音會以個人設定檔聲音取代"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"設定通知"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"進階"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"工作通知"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"啟用通知燈"</string>
@@ -3038,8 +3046,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"星期二下午 6:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"星期二下午 6:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"星期二下午 6:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"顯示全部"</string>
-    <string name="see_less" msgid="1250265310929558370">"顯示較少"</string>
     <string name="disconnected" msgid="5787956818111197212">"已中斷連線"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"已使用 <xliff:g id="AMOUNT">%1$s</xliff:g> 數據"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 17c3237..98565de 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -2284,8 +2284,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"中斷連線"</string>
     <string name="vpn_version" msgid="1939804054179766249">"版本 <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"清除 VPN 設定檔"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"要取代現有的 VPN 嗎？"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"您已連線至某個 VPN。連線至其他 VPN 將會取代現有的 VPN。"</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"要取代現有的 VPN 嗎？"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"要設定永久連線的 VPN 嗎？"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"開啟這項設定後，在 VPN 成功連線之前，你將無法連上網際網路"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"現有的 VPN 會遭到取代，而且在 VPN 成功連線之前，你將無法連上網際網路"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"你已連線至特定的永久連線 VPN。連線至其他 VPN 將會取代現有的 VPN，並關閉永久連線模式。"</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"你已連線至特定 VPN。連線至其他 VPN 將會取代現有的 VPN。"</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"開啟"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"無法連線至 <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"這個應用程式不支援永久連線的 VPN。"</string>
     <string name="vpn_title" msgid="6317731879966640551">"VPN"</string>
@@ -2526,10 +2531,12 @@
       <item quantity="other">顯示 %d 個隱藏項目</item>
       <item quantity="one">顯示 %d 個隱藏項目</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
-    <skip />
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="4771589228992391573">"網路和網際網路"</string>
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"已連結的裝置"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"應用程式和通知"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"使用者和帳戶"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"預設應用程式"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"語言：<xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"設定"</string>
     <string name="search_menu" msgid="6283419262313758339">"搜尋設定"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"搜尋設定"</string>
@@ -2631,7 +2638,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"要取代 Work 設定檔音效嗎？"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"取代"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"你的個人設定檔音效將取代目前的 Work 設定檔音效"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"設定通知"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"進階"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Work 通知"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"閃爍燈光通知"</string>
@@ -3037,8 +3045,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"週二下午 6:01"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"週二下午 6:02"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"週二下午 6:03"</string>
-    <string name="see_all" msgid="8883901630052886984">"全部顯示"</string>
-    <string name="see_less" msgid="1250265310929558370">"顯示較少"</string>
     <string name="disconnected" msgid="5787956818111197212">"已中斷連線"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"已使用 <xliff:g id="AMOUNT">%1$s</xliff:g>的數據用量"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 6f7ca7b..b82f64a 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -2281,8 +2281,13 @@
     <string name="vpn_disconnect" msgid="7426570492642111171">"Nqamula"</string>
     <string name="vpn_version" msgid="1939804054179766249">"Inguqulo engu-<xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Khohlwa i-VPN"</string>
-    <string name="vpn_replace_always_on_vpn_title" msgid="3010435028275752220">"Miselela i-VPN ekhona?"</string>
-    <string name="vpn_replace_always_on_vpn_message" msgid="4764679857158814028">"Usuvele uxhumekile ku-VPN. Uma uxhua kwehlukile, i-VPN izomiselelwa."</string>
+    <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Shintshanisa i-VPN ekhona?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Setha i-VPN ehlala ivuliwe?"</string>
+    <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Ngokuvula lesi silungiselelo, ngeke ube nokuxhumeka kwe-inthanethi kuze kuxhumeke i-VPN ngempumelelo"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"I-VPN yakho ekhona izoshintshaniswa, futhi ngeke ube nokuxhumeka kwe-inthanethi i-VPN ize ixhumeke ngempumelelo"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Usuvele uxhumeke ku-VPN ehlala ivuliwe. Uma uxhumeka kwehlukile, i-VPN yakho ekhona izoshintshaniswa, futhi imodi yokuhlala ivuliwe izovalwa."</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Usuvele uxhumekile ku-VPN. Uma uxhua kwehlukile, i-VPN izoshintshaniswa."</string>
+    <string name="vpn_turn_on" msgid="2363136869284273872">"Vula"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> ayikwazi ukuxhuma"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"Lolu hlelo lokusebenza alisekeli i-VPN ehlala ivulekile."</string>
     <string name="vpn_title" msgid="6317731879966640551">"I-VPN"</string>
@@ -2524,8 +2529,11 @@
       <item quantity="other">Bonisa izinto ezingu-%d ezifihliwe</item>
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Inethiwekhi ye-inthanethi"</string>
-    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
-    <skip />
+    <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Amadivayisi axhunyiwe"</string>
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Izinhlelo zokusebenza nezaziso"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Umsebenzisi nama-akhawunti"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Okuzenzakalelayo kohlelo lokusebenza"</string>
+    <string name="system_dashboard_summary" msgid="6112602136713843779">"Ulimi: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Izilungiselelo"</string>
     <string name="search_menu" msgid="6283419262313758339">"Izilungiselelo zokusesha"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Izilungiselelo zokusesha"</string>
@@ -2627,7 +2635,8 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Faka esikhundleni imisindo yephrofayela yomsebenzi?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Buyisela"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Imisindo yakho yamanje yephrofayela yomsebenzi izoshintshaniswa nemisindo yakho siqu yephrofayela"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Lungisa izaziso"</string>
+    <!-- no translation found for configure_notification_settings (7447797716856573587) -->
+    <skip />
     <string name="advanced_section_header" msgid="8833934850242546903">"Okuthuthukisiwe"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Izaziso zomsebenzi"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Ukukhanya kwesaziso sephalsi"</string>
@@ -3033,8 +3042,6 @@
     <string name="screen_zoom_conversation_timestamp_2" msgid="7107225702890747588">"Lwesibili 6:01PM"</string>
     <string name="screen_zoom_conversation_timestamp_3" msgid="3785674344762707688">"Lwesibili 6:02PM"</string>
     <string name="screen_zoom_conversation_timestamp_4" msgid="2511469395448561259">"Lwesibili 6:03PM"</string>
-    <string name="see_all" msgid="8883901630052886984">"Buka konke"</string>
-    <string name="see_less" msgid="1250265310929558370">"Buka okuncane"</string>
     <string name="disconnected" msgid="5787956818111197212">"Inqamukile"</string>
     <string name="data_usage_summary_format" msgid="7507047900192160585">"<xliff:g id="AMOUNT">%1$s</xliff:g> wedatha esetshenzisiwe"</string>
     <plurals name="notification_summary" formatted="false" msgid="4019451362120557382">
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 2b6a730..3be4038 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -21,7 +21,7 @@
 
     <color name="material_empty_color_light">#FFCED7DB</color>
 
-
+    <color name="bluetooth_dialog_text_color">#8a000000</color>
 
     <color name="crypt_keeper_clock_background">#ff9a9a9a</color>
     <color name="crypt_keeper_clock_foreground">#ff666666</color>
@@ -53,8 +53,6 @@
     <color name="fingerprint_title_area_bg">?android:attr/colorAccent</color>
     <color name="fingerprint_title_color">#ffffffff</color>
     <color name="fingerprint_message_color">#de000000</color>
-    <color name="fingerprint_progress_ring">?android:attr/colorAccent</color>
-    <color name="fingerprint_progress_ring_bg">#20000000</color>
     <color name="fingerprint_indicator_background_resting">#12000000</color>
 
     <color name="running_processes_system_ram">#ff384248</color>
diff --git a/res/values/config.xml b/res/values/config.xml
index 6d56e18..75d8697 100755
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -52,17 +52,10 @@
     <string name="gesture_double_twist_sensor_name" translatable="false"></string>
     <string name="gesture_double_twist_sensor_vendor" translatable="false"></string>
 
-    <!-- Pickup sensor name and vendor used by gesture setting -->
-    <string name="gesture_pickup_sensor_name" translatable="false"></string>
-    <string name="gesture_pickup_sensor_vendor" translatable="false"></string>
-
     <!-- When true enable gesture setting. -->
     <bool name="config_gesture_settings_enabled">false</bool>
 
     <!-- If the Storage Manager settings are enabled. -->
     <bool name="config_storage_manager_settings_enabled">false</bool>
 
-    <!-- When true show double-tap gesture setting. -->
-    <bool name="config_gesture_double_tap_settings_enabled">false</bool>
-
 </resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index ba15a19..40f3f71 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -67,6 +67,7 @@
 
     <dimen name="captioning_preview_height">200dp</dimen>
 
+    <dimen name="ring_progress_bar_thickness">4dp</dimen>
     <dimen name="settings_side_margin">0dip</dimen>
 
     <!-- Weight of the left pane in a multi-pane preference layout. -->
@@ -221,8 +222,6 @@
     <dimen name="redaction_vertical_margins">8dp</dimen>
 
     <!-- Fingerprint -->
-    <dimen name="fingerprint_ring_radius">92dip</dimen>
-    <dimen name="fingerprint_ring_thickness">4dip</dimen>
     <dimen name="fingerprint_dot_radius">8dp</dimen>
     <dimen name="fingerprint_pulse_radius">50dp</dimen>
     <item name="fingerprint_sensor_location_fraction_x" type="fraction">50%</item>
@@ -233,15 +232,13 @@
     <dimen name="fingerprint_error_text_appear_distance">16dp</dimen>
     <dimen name="fingerprint_error_text_disappear_distance">-8dp</dimen>
     <dimen name="fingerprint_animation_size">88dp</dimen>
-    <dimen name="fingerprint_progress_bar_size">192dp</dimen>
+    <dimen name="fingerprint_progress_bar_max_size">220dp</dimen>
+    <dimen name="fingerprint_progress_bar_min_size">120dp</dimen>
     <dimen name="fingerprint_enrolling_content_margin_top">36dp</dimen>
     <dimen name="fingerprint_in_app_indicator_size">124dp</dimen>
     <dimen name="fingerprint_in_app_indicator_min_size">124dp</dimen>
     <dimen name="fingerprint_in_app_indicator_max_size">264dp</dimen>
 
-    <dimen name="setup_fingerprint_ring_radius">80dip</dimen>
-    <dimen name="setup_fingerprint_progress_bar_size">168dp</dimen>
-
     <dimen name="confirm_credentials_security_method_margin">48dp</dimen>
     <dimen name="confirm_credentials_layout_width">@dimen/match_parent</dimen>
     <dimen name="confirm_credentials_top_padding">0dp</dimen>
@@ -315,4 +312,8 @@
     <!-- Visible vertical space we want to show below password edittext field when ime is shown.
          The unit is sp as it is related to the text size of password requirement item. -->
     <dimen name="visible_vertical_space_below_password">20sp</dimen>
+
+    <!-- Padding for the escalation card in normal dimens -->
+    <dimen name="support_escalation_card_padding_start">40dp</dimen>
+    <dimen name="support_escalation_card_padding_end">40dp</dimen>
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 8e6336f..14b7899 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -5929,6 +5929,13 @@
     <string name="network_dashboard_title">Network &amp; Internet</string>
     <!-- Title for setting tile leading to Connected devices settings [CHAR LIMIT=40]-->
     <string name="connected_devices_dashboard_title">Connected devices</string>
+    <!-- Title for setting tile leading to Apps & Notification settings [CHAR LIMIT=40]-->
+    <string name="app_and_notification_dashboard_title">Apps &amp; notifications</string>
+    <!-- Title for setting tile leading to User and accounts settings [CHAR LIMIT=40]-->
+    <string name="account_dashboard_title">User &amp; accounts</string>
+    <!-- Title for setting tile leading to App defaults (which allows user set default app to
+    handle actions such as open web page, making phone calls, default SMS apps [CHAR  LIMIT=40]-->
+    <string name="app_default_dashboard_title">App defaults</string>
     <!-- Summary text for system preference tile, showing current display language of device [CHAR LIMIT=NONE]-->
     <string name="system_dashboard_summary">Language: <xliff:g id="language">%1$s</xliff:g></string>
 
@@ -6152,7 +6159,7 @@
 
 
     <!-- Configure Notifications Settings title. [CHAR LIMIT=30] -->
-    <string name="configure_notification_settings">Configure notifications</string>
+    <string name="configure_notification_settings">Notification preferences</string>
 
     <!-- Configure Notifications: Advanced section header [CHAR LIMIT=30] -->
     <string name="advanced_section_header">Advanced</string>
@@ -7281,11 +7288,6 @@
     <!-- Conversation message timestamp of the messaging app preview screen. [CHAR LIMIT=20] -->
     <string name="screen_zoom_conversation_timestamp_4">Tue 6:03PM</string>
 
-    <!-- Button to show all top-level settings items [CHAR LIMIT=20] -->
-    <string name="see_all">See all</string>
-    <!-- Button to show less top-level settings items [CHAR LIMIT=20] -->
-    <string name="see_less">See less</string>
-
     <!-- Wi-Fi state - Disconnected [CHAR LIMIT=NONE] -->
     <string name="disconnected">Disconnected</string>
 
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 32c0b4d..0f957a8 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -435,8 +435,8 @@
         <item name="android:background">@color/card_background_grey</item>
         <item name="android:gravity">center</item>
         <item name="android:minHeight">368dp</item>
-        <item name="android:paddingStart">56dp</item>
-        <item name="android:paddingEnd">56dp</item>
+        <item name="android:paddingStart">@dimen/support_escalation_card_padding_start</item>
+        <item name="android:paddingEnd">@dimen/support_escalation_card_padding_end</item>
     </style>
 
     <style name="FingerprintHeaderStyle" parent="android:style/TextAppearance.Material.Subhead">
@@ -445,4 +445,11 @@
         <item name="android:lineSpacingMultiplier">1.2</item>
     </style>
 
+    <style name="RingProgressBarStyle" parent="android:style/Widget.Material.ProgressBar.Horizontal">
+        <item name="android:indeterminate">false</item>
+        <item name="android:max">10000</item>
+        <item name="android:mirrorForRtl">false</item>
+        <item name="android:progressDrawable">@drawable/ring_progress</item>
+    </style>
+
 </resources>
diff --git a/res/values/themes.xml b/res/values/themes.xml
index b9f69cf..a5ff54a 100644
--- a/res/values/themes.xml
+++ b/res/values/themes.xml
@@ -16,8 +16,6 @@
 
 <resources>
     <attr name="fingerprint_layout_theme" format="reference" />
-    <attr name="fingerprint_progress_bar_size" format="reference|dimension" />
-    <attr name="fingerprint_ring_radius" format="reference|dimension" />
     <attr name="ic_menu_moreoverflow" format="reference" />
     <attr name="ic_wps" format="reference" />
     <attr name="setup_divider_color" format="reference" />
@@ -38,8 +36,6 @@
         <item name="android:windowBackground">?android:attr/colorBackground</item>
         <item name="*android:preferencePanelStyle">@*android:style/PreferencePanel.Dialog</item>
         <item name="fingerprint_layout_theme">@style/FingerprintLayoutTheme</item>
-        <item name="fingerprint_progress_bar_size">@dimen/setup_fingerprint_progress_bar_size</item>
-        <item name="fingerprint_ring_radius">@dimen/setup_fingerprint_ring_radius</item>
         <item name="ic_menu_moreoverflow">@*android:drawable/ic_menu_moreoverflow_material</item>
         <item name="ic_wps">@drawable/ic_wps_dark</item>
         <item name="setup_divider_color">@color/setup_divider_color_dark</item>
@@ -62,8 +58,6 @@
         <item name="android:windowBackground">?android:attr/colorBackground</item>
         <item name="*android:preferencePanelStyle">@*android:style/PreferencePanel.Dialog</item>
         <item name="fingerprint_layout_theme">@style/FingerprintLayoutTheme</item>
-        <item name="fingerprint_progress_bar_size">@dimen/setup_fingerprint_progress_bar_size</item>
-        <item name="fingerprint_ring_radius">@dimen/setup_fingerprint_ring_radius</item>
         <item name="ic_menu_moreoverflow">@*android:drawable/ic_menu_moreoverflow_material</item>
         <item name="ic_wps">@drawable/ic_wps_light</item>
         <item name="setup_divider_color">@color/setup_divider_color_light</item>
@@ -123,6 +117,7 @@
 
     <style name="SetupWizardAccessibilitySwitchBarTheme" parent="ThemeOverlay.SwitchBar.Settings">
         <item name="switchBarBackgroundColor">@color/material_blue_500</item>
+        <item name="android:colorControlActivated">@android:color/white</item>
     </style>
 
     <!-- Theme with no local references, used by AccountPreferenceBase where we have to inflate
@@ -140,8 +135,6 @@
         <item name="*android:preferenceFragmentPaddingSide">@dimen/settings_side_margin</item>
 
         <item name="fingerprint_layout_theme">@style/FingerprintLayoutTheme</item>
-        <item name="fingerprint_progress_bar_size">@dimen/fingerprint_progress_bar_size</item>
-        <item name="fingerprint_ring_radius">@dimen/fingerprint_ring_radius</item>
         <item name="ic_menu_moreoverflow">@*android:drawable/ic_menu_moreoverflow_holo_dark</item>
         <item name="ic_wps">@drawable/ic_wps_light</item>
         <item name="wifi_signal">@drawable/wifi_signal</item>
diff --git a/res/xml/advanced_apps.xml b/res/xml/advanced_apps.xml
index 405d5af..7b1af10 100644
--- a/res/xml/advanced_apps.xml
+++ b/res/xml/advanced_apps.xml
@@ -19,10 +19,12 @@
     xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
     android:key="applications_settings">
 
-    <PreferenceScreen
+    <Preference
         android:key="manage_perms"
         android:title="@string/app_permissions"
-        settings:keywords="@string/keywords_app_permissions" />
+        settings:keywords="@string/keywords_app_permissions">
+        <intent android:action="android.intent.action.MANAGE_PERMISSIONS"/>
+    </Preference>
 
     <PreferenceCategory
         android:title="@string/default_apps_title">
diff --git a/res/xml/app_and_notification.xml b/res/xml/app_and_notification.xml
new file mode 100644
index 0000000..4aa109e
--- /dev/null
+++ b/res/xml/app_and_notification.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  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.
+  -->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
+
+    <Preference
+        android:key="manage_perms"
+        android:title="@string/app_permissions"
+        android:order="-130"
+        settings:keywords="@string/keywords_app_permissions">
+        <intent android:action="android.intent.action.MANAGE_PERMISSIONS"/>
+    </Preference>
+
+</PreferenceScreen>
\ No newline at end of file
diff --git a/res/xml/app_default_settings.xml b/res/xml/app_default_settings.xml
new file mode 100644
index 0000000..c6e56a1
--- /dev/null
+++ b/res/xml/app_default_settings.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  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.
+  -->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
+
+    <Preference
+        android:key="assist_and_voice_input"
+        android:title="@string/assist_and_voice_input_title"
+        android:fragment="com.android.settings.applications.ManageAssist"
+        android:order="-20"/>
+
+    <com.android.settings.applications.DefaultBrowserPreference
+        android:key="default_browser"
+        android:title="@string/default_browser_title"
+        android:summary="@string/default_browser_title_none"
+        android:order="-19"/>
+
+    <com.android.settings.applications.DefaultHomePreference
+        android:key="default_home"
+        android:title="@string/home_app"
+        android:summary="@string/no_default_home"
+        settings:keywords="@string/keywords_home"
+        android:order="-18"/>
+
+    <com.android.settings.applications.DefaultPhonePreference
+        android:key="default_phone_app"
+        android:title="@string/default_phone_title"
+        settings:keywords="@string/keywords_default_phone_app"
+        android:order="-17"/>
+
+    <com.android.settings.applications.DefaultSmsPreference
+        android:key="default_sms_app"
+        android:title="@string/sms_application_title"
+        settings:keywords="@string/keywords_more_default_sms_app"
+        android:order="-16"/>
+
+    <com.android.settings.applications.DefaultEmergencyPreference
+        android:key="default_emergency_app"
+        android:title="@string/default_emergency_app"
+        settings:keywords="@string/keywords_emergency_app"
+        android:order="-15"/>
+
+    <Preference
+        android:key="domain_urls"
+        android:title="@string/domain_urls_title"
+        android:fragment="com.android.settings.applications.ManageDomainUrls">
+    </Preference>
+
+    <com.android.settings.WorkOnlyCategory
+        android:key="work_defaults"
+        android:title="@string/default_for_work">
+
+        <com.android.settings.applications.DefaultBrowserPreference
+            android:key="work_default_browser"
+            android:title="@string/default_browser_title"
+            android:summary="@string/default_browser_title_none"
+            settings:forWork="true"/>
+
+        <com.android.settings.applications.DefaultPhonePreference
+            android:key="work_default_phone_app"
+            android:title="@string/default_phone_title"
+            settings:keywords="@string/keywords_default_phone_app"
+            settings:forWork="true"/>
+
+    </com.android.settings.WorkOnlyCategory>
+
+    <Preference
+        android:key="special_access"
+        android:fragment="com.android.settings.applications.SpecialAccessSettings"
+        android:title="@string/special_access"/>
+
+</PreferenceScreen>
\ No newline at end of file
diff --git a/res/xml/configure_notification_settings.xml b/res/xml/configure_notification_settings.xml
index 8778abb..626cd33 100644
--- a/res/xml/configure_notification_settings.xml
+++ b/res/xml/configure_notification_settings.xml
@@ -15,19 +15,34 @@
 -->
 
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
-                  xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
-        android:title="@string/configure_notification_settings"
-        android:key="configure_notification_settings" >
+                  android:title="@string/configure_notification_settings"
+                  android:key="configure_notification_settings">
 
     <!-- Pulse notification light -->
     <SwitchPreference
-            android:key="notification_pulse"
-            android:title="@string/notification_pulse_title" />
+        android:key="notification_pulse"
+        android:title="@string/notification_pulse_title"/>
 
     <!-- When device is locked -->
     <com.android.settings.notification.RestrictedDropDownPreference
-            android:key="lock_screen_notifications"
+        android:key="lock_screen_notifications"
+        android:title="@string/lock_screen_notifications_title"
+        android:summary="%s"/>
+
+    <SwitchPreference
+        android:key="gesture_swipe_down_fingerprint"
+        android:title="@string/fingerprint_swipe_for_notifications_title"
+        android:summary="@string/fingerprint_swipe_for_notifications_summary"/>
+
+    <PreferenceCategory
+        android:key="lock_screen_notifications_profile_header"
+        android:title="@string/profile_section_header">
+
+        <com.android.settings.notification.RestrictedDropDownPreference
+            android:key="lock_screen_notifications_profile"
             android:title="@string/lock_screen_notifications_title"
-            android:summary="%s" />
+            android:summary="%s"/>
+
+    </PreferenceCategory>
 
 </PreferenceScreen>
diff --git a/res/xml/configure_notification_settings_profile.xml b/res/xml/configure_notification_settings_profile.xml
deleted file mode 100644
index 301f3c0..0000000
--- a/res/xml/configure_notification_settings_profile.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
-                  xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
-        android:title="@string/configure_notification_settings" >
-
-    <PreferenceCategory
-            android:title="@string/profile_section_header" >
-
-        <com.android.settings.notification.RestrictedDropDownPreference
-            android:key="lock_screen_notifications_profile"
-            android:title="@string/lock_screen_notifications_title"
-            android:summary="%s" />
-
-    </PreferenceCategory>
-
-</PreferenceScreen>
diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java
index 06858b7..3a1f501 100644
--- a/src/com/android/settings/ChooseLockGeneric.java
+++ b/src/com/android/settings/ChooseLockGeneric.java
@@ -298,7 +298,11 @@
                 intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_FOR_FINGERPRINT,
                         mForFingerprint);
                 intent.putExtra(EXTRA_HIDE_DRAWER, mHideDrawer);
-                startActivityForResult(intent, ENABLE_ENCRYPTION_REQUEST);
+                startActivityForResult(
+                        intent,
+                        mIsSetNewPassword && mHasChallenge
+                                ? CHOOSE_LOCK_BEFORE_FINGERPRINT_REQUEST
+                                : ENABLE_ENCRYPTION_REQUEST);
             } else {
                 if (mForChangeCredRequiredForBoot) {
                     // Welp, couldn't change it. Oh well.
diff --git a/src/com/android/settings/ChooseLockPassword.java b/src/com/android/settings/ChooseLockPassword.java
index 0ce61c7..2d40f20 100644
--- a/src/com/android/settings/ChooseLockPassword.java
+++ b/src/com/android/settings/ChooseLockPassword.java
@@ -19,6 +19,7 @@
 import android.app.Activity;
 import android.app.Fragment;
 import android.app.admin.DevicePolicyManager;
+import android.app.admin.PasswordMetrics;
 import android.content.Context;
 import android.content.Intent;
 import android.graphics.drawable.InsetDrawable;
@@ -583,8 +584,8 @@
                 // The length requirements are fulfilled.
                 if (mRequestedQuality == PASSWORD_QUALITY_NUMERIC_COMPLEX) {
                     // Check for repeated characters or sequences (e.g. '1234', '0000', '2468')
-                    final int sequence = LockPatternUtils.maxLengthSequence(password);
-                    if (sequence > LockPatternUtils.MAX_ALLOWED_SEQUENCE) {
+                    final int sequence = PasswordMetrics.maxLengthSequence(password);
+                    if (sequence > PasswordMetrics.MAX_ALLOWED_SEQUENCE) {
                         errorCode |= CONTAIN_SEQUENTIAL_DIGITS;
                     }
                 }
@@ -594,40 +595,22 @@
                 }
             }
 
-            // Count different types of character.
-            int letters = 0;
-            int numbers = 0;
-            int lowercase = 0;
-            int symbols = 0;
-            int uppercase = 0;
-            int nonletter = 0;
+            // Allow non-control Latin-1 characters only.
             for (int i = 0; i < password.length(); i++) {
                 char c = password.charAt(i);
-                // allow non control Latin-1 characters only
                 if (c < 32 || c > 127) {
                     errorCode |= CONTAIN_INVALID_CHARACTERS;
-                    continue;
-                }
-                if (c >= '0' && c <= '9') {
-                    numbers++;
-                    nonletter++;
-                } else if (c >= 'A' && c <= 'Z') {
-                    letters++;
-                    uppercase++;
-                } else if (c >= 'a' && c <= 'z') {
-                    letters++;
-                    lowercase++;
-                } else {
-                    symbols++;
-                    nonletter++;
+                    break;
                 }
             }
 
+            final PasswordMetrics metrics = PasswordMetrics.computeForPassword(password);
+
             // Ensure no non-digits if we are requesting numbers. This shouldn't be possible unless
             // user finds some way to bring up soft keyboard.
             if (mRequestedQuality == PASSWORD_QUALITY_NUMERIC
                     || mRequestedQuality == PASSWORD_QUALITY_NUMERIC_COMPLEX) {
-                if (letters > 0 || symbols > 0) {
+                if (metrics.letters > 0 || metrics.symbols > 0) {
                     errorCode |= CONTAIN_NON_DIGITS;
                 }
             }
@@ -637,32 +620,32 @@
                 int passwordRestriction = mPasswordRequirements[i];
                 switch (passwordRestriction) {
                     case MIN_LETTER_IN_PASSWORD:
-                        if (letters < mPasswordMinLetters) {
+                        if (metrics.letters < mPasswordMinLetters) {
                             errorCode |= NOT_ENOUGH_LETTER;
                         }
                         break;
                     case MIN_UPPER_LETTERS_IN_PASSWORD:
-                        if (uppercase < mPasswordMinUpperCase) {
+                        if (metrics.upperCase < mPasswordMinUpperCase) {
                             errorCode |= NOT_ENOUGH_UPPER_CASE;
                         }
                         break;
                     case MIN_LOWER_LETTERS_IN_PASSWORD:
-                        if (lowercase < mPasswordMinLowerCase) {
+                        if (metrics.lowerCase < mPasswordMinLowerCase) {
                             errorCode |= NOT_ENOUGH_LOWER_CASE;
                         }
                         break;
                     case MIN_SYMBOLS_IN_PASSWORD:
-                        if (symbols < mPasswordMinSymbols) {
+                        if (metrics.symbols < mPasswordMinSymbols) {
                             errorCode |= NOT_ENOUGH_SYMBOLS;
                         }
                         break;
                     case MIN_NUMBER_IN_PASSWORD:
-                        if (numbers < mPasswordMinNumeric) {
+                        if (metrics.numeric < mPasswordMinNumeric) {
                             errorCode |= NOT_ENOUGH_DIGITS;
                         }
                         break;
                     case MIN_NON_LETTER_IN_PASSWORD:
-                        if (nonletter < mPasswordMinNonLetter) {
+                        if (metrics.nonLetter < mPasswordMinNonLetter) {
                             errorCode |= NOT_ENOUGH_NON_LETTER;
                         }
                         break;
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index 32aaaf0..b9bc439 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -1958,7 +1958,8 @@
             Settings.Global.putInt(getActivity().getContentResolver(),
                     Settings.Global.STAY_ON_WHILE_PLUGGED_IN,
                     mKeepScreenOn.isChecked() ?
-                            (BatteryManager.BATTERY_PLUGGED_AC | BatteryManager.BATTERY_PLUGGED_USB) : 0);
+                            (BatteryManager.BATTERY_PLUGGED_AC | BatteryManager.BATTERY_PLUGGED_USB
+                                    | BatteryManager.BATTERY_PLUGGED_WIRELESS) : 0);
         } else if (preference == mBtHciSnoopLog) {
             writeBtHciSnoopLogOptions();
         } else if (preference == mEnableOemUnlock && mEnableOemUnlock.isEnabled()) {
diff --git a/src/com/android/settings/DeviceInfoSettings.java b/src/com/android/settings/DeviceInfoSettings.java
index 3305b98..24091e2 100644
--- a/src/com/android/settings/DeviceInfoSettings.java
+++ b/src/com/android/settings/DeviceInfoSettings.java
@@ -32,14 +32,13 @@
 import android.support.v7.preference.PreferenceGroup;
 import android.text.TextUtils;
 import android.util.Log;
-import android.widget.Toast;
 
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.dashboard.SummaryLoader;
 import com.android.settings.deviceinfo.AdditionalSystemUpdatePreferenceController;
+import com.android.settings.deviceinfo.BuildNumberPreferenceController;
 import com.android.settings.deviceinfo.SystemUpdatePreferenceController;
 import com.android.settings.search.BaseSearchIndexProvider;
-import com.android.settings.search.Index;
 import com.android.settings.search.Indexable;
 import com.android.settingslib.DeviceInfoUtils;
 import com.android.settingslib.RestrictedLockUtils;
@@ -59,7 +58,6 @@
     private static final String PROPERTY_URL_SAFETYLEGAL = "ro.url.safetylegal";
     private static final String PROPERTY_SELINUX_STATUS = "ro.build.selinux";
     private static final String KEY_KERNEL_VERSION = "kernel_version";
-    private static final String KEY_BUILD_NUMBER = "build_number";
     private static final String KEY_DEVICE_MODEL = "device_model";
     private static final String KEY_SELINUX_STATUS = "selinux_status";
     private static final String KEY_BASEBAND_VERSION = "baseband_version";
@@ -70,20 +68,16 @@
     private static final String KEY_DEVICE_FEEDBACK = "device_feedback";
     private static final String KEY_SAFETY_LEGAL = "safetylegal";
 
-    static final int TAPS_TO_BE_A_DEVELOPER = 7;
 
     long[] mHits = new long[3];
-    int mDevHitCountdown;
-    Toast mDevHitToast;
     private SystemUpdatePreferenceController mSystemUpdatePreferenceController;
     private AdditionalSystemUpdatePreferenceController mAdditionalSystemUpdatePreferenceController;
+    private BuildNumberPreferenceController mBuildNumberPreferenceController;
 
     private UserManager mUm;
 
     private EnforcedAdmin mFunDisallowedAdmin;
     private boolean mFunDisallowedBySystem;
-    private EnforcedAdmin mDebuggingFeaturesDisallowedAdmin;
-    private boolean mDebuggingFeaturesDisallowedBySystem;
 
     @Override
     public int getMetricsCategory() {
@@ -96,6 +90,14 @@
     }
 
     @Override
+    public void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (mBuildNumberPreferenceController.onActivityResult(requestCode, resultCode, data)) {
+            return;
+        }
+        super.onActivityResult(requestCode, resultCode, data);
+    }
+
+    @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
         final Activity activity = getActivity();
@@ -103,7 +105,9 @@
         mSystemUpdatePreferenceController = new SystemUpdatePreferenceController(activity, mUm);
         mAdditionalSystemUpdatePreferenceController =
                 new AdditionalSystemUpdatePreferenceController(activity);
-
+        mBuildNumberPreferenceController =
+                new BuildNumberPreferenceController(activity, activity, this /* fragment */);
+        getLifecycle().addObserver(mBuildNumberPreferenceController);
         addPreferencesFromResource(R.xml.device_info_settings);
 
         setStringSummary(KEY_FIRMWARE_VERSION, Build.VERSION.RELEASE);
@@ -119,8 +123,7 @@
         setValueSummary(KEY_BASEBAND_VERSION, "gsm.version.baseband");
         setStringSummary(KEY_DEVICE_MODEL, Build.MODEL + DeviceInfoUtils.getMsvSuffix());
         setValueSummary(KEY_EQUIPMENT_ID, PROPERTY_EQUIPMENT_ID);
-        setStringSummary(KEY_BUILD_NUMBER, Build.DISPLAY);
-        findPreference(KEY_BUILD_NUMBER).setEnabled(true);
+        mBuildNumberPreferenceController.displayPreference(getPreferenceScreen());
         findPreference(KEY_KERNEL_VERSION).setSummary(DeviceInfoUtils.getFormattedKernelVersion());
 
         if (!SELinux.isSELinuxEnabled()) {
@@ -174,26 +177,21 @@
     @Override
     public void onResume() {
         super.onResume();
-        mDevHitCountdown = getActivity().getSharedPreferences(DevelopmentSettings.PREF_FILE,
-                Context.MODE_PRIVATE).getBoolean(DevelopmentSettings.PREF_SHOW,
-                        android.os.Build.TYPE.equals("eng")) ? -1 : TAPS_TO_BE_A_DEVELOPER;
-        mDevHitToast = null;
         mFunDisallowedAdmin = RestrictedLockUtils.checkIfRestrictionEnforced(
                 getActivity(), UserManager.DISALLOW_FUN, UserHandle.myUserId());
         mFunDisallowedBySystem = RestrictedLockUtils.hasBaseUserRestriction(
                 getActivity(), UserManager.DISALLOW_FUN, UserHandle.myUserId());
-        mDebuggingFeaturesDisallowedAdmin = RestrictedLockUtils.checkIfRestrictionEnforced(
-                getActivity(), UserManager.DISALLOW_DEBUGGING_FEATURES, UserHandle.myUserId());
-        mDebuggingFeaturesDisallowedBySystem = RestrictedLockUtils.hasBaseUserRestriction(
-                getActivity(), UserManager.DISALLOW_DEBUGGING_FEATURES, UserHandle.myUserId());
     }
 
     @Override
     public boolean onPreferenceTreeClick(Preference preference) {
+        if (mBuildNumberPreferenceController.handlePreferenceTreeClick(preference)) {
+            return true;
+        }
         if (preference.getKey().equals(KEY_FIRMWARE_VERSION)) {
-            System.arraycopy(mHits, 1, mHits, 0, mHits.length-1);
-            mHits[mHits.length-1] = SystemClock.uptimeMillis();
-            if (mHits[0] >= (SystemClock.uptimeMillis()-500)) {
+            System.arraycopy(mHits, 1, mHits, 0, mHits.length - 1);
+            mHits[mHits.length - 1] = SystemClock.uptimeMillis();
+            if (mHits[0] >= (SystemClock.uptimeMillis() - 500)) {
                 if (mUm.hasUserRestriction(UserManager.DISALLOW_FUN)) {
                     if (mFunDisallowedAdmin != null && !mFunDisallowedBySystem) {
                         RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getActivity(),
@@ -212,59 +210,13 @@
                     Log.e(LOG_TAG, "Unable to start activity " + intent.toString());
                 }
             }
-        } else if (preference.getKey().equals(KEY_BUILD_NUMBER)) {
-            // Don't enable developer options for secondary users.
-            if (!mUm.isAdminUser()) return true;
-
-            // Don't enable developer options until device has been provisioned
-            if (!Utils.isDeviceProvisioned(getActivity())) {
+        } else if (preference.getKey().equals(KEY_SECURITY_PATCH)) {
+            if (getPackageManager().queryIntentActivities(preference.getIntent(), 0).isEmpty()) {
+                // Don't send out the intent to stop crash
+                Log.w(LOG_TAG, "Stop click action on " + KEY_SECURITY_PATCH + ": "
+                        + "queryIntentActivities() returns empty" );
                 return true;
             }
-
-            if (mUm.hasUserRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES)) {
-                if (mDebuggingFeaturesDisallowedAdmin != null &&
-                        !mDebuggingFeaturesDisallowedBySystem) {
-                    RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getActivity(),
-                            mDebuggingFeaturesDisallowedAdmin);
-                }
-                return true;
-            }
-
-            if (mDevHitCountdown > 0) {
-                mDevHitCountdown--;
-                if (mDevHitCountdown == 0) {
-                    getActivity().getSharedPreferences(DevelopmentSettings.PREF_FILE,
-                            Context.MODE_PRIVATE).edit().putBoolean(
-                                    DevelopmentSettings.PREF_SHOW, true).apply();
-                    if (mDevHitToast != null) {
-                        mDevHitToast.cancel();
-                    }
-                    mDevHitToast = Toast.makeText(getActivity(), R.string.show_dev_on,
-                            Toast.LENGTH_LONG);
-                    mDevHitToast.show();
-                    // This is good time to index the Developer Options
-                    Index.getInstance(
-                            getActivity().getApplicationContext()).updateFromClassNameResource(
-                                    DevelopmentSettings.class.getName(), true, true);
-
-                } else if (mDevHitCountdown > 0
-                        && mDevHitCountdown < (TAPS_TO_BE_A_DEVELOPER-2)) {
-                    if (mDevHitToast != null) {
-                        mDevHitToast.cancel();
-                    }
-                    mDevHitToast = Toast.makeText(getActivity(), getResources().getQuantityString(
-                            R.plurals.show_dev_countdown, mDevHitCountdown, mDevHitCountdown),
-                            Toast.LENGTH_SHORT);
-                    mDevHitToast.show();
-                }
-            } else if (mDevHitCountdown < 0) {
-                if (mDevHitToast != null) {
-                    mDevHitToast.cancel();
-                }
-                mDevHitToast = Toast.makeText(getActivity(), R.string.show_dev_already,
-                        Toast.LENGTH_LONG);
-                mDevHitToast.show();
-            }
         } else if (preference.getKey().equals(KEY_DEVICE_FEEDBACK)) {
             sendFeedback();
         }
@@ -272,7 +224,6 @@
         return super.onPreferenceTreeClick(preference);
     }
 
-
     private void removePreferenceIfPropertyMissing(PreferenceGroup preferenceGroup,
             String preference, String property ) {
         if (SystemProperties.get(property).equals("")) {
diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java
index 5f90353..eb79c25 100644
--- a/src/com/android/settings/SecuritySettings.java
+++ b/src/com/android/settings/SecuritySettings.java
@@ -20,7 +20,6 @@
 import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.Dialog;
-import android.app.DialogFragment;
 import android.app.FragmentManager;
 import android.app.admin.DevicePolicyManager;
 import android.content.ComponentName;
@@ -35,7 +34,6 @@
 import android.os.PersistableBundle;
 import android.os.UserHandle;
 import android.os.UserManager;
-import android.os.storage.StorageManager;
 import android.provider.SearchIndexableResource;
 import android.provider.Settings;
 import android.security.KeyStore;
@@ -52,11 +50,14 @@
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 import android.util.Log;
+
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.internal.widget.LockPatternUtils;
 import com.android.settings.TrustAgentUtils.TrustAgentComponentInfo;
 import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
+import com.android.settings.dashboard.DashboardFeatureProvider;
 import com.android.settings.fingerprint.FingerprintSettings;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.search.Index;
 import com.android.settings.search.Indexable;
@@ -64,6 +65,9 @@
 import com.android.settingslib.RestrictedLockUtils;
 import com.android.settingslib.RestrictedPreference;
 import com.android.settingslib.RestrictedSwitchPreference;
+import com.android.settingslib.drawer.CategoryKey;
+import com.android.settingslib.drawer.DashboardCategory;
+import com.android.settingslib.drawer.Tile;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -79,6 +83,7 @@
         GearPreference.OnGearClickListener {
 
     private static final String TAG = "SecuritySettings";
+
     private static final String TRUST_AGENT_CLICK_INTENT = "trust_agent_click_intent";
     private static final Intent TRUST_AGENT_INTENT =
             new Intent(TrustAgentService.SERVICE_INTERFACE);
@@ -125,6 +130,7 @@
 
     private static final int MY_USER_ID = UserHandle.myUserId();
 
+    private DashboardFeatureProvider mDashboardFeatureProvider;
     private DevicePolicyManager mDPM;
     private SubscriptionManager mSubscriptionManager;
     private UserManager mUm;
@@ -162,17 +168,22 @@
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
-        mSubscriptionManager = SubscriptionManager.from(getActivity());
+        final Activity activity = getActivity();
 
-        mLockPatternUtils = new LockPatternUtils(getActivity());
+        mSubscriptionManager = SubscriptionManager.from(activity);
 
-        mManagedPasswordProvider = ManagedLockPasswordProvider.get(getActivity(), MY_USER_ID);
+        mLockPatternUtils = new LockPatternUtils(activity);
+
+        mManagedPasswordProvider = ManagedLockPasswordProvider.get(activity, MY_USER_ID);
 
         mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
 
-        mUm = UserManager.get(getActivity());
+        mUm = UserManager.get(activity);
 
-        mChooseLockSettingsHelper = new ChooseLockSettingsHelper(getActivity());
+        mChooseLockSettingsHelper = new ChooseLockSettingsHelper(activity);
+
+        mDashboardFeatureProvider = FeatureFactory.getFactory(activity)
+                .getDashboardFeatureProvider(activity);
 
         if (savedInstanceState != null
                 && savedInstanceState.containsKey(TRUST_AGENT_CLICK_INTENT)) {
@@ -399,6 +410,13 @@
         Index.getInstance(getActivity())
                 .updateFromClassNameResource(SecuritySettings.class.getName(), true, true);
 
+        final List<Preference> tilePrefs = getDynamicTilesForSecurity();
+        if (tilePrefs != null && !tilePrefs.isEmpty()) {
+            for (Preference preference : tilePrefs) {
+                root.addPreference(preference);
+            }
+        }
+
         for (int i = 0; i < SWITCH_PREFERENCE_KEYS.length; i++) {
             final Preference pref = findPreference(SWITCH_PREFERENCE_KEYS[i]);
             if (pref != null) pref.setOnPreferenceChangeListener(this);
@@ -745,6 +763,31 @@
                 SET_OR_CHANGE_LOCK_METHOD_REQUEST_PROFILE, extras);
     }
 
+    private List<Preference> getDynamicTilesForSecurity() {
+        if (!mDashboardFeatureProvider.isEnabled()) {
+            return null;
+        }
+        final DashboardCategory category =
+                mDashboardFeatureProvider.getTilesForCategory(CategoryKey.CATEGORY_SECURITY);
+        if (category == null) {
+            Log.d(TAG, "NO dashboard tiles for " + TAG);
+            return null;
+        }
+        final List<Tile> tiles = category.tiles;
+        if (tiles == null) {
+            Log.d(TAG, "tile list is empty, skipping category " + category.title);
+            return null;
+        }
+        final List<Preference> preferences = new ArrayList<>();
+        for (Tile tile : tiles) {
+            final Preference pref = new Preference(getPrefContext());
+            mDashboardFeatureProvider
+                    .bindPreferenceToTile(getActivity(), pref, tile, null /* key */);
+            preferences.add(pref);
+        }
+        return preferences;
+    }
+
     @Override
     public boolean onPreferenceChange(Preference preference, Object value) {
         boolean result = true;
@@ -1053,7 +1096,6 @@
             if (root != null) {
                 root.removeAll();
             }
-            root = null;
 
             final int resid = getResIdForLockUnlockSubScreen(getActivity(),
                     new LockPatternUtils(getContext()),
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index 91db7fa..451c7e3 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -166,7 +166,9 @@
     // Top level categories for new IA
     public static class NetworkDashboardActivity extends SettingsActivity {}
     public static class ConnectedDeviceDashboardActivity extends SettingsActivity {}
+    public static class AppAndNotificationDashboardActivity extends SettingsActivity {}
     public static class StorageDashboardActivity extends SettingsActivity {}
+    public static class UserAndAccountDashboardActivity extends SettingsActivity {}
     public static class SystemDashboardActivity extends SettingsActivity {}
     public static class SupportDashboardActivity extends SettingsActivity {}
 
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index 07f6ebf..eff2004 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -61,7 +61,9 @@
 import com.android.settings.accounts.AccountSyncSettings;
 import com.android.settings.accounts.ChooseAccountActivity;
 import com.android.settings.accounts.ManagedProfileSettings;
+import com.android.settings.accounts.UserAndAccountDashboardFragment;
 import com.android.settings.applications.AdvancedAppSettings;
+import com.android.settings.applications.AppAndNotificationDashboardFragment;
 import com.android.settings.applications.DrawOverlayDetails;
 import com.android.settings.applications.InstalledAppDetails;
 import com.android.settings.applications.ManageApplications;
@@ -272,22 +274,28 @@
             // New IA
             // Home page
             Settings.NetworkDashboardActivity.class.getName(),
+            Settings.ConnectedDeviceDashboardActivity.class.getName(),
+            Settings.AppAndNotificationDashboardActivity.class.getName(),
             "com.android.settings.Settings.BatteryDashboardAlias",
             "com.android.settings.Settings.DisplayDashboardAlias",
+            "com.android.settings.Settings.SoundDashboardAlias",
             "com.android.settings.Settings.SecurityDashboardAlias",
+            Settings.UserAndAccountDashboardActivity.class.getName(),
             Settings.SystemDashboardActivity.class.getName(),
             Settings.SupportDashboardActivity.class.getName(),
+            // Home page > Apps & Notifications
+            "com.android.settings.Settings.ManageApplicationsDashboardAlias",
+            "com.android.settings.Settings.PaymentSettingsDashboardAlias",
             // Home page > Network & Internet
             "com.android.settings.Settings.WifiDashboardAlias",
             "com.android.settings.Settings.DataUsageDashboardAlias",
-            // Home page > Connected devices
-            Settings.ConnectedDeviceDashboardActivity.class.getName(),
+            // Home page > Security
+            "com.android.settings.Settings.LocationDashboardAlias",
             // Home page > System
             "com.android.settings.Settings.LanguageAndInputDashboardAlias",
             "com.android.settings.Settings.DateTimeDashboardAlias",
             "com.android.settings.Settings.AccessibilityDashboardAlias",
             "com.android.settings.Settings.AboutDeviceDashboardAlias",
-
     };
 
     private static final String[] ENTRY_FRAGMENTS = {
@@ -392,6 +400,8 @@
             SystemDashboardFragment.class.getName(),
             NetworkDashboardFragment.class.getName(),
             ConnectedDeviceDashboardFragment.class.getName(),
+            AppAndNotificationDashboardFragment.class.getName(),
+            UserAndAccountDashboardFragment.class.getName(),
     };
 
 
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index f8520d8..6f4482c 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -47,7 +47,9 @@
 import android.hardware.fingerprint.FingerprintManager;
 import android.net.ConnectivityManager;
 import android.net.LinkProperties;
+import android.net.Network;
 import android.net.Uri;
+import android.net.wifi.WifiManager;
 import android.os.BatteryManager;
 import android.os.Bundle;
 import android.os.IBinder;
@@ -235,10 +237,15 @@
      * @return the formatted and newline-separated IP addresses, or null if none.
      */
     public static String getWifiIpAddresses(Context context) {
-        ConnectivityManager cm = (ConnectivityManager)
+        WifiManager wifiManager = context.getSystemService(WifiManager.class);
+        Network currentNetwork = wifiManager.getCurrentNetwork();
+        if (currentNetwork != null) {
+            ConnectivityManager cm = (ConnectivityManager)
                 context.getSystemService(Context.CONNECTIVITY_SERVICE);
-        LinkProperties prop = cm.getLinkProperties(ConnectivityManager.TYPE_WIFI);
-        return formatIpAddresses(prop);
+            LinkProperties prop = cm.getLinkProperties(currentNetwork);
+            return formatIpAddresses(prop);
+        }
+        return null;
     }
 
     /**
diff --git a/src/com/android/settings/accounts/UserAndAccountDashboardFragment.java b/src/com/android/settings/accounts/UserAndAccountDashboardFragment.java
new file mode 100644
index 0000000..34d6dc4
--- /dev/null
+++ b/src/com/android/settings/accounts/UserAndAccountDashboardFragment.java
@@ -0,0 +1,57 @@
+/*
+ * 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.accounts;
+
+import android.content.Context;
+
+import com.android.internal.logging.MetricsProto.MetricsEvent;
+import com.android.settings.R;
+import com.android.settings.core.PreferenceController;
+import com.android.settings.dashboard.DashboardFragment;
+import com.android.settingslib.drawer.CategoryKey;
+
+import java.util.List;
+
+public class UserAndAccountDashboardFragment extends DashboardFragment {
+
+    private static final String TAG = "UserAndAccountDashboard";
+
+    @Override
+    public int getMetricsCategory() {
+        return MetricsEvent.ACCOUNT;
+    }
+
+    @Override
+    protected String getCategoryKey() {
+        return CategoryKey.CATEGORY_ACCOUNT;
+    }
+
+    @Override
+    protected String getLogTag() {
+        return TAG;
+    }
+
+    @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.account_settings;
+    }
+
+    @Override
+    protected List<PreferenceController> getPreferenceControllers(Context context) {
+        return null;
+    }
+
+}
\ No newline at end of file
diff --git a/src/com/android/settings/applications/AdvancedAppSettings.java b/src/com/android/settings/applications/AdvancedAppSettings.java
index db9d8de..827b6e8 100644
--- a/src/com/android/settings/applications/AdvancedAppSettings.java
+++ b/src/com/android/settings/applications/AdvancedAppSettings.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015 The Android Open Source Project
+ * 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.
@@ -15,57 +15,52 @@
  */
 package com.android.settings.applications;
 
-import android.content.BroadcastReceiver;
 import android.content.Context;
-import android.content.Intent;
-import android.os.AsyncTask;
 import android.os.Bundle;
 import android.provider.SearchIndexableResource;
-import android.support.v7.preference.Preference;
+
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.R;
-import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.Utils;
-import com.android.settings.applications.PermissionsSummaryHelper.PermissionsResultCallback;
+import com.android.settings.core.PreferenceController;
+import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.search.Indexable;
+import com.android.settingslib.drawer.CategoryKey;
 
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
-public class AdvancedAppSettings extends SettingsPreferenceFragment implements
-        Indexable {
+public class AdvancedAppSettings extends DashboardFragment {
 
     static final String TAG = "AdvancedAppSettings";
 
-    private static final String KEY_APP_PERM = "manage_perms";
-    private static final String KEY_APP_DOMAIN_URLS = "domain_urls";
-    private static final String KEY_HIGH_POWER_APPS = "high_power_apps";
-    private static final String KEY_SYSTEM_ALERT_WINDOW = "system_alert_window";
-    private static final String KEY_WRITE_SETTINGS_APPS = "write_settings_apps";
-
-    private Preference mAppPermsPreference;
-    private Preference mAppDomainURLsPreference;
-    private Preference mHighPowerPreference;
-    private Preference mSystemAlertWindowPreference;
-    private Preference mWriteSettingsPreference;
-
-    private BroadcastReceiver mPermissionReceiver;
-
     @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
-        addPreferencesFromResource(R.xml.advanced_apps);
+    }
 
-        Preference permissions = getPreferenceScreen().findPreference(KEY_APP_PERM);
-        permissions.setIntent(new Intent(Intent.ACTION_MANAGE_PERMISSIONS));
+    @Override
+    protected String getCategoryKey() {
+        return CategoryKey.CATEGORY_APPS_DEFAULT;
+    }
 
-        mAppPermsPreference = findPreference(KEY_APP_PERM);
-        mAppDomainURLsPreference = findPreference(KEY_APP_DOMAIN_URLS);
-        mHighPowerPreference = findPreference(KEY_HIGH_POWER_APPS);
-        mSystemAlertWindowPreference = findPreference(KEY_SYSTEM_ALERT_WINDOW);
-        mWriteSettingsPreference = findPreference(KEY_WRITE_SETTINGS_APPS);
+    @Override
+    protected String getLogTag() {
+        return TAG;
+    }
+
+    @Override
+    protected int getPreferenceScreenResId() {
+        return mDashboardFeatureProvider.isEnabled()
+                ? R.xml.app_default_settings
+                : R.xml.advanced_apps;
+    }
+
+    @Override
+    protected List<PreferenceController> getPreferenceControllers(Context context) {
+        return null;
     }
 
     @Override
@@ -73,32 +68,16 @@
         return MetricsEvent.APPLICATIONS_ADVANCED;
     }
 
-    private final PermissionsResultCallback mPermissionCallback = new PermissionsResultCallback() {
-        @Override
-        public void onAppWithPermissionsCountsResult(int standardGrantedPermissionAppCount,
-                int standardUsedPermissionAppCount) {
-            if (getActivity() == null) {
-                return;
-            }
-            mPermissionReceiver = null;
-            if (standardUsedPermissionAppCount != 0) {
-                mAppPermsPreference.setSummary(getContext().getString(
-                        R.string.app_permissions_summary,
-                        standardGrantedPermissionAppCount,
-                        standardUsedPermissionAppCount));
-            } else {
-                mAppPermsPreference.setSummary(null);
-            }
-        }
-    };
-
     public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
             new BaseSearchIndexProvider() {
                 @Override
                 public List<SearchIndexableResource> getXmlResourcesToIndex(
                         Context context, boolean enabled) {
-                    SearchIndexableResource sir = new SearchIndexableResource(context);
-                    sir.xmlResId = R.xml.advanced_apps;
+                    final SearchIndexableResource sir = new SearchIndexableResource(context);
+                    sir.xmlResId = FeatureFactory.getFactory(context)
+                            .getDashboardFeatureProvider(context).isEnabled()
+                            ? R.xml.app_default_settings
+                            : R.xml.advanced_apps;
                     return Arrays.asList(sir);
                 }
 
diff --git a/src/com/android/settings/applications/AppAndNotificationDashboardFragment.java b/src/com/android/settings/applications/AppAndNotificationDashboardFragment.java
new file mode 100644
index 0000000..8630541
--- /dev/null
+++ b/src/com/android/settings/applications/AppAndNotificationDashboardFragment.java
@@ -0,0 +1,56 @@
+/*
+ * 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.applications;
+
+import android.content.Context;
+
+import com.android.settings.R;
+import com.android.settings.core.PreferenceController;
+import com.android.settings.dashboard.DashboardFragment;
+import com.android.settingslib.drawer.CategoryKey;
+
+import java.util.List;
+
+public class AppAndNotificationDashboardFragment extends DashboardFragment {
+
+    private static final String TAG = "AppAndNotifDashboard";
+
+    @Override
+    public int getMetricsCategory() {
+        return APP_AND_NOTIFICATION_CATEGORY_FRAGMENT;
+    }
+
+    @Override
+    protected String getCategoryKey() {
+        return CategoryKey.CATEGORY_APPS;
+    }
+
+    @Override
+    protected String getLogTag() {
+        return TAG;
+    }
+
+    @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.app_and_notification;
+    }
+
+    @Override
+    protected List<PreferenceController> getPreferenceControllers(Context context) {
+        return null;
+    }
+}
diff --git a/src/com/android/settings/applications/ManageApplications.java b/src/com/android/settings/applications/ManageApplications.java
index f868c1b..23242c7 100644
--- a/src/com/android/settings/applications/ManageApplications.java
+++ b/src/com/android/settings/applications/ManageApplications.java
@@ -74,6 +74,7 @@
 import com.android.settings.notification.ConfigureNotificationSettings;
 import com.android.settings.notification.NotificationBackend;
 import com.android.settings.notification.NotificationBackend.AppRow;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.HelpUtils;
 import com.android.settingslib.applications.ApplicationsState;
 import com.android.settingslib.applications.ApplicationsState.AppEntry;
@@ -245,7 +246,8 @@
         }
         if (className.equals(AllApplicationsActivity.class.getName())) {
             mShowSystem = true;
-        } else if (className.equals(NotificationAppListActivity.class.getName())) {
+        } else if (className.equals(NotificationAppListActivity.class.getName())
+                || this instanceof NotificationApps) {
             mListType = LIST_TYPE_NOTIFICATION;
             mNotifBackend = new NotificationBackend();
         } else if (className.equals(StorageUseActivity.class.getName())) {
@@ -546,8 +548,13 @@
         if (mOptionsMenu == null) {
             return;
         }
-        mOptionsMenu.findItem(R.id.advanced).setVisible(
-                mListType == LIST_TYPE_MAIN || mListType == LIST_TYPE_NOTIFICATION);
+        final Context context = getActivity();
+        if (FeatureFactory.getFactory(context).getDashboardFeatureProvider(context).isEnabled()) {
+            mOptionsMenu.findItem(R.id.advanced).setVisible(false);
+        } else {
+            mOptionsMenu.findItem(R.id.advanced).setVisible(
+                    mListType == LIST_TYPE_MAIN || mListType == LIST_TYPE_NOTIFICATION);
+        }
 
         mOptionsMenu.findItem(R.id.sort_order_alpha).setVisible(mListType == LIST_TYPE_STORAGE
                 && mSortOrder != R.id.sort_order_alpha);
diff --git a/src/com/android/settings/bluetooth/BluetoothPairingController.java b/src/com/android/settings/bluetooth/BluetoothPairingController.java
new file mode 100644
index 0000000..ce82612
--- /dev/null
+++ b/src/com/android/settings/bluetooth/BluetoothPairingController.java
@@ -0,0 +1,415 @@
+/*
+ * 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.bluetooth;
+
+import android.bluetooth.BluetoothClass;
+import android.bluetooth.BluetoothDevice;
+import android.content.Context;
+import android.content.Intent;
+import android.text.Editable;
+import android.util.Log;
+import android.widget.CompoundButton;
+import android.widget.CompoundButton.OnCheckedChangeListener;
+import com.android.settings.R;
+import com.android.settings.bluetooth.BluetoothPairingDialogFragment.BluetoothPairingDialogListener;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+import com.android.settingslib.bluetooth.LocalBluetoothProfile;
+import java.util.Locale;
+
+/**
+ * A controller used by {@link BluetoothPairingDialog} to manage connection state while we try to
+ * pair with a bluetooth device. It includes methods that allow the
+ * {@link BluetoothPairingDialogFragment} to interrogate the current state as well.
+ */
+public class BluetoothPairingController implements OnCheckedChangeListener,
+        BluetoothPairingDialogListener {
+
+    private static final String TAG = "BTPairingController";
+
+    // Different types of dialogs we can map to
+    public static final int INVALID_DIALOG_TYPE = -1;
+    public static final int USER_ENTRY_DIALOG = 0;
+    public static final int CONFIRMATION_DIALOG = 1;
+    public static final int DISPLAY_PASSKEY_DIALOG = 2;
+
+    private static final int BLUETOOTH_PIN_MAX_LENGTH = 16;
+    private static final int BLUETOOTH_PASSKEY_MAX_LENGTH = 6;
+
+    // Bluetooth dependencies for the connection we are trying to establish
+    private LocalBluetoothManager mBluetoothManager;
+    private BluetoothDevice mDevice;
+    private int mType;
+    private String mUserInput;
+    private String mPasskeyFormatted;
+    private int mPasskey;
+    private String mDeviceName;
+    private LocalBluetoothProfile mPbapClientProfile;
+
+    /**
+     * Creates an instance of a BluetoothPairingController.
+     *
+     * @param intent - must contain {@link BluetoothDevice#EXTRA_PAIRING_VARIANT}, {@link
+     * BluetoothDevice#EXTRA_PAIRING_KEY}, and {@link BluetoothDevice#EXTRA_DEVICE}. Missing extra
+     * will lead to undefined behavior.
+     */
+    public BluetoothPairingController(Intent intent, Context context) {
+        mBluetoothManager = Utils.getLocalBtManager(context);
+        mDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
+
+        String message = "";
+        if (mBluetoothManager == null) {
+            throw new IllegalStateException("Could not obtain LocalBluetoothManager");
+        } else if (mDevice == null) {
+            throw new IllegalStateException("Could not find BluetoothDevice");
+        }
+
+        mType = intent.getIntExtra(BluetoothDevice.EXTRA_PAIRING_VARIANT, BluetoothDevice.ERROR);
+        mPasskey = intent.getIntExtra(BluetoothDevice.EXTRA_PAIRING_KEY, BluetoothDevice.ERROR);
+        mDeviceName = mBluetoothManager.getCachedDeviceManager().getName(mDevice);
+        mPbapClientProfile = mBluetoothManager.getProfileManager().getPbapClientProfile();
+        mPasskeyFormatted = formatKey(mPasskey);
+
+    }
+
+    @Override
+    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+        if (isChecked) {
+            mDevice.setPhonebookAccessPermission(BluetoothDevice.ACCESS_ALLOWED);
+        } else {
+            mDevice.setPhonebookAccessPermission(BluetoothDevice.ACCESS_REJECTED);
+        }
+    }
+
+    @Override
+    public void onDialogPositiveClick(BluetoothPairingDialogFragment dialog) {
+        if (getDialogType() == USER_ENTRY_DIALOG) {
+            onPair(mUserInput);
+        } else {
+            onPair(null);
+        }
+    }
+
+    @Override
+    public void onDialogNegativeClick(BluetoothPairingDialogFragment dialog) {
+        onCancel();
+    }
+
+    /**
+     * A method for querying which bluetooth pairing dialog fragment variant this device requires.
+     *
+     * @return - The dialog view variant needed for this device.
+     */
+    public int getDialogType() {
+        switch (mType) {
+            case BluetoothDevice.PAIRING_VARIANT_PIN:
+            case BluetoothDevice.PAIRING_VARIANT_PIN_16_DIGITS:
+            case BluetoothDevice.PAIRING_VARIANT_PASSKEY:
+                return USER_ENTRY_DIALOG;
+
+            case BluetoothDevice.PAIRING_VARIANT_PASSKEY_CONFIRMATION:
+            case BluetoothDevice.PAIRING_VARIANT_CONSENT:
+            case BluetoothDevice.PAIRING_VARIANT_OOB_CONSENT:
+                return CONFIRMATION_DIALOG;
+
+            case BluetoothDevice.PAIRING_VARIANT_DISPLAY_PASSKEY:
+            case BluetoothDevice.PAIRING_VARIANT_DISPLAY_PIN:
+                return DISPLAY_PASSKEY_DIALOG;
+
+            default:
+                return INVALID_DIALOG_TYPE;
+        }
+    }
+
+    /**
+     * @return - A string containing the name provided by the device.
+     */
+    public String getDeviceName() {
+        return mDeviceName;
+    }
+
+    /**
+     * A method for querying if the bluetooth device has a profile already set up on this device.
+     *
+     * @return - A boolean indicating if the device has previous knowledge of a profile for this
+     * device.
+     */
+    public boolean isProfileReady() {
+        return mPbapClientProfile != null && mPbapClientProfile.isProfileReady();
+    }
+
+    /**
+     * A method for querying if the bluetooth device has access to contacts on the device.
+     *
+     * @return - A boolean indicating if the bluetooth device has permission to access the device
+     * contacts
+     */
+    public boolean getContactSharingState() {
+        switch (mDevice.getPhonebookAccessPermission()) {
+            case BluetoothDevice.ACCESS_ALLOWED:
+                return true;
+            case BluetoothDevice.ACCESS_REJECTED:
+                return false;
+            default:
+                if (mDevice.getBluetoothClass().getDeviceClass()
+                        == BluetoothClass.Device.AUDIO_VIDEO_HANDSFREE) {
+                    return true;
+                }
+                return false;
+        }
+    }
+
+    /**
+     * A method for querying if the provided editable is a valid passkey/pin format for this device.
+     *
+     * @param s - The passkey/pin
+     * @return - A boolean indicating if the passkey/pin is of the correct format.
+     */
+    public boolean isPasskeyValid(Editable s) {
+        boolean requires16Digits = mType == BluetoothDevice.PAIRING_VARIANT_PIN_16_DIGITS;
+        return s.length() >= 16 && requires16Digits || s.length() > 0 && !requires16Digits;
+    }
+
+    /**
+     * A method for querying what message should be shown to the user as additional text in the
+     * dialog for this device. Returns -1 to indicate a device type that does not use this message.
+     *
+     * @return - The message ID to show the user.
+     */
+    public int getDeviceVariantMessageId() {
+        switch (mType) {
+            case BluetoothDevice.PAIRING_VARIANT_PIN_16_DIGITS:
+            case BluetoothDevice.PAIRING_VARIANT_PIN:
+                return R.string.bluetooth_enter_pin_other_device;
+
+            case BluetoothDevice.PAIRING_VARIANT_PASSKEY:
+                return R.string.bluetooth_enter_passkey_other_device;
+
+            default:
+                return INVALID_DIALOG_TYPE;
+        }
+    }
+
+    /**
+     * A method for querying what message hint should be shown to the user as additional text in the
+     * dialog for this device. Returns -1 to indicate a device type that does not use this message.
+     *
+     * @return - The message ID to show the user.
+     */
+    public int getDeviceVariantMessageHintId() {
+        switch (mType) {
+            case BluetoothDevice.PAIRING_VARIANT_PIN_16_DIGITS:
+                return R.string.bluetooth_pin_values_hint_16_digits;
+
+            case BluetoothDevice.PAIRING_VARIANT_PIN:
+            case BluetoothDevice.PAIRING_VARIANT_PASSKEY:
+                return R.string.bluetooth_pin_values_hint;
+
+            default:
+                return INVALID_DIALOG_TYPE;
+        }
+    }
+
+    /**
+     * A method for querying the maximum passkey/pin length for this device.
+     *
+     * @return - An int indicating the maximum length
+     */
+    public int getDeviceMaxPasskeyLength() {
+        switch (mType) {
+            case BluetoothDevice.PAIRING_VARIANT_PIN_16_DIGITS:
+            case BluetoothDevice.PAIRING_VARIANT_PIN:
+                return BLUETOOTH_PIN_MAX_LENGTH;
+
+            case BluetoothDevice.PAIRING_VARIANT_PASSKEY:
+                return BLUETOOTH_PASSKEY_MAX_LENGTH;
+
+            default:
+                return 0;
+        }
+
+    }
+
+    /**
+     * A method for querying if the device uses an alphanumeric passkey.
+     *
+     * @return - a boolean indicating if the passkey can be alphanumeric.
+     */
+    public boolean pairingCodeIsAlphanumeric() {
+        switch (mType) {
+            case BluetoothDevice.PAIRING_VARIANT_PASSKEY:
+                return false;
+
+            default:
+                return true;
+        }
+    }
+
+    /**
+     * A method used by the dialogfragment to notify the controller that the dialog has been
+     * displayed for bluetooth device types that just care about it being displayed.
+     */
+    protected void notifyDialogDisplayed() {
+        // send an OK to the framework, indicating that the dialog has been displayed.
+        if (mType == BluetoothDevice.PAIRING_VARIANT_DISPLAY_PASSKEY) {
+            mDevice.setPairingConfirmation(true);
+        } else if (mType == BluetoothDevice.PAIRING_VARIANT_DISPLAY_PIN) {
+            byte[] pinBytes = BluetoothDevice.convertPinToBytes(mPasskeyFormatted);
+            mDevice.setPin(pinBytes);
+        }
+    }
+
+    /**
+     * A method for querying if this bluetooth device type has a key it would like displayed
+     * to the user.
+     *
+     * @return - A boolean indicating if a key exists which should be displayed to the user.
+     */
+    public boolean isDisplayPairingKeyVariant() {
+        switch (mType) {
+            case BluetoothDevice.PAIRING_VARIANT_DISPLAY_PASSKEY:
+            case BluetoothDevice.PAIRING_VARIANT_DISPLAY_PIN:
+            case BluetoothDevice.PAIRING_VARIANT_OOB_CONSENT:
+                return true;
+            default:
+                return false;
+        }
+    }
+
+    /**
+     * A method for querying if this bluetooth device type has other content it would like displayed
+     * to the user.
+     *
+     * @return - A boolean indicating if content exists which should be displayed to the user.
+     */
+    public boolean hasPairingContent() {
+        switch (mType) {
+            case BluetoothDevice.PAIRING_VARIANT_DISPLAY_PASSKEY:
+            case BluetoothDevice.PAIRING_VARIANT_DISPLAY_PIN:
+            case BluetoothDevice.PAIRING_VARIANT_PASSKEY_CONFIRMATION:
+                return true;
+
+            default:
+                return false;
+        }
+    }
+
+    /**
+     * A method for obtaining any additional content this bluetooth device has for displaying to the
+     * user.
+     *
+     * @return - A string containing the additional content, null if none exists.
+     * @see {@link BluetoothPairingController#hasPairingContent()}
+     */
+    public String getPairingContent() {
+        if (hasPairingContent()) {
+            return mPasskeyFormatted;
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * A method that exists to allow the fragment to update the controller with input the user has
+     * provided in the fragment.
+     *
+     * @param input - A string containing the user input.
+     */
+    protected void updateUserInput(String input) {
+        mUserInput = input;
+    }
+
+    /**
+     * Returns the provided passkey in a format that this device expects. Only works for numeric
+     * passkeys/pins.
+     *
+     * @param passkey - An integer containing the passkey to format.
+     * @return - A string containing the formatted passkey/pin
+     */
+    private String formatKey(int passkey) {
+        switch (mType) {
+            case BluetoothDevice.PAIRING_VARIANT_PASSKEY_CONFIRMATION:
+            case BluetoothDevice.PAIRING_VARIANT_DISPLAY_PASSKEY:
+                return String.format(Locale.US, "%06d", passkey);
+
+            case BluetoothDevice.PAIRING_VARIANT_DISPLAY_PIN:
+                return String.format("%04d", passkey);
+
+            default:
+                return null;
+        }
+    }
+
+    /**
+     * handles the necessary communication with the bluetooth device to establish a successful
+     * pairing
+     *
+     * @param passkey - The passkey we will attempt to pair to the device with.
+     */
+    private void onPair(String passkey) {
+        Log.d(TAG, "Pairing dialog accepted");
+        switch (mType) {
+            case BluetoothDevice.PAIRING_VARIANT_PIN:
+            case BluetoothDevice.PAIRING_VARIANT_PIN_16_DIGITS:
+                byte[] pinBytes = BluetoothDevice.convertPinToBytes(passkey);
+                if (pinBytes == null) {
+                    return;
+                }
+                mDevice.setPin(pinBytes);
+                break;
+
+            case BluetoothDevice.PAIRING_VARIANT_PASSKEY:
+                int pass = Integer.parseInt(passkey);
+                mDevice.setPasskey(pass);
+                break;
+
+            case BluetoothDevice.PAIRING_VARIANT_PASSKEY_CONFIRMATION:
+            case BluetoothDevice.PAIRING_VARIANT_CONSENT:
+                mDevice.setPairingConfirmation(true);
+                break;
+
+            case BluetoothDevice.PAIRING_VARIANT_DISPLAY_PASSKEY:
+            case BluetoothDevice.PAIRING_VARIANT_DISPLAY_PIN:
+                // Do nothing.
+                break;
+
+            case BluetoothDevice.PAIRING_VARIANT_OOB_CONSENT:
+                mDevice.setRemoteOutOfBandData();
+                break;
+
+            default:
+                Log.e(TAG, "Incorrect pairing type received");
+        }
+    }
+
+    /**
+     * A method for properly ending communication with the bluetooth device. Will be called by the
+     * {@link BluetoothPairingDialogFragment} when it is dismissed.
+     */
+    public void onCancel() {
+        Log.d(TAG, "Pairing dialog canceled");
+        mDevice.cancelPairingUserInput();
+    }
+
+    /**
+     * A method for checking if this device is equal to another device.
+     *
+     * @param device - The other device being compared to this device.
+     * @return - A boolean indicating if the devices were equal.
+     */
+    public boolean deviceEquals(BluetoothDevice device) {
+        return mDevice == device;
+    }
+}
diff --git a/src/com/android/settings/bluetooth/BluetoothPairingDialog.java b/src/com/android/settings/bluetooth/BluetoothPairingDialog.java
old mode 100755
new mode 100644
index 27cd532..ed63fcb
--- a/src/com/android/settings/bluetooth/BluetoothPairingDialog.java
+++ b/src/com/android/settings/bluetooth/BluetoothPairingDialog.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008 The Android Open Source Project
+ * 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.
@@ -16,65 +16,28 @@
 
 package com.android.settings.bluetooth;
 
-import android.bluetooth.BluetoothClass;
+import android.annotation.Nullable;
+import android.app.Activity;
 import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothUuid;
 import android.content.BroadcastReceiver;
 import android.content.Context;
-import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.os.Bundle;
-import android.text.Editable;
-import android.text.InputFilter;
-import android.text.InputFilter.LengthFilter;
-import android.text.InputType;
-import android.text.SpannableString;
-import android.text.Spanned;
-import android.text.TextWatcher;
-import android.text.style.TtsSpan;
-import android.util.Log;
-import android.view.KeyEvent;
-import android.view.View;
-import android.widget.Button;
-import android.widget.CheckBox;
-import android.widget.CompoundButton;
-import android.widget.EditText;
-import android.widget.TextView;
-
-import com.android.internal.app.AlertActivity;
-import com.android.internal.app.AlertController;
-import com.android.settings.R;
-import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
-import com.android.settingslib.bluetooth.LocalBluetoothProfile;
-
-import java.util.Locale;
 
 /**
  * BluetoothPairingDialog asks the user to enter a PIN / Passkey / simple confirmation
  * for pairing with a remote Bluetooth device. It is an activity that appears as a dialog.
  */
-public final class BluetoothPairingDialog extends AlertActivity implements
-        CompoundButton.OnCheckedChangeListener, DialogInterface.OnClickListener, TextWatcher {
-    private static final String TAG = "BluetoothPairingDialog";
+public final class BluetoothPairingDialog extends Activity {
+    public static final String FRAGMENT_TAG = "bluetooth.pairing.fragment";
 
-    private static final int BLUETOOTH_PIN_MAX_LENGTH = 16;
-    private static final int BLUETOOTH_PASSKEY_MAX_LENGTH = 6;
-
-    private LocalBluetoothManager mBluetoothManager;
-    private CachedBluetoothDeviceManager mCachedDeviceManager;
-    private BluetoothDevice mDevice;
-    private int mType;
-    private String mPairingKey;
-    private EditText mPairingView;
-    private Button mOkButton;
-    private LocalBluetoothProfile mPbapClientProfile;
+    private BluetoothPairingController mBluetoothPairingController;
     private boolean mReceiverRegistered;
 
     /**
      * Dismiss the dialog if the bond state changes to bonded or none,
-     * or if pairing was canceled for {@link #mDevice}.
+     * or if pairing was canceled for {@link BluetoothPairingController#mDevice}.
      */
     private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
         @Override
@@ -82,14 +45,14 @@
             String action = intent.getAction();
             if (BluetoothDevice.ACTION_BOND_STATE_CHANGED.equals(action)) {
                 int bondState = intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE,
-                                                   BluetoothDevice.ERROR);
+                        BluetoothDevice.ERROR);
                 if (bondState == BluetoothDevice.BOND_BONDED ||
                         bondState == BluetoothDevice.BOND_NONE) {
                     dismiss();
                 }
             } else if (BluetoothDevice.ACTION_PAIRING_CANCEL.equals(action)) {
                 BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
-                if (device == null || device.equals(mDevice)) {
+                if (device == null || mBluetoothPairingController.deviceEquals(device)) {
                     dismiss();
                 }
             }
@@ -97,72 +60,29 @@
     };
 
     @Override
-    protected void onCreate(Bundle savedInstanceState) {
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        boolean fragmentFound = true;
 
+        BluetoothPairingDialogFragment bluetoothFragment =
+                (BluetoothPairingDialogFragment) getFragmentManager()
+                        .findFragmentByTag(FRAGMENT_TAG);
         Intent intent = getIntent();
-        if (!intent.getAction().equals(BluetoothDevice.ACTION_PAIRING_REQUEST)) {
-            Log.e(TAG, "Error: this activity may be started only with intent " +
-                  BluetoothDevice.ACTION_PAIRING_REQUEST);
-            finish();
-            return;
+        mBluetoothPairingController = new BluetoothPairingController(intent, this);
+
+        // check if the fragment exists already
+        if (bluetoothFragment == null) {
+            fragmentFound = false;
+            bluetoothFragment = new BluetoothPairingDialogFragment();
         }
 
-        mBluetoothManager = Utils.getLocalBtManager(this);
-        if (mBluetoothManager == null) {
-            Log.e(TAG, "Error: BluetoothAdapter not supported by system");
-            finish();
-            return;
+        // set the controller
+        bluetoothFragment.setPairingController(mBluetoothPairingController);
+
+        // pass the fragment to the manager when it is created from scratch
+        if (!fragmentFound) {
+            bluetoothFragment.show(getFragmentManager(), FRAGMENT_TAG);
         }
-        mCachedDeviceManager = mBluetoothManager.getCachedDeviceManager();
-        mPbapClientProfile = mBluetoothManager.getProfileManager().getPbapClientProfile();
-
-        mDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
-        mType = intent.getIntExtra(BluetoothDevice.EXTRA_PAIRING_VARIANT, BluetoothDevice.ERROR);
-
-        switch (mType) {
-            case BluetoothDevice.PAIRING_VARIANT_PIN:
-            case BluetoothDevice.PAIRING_VARIANT_PIN_16_DIGITS:
-            case BluetoothDevice.PAIRING_VARIANT_PASSKEY:
-                createUserEntryDialog();
-                break;
-
-            case BluetoothDevice.PAIRING_VARIANT_PASSKEY_CONFIRMATION:
-                int passkey =
-                    intent.getIntExtra(BluetoothDevice.EXTRA_PAIRING_KEY, BluetoothDevice.ERROR);
-                if (passkey == BluetoothDevice.ERROR) {
-                    Log.e(TAG, "Invalid Confirmation Passkey received, not showing any dialog");
-                    return;
-                }
-                mPairingKey = String.format(Locale.US, "%06d", passkey);
-                createConfirmationDialog();
-                break;
-
-            case BluetoothDevice.PAIRING_VARIANT_CONSENT:
-            case BluetoothDevice.PAIRING_VARIANT_OOB_CONSENT:
-                createConsentDialog();
-                break;
-
-            case BluetoothDevice.PAIRING_VARIANT_DISPLAY_PASSKEY:
-            case BluetoothDevice.PAIRING_VARIANT_DISPLAY_PIN:
-                int pairingKey =
-                    intent.getIntExtra(BluetoothDevice.EXTRA_PAIRING_KEY, BluetoothDevice.ERROR);
-                if (pairingKey == BluetoothDevice.ERROR) {
-                    Log.e(TAG, "Invalid Confirmation Passkey or PIN received, not showing any dialog");
-                    return;
-                }
-                if (mType == BluetoothDevice.PAIRING_VARIANT_DISPLAY_PASSKEY) {
-                    mPairingKey = String.format("%06d", pairingKey);
-                } else {
-                    mPairingKey = String.format("%04d", pairingKey);
-                }
-                createDisplayPasskeyOrPinDialog();
-                break;
-
-            default:
-                Log.e(TAG, "Incorrect pairing type received, not showing any dialog");
-        }
-
         /*
          * Leave this registered through pause/resume since we still want to
          * finish the activity in the background if pairing is canceled.
@@ -172,210 +92,6 @@
         mReceiverRegistered = true;
     }
 
-    private void createUserEntryDialog() {
-        final AlertController.AlertParams p = mAlertParams;
-        p.mTitle = getString(R.string.bluetooth_pairing_request,
-                mCachedDeviceManager.getName(mDevice));
-        p.mView = createPinEntryView();
-        p.mPositiveButtonText = getString(android.R.string.ok);
-        p.mPositiveButtonListener = this;
-        p.mNegativeButtonText = getString(android.R.string.cancel);
-        p.mNegativeButtonListener = this;
-        setupAlert();
-
-        mOkButton = mAlert.getButton(BUTTON_POSITIVE);
-        mOkButton.setEnabled(false);
-    }
-
-    private View createPinEntryView() {
-        View view = getLayoutInflater().inflate(R.layout.bluetooth_pin_entry, null);
-        TextView messageViewCaptionHint = (TextView) view.findViewById(R.id.pin_values_hint);
-        TextView messageView2 = (TextView) view.findViewById(R.id.message_below_pin);
-        CheckBox alphanumericPin = (CheckBox) view.findViewById(R.id.alphanumeric_pin);
-        CheckBox contactSharing = (CheckBox) view.findViewById(
-                R.id.phonebook_sharing_message_entry_pin);
-        contactSharing.setText(getString(R.string.bluetooth_pairing_shares_phonebook,
-                mCachedDeviceManager.getName(mDevice)));
-        if (mPbapClientProfile != null && mPbapClientProfile.isProfileReady()) {
-            contactSharing.setVisibility(View.GONE);
-        }
-        if (mDevice.getPhonebookAccessPermission() == BluetoothDevice.ACCESS_ALLOWED) {
-            contactSharing.setChecked(true);
-        } else if (mDevice.getPhonebookAccessPermission() == BluetoothDevice.ACCESS_REJECTED){
-            contactSharing.setChecked(false);
-        } else {
-            if (mDevice.getBluetoothClass().getDeviceClass()
-                    == BluetoothClass.Device.AUDIO_VIDEO_HANDSFREE) {
-                contactSharing.setChecked(true);
-                mDevice.setPhonebookAccessPermission(BluetoothDevice.ACCESS_ALLOWED);
-            } else {
-                contactSharing.setChecked(false);
-                mDevice.setPhonebookAccessPermission(BluetoothDevice.ACCESS_REJECTED);
-            }
-        }
-
-        contactSharing.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
-            @Override
-            public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
-                if (isChecked) {
-                    mDevice.setPhonebookAccessPermission(BluetoothDevice.ACCESS_ALLOWED);
-                } else {
-                    mDevice.setPhonebookAccessPermission(BluetoothDevice.ACCESS_REJECTED);
-                }
-            }
-        });
-
-        mPairingView = (EditText) view.findViewById(R.id.text);
-        mPairingView.addTextChangedListener(this);
-        alphanumericPin.setOnCheckedChangeListener(this);
-
-        int messageId;
-        int messageIdHint = R.string.bluetooth_pin_values_hint;
-        int maxLength;
-        switch (mType) {
-            case BluetoothDevice.PAIRING_VARIANT_PIN_16_DIGITS:
-                messageIdHint = R.string.bluetooth_pin_values_hint_16_digits;
-                // FALLTHROUGH
-            case BluetoothDevice.PAIRING_VARIANT_PIN:
-                messageId = R.string.bluetooth_enter_pin_other_device;
-                // Maximum of 16 characters in a PIN
-                maxLength = BLUETOOTH_PIN_MAX_LENGTH;
-                break;
-
-            case BluetoothDevice.PAIRING_VARIANT_PASSKEY:
-                messageId = R.string.bluetooth_enter_passkey_other_device;
-                // Maximum of 6 digits for passkey
-                maxLength = BLUETOOTH_PASSKEY_MAX_LENGTH;
-                alphanumericPin.setVisibility(View.GONE);
-                break;
-
-            default:
-                Log.e(TAG, "Incorrect pairing type for createPinEntryView: " + mType);
-                return null;
-        }
-
-        messageViewCaptionHint.setText(messageIdHint);
-        messageView2.setText(messageId);
-        mPairingView.setInputType(InputType.TYPE_CLASS_NUMBER);
-        mPairingView.setFilters(new InputFilter[] {
-                new LengthFilter(maxLength) });
-
-        return view;
-    }
-
-    private View createView() {
-        View view = getLayoutInflater().inflate(R.layout.bluetooth_pin_confirm, null);
-        TextView pairingViewCaption = (TextView) view.findViewById(R.id.pairing_caption);
-        TextView pairingViewContent = (TextView) view.findViewById(R.id.pairing_subhead);
-        TextView messagePairing = (TextView) view.findViewById(R.id.pairing_code_message);
-        CheckBox contactSharing = (CheckBox) view.findViewById(
-                R.id.phonebook_sharing_message_confirm_pin);
-        contactSharing.setText(getString(R.string.bluetooth_pairing_shares_phonebook,
-                mCachedDeviceManager.getName(mDevice)));
-        if (mPbapClientProfile != null && mPbapClientProfile.isProfileReady()) {
-            contactSharing.setVisibility(View.GONE);
-        }
-        if (mDevice.getPhonebookAccessPermission() == BluetoothDevice.ACCESS_ALLOWED) {
-            contactSharing.setChecked(true);
-        } else if (mDevice.getPhonebookAccessPermission() == BluetoothDevice.ACCESS_REJECTED){
-            contactSharing.setChecked(false);
-        } else {
-            if (mDevice.getBluetoothClass().getDeviceClass()
-                    == BluetoothClass.Device.AUDIO_VIDEO_HANDSFREE) {
-                contactSharing.setChecked(true);
-                mDevice.setPhonebookAccessPermission(BluetoothDevice.ACCESS_ALLOWED);
-            } else {
-                contactSharing.setChecked(false);
-                mDevice.setPhonebookAccessPermission(BluetoothDevice.ACCESS_REJECTED);
-            }
-        }
-
-        contactSharing.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
-            @Override
-            public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
-                if (isChecked) {
-                    mDevice.setPhonebookAccessPermission(BluetoothDevice.ACCESS_ALLOWED);
-                } else {
-                    mDevice.setPhonebookAccessPermission(BluetoothDevice.ACCESS_REJECTED);
-                }
-            }
-        });
-
-        SpannableString pairingContent = null;
-        switch (mType) {
-            case BluetoothDevice.PAIRING_VARIANT_DISPLAY_PASSKEY:
-            case BluetoothDevice.PAIRING_VARIANT_DISPLAY_PIN:
-                messagePairing.setVisibility(View.VISIBLE);
-            case BluetoothDevice.PAIRING_VARIANT_PASSKEY_CONFIRMATION: {
-                pairingContent = new SpannableString(mPairingKey);
-                pairingContent.setSpan(new TtsSpan.DigitsBuilder(mPairingKey).build(),
-                        0, mPairingKey.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
-                break;
-            }
-            case BluetoothDevice.PAIRING_VARIANT_CONSENT:
-                messagePairing.setVisibility(view.GONE);
-                break;
-            case BluetoothDevice.PAIRING_VARIANT_OOB_CONSENT:
-                messagePairing.setVisibility(View.VISIBLE);
-                break;
-
-            default:
-                Log.e(TAG, "Incorrect pairing type received, not creating view");
-                return null;
-        }
-
-        if (pairingContent != null) {
-            pairingViewCaption.setVisibility(View.VISIBLE);
-            pairingViewContent.setVisibility(View.VISIBLE);
-            pairingViewContent.setText(pairingContent);
-        }
-
-        return view;
-    }
-
-    private void createConfirmationDialog() {
-        final AlertController.AlertParams p = mAlertParams;
-        p.mTitle = getString(R.string.bluetooth_pairing_request,
-                mCachedDeviceManager.getName(mDevice));
-        p.mView = createView();
-        p.mPositiveButtonText = getString(R.string.bluetooth_pairing_accept);
-        p.mPositiveButtonListener = this;
-        p.mNegativeButtonText = getString(R.string.bluetooth_pairing_decline);
-        p.mNegativeButtonListener = this;
-        setupAlert();
-    }
-
-    private void createConsentDialog() {
-        final AlertController.AlertParams p = mAlertParams;
-        p.mTitle = getString(R.string.bluetooth_pairing_request,
-                mCachedDeviceManager.getName(mDevice));
-        p.mView = createView();
-        p.mPositiveButtonText = getString(R.string.bluetooth_pairing_accept);
-        p.mPositiveButtonListener = this;
-        p.mNegativeButtonText = getString(R.string.bluetooth_pairing_decline);
-        p.mNegativeButtonListener = this;
-        setupAlert();
-    }
-
-    private void createDisplayPasskeyOrPinDialog() {
-        final AlertController.AlertParams p = mAlertParams;
-        p.mTitle = getString(R.string.bluetooth_pairing_request,
-                mCachedDeviceManager.getName(mDevice));
-        p.mView = createView();
-        p.mNegativeButtonText = getString(android.R.string.cancel);
-        p.mNegativeButtonListener = this;
-        setupAlert();
-
-        // Since its only a notification, send an OK to the framework,
-        // indicating that the dialog has been displayed.
-        if (mType == BluetoothDevice.PAIRING_VARIANT_DISPLAY_PASSKEY) {
-            mDevice.setPairingConfirmation(true);
-        } else if (mType == BluetoothDevice.PAIRING_VARIANT_DISPLAY_PIN) {
-            byte[] pinBytes = BluetoothDevice.convertPinToBytes(mPairingKey);
-            mDevice.setPin(pinBytes);
-        }
-    }
-
     @Override
     protected void onDestroy() {
         super.onDestroy();
@@ -385,95 +101,9 @@
         }
     }
 
-    public void afterTextChanged(Editable s) {
-        if (mOkButton != null) {
-            if (mType == BluetoothDevice.PAIRING_VARIANT_PIN_16_DIGITS) {
-                mOkButton.setEnabled(s.length() >= 16);
-            } else {
-                mOkButton.setEnabled(s.length() > 0);
-            }
-        }
-    }
-
-    private void onPair(String value) {
-        Log.i(TAG, "Pairing dialog accepted");
-        switch (mType) {
-            case BluetoothDevice.PAIRING_VARIANT_PIN:
-            case BluetoothDevice.PAIRING_VARIANT_PIN_16_DIGITS:
-                byte[] pinBytes = BluetoothDevice.convertPinToBytes(value);
-                if (pinBytes == null) {
-                    return;
-                }
-                mDevice.setPin(pinBytes);
-                break;
-
-            case BluetoothDevice.PAIRING_VARIANT_PASSKEY:
-                int passkey = Integer.parseInt(value);
-                mDevice.setPasskey(passkey);
-                break;
-
-            case BluetoothDevice.PAIRING_VARIANT_PASSKEY_CONFIRMATION:
-            case BluetoothDevice.PAIRING_VARIANT_CONSENT:
-                mDevice.setPairingConfirmation(true);
-                break;
-
-            case BluetoothDevice.PAIRING_VARIANT_DISPLAY_PASSKEY:
-            case BluetoothDevice.PAIRING_VARIANT_DISPLAY_PIN:
-                // Do nothing.
-                break;
-
-            case BluetoothDevice.PAIRING_VARIANT_OOB_CONSENT:
-                mDevice.setRemoteOutOfBandData();
-                break;
-
-            default:
-                Log.e(TAG, "Incorrect pairing type received");
-        }
-    }
-
-    private void onCancel() {
-        Log.i(TAG, "Pairing dialog canceled");
-        mDevice.cancelPairingUserInput();
-    }
-
-    public boolean onKeyDown(int keyCode, KeyEvent event) {
-        if (keyCode == KeyEvent.KEYCODE_BACK) {
-            onCancel();
-        }
-        return super.onKeyDown(keyCode,event);
-    }
-
-    public void onClick(DialogInterface dialog, int which) {
-        switch (which) {
-            case BUTTON_POSITIVE:
-                if (mPairingView != null) {
-                    onPair(mPairingView.getText().toString());
-                } else {
-                    onPair(null);
-                }
-                break;
-
-            case BUTTON_NEGATIVE:
-            default:
-                onCancel();
-                break;
-        }
-    }
-
-    /* Not used */
-    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
-    }
-
-    /* Not used */
-    public void onTextChanged(CharSequence s, int start, int before, int count) {
-    }
-
-    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
-        // change input type for soft keyboard to numeric or alphanumeric
-        if (isChecked) {
-            mPairingView.setInputType(InputType.TYPE_CLASS_TEXT);
-        } else {
-            mPairingView.setInputType(InputType.TYPE_CLASS_NUMBER);
+    private void dismiss() {
+        if (!isFinishing()) {
+            finish();
         }
     }
 }
diff --git a/src/com/android/settings/bluetooth/BluetoothPairingDialogFragment.java b/src/com/android/settings/bluetooth/BluetoothPairingDialogFragment.java
new file mode 100644
index 0000000..abeb862
--- /dev/null
+++ b/src/com/android/settings/bluetooth/BluetoothPairingDialogFragment.java
@@ -0,0 +1,285 @@
+/*
+ * 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.bluetooth;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnClickListener;
+import android.os.Bundle;
+import android.text.Editable;
+import android.text.InputFilter;
+import android.text.InputFilter.LengthFilter;
+import android.text.InputType;
+import android.text.TextWatcher;
+import android.util.Log;
+import android.view.View;
+import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.EditText;
+import android.widget.TextView;
+import com.android.internal.logging.MetricsProto.MetricsEvent;
+import com.android.settings.R;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
+
+/**
+ * A dialogFragment used by {@link BluetoothPairingDialog} to create an appropriately styled dialog
+ * for the bluetooth device.
+ */
+public class BluetoothPairingDialogFragment extends InstrumentedDialogFragment implements
+        TextWatcher, OnClickListener {
+
+    private static final String TAG = "BTPairingDialogFragment";
+
+    private AlertDialog.Builder mBuilder;
+    private AlertDialog mDialog;
+    private BluetoothPairingController mPairingController;
+    private EditText mPairingView;
+    /**
+     * The interface we expect a listener to implement. Typically this should be done by
+     * the controller.
+     */
+    public interface BluetoothPairingDialogListener {
+
+        void onDialogNegativeClick(BluetoothPairingDialogFragment dialog);
+
+        void onDialogPositiveClick(BluetoothPairingDialogFragment dialog);
+    }
+
+    @Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        if (mPairingController == null) {
+            throw new IllegalStateException(
+                    "Must call setPairingController() before showing dialog");
+        }
+        mBuilder = new AlertDialog.Builder(getActivity());
+        mDialog = setupDialog();
+        mDialog.setCanceledOnTouchOutside(false);
+        return mDialog;
+    }
+
+    @Override
+    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+    }
+
+    @Override
+    public void onTextChanged(CharSequence s, int start, int before, int count) {
+    }
+
+    @Override
+    public void afterTextChanged(Editable s) {
+        // enable the positive button when we detect potentially valid input
+        Button positiveButton = mDialog.getButton(DialogInterface.BUTTON_POSITIVE);
+        if (positiveButton != null) {
+            positiveButton.setEnabled(mPairingController.isPasskeyValid(s));
+        }
+        // notify the controller about user input
+        mPairingController.updateUserInput(s.toString());
+    }
+
+    @Override
+    public void onClick(DialogInterface dialog, int which) {
+        if (which == DialogInterface.BUTTON_POSITIVE) {
+            mPairingController.onDialogPositiveClick(this);
+        } else if (which == DialogInterface.BUTTON_NEGATIVE) {
+            mPairingController.onDialogNegativeClick(this);
+        }
+    }
+
+    @Override
+    public int getMetricsCategory() {
+        return MetricsEvent.BLUETOOTH_DIALOG_FRAGMENT;
+    }
+
+    /**
+     * Used in testing to get a reference to the dialog.
+     * @return - The fragments current dialog
+     */
+    protected AlertDialog getmDialog() {
+        return mDialog;
+    }
+
+    /**
+     * Sets the controller that the fragment should use. this method MUST be called
+     * before you try to show the dialog or an error will be thrown. An implementation
+     * of a pairing controller can be found at {@link BluetoothPairingController}. A
+     * controller may not be substituted once it is assigned. Forcibly switching a
+     * controller for a new one will lead to undefined behavior.
+     */
+    public void setPairingController(BluetoothPairingController pairingController) {
+        if (mPairingController != null) {
+            throw new IllegalStateException("The controller can only be set once. "
+                    + "Forcibly replacing it will lead to undefined behavior");
+        }
+        mPairingController = pairingController;
+    }
+
+    /**
+     * Creates the appropriate type of dialog and returns it.
+     */
+    private AlertDialog setupDialog() {
+        AlertDialog dialog;
+        switch (mPairingController.getDialogType()) {
+            case BluetoothPairingController.USER_ENTRY_DIALOG:
+                dialog = createUserEntryDialog();
+                break;
+            case BluetoothPairingController.CONFIRMATION_DIALOG:
+                dialog = createConsentDialog();
+                break;
+            case BluetoothPairingController.DISPLAY_PASSKEY_DIALOG:
+                dialog = createDisplayPasskeyOrPinDialog();
+                break;
+            default:
+                dialog = null;
+                Log.e(TAG, "Incorrect pairing type received, not showing any dialog");
+        }
+        return dialog;
+    }
+
+    /**
+     * Returns a dialog with UI elements that allow a user to provide input.
+     */
+    private AlertDialog createUserEntryDialog() {
+        mBuilder.setTitle(getString(R.string.bluetooth_pairing_request,
+                mPairingController.getDeviceName()));
+        mBuilder.setView(createPinEntryView());
+        mBuilder.setPositiveButton(getString(android.R.string.ok), this);
+        mBuilder.setNegativeButton(getString(android.R.string.cancel), this);
+        AlertDialog dialog = mBuilder.create();
+        dialog.setOnShowListener(d -> mDialog.getButton(Dialog.BUTTON_POSITIVE).setEnabled(false));
+        return dialog;
+    }
+
+    /**
+     * Creates the custom view with UI elements for user input.
+     */
+    private View createPinEntryView() {
+        View view = getActivity().getLayoutInflater().inflate(R.layout.bluetooth_pin_entry, null);
+        TextView messageViewCaptionHint = (TextView) view.findViewById(R.id.pin_values_hint);
+        TextView messageView2 = (TextView) view.findViewById(R.id.message_below_pin);
+        CheckBox alphanumericPin = (CheckBox) view.findViewById(R.id.alphanumeric_pin);
+        CheckBox contactSharing = (CheckBox) view.findViewById(
+                R.id.phonebook_sharing_message_entry_pin);
+        contactSharing.setText(getString(R.string.bluetooth_pairing_shares_phonebook,
+                mPairingController.getDeviceName()));
+        EditText pairingView = (EditText) view.findViewById(R.id.text);
+
+        contactSharing.setVisibility(mPairingController.isProfileReady()
+                ? View.GONE : View.VISIBLE);
+        contactSharing.setOnCheckedChangeListener(mPairingController);
+        contactSharing.setChecked(mPairingController.getContactSharingState());
+
+        mPairingView = pairingView;
+
+        pairingView.setInputType(InputType.TYPE_CLASS_NUMBER);
+        pairingView.addTextChangedListener(this);
+        alphanumericPin.setOnCheckedChangeListener((buttonView, isChecked) -> {
+            // change input type for soft keyboard to numeric or alphanumeric
+            if (isChecked) {
+                mPairingView.setInputType(InputType.TYPE_CLASS_TEXT);
+            } else {
+                mPairingView.setInputType(InputType.TYPE_CLASS_NUMBER);
+            }
+        });
+
+        int messageId = mPairingController.getDeviceVariantMessageId();
+        int messageIdHint = mPairingController.getDeviceVariantMessageHintId();
+        int maxLength = mPairingController.getDeviceMaxPasskeyLength();
+        alphanumericPin.setVisibility(mPairingController.pairingCodeIsAlphanumeric()
+                ? View.VISIBLE : View.GONE);
+        if (messageId != BluetoothPairingController.INVALID_DIALOG_TYPE) {
+            messageView2.setText(messageId);
+        } else {
+            messageView2.setVisibility(View.GONE);
+        }
+        if (messageIdHint != BluetoothPairingController.INVALID_DIALOG_TYPE) {
+            messageViewCaptionHint.setText(messageIdHint);
+        } else {
+            messageViewCaptionHint.setVisibility(View.GONE);
+        }
+        pairingView.setFilters(new InputFilter[]{
+                new LengthFilter(maxLength)});
+
+        return view;
+    }
+
+    /**
+     * Creates a dialog with UI elements that allow the user to confirm a pairing request.
+     */
+    private AlertDialog createConfirmationDialog() {
+        mBuilder.setTitle(getString(R.string.bluetooth_pairing_request,
+                mPairingController.getDeviceName()));
+        mBuilder.setView(createView());
+        mBuilder.setPositiveButton(getString(R.string.bluetooth_pairing_accept), this);
+        mBuilder.setNegativeButton(getString(R.string.bluetooth_pairing_decline), this);
+        AlertDialog dialog = mBuilder.create();
+        return dialog;
+    }
+
+    /**
+     * Creates a dialog with UI elements that allow the user to consent to a pairing request.
+     */
+    private AlertDialog createConsentDialog() {
+        return createConfirmationDialog();
+    }
+
+    /**
+     * Creates a dialog that informs users of a pairing request and shows them the passkey/pin
+     * of the device.
+     */
+    private AlertDialog createDisplayPasskeyOrPinDialog() {
+        mBuilder.setTitle(getString(R.string.bluetooth_pairing_request,
+                mPairingController.getDeviceName()));
+        mBuilder.setView(createView());
+        mBuilder.setNegativeButton(getString(android.R.string.cancel), this);
+        AlertDialog dialog = mBuilder.create();
+
+        // Tell the controller the dialog has been created.
+        mPairingController.notifyDialogDisplayed();
+
+        return dialog;
+    }
+
+    /**
+     * Creates a custom view for dialogs which need to show users additional information but do
+     * not require user input.
+     */
+    private View createView() {
+        View view = getActivity().getLayoutInflater().inflate(R.layout.bluetooth_pin_confirm, null);
+        TextView pairingViewCaption = (TextView) view.findViewById(R.id.pairing_caption);
+        TextView pairingViewContent = (TextView) view.findViewById(R.id.pairing_subhead);
+        TextView messagePairing = (TextView) view.findViewById(R.id.pairing_code_message);
+        CheckBox contactSharing = (CheckBox) view.findViewById(
+                R.id.phonebook_sharing_message_confirm_pin);
+        contactSharing.setText(getString(R.string.bluetooth_pairing_shares_phonebook,
+                mPairingController.getDeviceName()));
+
+        contactSharing.setVisibility(
+                mPairingController.isProfileReady() ? View.GONE : View.VISIBLE);
+        contactSharing.setChecked(mPairingController.getContactSharingState());
+        contactSharing.setOnCheckedChangeListener(mPairingController);
+
+        messagePairing.setVisibility(mPairingController.isDisplayPairingKeyVariant()
+                ? View.VISIBLE : View.GONE);
+        if (mPairingController.hasPairingContent()) {
+            pairingViewCaption.setVisibility(View.VISIBLE);
+            pairingViewContent.setVisibility(View.VISIBLE);
+            pairingViewContent.setText(mPairingController.getPairingContent());
+        }
+        return view;
+    }
+
+}
diff --git a/src/com/android/settings/bluetooth/BluetoothSettings.java b/src/com/android/settings/bluetooth/BluetoothSettings.java
index 3dfcfc7..9b222fa 100644
--- a/src/com/android/settings/bluetooth/BluetoothSettings.java
+++ b/src/com/android/settings/bluetooth/BluetoothSettings.java
@@ -180,13 +180,13 @@
     }
 
     @Override
-    public void onResume() {
-        // resume BluetoothEnabler before calling super.onResume() so we don't get
+    public void onStart() {
+        // resume BluetoothEnabler before calling super.onStart() so we don't get
         // any onDeviceAdded() callbacks before setting up view in updateContent()
         if (mBluetoothEnabler != null) {
             mBluetoothEnabler.resume(getActivity());
         }
-        super.onResume();
+        super.onStart();
 
         mInitiateDiscoverable = true;
 
@@ -206,8 +206,8 @@
     }
 
     @Override
-    public void onPause() {
-        super.onPause();
+    public void onStop() {
+        super.onStop();
         if (mBluetoothEnabler != null) {
             mBluetoothEnabler.pause();
         }
diff --git a/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java b/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java
index e6fcbcb..c132163 100644
--- a/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java
+++ b/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java
@@ -98,8 +98,8 @@
     abstract void addPreferencesForActivity();
 
     @Override
-    public void onResume() {
-        super.onResume();
+    public void onStart() {
+        super.onStart();
         if (mLocalManager == null || isUiRestricted()) return;
 
         mLocalManager.setForegroundActivity(getActivity());
@@ -109,8 +109,8 @@
     }
 
     @Override
-    public void onPause() {
-        super.onPause();
+    public void onStop() {
+        super.onStop();
         if (mLocalManager == null || isUiRestricted()) {
             return;
         }
diff --git a/src/com/android/settings/bluetooth/DevicePickerFragment.java b/src/com/android/settings/bluetooth/DevicePickerFragment.java
index 3fbd7bd..066f5d2 100644
--- a/src/com/android/settings/bluetooth/DevicePickerFragment.java
+++ b/src/com/android/settings/bluetooth/DevicePickerFragment.java
@@ -47,7 +47,7 @@
     private boolean mNeedAuth;
     private String mLaunchPackage;
     private String mLaunchClass;
-    private boolean mStartScanOnResume;
+    private boolean mStartScanOnStart;
 
     @Override
     void addPreferencesForActivity() {
@@ -94,18 +94,18 @@
         super.onCreate(savedInstanceState);
         getActivity().setTitle(getString(R.string.device_picker));
         UserManager um = (UserManager) getSystemService(Context.USER_SERVICE);
-        mStartScanOnResume = !um.hasUserRestriction(DISALLOW_CONFIG_BLUETOOTH)
+        mStartScanOnStart = !um.hasUserRestriction(DISALLOW_CONFIG_BLUETOOTH)
                 && (savedInstanceState == null);  // don't start scan after rotation
         setHasOptionsMenu(true);
     }
 
     @Override
-    public void onResume() {
-        super.onResume();
+    public void onStart() {
+        super.onStart();
         addCachedDevices();
-        if (mStartScanOnResume) {
+        if (mStartScanOnStart) {
             mLocalAdapter.startScanning(true);
-            mStartScanOnResume = false;
+            mStartScanOnStart = false;
         }
     }
 
diff --git a/src/com/android/settings/core/InstrumentedFragment.java b/src/com/android/settings/core/InstrumentedFragment.java
index 7297953..ca683e3 100644
--- a/src/com/android/settings/core/InstrumentedFragment.java
+++ b/src/com/android/settings/core/InstrumentedFragment.java
@@ -39,6 +39,7 @@
     protected final int STORAGE_CATEGORY_FRAGMENT = PLACEHOLDER_METRIC + 2;
     protected final int NETWORK_CATEGORY_FRAGMENT = PLACEHOLDER_METRIC + 3;
     protected final int CONNECTED_DEVICE_CATEGORY_FRAGMENT = PLACEHOLDER_METRIC + 4;
+    protected final int APP_AND_NOTIFICATION_CATEGORY_FRAGMENT = PLACEHOLDER_METRIC + 5;
 
     public InstrumentedFragment() {
         // Mixin that logs visibility change for activity.
diff --git a/src/com/android/settings/core/PreferenceController.java b/src/com/android/settings/core/PreferenceController.java
index 6eac2bd..50e9b2c 100644
--- a/src/com/android/settings/core/PreferenceController.java
+++ b/src/com/android/settings/core/PreferenceController.java
@@ -50,7 +50,8 @@
     /**
      * Updates the current status of preference (summary, switch state, etc)
      */
-    public void updateState(PreferenceScreen screen) {
+    public void updateState(Preference preference) {
+
     }
 
     /**
@@ -65,6 +66,11 @@
     }
 
     /**
+     * Returns true if preference is available (should be displayed)
+     */
+    public abstract boolean isAvailable();
+
+    /**
      * Handles preference tree click
      *
      * @param preference the preference being clicked
@@ -73,6 +79,11 @@
     public abstract boolean handlePreferenceTreeClick(Preference preference);
 
     /**
+     * Returns the key for this preference.
+     */
+    public abstract String getPreferenceKey();
+
+    /**
      * Removes preference from screen.
      */
     protected final void removePreference(PreferenceScreen screen, String key) {
@@ -81,15 +92,4 @@
             screen.removePreference(pref);
         }
     }
-
-    /**
-     * Returns true if preference is available (should be displayed)
-     */
-    protected abstract boolean isAvailable();
-
-    /**
-     * Returns the key for this preference.
-     */
-    protected abstract String getPreferenceKey();
-
 }
diff --git a/src/com/android/settings/core/lifecycle/ObservablePreferenceFragment.java b/src/com/android/settings/core/lifecycle/ObservablePreferenceFragment.java
index e9822af..dbce755 100644
--- a/src/com/android/settings/core/lifecycle/ObservablePreferenceFragment.java
+++ b/src/com/android/settings/core/lifecycle/ObservablePreferenceFragment.java
@@ -42,8 +42,8 @@
     @CallSuper
     @Override
     public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
         mLifecycle.onCreate(savedInstanceState);
+        super.onCreate(savedInstanceState);
     }
 
     @CallSuper
diff --git a/src/com/android/settings/dashboard/DashboardAdapter.java b/src/com/android/settings/dashboard/DashboardAdapter.java
index f501dfa..baea164 100644
--- a/src/com/android/settings/dashboard/DashboardAdapter.java
+++ b/src/com/android/settings/dashboard/DashboardAdapter.java
@@ -20,6 +20,7 @@
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.Icon;
 import android.os.Bundle;
+import android.support.v7.util.DiffUtil;
 import android.support.v7.widget.PopupMenu;
 import android.support.v7.widget.RecyclerView;
 import android.text.TextUtils;
@@ -34,7 +35,6 @@
 import android.widget.TextView;
 
 import com.android.internal.logging.MetricsProto.MetricsEvent;
-import com.android.internal.util.ArrayUtils;
 import com.android.settings.R;
 import com.android.settings.SettingsActivity;
 import com.android.settings.core.instrumentation.MetricsFeatureProvider;
@@ -48,82 +48,91 @@
 import java.util.List;
 
 public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.DashboardItemHolder>
-        implements View.OnClickListener, SummaryLoader.SummaryConsumer {
+        implements SummaryLoader.SummaryConsumer {
     public static final String TAG = "DashboardAdapter";
     private static final String STATE_SUGGESTION_LIST = "suggestion_list";
     private static final String STATE_CATEGORY_LIST = "category_list";
-    private static final String STATE_IS_SHOWING_ALL = "is_showing_all";
     private static final String STATE_SUGGESTION_MODE = "suggestion_mode";
-    private static final int NS_SPACER = 0;
-    private static final int NS_SUGGESTION = 1000;
-    private static final int NS_ITEMS = 2000;
-    private static final int NS_CONDITION = 3000;
 
-    private static int SUGGESTION_MODE_DEFAULT = 0;
-    private static int SUGGESTION_MODE_COLLAPSED = 1;
-    private static int SUGGESTION_MODE_EXPANDED = 2;
-
-    private static final int DEFAULT_SUGGESTION_COUNT = 2;
-
-    private final List<Object> mItems = new ArrayList<>();
-    private final List<Integer> mTypes = new ArrayList<>();
-    private final List<Integer> mIds = new ArrayList<>();
     private final IconCache mCache;
-
     private final Context mContext;
     private final MetricsFeatureProvider mMetricsFeatureProvider;
-
-    private List<DashboardCategory> mCategories;
-    private List<Condition> mConditions;
-    private List<Tile> mSuggestions;
-
-    private boolean mIsShowingAll;
-    // Used for counting items;
-    private int mId;
-
-    private int mSuggestionMode = SUGGESTION_MODE_DEFAULT;
-
-    private Condition mExpandedCondition = null;
+    private DashboardData mDashboardData;
     private SuggestionParser mSuggestionParser;
 
+    private View.OnClickListener mTileClickListener = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+            //TODO: get rid of setTag/getTag
+            ((SettingsActivity) mContext).openTile((Tile) v.getTag());
+        }
+    };
+
+    private View.OnClickListener mConditionClickListener = new View.OnClickListener() {
+
+        @Override
+        public void onClick(View v) {
+            Condition expandedCondition = mDashboardData.getExpandedCondition();
+
+            //TODO: get rid of setTag/getTag
+            if (v.getTag() == expandedCondition) {
+                mMetricsFeatureProvider.action(mContext,
+                        MetricsEvent.ACTION_SETTINGS_CONDITION_CLICK,
+                        expandedCondition.getMetricsConstant());
+                expandedCondition.onPrimaryClick();
+            } else {
+                expandedCondition = (Condition) v.getTag();
+                mMetricsFeatureProvider.action(mContext,
+                        MetricsEvent.ACTION_SETTINGS_CONDITION_EXPAND,
+                        expandedCondition.getMetricsConstant());
+
+                updateExpandedCondition(expandedCondition);
+            }
+        }
+    };
+
     public DashboardAdapter(Context context, SuggestionParser parser,
             MetricsFeatureProvider metricsFeatureProvider, Bundle savedInstanceState,
             List<Condition> conditions) {
+        List<Tile> suggestions = null;
+        List<DashboardCategory> categories = null;
+        int suggestionMode = DashboardData.SUGGESTION_MODE_DEFAULT;
+
         mContext = context;
         mMetricsFeatureProvider = metricsFeatureProvider;
         mCache = new IconCache(context);
         mSuggestionParser = parser;
-        mConditions = conditions;
 
         setHasStableIds(true);
 
-        boolean showAll = true;
         if (savedInstanceState != null) {
-            mSuggestions = savedInstanceState.getParcelableArrayList(STATE_SUGGESTION_LIST);
-            mCategories = savedInstanceState.getParcelableArrayList(STATE_CATEGORY_LIST);
-            showAll = savedInstanceState.getBoolean(STATE_IS_SHOWING_ALL, true);
-            mSuggestionMode = savedInstanceState.getInt(
-                    STATE_SUGGESTION_MODE, SUGGESTION_MODE_DEFAULT);
+            suggestions = savedInstanceState.getParcelableArrayList(STATE_SUGGESTION_LIST);
+            categories = savedInstanceState.getParcelableArrayList(STATE_CATEGORY_LIST);
+            suggestionMode = savedInstanceState.getInt(
+                    STATE_SUGGESTION_MODE, DashboardData.SUGGESTION_MODE_DEFAULT);
         }
-        setShowingAll(showAll);
+
+        mDashboardData = new DashboardData.Builder()
+                .setConditions(conditions)
+                .setSuggestions(suggestions)
+                .setCategories(categories)
+                .setSuggestionMode(suggestionMode)
+                .build();
     }
 
     public List<Tile> getSuggestions() {
-        return mSuggestions;
+        return mDashboardData.getSuggestions();
     }
 
     public void setCategoriesAndSuggestions(List<DashboardCategory> categories,
             List<Tile> suggestions) {
-        mSuggestions = suggestions;
-        mCategories = categories;
-
         // TODO: Better place for tinting?
         TypedValue tintColor = new TypedValue();
         mContext.getTheme().resolveAttribute(com.android.internal.R.attr.colorAccent,
                 tintColor, true);
         for (int i = 0; i < categories.size(); i++) {
             for (int j = 0; j < categories.get(i).tiles.size(); j++) {
-                Tile tile = categories.get(i).tiles.get(j);
+                final Tile tile = categories.get(i).tiles.get(j);
 
                 if (!mContext.getPackageName().equals(
                         tile.intent.getComponent().getPackageName())) {
@@ -133,85 +142,49 @@
                 }
             }
         }
-        recountItems();
+
+        final DashboardData prevData = mDashboardData;
+        mDashboardData = new DashboardData.Builder(prevData)
+                .setSuggestions(suggestions)
+                .setCategories(categories)
+                .build();
+        notifyDashboardDataChanged(prevData);
     }
 
     public void setConditions(List<Condition> conditions) {
-        mConditions = conditions;
-        recountItems();
+        final DashboardData prevData = mDashboardData;
+        mDashboardData = new DashboardData.Builder(prevData)
+                .setConditions(conditions)
+                .build();
+        notifyDashboardDataChanged(prevData);
     }
 
     @Override
     public void notifySummaryChanged(Tile tile) {
-        notifyDataSetChanged();
-    }
+        final int position = mDashboardData.getPositionByTile(tile);
+        if (position != DashboardData.POSITION_NOT_FOUND) {
+            final Tile targetTile = (Tile) mDashboardData.getItemEntityByPosition(position);
+            if (!TextUtils.equals(tile.summary, targetTile.summary)) {
 
-    public void setShowingAll(boolean showingAll) {
-        mIsShowingAll = showingAll;
-        recountItems();
-    }
-
-    private void recountItems() {
-        reset();
-        boolean hasConditions = false;
-        for (int i = 0; mConditions != null && i < mConditions.size(); i++) {
-            boolean shouldShow = mConditions.get(i).shouldShow();
-            hasConditions |= shouldShow;
-            countItem(mConditions.get(i), R.layout.condition_card, shouldShow, NS_CONDITION);
-        }
-        boolean hasSuggestions = mSuggestions != null && mSuggestions.size() != 0;
-        countItem(null, R.layout.dashboard_spacer, hasConditions && hasSuggestions, NS_SPACER);
-        countItem(null, R.layout.suggestion_header, hasSuggestions, NS_SPACER);
-        resetCount();
-        if (mSuggestions != null) {
-            int maxSuggestions = getDisplayableSuggestionCount();
-            for (int i = 0; i < mSuggestions.size(); i++) {
-                countItem(mSuggestions.get(i), R.layout.suggestion_tile, i < maxSuggestions,
-                        NS_SUGGESTION);
+                // Since usually tile in parameter and tile in mCategories are same instance,
+                // which is hard to be detected by DiffUtil, so we notifyItemChanged directly.
+                notifyItemChanged(position);
             }
         }
-        resetCount();
-        for (int i = 0; mCategories != null && i < mCategories.size(); i++) {
-            DashboardCategory category = mCategories.get(i);
-            countItem(category, R.layout.dashboard_category, mIsShowingAll
-                    && !TextUtils.isEmpty(category.title), NS_ITEMS);
-            for (int j = 0; j < category.tiles.size(); j++) {
-                Tile tile = category.tiles.get(j);
-                countItem(tile, R.layout.dashboard_tile, mIsShowingAll
-                        || ArrayUtils.contains(DashboardSummary.INITIAL_ITEMS,
-                        tile.intent.getComponent().getClassName()), NS_ITEMS);
-            }
+    }
+
+    // TODO: move this method to SuggestionParser or some other util class
+    public void disableSuggestion(Tile suggestion) {
+        if (mSuggestionParser == null) {
+            return;
         }
-        notifyDataSetChanged();
-    }
-
-    private void resetCount() {
-        mId = 0;
-    }
-
-    private void reset() {
-        mItems.clear();
-        mTypes.clear();
-        mIds.clear();
-        mId = 0;
-    }
-
-    private void countItem(Object object, int type, boolean add, int nameSpace) {
-        if (add) {
-            mItems.add(object);
-            mTypes.add(type);
-            // TODO: Counting namespaces for handling of suggestions/conds appearing/disappearing.
-            mIds.add(mId + nameSpace);
+        if (mSuggestionParser.dismissSuggestion(suggestion)) {
+            mContext.getPackageManager().setComponentEnabledSetting(
+                    suggestion.intent.getComponent(),
+                    PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
+                    PackageManager.DONT_KILL_APP);
+            mSuggestionParser.markCategoryDone(suggestion.category);
         }
-        mId++;
-    }
-
-    private int getDisplayableSuggestionCount() {
-        final int suggestionSize = mSuggestions.size();
-        return mSuggestionMode == SUGGESTION_MODE_DEFAULT
-                ? Math.min(DEFAULT_SUGGESTION_COUNT, suggestionSize)
-                : mSuggestionMode == SUGGESTION_MODE_EXPANDED
-                        ? suggestionSize : 0;
     }
 
     @Override
@@ -222,21 +195,24 @@
 
     @Override
     public void onBindViewHolder(DashboardItemHolder holder, int position) {
-        switch (mTypes.get(position)) {
+        final int type = mDashboardData.getItemTypeByPosition(position);
+        switch (type) {
             case R.layout.dashboard_category:
-                onBindCategory(holder, (DashboardCategory) mItems.get(position));
+                onBindCategory(holder,
+                        (DashboardCategory) mDashboardData.getItemEntityByPosition(position));
                 break;
             case R.layout.dashboard_tile:
-                final Tile tile = (Tile) mItems.get(position);
+                final Tile tile = (Tile) mDashboardData.getItemEntityByPosition(position);
                 onBindTile(holder, tile);
                 holder.itemView.setTag(tile);
-                holder.itemView.setOnClickListener(this);
+                holder.itemView.setOnClickListener(mTileClickListener);
                 break;
             case R.layout.suggestion_header:
-                onBindSuggestionHeader(holder);
+                onBindSuggestionHeader(holder, (DashboardData.SuggestionHeaderData)
+                        mDashboardData.getItemEntityByPosition(position));
                 break;
             case R.layout.suggestion_tile:
-                final Tile suggestion = (Tile) mItems.get(position);
+                final Tile suggestion = (Tile) mDashboardData.getItemEntityByPosition(position);
                 onBindTile(holder, suggestion);
                 holder.itemView.setOnClickListener(new View.OnClickListener() {
                     @Override
@@ -255,12 +231,12 @@
                             }
                         });
                 break;
-            case R.layout.see_all:
-                onBindSeeAll(holder);
-                break;
             case R.layout.condition_card:
-                ConditionAdapterUtils.bindViews((Condition) mItems.get(position), holder,
-                        mItems.get(position) == mExpandedCondition, this,
+                final boolean isExpanded = mDashboardData.getItemEntityByPosition(position)
+                        == mDashboardData.getExpandedCondition();
+                ConditionAdapterUtils.bindViews(
+                        (Condition) mDashboardData.getItemEntityByPosition(position),
+                        holder, isExpanded, mConditionClickListener,
                         new View.OnClickListener() {
                             @Override
                             public void onClick(View v) {
@@ -271,45 +247,103 @@
         }
     }
 
+    @Override
+    public long getItemId(int position) {
+        return mDashboardData.getItemIdByPosition(position);
+    }
+
+    @Override
+    public int getItemViewType(int position) {
+        return mDashboardData.getItemTypeByPosition(position);
+    }
+
+    @Override
+    public int getItemCount() {
+        return mDashboardData.size();
+    }
+
+    public void onExpandClick(View v) {
+        Condition expandedCondition = mDashboardData.getExpandedCondition();
+        if (v.getTag() == expandedCondition) {
+            mMetricsFeatureProvider.action(mContext,
+                    MetricsEvent.ACTION_SETTINGS_CONDITION_COLLAPSE,
+                    expandedCondition.getMetricsConstant());
+            expandedCondition = null;
+        } else {
+            expandedCondition = (Condition) v.getTag();
+            mMetricsFeatureProvider.action(mContext, MetricsEvent.ACTION_SETTINGS_CONDITION_EXPAND,
+                    expandedCondition.getMetricsConstant());
+        }
+
+        updateExpandedCondition(expandedCondition);
+    }
+
+    public Object getItem(long itemId) {
+        return mDashboardData.getItemEntityById(itemId);
+    }
+
+    public static String getSuggestionIdentifier(Context context, Tile suggestion) {
+        String packageName = suggestion.intent.getComponent().getPackageName();
+        if (packageName.equals(context.getPackageName())) {
+            // Since Settings provides several suggestions, fill in the class instead of the
+            // package for these.
+            packageName = suggestion.intent.getComponent().getClassName();
+        }
+        return packageName;
+    }
+
+    private void notifyDashboardDataChanged(DashboardData prevData) {
+        if (prevData != null) {
+            final DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(new DashboardData
+                    .ItemsDataDiffCallback(prevData.getItemList(), mDashboardData.getItemList()));
+            diffResult.dispatchUpdatesTo(this);
+        } else {
+            notifyDataSetChanged();
+        }
+    }
+
+    private void updateExpandedCondition(Condition condition) {
+        final DashboardData prevData = mDashboardData;
+        mDashboardData = new DashboardData.Builder(prevData)
+                .setExpandedCondition(condition)
+                .build();
+        notifyDashboardDataChanged(prevData);
+    }
+
     private void showRemoveOption(View v, final Tile suggestion) {
-        PopupMenu popup = new PopupMenu(
+        final PopupMenu popup = new PopupMenu(
                 new ContextThemeWrapper(mContext, R.style.Theme_AppCompat_DayNight), v);
         popup.getMenu().add(R.string.suggestion_remove).setOnMenuItemClickListener(
                 new MenuItem.OnMenuItemClickListener() {
-            @Override
-            public boolean onMenuItemClick(MenuItem item) {
-                mMetricsFeatureProvider.action(
-                        mContext, MetricsEvent.ACTION_SETTINGS_DISMISS_SUGGESTION,
-                        DashboardAdapter.getSuggestionIdentifier(mContext, suggestion));
-                disableSuggestion(suggestion);
-                mSuggestions.remove(suggestion);
-                recountItems();
-                return true;
-            }
-        });
+                    @Override
+                    public boolean onMenuItemClick(MenuItem item) {
+                        mMetricsFeatureProvider.action(
+                                mContext, MetricsEvent.ACTION_SETTINGS_DISMISS_SUGGESTION,
+                                DashboardAdapter.getSuggestionIdentifier(mContext, suggestion));
+                        disableSuggestion(suggestion);
+                        List<Tile> suggestions = mDashboardData.getSuggestions();
+                        suggestions.remove(suggestion);
+
+                        DashboardData prevData = mDashboardData;
+                        mDashboardData = new DashboardData.Builder(prevData)
+                                .setSuggestions(suggestions)
+                                .build();
+                        notifyDashboardDataChanged(prevData);
+
+                        return true;
+                    }
+                });
         popup.show();
     }
 
-    public void disableSuggestion(Tile suggestion) {
-        if (mSuggestionParser == null) {
-            return;
-        }
-        if (mSuggestionParser.dismissSuggestion(suggestion)) {
-            mContext.getPackageManager().setComponentEnabledSetting(
-                    suggestion.intent.getComponent(),
-                    PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
-                    PackageManager.DONT_KILL_APP);
-            mSuggestionParser.markCategoryDone(suggestion.category);
-        }
-    }
+    private void onBindSuggestionHeader(final DashboardItemHolder holder, DashboardData
+            .SuggestionHeaderData data) {
+        final boolean moreSuggestions = data.hasMoreSuggestions;
+        final int undisplayedSuggestionCount = data.undisplayedSuggestionCount;
 
-    private void onBindSuggestionHeader(final DashboardItemHolder holder) {
-        final boolean moreSuggestions = hasMoreSuggestions();
-        final int undisplayedSuggestionCount =
-                mSuggestions.size() - getDisplayableSuggestionCount();
         holder.icon.setImageResource(moreSuggestions ? R.drawable.ic_expand_more
                 : R.drawable.ic_expand_less);
-        holder.title.setText(mContext.getString(R.string.suggestions_title, mSuggestions.size()));
+        holder.title.setText(mContext.getString(R.string.suggestions_title, data.suggestionSize));
         String summaryContentDescription;
         if (moreSuggestions) {
             summaryContentDescription = mContext.getResources().getQuantityString(
@@ -329,22 +363,22 @@
         holder.itemView.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                if (hasMoreSuggestions()) {
-                    mSuggestionMode = SUGGESTION_MODE_EXPANDED;
+                final int suggestionMode;
+                if (moreSuggestions) {
+                    suggestionMode = DashboardData.SUGGESTION_MODE_EXPANDED;
                 } else {
-                    mSuggestionMode = SUGGESTION_MODE_COLLAPSED;
+                    suggestionMode = DashboardData.SUGGESTION_MODE_COLLAPSED;
                 }
-                recountItems();
+
+                DashboardData prevData = mDashboardData;
+                mDashboardData = new DashboardData.Builder(prevData)
+                        .setSuggestionMode(suggestionMode)
+                        .build();
+                notifyDashboardDataChanged(prevData);
             }
         });
     }
 
-    private boolean hasMoreSuggestions() {
-        return mSuggestionMode == SUGGESTION_MODE_COLLAPSED
-                || (mSuggestionMode == SUGGESTION_MODE_DEFAULT
-                && mSuggestions.size() > DEFAULT_SUGGESTION_COUNT);
-    }
-
     private void onBindTile(DashboardItemHolder holder, Tile tile) {
         holder.icon.setImageDrawable(mCache.getIcon(tile.icon));
         holder.title.setText(tile.title);
@@ -360,98 +394,21 @@
         holder.title.setText(category.title);
     }
 
-    private void onBindSeeAll(DashboardItemHolder holder) {
-        holder.title.setText(mIsShowingAll ? R.string.see_less
-                : R.string.see_all);
-        holder.itemView.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                setShowingAll(!mIsShowingAll);
-            }
-        });
-    }
-
-    @Override
-    public long getItemId(int position) {
-        return mIds.get(position);
-    }
-
-    @Override
-    public int getItemViewType(int position) {
-        return mTypes.get(position);
-    }
-
-    @Override
-    public int getItemCount() {
-        return mIds.size();
-    }
-
-    @Override
-    public void onClick(View v) {
-        if (v.getId() == R.id.dashboard_tile) {
-            ((SettingsActivity) mContext).openTile((Tile) v.getTag());
-            return;
-        }
-        if (v.getTag() == mExpandedCondition) {
-            mMetricsFeatureProvider.action(mContext, MetricsEvent.ACTION_SETTINGS_CONDITION_CLICK,
-                    mExpandedCondition.getMetricsConstant());
-            mExpandedCondition.onPrimaryClick();
-        } else {
-            mExpandedCondition = (Condition) v.getTag();
-            mMetricsFeatureProvider.action(mContext, MetricsEvent.ACTION_SETTINGS_CONDITION_EXPAND,
-                    mExpandedCondition.getMetricsConstant());
-            notifyDataSetChanged();
-        }
-    }
-
-    public void onExpandClick(View v) {
-        if (v.getTag() == mExpandedCondition) {
-            mMetricsFeatureProvider.action(mContext,
-                    MetricsEvent.ACTION_SETTINGS_CONDITION_COLLAPSE,
-                    mExpandedCondition.getMetricsConstant());
-            mExpandedCondition = null;
-        } else {
-            mExpandedCondition = (Condition) v.getTag();
-            mMetricsFeatureProvider.action(mContext, MetricsEvent.ACTION_SETTINGS_CONDITION_EXPAND,
-                    mExpandedCondition.getMetricsConstant());
-        }
-        notifyDataSetChanged();
-    }
-
-    public Object getItem(long itemId) {
-        for (int i = 0; i < mIds.size(); i++) {
-            if (mIds.get(i) == itemId) {
-                return mItems.get(i);
-            }
-        }
-        return null;
-    }
-
-    public static String getSuggestionIdentifier(Context context, Tile suggestion) {
-        String packageName = suggestion.intent.getComponent().getPackageName();
-        if (packageName.equals(context.getPackageName())) {
-            // Since Settings provides several suggestions, fill in the class instead of the
-            // package for these.
-            packageName = suggestion.intent.getComponent().getClassName();
-        }
-        return packageName;
-    }
-
     void onSaveInstanceState(Bundle outState) {
-        if (mSuggestions != null) {
+        final List<Tile> suggestions = mDashboardData.getSuggestions();
+        final List<DashboardCategory> categories = mDashboardData.getCategories();
+        if (suggestions != null) {
             outState.putParcelableArrayList(STATE_SUGGESTION_LIST,
-                    new ArrayList<Tile>(mSuggestions));
+                    new ArrayList<Tile>(suggestions));
         }
-        if (mCategories != null) {
+        if (categories != null) {
             outState.putParcelableArrayList(STATE_CATEGORY_LIST,
-                    new ArrayList<DashboardCategory>(mCategories));
+                    new ArrayList<DashboardCategory>(categories));
         }
-        outState.putBoolean(STATE_IS_SHOWING_ALL, mIsShowingAll);
-        outState.putInt(STATE_SUGGESTION_MODE, mSuggestionMode);
+        outState.putInt(STATE_SUGGESTION_MODE, mDashboardData.getSuggestionMode());
     }
 
     private static class IconCache {
-
         private final Context mContext;
         private final ArrayMap<Icon, Drawable> mMap = new ArrayMap<>();
 
diff --git a/src/com/android/settings/dashboard/DashboardData.java b/src/com/android/settings/dashboard/DashboardData.java
new file mode 100644
index 0000000..0fc994b
--- /dev/null
+++ b/src/com/android/settings/dashboard/DashboardData.java
@@ -0,0 +1,488 @@
+/*
+ * 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.dashboard;
+
+import android.annotation.IntDef;
+import android.support.v7.util.DiffUtil;
+import android.text.TextUtils;
+import com.android.settings.dashboard.conditional.Condition;
+import com.android.settingslib.drawer.DashboardCategory;
+import com.android.settingslib.drawer.Tile;
+import com.android.settings.R;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Description about data list used in the DashboardAdapter. In the data list each item can be
+ * Condition, suggestion or category tile.
+ * <p>
+ * ItemsData has inner class Item, which represents the Item in data list.
+ */
+public class DashboardData {
+    public static final int SUGGESTION_MODE_DEFAULT = 0;
+    public static final int SUGGESTION_MODE_COLLAPSED = 1;
+    public static final int SUGGESTION_MODE_EXPANDED = 2;
+    public static final int POSITION_NOT_FOUND = -1;
+    public static final int DEFAULT_SUGGESTION_COUNT = 2;
+
+    // id namespace for different type of items.
+    private static final int NS_SPACER = 0;
+    private static final int NS_SUGGESTION = 1000;
+    private static final int NS_ITEMS = 2000;
+    private static final int NS_CONDITION = 3000;
+
+    private final List<Item> mItems;
+    private final List<DashboardCategory> mCategories;
+    private final List<Condition> mConditions;
+    private final List<Tile> mSuggestions;
+    private final int mSuggestionMode;
+    private final Condition mExpandedCondition;
+    private int mId;
+
+    private DashboardData(Builder builder) {
+        mCategories = builder.mCategories;
+        mConditions = builder.mConditions;
+        mSuggestions = builder.mSuggestions;
+        mSuggestionMode = builder.mSuggestionMode;
+        mExpandedCondition = builder.mExpandedCondition;
+
+        mItems = new ArrayList<>();
+        mId = 0;
+
+        buildItemsData();
+    }
+
+    public int getItemIdByPosition(int position) {
+        return mItems.get(position).id;
+    }
+
+    public int getItemTypeByPosition(int position) {
+        return mItems.get(position).type;
+    }
+
+    public Object getItemEntityByPosition(int position) {
+        return mItems.get(position).entity;
+    }
+
+    public List<Item> getItemList() {
+        return mItems;
+    }
+
+    public int size() {
+        return mItems.size();
+    }
+
+    public Object getItemEntityById(long id) {
+        for (final Item item : mItems) {
+            if (item.id == id) {
+                return item.entity;
+            }
+        }
+        return null;
+    }
+
+    public List<DashboardCategory> getCategories() {
+        return mCategories;
+    }
+
+    public List<Condition> getConditions() {
+        return mConditions;
+    }
+
+    public List<Tile> getSuggestions() {
+        return mSuggestions;
+    }
+
+    public int getSuggestionMode() {
+        return mSuggestionMode;
+    }
+
+    public Condition getExpandedCondition() {
+        return mExpandedCondition;
+    }
+
+    /**
+     * Find the position of the object in mItems list, using the equals method to compare
+     *
+     * @param entity the object that need to be found in list
+     * @return position of the object, return POSITION_NOT_FOUND if object isn't in the list
+     */
+    public int getPositionByEntity(Object entity) {
+        if (entity == null) return POSITION_NOT_FOUND;
+
+        final int size = mItems.size();
+        for (int i = 0; i < size; i++) {
+            final Object item = mItems.get(i).entity;
+            if (entity.equals(item)) {
+                return i;
+            }
+        }
+
+        return POSITION_NOT_FOUND;
+    }
+
+    /**
+     * Find the position of the Tile object.
+     * <p>
+     * First, try to find the exact identical instance of the tile object, if not found,
+     * then try to find a tile has the same title.
+     *
+     * @param tile tile that need to be found
+     * @return position of the object, return INDEX_NOT_FOUND if object isn't in the list
+     */
+    public int getPositionByTile(Tile tile) {
+        final int size = mItems.size();
+        for (int i = 0; i < size; i++) {
+            final Object entity = mItems.get(i).entity;
+            if (entity == tile) {
+                return i;
+            } else if (entity instanceof Tile && tile.title.equals(((Tile) entity).title)) {
+                return i;
+            }
+        }
+
+        return POSITION_NOT_FOUND;
+    }
+
+    /**
+     * Get the count of suggestions to display
+     *
+     * The displayable count mainly depends on the {@link #mSuggestionMode}
+     * and the size of suggestions list.
+     *
+     * When in default mode, displayable count couldn't larger than
+     * {@link #DEFAULT_SUGGESTION_COUNT}.
+     *
+     * When in expanded mode, display all the suggestions.
+     * @return the count of suggestions to display
+     */
+    public int getDisplayableSuggestionCount() {
+        final int suggestionSize = mSuggestions.size();
+        return mSuggestionMode == SUGGESTION_MODE_DEFAULT
+                ? Math.min(DEFAULT_SUGGESTION_COUNT, suggestionSize)
+                : mSuggestionMode == SUGGESTION_MODE_EXPANDED
+                ? suggestionSize : 0;
+    }
+
+    public boolean hasMoreSuggestions() {
+        return mSuggestionMode == SUGGESTION_MODE_COLLAPSED
+                || (mSuggestionMode == SUGGESTION_MODE_DEFAULT
+                && mSuggestions.size() > DEFAULT_SUGGESTION_COUNT);
+    }
+
+    private void resetCount() {
+        mId = 0;
+    }
+
+    /**
+     * Count the item and add it into list when {@paramref add} is true.
+     *
+     * Note that {@link #mId} will increment automatically and the real
+     * id stored in {@link Item} is shifted by {@paramref nameSpace}. This is a
+     * simple way to keep the id stable.
+     *
+     * @param object maybe {@link Condition}, {@link Tile}, {@link DashboardCategory} or null
+     * @param type type of the item, and value is the layout id
+     * @param add  flag about whether to add item into list
+     * @param nameSpace namespace based on the type
+     */
+    private void countItem(Object object, int type, boolean add, int nameSpace) {
+        if (add) {
+            mItems.add(new Item(object, type, mId + nameSpace, object == mExpandedCondition));
+        }
+        mId++;
+    }
+
+    /**
+     * Build the mItems list using mConditions, mSuggestions, mCategories data
+     * and mIsShowingAll, mSuggestionMode flag.
+     */
+    private void buildItemsData() {
+        boolean hasConditions = false;
+        for (int i = 0; mConditions != null && i < mConditions.size(); i++) {
+            boolean shouldShow = mConditions.get(i).shouldShow();
+            hasConditions |= shouldShow;
+            countItem(mConditions.get(i), R.layout.condition_card, shouldShow, NS_CONDITION);
+        }
+
+        resetCount();
+        final boolean hasSuggestions = mSuggestions != null && mSuggestions.size() != 0;
+        countItem(null, R.layout.dashboard_spacer, hasConditions && hasSuggestions, NS_SPACER);
+        countItem(buildSuggestionHeaderData(), R.layout.suggestion_header, hasSuggestions,
+                NS_SPACER);
+
+        resetCount();
+        if (mSuggestions != null) {
+            int maxSuggestions = getDisplayableSuggestionCount();
+            for (int i = 0; i < mSuggestions.size(); i++) {
+                countItem(mSuggestions.get(i), R.layout.suggestion_tile, i < maxSuggestions,
+                        NS_SUGGESTION);
+            }
+        }
+        resetCount();
+        for (int i = 0; mCategories != null && i < mCategories.size(); i++) {
+            DashboardCategory category = mCategories.get(i);
+            countItem(category, R.layout.dashboard_category,
+                    !TextUtils.isEmpty(category.title), NS_ITEMS);
+            for (int j = 0; j < category.tiles.size(); j++) {
+                Tile tile = category.tiles.get(j);
+                countItem(tile, R.layout.dashboard_tile, true, NS_ITEMS);
+            }
+        }
+    }
+
+    private SuggestionHeaderData buildSuggestionHeaderData() {
+        SuggestionHeaderData data;
+        if (mSuggestions == null) {
+            data = new SuggestionHeaderData();
+        } else {
+            final boolean hasMoreSuggestions = hasMoreSuggestions();
+            final int suggestionSize = mSuggestions.size();
+            final int undisplayedSuggestionCount = suggestionSize - getDisplayableSuggestionCount();
+            data = new SuggestionHeaderData(hasMoreSuggestions, suggestionSize,
+                    undisplayedSuggestionCount);
+        }
+
+        return data;
+    }
+
+    /**
+     * Builder used to build the ItemsData
+     * <p>
+     * {@link #mExpandedCondition} and {@link #mSuggestionMode} have default value
+     * while others are not.
+     */
+    public static class Builder {
+        private int mSuggestionMode = SUGGESTION_MODE_DEFAULT;
+        private Condition mExpandedCondition = null;
+
+        private List<DashboardCategory> mCategories;
+        private List<Condition> mConditions;
+        private List<Tile> mSuggestions;
+
+
+        public Builder() {
+        }
+
+        public Builder(DashboardData dashboardData) {
+            mCategories = dashboardData.mCategories;
+            mConditions = dashboardData.mConditions;
+            mSuggestions = dashboardData.mSuggestions;
+            mSuggestionMode = dashboardData.mSuggestionMode;
+            mExpandedCondition = dashboardData.mExpandedCondition;
+        }
+
+        public Builder setCategories(List<DashboardCategory> categories) {
+            this.mCategories = categories;
+            return this;
+        }
+
+        public Builder setConditions(List<Condition> conditions) {
+            this.mConditions = conditions;
+            return this;
+        }
+
+        public Builder setSuggestions(List<Tile> suggestions) {
+            this.mSuggestions = suggestions;
+            return this;
+        }
+
+        public Builder setSuggestionMode(int suggestionMode) {
+            this.mSuggestionMode = suggestionMode;
+            return this;
+        }
+
+        public Builder setExpandedCondition(Condition expandedCondition) {
+            this.mExpandedCondition = expandedCondition;
+            return this;
+        }
+
+        public DashboardData build() {
+            return new DashboardData(this);
+        }
+    }
+
+    /**
+     * A DiffCallback to calculate the difference between old and new Item
+     * List in DashboardData
+     */
+    public static class ItemsDataDiffCallback extends DiffUtil.Callback {
+        final private List<Item> mOldItems;
+        final private List<Item> mNewItems;
+
+        public ItemsDataDiffCallback(List<Item> oldItems, List<Item> newItems) {
+            mOldItems = oldItems;
+            mNewItems = newItems;
+        }
+
+        @Override
+        public int getOldListSize() {
+            return mOldItems.size();
+        }
+
+        @Override
+        public int getNewListSize() {
+            return mNewItems.size();
+        }
+
+        @Override
+        public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
+            return mOldItems.get(oldItemPosition).id == mNewItems.get(newItemPosition).id;
+        }
+
+        @Override
+        public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
+            return mOldItems.get(oldItemPosition).equals(mNewItems.get(newItemPosition));
+        }
+    }
+
+    /**
+     * An item contains the data needed in the DashboardData.
+     */
+    private static class Item {
+        // valid types in field type
+        private static final int TYPE_DASHBOARD_CATEGORY = R.layout.dashboard_category;
+        private static final int TYPE_DASHBOARD_TILE = R.layout.dashboard_tile;
+        private static final int TYPE_SUGGESTION_HEADER = R.layout.suggestion_header;
+        private static final int TYPE_SUGGESTION_TILE = R.layout.suggestion_tile;
+        private static final int TYPE_CONDITION_CARD = R.layout.condition_card;
+        private static final int TYPE_DASHBOARD_SPACER = R.layout.dashboard_spacer;
+
+        @IntDef({TYPE_DASHBOARD_CATEGORY, TYPE_DASHBOARD_TILE, TYPE_SUGGESTION_HEADER,
+                TYPE_SUGGESTION_TILE, TYPE_CONDITION_CARD, TYPE_DASHBOARD_SPACER})
+        @Retention(RetentionPolicy.SOURCE)
+        public @interface ItemTypes{}
+
+        /**
+         * The main data object in item, usually is a {@link Tile}, {@link Condition} or
+         * {@link DashboardCategory} object. This object can also be null when the
+         * item is an divider line. Please refer to {@link #buildItemsData()} for
+         * detail usage of the Item.
+         */
+        public final Object entity;
+
+        /**
+         * The type of item, value inside is the layout id(e.g. R.layout.dashboard_tile)
+         */
+        public final @ItemTypes int type;
+
+        /**
+         * Id of this item, used in the {@link ItemsDataDiffCallback} to identify the same item.
+         */
+        public final int id;
+
+        /**
+         * To store whether the condition is expanded, useless when {@link #type} is not
+         * {@link #TYPE_CONDITION_CARD}
+         */
+        public final boolean conditionExpanded;
+
+        public Item(Object entity, @ItemTypes int type, int id, boolean conditionExpanded) {
+            this.entity = entity;
+            this.type = type;
+            this.id = id;
+            this.conditionExpanded = conditionExpanded;
+        }
+
+        /**
+         * Override it to make comparision in the {@link ItemsDataDiffCallback}
+         * @param obj object to compared with
+         * @return true if the same object or has equal value.
+         */
+        @Override
+        public boolean equals(Object obj) {
+            if (this == obj) {
+                return true;
+            }
+
+            if (!(obj instanceof Item)) {
+                return false;
+            }
+
+            final Item targetItem = (Item) obj;
+            if (type != targetItem.type || id != targetItem.id) {
+                return false;
+            }
+
+            switch (type) {
+                case TYPE_DASHBOARD_CATEGORY:
+                    // Only check title for dashboard category
+                    return TextUtils.equals(((DashboardCategory)entity).title,
+                            ((DashboardCategory) targetItem.entity).title);
+                case TYPE_DASHBOARD_TILE:
+                    final Tile localTile = (Tile)entity;
+                    final Tile targetTile = (Tile)targetItem.entity;
+
+                    // Only check title and summary for dashboard tile
+                    return TextUtils.equals(localTile.title, targetTile.title)
+                            && TextUtils.equals(localTile.summary, targetTile.summary);
+                case TYPE_CONDITION_CARD:
+                    // First check conditionExpanded for quick return
+                    if (conditionExpanded != targetItem.conditionExpanded) {
+                        return false;
+                    }
+                    // After that, go to default to do final check
+                default:
+                    return entity == null ? targetItem.entity == null
+                            : entity.equals(targetItem.entity);
+            }
+        }
+    }
+
+    /**
+     * This class contains the data needed to build the header. The data can also be
+     * used to check the diff in DiffUtil.Callback
+     */
+    public static class SuggestionHeaderData {
+        public final boolean hasMoreSuggestions;
+        public final int suggestionSize;
+        public final int undisplayedSuggestionCount;
+
+        public SuggestionHeaderData(boolean moreSuggestions, int suggestionSize, int
+                undisplayedSuggestionCount) {
+            this.hasMoreSuggestions = moreSuggestions;
+            this.suggestionSize = suggestionSize;
+            this.undisplayedSuggestionCount = undisplayedSuggestionCount;
+        }
+
+        public SuggestionHeaderData() {
+            hasMoreSuggestions = false;
+            suggestionSize = 0;
+            undisplayedSuggestionCount = 0;
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            if (this == obj) {
+                return true;
+            }
+
+            if (!(obj instanceof SuggestionHeaderData)) {
+                return false;
+            }
+
+            SuggestionHeaderData targetData = (SuggestionHeaderData) obj;
+
+            return hasMoreSuggestions == targetData.hasMoreSuggestions
+                    && suggestionSize == targetData.suggestionSize
+                    && undisplayedSuggestionCount == targetData.undisplayedSuggestionCount;
+        }
+    }
+
+}
\ No newline at end of file
diff --git a/src/com/android/settings/dashboard/DashboardFeatureProvider.java b/src/com/android/settings/dashboard/DashboardFeatureProvider.java
index 92154be..8601f1d 100644
--- a/src/com/android/settings/dashboard/DashboardFeatureProvider.java
+++ b/src/com/android/settings/dashboard/DashboardFeatureProvider.java
@@ -15,6 +15,8 @@
  */
 package com.android.settings.dashboard;
 
+import android.app.Activity;
+import android.content.Context;
 import android.support.v7.preference.Preference;
 
 import com.android.settingslib.drawer.DashboardCategory;
@@ -53,4 +55,20 @@
      * Returns an unique string key for the tile.
      */
     String getDashboardKeyForTile(Tile tile);
+
+    /**
+     * Binds preference to data provided by tile.
+     *
+     * @param activity If tile contains intent to launch, it will be launched from this activity
+     * @param pref The preference to bind data
+     * @param tile The binding data
+     * @param key They key for preference. If null, we will generate one from tile data
+     */
+    void bindPreferenceToTile(Activity activity, Preference pref, Tile tile, String key);
+
+    /**
+     * Returns a {@link ProgressiveDisclosureMixin} for specified fragment.
+     */
+    ProgressiveDisclosureMixin getProgressiveDisclosureMixin(Context context,
+            DashboardFragment fragment);
 }
diff --git a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
index df3f6ef..4480281 100644
--- a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
+++ b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
@@ -16,10 +16,15 @@
 
 package com.android.settings.dashboard;
 
+import android.app.Activity;
 import android.content.ComponentName;
 import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
 import android.support.v7.preference.Preference;
+import android.text.TextUtils;
 
+import com.android.settings.SettingsActivity;
 import com.android.settingslib.drawer.CategoryManager;
 import com.android.settingslib.drawer.DashboardCategory;
 import com.android.settingslib.drawer.Tile;
@@ -72,4 +77,44 @@
         sb.append(component.getClassName());
         return sb.toString();
     }
+
+    @Override
+    public void bindPreferenceToTile(Activity activity, Preference pref, Tile tile, String key) {
+        pref.setTitle(tile.title);
+        if (!TextUtils.isEmpty(key)) {
+            pref.setKey(key);
+        } else {
+            pref.setKey(getDashboardKeyForTile(tile));
+        }
+        pref.setSummary(tile.summary);
+        if (tile.icon != null) {
+            pref.setIcon(tile.icon.loadDrawable(activity));
+        }
+        final Bundle metadata = tile.metaData;
+        String clsName = null;
+        if (metadata != null) {
+            clsName = metadata.getString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS);
+        }
+        if (!TextUtils.isEmpty(clsName)) {
+            pref.setFragment(clsName);
+        } else if (tile.intent != null) {
+            final Intent intent = new Intent(tile.intent);
+            pref.setOnPreferenceClickListener(preference -> {
+                activity.startActivityForResult(intent, 0);
+                return true;
+            });
+        }
+        // Use negated priority for order, because tile priority is based on intent-filter
+        // (larger value has higher priority). However pref order defines smaller value has
+        // higher priority.
+        if (tile.priority != 0) {
+            pref.setOrder(-tile.priority);
+        }
+    }
+
+    @Override
+    public ProgressiveDisclosureMixin getProgressiveDisclosureMixin(Context context,
+            DashboardFragment fragment) {
+        return new ProgressiveDisclosureMixin(context, this, fragment);
+    }
 }
diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java
index b895974..3bbec09 100644
--- a/src/com/android/settings/dashboard/DashboardFragment.java
+++ b/src/com/android/settings/dashboard/DashboardFragment.java
@@ -17,12 +17,13 @@
 
 import android.app.Activity;
 import android.content.Context;
-import android.content.Intent;
 import android.graphics.Color;
 import android.graphics.drawable.ColorDrawable;
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
+import android.support.annotation.VisibleForTesting;
 import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceManager;
 import android.support.v7.preference.PreferenceScreen;
 import android.text.TextUtils;
 import android.util.ArrayMap;
@@ -32,7 +33,6 @@
 import android.view.View;
 import android.view.ViewGroup;
 
-import com.android.settings.SettingsActivity;
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.core.PreferenceController;
 import com.android.settings.overlay.FeatureFactory;
@@ -41,6 +41,7 @@
 import com.android.settingslib.drawer.SettingsDrawerActivity;
 import com.android.settingslib.drawer.Tile;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
@@ -52,12 +53,14 @@
 public abstract class DashboardFragment extends SettingsPreferenceFragment
         implements SettingsDrawerActivity.CategoryListener, Indexable,
         SummaryLoader.SummaryConsumer {
+    private static final String TAG = "DashboardFragment";
 
     private final Map<Class, PreferenceController> mPreferenceControllers =
             new ArrayMap<>();
     private final Set<String> mDashboardTilePrefKeys = new ArraySet<>();
     private DashboardDividerDecoration mDividerDecoration;
 
+    protected ProgressiveDisclosureMixin mProgressiveDisclosureMixin;
     protected DashboardFeatureProvider mDashboardFeatureProvider;
     private boolean mListeningToCategoryChange;
     private SummaryLoader mSummaryLoader;
@@ -67,6 +70,9 @@
         super.onAttach(context);
         mDashboardFeatureProvider =
                 FeatureFactory.getFactory(context).getDashboardFeatureProvider(context);
+        mProgressiveDisclosureMixin = mDashboardFeatureProvider
+                .getProgressiveDisclosureMixin(context, this);
+        getLifecycle().addObserver(mProgressiveDisclosureMixin);
 
         final List<PreferenceController> controllers = getPreferenceControllers(context);
         if (controllers == null) {
@@ -78,6 +84,24 @@
     }
 
     @Override
+    public void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+        // Set ComparisonCallback so we get better animation when list changes.
+        getPreferenceManager().setPreferenceComparisonCallback(
+                new PreferenceManager.SimplePreferenceComparisonCallback());
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState) {
+        final View view = super.onCreateView(inflater, container, savedInstanceState);
+        if (mDashboardFeatureProvider.isEnabled()) {
+            getListView().addItemDecoration(mDividerDecoration);
+        }
+        return view;
+    }
+
+    @Override
     public void onCategoriesChanged() {
         final DashboardCategory category =
                 mDashboardFeatureProvider.getTilesForCategory(getCategoryKey());
@@ -95,6 +119,18 @@
     }
 
     @Override
+    public void setDivider(Drawable divider) {
+        if (mDashboardFeatureProvider.isEnabled()) {
+            // Intercept divider and set it transparent so system divider decoration is disabled.
+            // We will use our decoration to draw divider more intelligently.
+            mDividerDecoration.setDivider(divider);
+            super.setDivider(new ColorDrawable(Color.TRANSPARENT));
+        } else {
+            super.setDivider(divider);
+        }
+    }
+
+    @Override
     public void onStart() {
         super.onStart();
         final DashboardCategory category =
@@ -116,7 +152,8 @@
     @Override
     public void notifySummaryChanged(Tile tile) {
         final String key = mDashboardFeatureProvider.getDashboardKeyForTile(tile);
-        final Preference pref = findPreference(key);
+        final Preference pref = mProgressiveDisclosureMixin.findPreference(
+                getPreferenceScreen(), key);
         if (pref == null) {
             Log.d(getLogTag(),
                     String.format("Can't find pref by key %s, skipping update summary %s/%s",
@@ -206,14 +243,56 @@
     }
 
     /**
-     * Displays dashboard tiles as preference.
+     * Update state of each preference managed by PreferenceController.
      */
-    private final void displayDashboardTiles(final String TAG, PreferenceScreen screen) {
+    private void updatePreferenceStates() {
+        Collection<PreferenceController> controllers = mPreferenceControllers.values();
+        final PreferenceScreen screen = getPreferenceScreen();
+        for (PreferenceController controller : controllers) {
+            if (!controller.isAvailable()) {
+                continue;
+            }
+            final String key = controller.getPreferenceKey();
+
+            final Preference preference = mProgressiveDisclosureMixin.findPreference(screen, key);
+            if (preference == null) {
+                Log.d(TAG, String.format("Cannot find preference with key %s in Controller %s",
+                        key, controller.getClass().getSimpleName()));
+                continue;
+            }
+            controller.updateState(preference);
+        }
+    }
+
+    /**
+     * Refresh all preference items, including both static prefs from xml, and dynamic items from
+     * DashboardCategory.
+     */
+    private void refreshAllPreferences(final String TAG) {
+        // First remove old preferences.
+        if (getPreferenceScreen() != null) {
+            // Intentionally do not cache PreferenceScreen because it will be recreated later.
+            getPreferenceScreen().removeAll();
+        }
+
+        // Add resource based tiles.
+        displayResourceTiles();
+
+        refreshDashboardTiles(TAG);
+    }
+
+    /**
+     * Refresh preference items backed by DashboardCategory.
+     */
+    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    void refreshDashboardTiles(final String TAG) {
+        final PreferenceScreen screen = getPreferenceScreen();
+
         final Context context = getContext();
         final DashboardCategory category =
                 mDashboardFeatureProvider.getTilesForCategory(getCategoryKey());
         if (category == null) {
-            Log.d(TAG, "NO dynamic tiles for " + TAG);
+            Log.d(TAG, "NO dashboard tiles for " + TAG);
             return;
         }
         List<Tile> tiles = category.tiles;
@@ -221,6 +300,9 @@
             Log.d(TAG, "tile list is empty, skipping category " + category.title);
             return;
         }
+        // Create a list to track which tiles are to be removed.
+        final List<String> remove = new ArrayList<>(mDashboardTilePrefKeys);
+
         // There are dashboard tiles, so we need to install SummaryLoader.
         if (mSummaryLoader != null) {
             mSummaryLoader.release();
@@ -234,91 +316,25 @@
                 Log.d(TAG, "tile does not contain a key, skipping " + tile);
                 continue;
             }
-            mDashboardTilePrefKeys.add(key);
-            final Preference pref = new DashboardTilePreference(context);
-            pref.setTitle(tile.title);
-            pref.setKey(key);
-            pref.setSummary(tile.summary);
-            if (tile.icon != null) {
-                pref.setIcon(tile.icon.loadDrawable(context));
+            if (mDashboardTilePrefKeys.contains(key)) {
+                // Have the key already, will rebind.
+                final Preference preference = mProgressiveDisclosureMixin.findPreference(
+                        screen, key);
+                mDashboardFeatureProvider.bindPreferenceToTile(
+                        getActivity(), preference, tile, key);
+            } else {
+                // Don't have this key, add it.
+                final Preference pref = new DashboardTilePreference(context);
+                mDashboardFeatureProvider.bindPreferenceToTile(getActivity(), pref, tile, key);
+                mProgressiveDisclosureMixin.addPreference(screen, pref);
+                mDashboardTilePrefKeys.add(key);
             }
-            final Bundle metadata = tile.metaData;
-            if (metadata != null) {
-                String clsName = metadata.getString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS);
-                if (!TextUtils.isEmpty(clsName)) {
-                    pref.setFragment(clsName);
-                }
-            } else if (tile.intent != null) {
-                final Intent intent = new Intent(tile.intent);
-                pref.setOnPreferenceClickListener(preference -> {
-                    getActivity().startActivityForResult(intent, 0);
-                    return true;
-                });
-            }
-            // Use negated priority for order, because tile priority is based on intent-filter
-            // (larger value has higher priority). However pref order defines smaller value has
-            // higher priority.
-            pref.setOrder(-tile.priority);
-            screen.addPreference(pref);
+            remove.remove(key);
         }
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-            Bundle savedInstanceState) {
-        final View view = super.onCreateView(inflater, container, savedInstanceState);
-        getListView().addItemDecoration(mDividerDecoration);
-        return view;
-    }
-
-    /**
-     * Update state of each preference managed by PreferenceController.
-     */
-    private void updatePreferenceStates() {
-        Collection<PreferenceController> controllers = mPreferenceControllers.values();
-        final PreferenceScreen screen = getPreferenceScreen();
-        for (PreferenceController controller : controllers) {
-            controller.updateState(screen);
+        // Finally remove tiles that are gone.
+        for (String key : remove) {
+            mDashboardTilePrefKeys.remove(key);
+            mProgressiveDisclosureMixin.removePreference(screen, key);
         }
     }
-
-    @Override
-    public void setDivider(Drawable divider) {
-        // Intercept divider and set it transparent so system divider decoration is disabled.
-        // We will use our decoration to draw divider more intelligently.
-        mDividerDecoration.setDivider(divider);
-        super.setDivider(new ColorDrawable(Color.TRANSPARENT));
-    }
-
-    /**
-     * Refresh all preference items, including both static prefs from xml, and dynamic items from
-     * DashboardCategory.
-     */
-    private void refreshAllPreferences(final String TAG) {
-        // First remove old preferences.
-        final PreferenceScreen screen = getPreferenceScreen();
-        if (screen != null) {
-            screen.removeAll();
-        }
-
-        // Add resource based tiles.
-        displayResourceTiles();
-
-        refreshDashboardTiles(TAG);
-    }
-
-    /**
-     * Refresh preference items backed by DashboardCategory.
-     */
-    private void refreshDashboardTiles(final String TAG) {
-        final PreferenceScreen screen = getPreferenceScreen();
-        for (String key : mDashboardTilePrefKeys) {
-            final Preference pref = screen.findPreference(key);
-            if (pref != null) {
-                screen.removePreference(pref);
-            }
-        }
-        mDashboardTilePrefKeys.clear();
-        displayDashboardTiles(TAG, getPreferenceScreen());
-    }
 }
diff --git a/src/com/android/settings/dashboard/ExpandPreference.java b/src/com/android/settings/dashboard/ExpandPreference.java
new file mode 100644
index 0000000..215bfc5
--- /dev/null
+++ b/src/com/android/settings/dashboard/ExpandPreference.java
@@ -0,0 +1,53 @@
+/*
+ * 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.dashboard;
+
+import android.content.Context;
+import android.support.v7.preference.Preference;
+import android.util.AttributeSet;
+
+import com.android.settings.R;
+
+public class ExpandPreference extends Preference {
+
+    public ExpandPreference(Context context, AttributeSet attrs,
+            int defStyleAttr, int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+        init();
+    }
+
+    public ExpandPreference(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+        init();
+    }
+
+    public ExpandPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        init();
+    }
+
+    public ExpandPreference(Context context) {
+        super(context);
+        init();
+    }
+
+    private void init() {
+        setLayoutResource(R.layout.expand_preference);
+        setTitle(R.string.wifi_more);
+        setOrder(999);
+    }
+}
diff --git a/src/com/android/settings/dashboard/ProgressiveDisclosureMixin.java b/src/com/android/settings/dashboard/ProgressiveDisclosureMixin.java
new file mode 100644
index 0000000..75251b3
--- /dev/null
+++ b/src/com/android/settings/dashboard/ProgressiveDisclosureMixin.java
@@ -0,0 +1,225 @@
+/*
+ * 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.dashboard;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.support.annotation.VisibleForTesting;
+import android.support.v14.preference.PreferenceFragment;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.android.settings.core.lifecycle.LifecycleObserver;
+import com.android.settings.core.lifecycle.events.OnCreate;
+import com.android.settings.core.lifecycle.events.OnSaveInstanceState;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+public class ProgressiveDisclosureMixin implements Preference.OnPreferenceClickListener,
+        LifecycleObserver, OnCreate, OnSaveInstanceState {
+
+    private static final String TAG = "ProgressiveDisclosure";
+    private static final String STATE_USER_EXPANDED = "state_user_expanded";
+    private static final int DEFAULT_TILE_LIMIT = 3;
+
+    private int mTileLimit = DEFAULT_TILE_LIMIT;
+
+    private final DashboardFeatureProvider mDashboardFeatureProvider;
+    // Collapsed preference sorted by order.
+    private final List<Preference> mCollapsedPrefs = new ArrayList<>();
+    private final ExpandPreference mExpandButton;
+    private final PreferenceFragment mFragment;
+
+    private boolean mUserExpanded;
+
+    public ProgressiveDisclosureMixin(Context context,
+            DashboardFeatureProvider dashboardFeatureProvider, PreferenceFragment fragment) {
+        mFragment = fragment;
+        mExpandButton = new ExpandPreference(context);
+        mExpandButton.setOnPreferenceClickListener(this);
+        mDashboardFeatureProvider = dashboardFeatureProvider;
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        if (savedInstanceState != null) {
+            mUserExpanded = savedInstanceState.getBoolean(STATE_USER_EXPANDED, false);
+        }
+    }
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        outState.putBoolean(STATE_USER_EXPANDED, mUserExpanded);
+    }
+
+    @Override
+    public boolean onPreferenceClick(Preference preference) {
+        if (preference instanceof ExpandPreference) {
+            final PreferenceScreen screen = mFragment.getPreferenceScreen();
+            if (screen != null) {
+                screen.removePreference(preference);
+                for (Preference pref : mCollapsedPrefs) {
+                    screen.addPreference(pref);
+                }
+                mCollapsedPrefs.clear();
+                mUserExpanded = true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Sets the threshold to start collapsing preferences when there are too many.
+     */
+    public void setTileLimit(int limit) {
+        mTileLimit = limit;
+    }
+
+    /**
+     * Whether the controller is in collapsed state.
+     */
+    public boolean isCollapsed() {
+        return !mCollapsedPrefs.isEmpty();
+    }
+
+    /**
+     * Whether the screen should be collapsed.
+     */
+    public boolean shouldCollapse(PreferenceScreen screen) {
+        return mDashboardFeatureProvider.isEnabled() && screen.getPreferenceCount() >= mTileLimit
+                && !mUserExpanded;
+    }
+
+    /**
+     * Collapse extra preferences and show a "More" button
+     */
+    public void collapse(PreferenceScreen screen) {
+        final int itemCount = screen.getPreferenceCount();
+        if (!shouldCollapse(screen)) {
+            return;
+        }
+        if (!mCollapsedPrefs.isEmpty()) {
+            Log.w(TAG, "collapsed list should ALWAYS BE EMPTY before collapsing!");
+        }
+
+        for (int i = itemCount - 1; i >= mTileLimit; i--) {
+            final Preference preference = screen.getPreference(i);
+            addToCollapsedList(preference);
+            screen.removePreference(preference);
+        }
+        screen.addPreference(mExpandButton);
+    }
+
+    /**
+     * Adds preference to screen. If there are too many preference on screen, adds it to
+     * collapsed list instead.
+     */
+    public void addPreference(PreferenceScreen screen, Preference pref) {
+        // Either add to screen, or to collapsed list.
+        if (isCollapsed()) {
+            // insert the preference to right position.
+            final int lastPreferenceIndex = screen.getPreferenceCount() - 2;
+            if (lastPreferenceIndex >= 0) {
+                final Preference lastPreference = screen.getPreference(lastPreferenceIndex);
+                if (lastPreference.getOrder() > pref.getOrder()) {
+                    // insert to screen and move the last pref to collapsed list.
+                    screen.removePreference(lastPreference);
+                    screen.addPreference(pref);
+                    addToCollapsedList(lastPreference);
+                } else {
+                    // Insert to collapsed list.
+                    addToCollapsedList(pref);
+                }
+            } else {
+                // Couldn't find last preference on screen, just add to collapsed list.
+                addToCollapsedList(pref);
+            }
+        } else if (shouldCollapse(screen)) {
+            // About to have too many tiles on scree, collapse and add pref to collapsed list.
+            screen.addPreference(pref);
+            collapse(screen);
+        } else {
+            // No need to collapse, add to screen directly.
+            screen.addPreference(pref);
+        }
+    }
+
+    /**
+     * Removes preference. If the preference is on screen, remove it from screen. If the
+     * preference is in collapsed list, remove it from list.
+     */
+    public void removePreference(PreferenceScreen screen, String key) {
+        // Try removing from screen.
+        final Preference preference = screen.findPreference(key);
+        if (preference != null) {
+            screen.removePreference(preference);
+            return;
+        }
+        // Didn't find on screen, try removing from collapsed list.
+        for (int i = 0; i < mCollapsedPrefs.size(); i++) {
+            final Preference pref = mCollapsedPrefs.get(i);
+            if (TextUtils.equals(key, pref.getKey())) {
+                mCollapsedPrefs.remove(pref);
+                if (mCollapsedPrefs.isEmpty()) {
+                    // Removed last element, remove expand button too.
+                    screen.removePreference(mExpandButton);
+                }
+                return;
+            }
+        }
+    }
+
+    /**
+     * Finds preference by key, either from screen or from collapsed list.
+     */
+    public Preference findPreference(PreferenceScreen screen, CharSequence key) {
+        Preference preference = screen.findPreference(key);
+        if (preference != null) {
+            return preference;
+        }
+        for (int i = 0; i < mCollapsedPrefs.size(); i++) {
+            final Preference pref = mCollapsedPrefs.get(i);
+            if (TextUtils.equals(key, pref.getKey())) {
+                return pref;
+            }
+        }
+        Log.d(TAG, "Cannot find preference with key " + key);
+        return null;
+    }
+
+    /**
+     * Add preference to collapsed list.
+     */
+    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    void addToCollapsedList(Preference preference) {
+        // Insert preference based on it's order.
+        int insertionIndex = Collections.binarySearch(mCollapsedPrefs, preference);
+        if (insertionIndex < 0) {
+            insertionIndex = insertionIndex * -1 - 1;
+        }
+        mCollapsedPrefs.add(insertionIndex, preference);
+    }
+
+    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    List<Preference> getCollapsedPrefs() {
+        return mCollapsedPrefs;
+    }
+}
diff --git a/src/com/android/settings/dashboard/conditional/ConditionAdapterUtils.java b/src/com/android/settings/dashboard/conditional/ConditionAdapterUtils.java
index 0c16527..3d13fde 100644
--- a/src/com/android/settings/dashboard/conditional/ConditionAdapterUtils.java
+++ b/src/com/android/settings/dashboard/conditional/ConditionAdapterUtils.java
@@ -81,9 +81,17 @@
         View detailGroup = view.itemView.findViewById(R.id.detail_group);
         CharSequence[] actions = condition.getActions();
         if (isExpanded != (detailGroup.getVisibility() == View.VISIBLE)) {
-            animateChange(view.itemView, view.itemView.findViewById(R.id.content),
-                    detailGroup, isExpanded, actions.length > 0);
+            if (isExpanded) {
+                final boolean hasButtons = actions.length > 0;
+                setViewVisibility(detailGroup, R.id.divider, hasButtons);
+                setViewVisibility(detailGroup, R.id.buttonBar, hasButtons);
+
+                detailGroup.setVisibility(View.VISIBLE);
+            } else {
+                detailGroup.setVisibility(View.GONE);
+            }
         }
+
         if (isExpanded) {
             view.summary.setText(condition.getSummary());
             for (int i = 0; i < 2; i++) {
@@ -110,37 +118,6 @@
         }
     }
 
-    private static void animateChange(final View view, final View content,
-            final View detailGroup, final boolean visible, final boolean hasButtons) {
-        setViewVisibility(detailGroup, R.id.divider, hasButtons);
-        setViewVisibility(detailGroup, R.id.buttonBar, hasButtons);
-        final int beforeBottom = content.getBottom();
-        setHeight(detailGroup, visible ? LayoutParams.WRAP_CONTENT : 0);
-        detailGroup.setVisibility(View.VISIBLE);
-        view.addOnLayoutChangeListener(new OnLayoutChangeListener() {
-            public static final long DURATION = 250;
-
-            @Override
-            public void onLayoutChange(View v, int left, int top, int right, int bottom,
-                    int oldLeft, int oldTop, int oldRight, int oldBottom) {
-                final int afterBottom = content.getBottom();
-                v.removeOnLayoutChangeListener(this);
-                final ObjectAnimator animator = ObjectAnimator.ofInt(content, "bottom",
-                        beforeBottom, afterBottom);
-                animator.setDuration(DURATION);
-                animator.addListener(new AnimatorListenerAdapter() {
-                    @Override
-                    public void onAnimationEnd(Animator animation) {
-                        if (!visible) {
-                            detailGroup.setVisibility(View.GONE);
-                        }
-                    }
-                });
-                animator.start();
-            }
-        });
-    }
-
     private static void setHeight(View detailGroup, int height) {
         final LayoutParams params = detailGroup.getLayoutParams();
         params.height = height;
diff --git a/src/com/android/settings/datausage/DataUsageSummary.java b/src/com/android/settings/datausage/DataUsageSummary.java
index e284bed..c99a4ab 100644
--- a/src/com/android/settings/datausage/DataUsageSummary.java
+++ b/src/com/android/settings/datausage/DataUsageSummary.java
@@ -77,6 +77,11 @@
     private int mDataUsageTemplate;
 
     @Override
+    protected int getHelpResource() {
+        return R.string.help_url_data_usage;
+    }
+
+    @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
 
diff --git a/src/com/android/settings/deviceinfo/AdditionalSystemUpdatePreferenceController.java b/src/com/android/settings/deviceinfo/AdditionalSystemUpdatePreferenceController.java
index 6dd6aba..3435b53 100644
--- a/src/com/android/settings/deviceinfo/AdditionalSystemUpdatePreferenceController.java
+++ b/src/com/android/settings/deviceinfo/AdditionalSystemUpdatePreferenceController.java
@@ -34,13 +34,13 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return mContext.getResources().getBoolean(
                 com.android.settings.R.bool.config_additional_system_update_setting_enable);
     }
 
     @Override
-    protected String getPreferenceKey() {
+    public String getPreferenceKey() {
         return KEY_UPDATE_SETTING;
     }
 }
diff --git a/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java b/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java
new file mode 100644
index 0000000..d118a45
--- /dev/null
+++ b/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java
@@ -0,0 +1,199 @@
+/*
+ * 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.deviceinfo;
+
+import android.app.Activity;
+import android.app.Fragment;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Build;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+import android.text.TextUtils;
+import android.widget.Toast;
+
+import com.android.settings.ChooseLockSettingsHelper;
+import com.android.settings.DevelopmentSettings;
+import com.android.settings.R;
+import com.android.settings.Utils;
+import com.android.settings.core.PreferenceController;
+import com.android.settings.core.lifecycle.LifecycleObserver;
+import com.android.settings.core.lifecycle.events.OnResume;
+import com.android.settings.search.Index;
+import com.android.settingslib.RestrictedLockUtils;
+
+public class BuildNumberPreferenceController extends PreferenceController
+        implements LifecycleObserver, OnResume {
+
+    static final int TAPS_TO_BE_A_DEVELOPER = 7;
+    static final int REQUEST_CONFIRM_PASSWORD_FOR_DEV_PREF = 100;
+
+    private static final String KEY_BUILD_NUMBER = "build_number";
+
+    private final Activity mActivity;
+    private final Fragment mFragment;
+    private final UserManager mUm;
+
+    private Toast mDevHitToast;
+    private RestrictedLockUtils.EnforcedAdmin mDebuggingFeaturesDisallowedAdmin;
+    private boolean mDebuggingFeaturesDisallowedBySystem;
+    private int mDevHitCountdown;
+    private boolean mProcessingLastDevHit;
+
+    public BuildNumberPreferenceController(Context context, Activity activity, Fragment fragment) {
+        super(context);
+        mActivity = activity;
+        mFragment = fragment;
+        mUm = UserManager.get(activity);
+    }
+
+    @Override
+    public void displayPreference(PreferenceScreen screen) {
+        super.displayPreference(screen);
+        final Preference preference = screen.findPreference(KEY_BUILD_NUMBER);
+        if (preference != null) {
+            try {
+                preference.setSummary(Build.DISPLAY);
+                preference.setEnabled(true);
+            } catch (Exception e) {
+                preference.setSummary(R.string.device_info_default);
+            }
+        }
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return KEY_BUILD_NUMBER;
+    }
+
+    @Override
+    public boolean isAvailable() {
+        return true;
+    }
+
+    @Override
+    public void onResume() {
+        mDebuggingFeaturesDisallowedAdmin = RestrictedLockUtils.checkIfRestrictionEnforced(
+                mContext, UserManager.DISALLOW_DEBUGGING_FEATURES, UserHandle.myUserId());
+        mDebuggingFeaturesDisallowedBySystem = RestrictedLockUtils.hasBaseUserRestriction(
+                mContext, UserManager.DISALLOW_DEBUGGING_FEATURES, UserHandle.myUserId());
+        mDevHitCountdown = mContext.getSharedPreferences(DevelopmentSettings.PREF_FILE,
+                Context.MODE_PRIVATE).getBoolean(DevelopmentSettings.PREF_SHOW,
+                android.os.Build.TYPE.equals("eng")) ? -1 : TAPS_TO_BE_A_DEVELOPER;
+        mDevHitToast = null;
+    }
+
+    @Override
+    public boolean handlePreferenceTreeClick(Preference preference) {
+        if (!TextUtils.equals(preference.getKey(), KEY_BUILD_NUMBER)) {
+            return false;
+        }
+        // Don't enable developer options for secondary users.
+        if (!mUm.isAdminUser()) {
+            return false;
+        }
+
+        // Don't enable developer options until device has been provisioned
+        if (!Utils.isDeviceProvisioned(mContext)) {
+            return false;
+        }
+
+        if (mUm.hasUserRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES)) {
+            if (mDebuggingFeaturesDisallowedAdmin != null &&
+                    !mDebuggingFeaturesDisallowedBySystem) {
+                RestrictedLockUtils.sendShowAdminSupportDetailsIntent(mContext,
+                        mDebuggingFeaturesDisallowedAdmin);
+            }
+            return false;
+        }
+
+        if (mDevHitCountdown > 0) {
+            mDevHitCountdown--;
+            if (mDevHitCountdown == 0 && !mProcessingLastDevHit) {
+                // Add 1 count back, then start password confirmation flow.
+                mDevHitCountdown++;
+                final ChooseLockSettingsHelper helper =
+                        new ChooseLockSettingsHelper(mActivity, mFragment);
+                mProcessingLastDevHit = helper.launchConfirmationActivity(
+                        REQUEST_CONFIRM_PASSWORD_FOR_DEV_PREF,
+                        mContext.getString(R.string.unlock_set_unlock_launch_picker_title));
+                if (!mProcessingLastDevHit) {
+                    enableDevelopmentSettings();
+                }
+            } else if (mDevHitCountdown > 0
+                    && mDevHitCountdown < (TAPS_TO_BE_A_DEVELOPER - 2)) {
+                if (mDevHitToast != null) {
+                    mDevHitToast.cancel();
+                }
+                mDevHitToast = Toast.makeText(mContext,
+                        mContext.getResources().getQuantityString(
+                                R.plurals.show_dev_countdown, mDevHitCountdown,
+                                mDevHitCountdown),
+                        Toast.LENGTH_SHORT);
+                mDevHitToast.show();
+            }
+        } else if (mDevHitCountdown < 0) {
+            if (mDevHitToast != null) {
+                mDevHitToast.cancel();
+            }
+            mDevHitToast = Toast.makeText(mContext, R.string.show_dev_already,
+                    Toast.LENGTH_LONG);
+            mDevHitToast.show();
+        }
+        return true;
+    }
+
+    /**
+     * Handles password confirmation result.
+     *
+     * @return if activity result is handled.
+     */
+    public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (requestCode != REQUEST_CONFIRM_PASSWORD_FOR_DEV_PREF) {
+            return false;
+        }
+        if (resultCode == Activity.RESULT_OK) {
+            enableDevelopmentSettings();
+        }
+        mProcessingLastDevHit = false;
+        return true;
+    }
+
+    /**
+     * Enables development settings. Only call this after confirming password.
+     */
+    private void enableDevelopmentSettings() {
+        mDevHitCountdown = 0;
+        mProcessingLastDevHit = false;
+        mContext.getSharedPreferences(DevelopmentSettings.PREF_FILE,
+                Context.MODE_PRIVATE).edit()
+                .putBoolean(DevelopmentSettings.PREF_SHOW, true)
+                .apply();
+        if (mDevHitToast != null) {
+            mDevHitToast.cancel();
+        }
+        mDevHitToast = Toast.makeText(mContext, R.string.show_dev_on,
+                Toast.LENGTH_LONG);
+        mDevHitToast.show();
+        // This is good time to index the Developer Options
+        Index.getInstance(
+                mContext.getApplicationContext()).updateFromClassNameResource(
+                DevelopmentSettings.class.getName(), true, true);
+    }
+}
diff --git a/src/com/android/settings/deviceinfo/ManageStoragePreferenceController.java b/src/com/android/settings/deviceinfo/ManageStoragePreferenceController.java
index add4781..e64525b 100644
--- a/src/com/android/settings/deviceinfo/ManageStoragePreferenceController.java
+++ b/src/com/android/settings/deviceinfo/ManageStoragePreferenceController.java
@@ -17,13 +17,10 @@
 
 import android.content.Context;
 import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceScreen;
 
 import com.android.settings.R;
 import com.android.settings.core.PreferenceController;
 
-import java.util.List;
-
 public class ManageStoragePreferenceController extends PreferenceController {
 
     public static final String KEY_MANAGE_STORAGE = "pref_manage_storage";
@@ -33,7 +30,7 @@
     }
 
     @Override
-    protected String getPreferenceKey() {
+    public String getPreferenceKey() {
         return KEY_MANAGE_STORAGE;
     }
 
@@ -43,7 +40,7 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return mContext.getResources().getBoolean(R.bool.config_storage_manager_settings_enabled);
     }
 }
diff --git a/src/com/android/settings/deviceinfo/SystemUpdatePreferenceController.java b/src/com/android/settings/deviceinfo/SystemUpdatePreferenceController.java
index 449847a..0bf43e2 100644
--- a/src/com/android/settings/deviceinfo/SystemUpdatePreferenceController.java
+++ b/src/com/android/settings/deviceinfo/SystemUpdatePreferenceController.java
@@ -46,12 +46,12 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return mUm.isAdminUser();
     }
 
     @Override
-    protected String getPreferenceKey() {
+    public String getPreferenceKey() {
         return KEY_SYSTEM_UPDATE_SETTINGS;
     }
 
diff --git a/src/com/android/settings/display/AutoBrightnessPreferenceController.java b/src/com/android/settings/display/AutoBrightnessPreferenceController.java
index 934ccf2..df2000e 100644
--- a/src/com/android/settings/display/AutoBrightnessPreferenceController.java
+++ b/src/com/android/settings/display/AutoBrightnessPreferenceController.java
@@ -17,7 +17,6 @@
 import android.provider.Settings;
 import android.support.v14.preference.SwitchPreference;
 import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceScreen;
 
 import com.android.settings.core.PreferenceController;
 
@@ -36,13 +35,13 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return mContext.getResources().getBoolean(
                 com.android.internal.R.bool.config_automatic_brightness_available);
     }
 
     @Override
-    protected String getPreferenceKey() {
+    public String getPreferenceKey() {
         return KEY_AUTO_BRIGHTNESS;
     }
 
@@ -52,15 +51,10 @@
     }
 
     @Override
-    public void updateState(PreferenceScreen screen) {
-        final SwitchPreference preference =
-                (SwitchPreference) screen.findPreference(KEY_AUTO_BRIGHTNESS);
-        if (preference == null) {
-            return;
-        }
+    public void updateState(Preference preference) {
         int brightnessMode = Settings.System.getInt(mContext.getContentResolver(),
                 SCREEN_BRIGHTNESS_MODE, SCREEN_BRIGHTNESS_MODE_MANUAL);
-        preference.setChecked(brightnessMode != SCREEN_BRIGHTNESS_MODE_MANUAL);
+        ((SwitchPreference) preference).setChecked(brightnessMode != SCREEN_BRIGHTNESS_MODE_MANUAL);
     }
 
     @Override
diff --git a/src/com/android/settings/display/AutoRotatePreferenceController.java b/src/com/android/settings/display/AutoRotatePreferenceController.java
index f28e1d6..567393e 100644
--- a/src/com/android/settings/display/AutoRotatePreferenceController.java
+++ b/src/com/android/settings/display/AutoRotatePreferenceController.java
@@ -17,7 +17,6 @@
 import android.content.res.Configuration;
 import android.support.v7.preference.DropDownPreference;
 import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceScreen;
 
 import com.android.internal.logging.MetricsProto;
 import com.android.internal.view.RotationPolicy;
@@ -38,14 +37,13 @@
     }
 
     @Override
-    protected String getPreferenceKey() {
+    public String getPreferenceKey() {
         return KEY_AUTO_ROTATE;
     }
 
     @Override
-    public void updateState(PreferenceScreen screen) {
-        final DropDownPreference rotatePreference =
-                (DropDownPreference) screen.findPreference(KEY_AUTO_ROTATE);
+    public void updateState(Preference preference) {
+        final DropDownPreference rotatePreference = (DropDownPreference) preference;
         final int rotateLockedResourceId;
         // The following block sets the string used when rotation is locked.
         // If the device locks specifically to portrait or landscape (rather than current
@@ -69,14 +67,13 @@
                 1 : 0);
     }
 
-
     @Override
     public boolean handlePreferenceTreeClick(Preference preference) {
         return false;
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return RotationPolicy.isRotationLockToggleVisible(mContext);
     }
 
diff --git a/src/com/android/settings/display/CameraGesturePreferenceController.java b/src/com/android/settings/display/CameraGesturePreferenceController.java
index 98486c5..a3dc6cf 100644
--- a/src/com/android/settings/display/CameraGesturePreferenceController.java
+++ b/src/com/android/settings/display/CameraGesturePreferenceController.java
@@ -18,7 +18,6 @@
 import android.provider.Settings;
 import android.support.v14.preference.SwitchPreference;
 import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceScreen;
 
 import com.android.settings.core.PreferenceController;
 
@@ -34,7 +33,7 @@
     }
 
     @Override
-    protected String getPreferenceKey() {
+    public String getPreferenceKey() {
         return KEY_CAMERA_GESTURE;
     }
 
@@ -44,18 +43,14 @@
     }
 
     @Override
-    public void updateState(PreferenceScreen screen) {
-        final SwitchPreference preference =
-                (SwitchPreference) screen.findPreference(KEY_CAMERA_GESTURE);
-        if (preference != null) {
-            int value = Settings.Secure.getInt(mContext.getContentResolver(),
-                    CAMERA_GESTURE_DISABLED, 0);
-            preference.setChecked(value == 0);
-        }
+    public void updateState(Preference preference) {
+        int value = Settings.Secure.getInt(mContext.getContentResolver(),
+                CAMERA_GESTURE_DISABLED, 0);
+        ((SwitchPreference) preference).setChecked(value == 0);
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         boolean configSet = mContext.getResources().getInteger(
                 com.android.internal.R.integer.config_cameraLaunchGestureSensorType) != -1;
         return configSet
diff --git a/src/com/android/settings/display/DozePreferenceController.java b/src/com/android/settings/display/DozePreferenceController.java
index 9fcc807..16b0e81 100644
--- a/src/com/android/settings/display/DozePreferenceController.java
+++ b/src/com/android/settings/display/DozePreferenceController.java
@@ -19,7 +19,6 @@
 import android.provider.Settings;
 import android.support.v14.preference.SwitchPreference;
 import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceScreen;
 import android.text.TextUtils;
 
 import com.android.settings.core.PreferenceController;
@@ -42,7 +41,7 @@
     }
 
     @Override
-    protected String getPreferenceKey() {
+    public String getPreferenceKey() {
         return KEY_DOZE;
     }
 
@@ -55,13 +54,9 @@
     }
 
     @Override
-    public void updateState(PreferenceScreen screen) {
-        final SwitchPreference preference = (SwitchPreference) screen.findPreference(KEY_DOZE);
-        // Update doze if it is available.
-        if (preference != null) {
-            int value = Settings.Secure.getInt(mContext.getContentResolver(), DOZE_ENABLED, 1);
-            preference.setChecked(value != 0);
-        }
+    public void updateState(Preference preference) {
+        int value = Settings.Secure.getInt(mContext.getContentResolver(), DOZE_ENABLED, 1);
+        ((SwitchPreference) preference).setChecked(value != 0);
     }
 
     @Override
@@ -72,7 +67,7 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         String name = Build.IS_DEBUGGABLE ? SystemProperties.get("debug.doze.component") : null;
         if (TextUtils.isEmpty(name)) {
             name = mContext.getResources().getString(
diff --git a/src/com/android/settings/display/FontSizePreferenceController.java b/src/com/android/settings/display/FontSizePreferenceController.java
index 9981fcd..5014bda 100644
--- a/src/com/android/settings/display/FontSizePreferenceController.java
+++ b/src/com/android/settings/display/FontSizePreferenceController.java
@@ -17,7 +17,6 @@
 import android.content.res.Resources;
 import android.provider.Settings;
 import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceScreen;
 
 import com.android.settings.R;
 import com.android.settings.accessibility.ToggleFontSizePreferenceFragment;
@@ -32,21 +31,17 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return true;
     }
 
     @Override
-    protected String getPreferenceKey() {
+    public String getPreferenceKey() {
         return KEY_FONT_SIZE;
     }
 
     @Override
-    public void updateState(PreferenceScreen screen) {
-        final Preference preference = screen.findPreference(KEY_FONT_SIZE);
-        if (preference == null) {
-            return;
-        }
+    public void updateState(Preference preference) {
         final float currentScale = Settings.System.getFloat(mContext.getContentResolver(),
                 Settings.System.FONT_SCALE, 1.0f);
         final Resources res = mContext.getResources();
diff --git a/src/com/android/settings/display/LiftToWakePreferenceController.java b/src/com/android/settings/display/LiftToWakePreferenceController.java
index 0b573cf..81ba5f5 100644
--- a/src/com/android/settings/display/LiftToWakePreferenceController.java
+++ b/src/com/android/settings/display/LiftToWakePreferenceController.java
@@ -19,7 +19,6 @@
 import android.provider.Settings;
 import android.support.v14.preference.SwitchPreference;
 import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceScreen;
 
 import com.android.settings.core.PreferenceController;
 
@@ -35,13 +34,13 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         SensorManager sensors = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);
         return sensors != null && sensors.getDefaultSensor(Sensor.TYPE_WAKE_GESTURE) != null;
     }
 
     @Override
-    protected String getPreferenceKey() {
+    public String getPreferenceKey() {
         return KEY_LIFT_TO_WAKE;
     }
 
@@ -58,13 +57,8 @@
     }
 
     @Override
-    public void updateState(PreferenceScreen screen) {
-        final SwitchPreference pref = (SwitchPreference) screen.findPreference(KEY_LIFT_TO_WAKE);
-        // Update lift-to-wake if it is available.
-        if (pref != null) {
-            int value =
-                    Settings.Secure.getInt(mContext.getContentResolver(), WAKE_GESTURE_ENABLED, 0);
-            pref.setChecked(value != 0);
-        }
+    public void updateState(Preference preference) {
+        int value = Settings.Secure.getInt(mContext.getContentResolver(), WAKE_GESTURE_ENABLED, 0);
+        ((SwitchPreference) preference).setChecked(value != 0);
     }
 }
diff --git a/src/com/android/settings/display/NightDisplayPreferenceController.java b/src/com/android/settings/display/NightDisplayPreferenceController.java
index d7191d2..9cf2409 100644
--- a/src/com/android/settings/display/NightDisplayPreferenceController.java
+++ b/src/com/android/settings/display/NightDisplayPreferenceController.java
@@ -33,12 +33,12 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return NightDisplayController.isAvailable(mContext);
     }
 
     @Override
-    protected String getPreferenceKey() {
+    public String getPreferenceKey() {
         return KEY_NIGHT_DISPLAY;
     }
 }
diff --git a/src/com/android/settings/display/NightModePreferenceController.java b/src/com/android/settings/display/NightModePreferenceController.java
index 7b3c584..874d84f 100644
--- a/src/com/android/settings/display/NightModePreferenceController.java
+++ b/src/com/android/settings/display/NightModePreferenceController.java
@@ -35,12 +35,12 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return false;
     }
 
     @Override
-    protected String getPreferenceKey() {
+    public String getPreferenceKey() {
         return KEY_NIGHT_MODE;
     }
 
diff --git a/src/com/android/settings/display/ScreenSaverPreferenceController.java b/src/com/android/settings/display/ScreenSaverPreferenceController.java
index 6376fcf..7335b1f 100644
--- a/src/com/android/settings/display/ScreenSaverPreferenceController.java
+++ b/src/com/android/settings/display/ScreenSaverPreferenceController.java
@@ -15,7 +15,6 @@
 
 import android.content.Context;
 import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceScreen;
 
 import com.android.settings.DreamSettings;
 import com.android.settings.core.PreferenceController;
@@ -29,13 +28,13 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return mContext.getResources().getBoolean(
                 com.android.internal.R.bool.config_dreamsSupported);
     }
 
     @Override
-    protected String getPreferenceKey() {
+    public String getPreferenceKey() {
         return KEY_SCREEN_SAVER;
     }
 
@@ -45,11 +44,7 @@
     }
 
     @Override
-    public void updateState(PreferenceScreen screen) {
-        final Preference preference = screen.findPreference(KEY_SCREEN_SAVER);
-        if (preference != null) {
-            preference.setSummary(
-                    DreamSettings.getSummaryTextWithDreamName(mContext));
-        }
+    public void updateState(Preference preference) {
+        preference.setSummary(DreamSettings.getSummaryTextWithDreamName(mContext));
     }
 }
diff --git a/src/com/android/settings/display/TapToWakePreferenceController.java b/src/com/android/settings/display/TapToWakePreferenceController.java
index 6d1681f..18c877a 100644
--- a/src/com/android/settings/display/TapToWakePreferenceController.java
+++ b/src/com/android/settings/display/TapToWakePreferenceController.java
@@ -17,7 +17,6 @@
 import android.provider.Settings;
 import android.support.v14.preference.SwitchPreference;
 import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceScreen;
 
 import com.android.settings.core.PreferenceController;
 
@@ -31,12 +30,12 @@
     }
 
     @Override
-    protected String getPreferenceKey() {
+    public String getPreferenceKey() {
         return KEY_TAP_TO_WAKE;
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return mContext.getResources().getBoolean(
                 com.android.internal.R.bool.config_supportDoubleTapWake);
     }
@@ -47,14 +46,10 @@
     }
 
     @Override
-    public void updateState(PreferenceScreen screen) {
-        final SwitchPreference preference =
-                (SwitchPreference) screen.findPreference(KEY_TAP_TO_WAKE);
-        if (preference != null) {
-            int value = Settings.Secure.getInt(
-                    mContext.getContentResolver(), Settings.Secure.DOUBLE_TAP_TO_WAKE, 0);
-            preference.setChecked(value != 0);
-        }
+    public void updateState(Preference preference) {
+        int value = Settings.Secure.getInt(
+                mContext.getContentResolver(), Settings.Secure.DOUBLE_TAP_TO_WAKE, 0);
+        ((SwitchPreference) preference).setChecked(value != 0);
     }
 
     @Override
diff --git a/src/com/android/settings/display/TimeoutPreferenceController.java b/src/com/android/settings/display/TimeoutPreferenceController.java
index 1295a47..d33f813 100644
--- a/src/com/android/settings/display/TimeoutPreferenceController.java
+++ b/src/com/android/settings/display/TimeoutPreferenceController.java
@@ -18,7 +18,6 @@
 import android.os.UserHandle;
 import android.provider.Settings;
 import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceScreen;
 import android.util.Log;
 
 import com.android.settings.R;
@@ -43,12 +42,12 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return true;
     }
 
     @Override
-    protected String getPreferenceKey() {
+    public String getPreferenceKey() {
         return KEY_SCREEN_TIMEOUT;
     }
 
@@ -58,15 +57,11 @@
     }
 
     @Override
-    public void updateState(PreferenceScreen screen) {
-        final TimeoutListPreference preference =
-                (TimeoutListPreference) screen.findPreference(KEY_SCREEN_TIMEOUT);
-        if (preference == null) {
-            return;
-        }
+    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);
-        preference.setValue(String.valueOf(currentTimeout));
+        timeoutListPreference.setValue(String.valueOf(currentTimeout));
         final DevicePolicyManager dpm = (DevicePolicyManager) mContext.getSystemService(
                 Context.DEVICE_POLICY_SERVICE);
         if (dpm != null) {
@@ -74,9 +69,9 @@
                     RestrictedLockUtils.checkIfMaximumTimeToLockIsSet(mContext);
             final long maxTimeout =
                     dpm.getMaximumTimeToLockForUserAndProfiles(UserHandle.myUserId());
-            preference.removeUnusableTimeouts(maxTimeout, admin);
+            timeoutListPreference.removeUnusableTimeouts(maxTimeout, admin);
         }
-        updateTimeoutPreferenceDescription(preference, currentTimeout);
+        updateTimeoutPreferenceDescription(timeoutListPreference, currentTimeout);
     }
 
     @Override
diff --git a/src/com/android/settings/display/VrDisplayPreferenceController.java b/src/com/android/settings/display/VrDisplayPreferenceController.java
index c340759..61c3ed2 100644
--- a/src/com/android/settings/display/VrDisplayPreferenceController.java
+++ b/src/com/android/settings/display/VrDisplayPreferenceController.java
@@ -19,7 +19,6 @@
 import android.provider.Settings;
 import android.support.v7.preference.DropDownPreference;
 import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceScreen;
 import android.util.Log;
 
 import com.android.settings.R;
@@ -36,24 +35,19 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         final PackageManager pm = mContext.getPackageManager();
         return pm.hasSystemFeature(PackageManager.FEATURE_VR_MODE_HIGH_PERFORMANCE);
     }
 
     @Override
-    protected String getPreferenceKey() {
+    public String getPreferenceKey() {
         return KEY_VR_DISPLAY_PREF;
     }
 
     @Override
-    public void updateState(PreferenceScreen screen) {
-        final DropDownPreference pref =
-                (DropDownPreference) screen.findPreference(KEY_VR_DISPLAY_PREF);
-        if (pref == null) {
-            Log.d(TAG, "Could not find VR display preference.");
-            return;
-        }
+    public void updateState(Preference preference) {
+        final DropDownPreference pref = (DropDownPreference) preference;
         pref.setEntries(new CharSequence[]{
                 mContext.getString(R.string.display_vr_pref_low_persistence),
                 mContext.getString(R.string.display_vr_pref_off),
diff --git a/src/com/android/settings/display/WallpaperPreferenceController.java b/src/com/android/settings/display/WallpaperPreferenceController.java
index 32e9abc..8352377 100644
--- a/src/com/android/settings/display/WallpaperPreferenceController.java
+++ b/src/com/android/settings/display/WallpaperPreferenceController.java
@@ -16,7 +16,6 @@
 import android.content.Context;
 import android.os.UserHandle;
 import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceScreen;
 
 import com.android.settings.core.PreferenceController;
 import com.android.settingslib.RestrictedLockUtils;
@@ -33,18 +32,18 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return true;
     }
 
     @Override
-    protected String getPreferenceKey() {
+    public String getPreferenceKey() {
         return KEY_WALLPAPER;
     }
 
     @Override
-    public void updateState(PreferenceScreen screen) {
-        disablePreferenceIfManaged(screen);
+    public void updateState(Preference preference) {
+        disablePreferenceIfManaged((RestrictedPreference) preference);
     }
 
     @Override
@@ -52,9 +51,7 @@
         return false;
     }
 
-    private void disablePreferenceIfManaged(PreferenceScreen screen) {
-        final RestrictedPreference pref =
-                (RestrictedPreference) screen.findPreference(KEY_WALLPAPER);
+    private void disablePreferenceIfManaged(RestrictedPreference pref) {
         final String restriction = DISALLOW_SET_WALLPAPER;
         if (pref != null) {
             pref.setDisabledByAdmin(null);
diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java b/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java
index cd56458..fa108bb 100644
--- a/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java
+++ b/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java
@@ -23,13 +23,12 @@
 import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.Dialog;
-import android.app.DialogFragment;
 import android.content.DialogInterface;
 import android.content.Intent;
-import android.content.res.ColorStateList;
 import android.graphics.drawable.Animatable2;
 import android.graphics.drawable.AnimatedVectorDrawable;
 import android.graphics.drawable.Drawable;
+import android.graphics.drawable.LayerDrawable;
 import android.hardware.fingerprint.FingerprintManager;
 import android.os.Bundle;
 import android.os.UserHandle;
@@ -37,7 +36,6 @@
 import android.view.View;
 import android.view.animation.AnimationUtils;
 import android.view.animation.Interpolator;
-import android.widget.ImageView;
 import android.widget.ProgressBar;
 import android.widget.TextView;
 
@@ -75,7 +73,6 @@
     private static final int ICON_TOUCH_COUNT_SHOW_UNTIL_DIALOG_SHOWN = 3;
 
     private ProgressBar mProgressBar;
-    private ImageView mFingerprintAnimator;
     private ObjectAnimator mProgressAnim;
     private TextView mStartMessage;
     private TextView mRepeatMessage;
@@ -87,6 +84,7 @@
     private FingerprintEnrollSidecar mSidecar;
     private boolean mAnimationCancelled;
     private AnimatedVectorDrawable mIconAnimationDrawable;
+    private Drawable mIconBackgroundDrawable;
     private int mIndicatorBackgroundRestingColor;
     private int mIndicatorBackgroundActivatedColor;
     private boolean mRestoring;
@@ -100,8 +98,11 @@
         mRepeatMessage = (TextView) findViewById(R.id.repeat_message);
         mErrorText = (TextView) findViewById(R.id.error_text);
         mProgressBar = (ProgressBar) findViewById(R.id.fingerprint_progress_bar);
-        mFingerprintAnimator = (ImageView) findViewById(R.id.fingerprint_animator);
-        mIconAnimationDrawable = (AnimatedVectorDrawable) mFingerprintAnimator.getDrawable();
+        final LayerDrawable fingerprintDrawable = (LayerDrawable) mProgressBar.getBackground();
+        mIconAnimationDrawable = (AnimatedVectorDrawable)
+                fingerprintDrawable.findDrawableByLayerId(R.id.fingerprint_animation);
+        mIconBackgroundDrawable =
+                fingerprintDrawable.findDrawableByLayerId(R.id.fingerprint_background);
         mIconAnimationDrawable.registerAnimationCallback(mIconAnimationCallback);
         mFastOutSlowInInterpolator = AnimationUtils.loadInterpolator(
                 this, android.R.interpolator.fast_out_slow_in);
@@ -109,7 +110,7 @@
                 this, android.R.interpolator.linear_out_slow_in);
         mFastOutLinearInInterpolator = AnimationUtils.loadInterpolator(
                 this, android.R.interpolator.fast_out_linear_in);
-        mFingerprintAnimator.setOnTouchListener(new View.OnTouchListener() {
+        mProgressBar.setOnTouchListener(new View.OnTouchListener() {
             @Override
             public boolean onTouch(View v, MotionEvent event) {
                 if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
@@ -117,12 +118,12 @@
                     if (mIconTouchCount == ICON_TOUCH_COUNT_SHOW_UNTIL_DIALOG_SHOWN) {
                         showIconTouchDialog();
                     } else {
-                        mFingerprintAnimator.postDelayed(mShowDialogRunnable,
+                        mProgressBar.postDelayed(mShowDialogRunnable,
                                 ICON_TOUCH_DURATION_UNTIL_DIALOG_SHOWN);
                     }
                 } else if (event.getActionMasked() == MotionEvent.ACTION_CANCEL
                         || event.getActionMasked() == MotionEvent.ACTION_UP) {
-                    mFingerprintAnimator.removeCallbacks(mShowDialogRunnable);
+                    mProgressBar.removeCallbacks(mShowDialogRunnable);
                 }
                 return true;
             }
@@ -131,6 +132,7 @@
                 = getColor(R.color.fingerprint_indicator_background_resting);
         mIndicatorBackgroundActivatedColor
                 = getColor(R.color.fingerprint_indicator_background_activated);
+        mIconBackgroundDrawable.setTint(mIndicatorBackgroundRestingColor);
         mRestoring = savedInstanceState != null;
     }
 
@@ -213,8 +215,7 @@
                 new ValueAnimator.AnimatorUpdateListener() {
             @Override
             public void onAnimationUpdate(ValueAnimator animation) {
-                mFingerprintAnimator.setBackgroundTintList(ColorStateList.valueOf(
-                        (Integer) animation.getAnimatedValue()));
+                mIconBackgroundDrawable.setTint((Integer) animation.getAnimatedValue());
             }
         };
         anim.addUpdateListener(listener);
@@ -400,7 +401,7 @@
             }
 
             // Start animation after it has ended.
-            mFingerprintAnimator.post(new Runnable() {
+            mProgressBar.post(new Runnable() {
                 @Override
                 public void run() {
                     startIconAnimation();
diff --git a/src/com/android/settings/fuelgauge/BatteryEntry.java b/src/com/android/settings/fuelgauge/BatteryEntry.java
index b0e6969..aa71252 100644
--- a/src/com/android/settings/fuelgauge/BatteryEntry.java
+++ b/src/com/android/settings/fuelgauge/BatteryEntry.java
@@ -22,6 +22,7 @@
 import android.content.pm.IPackageManager;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
 import android.content.pm.UserInfo;
 import android.graphics.drawable.Drawable;
 import android.os.Handler;
@@ -45,6 +46,8 @@
     public static final int MSG_UPDATE_NAME_ICON = 1;
     public static final int MSG_REPORT_FULLY_DRAWN = 2;
 
+    private static final String TAG = "BatteryEntry";
+
     static final HashMap<String,UidToDetail> sUidCache = new HashMap<String,UidToDetail>();
 
     static final ArrayList<BatteryEntry> mRequestQueue = new ArrayList<BatteryEntry>();
@@ -160,7 +163,23 @@
                 iconId = R.drawable.ic_settings_display;
                 break;
             case APP:
-                name = sipper.packageWithHighestDrain;
+                PackageManager pm = context.getPackageManager();
+                sipper.mPackages = pm.getPackagesForUid(sipper.uidObj.getUid());
+                // Apps should only have one package
+                if (sipper.mPackages == null || sipper.mPackages.length != 1) {
+                    name = sipper.packageWithHighestDrain;
+                } else {
+                    defaultPackageName = pm.getPackagesForUid(sipper.uidObj.getUid())[0];
+                    try {
+                        ApplicationInfo appInfo =
+                            pm.getApplicationInfo(defaultPackageName, 0 /* no flags */);
+                        name = pm.getApplicationLabel(appInfo).toString();
+                    } catch (NameNotFoundException e) {
+                        Log.d(TAG, "PackageManager failed to retrieve ApplicationInfo for: "
+                            + defaultPackageName);
+                        name = defaultPackageName;
+                    }
+                }
                 break;
             case USER: {
                 UserInfo info = um.getUserInfo(sipper.userId);
@@ -246,7 +265,9 @@
 
         PackageManager pm = context.getPackageManager();
         final int uid = sipper.uidObj.getUid();
-        sipper.mPackages = pm.getPackagesForUid(uid);
+        if (sipper.mPackages == null) {
+            sipper.mPackages = pm.getPackagesForUid(uid);
+        }
         if (sipper.mPackages != null) {
             String[] packageLabels = new String[sipper.mPackages.length];
             System.arraycopy(sipper.mPackages, 0, packageLabels, 0, sipper.mPackages.length);
@@ -259,7 +280,7 @@
                     final ApplicationInfo ai = ipm.getApplicationInfo(packageLabels[i],
                             0 /* no flags */, userId);
                     if (ai == null) {
-                        Log.d(PowerUsageSummary.TAG, "Retrieving null app info for package "
+                        Log.d(TAG, "Retrieving null app info for package "
                                 + packageLabels[i] + ", user " + userId);
                         continue;
                     }
@@ -273,7 +294,7 @@
                         break;
                     }
                 } catch (RemoteException e) {
-                    Log.d(PowerUsageSummary.TAG, "Error while retrieving app info for package "
+                    Log.d(TAG, "Error while retrieving app info for package "
                             + packageLabels[i] + ", user " + userId, e);
                 }
             }
@@ -286,7 +307,7 @@
                     try {
                         final PackageInfo pi = ipm.getPackageInfo(pkgName, 0 /* no flags */, userId);
                         if (pi == null) {
-                            Log.d(PowerUsageSummary.TAG, "Retrieving null package info for package "
+                            Log.d(TAG, "Retrieving null package info for package "
                                     + pkgName + ", user " + userId);
                             continue;
                         }
@@ -303,7 +324,7 @@
                             }
                         }
                     } catch (RemoteException e) {
-                        Log.d(PowerUsageSummary.TAG, "Error while retrieving package info for package "
+                        Log.d(TAG, "Error while retrieving package info for package "
                                 + pkgName + ", user " + userId, e);
                     }
                 }
diff --git a/src/com/android/settings/gestures/GesturePreference.java b/src/com/android/settings/gestures/GesturePreference.java
index 1909dcd..5a64a5a 100644
--- a/src/com/android/settings/gestures/GesturePreference.java
+++ b/src/com/android/settings/gestures/GesturePreference.java
@@ -150,6 +150,10 @@
                         playButton.setVisibility(View.VISIBLE);
                     }
                 }
+                if (mMediaPlayer != null && !mMediaPlayer.isPlaying() &&
+                        playButton.getVisibility() != View.VISIBLE) {
+                    playButton.setVisibility(View.VISIBLE);
+                }
             }
         });
 
@@ -175,4 +179,10 @@
         }
     }
 
+    void onViewInvisible() {
+        if (mMediaPlayer != null && mMediaPlayer.isPlaying()) {
+            mMediaPlayer.pause();
+        }
+    }
+
 }
diff --git a/src/com/android/settings/gestures/GestureSettings.java b/src/com/android/settings/gestures/GestureSettings.java
index ad9955c..c68d922 100644
--- a/src/com/android/settings/gestures/GestureSettings.java
+++ b/src/com/android/settings/gestures/GestureSettings.java
@@ -20,9 +20,8 @@
 import android.content.res.Resources;
 import android.hardware.Sensor;
 import android.hardware.SensorManager;
-import android.os.Build;
 import android.os.Bundle;
-import android.os.SystemProperties;
+import android.os.UserHandle;
 import android.provider.SearchIndexableResource;
 import android.provider.Settings.Secure;
 import android.support.v7.preference.Preference;
@@ -32,11 +31,12 @@
 import android.view.View;
 import android.view.ViewGroup;
 
+import com.android.internal.hardware.AmbientDisplayConfiguration;
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.R;
+import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.search.Indexable;
-import com.android.settings.SettingsPreferenceFragment;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -53,17 +53,21 @@
     private static final String PREF_KEY_DOUBLE_TAP_POWER = "gesture_double_tap_power";
     private static final String PREF_KEY_DOUBLE_TWIST = "gesture_double_twist";
     private static final String PREF_KEY_PICK_UP = "gesture_pick_up";
-    private static final String PREF_KEY_SWIPE_DOWN_FINGERPRINT = "gesture_swipe_down_fingerprint";
     private static final String PREF_KEY_DOUBLE_TAP_SCREEN = "gesture_double_tap_screen";
     private static final String DEBUG_DOZE_COMPONENT = "debug.doze.component";
 
     private List<GesturePreference> mPreferences;
+    private SwipeToNotificationPreferenceController mSwipeToNotificationPreferenceController;
+
+    private AmbientDisplayConfiguration mAmbientConfig;
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         addPreferencesFromResource(R.xml.gesture_settings);
         Context context = getActivity();
+        mSwipeToNotificationPreferenceController =
+                new SwipeToNotificationPreferenceController(context);
         mPreferences = new ArrayList();
 
         // Double tap power for camera
@@ -76,26 +80,22 @@
         }
 
         // Ambient Display
-        boolean dozeEnabled = isDozeAvailable(context);
-        if (dozeEnabled && isPickupAvailable(context)) {
-            int pickup = Secure.getInt(getContentResolver(), Secure.DOZE_PULSE_ON_PICK_UP, 1);
-            addPreference(PREF_KEY_PICK_UP, pickup != 0);
+        mAmbientConfig = new AmbientDisplayConfiguration(context);
+        if (mAmbientConfig.pulseOnPickupAvailable()) {
+            boolean pickup = mAmbientConfig.pulseOnPickupEnabled(UserHandle.myUserId());
+            addPreference(PREF_KEY_PICK_UP, pickup);
         } else {
             removePreference(PREF_KEY_PICK_UP);
         }
-        if (dozeEnabled && isDoubleTapAvailable(context)) {
-            int doubleTap = Secure.getInt(getContentResolver(), Secure.DOZE_PULSE_ON_DOUBLE_TAP, 1);
-            addPreference(PREF_KEY_DOUBLE_TAP_SCREEN, doubleTap != 0);
+        if (mAmbientConfig.pulseOnDoubleTapAvailable()) {
+            boolean doubleTap = mAmbientConfig.pulseOnDoubleTapEnabled(UserHandle.myUserId());
+            addPreference(PREF_KEY_DOUBLE_TAP_SCREEN, doubleTap);
         } else {
             removePreference(PREF_KEY_DOUBLE_TAP_SCREEN);
         }
 
         // Fingerprint slide for notifications
-        if (isSystemUINavigationAvailable(context)) {
-            addPreference(PREF_KEY_SWIPE_DOWN_FINGERPRINT, isSystemUINavigationEnabled(context));
-        } else {
-            removePreference(PREF_KEY_SWIPE_DOWN_FINGERPRINT);
-        }
+        mSwipeToNotificationPreferenceController.displayPreference(getPreferenceScreen());
 
         // Double twist for camera mode
         if (isDoubleTwistAvailable(context)) {
@@ -110,7 +110,7 @@
 
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
+            Bundle savedInstanceState) {
         View view = super.onCreateView(inflater, container, savedInstanceState);
         RecyclerView listview = getListView();
         listview.addOnScrollListener(new RecyclerView.OnScrollListener() {
@@ -135,6 +135,13 @@
     }
 
     @Override
+    public void onResume() {
+        super.onResume();
+        mSwipeToNotificationPreferenceController.updateState(
+                findPreference(mSwipeToNotificationPreferenceController.getPreferenceKey()));
+    }
+
+    @Override
     public void onStart() {
         super.onStart();
         for (GesturePreference preference : mPreferences) {
@@ -143,6 +150,14 @@
     }
 
     @Override
+    public void onStop() {
+        super.onStop();
+        for (GesturePreference preference : mPreferences) {
+            preference.onViewInvisible();
+        }
+    }
+
+    @Override
     public boolean onPreferenceChange(Preference preference, Object newValue) {
         boolean enabled = (boolean) newValue;
         String key = preference.getKey();
@@ -153,9 +168,6 @@
             Secure.putInt(getContentResolver(), Secure.DOZE_PULSE_ON_PICK_UP, enabled ? 1 : 0);
         } else if (PREF_KEY_DOUBLE_TAP_SCREEN.equals(key)) {
             Secure.putInt(getContentResolver(), Secure.DOZE_PULSE_ON_DOUBLE_TAP, enabled ? 1 : 0);
-        } else if (PREF_KEY_SWIPE_DOWN_FINGERPRINT.equals(key)) {
-            Secure.putInt(getContentResolver(),
-                    Secure.SYSTEM_NAVIGATION_KEYS_ENABLED, enabled ? 1 : 0);
         } else if (PREF_KEY_DOUBLE_TWIST.equals(key)) {
             Secure.putInt(getContentResolver(),
                     Secure.CAMERA_DOUBLE_TWIST_TO_FLIP_ENABLED, enabled ? 1 : 0);
@@ -178,35 +190,11 @@
                 com.android.internal.R.bool.config_cameraDoubleTapPowerGestureEnabled);
     }
 
-    private static boolean isDozeAvailable(Context context) {
-        String name = Build.IS_DEBUGGABLE ? SystemProperties.get(DEBUG_DOZE_COMPONENT) : null;
-        if (TextUtils.isEmpty(name)) {
-            name = context.getResources().getString(
-                    com.android.internal.R.string.config_dozeComponent);
-        }
-        return !TextUtils.isEmpty(name);
-    }
-
-    private static boolean isSystemUINavigationAvailable(Context context) {
-        return context.getResources().getBoolean(
-                com.android.internal.R.bool.config_supportSystemNavigationKeys);
-    }
-
-    private static boolean isSystemUINavigationEnabled(Context context) {
-        return Secure.getInt(context.getContentResolver(), Secure.SYSTEM_NAVIGATION_KEYS_ENABLED, 0)
-                == 1;
-    }
-
     private static boolean isDoubleTwistAvailable(Context context) {
         return hasSensor(context, R.string.gesture_double_twist_sensor_name,
                 R.string.gesture_double_twist_sensor_vendor);
     }
 
-    private static boolean isPickupAvailable(Context context) {
-        return hasSensor(context, R.string.gesture_pickup_sensor_name,
-                R.string.gesture_pickup_sensor_vendor);
-    }
-
     private static boolean hasSensor(Context context, int nameResId, int vendorResId) {
         Resources resources = context.getResources();
         String name = resources.getString(nameResId);
@@ -223,11 +211,6 @@
         return false;
     }
 
-    private static boolean isDoubleTapAvailable(Context context) {
-        return context.getResources().getBoolean(
-                R.bool.config_gesture_double_tap_settings_enabled);
-    }
-
     private void addPreference(String key, boolean enabled) {
         GesturePreference preference = (GesturePreference) findPreference(key);
         preference.setChecked(enabled);
@@ -236,40 +219,41 @@
     }
 
     public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
-        new BaseSearchIndexProvider() {
-            @Override
-            public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
-                     boolean enabled) {
-                ArrayList<SearchIndexableResource> result =
-                        new ArrayList<SearchIndexableResource>();
+            new BaseSearchIndexProvider() {
+                @Override
+                public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
+                        boolean enabled) {
+                    ArrayList<SearchIndexableResource> result =
+                            new ArrayList<SearchIndexableResource>();
 
-                SearchIndexableResource sir = new SearchIndexableResource(context);
-                sir.xmlResId = R.xml.gesture_settings;
-                result.add(sir);
+                    SearchIndexableResource sir = new SearchIndexableResource(context);
+                    sir.xmlResId = R.xml.gesture_settings;
+                    result.add(sir);
 
-                return result;
-            }
+                    return result;
+                }
 
-            @Override
-            public List<String> getNonIndexableKeys(Context context) {
-                ArrayList<String> result = new ArrayList<String>();
-                if (!isCameraDoubleTapPowerGestureAvailable(context.getResources())) {
-                    result.add(PREF_KEY_DOUBLE_TAP_POWER);
+                @Override
+                public List<String> getNonIndexableKeys(Context context) {
+                    ArrayList<String> result = new ArrayList<String>();
+                    AmbientDisplayConfiguration ambientConfig
+                            = new AmbientDisplayConfiguration(context);
+                    if (!isCameraDoubleTapPowerGestureAvailable(context.getResources())) {
+                        result.add(PREF_KEY_DOUBLE_TAP_POWER);
+                    }
+                    if (!ambientConfig.pulseOnPickupAvailable()) {
+                        result.add(PREF_KEY_PICK_UP);
+                    }
+                    if (!ambientConfig.pulseOnDoubleTapAvailable()) {
+                        result.add(PREF_KEY_DOUBLE_TAP_SCREEN);
+                    }
+                    new SwipeToNotificationPreferenceController(context)
+                            .updateNonIndexableKeys(result);
+                    if (!isDoubleTwistAvailable(context)) {
+                        result.add(PREF_KEY_DOUBLE_TWIST);
+                    }
+                    return result;
                 }
-                if (!isDozeAvailable(context) || !isPickupAvailable(context)) {
-                    result.add(PREF_KEY_PICK_UP);
-                }
-                if (!isDozeAvailable(context) || !isDoubleTapAvailable(context)) {
-                    result.add(PREF_KEY_DOUBLE_TAP_SCREEN);
-                }
-                if (!isSystemUINavigationAvailable(context)) {
-                    result.add(PREF_KEY_SWIPE_DOWN_FINGERPRINT);
-                }
-                if (!isDoubleTwistAvailable(context)) {
-                    result.add(PREF_KEY_DOUBLE_TWIST);
-                }
-                return result;
-            }
-        };
+            };
 
 }
diff --git a/src/com/android/settings/gestures/SwipeToNotificationPreferenceController.java b/src/com/android/settings/gestures/SwipeToNotificationPreferenceController.java
new file mode 100644
index 0000000..353eed8
--- /dev/null
+++ b/src/com/android/settings/gestures/SwipeToNotificationPreferenceController.java
@@ -0,0 +1,71 @@
+/*
+ * 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.gestures;
+
+import android.content.Context;
+import android.provider.Settings;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.TwoStatePreference;
+
+import com.android.settings.core.PreferenceController;
+
+public class SwipeToNotificationPreferenceController extends PreferenceController
+        implements Preference.OnPreferenceChangeListener {
+
+    private static final String PREF_KEY_SWIPE_DOWN_FINGERPRINT = "gesture_swipe_down_fingerprint";
+
+    public SwipeToNotificationPreferenceController(Context context) {
+        super(context);
+    }
+
+    @Override
+    public boolean handlePreferenceTreeClick(Preference preference) {
+        return false;
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return PREF_KEY_SWIPE_DOWN_FINGERPRINT;
+    }
+
+    @Override
+    public void updateState(Preference preference) {
+        super.updateState(preference);
+        if (preference != null && preference instanceof TwoStatePreference) {
+            ((TwoStatePreference) preference).setChecked(isSystemUINavigationEnabled());
+        }
+    }
+
+    @Override
+    public boolean isAvailable() {
+        return mContext.getResources().getBoolean(
+                com.android.internal.R.bool.config_supportSystemNavigationKeys);
+    }
+
+    private boolean isSystemUINavigationEnabled() {
+        return Settings.Secure.getInt(mContext.getContentResolver(),
+                Settings.Secure.SYSTEM_NAVIGATION_KEYS_ENABLED, 0)
+                == 1;
+    }
+
+    @Override
+    public boolean onPreferenceChange(Preference preference, Object newValue) {
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.SYSTEM_NAVIGATION_KEYS_ENABLED, (boolean) newValue ? 1 : 0);
+        return true;
+    }
+}
diff --git a/src/com/android/settings/network/AirplaneModePreferenceController.java b/src/com/android/settings/network/AirplaneModePreferenceController.java
index c99cd4d..a25c5f8 100644
--- a/src/com/android/settings/network/AirplaneModePreferenceController.java
+++ b/src/com/android/settings/network/AirplaneModePreferenceController.java
@@ -87,12 +87,12 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return !mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEVISION);
     }
 
     @Override
-    protected String getPreferenceKey() {
+    public String getPreferenceKey() {
         return KEY_TOGGLE_AIRPLANE;
     }
 
diff --git a/src/com/android/settings/network/MobileNetworkPreferenceController.java b/src/com/android/settings/network/MobileNetworkPreferenceController.java
index 509c771..588d80c 100644
--- a/src/com/android/settings/network/MobileNetworkPreferenceController.java
+++ b/src/com/android/settings/network/MobileNetworkPreferenceController.java
@@ -45,14 +45,14 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return !mIsSecondaryUser
                 && !Utils.isWifiOnly(mContext)
                 && !hasBaseUserRestriction(mContext, DISALLOW_CONFIG_MOBILE_NETWORKS, myUserId());
     }
 
     @Override
-    protected String getPreferenceKey() {
+    public String getPreferenceKey() {
         return KEY_MOBILE_NETWORK_SETTINGS;
     }
 }
diff --git a/src/com/android/settings/network/MobilePlanPreferenceController.java b/src/com/android/settings/network/MobilePlanPreferenceController.java
index e62686f..42b2bea 100644
--- a/src/com/android/settings/network/MobilePlanPreferenceController.java
+++ b/src/com/android/settings/network/MobilePlanPreferenceController.java
@@ -111,7 +111,7 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         final boolean isPrefAllowedOnDevice = mContext.getResources().getBoolean(
                 com.android.settings.R.bool.config_show_mobile_plan);
         final boolean isPrefAllowedForUser = !mIsSecondaryUser
@@ -120,7 +120,7 @@
         return isPrefAllowedForUser && isPrefAllowedOnDevice;
     }
     @Override
-    protected String getPreferenceKey() {
+    public String getPreferenceKey() {
         return KEY_MANAGE_MOBILE_PLAN;
     }
 
diff --git a/src/com/android/settings/network/NetworkResetPreferenceController.java b/src/com/android/settings/network/NetworkResetPreferenceController.java
index 2fe2038..2842139 100644
--- a/src/com/android/settings/network/NetworkResetPreferenceController.java
+++ b/src/com/android/settings/network/NetworkResetPreferenceController.java
@@ -37,13 +37,13 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return !RestrictedLockUtils.hasBaseUserRestriction(mContext,
                 UserManager.DISALLOW_NETWORK_RESET, UserHandle.myUserId());
     }
 
     @Override
-    protected String getPreferenceKey() {
+    public String getPreferenceKey() {
         return KEY_NETWORK_RESET;
     }
 }
diff --git a/src/com/android/settings/network/ProxyPreferenceController.java b/src/com/android/settings/network/ProxyPreferenceController.java
index 075b1f0..54b8ca9 100644
--- a/src/com/android/settings/network/ProxyPreferenceController.java
+++ b/src/com/android/settings/network/ProxyPreferenceController.java
@@ -36,7 +36,7 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         // proxy UI disabled until we have better app support
         return false;
     }
@@ -54,7 +54,7 @@
     }
 
     @Override
-    protected String getPreferenceKey() {
+    public String getPreferenceKey() {
         return KEY_PROXY_SETTINGS;
     }
 }
diff --git a/src/com/android/settings/network/TetherPreferenceController.java b/src/com/android/settings/network/TetherPreferenceController.java
index b3d55fa..f6ef678 100644
--- a/src/com/android/settings/network/TetherPreferenceController.java
+++ b/src/com/android/settings/network/TetherPreferenceController.java
@@ -67,7 +67,7 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         final boolean isBlocked =
                 (!mConnectivityManager.isTetheringSupported() && !mAdminDisallowedTetherConfig)
                         || hasBaseUserRestriction(mContext, DISALLOW_CONFIG_TETHERING,
@@ -83,7 +83,7 @@
     }
 
     @Override
-    protected String getPreferenceKey() {
+    public String getPreferenceKey() {
         return KEY_TETHER_SETTINGS;
     }
 }
diff --git a/src/com/android/settings/network/VpnPreferenceController.java b/src/com/android/settings/network/VpnPreferenceController.java
index 6e83826..3c4877f 100644
--- a/src/com/android/settings/network/VpnPreferenceController.java
+++ b/src/com/android/settings/network/VpnPreferenceController.java
@@ -58,14 +58,14 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         // TODO: http://b/23693383
         return mIsSecondaryUser || RestrictedLockUtils.hasBaseUserRestriction(mContext,
                 UserManager.DISALLOW_CONFIG_VPN, UserHandle.myUserId());
     }
 
     @Override
-    protected String getPreferenceKey() {
+    public String getPreferenceKey() {
         return KEY_VPN_SETTINGS;
     }
 }
diff --git a/src/com/android/settings/network/WifiCallingPreferenceController.java b/src/com/android/settings/network/WifiCallingPreferenceController.java
index e733b67..5036c46 100644
--- a/src/com/android/settings/network/WifiCallingPreferenceController.java
+++ b/src/com/android/settings/network/WifiCallingPreferenceController.java
@@ -50,13 +50,13 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return ImsManager.isWfcEnabledByPlatform(mContext)
                 && ImsManager.isWfcProvisionedOnDevice(mContext);
     }
 
     @Override
-    protected String getPreferenceKey() {
+    public String getPreferenceKey() {
         return KEY_WFC_SETTINGS;
     }
 }
diff --git a/src/com/android/settings/nfc/NfcPreferenceController.java b/src/com/android/settings/nfc/NfcPreferenceController.java
index 0d31fe6..6303d5b 100644
--- a/src/com/android/settings/nfc/NfcPreferenceController.java
+++ b/src/com/android/settings/nfc/NfcPreferenceController.java
@@ -101,12 +101,12 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return mNfcAdapter != null;
     }
 
     @Override
-    protected String getPreferenceKey() {
+    public String getPreferenceKey() {
         return null;
     }
 
diff --git a/src/com/android/settings/notification/ConfigureNotificationSettings.java b/src/com/android/settings/notification/ConfigureNotificationSettings.java
index 3f53ec9..1f322d0 100644
--- a/src/com/android/settings/notification/ConfigureNotificationSettings.java
+++ b/src/com/android/settings/notification/ConfigureNotificationSettings.java
@@ -1,4 +1,4 @@
-/**
+/*
  * Copyright (C) 2015 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -16,54 +16,23 @@
 
 package com.android.settings.notification;
 
-import android.app.admin.DevicePolicyManager;
-import android.content.ContentResolver;
 import android.content.Context;
-import android.database.ContentObserver;
-import android.net.Uri;
 import android.os.Bundle;
-import android.os.Handler;
-import android.os.UserHandle;
-import android.os.UserManager;
-import android.provider.Settings;
-import android.support.v7.preference.Preference;
-import android.support.v7.preference.Preference.OnPreferenceChangeListener;
-import android.support.v7.preference.TwoStatePreference;
-import android.util.Log;
+
 import com.android.internal.logging.MetricsProto.MetricsEvent;
-import com.android.internal.widget.LockPatternUtils;
 import com.android.settings.R;
-import com.android.settings.RestrictedListPreference.RestrictedItem;
-import com.android.settings.SettingsPreferenceFragment;
-import com.android.settings.Utils;
-import com.android.settingslib.RestrictedLockUtils;
+import com.android.settings.core.PreferenceController;
+import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.gestures.SwipeToNotificationPreferenceController;
+import com.android.settings.overlay.FeatureFactory;
 
 import java.util.ArrayList;
+import java.util.List;
 
-import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_SECURE_NOTIFICATIONS;
-import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS;
-import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
-
-public class ConfigureNotificationSettings extends SettingsPreferenceFragment {
+public class ConfigureNotificationSettings extends DashboardFragment {
     private static final String TAG = "ConfigNotiSettings";
 
-    private static final String KEY_NOTIFICATION_PULSE = "notification_pulse";
-    private static final String KEY_LOCK_SCREEN_NOTIFICATIONS = "lock_screen_notifications";
-    private static final String KEY_LOCK_SCREEN_PROFILE_NOTIFICATIONS =
-            "lock_screen_notifications_profile";
-
-    private final SettingsObserver mSettingsObserver = new SettingsObserver();
-
-    private Context mContext;
-
-    private TwoStatePreference mNotificationPulse;
-    private RestrictedDropDownPreference mLockscreen;
-    private RestrictedDropDownPreference mLockscreenProfile;
-    private boolean mSecure;
-    private boolean mSecureProfile;
-    private int mLockscreenSelectedValue;
-    private int mLockscreenSelectedValueProfile;
-    private int mProfileChallengeUserId;
+    private LockScreenNotificationPreferenceController mLockScreenNotificationController;
 
     @Override
     public int getMetricsCategory() {
@@ -71,310 +40,43 @@
     }
 
     @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        mContext = getActivity();
-        mProfileChallengeUserId = Utils.getManagedProfileId(
-                UserManager.get(mContext), UserHandle.myUserId());
-
-        final LockPatternUtils utils = new LockPatternUtils(getActivity());
-        final boolean isUnified =
-                !utils.isSeparateProfileChallengeEnabled(mProfileChallengeUserId);
-
-        mSecure = utils.isSecure(UserHandle.myUserId());
-        mSecureProfile = (mProfileChallengeUserId != UserHandle.USER_NULL)
-                && (utils.isSecure(mProfileChallengeUserId) || (isUnified && mSecure));
-
-        addPreferencesFromResource(R.xml.configure_notification_settings);
-
-        initPulse();
-        initLockscreenNotifications();
-
-        if (mProfileChallengeUserId != UserHandle.USER_NULL) {
-            addPreferencesFromResource(R.xml.configure_notification_settings_profile);
-            initLockscreenNotificationsForProfile();
-        }
-
+    protected String getCategoryKey() {
+        return "";
     }
 
     @Override
-    public void onResume() {
-        super.onResume();
-        mSettingsObserver.register(true);
+    protected String getLogTag() {
+        return TAG;
     }
 
     @Override
-    public void onPause() {
-        super.onPause();
-        mSettingsObserver.register(false);
+    protected int getPreferenceScreenResId() {
+        return R.xml.configure_notification_settings;
     }
 
-    // === Pulse notification light ===
-
-    private void initPulse() {
-        mNotificationPulse =
-                (TwoStatePreference) getPreferenceScreen().findPreference(KEY_NOTIFICATION_PULSE);
-        if (mNotificationPulse == null) {
-            Log.i(TAG, "Preference not found: " + KEY_NOTIFICATION_PULSE);
-            return;
-        }
-        if (!getResources()
-                .getBoolean(com.android.internal.R.bool.config_intrusiveNotificationLed)) {
-            getPreferenceScreen().removePreference(mNotificationPulse);
-        } else {
-            updatePulse();
-            mNotificationPulse.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
-                @Override
-                public boolean onPreferenceChange(Preference preference, Object newValue) {
-                    final boolean val = (Boolean)newValue;
-                    return Settings.System.putInt(getContentResolver(),
-                            Settings.System.NOTIFICATION_LIGHT_PULSE,
-                            val ? 1 : 0);
-                }
-            });
-        }
+    @Override
+    protected List<PreferenceController> getPreferenceControllers(Context context) {
+        final List<PreferenceController> controllers = new ArrayList<>();
+        final PulseNotificationPreferenceController pulseController =
+                new PulseNotificationPreferenceController(context);
+        mLockScreenNotificationController = new LockScreenNotificationPreferenceController(context);
+        getLifecycle().addObserver(pulseController);
+        getLifecycle().addObserver(mLockScreenNotificationController);
+        controllers.add(new SwipeToNotificationPreferenceController(context));
+        controllers.add(pulseController);
+        controllers.add(mLockScreenNotificationController);
+        return controllers;
     }
 
-    private void updatePulse() {
-        if (mNotificationPulse == null) {
-            return;
-        }
-        try {
-            mNotificationPulse.setChecked(Settings.System.getInt(getContentResolver(),
-                    Settings.System.NOTIFICATION_LIGHT_PULSE) == 1);
-        } catch (Settings.SettingNotFoundException snfe) {
-            Log.e(TAG, Settings.System.NOTIFICATION_LIGHT_PULSE + " not found");
-        }
-    }
-
-    private void initLockscreenNotifications() {
-        mLockscreen = (RestrictedDropDownPreference) getPreferenceScreen().findPreference(
-                KEY_LOCK_SCREEN_NOTIFICATIONS);
-        if (mLockscreen == null) {
-            Log.i(TAG, "Preference not found: " + KEY_LOCK_SCREEN_NOTIFICATIONS);
-            return;
-        }
-
-        ArrayList<CharSequence> entries = new ArrayList<>();
-        ArrayList<CharSequence> values = new ArrayList<>();
-        entries.add(getString(R.string.lock_screen_notifications_summary_disable));
-        values.add(Integer.toString(R.string.lock_screen_notifications_summary_disable));
-
-        String summaryShowEntry = getString(R.string.lock_screen_notifications_summary_show);
-        String summaryShowEntryValue = Integer.toString(
-                R.string.lock_screen_notifications_summary_show);
-        entries.add(summaryShowEntry);
-        values.add(summaryShowEntryValue);
-        setRestrictedIfNotificationFeaturesDisabled(summaryShowEntry, summaryShowEntryValue,
-                KEYGUARD_DISABLE_SECURE_NOTIFICATIONS | KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS);
-
-        if (mSecure) {
-            String summaryHideEntry = getString(R.string.lock_screen_notifications_summary_hide);
-            String summaryHideEntryValue = Integer.toString(
-                    R.string.lock_screen_notifications_summary_hide);
-            entries.add(summaryHideEntry);
-            values.add(summaryHideEntryValue);
-            setRestrictedIfNotificationFeaturesDisabled(summaryHideEntry, summaryHideEntryValue,
-                    KEYGUARD_DISABLE_SECURE_NOTIFICATIONS);
-        }
-
-        mLockscreen.setEntries(entries.toArray(new CharSequence[entries.size()]));
-        mLockscreen.setEntryValues(values.toArray(new CharSequence[values.size()]));
-        updateLockscreenNotifications();
-        if (mLockscreen.getEntries().length > 1) {
-            mLockscreen.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
-                @Override
-                public boolean onPreferenceChange(Preference preference, Object newValue) {
-                    final int val = Integer.parseInt((String) newValue);
-                    if (val == mLockscreenSelectedValue) {
-                        return false;
-                    }
-                    final boolean enabled =
-                            val != R.string.lock_screen_notifications_summary_disable;
-                    final boolean show = val == R.string.lock_screen_notifications_summary_show;
-                    Settings.Secure.putInt(getContentResolver(),
-                            Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, show ? 1 : 0);
-                    Settings.Secure.putInt(getContentResolver(),
-                            Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, enabled ? 1 : 0);
-                    mLockscreenSelectedValue = val;
-                    return true;
-                }
-            });
-        } else {
-            // There is one or less option for the user, disable the drop down.
-            mLockscreen.setEnabled(false);
-        }
-    }
-
-    // === Lockscreen (public / private) notifications ===
-    private void initLockscreenNotificationsForProfile() {
-        mLockscreenProfile = (RestrictedDropDownPreference) getPreferenceScreen()
-                .findPreference(KEY_LOCK_SCREEN_PROFILE_NOTIFICATIONS);
-        if (mLockscreenProfile == null) {
-            Log.i(TAG, "Preference not found: " + KEY_LOCK_SCREEN_PROFILE_NOTIFICATIONS);
-            return;
-        }
-        ArrayList<CharSequence> entries = new ArrayList<>();
-        ArrayList<CharSequence> values = new ArrayList<>();
-        entries.add(getString(R.string.lock_screen_notifications_summary_disable_profile));
-        values.add(Integer.toString(R.string.lock_screen_notifications_summary_disable_profile));
-
-        String summaryShowEntry = getString(
-                R.string.lock_screen_notifications_summary_show_profile);
-        String summaryShowEntryValue = Integer.toString(
-                R.string.lock_screen_notifications_summary_show_profile);
-        entries.add(summaryShowEntry);
-        values.add(summaryShowEntryValue);
-        setRestrictedIfNotificationFeaturesDisabled(summaryShowEntry, summaryShowEntryValue,
-                KEYGUARD_DISABLE_SECURE_NOTIFICATIONS | KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS);
-
-        if (mSecureProfile) {
-            String summaryHideEntry = getString(
-                    R.string.lock_screen_notifications_summary_hide_profile);
-            String summaryHideEntryValue = Integer.toString(
-                    R.string.lock_screen_notifications_summary_hide_profile);
-            entries.add(summaryHideEntry);
-            values.add(summaryHideEntryValue);
-            setRestrictedIfNotificationFeaturesDisabled(summaryHideEntry, summaryHideEntryValue,
-                    KEYGUARD_DISABLE_SECURE_NOTIFICATIONS);
-        }
-
-        mLockscreenProfile.setOnPreClickListener(
-                (Preference p) -> Utils.startQuietModeDialogIfNecessary(mContext,
-                        UserManager.get(mContext),
-                        mProfileChallengeUserId)
-        );
-
-        mLockscreenProfile.setEntries(entries.toArray(new CharSequence[entries.size()]));
-        mLockscreenProfile.setEntryValues(values.toArray(new CharSequence[values.size()]));
-        updateLockscreenNotificationsForProfile();
-        if (mLockscreenProfile.getEntries().length > 1) {
-            mLockscreenProfile.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
-                @Override
-                public boolean onPreferenceChange(Preference preference, Object newValue) {
-                    final int val = Integer.parseInt((String) newValue);
-                    if (val == mLockscreenSelectedValueProfile) {
-                        return false;
-                    }
-                    final boolean enabled =
-                            val != R.string.lock_screen_notifications_summary_disable_profile;
-                    final boolean show =
-                            val == R.string.lock_screen_notifications_summary_show_profile;
-                    Settings.Secure.putIntForUser(getContentResolver(),
-                            Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS,
-                            show ? 1 : 0, mProfileChallengeUserId);
-                    Settings.Secure.putIntForUser(getContentResolver(),
-                            Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS,
-                            enabled ? 1 : 0, mProfileChallengeUserId);
-                    mLockscreenSelectedValueProfile = val;
-                    return true;
-                }
-            });
-        } else {
-            // There is one or less option for the user, disable the drop down.
-            mLockscreenProfile.setEnabled(false);
-        }
-    }
-
-    private void setRestrictedIfNotificationFeaturesDisabled(CharSequence entry,
-            CharSequence entryValue, int keyguardNotificationFeatures) {
-        EnforcedAdmin admin = RestrictedLockUtils.checkIfKeyguardFeaturesDisabled(
-                mContext, keyguardNotificationFeatures, UserHandle.myUserId());
-        if (admin != null && mLockscreen != null) {
-            RestrictedDropDownPreference.RestrictedItem item =
-                    new RestrictedDropDownPreference.RestrictedItem(entry, entryValue, admin);
-            mLockscreen.addRestrictedItem(item);
-        }
-        if (mProfileChallengeUserId != UserHandle.USER_NULL) {
-            EnforcedAdmin profileAdmin = RestrictedLockUtils.checkIfKeyguardFeaturesDisabled(
-                    mContext, keyguardNotificationFeatures, mProfileChallengeUserId);
-            if (profileAdmin != null && mLockscreenProfile != null) {
-                RestrictedDropDownPreference.RestrictedItem item =
-                        new RestrictedDropDownPreference.RestrictedItem(
-                                entry, entryValue, profileAdmin);
-                mLockscreenProfile.addRestrictedItem(item);
-            }
-        }
-    }
-
-    private void updateLockscreenNotifications() {
-        if (mLockscreen == null) {
-            return;
-        }
-        final boolean enabled = getLockscreenNotificationsEnabled(UserHandle.myUserId());
-        final boolean allowPrivate = !mSecure
-                || getLockscreenAllowPrivateNotifications(UserHandle.myUserId());
-        mLockscreenSelectedValue = !enabled ? R.string.lock_screen_notifications_summary_disable :
-                allowPrivate ? R.string.lock_screen_notifications_summary_show :
-                R.string.lock_screen_notifications_summary_hide;
-        mLockscreen.setValue(Integer.toString(mLockscreenSelectedValue));
-    }
-
-    private void updateLockscreenNotificationsForProfile() {
-        if (mProfileChallengeUserId == UserHandle.USER_NULL) {
-            return;
-        }
-        if (mLockscreenProfile == null) {
-            return;
-        }
-        final boolean enabled = getLockscreenNotificationsEnabled(mProfileChallengeUserId);
-        final boolean allowPrivate = !mSecureProfile
-                || getLockscreenAllowPrivateNotifications(mProfileChallengeUserId);
-        mLockscreenSelectedValueProfile = !enabled
-                ? R.string.lock_screen_notifications_summary_disable_profile
-                        : (allowPrivate ? R.string.lock_screen_notifications_summary_show_profile
-                                : R.string.lock_screen_notifications_summary_hide_profile);
-        mLockscreenProfile.setValue(Integer.toString(mLockscreenSelectedValueProfile));
-    }
-
-    private boolean getLockscreenNotificationsEnabled(int userId) {
-        return Settings.Secure.getIntForUser(getContentResolver(),
-                Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, 0, userId) != 0;
-    }
-
-    private boolean getLockscreenAllowPrivateNotifications(int userId) {
-        return Settings.Secure.getIntForUser(getContentResolver(),
-                Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 0, userId) != 0;
-    }
-
-
-    // === Callbacks ===
-
-    private final class SettingsObserver extends ContentObserver {
-        private final Uri NOTIFICATION_LIGHT_PULSE_URI =
-                Settings.System.getUriFor(Settings.System.NOTIFICATION_LIGHT_PULSE);
-        private final Uri LOCK_SCREEN_PRIVATE_URI =
-                Settings.Secure.getUriFor(Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS);
-        private final Uri LOCK_SCREEN_SHOW_URI =
-                Settings.Secure.getUriFor(Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS);
-
-        public SettingsObserver() {
-            super(new Handler());
-        }
-
-        public void register(boolean register) {
-            final ContentResolver cr = getContentResolver();
-            if (register) {
-                cr.registerContentObserver(NOTIFICATION_LIGHT_PULSE_URI, false, this);
-                cr.registerContentObserver(LOCK_SCREEN_PRIVATE_URI, false, this);
-                cr.registerContentObserver(LOCK_SCREEN_SHOW_URI, false, this);
-            } else {
-                cr.unregisterContentObserver(this);
-            }
-        }
-
-        @Override
-        public void onChange(boolean selfChange, Uri uri) {
-            super.onChange(selfChange, uri);
-            if (NOTIFICATION_LIGHT_PULSE_URI.equals(uri)) {
-                updatePulse();
-            }
-            if (LOCK_SCREEN_PRIVATE_URI.equals(uri) || LOCK_SCREEN_SHOW_URI.equals(uri)) {
-                updateLockscreenNotifications();
-                if (mProfileChallengeUserId != UserHandle.USER_NULL) {
-                    updateLockscreenNotificationsForProfile();
-                }
-            }
+    @Override
+    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+        super.onCreatePreferences(savedInstanceState, rootKey);
+        final Context context = getContext();
+        if (!FeatureFactory.getFactory(context).getDashboardFeatureProvider(context).isEnabled()) {
+            final String prefKey = getPreferenceController(
+                    SwipeToNotificationPreferenceController.class)
+                    .getPreferenceKey();
+            removePreference(prefKey);
         }
     }
 }
diff --git a/src/com/android/settings/notification/LockScreenNotificationPreferenceController.java b/src/com/android/settings/notification/LockScreenNotificationPreferenceController.java
new file mode 100644
index 0000000..15f8c9f
--- /dev/null
+++ b/src/com/android/settings/notification/LockScreenNotificationPreferenceController.java
@@ -0,0 +1,346 @@
+/*
+ * 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.notification;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.os.Handler;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.provider.Settings;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+import android.util.Log;
+
+import com.android.internal.widget.LockPatternUtils;
+import com.android.settings.R;
+import com.android.settings.Utils;
+import com.android.settings.core.PreferenceController;
+import com.android.settings.core.lifecycle.LifecycleObserver;
+import com.android.settings.core.lifecycle.events.OnPause;
+import com.android.settings.core.lifecycle.events.OnResume;
+import com.android.settingslib.RestrictedLockUtils;
+
+import java.util.ArrayList;
+
+import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_SECURE_NOTIFICATIONS;
+import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS;
+
+public class LockScreenNotificationPreferenceController extends PreferenceController implements
+        Preference.OnPreferenceChangeListener, LifecycleObserver, OnResume, OnPause {
+
+    private static final String TAG = "LockScreenNotifPref";
+    private static final String KEY_LOCK_SCREEN_NOTIFICATIONS = "lock_screen_notifications";
+    private static final String KEY_LOCK_SCREEN_PROFILE_HEADER =
+            "lock_screen_notifications_profile_header";
+    private static final String KEY_LOCK_SCREEN_PROFILE_NOTIFICATIONS =
+            "lock_screen_notifications_profile";
+
+    private RestrictedDropDownPreference mLockscreen;
+    private RestrictedDropDownPreference mLockscreenProfile;
+
+    private final int mProfileChallengeUserId;
+    private final boolean mSecure;
+    private final boolean mSecureProfile;
+
+    private SettingObserver mSettingObserver;
+    private int mLockscreenSelectedValue;
+    private int mLockscreenSelectedValueProfile;
+
+    public LockScreenNotificationPreferenceController(Context context) {
+        super(context);
+        mProfileChallengeUserId = Utils.getManagedProfileId(
+                UserManager.get(context), UserHandle.myUserId());
+        final LockPatternUtils utils = new LockPatternUtils(context);
+        final boolean isUnified =
+                !utils.isSeparateProfileChallengeEnabled(mProfileChallengeUserId);
+        mSecure = utils.isSecure(UserHandle.myUserId());
+        mSecureProfile = (mProfileChallengeUserId != UserHandle.USER_NULL)
+                && (utils.isSecure(mProfileChallengeUserId) || (isUnified && mSecure));
+    }
+
+    @Override
+    public boolean handlePreferenceTreeClick(Preference preference) {
+        return false;
+    }
+
+    @Override
+    public void displayPreference(PreferenceScreen screen) {
+        super.displayPreference(screen);
+        mLockscreen =
+                (RestrictedDropDownPreference) screen.findPreference(KEY_LOCK_SCREEN_NOTIFICATIONS);
+        if (mLockscreen == null) {
+            Log.i(TAG, "Preference not found: " + KEY_LOCK_SCREEN_NOTIFICATIONS);
+            return;
+        }
+        if (mProfileChallengeUserId != UserHandle.USER_NULL) {
+            mLockscreenProfile = (RestrictedDropDownPreference) screen.findPreference(
+                    KEY_LOCK_SCREEN_PROFILE_NOTIFICATIONS);
+        } else {
+            removePreference(screen, KEY_LOCK_SCREEN_PROFILE_NOTIFICATIONS);
+            removePreference(screen, KEY_LOCK_SCREEN_PROFILE_HEADER);
+        }
+        mSettingObserver = new SettingObserver();
+        initLockScreenNotificationPrefDisplay();
+        initLockscreenNotificationPrefForProfile();
+    }
+
+    private void initLockScreenNotificationPrefDisplay() {
+        ArrayList<CharSequence> entries = new ArrayList<>();
+        ArrayList<CharSequence> values = new ArrayList<>();
+        entries.add(mContext.getString(R.string.lock_screen_notifications_summary_disable));
+        values.add(Integer.toString(R.string.lock_screen_notifications_summary_disable));
+
+        String summaryShowEntry =
+                mContext.getString(R.string.lock_screen_notifications_summary_show);
+        String summaryShowEntryValue =
+                Integer.toString(R.string.lock_screen_notifications_summary_show);
+        entries.add(summaryShowEntry);
+        values.add(summaryShowEntryValue);
+        setRestrictedIfNotificationFeaturesDisabled(summaryShowEntry, summaryShowEntryValue,
+                KEYGUARD_DISABLE_SECURE_NOTIFICATIONS | KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS);
+
+        if (mSecure) {
+            String summaryHideEntry =
+                    mContext.getString(R.string.lock_screen_notifications_summary_hide);
+            String summaryHideEntryValue =
+                    Integer.toString(R.string.lock_screen_notifications_summary_hide);
+            entries.add(summaryHideEntry);
+            values.add(summaryHideEntryValue);
+            setRestrictedIfNotificationFeaturesDisabled(summaryHideEntry, summaryHideEntryValue,
+                    KEYGUARD_DISABLE_SECURE_NOTIFICATIONS);
+        }
+
+        mLockscreen.setEntries(entries.toArray(new CharSequence[entries.size()]));
+        mLockscreen.setEntryValues(values.toArray(new CharSequence[values.size()]));
+        updateLockscreenNotifications();
+
+        if (mLockscreen.getEntries().length > 1) {
+            mLockscreen.setOnPreferenceChangeListener(this);
+        } else {
+            // There is one or less option for the user, disable the drop down.
+            mLockscreen.setEnabled(false);
+        }
+    }
+
+    private void initLockscreenNotificationPrefForProfile() {
+        if (mLockscreenProfile == null) {
+            Log.i(TAG, "Preference not found: " + KEY_LOCK_SCREEN_PROFILE_NOTIFICATIONS);
+            return;
+        }
+        ArrayList<CharSequence> entries = new ArrayList<>();
+        ArrayList<CharSequence> values = new ArrayList<>();
+        entries.add(mContext.getString(R.string.lock_screen_notifications_summary_disable_profile));
+        values.add(Integer.toString(R.string.lock_screen_notifications_summary_disable_profile));
+
+        String summaryShowEntry = mContext.getString(
+                R.string.lock_screen_notifications_summary_show_profile);
+        String summaryShowEntryValue = Integer.toString(
+                R.string.lock_screen_notifications_summary_show_profile);
+        entries.add(summaryShowEntry);
+        values.add(summaryShowEntryValue);
+        setRestrictedIfNotificationFeaturesDisabled(summaryShowEntry, summaryShowEntryValue,
+                KEYGUARD_DISABLE_SECURE_NOTIFICATIONS | KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS);
+
+        if (mSecureProfile) {
+            String summaryHideEntry = mContext.getString(
+                    R.string.lock_screen_notifications_summary_hide_profile);
+            String summaryHideEntryValue = Integer.toString(
+                    R.string.lock_screen_notifications_summary_hide_profile);
+            entries.add(summaryHideEntry);
+            values.add(summaryHideEntryValue);
+            setRestrictedIfNotificationFeaturesDisabled(summaryHideEntry, summaryHideEntryValue,
+                    KEYGUARD_DISABLE_SECURE_NOTIFICATIONS);
+        }
+        mLockscreenProfile.setOnPreClickListener(
+                (Preference p) -> Utils.startQuietModeDialogIfNecessary(mContext,
+                        UserManager.get(mContext), mProfileChallengeUserId)
+        );
+
+        mLockscreenProfile.setEntries(entries.toArray(new CharSequence[entries.size()]));
+        mLockscreenProfile.setEntryValues(values.toArray(new CharSequence[values.size()]));
+        updateLockscreenNotificationsForProfile();
+        if (mLockscreenProfile.getEntries().length > 1) {
+            mLockscreenProfile.setOnPreferenceChangeListener(this);
+        } else {
+            // There is one or less option for the user, disable the drop down.
+            mLockscreenProfile.setEnabled(false);
+        }
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return null;
+    }
+
+    @Override
+    public boolean isAvailable() {
+        return false;
+    }
+
+    @Override
+    public void onResume() {
+        if (mSettingObserver != null) {
+            mSettingObserver.register(mContext.getContentResolver(), true /* register */);
+        }
+    }
+
+    @Override
+    public void onPause() {
+        if (mSettingObserver != null) {
+            mSettingObserver.register(mContext.getContentResolver(), false /* register */);
+        }
+    }
+
+    @Override
+    public boolean onPreferenceChange(Preference preference, Object newValue) {
+        switch (preference.getKey()) {
+            case KEY_LOCK_SCREEN_PROFILE_NOTIFICATIONS: {
+                final int val = Integer.parseInt((String) newValue);
+                if (val == mLockscreenSelectedValueProfile) {
+                    return false;
+                }
+                final boolean enabled =
+                        val != R.string.lock_screen_notifications_summary_disable_profile;
+                final boolean show =
+                        val == R.string.lock_screen_notifications_summary_show_profile;
+                Settings.Secure.putIntForUser(mContext.getContentResolver(),
+                        Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS,
+                        show ? 1 : 0, mProfileChallengeUserId);
+                Settings.Secure.putIntForUser(mContext.getContentResolver(),
+                        Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS,
+                        enabled ? 1 : 0, mProfileChallengeUserId);
+                mLockscreenSelectedValueProfile = val;
+                return true;
+            }
+            case KEY_LOCK_SCREEN_NOTIFICATIONS: {
+                final int val = Integer.parseInt((String) newValue);
+                if (val == mLockscreenSelectedValue) {
+                    return false;
+                }
+                final boolean enabled =
+                        val != R.string.lock_screen_notifications_summary_disable;
+                final boolean show = val == R.string.lock_screen_notifications_summary_show;
+                Settings.Secure.putInt(mContext.getContentResolver(),
+                        Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, show ? 1 : 0);
+                Settings.Secure.putInt(mContext.getContentResolver(),
+                        Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, enabled ? 1 : 0);
+                mLockscreenSelectedValue = val;
+                return true;
+            }
+            default:
+                return false;
+        }
+    }
+
+    private void setRestrictedIfNotificationFeaturesDisabled(CharSequence entry,
+            CharSequence entryValue, int keyguardNotificationFeatures) {
+        RestrictedLockUtils.EnforcedAdmin admin =
+                RestrictedLockUtils.checkIfKeyguardFeaturesDisabled(
+                        mContext, keyguardNotificationFeatures, UserHandle.myUserId());
+        if (admin != null && mLockscreen != null) {
+            RestrictedDropDownPreference.RestrictedItem item =
+                    new RestrictedDropDownPreference.RestrictedItem(entry, entryValue, admin);
+            mLockscreen.addRestrictedItem(item);
+        }
+        if (mProfileChallengeUserId != UserHandle.USER_NULL) {
+            RestrictedLockUtils.EnforcedAdmin profileAdmin =
+                    RestrictedLockUtils.checkIfKeyguardFeaturesDisabled(
+                            mContext, keyguardNotificationFeatures, mProfileChallengeUserId);
+            if (profileAdmin != null && mLockscreenProfile != null) {
+                RestrictedDropDownPreference.RestrictedItem item =
+                        new RestrictedDropDownPreference.RestrictedItem(
+                                entry, entryValue, profileAdmin);
+                mLockscreenProfile.addRestrictedItem(item);
+            }
+        }
+    }
+
+    private void updateLockscreenNotifications() {
+        if (mLockscreen == null) {
+            return;
+        }
+        final boolean enabled = getLockscreenNotificationsEnabled(UserHandle.myUserId());
+        final boolean allowPrivate = !mSecure
+                || getLockscreenAllowPrivateNotifications(UserHandle.myUserId());
+        mLockscreenSelectedValue = !enabled ? R.string.lock_screen_notifications_summary_disable :
+                allowPrivate ? R.string.lock_screen_notifications_summary_show :
+                        R.string.lock_screen_notifications_summary_hide;
+        mLockscreen.setValue(Integer.toString(mLockscreenSelectedValue));
+    }
+
+    private void updateLockscreenNotificationsForProfile() {
+        if (mProfileChallengeUserId == UserHandle.USER_NULL) {
+            return;
+        }
+        if (mLockscreenProfile == null) {
+            return;
+        }
+        final boolean enabled = getLockscreenNotificationsEnabled(mProfileChallengeUserId);
+        final boolean allowPrivate = !mSecureProfile
+                || getLockscreenAllowPrivateNotifications(mProfileChallengeUserId);
+        mLockscreenSelectedValueProfile = !enabled
+                ? R.string.lock_screen_notifications_summary_disable_profile
+                : (allowPrivate ? R.string.lock_screen_notifications_summary_show_profile
+                        : R.string.lock_screen_notifications_summary_hide_profile);
+        mLockscreenProfile.setValue(Integer.toString(mLockscreenSelectedValueProfile));
+    }
+
+    private boolean getLockscreenNotificationsEnabled(int userId) {
+        return Settings.Secure.getIntForUser(mContext.getContentResolver(),
+                Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, 0, userId) != 0;
+    }
+
+    private boolean getLockscreenAllowPrivateNotifications(int userId) {
+        return Settings.Secure.getIntForUser(mContext.getContentResolver(),
+                Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 0, userId) != 0;
+    }
+
+    class SettingObserver extends ContentObserver {
+
+        private final Uri LOCK_SCREEN_PRIVATE_URI =
+                Settings.Secure.getUriFor(Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS);
+        private final Uri LOCK_SCREEN_SHOW_URI =
+                Settings.Secure.getUriFor(Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS);
+
+        public SettingObserver() {
+            super(new Handler());
+        }
+
+        public void register(ContentResolver cr, boolean register) {
+            if (register) {
+                cr.registerContentObserver(LOCK_SCREEN_PRIVATE_URI, false, this);
+                cr.registerContentObserver(LOCK_SCREEN_SHOW_URI, false, this);
+            } else {
+                cr.unregisterContentObserver(this);
+            }
+        }
+
+        @Override
+        public void onChange(boolean selfChange, Uri uri) {
+            super.onChange(selfChange, uri);
+            if (LOCK_SCREEN_PRIVATE_URI.equals(uri) || LOCK_SCREEN_SHOW_URI.equals(uri)) {
+                updateLockscreenNotifications();
+                if (mProfileChallengeUserId != UserHandle.USER_NULL) {
+                    updateLockscreenNotificationsForProfile();
+                }
+            }
+        }
+    }
+}
diff --git a/src/com/android/settings/notification/PulseNotificationPreferenceController.java b/src/com/android/settings/notification/PulseNotificationPreferenceController.java
new file mode 100644
index 0000000..de365f1
--- /dev/null
+++ b/src/com/android/settings/notification/PulseNotificationPreferenceController.java
@@ -0,0 +1,133 @@
+/*
+ * 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.notification;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.os.Handler;
+import android.provider.Settings;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+import android.support.v7.preference.TwoStatePreference;
+import android.util.Log;
+
+import com.android.settings.core.PreferenceController;
+import com.android.settings.core.lifecycle.LifecycleObserver;
+import com.android.settings.core.lifecycle.events.OnPause;
+import com.android.settings.core.lifecycle.events.OnResume;
+
+import static android.provider.Settings.System.NOTIFICATION_LIGHT_PULSE;
+
+public class PulseNotificationPreferenceController extends PreferenceController implements
+        Preference.OnPreferenceChangeListener, LifecycleObserver, OnResume, OnPause {
+
+    private static final String TAG = "PulseNotifPrefContr";
+    private static final String KEY_NOTIFICATION_PULSE = "notification_pulse";
+    private SettingObserver mSettingObserver;
+
+    public PulseNotificationPreferenceController(Context context) {
+        super(context);
+    }
+
+    @Override
+    public void displayPreference(PreferenceScreen screen) {
+        super.displayPreference(screen);
+        Preference preference = screen.findPreference(KEY_NOTIFICATION_PULSE);
+        if (preference != null) {
+            mSettingObserver = new SettingObserver(preference);
+        }
+    }
+
+    @Override
+    public void onResume() {
+        if (mSettingObserver != null) {
+            mSettingObserver.register(mContext.getContentResolver(), true /* register */);
+        }
+    }
+
+    @Override
+    public void onPause() {
+        if (mSettingObserver != null) {
+            mSettingObserver.register(mContext.getContentResolver(), false /* register */);
+        }
+    }
+
+    @Override
+    public boolean handlePreferenceTreeClick(Preference preference) {
+        return false;
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return KEY_NOTIFICATION_PULSE;
+    }
+
+    @Override
+    public boolean isAvailable() {
+        return mContext.getResources()
+                .getBoolean(com.android.internal.R.bool.config_intrusiveNotificationLed);
+    }
+
+    @Override
+    public void updateState(Preference preference) {
+        try {
+            final boolean checked = Settings.System.getInt(mContext.getContentResolver(),
+                    NOTIFICATION_LIGHT_PULSE) == 1;
+            ((TwoStatePreference) preference).setChecked(checked);
+        } catch (Settings.SettingNotFoundException snfe) {
+            Log.e(TAG, NOTIFICATION_LIGHT_PULSE + " not found");
+        }
+    }
+
+    @Override
+    public boolean onPreferenceChange(Preference preference, Object newValue) {
+        final boolean val = (Boolean) newValue;
+        return Settings.System.putInt(mContext.getContentResolver(),
+                NOTIFICATION_LIGHT_PULSE, val ? 1 : 0);
+    }
+
+    class SettingObserver extends ContentObserver {
+
+        private final Uri NOTIFICATION_LIGHT_PULSE_URI =
+                Settings.System.getUriFor(Settings.System.NOTIFICATION_LIGHT_PULSE);
+
+        private final Preference mPreference;
+
+        public SettingObserver(Preference preference) {
+            super(new Handler());
+            mPreference = preference;
+        }
+
+        public void register(ContentResolver cr, boolean register) {
+            if (register) {
+                cr.registerContentObserver(NOTIFICATION_LIGHT_PULSE_URI, false, this);
+            } else {
+                cr.unregisterContentObserver(this);
+            }
+        }
+
+        @Override
+        public void onChange(boolean selfChange, Uri uri) {
+            super.onChange(selfChange, uri);
+            if (NOTIFICATION_LIGHT_PULSE_URI.equals(uri)) {
+                updateState(mPreference);
+            }
+        }
+    }
+}
diff --git a/src/com/android/settings/widget/RingProgressBar.java b/src/com/android/settings/widget/RingProgressBar.java
new file mode 100644
index 0000000..605e4e9
--- /dev/null
+++ b/src/com/android/settings/widget/RingProgressBar.java
@@ -0,0 +1,57 @@
+/*
+ * 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.widget;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.widget.ProgressBar;
+
+import com.android.settings.R;
+
+/**
+ * A (determinate) progress bar in the form of a ring. The progress bar goes clockwise starting
+ * from the 12 o'clock position. This view maintain equal width and height using a strategy similar
+ * to "centerInside" for ImageView.
+ */
+public class RingProgressBar extends ProgressBar {
+
+    public RingProgressBar(Context context) {
+        this(context, null);
+    }
+
+    public RingProgressBar(Context context, AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    public RingProgressBar(Context context, AttributeSet attrs, int defStyleAttr) {
+        this(context, attrs, defStyleAttr, R.style.RingProgressBarStyle);
+    }
+
+    public RingProgressBar(Context context, AttributeSet attrs, int defStyleAttr,
+            int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+    }
+
+    @Override
+    protected synchronized void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+        final int measuredHeight = getMeasuredHeight();
+        final int measuredWidth = getMeasuredWidth();
+        final int shortSide = Math.min(measuredHeight, measuredWidth);
+        setMeasuredDimension(shortSide, shortSide);
+    }
+}
diff --git a/tests/app/src/com/android/settings/tests/DashboardAdapterTest.java b/tests/app/src/com/android/settings/tests/DashboardAdapterTest.java
new file mode 100644
index 0000000..4b8e6cf
--- /dev/null
+++ b/tests/app/src/com/android/settings/tests/DashboardAdapterTest.java
@@ -0,0 +1,62 @@
+/*
+ * 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.tests;
+
+import android.app.Instrumentation;
+import android.content.Context;
+import android.content.Intent;
+import android.provider.Settings;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import com.android.settings.R;
+
+import static android.support.test.espresso.Espresso.onView;
+import static android.support.test.espresso.action.ViewActions.click;
+import static android.support.test.espresso.assertion.ViewAssertions.matches;
+import static android.support.test.espresso.matcher.ViewMatchers.*;
+import static android.support.test.espresso.matcher.ViewMatchers.Visibility.VISIBLE;
+import static org.hamcrest.core.AllOf.allOf;
+
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+public class DashboardAdapterTest {
+    @Before
+    public void SetUp() {
+        Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
+        instrumentation.startActivitySync(new Intent(Settings
+                .ACTION_SETTINGS));
+    }
+
+    @Test
+    public void testTileConsistency_ToggleSuggestionsAndOpenBluetooth_shouldInBluetooth()
+            throws Exception{
+        final Context context = InstrumentationRegistry.getTargetContext();
+
+        onView(allOf(withText(context.getString(R.string.suggestions_title)),
+                withEffectiveVisibility(VISIBLE))).perform(click());
+        onView(allOf(withText(context.getString(R.string.bluetooth_settings)),
+                withEffectiveVisibility(VISIBLE))).perform(click());
+
+        // It should go to Bluetooth sub page, not other page or crash
+        onView(allOf(withText(context.getString(R.string.bluetooth_settings)),
+                withEffectiveVisibility(VISIBLE))).check(matches(isDisplayed()));
+
+    }
+}
diff --git a/tests/app/src/com/android/settings/tests/KeepOnScreenTest.java b/tests/app/src/com/android/settings/tests/KeepOnScreenTest.java
new file mode 100644
index 0000000..0b1308e
--- /dev/null
+++ b/tests/app/src/com/android/settings/tests/KeepOnScreenTest.java
@@ -0,0 +1,70 @@
+/*
+ * 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.tests;
+
+import android.app.Instrumentation;
+import android.content.Context;
+import android.content.Intent;
+import android.os.BatteryManager;
+import android.provider.Settings;
+import android.support.test.InstrumentationRegistry;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.runner.RunWith;
+import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
+import org.junit.Test;
+import com.android.settings.R;
+
+import static android.support.test.espresso.Espresso.onView;
+import static android.support.test.espresso.action.ViewActions.click;
+import static android.support.test.espresso.matcher.ViewMatchers.*;
+import static junit.framework.Assert.assertEquals;
+
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+public class KeepOnScreenTest {
+    private static int EXPECTED_FLAG = BatteryManager.BATTERY_PLUGGED_AC
+            | BatteryManager.BATTERY_PLUGGED_USB | BatteryManager.BATTERY_PLUGGED_WIRELESS;
+
+    @Test
+    public void testStayAwake_turnOn_StayAwakeWhileWirelessCharging() throws Exception{
+        Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
+        instrumentation.startActivitySync(new Intent(android.provider.Settings
+                .ACTION_APPLICATION_DEVELOPMENT_SETTINGS));
+
+        final Context targetContext = instrumentation.getTargetContext();
+        final int prevFlag = Settings.Global.getInt(targetContext.getContentResolver(), Settings
+                .Global.STAY_ON_WHILE_PLUGGED_IN);
+
+        // Turn on "Stay Awake" if needed
+        if (prevFlag == 0) {
+            onView(withText(R.string.keep_screen_on)).perform(click());
+        }
+
+        final int currentFlag = Settings.Global.getInt(targetContext.getContentResolver(), Settings
+                .Global.STAY_ON_WHILE_PLUGGED_IN);
+
+        assertEquals(EXPECTED_FLAG, currentFlag);
+
+        // Since this app doesn't have permission(and shouldn't have) to change global setting, we
+        // can only tearDown in this way
+        if (prevFlag != currentFlag) {
+            onView(withText(R.string.keep_screen_on)).perform(click());
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/DisplaySettingsTest.java b/tests/robotests/src/com/android/settings/DisplaySettingsTest.java
index 5af8544..ac499eb 100644
--- a/tests/robotests/src/com/android/settings/DisplaySettingsTest.java
+++ b/tests/robotests/src/com/android/settings/DisplaySettingsTest.java
@@ -18,16 +18,13 @@
 
 import android.app.Activity;
 import android.provider.Settings.System;
-
 import com.android.settings.dashboard.SummaryLoader;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 import org.robolectric.Robolectric;
-import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 
 import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT;
@@ -36,7 +33,7 @@
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class DisplaySettingsTest {
 
diff --git a/tests/robotests/src/com/android/settings/SettingsDialogFragmentTest.java b/tests/robotests/src/com/android/settings/SettingsDialogFragmentTest.java
index da23d5f..86b613c 100644
--- a/tests/robotests/src/com/android/settings/SettingsDialogFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/SettingsDialogFragmentTest.java
@@ -17,13 +17,11 @@
 
 import android.app.Dialog;
 import android.app.Fragment;
-
 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;
 
 import static org.junit.Assert.fail;
@@ -31,7 +29,7 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class SettingsDialogFragmentTest {
 
diff --git a/tests/robotests/src/com/android/settings/SettingsRobolectricTestRunner.java b/tests/robotests/src/com/android/settings/SettingsRobolectricTestRunner.java
new file mode 100644
index 0000000..1a7647d
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/SettingsRobolectricTestRunner.java
@@ -0,0 +1,75 @@
+/*
+ * 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;
+
+import java.util.List;
+import org.junit.runners.model.InitializationError;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+import org.robolectric.manifest.AndroidManifest;
+import org.robolectric.res.Fs;
+import org.robolectric.res.ResourcePath;
+
+/**
+ * Custom test runner for the testing of BluetoothPairingDialogs. This is needed because the
+ * default behavior for robolectric is just to grab the resource directory in the target package.
+ * We want to override this to add several spanning different projects.
+ */
+public class SettingsRobolectricTestRunner extends RobolectricTestRunner {
+
+    /**
+     * We don't actually want to change this behavior, so we just call super.
+     */
+    public SettingsRobolectricTestRunner(Class<?> testClass) throws InitializationError {
+        super(testClass);
+    }
+
+    /**
+     * We are going to create our own custom manifest so that we can add multiple resource
+     * paths to it. This lets us access resources in both Settings and SettingsLib in our tests.
+     */
+    @Override
+    protected AndroidManifest getAppManifest(Config config) {
+        // Using the manifest file's relative path, we can figure out the application directory.
+        final String appRoot = "packages/apps/Settings";
+        final String manifestPath = appRoot + "/AndroidManifest.xml";
+        final String resDir = appRoot + "/res";
+        final String assetsDir = appRoot + "/assets";
+
+        // By adding any resources from libraries we need to the AndroidManifest, we can access
+        // them from within the parallel universe's resource loader.
+        final AndroidManifest manifest = new AndroidManifest(Fs.fileFromPath(manifestPath),
+                Fs.fileFromPath(resDir), Fs.fileFromPath(assetsDir)) {
+            @Override
+            public List<ResourcePath> getIncludedResourcePaths() {
+                List<ResourcePath> paths = super.getIncludedResourcePaths();
+                paths.add(new ResourcePath(
+                        getPackageName(),
+                        Fs.fileFromPath("./packages/apps/Settings/res"),
+                        null));
+                paths.add(new ResourcePath(
+                        getPackageName(),
+                        Fs.fileFromPath("./frameworks/base/packages/SettingsLib/res"),
+                        null));
+                return paths;
+            }
+        };
+
+        // Set the package name to the renamed one
+        manifest.setPackageName("com.android.settings");
+        return manifest;
+    }
+}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/SummaryPreferenceTest.java b/tests/robotests/src/com/android/settings/SummaryPreferenceTest.java
index e55f069..e8440dd 100644
--- a/tests/robotests/src/com/android/settings/SummaryPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/SummaryPreferenceTest.java
@@ -22,18 +22,16 @@
 import android.view.View;
 import android.widget.LinearLayout;
 import android.widget.TextView;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
 import org.robolectric.annotation.Config;
 
 import static junit.framework.Assert.assertEquals;
 import static junit.framework.Assert.assertTrue;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class SummaryPreferenceTest {
 
diff --git a/tests/robotests/src/com/android/settings/UtilsTest.java b/tests/robotests/src/com/android/settings/UtilsTest.java
new file mode 100644
index 0000000..dacd303
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/UtilsTest.java
@@ -0,0 +1,68 @@
+package com.android.settings;
+
+import android.content.Context;
+import android.net.ConnectivityManager;
+import android.net.LinkAddress;
+import android.net.LinkProperties;
+import android.net.Network;
+import android.net.wifi.WifiManager;
+import java.net.InetAddress;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class UtilsTest {
+
+    private Context mContext;
+    @Mock private WifiManager wifiManager;
+    @Mock private Network network;
+    @Mock private ConnectivityManager connectivityManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mContext = spy(RuntimeEnvironment.application);
+        when(mContext.getSystemService(WifiManager.class)).thenReturn(wifiManager);
+        when(mContext.getSystemService(Context.CONNECTIVITY_SERVICE))
+            .thenReturn(connectivityManager);
+    }
+
+    @Test
+    public void testGetWifiIpAddresses_succeeds() throws Exception {
+        when(wifiManager.getCurrentNetwork()).thenReturn(network);
+        LinkAddress address = new LinkAddress(InetAddress.getByName("127.0.0.1"), 0);
+        LinkProperties lp = new LinkProperties();
+        lp.addLinkAddress(address);
+        when(connectivityManager.getLinkProperties(network)).thenReturn(lp);
+
+        assertThat(Utils.getWifiIpAddresses(mContext)).isEqualTo("127.0.0.1");
+    }
+
+    @Test
+    public void testGetWifiIpAddresses_nullLinkProperties() {
+        when(wifiManager.getCurrentNetwork()).thenReturn(network);
+        // Explicitly set the return value to null for readability sake.
+        when(connectivityManager.getLinkProperties(network)).thenReturn(null);
+
+        assertThat(Utils.getWifiIpAddresses(mContext)).isNull();
+    }
+
+    @Test
+    public void testGetWifiIpAddresses_nullNetwork() {
+        // Explicitly set the return value to null for readability sake.
+        when(wifiManager.getCurrentNetwork()).thenReturn(null);
+
+        assertThat(Utils.getWifiIpAddresses(mContext)).isNull();
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/accounts/UserAndAccountDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/accounts/UserAndAccountDashboardFragmentTest.java
new file mode 100644
index 0000000..2d266b6
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/accounts/UserAndAccountDashboardFragmentTest.java
@@ -0,0 +1,56 @@
+/*
+ * 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.accounts;
+
+import android.content.Context;
+
+import com.android.settings.TestConfig;
+import com.android.settings.testutils.FakeFeatureFactory;
+import com.android.settingslib.drawer.CategoryKey;
+
+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.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+
+import static com.google.common.truth.Truth.assertThat;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class UserAndAccountDashboardFragmentTest {
+
+  @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+  private Context mContext;
+
+  private UserAndAccountDashboardFragment mFragment;
+
+  @Before
+  public void setUp() {
+    MockitoAnnotations.initMocks(this);
+    FakeFeatureFactory.setupForTest(mContext);
+    mFragment = new UserAndAccountDashboardFragment();
+  }
+
+  @Test
+  public void testCategory_isConnectedDevice() {
+    assertThat(mFragment.getCategoryKey()).isEqualTo(CategoryKey.CATEGORY_ACCOUNT);
+  }
+
+}
diff --git a/tests/robotests/src/com/android/settings/applications/AdvancedAppSettingsTest.java b/tests/robotests/src/com/android/settings/applications/AdvancedAppSettingsTest.java
new file mode 100644
index 0000000..d0c5889
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/applications/AdvancedAppSettingsTest.java
@@ -0,0 +1,68 @@
+/*
+ * 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.applications;
+
+import android.content.Context;
+
+import com.android.settings.R;
+import com.android.settings.TestConfig;
+import com.android.settings.testutils.FakeFeatureFactory;
+
+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.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowApplication;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.when;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class AdvancedAppSettingsTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+
+    private FakeFeatureFactory mFeatureFactory;
+    private AdvancedAppSettings mFragment;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        FakeFeatureFactory.setupForTest(mContext);
+        mFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext);
+        mFragment = new AdvancedAppSettings();
+        mFragment.onAttach(ShadowApplication.getInstance().getApplicationContext());
+    }
+
+    @Test
+    public void getPreferenceScreenResId_differentIAEnabledState_shouldUseDifferentPrefLayout() {
+        when(mFeatureFactory.dashboardFeatureProvider.isEnabled()).thenReturn(true);
+        assertThat(mFragment.getPreferenceScreenResId()).isEqualTo(
+                R.xml.app_default_settings);
+
+        when(mFeatureFactory.dashboardFeatureProvider.isEnabled()).thenReturn(false);
+        assertThat(mFragment.getPreferenceScreenResId()).isEqualTo(
+                R.xml.advanced_apps);
+    }
+
+}
diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothPairingDialogTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothPairingDialogTest.java
new file mode 100644
index 0000000..035d29e
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothPairingDialogTest.java
@@ -0,0 +1,340 @@
+/*
+ * 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.bluetooth;
+
+import android.app.AlertDialog;
+import android.text.SpannableStringBuilder;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.CheckBox;
+import android.widget.TextView;
+import com.android.settings.R;
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.annotation.Config;
+import org.robolectric.util.FragmentTestUtil;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assert.fail;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class BluetoothPairingDialogTest {
+
+    private static final String FILLER = "text that goes in a view";
+    private static final String FAKE_DEVICE_NAME = "Fake Bluetooth Device";
+
+    @Mock
+    private BluetoothPairingController controller;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+    }
+
+    @Test
+    public void dialogUpdatesControllerWithUserInput() {
+        // set the correct dialog type
+        when(controller.getDialogType()).thenReturn(BluetoothPairingController.USER_ENTRY_DIALOG);
+
+        // we don't care about these for this test
+        when(controller.getDeviceVariantMessageId())
+                .thenReturn(BluetoothPairingController.INVALID_DIALOG_TYPE);
+        when(controller.getDeviceVariantMessageHintId())
+                .thenReturn(BluetoothPairingController.INVALID_DIALOG_TYPE);
+
+        // build fragment
+        BluetoothPairingDialogFragment frag = makeFragment();
+
+        // test that controller is updated on text change
+        frag.afterTextChanged(new SpannableStringBuilder(FILLER));
+        verify(controller, times(1)).updateUserInput(any());
+    }
+
+    @Test
+    public void dialogEnablesSubmitButtonOnValidationFromController() {
+        // set the correct dialog type
+        when(controller.getDialogType()).thenReturn(BluetoothPairingController.USER_ENTRY_DIALOG);
+
+        // we don't care about these for this test
+        when(controller.getDeviceVariantMessageId())
+                .thenReturn(BluetoothPairingController.INVALID_DIALOG_TYPE);
+        when(controller.getDeviceVariantMessageHintId())
+                .thenReturn(BluetoothPairingController.INVALID_DIALOG_TYPE);
+
+        // force the controller to say that any passkey is valid
+        when(controller.isPasskeyValid(any())).thenReturn(true);
+
+        // build fragment
+        BluetoothPairingDialogFragment frag = makeFragment();
+
+        // test that the positive button is enabled when passkey is valid
+        frag.afterTextChanged(new SpannableStringBuilder(FILLER));
+        View button = frag.getmDialog().getButton(AlertDialog.BUTTON_POSITIVE);
+        assertThat(button).isNotNull();
+        assertThat(button.getVisibility()).isEqualTo(View.VISIBLE);
+    }
+
+    @Test
+    public void dialogDoesNotAskForPairCodeOnConsentVariant() {
+        // set the dialog variant to confirmation/consent
+        when(controller.getDialogType()).thenReturn(BluetoothPairingController.CONFIRMATION_DIALOG);
+
+        // build the fragment
+        BluetoothPairingDialogFragment frag = makeFragment();
+
+        // check that the input field used by the entry dialog fragment does not exist
+        View view = frag.getmDialog().findViewById(R.id.text);
+        assertThat(view).isNull();
+    }
+
+    @Test
+    public void dialogAsksForPairCodeOnUserEntryVariant() {
+        // set the dialog variant to user entry
+        when(controller.getDialogType()).thenReturn(BluetoothPairingController.USER_ENTRY_DIALOG);
+
+        // we don't care about these for this test
+        when(controller.getDeviceVariantMessageId())
+                .thenReturn(BluetoothPairingController.INVALID_DIALOG_TYPE);
+        when(controller.getDeviceVariantMessageHintId())
+                .thenReturn(BluetoothPairingController.INVALID_DIALOG_TYPE);
+
+        // build the fragment
+        BluetoothPairingDialogFragment frag = makeFragment();
+
+        // check that the pin/passkey input field is visible to the user
+        View view = frag.getmDialog().findViewById(R.id.text);
+        assertThat(view.getVisibility()).isEqualTo(View.VISIBLE);
+    }
+
+    @Test
+    public void dialogDisplaysPairCodeOnDisplayPasskeyVariant() {
+        // set the dialog variant to display passkey
+        when(controller.getDialogType())
+                .thenReturn(BluetoothPairingController.DISPLAY_PASSKEY_DIALOG);
+
+        // ensure that the controller returns good values to indicate a passkey needs to be shown
+        when(controller.isDisplayPairingKeyVariant()).thenReturn(true);
+        when(controller.hasPairingContent()).thenReturn(true);
+        when(controller.getPairingContent()).thenReturn(FILLER);
+
+        // build the fragment
+        BluetoothPairingDialogFragment frag = makeFragment();
+
+        // get the relevant views
+        View messagePairing = frag.getmDialog().findViewById(R.id.pairing_code_message);
+        TextView pairingViewContent =
+                (TextView) frag.getmDialog().findViewById(R.id.pairing_subhead);
+        View pairingViewCaption = frag.getmDialog().findViewById(R.id.pairing_caption);
+
+        // check that the relevant views are visible and that the passkey is shown
+        assertThat(messagePairing.getVisibility()).isEqualTo(View.VISIBLE);
+        assertThat(pairingViewCaption.getVisibility()).isEqualTo(View.VISIBLE);
+        assertThat(pairingViewContent.getVisibility()).isEqualTo(View.VISIBLE);
+        assertThat(TextUtils.equals(FILLER, pairingViewContent.getText())).isTrue();
+    }
+
+    @Test(expected = IllegalStateException.class)
+    public void dialogThrowsExceptionIfNoControllerSet() {
+        // instantiate a fragment
+        BluetoothPairingDialogFragment frag = new BluetoothPairingDialogFragment();
+
+        // this should throw an error
+        FragmentTestUtil.startFragment(frag);
+        fail("Starting the fragment with no controller set should have thrown an exception.");
+    }
+
+    @Test
+    public void dialogCallsHookOnPositiveButtonPress() {
+        // set the dialog variant to confirmation/consent
+        when(controller.getDialogType()).thenReturn(BluetoothPairingController.CONFIRMATION_DIALOG);
+
+        // we don't care what this does, just that it is called
+        doNothing().when(controller).onDialogPositiveClick(any());
+
+        // build the fragment
+        BluetoothPairingDialogFragment frag = makeFragment();
+
+        // click the button and verify that the controller hook was called
+        frag.onClick(frag.getmDialog(), AlertDialog.BUTTON_POSITIVE);
+        verify(controller, times(1)).onDialogPositiveClick(any());
+    }
+
+    @Test
+    public void dialogCallsHookOnNegativeButtonPress() {
+        // set the dialog variant to confirmation/consent
+        when(controller.getDialogType()).thenReturn(BluetoothPairingController.CONFIRMATION_DIALOG);
+
+        // we don't care what this does, just that it is called
+        doNothing().when(controller).onDialogNegativeClick(any());
+
+        // build the fragment
+        BluetoothPairingDialogFragment frag = makeFragment();
+
+        // click the button and verify that the controller hook was called
+        frag.onClick(frag.getmDialog(), AlertDialog.BUTTON_NEGATIVE);
+        verify(controller, times(1)).onDialogNegativeClick(any());
+    }
+
+    @Test(expected = IllegalStateException.class)
+    public void dialogDoesNotAllowSwappingController() {
+        // instantiate a fragment
+        BluetoothPairingDialogFragment frag = new BluetoothPairingDialogFragment();
+        frag.setPairingController(controller);
+
+        // this should throw an error
+        frag.setPairingController(controller);
+        fail("Setting the controller multiple times should throw an exception.");
+    }
+
+    @Test
+    public void dialogPositiveButtonDisabledWhenUserInputInvalid() {
+        // set the correct dialog type
+        when(controller.getDialogType()).thenReturn(BluetoothPairingController.USER_ENTRY_DIALOG);
+
+        // we don't care about these for this test
+        when(controller.getDeviceVariantMessageId())
+                .thenReturn(BluetoothPairingController.INVALID_DIALOG_TYPE);
+        when(controller.getDeviceVariantMessageHintId())
+                .thenReturn(BluetoothPairingController.INVALID_DIALOG_TYPE);
+
+        // force the controller to say that any passkey is valid
+        when(controller.isPasskeyValid(any())).thenReturn(false);
+
+        // build fragment
+        BluetoothPairingDialogFragment frag = makeFragment();
+
+        // test that the positive button is enabled when passkey is valid
+        frag.afterTextChanged(new SpannableStringBuilder(FILLER));
+        View button = frag.getmDialog().getButton(AlertDialog.BUTTON_POSITIVE);
+        assertThat(button).isNotNull();
+        assertThat(button.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void dialogShowsContactSharingCheckboxWhenBluetoothProfileNotReady() {
+        // set the dialog variant to confirmation/consent
+        when(controller.getDialogType()).thenReturn(BluetoothPairingController.CONFIRMATION_DIALOG);
+
+        // set a fake device name and pretend the profile has not been set up for it
+        when(controller.getDeviceName()).thenReturn(FAKE_DEVICE_NAME);
+        when(controller.isProfileReady()).thenReturn(false);
+
+        // build the fragment
+        BluetoothPairingDialogFragment frag = makeFragment();
+
+        // verify that the checkbox is visible and that the device name is correct
+        CheckBox sharingCheckbox = (CheckBox) frag.getmDialog()
+                .findViewById(R.id.phonebook_sharing_message_confirm_pin);
+        assertThat(sharingCheckbox.getVisibility()).isEqualTo(View.VISIBLE);
+        assertThat(sharingCheckbox.getText().toString().contains(FAKE_DEVICE_NAME)).isTrue();
+    }
+
+    @Test
+    public void dialogHidesContactSharingCheckboxWhenBluetoothProfileIsReady() {
+        // set the dialog variant to confirmation/consent
+        when(controller.getDialogType()).thenReturn(BluetoothPairingController.CONFIRMATION_DIALOG);
+
+        // set a fake device name and pretend the profile has been set up for it
+        when(controller.getDeviceName()).thenReturn(FAKE_DEVICE_NAME);
+        when(controller.isProfileReady()).thenReturn(true);
+
+        // build the fragment
+        BluetoothPairingDialogFragment frag = makeFragment();
+
+        // verify that the checkbox is gone
+        CheckBox sharingCheckbox = (CheckBox) frag.getmDialog()
+                .findViewById(R.id.phonebook_sharing_message_confirm_pin);
+        assertThat(sharingCheckbox.getVisibility()).isEqualTo(View.GONE);
+    }
+
+    @Test
+    public void dialogShowsMessageOnPinEntryView() {
+        // set the correct dialog type
+        when(controller.getDialogType()).thenReturn(BluetoothPairingController.USER_ENTRY_DIALOG);
+
+        // Set the message id to something specific to verify later
+        when(controller.getDeviceVariantMessageId()).thenReturn(R.string.cancel);
+        when(controller.getDeviceVariantMessageHintId())
+                .thenReturn(BluetoothPairingController.INVALID_DIALOG_TYPE);
+
+        // build the fragment
+        BluetoothPairingDialogFragment frag = makeFragment();
+
+        // verify message is what we expect it to be and is visible
+        TextView message = (TextView) frag.getmDialog().findViewById(R.id.message_below_pin);
+        assertThat(message.getVisibility()).isEqualTo(View.VISIBLE);
+        assertThat(TextUtils.equals(frag.getString(R.string.cancel), message.getText())).isTrue();
+    }
+
+    @Test
+    public void dialogShowsMessageHintOnPinEntryView() {
+        // set the correct dialog type
+        when(controller.getDialogType()).thenReturn(BluetoothPairingController.USER_ENTRY_DIALOG);
+
+        // Set the message id hint to something specific to verify later
+        when(controller.getDeviceVariantMessageHintId()).thenReturn(R.string.cancel);
+        when(controller.getDeviceVariantMessageId())
+                .thenReturn(BluetoothPairingController.INVALID_DIALOG_TYPE);
+
+        // build the fragment
+        BluetoothPairingDialogFragment frag = makeFragment();
+
+        // verify message is what we expect it to be and is visible
+        TextView hint = (TextView) frag.getmDialog().findViewById(R.id.pin_values_hint);
+        assertThat(hint.getVisibility()).isEqualTo(View.VISIBLE);
+        assertThat(TextUtils.equals(frag.getString(R.string.cancel), hint.getText())).isTrue();
+    }
+
+    @Test
+    public void dialogHidesMessageAndHintWhenNotProvidedOnPinEntryView() {
+        // set the correct dialog type
+        when(controller.getDialogType()).thenReturn(BluetoothPairingController.USER_ENTRY_DIALOG);
+
+        // Set the id's to what is returned when it is not provided
+        when(controller.getDeviceVariantMessageHintId())
+                .thenReturn(BluetoothPairingController.INVALID_DIALOG_TYPE);
+        when(controller.getDeviceVariantMessageId())
+                .thenReturn(BluetoothPairingController.INVALID_DIALOG_TYPE);
+
+        // build the fragment
+        BluetoothPairingDialogFragment frag = makeFragment();
+
+        // verify message is what we expect it to be and is visible
+        TextView hint = (TextView) frag.getmDialog().findViewById(R.id.pin_values_hint);
+        assertThat(hint.getVisibility()).isEqualTo(View.GONE);
+        TextView message = (TextView) frag.getmDialog().findViewById(R.id.message_below_pin);
+        assertThat(message.getVisibility()).isEqualTo(View.GONE);
+    }
+
+    private BluetoothPairingDialogFragment makeFragment() {
+        BluetoothPairingDialogFragment frag = new BluetoothPairingDialogFragment();
+        frag.setPairingController(controller);
+        FragmentTestUtil.startFragment(frag);
+        assertThat(frag.getmDialog()).isNotNull();
+        return frag;
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/conditional/ConditionAdapterUtilsTest.java b/tests/robotests/src/com/android/settings/conditional/ConditionAdapterUtilsTest.java
new file mode 100644
index 0000000..dde291d
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/conditional/ConditionAdapterUtilsTest.java
@@ -0,0 +1,72 @@
+/*
+ * 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.conditional;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.LinearLayout;
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settings.dashboard.DashboardAdapter;
+import com.android.settings.dashboard.conditional.Condition;
+import com.android.settings.dashboard.conditional.ConditionAdapterUtils;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import com.android.settings.R;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.when;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class ConditionAdapterUtilsTest{
+    @Mock
+    private Condition mCondition;
+    private DashboardAdapter.DashboardItemHolder mViewHolder;
+    private Context mContext;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+        final CharSequence[] actions = new CharSequence[2];
+        when(mCondition.getActions()).thenReturn(actions);
+
+        final View view = LayoutInflater.from(mContext).inflate(R.layout.condition_card, new
+                LinearLayout(mContext), true);
+        mViewHolder = new DashboardAdapter.DashboardItemHolder(view);
+    }
+
+    @Test
+    public void testBindView_isExpanded_returnVisible() {
+        ConditionAdapterUtils.bindViews(mCondition, mViewHolder, true, null, null);
+        assertThat(mViewHolder.itemView.findViewById(R.id.detail_group).getVisibility())
+                .isEqualTo(View.VISIBLE);
+    }
+
+    @Test
+    public void testBindView_isNotExpanded_returnGone() {
+        ConditionAdapterUtils.bindViews(mCondition, mViewHolder, false, null, null);
+        assertThat(mViewHolder.itemView.findViewById(R.id.detail_group).getVisibility())
+                .isEqualTo(View.GONE);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragmentTest.java
index e6570e1..d53a27b 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragmentTest.java
@@ -16,23 +16,21 @@
 package com.android.settings.connecteddevice;
 
 import android.content.Context;
-
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settingslib.drawer.CategoryKey;
-
 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.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 
 import static com.google.common.truth.Truth.assertThat;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class ConnectedDeviceDashboardFragmentTest {
 
diff --git a/tests/robotests/src/com/android/settings/core/PreferenceControllerTest.java b/tests/robotests/src/com/android/settings/core/PreferenceControllerTest.java
index ef03d5b..aaab183 100644
--- a/tests/robotests/src/com/android/settings/core/PreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/core/PreferenceControllerTest.java
@@ -18,15 +18,13 @@
 import android.content.Context;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceScreen;
-
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
-
 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;
 
 import static org.mockito.Matchers.any;
@@ -34,7 +32,7 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class PreferenceControllerTest {
 
@@ -102,12 +100,12 @@
         }
 
         @Override
-        protected boolean isAvailable() {
+        public boolean isAvailable() {
             return isAvailable;
         }
 
         @Override
-        protected String getPreferenceKey() {
+        public String getPreferenceKey() {
             return KEY_PREF;
         }
     }
diff --git a/tests/robotests/src/com/android/settings/core/instrumentation/InstrumentedDialogFragmentTest.java b/tests/robotests/src/com/android/settings/core/instrumentation/InstrumentedDialogFragmentTest.java
index 14b3bb4..0abac1d 100644
--- a/tests/robotests/src/com/android/settings/core/instrumentation/InstrumentedDialogFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/core/instrumentation/InstrumentedDialogFragmentTest.java
@@ -16,18 +16,16 @@
 package com.android.settings.core.instrumentation;
 
 import android.os.Bundle;
-
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
-
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 import org.robolectric.shadows.ShadowApplication;
 
 import static com.google.common.truth.Truth.assertThat;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class InstrumentedDialogFragmentTest {
 
diff --git a/tests/robotests/src/com/android/settings/core/instrumentation/MetricsFeatureProviderTest.java b/tests/robotests/src/com/android/settings/core/instrumentation/MetricsFeatureProviderTest.java
index 22be988..41a2a71 100644
--- a/tests/robotests/src/com/android/settings/core/instrumentation/MetricsFeatureProviderTest.java
+++ b/tests/robotests/src/com/android/settings/core/instrumentation/MetricsFeatureProviderTest.java
@@ -16,22 +16,20 @@
 package com.android.settings.core.instrumentation;
 
 import android.content.Context;
-
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settings.overlay.FeatureFactory;
-
 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;
 import org.robolectric.shadows.ShadowApplication;
 
 import static com.google.common.truth.Truth.assertThat;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class MetricsFeatureProviderTest {
 
diff --git a/tests/robotests/src/com/android/settings/core/instrumentation/SharedPreferenceLoggerTest.java b/tests/robotests/src/com/android/settings/core/instrumentation/SharedPreferenceLoggerTest.java
index a3e0e45..dad6fa9 100644
--- a/tests/robotests/src/com/android/settings/core/instrumentation/SharedPreferenceLoggerTest.java
+++ b/tests/robotests/src/com/android/settings/core/instrumentation/SharedPreferenceLoggerTest.java
@@ -17,16 +17,14 @@
 
 import android.content.Context;
 import android.content.SharedPreferences;
-
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settings.overlay.FeatureFactory;
-
 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;
 import org.robolectric.shadows.ShadowApplication;
 
@@ -36,7 +34,7 @@
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class SharedPreferenceLoggerTest {
 
diff --git a/tests/robotests/src/com/android/settings/core/instrumentation/VisibilityLoggerMixinTest.java b/tests/robotests/src/com/android/settings/core/instrumentation/VisibilityLoggerMixinTest.java
index 3fa8c94..56fa786 100644
--- a/tests/robotests/src/com/android/settings/core/instrumentation/VisibilityLoggerMixinTest.java
+++ b/tests/robotests/src/com/android/settings/core/instrumentation/VisibilityLoggerMixinTest.java
@@ -16,15 +16,13 @@
 package com.android.settings.core.instrumentation;
 
 import android.content.Context;
-
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
-
 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;
 
 import static com.android.settings.core.instrumentation.Instrumentable.METRICS_CATEGORY_UNKNOWN;
@@ -36,7 +34,7 @@
 import static org.mockito.Mockito.verify;
 
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class VisibilityLoggerMixinTest {
 
diff --git a/tests/robotests/src/com/android/settings/core/lifecycle/LifecycleTest.java b/tests/robotests/src/com/android/settings/core/lifecycle/LifecycleTest.java
index bc7b129..6aae543 100644
--- a/tests/robotests/src/com/android/settings/core/lifecycle/LifecycleTest.java
+++ b/tests/robotests/src/com/android/settings/core/lifecycle/LifecycleTest.java
@@ -16,7 +16,7 @@
 package com.android.settings.core.lifecycle;
 
 import android.content.Context;
-
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settings.core.lifecycle.events.OnAttach;
 import com.android.settings.core.lifecycle.events.OnDestroy;
@@ -24,18 +24,16 @@
 import com.android.settings.core.lifecycle.events.OnResume;
 import com.android.settings.core.lifecycle.events.OnStart;
 import com.android.settings.core.lifecycle.events.OnStop;
-
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.Robolectric;
-import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 import org.robolectric.util.ActivityController;
 import org.robolectric.util.FragmentController;
 
 import static com.google.common.truth.Truth.assertThat;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class LifecycleTest {
 
diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardDataTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardDataTest.java
new file mode 100644
index 0000000..52c2103
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/dashboard/DashboardDataTest.java
@@ -0,0 +1,336 @@
+/*
+ * 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.dashboard;
+
+import android.support.annotation.NonNull;
+import android.support.v7.util.DiffUtil;
+import android.support.v7.util.ListUpdateCallback;
+import com.android.settings.TestConfig;
+import com.android.settings.dashboard.conditional.AirplaneModeCondition;
+import com.android.settings.dashboard.conditional.Condition;
+import com.android.settingslib.drawer.DashboardCategory;
+import com.android.settingslib.drawer.Tile;
+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;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class DashboardDataTest {
+    private static final String TEST_SUGGESTION_TITLE = "Use fingerprint";
+    private static final String TEST_CATEGORY_TILE_TITLE = "Display";
+
+    private DashboardData mDashboardDataWithOneConditions;
+    private DashboardData mDashboardDataWithTwoConditions;
+    private DashboardData mDashboardDataWithNoItems;
+    @Mock
+    private Tile mTestCategoryTile;
+    @Mock
+    private Tile mTestSuggestion;
+    @Mock
+    private DashboardCategory mDashboardCategory;
+    @Mock
+    private Condition mTestCondition;
+    @Mock
+    private Condition mSecondCondition; // condition used to test insert in DiffUtil
+
+    @Before
+    public void SetUp() {
+        MockitoAnnotations.initMocks(this);
+
+        // Build suggestions
+        final List<Tile> suggestions = new ArrayList<>();
+        mTestSuggestion.title = TEST_SUGGESTION_TITLE;
+        suggestions.add(mTestSuggestion);
+
+        // Build oneItemConditions
+        final List<Condition> oneItemConditions = new ArrayList<>();
+        when(mTestCondition.shouldShow()).thenReturn(true);
+        oneItemConditions.add(mTestCondition);
+
+        // Build twoItemConditions
+        final List<Condition> twoItemsConditions = new ArrayList<>();
+        when(mSecondCondition.shouldShow()).thenReturn(true);
+        twoItemsConditions.add(mTestCondition);
+        twoItemsConditions.add(mSecondCondition);
+
+        // Build categories
+        final List<DashboardCategory> categories = new ArrayList<>();
+        mTestCategoryTile.title = TEST_CATEGORY_TILE_TITLE;
+        mDashboardCategory.title = "test";
+        mDashboardCategory.tiles = new ArrayList<>();
+        mDashboardCategory.tiles.add(mTestCategoryTile);
+        categories.add(mDashboardCategory);
+
+        // Build DashboardData 
+        mDashboardDataWithOneConditions = new DashboardData.Builder()
+                .setConditions(oneItemConditions)
+                .setCategories(categories)
+                .setSuggestions(suggestions)
+                .build();
+
+        mDashboardDataWithTwoConditions = new DashboardData.Builder()
+                .setConditions(twoItemsConditions)
+                .setCategories(categories)
+                .setSuggestions(suggestions)
+                .build();
+
+        mDashboardDataWithNoItems = new DashboardData.Builder()
+                .setConditions(null)
+                .setCategories(null)
+                .setSuggestions(null)
+                .build();
+    }
+
+    @Test
+    public void testBuildItemsData_containsAllData() {
+        final DashboardData.SuggestionHeaderData data =
+                new DashboardData.SuggestionHeaderData(false, 1, 0);
+        final Object[] expectedObjects = {mTestCondition, null, data, mTestSuggestion,
+                mDashboardCategory, mTestCategoryTile};
+        final int expectedSize = expectedObjects.length;
+
+        assertThat(mDashboardDataWithOneConditions.getItemList().size())
+                .isEqualTo(expectedSize);
+        for (int i = 0; i < expectedSize; i++) {
+            if (mDashboardDataWithOneConditions.getItemEntityByPosition(i)
+                    instanceof DashboardData.SuggestionHeaderData) {
+                // SuggestionHeaderData is created inside when build, we can only use isEqualTo
+                assertThat(mDashboardDataWithOneConditions.getItemEntityByPosition(i))
+                        .isEqualTo(expectedObjects[i]);
+            } else {
+                assertThat(mDashboardDataWithOneConditions.getItemEntityByPosition(i))
+                        .isSameAs(expectedObjects[i]);
+            }
+        }
+    }
+
+    @Test
+    public void testGetPositionByEntity_selfInstance_returnPositionFound() {
+        final int position = mDashboardDataWithOneConditions
+                .getPositionByEntity(mTestCondition);
+        assertThat(position).isNotEqualTo(DashboardData.POSITION_NOT_FOUND);
+    }
+
+    @Test
+    public void testGetPositionByEntity_notExisted_returnNotFound() {
+        final Condition condition = mock(AirplaneModeCondition.class);
+        final int position = mDashboardDataWithOneConditions.getPositionByEntity(condition);
+        assertThat(position).isEqualTo(DashboardData.POSITION_NOT_FOUND);
+    }
+
+    @Test
+    public void testGetPositionByTile_selfInstance_returnPositionFound() {
+        final int position = mDashboardDataWithOneConditions
+                .getPositionByTile(mTestCategoryTile);
+        assertThat(position).isNotEqualTo(DashboardData.POSITION_NOT_FOUND);
+    }
+
+    @Test
+    public void testGetPositionByTile_equalTitle_returnPositionFound() {
+        final Tile tile = mock(Tile.class);
+        tile.title = TEST_CATEGORY_TILE_TITLE;
+        final int position = mDashboardDataWithOneConditions.getPositionByTile(tile);
+        assertThat(position).isNotEqualTo(DashboardData.POSITION_NOT_FOUND);
+    }
+
+    @Test
+    public void testGetPositionByTile_notExisted_returnNotFound() {
+        final Tile tile = mock(Tile.class);
+        tile.title = "";
+        final int position = mDashboardDataWithOneConditions.getPositionByTile(tile);
+        assertThat(position).isEqualTo(DashboardData.POSITION_NOT_FOUND);
+    }
+
+    @Test
+    public void testDiffUtil_DataEqual_noResultData() {
+        List<ListUpdateResult.ResultData> testResultData = new ArrayList<>();
+        testDiffUtil(mDashboardDataWithOneConditions, 
+                mDashboardDataWithOneConditions, testResultData);
+    }
+
+    @Test
+    public void testDiffUtil_InsertOneCondition_ResultDataOneInserted() {
+        //Build testResultData
+        final List<ListUpdateResult.ResultData> testResultData = new ArrayList<>();
+        testResultData.add(new ListUpdateResult.ResultData(
+                ListUpdateResult.ResultData.TYPE_OPERATION_INSERT, 1, 1));
+
+        testDiffUtil(mDashboardDataWithOneConditions,
+                mDashboardDataWithTwoConditions, testResultData);
+    }
+
+    @Test
+    public void testDiffUtil_DeleteAllData_ResultDataOneDeleted() {
+        //Build testResultData
+        final List<ListUpdateResult.ResultData> testResultData = new ArrayList<>();
+        testResultData.add(new ListUpdateResult.ResultData(
+                ListUpdateResult.ResultData.TYPE_OPERATION_REMOVE, 0, 6));
+
+        testDiffUtil(mDashboardDataWithOneConditions, mDashboardDataWithNoItems, testResultData);
+    }
+
+    /**
+     * Test when using the
+     * {@link com.android.settings.dashboard.DashboardData.ItemsDataDiffCallback}
+     * to transfer List from {@paramref baseDashboardData} to {@paramref diffDashboardData}, whether
+     * the transform data result is equals to {@paramref testResultData}
+     * <p>
+     * The steps are described below:
+     * 1. Calculate a {@link android.support.v7.util.DiffUtil.DiffResult} from
+     * {@paramref baseDashboardData} to {@paramref diffDashboardData}
+     * <p>
+     * 2. Dispatch the {@link android.support.v7.util.DiffUtil.DiffResult} calculated from step 1
+     * into {@link ListUpdateResult}
+     * <p>
+     * 3. Get result data(a.k.a. baseResultData) from {@link ListUpdateResult} and compare it to
+     * {@paramref testResultData}
+     * <p>
+     * Because baseResultData and {@paramref testResultData} don't have sequence. When do the
+     * comparison, we will sort them first and then compare the inside data from them one by one.
+     *
+     * @param baseDashboardData
+     * @param diffDashboardData
+     * @param testResultData
+     */
+    private void testDiffUtil(DashboardData baseDashboardData, DashboardData diffDashboardData,
+            List<ListUpdateResult.ResultData> testResultData) {
+        final DiffUtil.DiffResult diffUtilResult = DiffUtil.calculateDiff(
+                new DashboardData.ItemsDataDiffCallback(
+                        baseDashboardData.getItemList(), diffDashboardData.getItemList()));
+
+        // Dispatch to listUpdateResult, then listUpdateResult will have result data
+        final ListUpdateResult listUpdateResult = new ListUpdateResult();
+        diffUtilResult.dispatchUpdatesTo(listUpdateResult);
+
+        final List<ListUpdateResult.ResultData> baseResultData = listUpdateResult.getResultData();
+        assertThat(testResultData.size()).isEqualTo(baseResultData.size());
+
+        // Sort them so we can compare them one by one using a for loop
+        Collections.sort(baseResultData);
+        Collections.sort(testResultData);
+        final int size = baseResultData.size();
+        for (int i = 0; i < size; i++) {
+            // Refer to equals method in ResultData
+            assertThat(baseResultData.get(i)).isEqualTo(testResultData.get(i));
+        }
+    }
+
+    /**
+     * This class contains the result about how the changes made to convert one
+     * list to another list. It implements ListUpdateCallback to record the result data.
+     */
+    private static class ListUpdateResult implements ListUpdateCallback {
+        final private List<ResultData> mResultData;
+
+        public ListUpdateResult() {
+            mResultData = new ArrayList<>();
+        }
+
+        public List<ResultData> getResultData() {
+            return mResultData;
+        }
+
+        @Override
+        public void onInserted(int position, int count) {
+            mResultData.add(new ResultData(ResultData.TYPE_OPERATION_INSERT, position, count));
+        }
+
+        @Override
+        public void onRemoved(int position, int count) {
+            mResultData.add(new ResultData(ResultData.TYPE_OPERATION_REMOVE, position, count));
+        }
+
+        @Override
+        public void onMoved(int fromPosition, int toPosition) {
+            mResultData.add(
+                    new ResultData(ResultData.TYPE_OPERATION_MOVE, fromPosition, toPosition));
+        }
+
+        @Override
+        public void onChanged(int position, int count, Object payload) {
+            mResultData.add(new ResultData(ResultData.TYPE_OPERATION_CHANGE, position, count));
+        }
+
+        /**
+         * This class contains general type and field to record the operation data generated
+         * in {@link ListUpdateCallback}. Please refer to {@link ListUpdateCallback} for more info.
+         * <p>
+         * The following are examples about the data stored in this class:
+         * <p>
+         * "The data starts from position(arg1) with count number(arg2) is changed(operation)"
+         * or "The data is moved(operation) from position1(arg1) to position2(arg2)"
+         */
+        private static class ResultData implements Comparable<ResultData> {
+            public static final int TYPE_OPERATION_INSERT = 0;
+            public static final int TYPE_OPERATION_REMOVE = 1;
+            public static final int TYPE_OPERATION_MOVE = 2;
+            public static final int TYPE_OPERATION_CHANGE = 3;
+
+            public final int operation;
+            public final int arg1;
+            public final int arg2;
+
+            public ResultData(int operation, int arg1, int arg2) {
+                this.operation = operation;
+                this.arg1 = arg1;
+                this.arg2 = arg2;
+            }
+
+            @Override
+            public boolean equals(Object obj) {
+                if (this == obj) {
+                    return true;
+                }
+
+                if (!(obj instanceof ResultData)) {
+                    return false;
+                }
+
+                ResultData targetData = (ResultData) obj;
+
+                return operation == targetData.operation && arg1 == targetData.arg1
+                        && arg2 == targetData.arg2;
+            }
+
+            @Override
+            public int compareTo(@NonNull ResultData resultData) {
+                if (this.operation != resultData.operation) {
+                    return operation - resultData.operation;
+                }
+
+                if (arg1 != resultData.arg1) {
+                    return arg1 - resultData.arg1;
+                }
+
+                return arg2 - resultData.arg2;
+            }
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardDividerDecorationTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardDividerDecorationTest.java
index adfa608..e829eb2 100644
--- a/tests/robotests/src/com/android/settings/dashboard/DashboardDividerDecorationTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/DashboardDividerDecorationTest.java
@@ -24,18 +24,16 @@
 import android.support.v7.preference.PreferenceGroupAdapter;
 import android.support.v7.widget.RecyclerView;
 import android.view.View;
-
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.testutils.FakeFeatureFactory;
-
 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.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 
 import static org.mockito.Matchers.any;
@@ -43,7 +41,7 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class DashboardDividerDecorationTest {
 
diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java
new file mode 100644
index 0000000..66f2289
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java
@@ -0,0 +1,106 @@
+/*
+ * 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.dashboard;
+
+import android.app.Activity;
+import android.content.ComponentName;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.drawable.Icon;
+import android.os.Bundle;
+import android.support.v7.preference.Preference;
+
+import com.android.settings.SettingsActivity;
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settingslib.drawer.Tile;
+
+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.annotation.Config;
+import org.robolectric.shadows.ShadowApplication;
+
+import static com.google.common.truth.Truth.assertThat;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class DashboardFeatureProviderImplTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Activity mActivity;
+
+    private DashboardFeatureProviderImpl mImpl;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mImpl = new DashboardFeatureProviderImpl(mActivity);
+    }
+
+    @Test
+    public void bindPreference_shouldBindAllData() {
+        final Preference preference = new Preference(
+                ShadowApplication.getInstance().getApplicationContext());
+        final Tile tile = new Tile();
+        tile.title = "title";
+        tile.summary = "summary";
+        tile.icon = Icon.createWithBitmap(Bitmap.createBitmap(1, 1, Bitmap.Config.RGB_565));
+        tile.metaData = new Bundle();
+        tile.metaData.putString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS, "HI");
+        tile.priority = 10;
+        mImpl.bindPreferenceToTile(mActivity, preference, tile, "123");
+
+        assertThat(preference.getTitle()).isEqualTo(tile.title);
+        assertThat(preference.getSummary()).isEqualTo(tile.summary);
+        assertThat(preference.getIcon()).isNotNull();
+        assertThat(preference.getFragment())
+                .isEqualTo(tile.metaData.getString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS));
+        assertThat(preference.getOrder()).isEqualTo(-tile.priority);
+    }
+
+    @Test
+    public void bindPreference_noFragmentMetadata_shouldBindIntent() {
+        final Preference preference = new Preference(
+                ShadowApplication.getInstance().getApplicationContext());
+        final Tile tile = new Tile();
+        tile.metaData = new Bundle();
+        tile.priority = 10;
+        tile.intent = new Intent();
+        mImpl.bindPreferenceToTile(mActivity, preference, tile, "123");
+
+        assertThat(preference.getFragment()).isNull();
+        assertThat(preference.getOnPreferenceClickListener()).isNotNull();
+        assertThat(preference.getOrder()).isEqualTo(-tile.priority);
+    }
+
+    @Test
+    public void bindPreference_withNullKeyNullPriority_shouldGenerateKeyAndPriority() {
+        final Preference preference = new Preference(
+                ShadowApplication.getInstance().getApplicationContext());
+        final Tile tile = new Tile();
+        tile.intent = new Intent();
+        tile.intent.setComponent(new ComponentName("pkg", "class"));
+        mImpl.bindPreferenceToTile(mActivity, preference, tile, null /* key */);
+
+        assertThat(preference.getKey()).isNotNull();
+        assertThat(preference.getOrder()).isEqualTo(Preference.DEFAULT_ORDER);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java
index 432be56..ce4dd68 100644
--- a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java
@@ -16,10 +16,14 @@
 package com.android.settings.dashboard;
 
 import android.content.Context;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.drawable.Icon;
 import android.os.Bundle;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceScreen;
-
+import com.android.settings.SettingsActivity;
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settings.core.PreferenceController;
 import com.android.settings.overlay.FeatureFactory;
@@ -27,29 +31,27 @@
 import com.android.settingslib.drawer.CategoryKey;
 import com.android.settingslib.drawer.DashboardCategory;
 import com.android.settingslib.drawer.Tile;
-
+import java.util.ArrayList;
+import java.util.List;
 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.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 import org.robolectric.shadows.ShadowApplication;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import static com.google.common.truth.Truth.assertThat;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyString;
+import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class DashboardFragmentTest {
 
@@ -59,6 +61,8 @@
     private DashboardCategory mDashboardCategory;
     @Mock
     private FakeFeatureFactory mFakeFeatureFactory;
+    @Mock
+    private ProgressiveDisclosureMixin mDisclosureMixin;
     private TestFragment mTestFragment;
 
     @Before
@@ -69,9 +73,12 @@
         mDashboardCategory.tiles = new ArrayList<>();
         mDashboardCategory.tiles.add(new Tile());
         mTestFragment = new TestFragment(ShadowApplication.getInstance().getApplicationContext());
-        mTestFragment.onAttach(mContext);
+        when(mFakeFeatureFactory.dashboardFeatureProvider
+                .getProgressiveDisclosureMixin(any(Context.class), eq(mTestFragment)))
+                .thenReturn(mDisclosureMixin);
         when(mFakeFeatureFactory.dashboardFeatureProvider.getTilesForCategory(anyString()))
                 .thenReturn(mDashboardCategory);
+        mTestFragment.onAttach(ShadowApplication.getInstance().getApplicationContext());
     }
 
     @Test
@@ -87,11 +94,14 @@
 
     @Test
     public void displayTilesAsPreference_shouldAddTilesWithIntent() {
+        when(mFakeFeatureFactory.dashboardFeatureProvider.getTilesForCategory(anyString()))
+                .thenReturn(mDashboardCategory);
         when(mFakeFeatureFactory.dashboardFeatureProvider.getDashboardKeyForTile(any(Tile.class)))
                 .thenReturn("test_key");
         mTestFragment.onCreatePreferences(new Bundle(), "rootKey");
 
-        verify(mTestFragment.mScreen).addPreference(any(DashboardTilePreference.class));
+        verify(mDisclosureMixin).addPreference(any(PreferenceScreen.class),
+                any(DashboardTilePreference.class));
     }
 
     @Test
@@ -109,6 +119,21 @@
         verify(mTestFragment.mScreen, never()).addPreference(any(DashboardTilePreference.class));
     }
 
+    @Test
+    public void updateState_skipUnavailablePrefs() {
+        List<PreferenceController> preferenceControllers = mTestFragment.mControllers;
+        preferenceControllers.add(mock(PreferenceController.class));
+        preferenceControllers.add(mock(PreferenceController.class));
+        when(preferenceControllers.get(0).isAvailable()).thenReturn(false);
+        when(preferenceControllers.get(1).isAvailable()).thenReturn(true);
+
+        mTestFragment.onAttach(ShadowApplication.getInstance().getApplicationContext());
+        mTestFragment.onResume();
+
+        verify(mTestFragment.mControllers.get(0), never()).getPreferenceKey();
+        verify(mTestFragment.mControllers.get(1)).getPreferenceKey();
+    }
+
     public static class TestPreferenceController extends PreferenceController {
 
         public TestPreferenceController(Context context) {
@@ -121,12 +146,12 @@
         }
 
         @Override
-        protected boolean isAvailable() {
+        public boolean isAvailable() {
             return false;
         }
 
         @Override
-        protected String getPreferenceKey() {
+        public String getPreferenceKey() {
             return null;
         }
 
@@ -139,12 +164,13 @@
     public static class TestFragment extends DashboardFragment {
 
         private final Context mContext;
-        @Mock
         public PreferenceScreen mScreen;
+        private List<PreferenceController> mControllers;
 
         public TestFragment(Context context) {
             mContext = context;
             mScreen = mock(PreferenceScreen.class);
+            mControllers = new ArrayList<>();
         }
 
         @Override
@@ -179,7 +205,7 @@
 
         @Override
         protected List<PreferenceController> getPreferenceControllers(Context context) {
-            return null;
+            return mControllers;
         }
     }
 
diff --git a/tests/robotests/src/com/android/settings/dashboard/ProgressiveDisclosureTest.java b/tests/robotests/src/com/android/settings/dashboard/ProgressiveDisclosureTest.java
new file mode 100644
index 0000000..ab94f35
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/dashboard/ProgressiveDisclosureTest.java
@@ -0,0 +1,256 @@
+/*
+ * 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.dashboard;
+
+import android.content.Context;
+import android.support.v14.preference.PreferenceFragment;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settings.overlay.FeatureFactory;
+import com.android.settings.testutils.FakeFeatureFactory;
+import java.util.List;
+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.annotation.Config;
+import org.robolectric.shadows.ShadowApplication;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class ProgressiveDisclosureTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+    @Mock
+    private FakeFeatureFactory mFakeFeatureFactory;
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private PreferenceFragment mPreferenceFragment;
+    private PreferenceScreen mScreen;
+    private Context mAppContext;
+    private Preference mPreference;
+
+    private ProgressiveDisclosureMixin mMixin;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        FakeFeatureFactory.setupForTest(mContext);
+        mScreen = mPreferenceFragment.getPreferenceScreen();
+        mAppContext = ShadowApplication.getInstance().getApplicationContext();
+        mFakeFeatureFactory = (FakeFeatureFactory) FeatureFactory.getFactory(mContext);
+        mMixin = new ProgressiveDisclosureMixin(mAppContext,
+                mFakeFeatureFactory.dashboardFeatureProvider, mPreferenceFragment);
+        mPreference = new Preference(mAppContext);
+        mPreference.setKey("test");
+        when(mFakeFeatureFactory.dashboardFeatureProvider.isEnabled()).thenReturn(true);
+    }
+
+    @Test
+    public void shouldNotCollapse_lessPreferenceThanLimit() {
+        when(mScreen.getPreferenceCount()).thenReturn(5);
+
+        mMixin.setTileLimit(10);
+
+        assertThat(mMixin.shouldCollapse(mScreen)).isFalse();
+    }
+
+    @Test
+    public void shouldCollapse_morePreferenceThanLimit() {
+        when(mFakeFeatureFactory.dashboardFeatureProvider.isEnabled()).thenReturn(true);
+        when(mScreen.getPreferenceCount()).thenReturn(5);
+
+        assertThat(mMixin.shouldCollapse(mScreen)).isTrue();
+    }
+
+    @Test
+    public void findPreference_prefInCollapsedList_shouldFindIt() {
+        when(mScreen.findPreference(anyString())).thenReturn(null);
+        mMixin.addToCollapsedList(mPreference);
+
+        Preference pref = mMixin.findPreference(mScreen, mPreference.getKey());
+
+        assertThat(pref).isNotNull();
+        assertThat(pref).isSameAs(mPreference);
+    }
+
+    @Test
+    public void findPreference_prefOnScreen_shouldFindIt() {
+        when(mScreen.findPreference(mPreference.getKey())).thenReturn(mPreference);
+
+        Preference pref = mMixin.findPreference(mScreen, mPreference.getKey());
+
+        assertThat(pref).isNotNull();
+        assertThat(pref).isSameAs(mPreference);
+    }
+
+    @Test
+    public void findPreference_prefNotInCollapsedListOrScreen_shouldNotFindIt() {
+        when(mScreen.findPreference(anyString())).thenReturn(null);
+        Preference pref = mMixin.findPreference(mScreen, mPreference.getKey());
+
+        assertThat(pref).isNull();
+    }
+
+    @Test
+    public void findPreference_prefRemovedFromCollapsedList_shouldNotFindIt() {
+        when(mScreen.findPreference(anyString())).thenReturn(null);
+        mMixin.addToCollapsedList(mPreference);
+        mMixin.removePreference(mPreferenceFragment.getPreferenceScreen(), mPreference.getKey());
+
+        Preference pref = mMixin.findPreference(mScreen, mPreference.getKey());
+
+        assertThat(pref).isNull();
+    }
+
+    @Test
+    public void removePreference_shouldRemoveOnScreenPreference() {
+        when(mScreen.findPreference(mPreference.getKey())).thenReturn(mPreference);
+
+        mMixin.removePreference(mScreen, mPreference.getKey());
+
+        verify(mScreen).removePreference(mPreference);
+    }
+
+    @Test
+    public void removeLastPreference_shouldRemoveExpandButtonToo() {
+        when(mScreen.findPreference(anyString())).thenReturn(null);
+        mMixin.addToCollapsedList(mPreference);
+        // Collapsed
+        assertThat(mMixin.isCollapsed()).isTrue();
+
+        mMixin.removePreference(mScreen, mPreference.getKey());
+
+        // Removing expand button
+        verify(mScreen).removePreference(any(Preference.class));
+        // No longer collapsed
+        assertThat(mMixin.isCollapsed()).isFalse();
+    }
+
+    @Test
+    public void collapse_shouldDoNothingIfNotCollapsible() {
+        final PreferenceScreen screen = mPreferenceFragment.getPreferenceScreen();
+        when(screen.getPreferenceCount()).thenReturn(5);
+        mMixin.setTileLimit(15);
+
+        mMixin.collapse(screen);
+        assertThat(mMixin.isCollapsed()).isFalse();
+        verify(screen, never()).addPreference(any(Preference.class));
+        verify(screen, never()).removePreference(any(Preference.class));
+    }
+
+    @Test
+    public void collapse_shouldRemovePrefAndAddExpandButton() {
+        final PreferenceScreen screen = mPreferenceFragment.getPreferenceScreen();
+        when(screen.getPreferenceCount()).thenReturn(5);
+        when(screen.getPreference(anyInt())).thenReturn(mPreference);
+        mMixin.setTileLimit(2);
+
+        mMixin.collapse(screen);
+
+        assertThat(mMixin.isCollapsed()).isTrue();
+        verify(screen).addPreference(any(ExpandPreference.class));
+        verify(screen, times(3)).removePreference(any(Preference.class));
+    }
+
+    @Test
+    public void addToCollapsedList_shouldAddInOrder() {
+        final Preference pref1 = new Preference(mAppContext);
+        final Preference pref2 = new Preference(mAppContext);
+        pref1.setOrder(10);
+        pref2.setOrder(20);
+
+        // Pref1 has lower order than pref2, but add pref2 first. The collapsed list should maintain
+        // items in increasing order.
+        mMixin.addToCollapsedList(pref2);
+        mMixin.addToCollapsedList(pref1);
+
+        List<Preference> collapsedList = mMixin.getCollapsedPrefs();
+        assertThat(collapsedList.get(0)).isSameAs(pref1);
+        assertThat(collapsedList.get(1)).isSameAs(pref2);
+    }
+
+    @Test
+    public void addPreferenceWhenCollapsed_noPrefOnScreen_shouldAddToList() {
+        // Add something to collapsed list so we are in collapsed state.
+        mMixin.addToCollapsedList(new Preference(mAppContext));
+        assertThat(mMixin.getCollapsedPrefs().size()).isEqualTo(1);
+
+        // Just 1 preference on screen: the more button
+        when(mScreen.getPreferenceCount()).thenReturn(1);
+        final Preference toBeAdded = new Preference(mAppContext);
+        toBeAdded.setOrder(100);
+        mMixin.addPreference(mScreen, toBeAdded);
+
+        // Should have 2 prefs in collapsed list now
+        assertThat(mMixin.getCollapsedPrefs().size()).isEqualTo(2);
+        assertThat(mMixin.getCollapsedPrefs().get(0)).isSameAs(toBeAdded);
+    }
+
+    @Test
+    public void addPreferenceWhenCollapsed_prefOrderLessThanLastOnScreen_shouldAddToScreen() {
+        final Preference lastPref = new Preference(mAppContext);
+        lastPref.setOrder(100);
+        // Add something to collapsed list so we are in collapsed state.
+        mMixin.addToCollapsedList(new Preference(mAppContext));
+        assertThat(mMixin.getCollapsedPrefs().size()).isEqualTo(1);
+        // 3 prefs on screen, 2 are real and the last one is more button.
+        when(mScreen.getPreferenceCount()).thenReturn(3);
+        when(mScreen.getPreference(1)).thenReturn(lastPref);
+
+        final Preference toBeAdded = new Preference(mAppContext);
+        toBeAdded.setOrder(50);
+        mMixin.addPreference(mScreen, toBeAdded);
+
+        verify(mScreen).removePreference(lastPref);
+        verify(mScreen).addPreference(toBeAdded);
+        assertThat(mMixin.getCollapsedPrefs().get(0)).isSameAs(lastPref);
+    }
+
+    @Test
+    public void addPreferenceWhenCollapsed_prefOrderMoreThanLastOnScreen_shouldAddToList() {
+        final Preference lastPref = new Preference(mAppContext);
+        lastPref.setOrder(100);
+        // Add something to collapsed list so we are in collapsed state.
+        mMixin.addToCollapsedList(new Preference(mAppContext));
+        assertThat(mMixin.getCollapsedPrefs().size()).isEqualTo(1);
+        // 3 prefs on screen, 2 are real and the last one is more button.
+        when(mScreen.getPreferenceCount()).thenReturn(3);
+        when(mScreen.getPreference(1)).thenReturn(lastPref);
+
+        final Preference toBeAdded = new Preference(mAppContext);
+        toBeAdded.setOrder(200);
+        mMixin.addPreference(mScreen, toBeAdded);
+
+        verify(mScreen, never()).removePreference(any(Preference.class));
+        verify(mScreen, never()).addPreference(any(Preference.class));
+        assertThat(mMixin.getCollapsedPrefs().get(0)).isSameAs(toBeAdded);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/dashboard/conditional/ConditionTest.java b/tests/robotests/src/com/android/settings/dashboard/conditional/ConditionTest.java
index 5c0c02a..f8797aa 100644
--- a/tests/robotests/src/com/android/settings/dashboard/conditional/ConditionTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/conditional/ConditionTest.java
@@ -17,17 +17,15 @@
 
 import android.content.Context;
 import android.graphics.drawable.Icon;
-
 import com.android.internal.logging.MetricsProto;
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settings.core.instrumentation.MetricsFeatureProvider;
-
 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;
 
 import static com.google.common.truth.Truth.assertThat;
@@ -35,7 +33,7 @@
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.verify;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class ConditionTest {
 
diff --git a/tests/robotests/src/com/android/settings/dashboard/conditional/DashboardTilePreferenceTest.java b/tests/robotests/src/com/android/settings/dashboard/conditional/DashboardTilePreferenceTest.java
index 470eb43..b726419 100644
--- a/tests/robotests/src/com/android/settings/dashboard/conditional/DashboardTilePreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/conditional/DashboardTilePreferenceTest.java
@@ -21,20 +21,18 @@
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.LinearLayout;
-
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settings.dashboard.DashboardTilePreference;
-
 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.ShadowApplication;
 
 import static com.google.common.truth.Truth.assertThat;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class DashboardTilePreferenceTest {
 
diff --git a/tests/robotests/src/com/android/settings/datausage/BillingCycleSettingsTest.java b/tests/robotests/src/com/android/settings/datausage/BillingCycleSettingsTest.java
index 9ebb580..eec4324 100644
--- a/tests/robotests/src/com/android/settings/datausage/BillingCycleSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/datausage/BillingCycleSettingsTest.java
@@ -20,15 +20,13 @@
 import android.content.SharedPreferences;
 import android.os.Bundle;
 import android.support.v7.preference.PreferenceManager;
-
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
-
 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;
 
@@ -39,7 +37,7 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class BillingCycleSettingsTest {
 
diff --git a/tests/robotests/src/com/android/settings/datausage/DataUsageInfoControllerTest.java b/tests/robotests/src/com/android/settings/datausage/DataUsageInfoControllerTest.java
index 368d0a1..003f4d3 100644
--- a/tests/robotests/src/com/android/settings/datausage/DataUsageInfoControllerTest.java
+++ b/tests/robotests/src/com/android/settings/datausage/DataUsageInfoControllerTest.java
@@ -2,17 +2,17 @@
 
 import android.net.NetworkPolicy;
 import android.net.NetworkTemplate;
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settingslib.net.DataUsageController.DataUsageInfo;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 
 import static com.google.common.truth.Truth.assertThat;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class DataUsageInfoControllerTest {
     private DataUsageInfoController mInfoController;
diff --git a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java
index e9f4446..e8a2ee4 100644
--- a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java
+++ b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java
@@ -18,13 +18,13 @@
 
 import android.content.Context;
 import android.net.ConnectivityManager;
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 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;
 import org.robolectric.shadows.ShadowApplication;
 
@@ -32,7 +32,7 @@
 import static org.mockito.Matchers.anyInt;
 import static org.mockito.Mockito.when;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class DataUsageSummaryTest {
     @Mock private ConnectivityManager mManager;
diff --git a/tests/robotests/src/com/android/settings/datausage/UnrestrictedDataAccessTest.java b/tests/robotests/src/com/android/settings/datausage/UnrestrictedDataAccessTest.java
index a04861d..c7b8dee 100644
--- a/tests/robotests/src/com/android/settings/datausage/UnrestrictedDataAccessTest.java
+++ b/tests/robotests/src/com/android/settings/datausage/UnrestrictedDataAccessTest.java
@@ -17,21 +17,19 @@
 
 import android.content.pm.ApplicationInfo;
 import android.os.Process;
-
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settingslib.applications.ApplicationsState;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 
 import static com.google.common.truth.Truth.assertThat;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class UnrestrictedDataAccessTest {
 
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java
new file mode 100644
index 0000000..e3a4ba3
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java
@@ -0,0 +1,164 @@
+/*
+ * 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.deviceinfo;
+
+import android.app.Activity;
+import android.app.Fragment;
+import android.content.Context;
+import android.os.Build;
+import android.os.UserManager;
+import android.provider.Settings;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+
+import com.android.settings.DevelopmentSettings;
+import com.android.settings.TestConfig;
+
+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.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowApplication;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Answers.RETURNS_DEEP_STUBS;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class BuildNumberPreferenceControllerTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Activity mActivity;
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Fragment mFragment;
+    @Mock(answer = RETURNS_DEEP_STUBS)
+    private PreferenceScreen mScreen;
+    @Mock
+    private UserManager mUserManager;
+
+    private Preference mPreference;
+    private BuildNumberPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        when(mActivity.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
+        mController = new BuildNumberPreferenceController(mContext, mActivity, mFragment);
+
+        mPreference = new Preference(ShadowApplication.getInstance().getApplicationContext());
+        mPreference.setKey(mController.getPreferenceKey());
+    }
+
+    @Test
+    public void displayPref_shouldAlwaysDisplay() {
+        mController.displayPreference(mScreen);
+
+        verify(mScreen.findPreference(mController.getPreferenceKey())).setSummary(Build.DISPLAY);
+        verify(mScreen, never()).removePreference(any(Preference.class));
+    }
+
+    @Test
+    public void handlePrefTreeClick_onlyHandleBuildNumberPref() {
+        assertThat(mController.handlePreferenceTreeClick(mock(Preference.class))).isFalse();
+    }
+
+    @Test
+    public void handlePrefTreeClick_notAdminUser_doNothing() {
+        when(mUserManager.isAdminUser()).thenReturn(false);
+
+        assertThat(mController.handlePreferenceTreeClick(mPreference)).isFalse();
+    }
+
+    @Test
+    public void handlePrefTreeClick_deviceNotProvisioned_doNothing() {
+        when(mUserManager.isAdminUser()).thenReturn(true);
+        final Context context = ShadowApplication.getInstance().getApplicationContext();
+        Settings.Global.putInt(context.getContentResolver(),
+                Settings.Global.DEVICE_PROVISIONED, 0);
+
+        mController = new BuildNumberPreferenceController(context, mActivity, mFragment);
+
+        assertThat(mController.handlePreferenceTreeClick(mPreference)).isFalse();
+    }
+
+    @Test
+    public void handlePrefTreeClick_userHasRestrction_doNothing() {
+        when(mUserManager.isAdminUser()).thenReturn(true);
+        final Context context = ShadowApplication.getInstance().getApplicationContext();
+        Settings.Global.putInt(context.getContentResolver(),
+                Settings.Global.DEVICE_PROVISIONED, 1);
+        when(mUserManager.hasUserRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES))
+                .thenReturn(true);
+
+        mController = new BuildNumberPreferenceController(context, mActivity, mFragment);
+
+        assertThat(mController.handlePreferenceTreeClick(mPreference)).isFalse();
+    }
+
+    @Test
+    public void onActivityResult_notConfirmPasswordRequest_doNothing() {
+        final boolean activityResultHandled = mController.onActivityResult(
+                BuildNumberPreferenceController.REQUEST_CONFIRM_PASSWORD_FOR_DEV_PREF + 1,
+                Activity.RESULT_OK,
+                null);
+
+        assertThat(activityResultHandled).isFalse();
+        verify(mContext, never())
+                .getSharedPreferences(DevelopmentSettings.PREF_FILE, Context.MODE_PRIVATE);
+    }
+
+    @Test
+    public void onActivityResult_confirmPasswordRequestFailed_doNotEnableDevPref() {
+        final boolean activityResultHandled = mController.onActivityResult(
+                BuildNumberPreferenceController.REQUEST_CONFIRM_PASSWORD_FOR_DEV_PREF,
+                Activity.RESULT_CANCELED,
+                null);
+
+        assertThat(activityResultHandled).isTrue();
+        verify(mContext, never())
+                .getSharedPreferences(DevelopmentSettings.PREF_FILE, Context.MODE_PRIVATE);
+    }
+
+    @Test
+    public void onActivityResult_confirmPasswordRequestCompleted_enableDevPref() {
+        final Context context = ShadowApplication.getInstance().getApplicationContext();
+
+        mController = new BuildNumberPreferenceController(context, mActivity, mFragment);
+
+        final boolean activityResultHandled = mController.onActivityResult(
+                BuildNumberPreferenceController.REQUEST_CONFIRM_PASSWORD_FOR_DEV_PREF,
+                Activity.RESULT_OK,
+                null);
+
+        assertThat(activityResultHandled).isTrue();
+        assertThat(context.getSharedPreferences(DevelopmentSettings.PREF_FILE,
+                Context.MODE_PRIVATE).getBoolean(DevelopmentSettings.PREF_SHOW, false))
+                .isTrue();
+    }
+
+}
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/ManageStoragePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/ManageStoragePreferenceControllerTest.java
index d2c169e..12b3218 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/ManageStoragePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/ManageStoragePreferenceControllerTest.java
@@ -19,21 +19,18 @@
 import android.content.Context;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceScreen;
-
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
-
+import java.util.ArrayList;
+import java.util.List;
 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.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import static com.google.common.truth.Truth.assertThat;
 import static org.mockito.Answers.RETURNS_DEEP_STUBS;
 import static org.mockito.Matchers.any;
@@ -41,7 +38,7 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class ManageStoragePreferenceControllerTest {
 
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/SystemUpdatePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/SystemUpdatePreferenceControllerTest.java
index 70cf454..9ca218c 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/SystemUpdatePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/SystemUpdatePreferenceControllerTest.java
@@ -19,28 +19,25 @@
 import android.os.UserManager;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceScreen;
-
 import com.android.settings.R;
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
-
+import java.util.ArrayList;
+import java.util.List;
 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;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import static com.google.common.truth.Truth.assertThat;
 import static org.mockito.Answers.RETURNS_DEEP_STUBS;
 import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class SystemUpdatePreferenceControllerTest {
 
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryEntryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryEntryTest.java
new file mode 100644
index 0000000..632d549
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryEntryTest.java
@@ -0,0 +1,124 @@
+/*
+ * 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.fuelgauge;
+
+
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.os.Handler;
+import android.os.UserManager;
+
+import com.android.internal.os.BatterySipper;
+import com.android.internal.os.BatterySipper.DrainType;
+import com.android.settings.TestConfig;
+
+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.MockitoRule;
+import org.mockito.junit.MockitoJUnit;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class BatteryEntryTest {
+
+    private static final int APP_UID = 123;
+    private static final String APP_DEFAULT_PACKAGE_NAME = "com.android.test";
+    private static final String APP_LABEL = "Test App Name";
+    private static final String HIGH_DRAIN_PACKAGE = "com.android.test.screen";
+
+    @Rule public MockitoRule mocks = MockitoJUnit.rule();
+
+    @Mock private Context mockContext;
+    @Mock private Handler mockHandler;
+    @Mock private PackageManager mockPackageManager;
+    @Mock private UserManager mockUserManager;
+
+    @Before
+    public void stubContextToReturnMockPackageManager() {
+        when(mockContext.getPackageManager()).thenReturn(mockPackageManager);
+    }
+
+    @Before
+    public void stubPackageManagerToReturnAppPackageAndName() throws NameNotFoundException {
+        when(mockPackageManager.getPackagesForUid(APP_UID)).thenReturn(
+            new String[]{APP_DEFAULT_PACKAGE_NAME});
+
+        ApplicationInfo appInfo = mock(ApplicationInfo.class);
+        when(mockPackageManager.getApplicationInfo(APP_DEFAULT_PACKAGE_NAME, 0 /* no flags */))
+            .thenReturn(appInfo);
+        when(mockPackageManager.getApplicationLabel(appInfo)).thenReturn(APP_LABEL);
+    }
+
+    private BatteryEntry createBatteryEntryForApp() {
+        return new BatteryEntry(mockContext, mockHandler, mockUserManager, createSipperForApp());
+    }
+
+    private BatterySipper createSipperForApp() {
+        BatterySipper sipper =
+            new BatterySipper(DrainType.APP, new FakeUid(APP_UID), 0 /* power use */);
+        sipper.packageWithHighestDrain = HIGH_DRAIN_PACKAGE;
+        return sipper;
+    }
+
+    @Test
+    public void batteryEntryForApp_shouldSetDefaultPackageNameAndLabel() throws Exception {
+        BatteryEntry entry = createBatteryEntryForApp();
+
+        assertThat(entry.defaultPackageName).isEqualTo(APP_DEFAULT_PACKAGE_NAME);
+        assertThat(entry.getLabel()).isEqualTo(APP_LABEL);
+    }
+
+    @Test
+    public void batteryEntryForApp_shouldSetLabelAsPackageName_whenPackageCannotBeFound()
+        throws Exception {
+      when(mockPackageManager.getApplicationInfo(APP_DEFAULT_PACKAGE_NAME, 0 /* no flags */))
+          .thenThrow(new NameNotFoundException());
+
+      BatteryEntry entry = createBatteryEntryForApp();
+
+      assertThat(entry.getLabel()).isEqualTo(APP_DEFAULT_PACKAGE_NAME);
+    }
+
+    @Test
+    public void batteryEntryForApp_shouldSetHighestDrainPackage_whenPackagesCannotBeFoundForUid() {
+        when(mockPackageManager.getPackagesForUid(APP_UID)).thenReturn(null);
+
+        BatteryEntry entry = createBatteryEntryForApp();
+
+        assertThat(entry.getLabel()).isEqualTo(HIGH_DRAIN_PACKAGE);
+    }
+
+    @Test
+    public void batteryEntryForApp_shouldSetHighestDrainPackage_whenMultiplePackagesFoundForUid() {
+        when(mockPackageManager.getPackagesForUid(APP_UID)).thenReturn(
+            new String[]{APP_DEFAULT_PACKAGE_NAME, "package2", "package3"});
+
+        BatteryEntry entry = createBatteryEntryForApp();
+        
+        assertThat(entry.getLabel()).isEqualTo(HIGH_DRAIN_PACKAGE);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/gestures/SwipeToNotificationPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/SwipeToNotificationPreferenceControllerTest.java
new file mode 100644
index 0000000..e2b4473
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/gestures/SwipeToNotificationPreferenceControllerTest.java
@@ -0,0 +1,108 @@
+/*
+ * 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.gestures;
+
+import android.content.Context;
+import android.provider.Settings;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+import android.support.v7.preference.TwoStatePreference;
+
+import com.android.settings.TestConfig;
+
+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.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowApplication;
+
+import static android.provider.Settings.Secure.SYSTEM_NAVIGATION_KEYS_ENABLED;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class SwipeToNotificationPreferenceControllerTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private PreferenceScreen mScreen;
+
+    private SwipeToNotificationPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mController = new SwipeToNotificationPreferenceController(mContext);
+    }
+
+    @Test
+    public void display_configIsTrue_shouldDisplay() {
+        when(mContext.getResources().
+                getBoolean(com.android.internal.R.bool.config_supportSystemNavigationKeys))
+                .thenReturn(true);
+        mController.displayPreference(mScreen);
+
+        verify(mScreen, never()).removePreference(any(Preference.class));
+    }
+
+    @Test
+    public void display_configIsFalse_shouldNotDisplay() {
+        when(mContext.getResources().
+                getBoolean(com.android.internal.R.bool.config_supportSystemNavigationKeys))
+                .thenReturn(false);
+        when(mScreen.findPreference(mController.getPreferenceKey()))
+                .thenReturn(mock(Preference.class));
+
+        mController.displayPreference(mScreen);
+
+        verify(mScreen).removePreference(any(Preference.class));
+    }
+
+    @Test
+    public void updateState_preferenceSetCheckedWhenSettingIsOn() {
+        final TwoStatePreference preference = mock(TwoStatePreference.class);
+        final Context context = ShadowApplication.getInstance().getApplicationContext();
+        Settings.System.putInt(context.getContentResolver(), SYSTEM_NAVIGATION_KEYS_ENABLED, 1);
+
+        mController = new SwipeToNotificationPreferenceController(context);
+        mController.updateState(preference);
+
+        verify(preference).setChecked(true);
+    }
+
+    @Test
+    public void updateState_preferenceSetUncheckedWhenSettingIsOff() {
+        final TwoStatePreference preference = mock(TwoStatePreference.class);
+        final Context context = ShadowApplication.getInstance().getApplicationContext();
+        Settings.System.putInt(context.getContentResolver(), SYSTEM_NAVIGATION_KEYS_ENABLED, 0);
+
+        mController = new SwipeToNotificationPreferenceController(context);
+        mController.updateState(preference);
+
+        verify(preference).setChecked(false);
+    }
+
+}
diff --git a/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java
index 0adfea8..d3d6836 100644
--- a/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java
@@ -19,16 +19,14 @@
 import android.net.ConnectivityManager;
 import android.os.UserHandle;
 import android.os.UserManager;
-
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
-
 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.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 
 import static com.google.common.truth.Truth.assertThat;
@@ -36,7 +34,7 @@
 import static org.mockito.Matchers.anyString;
 import static org.mockito.Mockito.when;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class MobileNetworkPreferenceControllerTest {
 
diff --git a/tests/robotests/src/com/android/settings/network/NetworkDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/network/NetworkDashboardFragmentTest.java
index 386fbc6..6dd9c75 100644
--- a/tests/robotests/src/com/android/settings/network/NetworkDashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/network/NetworkDashboardFragmentTest.java
@@ -16,23 +16,21 @@
 package com.android.settings.network;
 
 import android.content.Context;
-
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settingslib.drawer.CategoryKey;
-
 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.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 
 import static com.google.common.truth.Truth.assertThat;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class NetworkDashboardFragmentTest {
 
diff --git a/tests/robotests/src/com/android/settings/notification/PulseNotificationPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/PulseNotificationPreferenceControllerTest.java
new file mode 100644
index 0000000..4eb33e9
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/PulseNotificationPreferenceControllerTest.java
@@ -0,0 +1,107 @@
+/*
+ * 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.notification;
+
+import android.content.Context;
+import android.provider.Settings;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+import android.support.v7.preference.TwoStatePreference;
+
+import com.android.settings.TestConfig;
+
+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.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowApplication;
+
+import static android.provider.Settings.System.NOTIFICATION_LIGHT_PULSE;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class PulseNotificationPreferenceControllerTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private PreferenceScreen mScreen;
+
+    private PulseNotificationPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mController = new PulseNotificationPreferenceController(mContext);
+    }
+
+    @Test
+    public void display_configIsTrue_shouldDisplay() {
+        when(mContext.getResources().
+                getBoolean(com.android.internal.R.bool.config_intrusiveNotificationLed))
+                .thenReturn(true);
+        mController.displayPreference(mScreen);
+
+        verify(mScreen, never()).removePreference(any(Preference.class));
+    }
+
+    @Test
+    public void display_configIsFalse_shouldNotDisplay() {
+        when(mContext.getResources().
+                getBoolean(com.android.internal.R.bool.config_intrusiveNotificationLed))
+                .thenReturn(false);
+        when(mScreen.findPreference(mController.getPreferenceKey()))
+                .thenReturn(mock(Preference.class));
+
+        mController.displayPreference(mScreen);
+
+        verify(mScreen).removePreference(any(Preference.class));
+    }
+
+    @Test
+    public void updateState_preferenceSetCheckedWhenSettingIsOn() {
+        final TwoStatePreference preference = mock(TwoStatePreference.class);
+        final Context context = ShadowApplication.getInstance().getApplicationContext();
+        Settings.System.putInt(context.getContentResolver(), NOTIFICATION_LIGHT_PULSE, 1);
+
+        mController = new PulseNotificationPreferenceController(context);
+        mController.updateState(preference);
+
+        verify(preference).setChecked(true);
+    }
+
+    @Test
+    public void updateState_preferenceSetUncheckedWhenSettingIsOff() {
+        final TwoStatePreference preference = mock(TwoStatePreference.class);
+        final Context context = ShadowApplication.getInstance().getApplicationContext();
+        Settings.System.putInt(context.getContentResolver(), NOTIFICATION_LIGHT_PULSE, 0);
+
+        mController = new PulseNotificationPreferenceController(context);
+        mController.updateState(preference);
+
+        verify(preference).setChecked(false);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/password/SetNewPasswordControllerTest.java b/tests/robotests/src/com/android/settings/password/SetNewPasswordControllerTest.java
index 61dbe08..2921b30 100644
--- a/tests/robotests/src/com/android/settings/password/SetNewPasswordControllerTest.java
+++ b/tests/robotests/src/com/android/settings/password/SetNewPasswordControllerTest.java
@@ -16,6 +16,22 @@
 
 package com.android.settings.password;
 
+import android.app.admin.DevicePolicyManager;
+import android.content.ComponentName;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.hardware.fingerprint.FingerprintManager;
+import android.os.Bundle;
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+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.annotation.Config;
+
 import static android.content.pm.PackageManager.FEATURE_FINGERPRINT;
 import static com.android.settings.ChooseLockGeneric.ChooseLockGenericFragment.HIDE_DISABLED_PREFS;
 import static com.android.settings.ChooseLockGeneric.ChooseLockGenericFragment.MINIMUM_QUALITY_KEY;
@@ -29,28 +45,10 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import android.app.admin.DevicePolicyManager;
-import android.content.ComponentName;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.hardware.fingerprint.FingerprintManager;
-import android.os.Bundle;
-
-import com.android.settings.TestConfig;
-
-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.annotation.Config;
-
 /**
  * Tests for {@link SetNewPasswordController}.
  */
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public final class SetNewPasswordControllerTest {
     private static final int CURRENT_UID = 101;
diff --git a/tests/robotests/src/com/android/settings/system/SystemDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/system/SystemDashboardFragmentTest.java
index eb8b43b..65a8805 100644
--- a/tests/robotests/src/com/android/settings/system/SystemDashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/system/SystemDashboardFragmentTest.java
@@ -18,20 +18,17 @@
 
 
 import android.app.Activity;
-
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settings.dashboard.SummaryLoader;
 import com.android.settings.testutils.FakeFeatureFactory;
-
 import com.google.common.truth.Truth;
-
 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.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 
 import static com.android.settings.system.SystemDashboardFragment.SUMMARY_PROVIDER_FACTORY;
@@ -40,7 +37,7 @@
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class SystemDashboardFragmentTest {
 
diff --git a/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java b/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java
index d872f7c..7bf908d 100644
--- a/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java
+++ b/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java
@@ -16,7 +16,6 @@
 package com.android.settings.testutils;
 
 import android.content.Context;
-
 import com.android.settings.core.instrumentation.MetricsFeatureProvider;
 import com.android.settings.dashboard.DashboardFeatureProvider;
 import com.android.settings.fuelgauge.PowerUsageFeatureProvider;
diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowTextUtils.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowTextUtils.java
index c6ed2fa..03991e6 100644
--- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowTextUtils.java
+++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowTextUtils.java
@@ -21,11 +21,10 @@
 import android.provider.Settings;
 import android.text.TextUtils;
 import android.view.View;
+import java.util.Locale;
 import org.robolectric.annotation.Implementation;
 import org.robolectric.annotation.Implements;
 
-import java.util.Locale;
-
 /**
  * Important: The current robolectric doesn't support API 24, so I copy the code
  * from API 24 here to make it compatible. Once robolectric is upgraded to 24,
diff --git a/tests/robotests/src/com/android/settings/utils/ThreadUtilsTest.java b/tests/robotests/src/com/android/settings/utils/ThreadUtilsTest.java
index 6a804d0..4267ed1 100644
--- a/tests/robotests/src/com/android/settings/utils/ThreadUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/utils/ThreadUtilsTest.java
@@ -17,14 +17,13 @@
 
 
 import com.android.settings.TestConfig;
-
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 
-import static org.junit.Assert.fail;
 import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assert.fail;
 
 @RunWith(RobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
diff --git a/tests/robotests/src/com/android/settings/widget/RingProgressBarTest.java b/tests/robotests/src/com/android/settings/widget/RingProgressBarTest.java
new file mode 100644
index 0000000..b7a5fd9
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/widget/RingProgressBarTest.java
@@ -0,0 +1,70 @@
+/*
+ * 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.widget;
+
+import static junit.framework.Assert.assertEquals;
+
+import android.content.Context;
+import android.view.View.MeasureSpec;
+
+import com.android.settings.TestConfig;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class RingProgressBarTest {
+
+    private Context mContext = RuntimeEnvironment.application;
+
+    private RingProgressBar mProgressBar;
+
+    @Before
+    public void setUp() {
+        mProgressBar = new RingProgressBar(mContext);
+    }
+
+    @Test
+    public void testMeasurePortrait() {
+        mProgressBar.measure(
+                MeasureSpec.makeMeasureSpec(100, MeasureSpec.EXACTLY),
+                MeasureSpec.makeMeasureSpec(200, MeasureSpec.EXACTLY));
+        assertEquals(100, mProgressBar.getMeasuredHeight());
+        assertEquals(100, mProgressBar.getMeasuredWidth());
+    }
+
+    @Test
+    public void testMeasureLandscape() {
+        mProgressBar.measure(
+                MeasureSpec.makeMeasureSpec(200, MeasureSpec.EXACTLY),
+                MeasureSpec.makeMeasureSpec(100, MeasureSpec.EXACTLY));
+        assertEquals(100, mProgressBar.getMeasuredHeight());
+        assertEquals(100, mProgressBar.getMeasuredWidth());
+    }
+
+    @Test
+    public void testDefaultAttributes() {
+        assertEquals(false, mProgressBar.isIndeterminate());
+        assertEquals(0, mProgressBar.getProgress());
+        assertEquals(10000, mProgressBar.getMax());
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/widget/RtlCompatibleViewPagerTest.java b/tests/robotests/src/com/android/settings/widget/RtlCompatibleViewPagerTest.java
index cce0f32..da7b092 100644
--- a/tests/robotests/src/com/android/settings/widget/RtlCompatibleViewPagerTest.java
+++ b/tests/robotests/src/com/android/settings/widget/RtlCompatibleViewPagerTest.java
@@ -21,22 +21,19 @@
 import android.text.TextUtils;
 import android.view.View;
 import android.view.ViewGroup;
-
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settings.testutils.shadow.ShadowTextUtils;
-
+import java.util.Locale;
 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.ShadowApplication;
 
-import java.util.Locale;
-
 import static com.google.common.truth.Truth.assertThat;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class RtlCompatibleViewPagerTest {
 
