diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index ed511ef..0de7a4e 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -6,6 +6,7 @@
 
     <original-package android:name="com.android.settings" />
 
+    <uses-permission android:name="android.permission.REQUEST_NETWORK_SCORES" />
     <uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
@@ -165,11 +166,11 @@
                 android:parentActivityName="Settings">
         </activity>
 
-        <activity android:name="CreateShortcut" android:label="@string/settings_shortcut"
-            android:theme="@style/Theme.SubSettingsDialogWhenLarge">
+        <activity android:name="CreateShortcut"
+                  android:label="@string/settings_shortcut">
             <intent-filter>
-                <action android:name="android.intent.action.CREATE_SHORTCUT" />
-                <category android:name="android.intent.category.DEFAULT" />
+                <action android:name="android.intent.action.CREATE_SHORTCUT"/>
+                <category android:name="android.intent.category.DEFAULT"/>
             </intent-filter>
         </activity>
 
@@ -340,7 +341,6 @@
         </activity>
 
         <activity android:name=".Settings$WifiInfoActivity"
-                android:theme="@style/Theme.SubSettingsDialogWhenLarge"
                 android:taskAffinity="com.android.settings"
                 android:parentActivityName="Settings$WifiSettingsActivity">
             <intent-filter>
@@ -353,7 +353,6 @@
         </activity>
 
         <activity android:name=".wifi.WifiConfigInfo"
-                android:theme="@style/Theme.SubSettingsDialogWhenLarge"
                 android:taskAffinity="com.android.settings"
                 android:parentActivityName="Settings$WifiSettingsActivity">
             <intent-filter>
@@ -363,8 +362,7 @@
             </intent-filter>
         </activity>
 
-        <activity android:name=".Settings$WifiAPITestActivity"
-                android:theme="@style/Theme.SubSettingsDialogWhenLarge">
+        <activity android:name=".Settings$WifiAPITestActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN"/>
                 <category android:name="android.intent.category.DEVELOPMENT_PREFERENCE" />
@@ -374,8 +372,7 @@
                        android:value="com.android.settings.wifi.WifiAPITest" />
         </activity>
 
-        <activity android:name=".wifi.WifiStatusTest"
-                android:theme="@style/Theme.SubSettingsDialogWhenLarge">
+        <activity android:name=".wifi.WifiStatusTest">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN"/>
                 <category android:name="android.intent.category.DEVELOPMENT_PREFERENCE" />
@@ -459,7 +456,6 @@
         </activity-alias>
 
         <activity android:name=".bluetooth.DevicePickerActivity"
-                android:theme="@style/Theme.SubSettingsDialogWhenLarge"
                 android:label="@string/device_picker"
                 android:clearTaskOnLaunch="true">
             <intent-filter>
@@ -965,7 +961,6 @@
         </activity>
 
         <activity android:name="Settings$DeviceInfoSettingsActivity"
-                android:theme="@style/Theme.SubSettingsDialogWhenLarge"
                 android:label="@string/device_info_settings"
                 android:icon="@drawable/ic_settings_about"
                 android:taskAffinity="com.android.settings"
@@ -1390,7 +1385,6 @@
         </activity>
 
         <activity android:name="SetFullBackupPassword"
-                android:theme="@style/Theme.SubSettingsDialogWhenLarge"
                 android:exported="false">
         </activity>
 
@@ -1430,7 +1424,6 @@
 
         <activity android:name="DeviceAdminAdd"
                 android:label="@string/device_admin_add_title"
-                android:theme="@style/Theme.SubSettingsDialogWhenLarge"
                 android:clearTaskOnLaunch="true">
             <intent-filter>
                 <action android:name="android.app.action.ADD_DEVICE_ADMIN" />
@@ -1465,7 +1458,6 @@
 
         <activity android:name="Settings$IccLockSettingsActivity"
                 android:label="@string/sim_lock_settings"
-                android:theme="@style/Theme.SubSettingsDialogWhenLarge"
                 android:process="com.android.phone">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
@@ -1787,7 +1779,6 @@
 
         <activity android:name=".Settings$StatusActivity"
                 android:label="@string/device_status_activity_title"
-                android:theme="@style/Theme.SubSettingsDialogWhenLarge"
                 android:taskAffinity="com.android.settings"
                 android:parentActivityName="Settings$DeviceInfoSettingsActivity">
             <intent-filter>
@@ -1802,7 +1793,6 @@
         <!-- Runs in the phone process since it needs access to the Phone object -->
         <activity android:name=".Settings$SimStatusActivity"
                 android:label="@string/sim_status_title"
-                android:theme="@style/Theme.SubSettingsDialogWhenLarge"
                 android:process="com.android.phone">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
@@ -1816,7 +1806,6 @@
         <!-- Runs in the phone process since it needs access to the Phone object -->
         <activity android:name=".Settings$ImeiInformationActivity"
                 android:label="@string/imei_information_title"
-                android:theme="@style/Theme.SubSettingsDialogWhenLarge"
                 android:process="com.android.phone">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
@@ -2016,6 +2005,9 @@
         <activity android:name=".AppPicker" android:label="@string/select_application"
                 android:theme="@android:style/Theme.DeviceDefault.Light.Dialog" />
 
+        <activity android:name=".webview.WebViewAppPicker" android:label="@string/select_webview_provider_dialog_title"
+                android:theme="@android:style/Theme.DeviceDefault.Light.Dialog" />
+
         <!-- Keep compatibility with old shortcuts. -->
         <activity-alias android:name="UsbSettings"
                   android:exported="true"
@@ -2370,8 +2362,7 @@
 
         <activity android:name="Settings$ChooseAccountActivity"
             android:label="@string/header_add_an_account"
-            android:configChanges="orientation|keyboardHidden|screenSize"
-            android:theme="@style/Theme.SubSettingsDialogWhenLarge">
+            android:configChanges="orientation|keyboardHidden|screenSize">
             <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                        android:value="com.android.settings.accounts.ChooseAccountActivity" />
         </activity>
@@ -2573,6 +2564,20 @@
                        android:value="com.android.settings.applications.VrListenerSettings" />
         </activity>
 
+        <activity android:name="Settings$PictureInPictureSettingsActivity"
+            android:label="@string/picture_in_picture_title"
+            android:taskAffinity="">
+            <intent-filter android:priority="1">
+                <action android:name="android.settings.PICTURE_IN_PICTURE_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.applications.PictureInPictureSettings" />
+        </activity>
 
         <activity android:name="Settings$ZenAccessSettingsActivity"
                   android:label="@string/manage_zen_access_title"
@@ -2695,6 +2700,22 @@
                 android:value="com.android.settings.notification.AppNotificationSettings" />
         </activity>
 
+        <!-- Show channel-level notification settings (channel passed in as extras) -->
+        <activity android:name="Settings$ChannelNotificationSettingsActivity"
+                  android:label="@string/app_notifications_title"
+                  android:exported="true">
+            <intent-filter android:priority="1">
+                <action android:name="android.settings.CHANNEL_NOTIFICATION_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                       android:value="com.android.settings.notification.ChannelNotificationSettings" />
+        </activity>
+
         <!-- Show Manual (from settings item) -->
         <activity android:name="ManualDisplayActivity"
                   android:label="@string/manual"
@@ -2905,6 +2926,17 @@
                 android:value="com.android.settings.applications.ManageApplications" />
         </activity>
 
+        <activity android:name="Settings$ManageExternalSourcesActivity"
+                android:label="@string/install_other_apps"
+                android:taskAffinity="">
+            <intent-filter android:priority="1">
+                <action android:name="android.settings.action.MANAGE_EXTERNAL_SOURCES" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.applications.ManageApplications" />
+        </activity>
+
         <activity android:name="Settings$AppWriteSettingsActivity"
                 android:label="@string/write_settings_title"
                 android:taskAffinity="">
@@ -2941,7 +2973,9 @@
                         android:value="true" />
         </activity>
 
-        <activity android:name=".WebViewImplementation"
+        <!-- Keep compatibility with old WebView-picker implementation -->
+        <activity-alias android:name=".WebViewImplementation"
+                  android:targetActivity=".webview.WebViewAppPicker"
                   android:exported="true"
                   android:excludeFromRecents="true"
                   android:theme="@*android:style/Theme.DeviceDefault.Light.Dialog.Alert">
@@ -2951,7 +2985,7 @@
             </intent-filter>
             <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
                 android:value="true" />
-        </activity>
+      </activity-alias>
 
         <!-- activity for gesture settings -->
         <activity android:name="Settings$GestureSettingsActivity"
@@ -3026,20 +3060,6 @@
                        android:value="com.android.settings.network.NetworkDashboardFragment"/>
         </activity>
 
-        <activity-alias android:name="WifiDashboardAlias"
-                        android:targetActivity="Settings$WifiSettingsActivity"
-                        android:configChanges="orientation|keyboardHidden|screenSize">
-            <intent-filter android:priority="20">
-                <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.wireless" />
-            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
-                       android:value="com.android.settings.wifi.WifiSettings" />
-            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
-                       android:value="true" />
-        </activity-alias>
-
         <activity-alias android:name="DataUsageDashboardAlias"
                         android:targetActivity="Settings$DataUsageSummaryActivity">
             <intent-filter android:priority="10">
@@ -3312,17 +3332,6 @@
                        android:value="com.android.settings.applications.ProcessStatsSummary" />
         </activity-alias>
 
-        <activity-alias android:name="BluetoothDashboardAlias"
-                        android:targetActivity="Settings$BluetoothSettingsActivity">
-            <intent-filter android:priority="7">
-                <action android:name="com.android.settings.action.SETTINGS"/>
-            </intent-filter>
-            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
-                       android:value="com.android.settings.bluetooth.BluetoothSettings" />
-            <meta-data android:name="com.android.settings.category"
-                       android:value="com.android.settings.category.ia.device" />
-        </activity-alias>
-
         <activity-alias android:name="CastDashboardAlias"
                         android:targetActivity="Settings$WifiDisplaySettingsActivity">
             <intent-filter android:priority="6">
diff --git a/res/drawable/ic_find_device_disabled.xml b/res/drawable/ic_find_device_disabled.xml
new file mode 100644
index 0000000..ac23101
--- /dev/null
+++ b/res/drawable/ic_find_device_disabled.xml
@@ -0,0 +1,37 @@
+<!--
+    Copyright (C) 2017 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:pathData="M0,0l24,0l0,24l-24,0z"
+        android:strokeColor="#000000"
+        android:fillColor="#00000000"
+        android:strokeWidth="1.33333335e-11"
+        android:strokeAlpha="0.00784313771"/>
+    <path
+        android:pathData="M5,20l0,2l14,0l0,-2z"
+        android:strokeColor="#00000000"
+        android:fillColor="#F09300"
+        android:strokeWidth="1"/>
+    <path
+        android:pathData="M12,5.917C13.15,5.917 14.083,6.85 14.083,8C14.083,8.613 13.813,9.158 13.392,9.542L16.417,12.567C17.229,11.017 17.833,9.404 17.833,8C17.833,4.779 15.221,2.167 12,2.167C10.35,2.167 8.863,2.854 7.804,3.954L10.458,6.608C10.837,6.188 11.387,5.917 12,5.917ZM15.646,13.917L11.792,10.063L11.7,9.971L4.725,3L3.667,4.063L6.317,6.713C6.221,7.125 6.167,7.554 6.167,8C6.167,12.375 12,18.833 12,18.833C12,18.833 13.392,17.292 14.813,15.208L17.604,18L18.667,16.938L15.646,13.917Z"
+        android:strokeColor="#00000000"
+        android:fillColor="#F09300"
+        android:strokeWidth="1"/>
+</vector>
diff --git a/res/drawable/ic_find_device_enabled.xml b/res/drawable/ic_find_device_enabled.xml
new file mode 100644
index 0000000..c47b9f0
--- /dev/null
+++ b/res/drawable/ic_find_device_enabled.xml
@@ -0,0 +1,32 @@
+<!--
+    Copyright (C) 2017 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:pathData="M0,0l24,0l0,24l-24,0z"
+        android:strokeColor="#000000"
+        android:fillColor="#00000000"
+        android:strokeWidth="1.33333335e-11"
+        android:strokeAlpha="0.00784313771"/>
+    <path
+        android:pathData="M18,8C18,4.69 15.31,2 12,2C8.69,2 6,4.69 6,8C6,12.5 12,19 12,19C12,19 18,12.5 18,8ZM10,8C10,6.9 10.9,6 12,6C13.1,6 14,6.9 14,8C14,9.1 13.11,10 12,10C10.9,10 10,9.1 10,8ZM5,20L5,22L19,22L19,20L5,20Z"
+        android:strokeColor="#00000000"
+        android:fillColor="#4A90E2"
+        android:strokeWidth="1"/>
+</vector>
diff --git a/res/drawable/ic_friction_lock_closed.xml b/res/drawable/ic_friction_lock_closed.xml
new file mode 100644
index 0000000..7a05ac6
--- /dev/null
+++ b/res/drawable/ic_friction_lock_closed.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright (C) 2017 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:viewportWidth="48"
+        android:viewportHeight="48"
+        android:width="18dp"
+        android:height="18dp">
+    <path
+        android:pathData="M36 16l-2 0 0 -4C34 6.48 29.52 2 24 2 18.48 2 14 6.48 14 12l0 4 -2 0c-2.21 0 -4 1.79 -4 4l0 20c0 2.21 1.79 4 4 4l24 0c2.21 0 4 -1.79 4 -4l0 -20c0 -2.21 -1.79 -4 -4 -4zM24 34c-2.21 0 -4 -1.79 -4 -4 0 -2.21 1.79 -4 4 -4 2.21 0 4 1.79 4 4 0 2.21 -1.79 4 -4 4zm6.2 -18l-12.4 0 0 -4c0 -3.42 2.78 -6.2 6.2 -6.2 3.42 0 6.2 2.78 6.2 6.2l0 4z"
+        android:fillColor="#000000"
+        android:fillAlpha="0.54" />
+</vector>
diff --git a/res/drawable/ic_friction_lock_open.xml b/res/drawable/ic_friction_lock_open.xml
new file mode 100644
index 0000000..957e537
--- /dev/null
+++ b/res/drawable/ic_friction_lock_open.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright (C) 2017 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:viewportWidth="48"
+        android:viewportHeight="48"
+        android:width="18dp"
+        android:height="18dp">
+    <path
+        android:pathData="M24 34c2.21 0 4 -1.79 4 -4 0 -2.21 -1.79 -4 -4 -4 -2.21 0 -4 1.79 -4 4 0 2.21 1.79 4 4 4zm12 -18l-2 0 0 -4C34 6.48 29.52 2 24 2 18.48 2 14 6.48 14 12l3.8 0c0 -3.42 2.78 -6.2 6.2 -6.2 3.42 0 6.2 2.78 6.2 6.2l0 4 -18.2 0c-2.21 0 -4 1.79 -4 4l0 20c0 2.21 1.79 4 4 4l24 0c2.21 0 4 -1.79 4 -4l0 -20c0 -2.21 -1.79 -4 -4 -4zm0 24l-24 0 0 -20 24 0 0 20z"
+        android:fillColor="#000000"
+        android:fillAlpha="0.54" />
+</vector>
diff --git a/res/drawable/ic_ota_update_available.xml b/res/drawable/ic_ota_update_available.xml
new file mode 100644
index 0000000..e2d7f33
--- /dev/null
+++ b/res/drawable/ic_ota_update_available.xml
@@ -0,0 +1,32 @@
+<!--
+    Copyright (C) 2017 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:pathData="M0,0l24,0l0,24l-24,0z"
+        android:strokeColor="#000000"
+        android:fillColor="#00000000"
+        android:strokeWidth="1.33333335e-11"
+        android:strokeAlpha="0.00784313771"/>
+    <path
+        android:pathData="M17,1.01L7,1C5.9,1 5,1.9 5,3L5,21C5,22.1 5.9,23 7,23L17,23C18.1,23 19,22.1 19,21L19,3C19,1.9 18.1,1.01 17,1.01ZM17,19L7,19L7,5L17,5L17,19ZM16,13L13,13L13,8L11,8L11,13L8,13L12,17L16,13Z"
+        android:strokeColor="#00000000"
+        android:fillColor="#4A90E2"
+        android:strokeWidth="1"/>
+</vector>
diff --git a/res/drawable/ic_ota_update_current.xml b/res/drawable/ic_ota_update_current.xml
new file mode 100644
index 0000000..d7a2f84
--- /dev/null
+++ b/res/drawable/ic_ota_update_current.xml
@@ -0,0 +1,32 @@
+<!--
+    Copyright (C) 2017 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:pathData="M0,0l24,0l0,24l-24,0z"
+        android:strokeColor="#000000"
+        android:fillColor="#00000000"
+        android:strokeWidth="1.33333335e-11"
+        android:strokeAlpha="0.00784313771"/>
+    <path
+        android:pathData="M17,1.01L7,1C5.9,1 5,1.9 5,3L5,21C5,22.1 5.9,23 7,23L17,23C18.1,23 19,22.1 19,21L19,3C19,1.9 18.1,1.01 17,1.01ZM17,19L7,19L7,5L17,5L17,19ZM10.627,13.093L9.144,11.746L8.054,12.79L10.627,15.181L16.156,10.044L15.066,9L10.627,13.093Z"
+        android:strokeColor="#00000000"
+        android:fillColor="#4A90E2"
+        android:strokeWidth="1"/>
+</vector>
diff --git a/res/drawable/ic_ota_update_none.xml b/res/drawable/ic_ota_update_none.xml
new file mode 100644
index 0000000..a01a459
--- /dev/null
+++ b/res/drawable/ic_ota_update_none.xml
@@ -0,0 +1,32 @@
+<!--
+    Copyright (C) 2017 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:pathData="M0,0l24,0l0,24l-24,0z"
+        android:strokeColor="#000000"
+        android:fillColor="#00000000"
+        android:strokeWidth="1.33333335e-11"
+        android:strokeAlpha="0.00784313771"/>
+    <path
+        android:pathData="M17,1.01L7,1C5.9,1 5,1.9 5,3L5,21C5,22.1 5.9,23 7,23L17,23C18.1,23 19,22.1 19,21L19,3C19,1.9 18.1,1.01 17,1.01ZM17,19L7,19L7,5L17,5L17,19ZM13.143,17.714L10.857,17.714L10.857,15.429L13.143,15.429L13.143,17.714ZM13.143,13.143L10.857,13.143L10.857,6.286L13.143,6.286L13.143,13.143Z"
+        android:strokeColor="#00000000"
+        android:fillColor="#F09300"
+        android:strokeWidth="1"/>
+</vector>
diff --git a/res/drawable/ic_ota_update_stale.xml b/res/drawable/ic_ota_update_stale.xml
new file mode 100644
index 0000000..9145be8
--- /dev/null
+++ b/res/drawable/ic_ota_update_stale.xml
@@ -0,0 +1,32 @@
+<!--
+    Copyright (C) 2017 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:pathData="M0,0l24,0l0,24l-24,0z"
+        android:strokeColor="#000000"
+        android:fillColor="#00000000"
+        android:strokeWidth="1.33333335e-11"
+        android:strokeAlpha="0.00784313771"/>
+    <path
+        android:pathData="M17,1.01L7,1C5.9,1 5,1.9 5,3L5,21C5,22.1 5.9,23 7,23L17,23C18.1,23 19,22.1 19,21L19,3C19,1.9 18.1,1.01 17,1.01ZM17,19L7,19L7,5L17,5L17,19ZM16,13L13,13L13,8L11,8L11,13L8,13L12,17L16,13Z"
+        android:strokeColor="#00000000"
+        android:fillColor="#F09300"
+        android:strokeWidth="1"/>
+</vector>
diff --git a/res/drawable/ic_package_verifier_disabled.xml b/res/drawable/ic_package_verifier_disabled.xml
new file mode 100644
index 0000000..5f19fec
--- /dev/null
+++ b/res/drawable/ic_package_verifier_disabled.xml
@@ -0,0 +1,31 @@
+<!--
+    Copyright (C) 2017 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:pathData="M5.785,3.762L12,1L21,5L21,11C21,13.231 20.381,15.402 19.306,17.283L5.785,3.762ZM4.386,4.384L3,5L3,11C3,16.555 6.835,21.735 12,23C14.622,22.358 16.902,20.706 18.511,18.509L4.386,4.384Z"
+        android:strokeColor="#00000000"
+        android:fillColor="#F09300"
+        android:strokeWidth="1"/>
+    <path
+        android:pathData="M2.808,2.808l17.678,17.678l-1.01,1.01l-17.678,-17.678z"
+        android:strokeColor="#00000000"
+        android:fillColor="#F09300"
+        android:strokeWidth="1"/>
+</vector>
diff --git a/res/drawable/ic_package_verifier_enabled.xml b/res/drawable/ic_package_verifier_enabled.xml
new file mode 100644
index 0000000..1059442
--- /dev/null
+++ b/res/drawable/ic_package_verifier_enabled.xml
@@ -0,0 +1,32 @@
+<!--
+    Copyright (C) 2017 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:pathData="M0,0l24,0l0,24l-24,0z"
+        android:strokeColor="#000000"
+        android:fillColor="#00000000"
+        android:strokeWidth="1.33333335e-11"
+        android:strokeAlpha="0.00784313771"/>
+    <path
+        android:pathData="M12,1L3,5L3,11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11L21,5L12,1Z"
+        android:strokeColor="#00000000"
+        android:fillColor="#4A90E2"
+        android:strokeWidth="1"/>
+</vector>
diff --git a/res/drawable/ic_restore.xml b/res/drawable/ic_restore.xml
new file mode 100644
index 0000000..737f811
--- /dev/null
+++ b/res/drawable/ic_restore.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright (C) 2017 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24.0dp"
+    android:height="24.0dp"
+    android:viewportWidth="24.0"
+    android:viewportHeight="24.0"
+    android:tint="?android:attr/colorControlNormal">
+    <path
+        android:fillColor="#FFFFFFFF"
+        android:pathData="M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89 .07 .14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7
+7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13
+21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54 .72 -1.21-3.5-2.08V8H12z" />
+</vector>
\ No newline at end of file
diff --git a/res/drawable/wifi_friction.xml b/res/drawable/wifi_friction.xml
new file mode 100644
index 0000000..c46f5b4
--- /dev/null
+++ b/res/drawable/wifi_friction.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+        xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
+    <item
+        settings:state_encrypted="true"
+        settings:state_saved="true"
+        android:drawable="@drawable/ic_friction_lock_closed"/>
+    <item
+        settings:state_encrypted="true"
+        settings:state_saved="false"
+        android:drawable="@drawable/ic_friction_lock_closed"/>
+</selector>
diff --git a/res/layout/preference_tts_engine.xml b/res/layout/preference_tts_engine.xml
index 8f4036b..19401f0 100644
--- a/res/layout/preference_tts_engine.xml
+++ b/res/layout/preference_tts_engine.xml
@@ -31,17 +31,4 @@
         android:maxLines="2"
         android:textAppearance="?android:attr/textAppearanceListItem"
         android:ellipsize="marquee"/>
-
-    <ImageView
-        android:id="@+id/tts_engine_settings"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:paddingStart="?android:attr/listPreferredItemPaddingStart"
-        android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
-        android:src="@drawable/ic_settings"
-        android:contentDescription="@string/tts_engine_settings_button"
-        android:layout_centerVertical="true"
-        android:clickable="true"
-        android:focusable="true"
-        android:background="?android:attr/selectableItemBackground"/>
 </LinearLayout>
diff --git a/res/layout/preference_widget_master_switch.xml b/res/layout/preference_widget_master_switch.xml
new file mode 100644
index 0000000..51d938b
--- /dev/null
+++ b/res/layout/preference_widget_master_switch.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2017 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+  android:layout_width="wrap_content"
+  android:layout_height="match_parent">
+
+    <LinearLayout
+      android:layout_width="wrap_content"
+      android:layout_height="match_parent"
+      android:gravity="start|center_vertical"
+      android:orientation="horizontal"
+      android:paddingStart="20dp"
+      android:paddingEnd="20dp"
+      android:paddingTop="16dp"
+      android:paddingBottom="16dp">
+        <View
+          android:layout_width="1dip"
+          android:layout_height="match_parent"
+          android:background="?android:attr/colorSecondary"/>
+    </LinearLayout>
+
+    <Switch android:id="@+id/switchWidget"
+      android:layout_width="wrap_content"
+      android:layout_height="match_parent"
+      android:gravity="center_vertical" />
+
+</LinearLayout>
diff --git a/res/layout/preview_seek_bar_view_pager.xml b/res/layout/preview_seek_bar_view_pager.xml
index e5dfa94..5eb3543 100644
--- a/res/layout/preview_seek_bar_view_pager.xml
+++ b/res/layout/preview_seek_bar_view_pager.xml
@@ -37,7 +37,6 @@
         android:gravity="start|center"
         android:text="@string/screen_zoom_preview_title"
         android:textAppearance="@android:style/TextAppearance.Material.Widget.ActionBar.Title"
-        android:textColor="@color/seek_bar_preference_preview_text"
         android:importantForAccessibility="no" />
 </LinearLayout>
 
diff --git a/res/layout/search_breadcrumb_view.xml b/res/layout/search_breadcrumb_view.xml
new file mode 100644
index 0000000..a78b745
--- /dev/null
+++ b/res/layout/search_breadcrumb_view.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2017 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<TextView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/breadcrumb"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:paddingTop="8dp"
+    android:textAppearance="?android:attr/textAppearanceListItemSecondary"
+    android:textColor="?android:attr/textColorSecondary"
+    android:ellipsize="marquee"/>
\ No newline at end of file
diff --git a/res/layout/search_icon_view.xml b/res/layout/search_icon_view.xml
new file mode 100644
index 0000000..d7e0205
--- /dev/null
+++ b/res/layout/search_icon_view.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2017 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/icon_container"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:minWidth="60dp"
+    android:gravity="center_horizontal|top"
+    android:orientation="horizontal"
+    android:paddingEnd="12dp"
+    android:paddingTop="4dp"
+    android:paddingBottom="4dp">
+    <com.android.internal.widget.PreferenceImageView
+        android:id="@android:id/icon"
+        android:layout_width="36dp"
+        android:layout_height="36dp"
+        android:scaleType="fitCenter"/>
+</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/search_inline_switch_item.xml b/res/layout/search_inline_switch_item.xml
index 998c09c..75943c4 100644
--- a/res/layout/search_inline_switch_item.xml
+++ b/res/layout/search_inline_switch_item.xml
@@ -15,67 +15,48 @@
 -->
 
 <LinearLayout
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:minHeight="?android:attr/listPreferredItemHeight"
-        android:gravity="center_vertical"
-        android:paddingStart="?android:attr/listPreferredItemPaddingStart"
-        android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
-        android:background="?android:attr/selectableItemBackground"
-        android:clipToPadding="false">
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:minHeight="?android:attr/listPreferredItemHeight"
+    android:paddingTop="16dp"
+    android:paddingBottom="16dp"
+    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
+    android:background="?android:attr/selectableItemBackground"
+    android:clipToPadding="false">
+
+    <include layout="@layout/search_icon_view"/>
 
     <LinearLayout
-            android:id="@+id/icon_container"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_weight="1"
+        android:orientation="vertical">
+
+        <TextView
+            android:id="@android:id/title"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:minWidth="60dp"
-            android:gravity="start|center_vertical"
-            android:orientation="horizontal"
-            android:paddingEnd="12dp"
-            android:paddingTop="4dp"
-            android:paddingBottom="4dp">
-        <com.android.internal.widget.PreferenceImageView
-                android:id="@android:id/icon"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:maxWidth="48dp"
-                android:maxHeight="48dp"/>
+            android:singleLine="true"
+            android:textAppearance="?android:attr/textAppearanceListItem"
+            android:ellipsize="marquee"/>
+
+        <TextView
+            android:id="@android:id/summary"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textAppearance="?android:attr/textAppearanceListItemSecondary"
+            android:textColor="?android:attr/textColorSecondary"
+            android:maxLines="10"/>
+
+        <include layout="@layout/search_breadcrumb_view"/>
     </LinearLayout>
 
-    <RelativeLayout
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:paddingTop="16dp"
-            android:paddingBottom="16dp">
-
-        <TextView
-                android:id="@android:id/title"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:singleLine="true"
-                android:textAppearance="?android:attr/textAppearanceListItem"
-                android:ellipsize="marquee"/>
-
-        <TextView
-                android:id="@android:id/summary"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_below="@android:id/title"
-                android:layout_alignStart="@android:id/title"
-                android:textAppearance="?android:attr/textAppearanceListItemSecondary"
-                android:textColor="?android:attr/textColorSecondary"
-                android:maxLength="60"
-                android:maxLines="10"/>
-
-    </RelativeLayout>
-
     <Switch
-            android:id="@+id/switchView"
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
-            android:gravity="end|center_vertical"
-            android:paddingStart="16dp"
-            android:orientation="vertical"/>
-</LinearLayout>
\ No newline at end of file
+        android:id="@+id/switchView"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:gravity="top"
+        android:paddingStart="16dp"/>
+</LinearLayout>
diff --git a/res/layout/search_intent_item.xml b/res/layout/search_intent_item.xml
index fcb5532..31f7f26 100644
--- a/res/layout/search_intent_item.xml
+++ b/res/layout/search_intent_item.xml
@@ -15,58 +15,42 @@
 -->
 
 <LinearLayout
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:minHeight="?android:attr/listPreferredItemHeight"
-        android:gravity="center_vertical"
-        android:paddingStart="?android:attr/listPreferredItemPaddingStart"
-        android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
-        android:background="?android:attr/selectableItemBackground"
-        android:clipToPadding="false">
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:minHeight="?android:attr/listPreferredItemHeight"
+    android:paddingTop="16dp"
+    android:paddingBottom="16dp"
+    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
+    android:background="?android:attr/selectableItemBackground"
+    android:clipToPadding="false">
+
+    <include layout="@layout/search_icon_view"/>
 
     <LinearLayout
-            android:id="@+id/icon_container"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_weight="1"
+        android:orientation="vertical">
+
+        <TextView
+            android:id="@android:id/title"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:minWidth="60dp"
-            android:gravity="start|center_vertical"
-            android:orientation="horizontal"
-            android:paddingEnd="12dp"
-            android:paddingTop="4dp"
-            android:paddingBottom="4dp">
-        <com.android.internal.widget.PreferenceImageView
-                android:id="@android:id/icon"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:maxWidth="48dp"
-                android:maxHeight="48dp"/>
+            android:singleLine="true"
+            android:textAppearance="?android:attr/textAppearanceListItem"
+            android:ellipsize="marquee"/>
+
+        <TextView
+            android:id="@android:id/summary"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textAppearance="?android:attr/textAppearanceListItemSecondary"
+            android:textColor="?android:attr/textColorSecondary"
+            android:maxLines="3"
+            android:ellipsize="marquee"/>
+
+        <include layout="@layout/search_breadcrumb_view"/>
     </LinearLayout>
-
-    <RelativeLayout
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:paddingTop="16dp"
-            android:paddingBottom="16dp">
-
-        <TextView
-                android:id="@android:id/title"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:singleLine="true"
-                android:textAppearance="?android:attr/textAppearanceListItem"
-                android:ellipsize="marquee"/>
-
-        <TextView
-                android:id="@android:id/summary"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_below="@android:id/title"
-                android:layout_alignStart="@android:id/title"
-                android:textAppearance="?android:attr/textAppearanceListItemSecondary"
-                android:textColor="?android:attr/textColorSecondary"
-                android:maxLines="10"/>
-
-    </RelativeLayout>
 </LinearLayout>
diff --git a/res/layout/search_saved_query_item.xml b/res/layout/search_saved_query_item.xml
new file mode 100644
index 0000000..71c8482
--- /dev/null
+++ b/res/layout/search_saved_query_item.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2017 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="horizontal"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="?android:attr/selectableItemBackground"
+    android:minHeight="?android:attr/listPreferredItemHeight"
+    android:gravity="center_vertical"
+    android:paddingStart="@dimen/preference_no_icon_padding_start"
+    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">
+
+    <TextView
+        android:id="@android:id/title"
+        android:textAppearance="?android:attr/textAppearanceListItem"
+        android:layout_height="wrap_content"
+        android:layout_width="wrap_content"
+        android:layout_weight="1"/>
+
+    <ImageView
+        android:id="@android:id/icon"
+        android:layout_width="@dimen/search_suggestion_item_image_size"
+        android:layout_height="@dimen/search_suggestion_item_image_size"
+        android:layout_marginStart="@dimen/search_suggestion_item_image_margin_start"
+        android:layout_marginEnd="@dimen/search_suggestion_item_image_margin_end"
+        android:scaleType="centerInside"
+        android:src="@drawable/ic_search_history"/>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 51e8b58..f9d1329 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Voorbeeldteks"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Die Wonderlike Towenaar van Oz"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Hoofstuk 11: Die Wonderlike Smaragstad van Oz"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Selfs al word hul oë deur die groen brille beskerm, word Dorothy en haar vriende met die eerste oogopslag verblind deur die helderheid van die wonderlike stad. Huise van groen marmer en bedek met vonkelende smaragte staan in rye langs die strate. Hulle stap op \'n sypaadjie van dieselfde groen marmer waar die blokke marmer gelas is met rye smaragte wat dig op mekaar geset is en in die helder son blink. Die vensters is van groen glas; selfs die lug bo die stad het \'n groen skynsel en die son se strale is groen. \n\nDaar beweeg baie mense – mans, vroue en kinders – rond en hulle is almal in groen geklee en het groenerige velle. Hulle staar met verwonderde oë na Dorothy en haar vreemde versameling vriende en die kinders hardloop almal weg en kruip agter hul ma\'s weg toe hulle die Leeu sien, maar niemand praat met hulle nie. Daar is baie winkels in die straat en Dorothy merk op dat alles in hulle groen is. Groen lekkergoed en groen springmielies word te koop aangebied, asook groen skoene, groen hoede en allerlei groen klere. Op een plek verkoop \'n man groen limonade en Dorothy sien dat die kinders met groen pennies betaal. \n\nDit lyk nie of daar enige perde of diere is nie; die mans vervoer goed in klein, groen waentjies wat hulle voor hulle stoot. Almal lyk gelukkig en tevrede en welvarend."</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB-berging"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD-kaart"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Fout"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"5 GHz-band is nie in hierdie land beskikbaar nie"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"In vliegtuigmodus"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Netwerkkennisgewing"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Stel in kennis altyd as \'n publieke netwerk beskikbaar is"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Vermy swak verbindings"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Moenie \'n Wi-Fi-netwerk gebruik tensy dit \'n goeie internetverbinding het nie"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Gebruik net netwerke wat \'n goeie internetverbinding het"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Verander die voorkeur-installeerligging vir nuwe programme."</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Deaktiveer ingeboude program?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Deaktiveer program"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"As jy hierdie program deaktiveer, sal Android en ander programme dalk nie meer soos bedoel werk nie."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Vee data uit en deaktiveer program?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"As jy hierdie program deaktiveer, sal Android en ander programme dalk nie meer soos bedoel werk nie. Jou data sal ook uitgevee word."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Wil jy kennisgewings afskakel?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"As jy kennisgewings vir hierdie program afskakel, kan jy moontlik belangrike waarskuwings en opdaterings mis."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Winkel"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="other">Wys %d versteekte items</item>
       <item quantity="one">Wys %d versteekte item</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Netwerk en internet"</string>
     <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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Kennisgewings"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Belangrikheid"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Nie gestel nie"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Moet nooit kennisgewings wys nie"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Geen klank of visuele onderbreking nie"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Wys sonder klank"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Maak geluid"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Maak geluid en spring op op skerm"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Stel terug"</string>
     <string name="show_silently" msgid="2222875799232222056">"Wys sonder klank"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Moenie \'n geluid maak, vibreer of hierdie kennisgewings vir \'n kort tyd op die huidige skerm wys nie."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Laai tans programme …"</string>
     <string name="notification_channels" msgid="8681423709659818791">"Kanale"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Blokkeer almal"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Moet nooit hierdie kennisgewings wys nie"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Wys kennisgewings"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Moet nooit kennisgewings in die skadu of op randtoestelle wys nie"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Wys kenteken"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Wys kennisgewings as kentekens in die Home-program as dit gesteun word."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"Ignoreer Moenie steur nie"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Laat hierdie kennisgewings steeds onderbreek wanneer Moenie steur nie na \'Net prioriteit\' gestel is"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"Op die sluitskerm"</string>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Moenie weer wys nie"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Versoek tans as"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Voeg rekening by"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Stelselinligting"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Werkprofielinstellings"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Kontaksoektog"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Laat kontaksoektogte deur jou organisasie toe om bellers en kontakte te identifiseer"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Jou mees onlangse foutverslag"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Jou mees onlangse sekuriteitloglêer"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Nooit"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Foto\'s en video\'s"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Musiek en oudio"</string>
     <string name="storage_games" msgid="7703159201697117621">"Speletjies"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Ander programme"</string>
     <string name="storage_files" msgid="8581083146777364063">"Lêers"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Foonberging"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> gebruik"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> gratis"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 4f95a41..9ec66d9 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"የናሙና ጽሑፍ"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"አስደናቂው የኦዝ ምትሃተኛ"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"ምዕራፍ 11፦ ኦዝ፣ አስደናቂዋ የኤምራልድ ከተማ"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"ምንም እንኳን ዶርቲ እና ጓደኞችዋ በአረንጓዴ መነጽሮች ዓይኖቻቸው የተጠበቁ የነበሩ ቢሆንም በአስገራሚዋ ከተማ ብርቅርቅታ ገና ከመጀመሪያው ዓይኖቻቸው ተጭበርብረው ነበር። ጎዳናዎቹ ሁሉም ከአረንጓዴ እብነበረድ በተሠሩ በየቦታው ከሚያንጸባርቁ ውድ ኤምራልድ ድንጋዮች ያጌጡ ግድግዳዎች ባለቸው ቆንጆ ቤቶች ሰልፍ ይዘዋል። መልኩ ተመሳሳይ ከሆነ ከአረንጓዴ እብነበረድ ከተሠራው የእግረኛ መንገድ ላይ፣ የእግረኛ መንገዱ ክፍልፋዮች አጠገብ ለአጠገብ ጣል ጣል በተደረጉ እርስበርሳቸው በተጠላለፉ የኤምራልድ ረድፎች፣ በእግራቸው ሲንሸራሸሩ ኤምራሎዶቹ በፀሐይዋ ብርሃን ብርቅርቅ ይሉ ነበር። የአረንጓዴ መስታውቶቹ የመስኮት ክፈፎች፤ ሌላው ሳይቀር ከከተማዋ አናት ላይ ያለው ሰማይ አረንጓዴ ቀለም የተቀባ ይመስል ነበር፤ የፀሐይዋ ጨረሮችም አረንጓዴ ነበሩ። \n\nወዲያ ወዲህ የሚሉ በርካታ ሰዎች፣ ወንዶች፣ ሴቶች እና ሕፃናት ነበሩ፤ ሁሉም ደግሞ አረንጓዴ ልብሶችን ለብሰዋል ቆዳቸውም አረንጓዴ ሆኗል። ዶርቲን እና በግራሞት አፋቸውን የከፈቱ ጀሌዎችዋን በመደነቅ ዓይን እያዩዋቸው ያልፋሉ፤ እና ድንገት አንበሳውን ሲያዩ ሕፃናቱ ሮጠው ከእናቶቻቸው ጀርባ ተደበቁ፤ ግን ማንም ሰው ምን እንደሆኑ አልጠየቃቸውም። በርካታ ሱቆች በጎዳናው ላይ ተደርድረዋል፤ እና ዶርቲ በውስጣቸው ያለው ሁሉም ነገር አረንጓዴ እንደሆነ ተመለከተች። አረንጓዴ ከረሜላ እና አረንጓዴ ፈንድሻ እንዲሁም አረንጓዴ ጫማዎች፣ አረንጓዴ ባርኔጣዎች እና አረንጓዴ ልብሶች በዓይነት በዓይነቱ በቅናሽ ዋጋ ለሽያጭ ቀርበዋል። አንዱ ቦታ ላይ የሆነ ሰውዬ አረንጓዴ ሎሚ ጭማቂዎችን እየሸጠ ነበር፤ ልጆቹ ሲገዙት አረንጓዴ ሳንቲሞች ተጠቀመው እንደሚከፍሉት ዶርቲ ታይ ነበር። \n\nምንም ዓይነት ፈረሶች ወይም ምንም ዓይነት እንስሳቶች በቦታው አይታዩም፤ ሰዎቹ ዕቃዎችን የሚያጓጉዙት አረንጓዴ ጋሪዎችን ተጠቅመው እራሳቸው ከኋላ ሆነው ወደፊት በመግፋት ነበር። ሁሉም ሰው ደስተኛ እና ፍልቅልቅ ያለ እና ባለጠጋ ይመስል ነበር።"</string>
     <string name="font_size_save" msgid="3450855718056759095">"እሺ"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"የUSB  ማከማቻ"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD ካርድ"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"ስህተት"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"5 ጊኸ ባንድ በዚህ አገር ውስጥ አይገኝም"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"አውሮፕላን ሁኔታ"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"የአውታረ መረብ ማሳወቂያ"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"ይፋዊ አውታረ መረብ በተገኘ ጊዜ አሳውቅ"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"ደካማ ግንኙነቶችን አስወግድ"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"ጥሩ የበይነመረብ ግንኙነት ከሌለው በስተቀር የWi-Fi አውታረ መረብ አይጠቀሙ"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"ጥሩ የበይነመረብ ግንኙነት ያላቸው አውታረ መረቦችን ብቻ ተጠቀም"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"ለአዲስ መተግበሪያዎች ተመራጭ መጫኛ ሥፍራዎችን ለውጥ።"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"የውስጠ ግንብ መተግበሪያ አቦዝን?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"መተግበሪያን አሰናክል"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"ይህን መተግበሪያ ካሰናከሉት ከዚህ በኋላ Android እና ሌሎች መተግበሪያዎች እንደተፈለገው ላይሠሩ ይችላሉ።"</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"ውሂብ ይሰረዝና መተግበሪያ ይሰናከል?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"ይህን መተግበሪያ ካሰናከሉት ከዚህ በኋላ Android እና ሌሎች መተግበሪያዎች እንደተፈለገው ላይሠሩ ይችላሉ። የእርስዎ ውሂብም ይሰረዛል።"</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"ማሳወቂያዎችን አጥፋ?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"ለእዚህ መተግበሪያ ማሳወቂያዎችን አጥፍተው ከሆነ፣ አስፈላጊ ማንቂያዎችን እና አዘምኖችን ሊያጡ ይችላሉ።"</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"መደብር"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="one">%d የተደበቁ ንጥሎችን አሳይ</item>
       <item quantity="other">%d የተደበቁ ንጥሎችን አሳይ</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"አውታረ መረብ እና በይነመረብ"</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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"ማሳወቂያዎች"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"አስፈላጊነት"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"አልተዘጋጀም"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"ማሳወቂያዎችን በጭራሽ አታሳይ"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"ምንም ድምፅ ወይም የሚታይ ትርጉም የለም"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"በፀጥታ አሳይ"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"ድምፅ ፍጠር"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"ድምፅ ፍጠር እና በማያ ገጽ ላይ ብቅ በል"</string>
     <string name="importance_reset" msgid="7458420788555607007">"ዳግም አስጀምር"</string>
     <string name="show_silently" msgid="2222875799232222056">"በጸጥታ አሳይ"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"ድምፅ አታሰማ፣ አትንዘር ወይም እነዚህን ማሳወቂያዎች ወደ የአሁኑ ማያ ገጽ አታሳይ።"</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"መተግበሪያዎችን በመጫን ላይ..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"ሰርጦች"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"ሁሉንም አግድ"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"እነዚህን ማሳወቂያዎች በጭራሽ አታሳይ"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"ማሳወቂያዎች አሳይ"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"በጥላ ወይም በጎን ያሉ ውጫዊ መሣሪያዎች ላይ ማሳወቂያዎችን በጭራሽ አታሳይ"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"ባጅ አሳይ"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"በHome መተግበሪያ ላይ የሚደገፍ ከሆነ ማሳወቂያዎችን እንደ ባጆች አሳይ።"</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>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"ዳግም አታሳይ"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"እንደሚከተለው በመጠየቅ ላይ"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"መለያ ያክሉ"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"የሥርዓት መረጃ"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"የስራ መገለጫ ቅንብሮች"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"የእውቂያ ፍለጋ"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"በእርስዎ ድርጅት የሚደረጉ የእውቂያ ፍለጋዎች ደዋዮችን እና እውቂያዎችን እንዲለዩ ፍቀድ"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"የእርስዎ በጣም ቅርብ ጊዜ የሳንካ ሪፖርት"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"የእርስዎ የበጣም ቅርብ ጊዜ የደህንነት ምዝግብ ማስታወሻ"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"በጭራሽ"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"ፎቶዎች እና ቪዲዮዎች"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"ሙዚቃ እና ኦዲዮ"</string>
     <string name="storage_games" msgid="7703159201697117621">"ጨዋታዎች"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"ሌሎች መተግበሪያዎች"</string>
     <string name="storage_files" msgid="8581083146777364063">"ፋይሎች"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"የስልክ ማከማቻ"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> ጥቅም ላይ ውሏል"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> ነጻ"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 930eeda..cbd8f8b 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -90,8 +90,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"نموذج نص"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"ساحر أوز العجيب"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"الفصل ۱۱: مدينة أوز الزمردية العجيبة"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"على الرغم من احتماء دورثي ورفاقها خلف نظارات خضراء، انبهرت عيونهم للوهلة الأولى بتوهج المدينة العجيبة وتألقها. كانت المنازل الرائعة أمامهم متراصة على الشوارع ومصممة جميعها من الرخام الأخضر المرصع بالزمرّد البرّاق. ساروا على رصيف من الرخام الأخضر نفسه حيث تلتقي المباني الضخمة على صفوف من الزمرد المتلألئ تحت أشعة الشمس الساطعة. كانت ألواح النوافذ الزجاجية خضراء هي أيضًا، حتى أنّ السماء وأشعة الشمس تلوّنت بالأخضر الفاتح. \n\nرأوا الكثير من الرجال والنساء والأطفال يجوبون الشوارع وجميعهم في ثياب خضراء فوق بشرة تميل إلى الأخضر. نظروا إلى دورثي ورفاقها الغريبين بتعجب، في حين أنّ الأطفال اختبأوا وراء أمهاتهم خائفين من الأسد، ولكن لم يتحدث معهم أحد. اصطفّت في الشارع المتاجر الخضراء ولاحظت دورثي أنّ كل ما فيها كان أخضر، من الحلوى الخضراء والفشار الأخضر إلى الأحذية والقبعات والملابس الخضراء. وفي أحد الأركان، وقف رجل يبيع الليموناضة الخضراء ورأت دورثي أنّ الأطفال كانوا يشترون العصير منه بعملة خضراء هي أيضًا. \n\nخلت الشوارع من الأحصنة أو أي نوع آخر من الحيوانات، وكان الرجال ينقلون أمتعتهم في عربات خضراء صغيرة يدفعونها أمامهم. وبدت ملامح السعادة والارتياح على وجوه الجميع."</string>
     <string name="font_size_save" msgid="3450855718056759095">"موافق"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"‏وحدة تخزين USB"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"‏بطاقة SD"</string>
@@ -707,8 +706,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"خطأ"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"لا يتوفر التردد ٥ غيغاهرتز في هذا البلد"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"في وضع الطائرة"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"رسالة تنبيه بالشبكات"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"إرسال إشعارات عند توفر شبكة عامة"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"تجنب الاتصالات الضعيفة"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"‏عدم استخدام شبكات Wi-Fi ما لم يكن لها اتصال إنترنت جيد"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"استخدام الشبكات ذات اتصال الإنترنت الجيد فقط"</string>
@@ -1580,11 +1585,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"تغيير موقع التثبيت المفضل للتطبيقات الجديدة"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"هل تريد تعطيل التطبيق المضمن؟"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"تعطيل التطبيق"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"‏سيؤدي تعطيل هذا التطبيق إلى عدم عمل كل من نظام التشغيل Android وتطبيقات أخرى على النحو المنشود."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"هل تريد حذف البيانات وتعطيل التطبيق؟"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"‏سيؤدي تعطيل هذا التطبيق إلى عدم عمل كل من نظام التشغيل Android وتطبيقات أخرى على النحو المنشود، فضلاً عن حذف بياناتك."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"هل تريد إيقاف الإشعارات؟"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"إذا كنت قد أجريت إيقافًا للإشعارات حول هذا التطبيق، فقد تفوتك اشعارات وتحديثات مهمة."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"المتجر"</string>
@@ -2615,8 +2618,7 @@
       <item quantity="other">‏عرض %d عنصر مخفي</item>
       <item quantity="one">‏عرض %d عنصر مخفي</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"الشبكة والإنترنت"</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>
@@ -2742,16 +2744,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"الإشعارات"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"الأهمية"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"لم يتم التعيين"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"عدم عرض الإشعارات"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"من دون تنبيه صوتي أو مرئي"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"عرض بدون تنبيه صوتي"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"إصدار تنبيه صوتي"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"إصدار تنبيه صوتي والظهور بسرعة على الشاشة"</string>
     <string name="importance_reset" msgid="7458420788555607007">"إعادة الضبط"</string>
     <string name="show_silently" msgid="2222875799232222056">"عرض بدون تنبيه صوتي"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"لا يُسمح بإصدار تنبيه صوتي أو بالاهتزاز أو بعرض هذه الإشعارات بسرعة على الشاشة الحالية."</string>
@@ -2784,16 +2781,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"جارٍ تحميل التطبيقات..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"القنوات"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"حظر الكل"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"عدم عرض هذه الإشعارات"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"عرض الإشعارات"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"‏عدم عرض الإشعارات في مركز الإشعارات أو على الأجهزة المرتبطة بحساب Google"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"عرض الشارة"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"‏عرض الإشعارات على هيئة شارات على تطبيق Home، إن توفّرت إمكانية ذلك."</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>
@@ -3352,8 +3344,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"عدم عرض ذلك مجددًا"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"الطلب باعتبارك"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"إضافة حساب"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"معلومات النظام"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"إعدادات الملف الشخصي للعمل"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"البحث في جهات الاتصال"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"السماح بعمليات البحث عن جهات اتصال بواسطة مؤسستك لتحديد المتصلين وجهات الاتصال"</string>
@@ -3460,16 +3451,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"أحدث تقرير أخطاء"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"أحدث سجل أمني"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"أبدًا"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"الصور ومقاطع الفيديو"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"الموسيقى والصوت"</string>
     <string name="storage_games" msgid="7703159201697117621">"الألعاب"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"تطبيقات أخرى"</string>
     <string name="storage_files" msgid="8581083146777364063">"الملفات"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"سعة تخزين الهاتف"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> مُستخدَمة"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> خالية"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index af500e0..58fa129 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Mətn nümunəsi"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Ozlu Heyrətamiz Sehrbaz"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Fəsil 11: Məftunedici Zümrüd Şəhəri Oz"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Hətta yaşıl eynəklərlə də Şəhərin gözəliiyi Dorothy və onun dostlarının gözlərini qamaşdırdı. Küçələrdə yaşıl mərmərlərdən tikilmiş və parlaq zümrüdlərlə bəzədilmiş gözəl evlər yanbayan düzülmüşdü. Onlar səki ilə gəzirdilər və yaşıl mərmərdən olan səkilərin üstündə, günəş şüaları altında par-par parıldayan zümrüdlər cərgə ilə birləşmişdi. Pəncərənin şüşələri yaşıl idi; hətta səmada yaşıl boya hiss olunurdu və günəşin şüaları da yaşıl idi. \n\nƏtrafda çoxlu adamlar, kişilər, qadınlar və uşaqlar var idi və hər kəs yaşıl paltar geyinmişdi, hətta dəriləri də yaşıl idi. Onlar Dorothy\'yə və ətrafında yad adamlara təəccüblə baxdılar və Aslanı görən kimi uşaqlar tez qaçıb analarının arxasında gizləndilər; amma heç kəs onları dindirmədi. Küçədə çoxlu dükanlar var idi və Dorothy orada hər şeyin yaşıl olduğu gördü. Yaşıl konfetlər, yaşıl popkorn, yaşıl ayaqqabılar, yaşıl papaq və cürbəcür yaşıl paltarlar. Bir kişi yaşıl limonad satırdı və Dorothy gördü ki, uşaqlar onu alanda əvəzində yaşıl pul verdilər. \n\nOrada at yox idi, ümumiyyətlə heç bir heyvan gözə dəymirdi; kişi əşyalarını yaşıl araba ilə daşıyırdı. Hər kəs xoşbəxt, razı və firavan görünürdü."</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB yaddaş"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD kart"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Xəta"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"Bu ölkədə mövcud deyil 5 GHz band"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"Uçuş rejimində"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Şəbəkə bildirişi"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"İctimai şəbəkə əlçatan olan zaman bildirilsin"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Keyfiyyətsiz bağlantıdan çəkinin"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Yaxşı İnternet bağlantısı yoxdursa, Wi-Fi şəbəkəsi istifadə etmə"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Yalnız keyfiyyətli internet bağlantısı olan şəbəkələri istifadə edin"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Yeni tətbiq üçün tərcih edilmiş quraşdırma yerini dəyişin"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Quraşdırılmış tətbiqlər deaktiv edilsin?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Tətbiqi deaktiv edin"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Əgər bu tətbiqi deaktiv etsəniz, Android və digər tətbiqlər düzgün işlməyə bilər."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Data silinsin və tətbiq deaktiv edilsin?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Əgər siz bu tətbiqi deaktiv etsəniz, Android və digər tətbiqlər düzgün işləməyə bilər. Həmçinin, datanız da silinəcək."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Bildirişlər deaktiv edilsin?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Əgər bu tətbiq üçün bildirişləri söndürsəniz, əhəmiyyəli xəbərdarlıq və güncəlləmələri əldən buraxmış oa bilərsiniz."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Mağaza"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="other">%d gizli element göstərin</item>
       <item quantity="one">%d gizli element göstərin</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Şəbəkə və internet"</string>
     <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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Bildirişlər"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Əhəmiyyət"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Ayarlanmayıb"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Bildirişləri heç vaxt göstərməyin"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Səs və ya vizual kəsintisiz"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Sakit səsli"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Səsli"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Səsli və ekranda pəncərə ilə"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Sıfırlayın"</string>
     <string name="show_silently" msgid="2222875799232222056">"Səssiz göstərin"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Səs, vibrasiyanı deaktiv edin və ya bu bildirişlərə cari ekranınızda baxın."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Tətbiqlər endirilir..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Kanallar"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Hamısını bloklayın"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Bu bildirişlər heç vaxt göstərilməsin"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Bildirişləri göstərin"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Bildirişləri heç vaxt ekranda və ya periferik cihazlarda göstərməyin."</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Nişanı göstərin"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Əgər dəstəkləyirsə, bildirişləri Əsas tətbiqdə nişanlar kimi göstərin."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"\"Narahat etməyin\" seçimini əvəzləyin"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Narahat Etməyin seçimi Yalnız Prioritet üçün ayarlandıqda bildirişlərin mane olmasına imkan verin"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"Ekran kilidində"</string>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Yenidən göstərməyin"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Sorğulama növü:"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Hesab əlavə edin"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Sistem məlumatı"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"İş profil ayarları"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Kontakt axtarışı"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Zəng edənləri və kontaktları təyin etmək üçün təşkilatınız tərəfindən kontakt axtarışlarına icazə verin"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Ən son baq hesabatı"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Ən son təhlükəsizlik qeydiyyatı"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Heç vaxt"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Foto və Videolar"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Musiqi və Audio"</string>
     <string name="storage_games" msgid="7703159201697117621">"Oyunlar"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Digər tətbiqlər"</string>
     <string name="storage_files" msgid="8581083146777364063">"Fayllar"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Telefon Yaddaşı"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> istifadə"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> pulsuz"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index b2357d2..22d0413 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -87,8 +87,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Primer teksta"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Čarobnjak iz Oza"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Poglavlje 11: Čudesni Smaragdni grad Oza"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"I pored toga što su im oči bile zaštićene zelenim naočarima, Doroti i njeni prijatelji su u prvom trenutku bili zaslepljeni sjajem čudesnog grada. Ulice su bile pune prelepih kuća sagrađenih od zelenog mermera i ukrašenih svetlucavim smaragdima. Hodali su pločnikom od istog zelenog mermera, a na mestima na kojima su se ploče spajale nalazili su se gusto poređani smaragdi koji su se presijavali na suncu. Čak je i nebo iznad grada bilo zelene boje, kao i sunčevi zraci. \n\nNa ulicama je bilo mnogo ljudi. Muškarci, žene i deca su šetali, pri čemu su svi nosili zelena odela i imali zelenkastu kožu. Posmatrali su Doroti i njeno neobično društvo sa čuđenjem, a deca su bežala i krila se iza svojih majki kad bi videla Lava. Međutim, niko im se nije obraćao. U ulici je bilo mnogo radnji, a Doroti je primetila da je u njima sve bilo zeleno. Prodavale su se zelene bombone i kokice, zelene cipele, zeleni šeširi i zelena odeća svih vrsta. Na jednom mestu je neki čovek prodavao zelenu limunadu, a Doroti je primetila da su je deca plaćala zelenim novčićima. \n\nČinilo se da nema konja niti bilo kakvih drugih životinja. Ljudi su stvari nosili u malim zelenim kolicima koja su gurali ispred sebe. Svi su izgledali srećno, zadovoljno i uspešno."</string>
     <string name="font_size_save" msgid="3450855718056759095">"Potvrdi"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB memorija"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD kartica"</string>
@@ -680,8 +679,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Greška"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"Opseg od 5 GHz nije dostupan u ovoj zemlji"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"U Režimu rada u avionu"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Obaveštenje mreže"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Obaveštavanje kada god je dostupna javna mreža"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Izbegavaj loše veze"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Ne koristi Wi-Fi mrežu ako nema dobru internet vezu"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Korišćenje samo onih mreža koje imaju dobru internet vezu"</string>
@@ -1547,11 +1552,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Menjanje željene lokacije za instalaciju novih aplikacija"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Želite da onemogućite ugrađenu apl.?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Onemogući aplikaciju"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Ako onemogućite ovu aplikaciju, Android i druge aplikacije možda više neće funkcionisati ispravno."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Želite li da izbrišete podatke i onemogućite aplikaciju?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Ako onemogućite ovu aplikaciju, Android i druge aplikacije možda više neće funkcionisati ispravno. Osim toga, podaci će biti izbrisani."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Želite li da isklj. obaveštenja?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Ako isključite obaveštenja za ovu aplikaciju, možete da propustite važna obaveštenja i ažuriranja."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Prodavnica"</string>
@@ -2549,8 +2552,7 @@
       <item quantity="few">Prikaži %d skrivene stavke</item>
       <item quantity="other">Prikaži %d skrivenih stavki</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Mreža i internet"</string>
     <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>
@@ -2676,16 +2678,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Obaveštenja"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Važnost"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Nije podešeno"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Nikada ne prikazuj obaveštenja"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Bez zvučnog signala ili vizuelnog obaveštenja"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Prikazuje se bez zvučnog signala"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Emituje se zvučni signal"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Emituje se zvučni signal i prikazuje se na ekranu"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Resetuj"</string>
     <string name="show_silently" msgid="2222875799232222056">"Prikazivanje bez zvuka"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Nema nikakvog zvuka ni vibracije niti se ova obaveštenja nakratko prikazuju na aktuelnom ekranu."</string>
@@ -2715,16 +2712,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Učitavaju se aplikacije..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Kanali"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Blokiraj sve"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Nikada ne prikazuj ova obaveštenja"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Prikazuj obaveštenja"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Obaveštenja se nikada ne prikazuju na traci ili periferijskim uređajima"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Prikazuj značke"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Prikazuje obaveštenja kao značke u aplikaciji Home ako je to podržano."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"Zameni režim Ne uznemiravaj"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Omogućava da ova obaveštenja nastave da se prikazuju kada je režim Ne uznemiravaj podešen na opciju Samo prioritetni prekidi"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"Na zaključanom ekranu"</string>
@@ -3256,8 +3248,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Ne prikazuj ponovo"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Zahtevate kao"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Dodaj nalog"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Informacije o sistemu"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Podešavanja poslovnog profila"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Pretraga kontakata"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Dozvolite da pretraživanje kontakata od strane vaše organizacije identifikuje pozivaoce i kontakte."</string>
@@ -3352,16 +3343,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Najnoviji izveštaj o grešci"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Najnovija bezbednosna evidencija"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Nikada"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Slike i video snimci"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Muzika i audio"</string>
     <string name="storage_games" msgid="7703159201697117621">"Igre"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Druge aplikacije"</string>
     <string name="storage_files" msgid="8581083146777364063">"Datoteke"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Memorijski prostor telefona"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> je iskorišćeno"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> je slobodno"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index f817d84..3e0fd46 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -88,8 +88,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Прыклад тэксту"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Чараўнік краіны Оз"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Раздзел 11. Цудоўны Смарагдавы Горад у краіне Оз"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Нават адзеўшы зялёныя акуляры, Дораці і яе сябры былі ашаломленыя зіхаценнем дзівоснага Горада. Уздоўж вуліц стаялі прыгожыя дамы з зялёнага мармуру, упрыгожаныя бліскучымі смарагдамі. Кампанія ішла па ходніку з зялёнага мармуру, а шчыліны паміж плітамі былі запоўненыя смарагдамі, што ззялі пад праменямі сонца. Шыбы ў вокнах былі з зялёнага шкла, нават неба над Смарагдавым Горадам мела зялёнае адценне, а сонца свяціла зялёнымі праменямі. \n\nВакол хадзілі мужчыны, жанчыны, дзеці, і ўсе яны насілі зялёнае адзенне, і скура ў іх была зеленаватая. Яны са здзіўленнем глядзелі на Дораці і яе дзіўную кампанію, а дзеці ўцякалі і хаваліся за спіны мацярок, калі бачылі Льва; але ніхто не адважваўся загаварыць. На вуліцы было шмат крам, і Дораці заўважыла, што ўсе тавары былі зялёнага колеру. Зялёныя цукеркі і зялёная паветраная кукуруза, зялёныя чаравікі, зялёныя капелюшы і зялёныя касцюмы любых фасонаў. Дораці пабачыла, як прадавец гандляваў зялёным ліманадам, а дзеці расплачваліся за яго зялёнымі манеткамі. \n\nНе было відаць ні коней, ні іншай жывёлы. Мужчыны вазілі грузы ў маленькіх зялёных калясках. Усе выглядалі вясёлымі, задаволенымі і паспяховымі."</string>
     <string name="font_size_save" msgid="3450855718056759095">"ОК"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB-назапашвальнік"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD-карта"</string>
@@ -689,8 +688,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Памылка"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"Дыяпазон 5 ГГц недаступны ў гэтай краіне"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"У рэжыме палёту"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Апавяшчэнне сеткі"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Паведамляць, калі даступна публічная сетка"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Пазбягаць дрэнных злучэнняў"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Не выкарыстоўваць сетку Wi-Fi, пакуль не будзе якаснага падлучэння да Інтэрнэту"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Выкарыстоўваць толькі сеткі з добрым падлуч. да Інтэрнэту"</string>
@@ -1558,11 +1563,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Змяніць пераважнае месца ўсталявання новых прыкладанняў"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Адключыць убудаванае прыкладанне?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Адключыць дадатак"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Калі вы адключыце гэту праграму, іншыя праграмы могуць працаваць неналежным чынам."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Выдаліць дадзеныя і адключыць прыкладанне?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Калі вы адключыце гэту праграму, Android і іншыя праграмы могуць працаваць неналежным чынам. Вашы даныя таксама будуць выдалены."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Выключыць апавяшчэнні?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Калі адключыць паведамлення для гэтага прыкладання, вы можаце прапусціць важныя сігналы і абнаўленні."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Крама"</string>
@@ -2571,8 +2574,7 @@
       <item quantity="many">Паказаць %d схаваных элементаў</item>
       <item quantity="other">Паказаць %d схаванага элемента</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Сетка і інтэрнэт"</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>
@@ -2698,16 +2700,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Апавяшчэнні"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Важнасць"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Не зададзена"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Ніколі не паказваць апавяшчэнні"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Без гуку ці візуальнага перапынення"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Паказваць бязгучна"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Прайграваць гук"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Прайграваць гук і паказваць на экране"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Скінуць"</string>
     <string name="show_silently" msgid="2222875799232222056">"Паказваць бязгучна"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Не прайграваць гук, не вібрыраваць і не паказваць гэтыя апавяшчэнні хутка ў полі зроку на бягучым экране."</string>
@@ -2738,16 +2735,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Загрузка дадаткаў..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Каналы"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Блакіраваць усё"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Ніколі не паказваць гэтыя апавяшчэнні"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Паказваць апавяшчэнні"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Ніколі не паказваць апавяшчэнні на \"шторцы\" або на перыферыйных прыладах"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Паказаць значок"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Паказваць апавяшчэнні як значкі ў праграме Home, калі падтрымліваецца."</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>
@@ -3288,8 +3280,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Больш не паказваць"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Запыт ад"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Дадаць уліковы запіс"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Сістэмная інфармацыя"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Налады працоўнага профілю"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Пошук кантактаў"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Дазволіць вашай арганізацыі пошук кантактаў, каб вызначаць абанентаў і кантакты"</string>
@@ -3388,16 +3379,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Ваша апошняя справаздача пра памылку"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Ваш апошні журнал бяспекі"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Ніколі"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Фота і відэа"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Музыка і аўдыя"</string>
     <string name="storage_games" msgid="7703159201697117621">"Гульні"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Іншыя праграмы"</string>
     <string name="storage_files" msgid="8581083146777364063">"Файлы"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Сховішча тэлефона"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> выкарыстана"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> свабодна"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g> %%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index de5580b..285d15e 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Примерен текст"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Вълшебникът от Оз"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Глава 11: Удивителният изумруден град на Оз"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Макар зелените очила да предпазваха очите им, отначало Дороти и приятелите й бяха заслепени от блясъка на великолепния град. По улиците се редяха красиви къщи, целите изградени от зелен мрамор и обсипани с искрящи изумруди. Групата се движеше по паваж от същия зелен мрамор, като блокчетата бяха свързани с редици от гъсто разположени изумруди, които блестяха на ярката слънчева светлина. Прозорците на къщите бяха със зелени стъкла. Дори небето над града бе обагрено в зелено, а слънчевите лъчи бяха зелени.\n\nРазхождаха се много хора – мъже, жени и деца. Всички бяха облечени в зелени дрехи и имаха зеленикава кожа. Те гледаха Дороти и странните й спътници с учудени погледи, а децата бягаха и се криеха зад майките си, щом видеха Лъва. Но никой не започваше разговор с тях. На улицата имаше много магазини и Дороти забеляза, че всичко в тях е зелено. Продаваха се зелени бонбони и зелени пуканки, всевъзможни зелени обувки, зелени шапки и зелени дрехи. На едно място някакъв мъж продаваше зелена лимонада и Дороти видя, че децата плащат със зелени монети.\n\nНе се виждаха коне или други животни. За пренасяне мъжете използваха малки зелени колички, които бутаха. Всички изглеждаха доволни, щастливи и благоденстващи."</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB хранилище"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD карта"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Грешка"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"Честотата от 5 ГХц не е налице в тази държава"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"В самолетен режим"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Известие за мрежа"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Известяване, когато е налице обществена мрежа"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Да се избягват лоши връзки"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Да не се използва Wi‑Fi мрежа, освен ако няма добра връзка с интернет"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Да се ползват само мрежи с добра връзка с интернет"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Промяна на предпочитаното място за инсталиране на нови приложения"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Да се деакт. ли вград. прил.?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Деактивиране на приложението"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Ако деактивирате това приложение, Android и други приложения може да спрат да работят както трябва."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Да се изтрият ли данните и да се деактивира приложението?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Ако деактивирате това приложение, Android и други приложения може да спрат да работят както трябва. Данните ви също ще бъдат изтрити."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Да се изключат ли известията?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Ако изключите известията за това приложение, може да пропуснете важни сигнали и актуализации."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"App Store"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="other">Показване на %d скрити елемента</item>
       <item quantity="one">Показване на %d скрит елемент</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Мрежа и интернет"</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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Известия"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Важност"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Не е зададено"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Без показване на известия"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Без звук или визуално прекъсване"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Показване без звук"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Възпроизвеждане на звук"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Възпроизвеждане на звук и показване на изскачащ прозорец на екрана"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Нулиране"</string>
     <string name="show_silently" msgid="2222875799232222056">"Показване без звук"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Без издаване на звук, вибриране или показване на тези известия на текущия екран."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Приложенията се зареждат..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Канали"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Блокиране на всички"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Без показване на тези известия"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Показване на известията"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Без показване на известия в падащия панел или на периферни устройства"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Показване на значка"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Показване на известията като значки на началния екран, ако функцията се поддържа."</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>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Да не се показва отново"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Заявка за поддръжка като"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Добавяне на профил"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Системна информация"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Настройки за служебния потребителски профил"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Търсене на контакт"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Разрешете търсене на контакти от организацията ви с цел идентифициране на обаждащите се и контактите"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Най-скорошният ви сигнал за програмна грешка"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Най-скорошният ви регистрационен файл за сигурността"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Никога"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Снимки и видеоклипове"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Музика и аудио"</string>
     <string name="storage_games" msgid="7703159201697117621">"Игри"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Други приложения"</string>
     <string name="storage_files" msgid="8581083146777364063">"Файлове"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Хранилище на телефона"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"Използвано място: <xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g>"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"Свободно място: <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index 215f411..08aa732 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"নমুনা পাঠ্য"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"দ্যা ওয়ান্ডারফুল উইজার্ড অফ অজ"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"অধ্যায় ১১: দ্যা ওয়ান্ডারফুল এমারল্ড সিটি অফ ওজ"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"চোখে সবুজ চশমা লাগানো থাকলেও, ডরোথি এবং তার বন্ধু বিস্ময়কর শহরের জাঁকজমক দেখে প্রথমে স্তম্ভিত হয়ে উঠেছিল৷ রাস্তায় সারিবদ্ধভাবে থাকা সুন্দর সুন্দর ঘর, তার সবগুলি সবুজ মার্বেল নির্মিত এবং সর্বত্র চমকদার পান্না দিয়ে খচিত৷ তারা সেই একই সবুজ মার্বেলের তৈরি একটি ফুটপাথ ধরে হেঁটে চলেছিল, যেখানে একটির সাথে আর একটি ব্লগ সারিবদ্ধ পান্না দিয়ে যুক্ত করে কঠিনভাবে সেট করা এবং তা সূর্যের আলোকে চকচক করছিল৷ জানালার ফলকগুলি সবুজ কাচের ছিল; শহরের আকাশে একটি সবুজ ছোপ দেখা যাচ্ছিল, এবং সূর্যের আলোও ছিল সবুজ রঙের৷ \n\nসেখানে অনেক পুরুষ, মহিলা এবং শিশুরা হাঁটা হাঁটি করছিল, সকলে সবুজ রঙের কাপড় পরেছিল, এবং তাদের ত্বকের রঙ ছিল সবুজাভ৷ তারা ডরোথির দিকে তাকিয়ে ছিল এবং বিস্মিত চোখে তার আশ্চর্যজনক নিশ্চিত সহায়ক দৃষ্টি দেখে শিশুদের সবাই পালিয়ে গেল এবং সিংহটিকে দেখার সাথে সাথে তারা তাদের মায়েদের পিছনে লুকিয়ে গেল; কিন্তু কেউ তাদেরকে কিছু বলল না৷ রাস্তার পাশে অনেক দোকান ছিল, ডরোথি দেখল সেখানে রাখা সবকিছুই সবুজ রঙের৷ সবুজ মিছরি এবং সবুজ ভুট্টার খই বিক্রির জন্য সাজানো ছিল, তার সাথে সবুজ জুতা, সবুজ টুপি এবং সব ধরনের সবুজ জামাকাপড়ও ছিল৷ একটা লোক এক জায়গায় দাঁড়িয়ে সবুজ সরবৎ বিক্রি করছিল, এবং যখন একটি শিশু সেটা কিনল, ডরোথি লক্ষ্য করল দামের অর্থ হিসাবে একটি সবুজ পেনি দিতে৷ \n\nদেখে মনে হচ্ছিল সেখানে কোনো ঘোড়া বা অন্য কোনো ধরনের প্রাণী নেই; পুরুষেরা ছোট সবুজ গাড়িতে করে ঠেলে ঠেলে কাছাকাছি জিনিসগুলি বয়ে নিয়ে যাচ্ছিল৷ সবাইকে খুব খুশি, সন্তুষ্ট এবং সমৃদ্ধ বলে মনে হচ্ছিল৷"</string>
     <string name="font_size_save" msgid="3450855718056759095">"ঠিক আছে"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB সঞ্চয়স্থান"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD কার্ড"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"ত্রুটি"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"এই দেশে ৫ GHz ব্যান্ড পাওয়া যায় না"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"বিমান মোডে"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"নেটওয়ার্ক বিজ্ঞপ্তি"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"যখনই কোনো সর্বজনীন নেটওয়ার্ক উপলব্ধ হয় তখন বিজ্ঞপ্তি জানান"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"দুর্বল সংযোগগুলি এড়িয়ে চলুন"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"ভালো ইন্টারনেট সংযোগ না হলে ওয়াই-ফাই ব্যবহার করবেন না"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"শুধুমাত্র ভাল ইন্টারনেট সংযোগ আছে এমন নেটওয়ার্ক ব্যবহার করুন"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"নতুন অ্যাপ্লিকেশানগুলির জন্য পছন্দসই ইনস্টলেশানের অবস্থান পরিবর্তন করুন"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"বিল্ট-ইন অ্যাপ্লিকেশান অক্ষম করবেন?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"অ্যাপ্লিকেশান অক্ষম করুন"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"আপনি এই অ্যাপটি অক্ষম করলে, Android এবং অন্যান্য অ্যাপ্লিকেশানকে যে কাজের উদ্দেশ্যে তৈরি করা হয়েছিল সেগুলি আর কাজ নাও করতে পারে৷"</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"ডেটা মুছে দেবেন এবং অ্যাপ্লিকেশন অক্ষম করবেন?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"আপনি যদি এই অ্যাপ্লিকেশানটিকে অক্ষম করেন, Android এবং অন্যান্য অ্যাপ্লিকেশানকে যে কাজের উদ্দেশ্যে তৈরি করা হয়েছিল সেগুলি আর কাজ নাও করতে পারে৷ আপনার ডেটাও মুছে যাবে।"</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"বিজ্ঞপ্তিগুলি বন্ধ করবেন?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"আপনি যদি এই অ্যাপ্লিকেশানের জন্য বিজ্ঞপ্তিগুলিকে বন্ধ করনে তাহলে আপনি গুরুত্বপূর্ণ সতর্কতা এবং আপডেটগুলি নাও পেতে পারেন৷"</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"স্টোর"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="one">%dটি লুকানো আইটেম দেখান</item>
       <item quantity="other">%dটি লুকানো আইটেম দেখান</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"নেটওয়ার্ক ও ইন্টারনেট"</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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"বিজ্ঞপ্তিগুলি"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"গুরুত্ব"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"সেট করা নেই"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"কখনোই বিজ্ঞপ্তগুলি দেখায় না"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"কোনো শব্দ বা ভিজ্যুয়াল বাধা নেই"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"নিঃশব্দে দেখান"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"শব্দ করে"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"শব্দ করে ও স্ক্রীনে ভেসে ওঠে"</string>
     <string name="importance_reset" msgid="7458420788555607007">"পুনরায় সেট করুন"</string>
     <string name="show_silently" msgid="2222875799232222056">"নিঃশব্দে দেখান"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"শব্দ, কম্পন করে না বা বর্তমান স্ক্রীনে এই বিজ্ঞপ্তিগুলিকে দেখানো হয় না৷"</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"অ্যাপ্লিকেশানগুলি লোড করা হচ্ছে..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"চ্যানেল"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"সমস্ত অবরুদ্ধ করুন"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"এই বিজ্ঞপ্তিগুলি কখনোই দেখানো হবে না"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"বিজ্ঞপ্তিগুলি দেখান"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"ছায়া বা পেরিফেরাল ডিভাইসে কখনও বিজ্ঞপ্তিগুলি দেখায় না"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"ব্যাজ দেখায়"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"সমর্থিত হলে, হোম ট্যাবে ব্যাজ হিসেবে বিজ্ঞপ্তিগুলি দেখায়।"</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>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"আর দেখাবেন না"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"এই রূপে অনুরোধ করা হচ্ছে"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"অ্যাকাউন্ট যোগ করুন"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"সিস্টেমের তথ্য"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"কর্মস্থলের প্রোফাইলের সেটিংস"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"পরিচিতির অনুসন্ধান"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"কলারদের এবং পরিচিতিগুলিকে চিহ্নিত করতে আপনার প্রতিষ্ঠান দ্বারা পরিচিতি অনুসন্ধানের অনুমতি দিন"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"আপনার সর্বশেষ ত্রুটির প্রতিবেদন"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"আপনার সর্বশেষ নিরাপত্তা লগ"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"কখনই নয়"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"ফটো ও ভিডিও"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"সঙ্গীত ও অডিও"</string>
     <string name="storage_games" msgid="7703159201697117621">"গেম্স"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"অন্যান্য অ্যাপ্লিকেশান"</string>
     <string name="storage_files" msgid="8581083146777364063">"ফাইল"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"ফোনের সঞ্চয়স্থান"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> ব্যবহার করা হয়েছে"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> খালি"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index 3ab6d33..f1b2fc8 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -87,8 +87,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Uzorak teksta"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Čarobnjak iz Oza"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Poglavlje 11: Smaragdni grad Oz"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"I pored toga što su im oči bile zaštićene zelenim naočalama, Dorothy i njeni prijatelji su isprva bili zaslijepljeni blještavilom tog grada. Ulicama su se nizale predivne zelene kuće izgrađene od zelenog mermera i obasute svjetlucavim smaragdima. Hodali su trotoarom od istog zelenog mermera, a na spoju između blokova nalazili su se usko postavljeni redovi smaragda koji su svjetlucali od sunčevog sjaja. Prozorska okna su bila od zelenog stakla. Čak je i nebo iznad grada imalo zelenu nijansu, a sunčeve zrake su bile zelene. \n\nTu je bilo mnogo ljudi, muškaraca, žena i djece, šetali su odjeveni u zelenu odjeću i imali su zelenkastu kožu. S čuđenjem su gledali u Dodorthy i njenu čudnovatu družinu. Kada su vidjeli lava, sva djeca su pobjegla i sakrila se iza svoje majke; ali niko im se nije obraćao. Na ulici je bilo mnogo prodavnica, a Dorothy je vidjela da je u njima sve zeleno. U ponudi su bili zeleni slatkiši i zelene kokice, kao i zelene cipele, zeleni šeširi i raznorazna zelena odjeća. Na jednom mjestu čovjek je prodavao zelenu limunadu, a kada su je djeca kupovala, Dorothy je vidjela da plaćaju zelenim novčićima. \n\nIzgleda da nije bilo konja niti drugih životinja. Muškarci su nosili stvari naokolo u zelenim kolicima koja su gurali ispred sebe. Svi su izgledali sretno, zadovoljno i napredno."</string>
     <string name="font_size_save" msgid="3450855718056759095">"U redu"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB pohrana"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD kartica"</string>
@@ -680,8 +679,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Greška"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"Opseg od 5 GHz nije dostupan u ovoj zemlji"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"U načinu rada u avionu"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Mrežno obavještenje"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Obavijesti me kada je dostupna javna mreža"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Izbjegavaj slabe veze"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Ne koristi se Wi-Fi mreža ako njena Internet veza nije dobra"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Koristiti samo mreže koje imaju dobru internet vezu"</string>
@@ -1547,11 +1552,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Promijenite preferiranu lokaciju za instaliranje novih aplikacija"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Onemogućiti ugrađenu aplikaciju?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Onemogući aplikaciju"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Ako onemogućite ovu aplikaciju, moguće je da Android i druge aplikacije više neće funkcionirati ispravno."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Želite li obrisati podatke i onemogućiti aplikaciju?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Ako onemogućite ovu aplikaciju, moguće je da Android i druge aplikacije više neće funkcionirati ispravno. Vaši podaci će se također izbrisati."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Isključiti obavještenja?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Ako isključite obavještenja za ovu aplikaciju, možete propustiti važna upozorenja i ažuriranja."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Trgovina"</string>
@@ -2549,8 +2552,7 @@
       <item quantity="few">Prikaži %d skrivene stavke</item>
       <item quantity="other">Prikaži %d skrivenih stavki</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Mreža i internet"</string>
     <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>
@@ -2676,16 +2678,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Obavještenja"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Značaj"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Nije postavljeno"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Nikad ne prikazuj obavještenja"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Bez ometanja zvukom ili prikazivanjem"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Prikaži bez zvuka"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Pusti zvuk"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Pusti zvuk i prikaži na ekranu"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Ponovno pokretanje"</string>
     <string name="show_silently" msgid="2222875799232222056">"Pokaži bez zvuka"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Ne oglašavaj ova obavještenja zvukom, vibriranjem niti kratkim prikazom na aktuelnom ekranu."</string>
@@ -2715,16 +2712,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Učitavaju se aplikacije..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Kanali"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Blokiraj sve"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Nikada ne prikazuj ova obavještenja"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Prikaži obavještenja"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Nikad ne prikazuj obavještenja u nijansi ili na perifernim uređajima"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Prikži značku"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Prikaži obavještenja kao značke na aplikaciji Home, ukoliko je podržano."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"Premosti podešenja usluge Ne ometaj"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Dozvolite da se ova obavještenja i dalje čuju kada je opcija Ne ometaj podešena na Samo prioritetna obavještenja"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"Na zaključanom ekranu"</string>
@@ -3256,8 +3248,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Ne prikazuj ponovo"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Tražite kao"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Dodaj račun"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Informacije o sistemu"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Postavke radnog profila"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Pretraživanje kontakata"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Dozvolite svojoj organizaciji da pretražuje kontakte kako bi identificirala pozivaoce i kontakte"</string>
@@ -3352,16 +3343,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Vaš posljednji izvještaj o greškama"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Vaš najnoviji zapisnik o stanju sigurnosti"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Nikada"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Fotografije i videozapisi"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Muzika i zvuk"</string>
     <string name="storage_games" msgid="7703159201697117621">"Igre"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Druge aplikacije"</string>
     <string name="storage_files" msgid="8581083146777364063">"Fajlovi"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Pohrana telefona"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> je iskorišćeno"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> je slobodno"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 55e0795..e215a48 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Text de mostra"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"El meravellós mag d\'Oz"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Capítol 11: La meravellosa Ciutat Maragda d\'Oz"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Fins i tot amb els ulls protegits per les ulleres verdes, la Dorothy i els seus amics van quedar enlluernats, de moment, per la brillantor de la meravellosa Ciutat. A banda i banda dels carrers es dreçaven cases boniques, totes fetes de marbre verd amb incrustacions de maragdes guspirejants. El terra també era fet del mateix marbre verd, i totes les juntures eren cobertes de rengleres de maragdes, una al costat de l\'altra, que guspirejaven a la llum del sol. Els vidres de les finestres eren verds; i fins i tot el cel, damunt la Ciutat, tenia un to verdós, i els raigs del sol eren verds. \n\nPertot es veia molta gent, homes, dones i criatures, vestits tots de verd i amb la pell verdosa. Tothom mirava la Dorothy i els seus companys amb sorpresa i curiositat, i les criatures fugien per amagar-se rere les seves mares quan veien el Lleó; però ningú no els va adreçar la paraula. Pels carrers hi havia moltes botigues i parades, i la Dorothy es fixà que tot el que hi venien era verd: caramels verds, rosetes de blat de moro verdes, sabates verdes, barrets verds i vestits verds de tota mena. En una de les parades, un home venia gasosa verda, i la Dorothy es va adonar que les criatures que en compraven pagaven amb monedes verdes. \n\nSemblava que en tota la ciutat no hi havia cavalls ni animals de cap mena. Els homes transportaven les coses en petits carretons verds, que empenyien davant seu. Tothom semblava feliç, content i pròsper."</string>
     <string name="font_size_save" msgid="3450855718056759095">"D\'acord"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"Emmagatzematge USB"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"Targeta SD"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Error"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"La banda de 5 GHz no està disponible en aquest país"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"En mode d\'avió"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Notificació de xarxa"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Notifica\'m si hi ha una xarxa pública disponible"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Només connexions estables"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"No utilitzis una xarxa Wi-Fi tret que tingui una bona connexió a Internet"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Utilitza només les xarxes amb una bona connexió a Internet."</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Canvia la ubicació d\'instal·lació preferida per a les aplicacions noves"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Desactivar aplicació integrada?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Desactiva l\'aplicació"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Si desactives aquesta aplicació, és possible que Android i altres aplicacions deixin de funcionar com és habitual."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Vols eliminar les dades i desactivar l\'aplicació?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Si desactives aquesta aplicació, és possible que Android i altres aplicacions deixin de funcionar com és habitual. A més, se suprimiran les teves dades."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Vols desactivar les notificacions?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Si desactives les notificacions d\'aquesta aplicació, pots perdre\'t actualitzacions i alertes importants."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Botiga"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="other">Mostra %d elements amagats</item>
       <item quantity="one">Mostra %d element amagat</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Xarxa i Internet"</string>
     <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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Notificacions"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Importància"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"No s\'ha definit"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"No mostris mai notificacions"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Sense so ni interrupcions visuals"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Es mostren de manera silenciosa"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Amb so"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Amb so i amb una finestra emergent"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Restableix"</string>
     <string name="show_silently" msgid="2222875799232222056">"Mostra de manera silenciosa"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"No reprodueix cap so, no vibra ni mostra aquestes notificacions a la pantalla actual."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"S\'estan carregant les aplicacions..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Canals"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Bloqueja-ho tot"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"No mostris mai aquestes notificacions"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Mostra notificacions"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"No mostris mai notificacions a l\'àrea de notificacions ni en dispositius perifèrics"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Mostra l\'insígnia"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Si és compatible, mostra notificacions com a insígnies a l\'aplicació Inici."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"Fes prioritària"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Permet que aquestes notificacions continuïn interrompent quan el mode No molesteu estigui configurat com a Només amb prioritat"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"A la pantalla de bloqueig"</string>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"No ho tornis a mostrar"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Sol·licitud en nom de:"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Afegeix un compte"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Informació del sistema"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Configuració del perfil professional"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Cerca de contactes"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Permet que la teva organització cerqui contactes per identificar els remitents i els contactes"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Informe d\'errors més recent"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Registre de seguretat més recent"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Mai"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Fotos i vídeos"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Música i àudio"</string>
     <string name="storage_games" msgid="7703159201697117621">"Jocs"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Altres aplicacions"</string>
     <string name="storage_files" msgid="8581083146777364063">"Fitxers"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Emmagatzematge del telèfon"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966"><small><small>"Espai utilitzat: <xliff:g id="NUMBER">^1</xliff:g> <xliff:g id="UNIT">^2</xliff:g>"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"Espai disponible: <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index d5965ca..dc34d62 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -88,8 +88,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Ukázkový text"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Čaroděj ze země Oz"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Kapitola 11: Smaragdové město v zemi Oz"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"I přestože měli oči chráněné zelenými brýlemi, Dorotka a její přátelé byli oslněni krásou celého města. Ulice byly lemovány nádhernými domy ze zeleného mramoru posetého blyštivými smaragdy. Chodníky byly dlážděny stejným druhem zeleného mramoru a jednotlivé dlaždice od sebe dělily řady úzce sázených smaragdů, které se leskly ve slunečním svitu. Okenní tabule byly ze zeleného skla, dokonce i obloha nad městem měla zelený nádech i sluneční paprsky byly zelené. \n\nKolem procházelo mnoho lidí – muži, ženy i děti. Všichni byli zelení a nosili zelené oblečení. Zraky všech se upíraly na Dorotku a její neobvykle různorodé společníky. Když děti zahlédly i Lva, utíkaly se schovat za své maminky. Nikdo se neodvážil na skupinku promluvit. V ulici bylo mnoho obchodů a Dorotka si všimla, že také v nich je všechno zelené. Bonbony, popcorn, boty, klobouky, oblečení všech druhů.Na jednom místě prodávali zelenou limonádu, a když ji děti kupovaly, platily za ni zelenými mincemi. \n\nZdálo se, že ve městě nejsou koně ani jakákoli zvířata. Lidé k převážení věcí používali zelené vozíky, které tlačili před sebou. Všichni vypadali, že jsou spokojeni a daří se jim."</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"Úložiště USB"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"Karta SD"</string>
@@ -689,8 +688,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Chyba"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"V této zemi není pásmo 5 GHz k dispozici"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"Při režimu Letadlo"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Oznamování sítě"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Upozornit, když bude dostupná veřejná síť"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Ignorovat slabá připojení"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Nepoužívat síť Wi-Fi, pokud nemá dostatečně kvalitní internetové připojení"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Použít jen sítě s dobrým připojením k internetu"</string>
@@ -1558,11 +1563,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Změna preferovaného umístění pro instalaci nových aplikací"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Deaktivovat integrovanou aplikaci"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Deaktivovat aplikaci"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Pokud tuto aplikaci deaktivujete, systém Android a ostatní aplikace nemusejí fungovat správně."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Vymazat data a deaktivovat aplikaci?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Pokud tuto aplikaci deaktivujete, systém Android a ostatní aplikace nemusejí fungovat správně. Také budou smazána data."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Vypnout oznámení?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Pokud v této aplikaci vypnete oznámení, můžete přijít o důležitá upozornění a aktuality."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Obchod"</string>
@@ -2571,8 +2574,7 @@
       <item quantity="other">Zobrazit %d skrytých položek</item>
       <item quantity="one">Zobrazit %d skrytou položku</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Síť a internet"</string>
     <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>
@@ -2698,16 +2700,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Oznámení"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Důležitost"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Nenastaveno"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Oznámení nikdy nezobrazovat"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Bez zvukového a vizuálního vyrušení"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Zobrazovat tiše"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Vydat zvukový signál"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Vydat zvukový signál a vyskočit na obrazovku"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Resetovat"</string>
     <string name="show_silently" msgid="2222875799232222056">"Zobrazovat tiše"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Na tato oznámení nebudete upozorněni zvukem ani vibrací, ani se nebude zobrazovat jejich náhled na aktuální obrazovce."</string>
@@ -2738,16 +2735,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Načítání aplikací..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Kanály"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Blokovat vše"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Tato oznámení nikdy nezobrazovat"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Zobrazovat oznámení"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Nezobrazovat oznámení na panelu ani v periferních zařízeních"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Zobrazovat odznaky"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Zobrazovat oznámení jako odznaky ve výchozí aplikaci, je-li tato funkce podporována."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"Přepsat nastavení Nerušit"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Umožnit těmto oznámením vyrušit mě, pokud je v nastavení Nerušit vybrána možnost Pouze prioritní"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"Na obrazovce uzamčení"</string>
@@ -3288,8 +3280,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Příště již nezobrazovat"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Žádost bude odeslána pomocí účtu"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Přidat účet"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Systémové informace"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Nastavení pracovního profilu"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Vyhledávání kontaktů"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Povolit vyhledávání kontaktů organizací za účelem identifikace volajících a kontaktů"</string>
@@ -3388,16 +3379,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Vaše nejnovější zpráva o chybě"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Váš nejnovější protokol zabezpečení"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Nikdy"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Fotky a videa"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Hudba a zvuk"</string>
     <string name="storage_games" msgid="7703159201697117621">"Hry"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Další aplikace"</string>
     <string name="storage_files" msgid="8581083146777364063">"Soubory"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Úložiště telefonu"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> využito"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"Volné místo: <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g> %%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index b9743ac..de44152 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Eksempeltekst"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Den vidunderlige troldmand fra Oz"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Kapitel 11: Den vidunderlige smaragdby i Oz"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Selv med øjnene beskyttet bag de grønne briller blev Dorothy og hendes venner til at starte med forblændet af byens vidunderlige funklen. Langs gaderne stod smukke huse i grøn marmor bestrøet med skinnende smaragder. De gik hen over et fortov, der var lavet af det samme grønne marmor, og der hvor fliserne mødtes, var der rækker af smaragder, der side om side skinnede i lyset fra solen. Ruderne var af grønt glas; selv himlen over byen havde et grønt skær, og solens stråler var grønne. \n\nMange mennesker, både mænd, kvinder og børn, gik omkring, og de var alle klædt i grønt og havde en grønlig hud. De kiggede med undrende øjne på Dorothy og hendes mærkværdige brogede følge, og børnene løb alle hen og gemte sig bag deres mødre, da de så Løven, men der var ingen, der talte til dem. Der var mange butikker på gaden, og Dorothy kunne se, at alle varerne var grønne. Der blev solgt grønt slik og grønne popcorn, grønne sko, grønne hatte og alle slags grønne klæder. En mand solgte grøn lemonade, og da børnene købte det, kunne Dorothy se, at de betalte for det med grønne penge. \n\nDer så ikke ud til at være heste eller dyr af nogen art; mændene kørte med ting i små grønne vogne, som de skubbede foran sig. Alle virkede glade og tilfredse og velstående."</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB-lager"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD-kort"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Fejl"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"5 GHz-bånd er ikke tilgængeligt i dette land"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"I flytilstand"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Underretning ved nye netværk"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Giv besked, når et offentligt netværk er tilgængeligt"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Undgå dårlige forbindelser"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Brug kun et Wi-Fi-netværk, hvis det har en god internetforbindelse"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Anvend kun netværk med god internetforbindelse"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Skift den foretrukne installationsplacering for nye apps"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Deaktiver indbygget app?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Deaktiver appen"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Hvis du deaktiverer denne app, kan Android-apps og andre apps forhindres i at fungere korrekt."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Vil du slette data og deaktivere appen?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Hvis du deaktiverer denne app, kan Android-apps og andre apps forhindres i at fungere korrekt. Dine data slettes også."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Vil du deaktivere underretninger?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Hvis du deaktiverer underretninger for denne app, kan du gå glip af vigtige beskeder og opdateringer."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Butik"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="one">Vis %d skjult element</item>
       <item quantity="other">Vis %d skjulte elementer</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Netværk og 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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Underretninger"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Vigtighed"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Ikke angivet"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Vis aldrig underretninger"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Ingen lyd eller pop op-visning"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Vis lydløst"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Med lyd"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Med lyd og pop op-visning"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Nulstil"</string>
     <string name="show_silently" msgid="2222875799232222056">"Vis lydløst"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Undlad at give lyd, vibrere eller vise disse underretninger på den aktuelle skærm."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Indlæser apps..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Kanaler"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Bloker alle"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Vis aldrig disse underretninger"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Vis underretninger"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Vis aldrig underretninger i underretningspanelet eller på eksterne enheder"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Vis badge"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Vis underretninger som badges i Home-appen, hvis det understøttes."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"Tilsidesæt Forstyr ikke"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Lad disse underretninger fortsætte med at afbryde, når Forstyr ikke er slået til med angivelsen Kun prioritet"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"På låseskærmen"</string>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Vis ikke igen"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Anmoder som"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Tilføj konto"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Systemoplysninger"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Indstillinger for arbejdsprofil"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Søgning efter kontaktpersoner"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Tillad søgninger efter kontaktpersoner efter din organisation for at identificere kontaktpersoner og personer, der ringer"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Din seneste fejlrapport"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Din seneste sikkerhedslogfil"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Aldrig"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Billeder og videoer"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Musik og lyd"</string>
     <string name="storage_games" msgid="7703159201697117621">"Spil"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Andre apps"</string>
     <string name="storage_files" msgid="8581083146777364063">"Filer"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Telefonens lagerplads"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> anvendt lagerplads"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> ledig lagerplads"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g> %%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 6e2fae2..a4598f9 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -85,8 +85,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Beispieltext"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Der Zauberer von Oz"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Kapitel 11: Die wundervolle Smaragdstadt von Oz"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Obwohl ihre Augen durch die grünen Gläser der Brillen geschützt waren, wurde den Freunden vom Glanz und vom Schimmer der wundervollen Smaragdstadt beinahe schwindelig. Prächtige Häuser aus grünem Marmor, die mit Smaragden besetzt waren, säumten die Straßen. Auch das Straßenpflaster bestand aus feinstem grünem Marmor, und die Fugen waren mit glitzernden Smaragden bestückt. Sie funkelten und leuchteten in der Sonne. Die Fensterscheiben der Häuser bestanden aus grünem Glas, der Himmel über der Stadt schimmerte hellgrün, und sogar die Strahlen der Sonne wirkten leicht grünlich. \n\nIn der Stadt gab es viel Leben. Männer, Frauen und Kinder liefen geschäftig durch die Straßen. Alle waren grün gekleidet und trugen eine grüne Brille. Ihre Haut schien leicht grün zu sein, und sie sahen Dorothy und ihre Freunde mit großen verwunderten Augen an. Als die Kinder den Löwen sahen, rannten sie davon, um sich hinter ihren Müttern zu verstecken. Niemand richtete das Wort an die Wanderer. Es gab auch viele Geschäfte in der Smaragdstadt, und sogar die Auslagen der Läden waren grün. Da gab es grüne Bonbons, grünes Popcorn, grüne Schuhe, grüne Hüte und viele grüne Kleider. Ein Mann verkaufte grüne Limonade, und Dorothy sah die Kinder mit grünem Geld dafür bezahlen. \n\nPferde oder andere Tiere konnte Dorothy nirgendwo entdecken. Dafür begegneten ihnen immer wieder Männer, die auf ihren kleinen grünen Karren Lasten durch die Stadt schoben. Alle schienen glücklich und zufrieden zu sein."</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB-Speicher"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD-Karte"</string>
@@ -658,7 +657,7 @@
     <string name="android_beam_off_summary" msgid="4663095428454779138">"Aus"</string>
     <string name="android_beam_disabled_summary" msgid="1737782116894793393">"Nicht verfügbar, weil NFC deaktiviert ist"</string>
     <string name="android_beam_label" msgid="6257036050366775040">"Android Beam"</string>
-    <string name="android_beam_explained" msgid="1810540319385192758">"Wenn diese Funktion aktiviert ist, kannst du App-Inhalte auf ein anderes NFC-fähiges Gerät beamen, indem du die Geräte dicht nebeneinander hältst. Du kannst beispielsweise Webseiten, YouTube-Videos und Kontakte beamen.\n\nHalte die Geräte einfach dicht nebeneinander, am besten Rückseite an Rückseite, und berühre den Bildschirm. Was übertragen wird, richtet sich nach der App."</string>
+    <string name="android_beam_explained" msgid="1810540319385192758">"Wenn diese Funktion aktiviert ist, kannst du App-Inhalte auf ein anderes NFC-fähiges Gerät übertragen, indem du die Geräte dicht nebeneinander hältst. Du kannst beispielsweise Webseiten, YouTube-Videos und Kontakte übertragen.\n\nHalte die Geräte einfach dicht nebeneinander, am besten Rückseite an Rückseite, und berühre den Bildschirm. Was übertragen wird, hängt von der App ab."</string>
     <string name="wifi_quick_toggle_title" msgid="8850161330437693895">"WLAN"</string>
     <string name="wifi_quick_toggle_summary" msgid="2696547080481267642">"WLAN aktivieren"</string>
     <string name="wifi_settings" msgid="29722149822540994">"WLAN"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Fehler"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"Das 5-GHz-Band ist in diesem Land nicht verfügbar."</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"Im Flugmodus"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Netzwerkhinweis"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Immer benachrichtigen, wenn öffentliches Netzwerk verfügbar"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Schlechte Internetverbindungen vermeiden"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"WLAN nur bei guter Internetverbindung verwenden"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Nur Netzwerke mit stabiler Internetverbindung verwenden"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Bevorzugten Installationspfad für neue Apps ändern"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Integrierte App deaktivieren?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"App deaktivieren"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Bei Deaktivierung dieser App funktionieren Android und andere Apps möglicherweise nicht mehr ordnungsgemäß."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Daten löschen und App deaktivieren?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Bei Deaktivierung dieser App funktionieren Android und andere Apps möglicherweise nicht mehr ordnungsgemäß. Außerdem werden deine Daten gelöscht."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Benachrichtigungen deaktivieren?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Wenn du die Benachrichtigungen für diese App deaktivierst, verpasst du eventuell wichtige Warnmeldungen und Updates."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Store"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="other">%d ausgeblendete Elemente anzeigen</item>
       <item quantity="one">%d ausgeblendetes Element anzeigen</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Netzwerk &amp; Internet"</string>
     <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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Benachrichtigungen"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Wichtigkeit"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Nicht festgelegt"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Niemals Benachrichtigungen anzeigen"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Kein akustisches Signal und keine visuelle Unterbrechung"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Ohne Ton anzeigen"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Akustisches Signal"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Akustisches Signal und Bildschirmbenachrichtigung"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Zurücksetzen"</string>
     <string name="show_silently" msgid="2222875799232222056">"Ohne Ton anzeigen"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Diese Benachrichtigungen nicht auf dem aktuellen Bildschirm einblenden und keinen Ton sowie keine Vibration dafür erzeugen."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Apps werden geladen..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Kanäle"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Alle blockieren"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Diese Benachrichtigungen niemals anzeigen"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Benachrichtigungen anzeigen"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Benachrichtigungen niemals in der Leiste oder auf Peripheriegeräten anzeigen"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Badge anzeigen"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Benachrichtigungen falls möglich als Badges in der Home App anzeigen"</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"\"Nicht stören\" deaktivieren"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Diese Benachrichtigungen dürfen auch dann empfangen werden, wenn für den Modus \"Nicht stören\" die Option \"Nur wichtige Unterbrechungen\" ausgewählt ist."</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"Auf dem Sperrbildschirm"</string>
@@ -3226,8 +3218,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Nicht noch einmal anzeigen"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Anfrage senden als"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Konto hinzufügen"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Systeminformationen"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Einstellungen für Arbeitsprofil"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Suche nach Kontakten"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Suche nach Kontakten durch deine Organisation erlauben, um Anrufer und Kontakte zu identifizieren"</string>
@@ -3318,16 +3309,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Dein neuester Fehlerbericht"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Dein neuestes Sicherheitsprotokoll"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Nie"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Fotos und Videos"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Musik und Audio"</string>
     <string name="storage_games" msgid="7703159201697117621">"Spiele"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Weitere Apps"</string>
     <string name="storage_files" msgid="8581083146777364063">"Dateien"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Smartphone-Speicher"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> verwendet"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> kostenlos"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g> %%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 91b0dd6..3ae3026 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Δείγμα κειμένου"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Ο Θαυμάσιος Μάγος του Οζ"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Κεφάλαιο 11: Η Θαυμάσια Πόλη Έμεραλντ του Οζ"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Παρόλο που είχαν καλύψει τα μάτια τους με τα πράσινα γυαλιά, η Ντόροθι και οι φίλοι της αρχικά θαμπώθηκαν από τη λαμπρότητα της υπέροχης Πόλης. Στους δρόμους υπήρχαν σειρές με όμορφα σπίτια, όλα φτιαγμένα από πράσινο μάρμαρο και διακοσμημένα με λαμπερά σμαράγδια. Περπάτησαν σε ένα πεζοδρόμιο φτιαγμένο από το ίδιο πράσινο μάρμαρο, ενώ εκεί που ενώνονταν τα κομμάτια του πεζοδρομίου, υπήρχαν σειρές με σμαράγδια, τοποθετημένα το ένα δίπλα στο άλλο, που άστραφταν με τη φωτεινότητα του ήλιου. Τα τζάμια των παραθύρων ήταν φτιαγμένα από πράσινο γυαλί. Ακόμα και ο ουρανός πάνω από την πόλη είχε μια πράσινη απόχρωση και οι ακτίνες του ήλιου ήταν πράσινες. \n\nΠολλοί άνθρωποι, άνδρες, γυναίκες και παιδιά, περπατούσαν στους δρόμους και ήταν όλοι ντυμένοι με πράσινα ρούχα, ενώ το δέρμα τους ήταν πρασινωπό. Κοιτούσαν τη Ντόροθι και την παράξενη παρέα της με περιέργεια, ενώ όλα τα παιδιά έτρεξαν και κρύφτηκαν πίσω από τις μαμάδες τους μόλις αντίκρισαν το Λιοντάρι. Όμως, κανείς δεν τους μίλησε. Υπήρχαν πολλά καταστήματα στο δρόμο και η Ντόροθι παρατηρούσε πως όλα ήταν πράσινα στο εσωτερικό τους. Πουλούσαν πράσινα γλυκά και πράσινο ποπ κορν, καθώς και πράσινα παπούτσια, πράσινα καπέλα και πράσινα ρούχα όλων των ειδών. Σε κάποιο σημείο, ένας άνδρας πουλούσε πράσινη λεμονάδα και η Ντόροθι παρατήρησε ότι τα παιδιά την πλήρωσαν με πράσινα νομίσματα. \n\nΔεν υπήρχαν ούτε άλογα ούτε άλλα ζώα. Οι άνδρες κουβαλούσαν πράγματα σε μικρά πράσινα κάρα, τα οποία μετακινούσαν σπρώχνοντάς τα. Όλοι έμοιαζαν πολύ ευτυχισμένοι και ευκατάστατοι."</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"Αποθ. χώρος USB"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"Κάρτα SD"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Σφάλμα"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"Η ζώνη 5 GHz δεν είναι διαθέσιμη σε αυτήν τη χώρα"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"Σε λειτουργία πτήσης"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Ειδοποίηση δικτύου"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Ειδοποίηση όποτε υπάρχει διαθέσιμο δημόσιο δίκτυο"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Αποφυγή κακών συνδέσεων"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Να μην γίνεται χρήση δικτύων Wi-Fi, εκτός αν υπάρχει καλή σύνδεση στο Διαδίκτυο"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Να χρησιμοποιούνται μόνο δίκτυα με καλή διαδικτυακή σύνδεση"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Αλλαγή της προτιμώμενης θέσης εγκατάστασης για νέες εφαρμογές"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Απενεργ. ενσωματωμ. εφαρμογής;"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Απενεργοποίηση εφαρμογής"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Εάν απενεργοποιήσετε αυτήν την εφαρμογή, η λειτουργία του Android και άλλων εφαρμογών ενδέχεται να μην είναι η αναμενόμενη."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Διαγραφή δεδομένων και απενεργοποίηση εφαρμογής;"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Εάν απενεργοποιήσετε αυτήν την εφαρμογή, η λειτουργία του Android και άλλων εφαρμογών ενδέχεται να μην είναι η αναμενόμενη. Επίσης, θα διαγραφούν τα δεδομένα σας."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Απενεργοποίηση ειδοποιήσεων;"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Εάν απενεργοποιήσετε τις ειδοποιήσεις για αυτήν την εφαρμογή, ενδέχεται να χάσετε σημαντικές ειδοποιήσεις και ενημερώσεις."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Κατάστημα"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="other">Εμφάνιση %d κρυφών στοιχείων</item>
       <item quantity="one">Εμφάνιση %d κρυφού στοιχείου</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Δίκτυο και διαδίκτυο"</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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Ειδοποιήσεις"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Βαρύτητα"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Δεν έχει ρυθμιστεί"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Να μην εμφανίζονται ποτέ ειδοποιήσεις"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Χωρίς ηχητική ή οπτική διακοπή"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Εμφάνιση χωρίς ειδοποίηση"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Αναπαραγωγή ήχου"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Αναπαραγωγή ήχου και εμφάνιση στην οθόνη"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Επαναφορά"</string>
     <string name="show_silently" msgid="2222875799232222056">"Εμφάνιση χωρίς ειδοποίηση"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Να μην συνοδεύονται αυτές οι ειδοποιήσεις από ήχο, δόνηση ή προβολή σε αναδυόμενο παράθυρο κατά την προβολή τους στην τρέχουσα οθόνη."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Φόρτωση εφαρμογών…"</string>
     <string name="notification_channels" msgid="8681423709659818791">"Κανάλια"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Αποκλεισμός όλων"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Να μην εμφανίζονται ποτέ αυτές οι ειδοποιήσεις"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Εμφάνιση ειδοποιήσεων"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Να μην εμφανίζονται ποτέ ειδοποιήσεις στο πλαίσιο σκίασης ειδοποιήσεων ή σε περιφερειακές συσκευές"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Εμφάνιση σήματος"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Οι ειδοποιήσεις να εμφανίζονται ως σήματα στην εφαρμογή αρχικής οθόνης, αν αυτό υποστηρίζεται."</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>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Να μην εμφανιστεί ξανά"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Αίτημα ως"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Προσθήκη λογαριασμού"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Πληροφορίες συστήματος"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Ρυθμίσεις προφίλ εργασίας"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Αναζήτηση επαφών"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Επιτρέψτε τις αναζητήσεις επαφών από τον οργανισμό σας, για την αναγνώριση καλούντων και επαφών"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Η πιο πρόσφατη αναφορά σφάλματος που υποβάλατε"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Το πιο πρόσφατο αρχείο καταγραφής ασφαλείας"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Ποτέ"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Φωτογραφίες και βίντεο"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Μουσική και ήχος"</string>
     <string name="storage_games" msgid="7703159201697117621">"Παιχνίδια"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Άλλες εφαρμογές"</string>
     <string name="storage_files" msgid="8581083146777364063">"Αρχεία"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Αποθηκ. χώρος τηλεφώνου"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"Χρησιμοποιούνται <xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g>"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> είναι διαθέσιμα"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 77c2ae7..f54e74d 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -670,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Error"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"5 GHz band not available in this country"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"In aeroplane mode"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Network notification"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Notify whenever a public network is available"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Avoid poor connections"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Don\'t use a Wi‑Fi network unless it has a good Internet connection"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Only use networks that have a good Internet connection"</string>
@@ -3301,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Your most recent bug report"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Your most recent security log"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Never"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Photos &amp; Videos"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Music &amp; Audio"</string>
     <string name="storage_games" msgid="7703159201697117621">"Games"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Other apps"</string>
     <string name="storage_files" msgid="8581083146777364063">"Files"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Phone Storage"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> used"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> free"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 977d800..b54f714 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -670,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Error"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"5 GHz band not available in this country"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"In aeroplane mode"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Network notification"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Notify whenever a public network is available"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Avoid poor connections"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Don\'t use a Wi‑Fi network unless it has a good Internet connection"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Only use networks that have a good Internet connection"</string>
@@ -3301,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Your most recent bug report"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Your most recent security log"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Never"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Photos &amp; Videos"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Music &amp; Audio"</string>
     <string name="storage_games" msgid="7703159201697117621">"Games"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Other apps"</string>
     <string name="storage_files" msgid="8581083146777364063">"Files"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Phone Storage"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> used"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> free"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 977d800..b54f714 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -670,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Error"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"5 GHz band not available in this country"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"In aeroplane mode"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Network notification"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Notify whenever a public network is available"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Avoid poor connections"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Don\'t use a Wi‑Fi network unless it has a good Internet connection"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Only use networks that have a good Internet connection"</string>
@@ -3301,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Your most recent bug report"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Your most recent security log"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Never"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Photos &amp; Videos"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Music &amp; Audio"</string>
     <string name="storage_games" msgid="7703159201697117621">"Games"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Other apps"</string>
     <string name="storage_files" msgid="8581083146777364063">"Files"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Phone Storage"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> used"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> free"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 05fc4bb..6a55970 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Texto de muestra"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"El maravilloso mago de Oz"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Capítulo 11: La maravillosa Ciudad Esmeralda de Oz"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Aunque contaban con la protección de los lentes verdes, en un primer momento, Dorothy y sus amigos se sintieron encandilados por el brillo de la maravillosa ciudad. Las calles estaban bordeadas por hermosas casas de mármol verde y adornadas con esmeraldas brillantes. Caminaron por pavimento del mismo mármol verde y, donde se unían las calles, había filas de esmeraldas juntas que brillaban con el sol. Los vidrios de las ventanas eran verdes y hasta el cielo sobre la ciudad y los rayos del sol tenían un matiz verde. \n\nHabía muchas personas caminando: hombres, mujeres y niños, todos vestidos de verde y de piel verdosa. Miraban a Dorothy y a sus extraños acompañantes con asombro. Los niños corrían despavoridos detrás de sus madres cuando veían al León, pero nadie les hablaba. Había muchas tiendas en la calle, y Dorothy vio que todo lo que vendían era verde: caramelos verdes, palomitas de maíz verdes, zapatos verdes, sombreros verdes y ropa verde de todo tipo. En una tienda, un hombre vendía limonada verde y Dorothy observó que los niños que la compraban pagaban con monedas verdes. \n\nParecía no haber caballos ni animales de ningún tipo. Los hombres cargaban objetos en pequeñas carretas verdes que llevaban delante de ellos. Todos parecían felices, contentos y afortunados."</string>
     <string name="font_size_save" msgid="3450855718056759095">"Aceptar"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"Almacenamiento USB"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"Tarjeta SD"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Error"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"Banda de 5 GHZ no disponible en este país"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"En modo avión"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Notificación de red"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Notificarme cuando haya una red pública disponible"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Evitar malas conexiones"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"No usar una red Wi-Fi a menos que tenga una buena conexión a Internet"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Usar solo redes con una conexión a Internet estable"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Cambiar la ubicación de instalación preferida para nuevas aplicaciones"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"¿Inhabilitar aplic. incorp.?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Inhabilitar la aplicación"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Si inhabilitas esta app, es posible que Android y otras apps ya no funcionen correctamente."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"¿Deseas borrar los datos y desactivar la aplicación?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Si inhabilitas esta app, es posible que Android y otras apps ya no funcionen correctamente. Además, se borrarán tus datos."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"¿Desactivar notificaciones?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Si desactivas las notificaciones de esta aplicación, es posible que no recibas actualizaciones y alertas importantes."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Store"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="other">Mostrar %d elementos ocultos</item>
       <item quantity="one">Mostrar %d elemento oculto</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Internet y red"</string>
     <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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Notificaciones"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Importancia"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Sin establecer"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"No mostrar notificaciones"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"No emitir sonido ni mostrar"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Mostrar sin emitir sonido"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Emitir sonido"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Emitir sonido y mostrar en pantalla"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Restablecer"</string>
     <string name="show_silently" msgid="2222875799232222056">"Mostrar sin emitir sonido"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"No emitir sonido, vibrar ni mostrar estas notificaciones en la pantalla actual."</string>
@@ -2690,16 +2687,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Cargando aplicaciones…"</string>
     <string name="notification_channels" msgid="8681423709659818791">"Canales"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Bloquear todos"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"No mostrar estas notificaciones"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Mostrar notificaciones"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"No mostrar notificaciones en el panel ni en dispositivos periféricos"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Mostrar insignia"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Mostrar notificaciones como insignias en la app de Google Home, si es compatible."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"Anular No interrumpir"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Permitir que estas notificaciones sigan interrumpiendo cuando No interrumpir esté configurado como Solo prioridad"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"En la pantalla bloqueada"</string>
@@ -3222,8 +3214,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"No volver a mostrar"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Solicitando como"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Agregar cuenta"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Información del sistema"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Configuración del perfil de trabajo"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Búsqueda de contactos"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Permitir que tu organización busque contactos para identificar a emisores y contactos"</string>
@@ -3314,16 +3305,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Tu informe de errores más reciente"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Tu registro de seguridad más reciente"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Nunca"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Fotos y videos"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Música y audio"</string>
     <string name="storage_games" msgid="7703159201697117621">"Juegos"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Otras apps"</string>
     <string name="storage_files" msgid="8581083146777364063">"Archivos"</string>
-    <string name="storage_settings_2" msgid="6369810699930056554">"Almacenamiento del dispositivo"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_settings_2" msgid="6369810699930056554">"Almacenamiento del teléf."</string>
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"Espacio en uso: <xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g>"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"Espacio libre: <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index beb4795..4ba083a 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Texto de muestra"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"El maravilloso mago de Oz"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Capítulo 11: La maravillosa Ciudad Esmeralda de Oz"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Aun con los ojos protegidos por las gafas verdes, Dorothy y sus amigos quedaron deslumbrados por el brillo de aquella maravillosa ciudad. Las calles estaban formadas por preciosas casas construidas con mármol verde y todo estaba salpicado de relucientes esmeraldas. Pasearon por un camino de mármol verde cuyas baldosas se unían con hileras de esmeraldas, colocadas muy juntas y que relucían bajo la luz del sol. Las ventanas eran de cristal verde y hasta el cielo de la ciudad y los rayos del sol tenían un tono verdoso. \n\nHabía muchos hombres, mujeres y niños paseando y todos tenían la piel verdosa y vestían ropa verde. Miraban con asombro a Dorothy y a sus extraños acompañantes, y los niños corrían a esconderse detrás de sus madres cuando veían al león, pero nadie les dirigía la palabra. Había también muchas tiendas y Dorothy observó que todo lo que había en ellas era verde. Vendían caramelos y palomitas de maíz verdes y también zapatos, sombreros y todo tipo de ropa del mismo color. En una de ellas, un hombre vendía limonada y Dorothy pudo comprobar que los niños pagaban con monedas verdes. \n\nNo parecía que en aquel lugar hubiese caballos ni animales de ningún tipo, pues los hombres lo transportaban todo empujando pequeños carros de este color. Todos parecían felices, satisfechos y afortunados."</string>
     <string name="font_size_save" msgid="3450855718056759095">"Aceptar"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"Almacenamiento USB"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"Tarjeta SD"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Error"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"Banda de 5 GHz no disponible en este país"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"Modo avión"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Notificación de red disponible"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Recibir notificación si hay una red pública disponible"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Solo conexiones estables"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"No usar una red Wi-Fi a menos que tenga una buena conexión a Internet"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Solo usar redes con buena conexión a Internet"</string>
@@ -936,7 +941,7 @@
     <string name="night_display_auto_mode_title" msgid="8046314360381608455">"Activar automáticamente"</string>
     <string name="night_display_auto_mode_never" msgid="6723636142053240947">"Nunca"</string>
     <string name="night_display_auto_mode_custom" msgid="6012300346981608242">"Programación personalizada"</string>
-    <string name="night_display_auto_mode_twilight" msgid="2123345097508167094">"Amanecer/Anochecer"</string>
+    <string name="night_display_auto_mode_twilight" msgid="2123345097508167094">"Amanecer / Anochecer"</string>
     <string name="night_display_start_time_title" msgid="8918016772613689584">"Hora de inicio"</string>
     <string name="night_display_end_time_title" msgid="8286061578083519350">"Hora de finalización"</string>
     <string name="night_display_summary_off" msgid="7009821232380000786">"No. <xliff:g id="ID_1">%1$s</xliff:g>"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Modificar la ubicación de instalación preferida para nuevas aplicaciones"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"¿Inhabilitar aplicación integrada?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Inhabilitar aplicación"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Si inhabilitas esta aplicación, es posible que Android y otras aplicaciones no funcionen correctamente."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"¿Quieres eliminar los datos e inhabilitar la aplicación?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Si inhabilitas esta aplicación, es posible que Android y otras aplicaciones no funcionen correctamente. Tus datos también se eliminarán."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"¿Desactivar notificaciones?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Si desactivas las notificaciones de esta aplicación, es posible que no recibas actualizaciones y alertas importantes."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Tienda"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="other">Mostrar %d elementos ocultos</item>
       <item quantity="one">Mostrar %d elemento oculto</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Redes e Internet"</string>
     <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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Notificaciones"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Importancia"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Sin definir"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"No mostrar notificaciones nunca"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Sin sonido ni interrupción visual"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Mostrar de forma silenciosa"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Emitir sonido"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Emitir sonido y mostrar en pantalla"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Restablecer"</string>
     <string name="show_silently" msgid="2222875799232222056">"Mostrar de forma silenciosa"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"No emitir sonido, vibrar ni mostrar notificaciones en la pantalla actual."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Cargando aplicaciones..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Canales"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Bloquear todo"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"No mostrar nunca estas notificaciones"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Mostrar notificaciones"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"No mostrar nunca notificaciones en el panel de notificaciones ni en dispositivos periféricos"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Mostrar insignia"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Mostrar notificaciones como insignias en la aplicación Home (si es compatible)"</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"Priorizar"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"No bloquear notificaciones cuando la opción No molestar esté establecida en Solo prioritarias"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"En la pantalla de bloqueo"</string>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"No volver a mostrar"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Solicitando como"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Añadir cuenta"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Información del sistema"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Ajustes de perfil de trabajo"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Búsqueda de contactos"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Permitir que tu organización busque contactos para identificar llamadas y contactos"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Tu informe de errores más reciente"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Tu registro de seguridad más reciente"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Nunca"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Fotos y vídeos"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Música y audio"</string>
     <string name="storage_games" msgid="7703159201697117621">"Juegos"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Otras aplicaciones"</string>
     <string name="storage_files" msgid="8581083146777364063">"Archivos"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Almacenamiento teléfono"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"Espacio utilizado: <xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g>"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"Espacio disponible: <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index c76a4f2..39d8a29 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Näidistekst"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Võlur Oz"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"11. peatükk: Ozi imeline smaragdlinn"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Kuigi rohelised prillid olid silmade kaitseks ninale asetatud, olid Dorothy ja tema sõbrad esialgu selle imelise linna särast pimestatud. Tänavaid ääristasid ilusad rohelisest marmorist majad, mida kaunistasid säravad smaragdid. Tänavakivid olid samuti rohelisest marmorist ja nende vahel särasid päikesevalguses tihedad smaragdiread. Aknad olid rohelisest klaasist ja isegi taevas linna kohal oli rohekas. Pilvede vahelt piilusid rohelised päikesekiired. \n\nInimesi oli palju – mehed, naised ja lapsed olid kõik rõivastatud rohelisse ning ka nende nahal oli rohekas jume. Nad vaatasid uudistavalt Dorothyt ja tema kummalisi kaaslasi ning lõvi nähes jooksid lapsed oma emade selja taha peitu. Kuid keegi ei rääkinud nendega. Tänaval oli palju poode ja Dorothy märkas, et kõik seal oli roheline. Müügil olid rohelised kommid ja popkorn, rohelised kingad, mütsid ning mitmesugused rõivad. Ühes poekeses müüs kaupmees rohelist limonaadi ja lapsed tasusid selle eest roheliste pennidega. \n\nHobuseid ega muid loomi ei paistnud kusagil. Mehed vedasid asju väikestes rohelistes korvides, mida nad enda ees lükkasid. Kõik näisid rõõmsad, rahulolevad ja jõukad."</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB-mäluseade"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD-kaart"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Viga"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"5 GHz riba pole selles riigis saadaval"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"Lennurežiimis"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Võrguteatis"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Teavita, kui avalik võrk on saadaval"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Väldi halbu ühendusi"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Ära kasuta WiFi-võrku, kui selle Interneti-ühendus on halb"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Kasuta ainult võrke, millel on hea Interneti-ühendus"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Muutke uute rakenduste eelistatud installiasukohta"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Kas keelata sisseeh. rakendus?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Keela rakendus"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Rakenduse keelamisel ei pruugi Android ja muud rakendused enam ootuspäraselt töötada."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Kas kustutada andmed ja keelata rakendus?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Rakenduse keelamisel ei pruugi Android ja muud rakendused enam ootuspäraselt töötada. Ka teie andmed kustutatakse."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Kas lülitada teatised välja?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Kui lülitate selle rakenduse teatised välja, võivad olulised märguanded ja värskendused märkamata jääda."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Pood"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="other">Kuva %d peidetud üksust</item>
       <item quantity="one">Kuva %d peidetud üksus</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Võrk ja Internet"</string>
     <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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Märguanded"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Tähtsus"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Määramata"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Ära kunagi kuva märguandeid"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Heli ja visuaalne katkestus puudub"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Kuva vaikselt"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Esita heli"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Esita heli ja tõsta märguanne esile"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Lähtesta"</string>
     <string name="show_silently" msgid="2222875799232222056">"Kuva vaikselt"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Ära tee heli, vibreeri ega kuva neid märguandeid praeguse ekraani servas."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Rakenduste laadimine ..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Kanalid"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Blokeeri kõik"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Ära kunagi näita neid märguandeid"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Kuva märguanded"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Ära kuva märguandeid kunagi märguandealal ega välisseadmetes"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Kuva märk"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Kuva märguanded rakenduses Home märkidena, kui seda toetatakse."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"Funktsiooni Mitte segada alistamine"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Lubage nendel märguannetel teid jätkuvalt katkestada, kui funktsioon Mitte segada on määratud valikule Ainult prioriteetsed"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"Lukustuskuval"</string>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Ära kuva enam"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Taotlemine kasutajana"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Konto lisamine"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Süsteemiteave"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Tööprofiili seaded"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Kontaktiotsing"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Lubage organisatsioonile helistajate ja kontaktide tuvastamiseks kontaktiotsingud"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Teie kõige viimane veaaruanne"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Teie hiljutine turvalogi"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Mitte kunagi"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Fotod ja videod"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Muusika ja heli"</string>
     <string name="storage_games" msgid="7703159201697117621">"Mängud"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Muud rakendused"</string>
     <string name="storage_files" msgid="8581083146777364063">"Failid"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Telefoni salvestusruum"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> on kasutatud"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> on tasuta"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 95a23a5..0be078a 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Testu-lagina"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Ozeko azti miragarria"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"11. kapitulua: Esmeraldazko Oz hiri harrigarria"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Begiak betaurreko berdeekin babestuta bazituzten ere, Dorothy eta bere lagunak hasieran txundituta geratu ziren Hiri zoragarri haren distirarekin. Kaleak etxe ederrez josita zeuden, marmol berdezkoak eta esmeralda distiratsuz apaindutakoak. Marmol berde hartaz egindako espaloian ibili ziren, eta lauzak elkartzen zituzten ertzak esmeraldazko errenkadak zirela nabaritu zuten, bata bestearen ondoan estu-estu jarriak, eguzkitan dir-dir. Leihoen kristalak berdeak ziren. Hiria estaltzen zuen zeruak kutsu berdea zuen, eta berdeak ziren eguzki-izpiak ere. \n\nJende asko zebilen hara eta hona: gizonak, emakumeak eta haurrak, guztiak berdez jantziak eta azal berdexkakoak. Zalantzaz begiratzen zieten Dorothyri eta bere lagun talde xelebreari, eta haurrak amaren atzean ezkutatzen ziren lehoia ikusi bezain laster. Hala ere, inork ez zien txintik ere esan. Denda asko zeuden kalean, eta salgai guztiak berdeak zirela antzeman zuen Dorothyk. Gozoki berdeak eta krispeta berdeak eros zitezkeen, baita zapata berdeak, kapela berdeak eta askotariko jantzi berdeak ere. Gizon bat limonada berdea saltzen ari zen, eta haur batzuek erosi ziotenean, txanpon berdeekin ordaindu zutela ikusi zuen Dorothyk. \n\nEz zegoen zaldirik edo inolako animaliarik; gizonek orgatxo berdeak bultzatuta eramaten zituzten gauzak batetik bestera. Denak zeuden pozik, alai eta zoriontsu."</string>
     <string name="font_size_save" msgid="3450855718056759095">"Ados"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB memoria"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD txartela"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Errorea"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"5 GHz-ko banda ez dago erabilgarri herrialde honetan"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"Hegaldi moduan"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Sare erabilgarrien jakinarazpenak"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Jakinarazi sare publiko bat erabilgarri dagoenean"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Saihestu konexio ahulak"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Ez erabili Wi-Fi sareak ez badute Interneteko konexio onik"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Erabili Interneteko konexio ona duten sareak soilik"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Aldatu aplikazio berrien instalazio-kokapen hobetsia"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Aplikazio integratua desgaitu?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Desgaitu aplikazioa"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Aplikazioa desgaitzen baduzu, baliteke Android-ek eta beste aplikazio batzuek behar bezala ez funtzionatzea."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Datuak ezabatu eta aplikazioa desgaitu?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Aplikazioa desgaitzen baduzu, baliteke Android-ek beste aplikazio batzuek behar bezala ez funtzionatzea. Datuak ezabatu egingo dira."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Jakinarazpenak desaktibatu nahi dituzu?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Aplikazioaren jakinarazpenak desaktibatzen badituzu, alerta eta eguneratze garrantzitsuak gal ditzakezu."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Denda"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="other">Erakutsi %d elementu ezkutu</item>
       <item quantity="one">Erakutsi %d elementu ezkutu</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Jakinarazpenak"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Garrantzia"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Ezarri gabe"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Ez erakutsi jakinarazpenik inoiz"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Ez egin soinurik eta ez erakutsi"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Erakutsi soinurik egin gabe"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Egin soinua"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Egin soinua eta erakutsi pantailan"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Berrezarri"</string>
     <string name="show_silently" msgid="2222875799232222056">"Erakutsi soinurik egin gabe"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Ez egin soinurik edo dardararik eta ez agerrarazi jakinarazpenak uneko pantailan"</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Aplikazioak kargatzen…"</string>
     <string name="notification_channels" msgid="8681423709659818791">"Kanalak"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Blokeatu guztiak"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Ez erakutsi jakinarazpen hauek inoiz"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Erakutsi jakinarazpenak"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Ez erakutsi inoiz jakinarazpenak edo ilundutako eremuetan edo gailu osagarrietan"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Erakutsi bereizgarria"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Hasierako pantailan, erakutsi jakinarazpenak bereizgarri gisa, aukera hori onartzen bada."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"\"Ez molestatu\" moduaren salbuespenak"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Baimendu jakinarazpenek jarduera etenaraztea \"Ez molestatu\" aukera Lehentasunezkoak soilik gisa ezarrita dagoenean"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"Pantaila blokeatuan"</string>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Ez erakutsi berriro"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Kontu honen izenean egin da eskaera:"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Gehitu kontua"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Sistemari buruzko informazioa"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Laneko profilaren ezarpenak"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Kontaktu-bilaketak"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Onartu erakundeko kontaktu-bilaketek deitzaileak eta kontaktuak identifikatzea"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Azken akatsen txostena"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Azken segurtasun-erregistroa"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Inoiz ez"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Argazkiak eta bideoak"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Musika eta audioa"</string>
     <string name="storage_games" msgid="7703159201697117621">"Jokoak"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Beste aplikazio batzuk"</string>
     <string name="storage_files" msgid="8581083146777364063">"Fitxategiak"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Telefonoko memoria"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> erabilita"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> libre"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"%% <xliff:g id="PERCENT">%1$s</xliff:g>"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index b48f38f..f6e6347 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"نوشتار نمونه"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"جادوگر شهر اوز"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"فصل ۱۱: شهر زمردی شگفت‌انگیز اوز"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"با وجودی که دورتی و دوستانش عینک‌هایی سبز به چشم داشتند چشمانشان در اولین نگاه از درخشندگی این شهر فوق‌العاده خیره شد. خیابان‌ها با ردیف خانه‌هایی که همه از مرمر سبز ساخته شده بودند و در همه جای آن با زمردهای درخشنده تزئین شده بود می‌درخشید. آنها در پیاده‌رویی از همان مرمر سبز راه می‌رفتند و سنگفرش‌های پیاده‌رو با ردیف‌های زمردی که نزدیک به هم قرار گرفته بودند و در نور خورشید می‌درخشیدند به هم پیوسته بود. قاب‌های پنجره‌ها از شیشه سبز بود؛ حتی آسمان بالای شهر رنگ‌مایه سبز داشت و اشعه خورشید سبزرنگ بود. \n\nمردم زیادی از مرد و زن و بچه در اطراف راه می‌رفتند که همه لباس‌های سبزی پوشیده بودند و پوست بدنشان ته رنگ سبزی داشت. آنها به دوروتی و دوستان عجیبش با تعجب نگاه می‌کردند. بچه‌ها به‌محض دیدن شیر همه فرار کردند و پشت سر مادرانشان پنهان شدند؛ اما هیچ‌کس با آنها صحبت نکرد. تعداد زیادی مغازه در خیابان بود و دوروتی متوجه شد که همه‌چیز در این مغازه‌ها به رنگ سبز است. آبنبات سبز و پف فیل سبز برای فروش گذاشته شده بود، همین‌طور همه مدل کفش، کلاه و لباس که همه به رنگ سبز بودند. در جایی مردی لیموناد سبز می‌فروخت و وقتی بچه‌ها از او خرید می‌کردند دوروتی دید که پول آن را با سکه‌هایی سبزرنگ پرداختند. \n\nبه‌نظر می‌رسید که اسب یا حیوان دیگری در آنجا نیست؛ مردها چیزها را با گاری‌های کوچک سبزی به این طرف و آن طرف حمل می‌کردند و گاری را در جلوشان هل می‌دادند. به‌نظر می‌رسید همه شاد و راضی و مرفه بودند."</string>
     <string name="font_size_save" msgid="3450855718056759095">"تأیید"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"‏حافظهٔ USB"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"‏کارت SD"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"خطا"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"باند ۵ گیگاهرتزی در این کشور در دسترس نیست"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"در حالت هواپیما"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"اعلان شبکه"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"زمانی که یک شبکه عمومی در دسترس است، اطلاع داده شود"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"اجتناب از اتصالات ضعیف"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"‏از شبکه Wi-Fi استفاده نکنید، مگر آنکه اتصال اینترنتی مناسب باشد"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"فقط از شبکه‌هایی استفاده می‌شود که اتصال اینترنتی خوبی دارند"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"تغییر مکان نصب دلخواه برای برنامه‌های جدید"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"برنامه داخلی غیرفعال شود؟"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"غیرفعال کردن برنامه"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"‏اگر این برنامه را غیرفعال کنید، ممکن است Android و سایر برنامه‌ها دیگر عملکرد موردانتظار را نداشته باشند."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"حذف داده‌ها و غیرفعال کردن برنامه؟"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"‏اگر این برنامه را غیرفعال کنید، ممکن است Android و سایر برنامه‌ها دیگر عملکرد موردانتظار را نداشته باشند. داده‌هایتان نیز حذف می‌شود."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"خاموش کردن اعلان‌ها؟"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"اگر اعلانی را برای این برنامه خاموش کنید، ممکن است هشدارها و به‌روزرسانی‌های مهم را از دست بدهید."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"فروشگاه"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="one">‏نمایش %d مورد پنهان</item>
       <item quantity="other">‏نمایش %d مورد پنهان</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"شبکه و اینترنت"</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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"اعلان‌ها"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"اهمیت"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"تنظیم نشده"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"هرگز اعلان‌ها نمایش داده نشوند"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"بدون وقفه صوتی و تصویری"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"نمایش به‌صورت بی‌صدا"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"پخش صدا"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"پخش صدا و صفحه بازشو"</string>
     <string name="importance_reset" msgid="7458420788555607007">"بازنشانی"</string>
     <string name="show_silently" msgid="2222875799232222056">"نمایش به‌صورت بی‌صدا"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"بدون صدا و لرزش یا نمایش این اعلان‌ها در صفحه‌نمایش کنونی."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"در حال بارگیری برنامه..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"کانال‌ها"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"مسدود کردن همه"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"هرگز این اعلان‌ها نشان داده نشوند"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"نمایش اعلان‌ها"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"هرگز اعلان‌ها در کشوی اعلانات یا در دستگاه‌های جانبی نشان داده نشوند"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"نمایش نشان"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"نمایش اعلان‌ها به‌صورت نشان در برنامه «اصلی»، درصورتی که پشتیبانی شود."</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>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"دیگر نشان داده نشود"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"درخواست به‌عنوان"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"افزودن حساب"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"اطلاعات سیستم"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"تنظیمات نمایه کاری"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"جستجوی مخاطب"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"جستجوهای مخاطب توسط سازمانتان برای شناسایی تماس‌گیرندگان و مخاطبین مجاز است"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"جدیدترین گزارش اشکال شما"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"جدیدترین گزارش امنیت شما"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"هرگز"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"عکس و ویدیو"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"موسیقی و صوتی"</string>
     <string name="storage_games" msgid="7703159201697117621">"بازی‌ها"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"سایر برنامه‌ها"</string>
     <string name="storage_files" msgid="8581083146777364063">"فایل‌ها"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"فضای ذخیره‌سازی تلفن"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> استفاده‌شده"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> آزاد"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>٪٪"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 0043196..1388cec 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Esimerkkiteksti"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Ihmemaa Oz"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Luku 11: Ozin ihastuttava smaragdikaupunki"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Vihreistä silmälaseista huolimatta kaupungin loiste sokaisi aluksi Dorothyn ja ystävät. Teiden varsilla oli kauniita, vihreästä marmorista rakennettuja ja smaragdein koristeltuja taloja. Jalkakäytävä heidän jalkojensa alla oli samaa vihreää marmoria. Laattojen välissä oli tiiviissä riveissä smaragdeja, jotka kimmelsivät auringonpaisteessa. Ikkunaruudut olivat vihreää lasia, kaupungin yllä kaartuva taivas vihersi ja jopa auringon säteet olivat vihreitä.\n\nKaduilla käveli vihreään pukeutuneita ihmisiä, joiden iho oli vihreänsävyinen. He katsoivat Dorothya ja hänen seuralaisiaan hämmästellen. Leijonan nähdessään lapset piiloutuivat äitinsä taakse, mutta kukaan ei sanonut muukalaisille mitään. Kadun varrella oli monia kauppoja, joiden ikkunoissa Dorothy näki pelkästään vihreitä tuotteita. Myytävänä oli vihreitä makeisia, popkornia, kenkiä, hattuja ja kaikenlaisia vaatteita. Yhdessä liikkeessä myytiin vihreää limonadia. Dorothy huomasi, että lapset ostivat limonadia vihreillä penneillä.\n\nKaupungissa ei näkynyt hevosia tai muita eläimiä: tavaroita kuljetettiin pienillä vihreillä työnnettävillä kärryillä. Kaikki ihmiset vaikuttivat onnellisilta ja vaurailta."</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB-tallennustila"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD-kortti"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Virhe"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"5 GHz:n kaista ei ole käytettävissä tässä maassa."</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"Lentokonetilassa"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Verkkoilmoitus"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Ilmoita käytettävissä olevista julkisista verkoista"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Vältä huonoja yhteyksiä"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Älä käytä Wi-Fi-verkkoa, jos sillä on huono internetyhteys"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Käytä vain verkkoja, joiden yhteyslaatu on hyvä"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Vaihda uusien sovelluksien ensisijaista asennussijaintia."</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Poista sis. sovellus käytöstä?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Poista sovellus käytöstä"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Jos poistat sovelluksen käytöstä, Android ja muut sovellukset eivät välttämättä enää toimi oikein."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Poistetaanko tiedot ja poistetaanko sovellus käytöstä?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Jos poistat sovelluksen käytöstä, Android ja muut sovellukset eivät välttämättä enää toimi oikein. Lisäksi tietosi poistetaan."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Poista ilmoitukset käytöstä?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Jos poistat tämän sovelluksen ilmoitukset käytöstä, et välttämättä näe tärkeitä ilmoituksia ja päivityksiä."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Kauppa"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="other">Näytä %d piilotettua kohdetta</item>
       <item quantity="one">Näytä %d piilotettu kohde</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Verkko ja internet"</string>
     <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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Ilmoitukset"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Tärkeys"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Ei määritetty"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Älä näytä ilmoituksia"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Ei ääntä tai näkyvää ilmoitusta"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Näkyy ilman ääntä"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Ääni"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Ääni, ilmoitus näkyy näytöllä"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Nollaa"</string>
     <string name="show_silently" msgid="2222875799232222056">"Näytä ilman ääntä"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Ilmoitus ei tule aktiiviselle näytölle eikä salli ääniä tai värinää."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Ladataan sovelluksia…"</string>
     <string name="notification_channels" msgid="8681423709659818791">"Kanavat"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Estä kaikki"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Älä koskaan näytä näitä ilmoituksia"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Näytä ilmoitukset"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Älä näytä ilmoituksia ilmoitusalueella tai lisälaitteissa"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Näytä merkki"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Näytä ilmoitukset merkkeinä Home-sovelluksessa, jos tätä tuetaan."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"Ohita Älä häiritse -asetus"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Salli ilmoituksien näyttö, vaikka Älä häiritse -asetus on Vain tärkeät."</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"Lukitusnäytöllä"</string>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Älä näytä uudelleen"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Pyytäjä"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Lisää tili"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Järjestelmätiedot"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Työprofiilin asetukset"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Yhteystietohaku"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Salli organisaatiosi yhteystietohakujen tunnistaa soittajia ja yhteystietoja."</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Viimeisin vikailmoituksesi"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Viimeisin tietoturvaloki"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Ei koskaan"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Kuvat ja videot"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Musiikki ja audio"</string>
     <string name="storage_games" msgid="7703159201697117621">"Pelit"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Muut sovellukset"</string>
     <string name="storage_files" msgid="8581083146777364063">"Tiedostot"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Puhelimen tallennustila"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> käytössä"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> vapaana"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g> %%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 6d25fc1..165d9b0 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -670,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Erreur"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"La bande de 5 GHz n\'est pas disponible dans ce pays"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"En mode Avion"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Notification de réseau"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Me notifier lorsqu\'un réseau public est disponible"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Éviter les connexions instables"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Ne pas utiliser de réseau Wi-Fi, sauf en cas de connexion Internet de bonne qualité"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"N\'utiliser que réseaux dotés d\'une connexion Internet stable"</string>
@@ -3301,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Votre rapport de bogue le plus récent"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Votre journal de sécurité le plus récent"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Jamais"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Photos et vidéos"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Musique et audio"</string>
     <string name="storage_games" msgid="7703159201697117621">"Jeux"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Autres applications"</string>
     <string name="storage_files" msgid="8581083146777364063">"Fichiers"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Stockage du téléphone"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"Espace utilisé : <xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g>"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"Espace libre : <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
+    <!-- format error in translation for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 526e21d..37ff883 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Exemple de texte"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Le Magicien d\'Oz"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Chapitre 11 : La merveilleuse cité d\'émeraude"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Malgré leurs lunettes vertes, Dorothée et ses amis, au début, furent éblouis par l\'éclat de la Cité merveilleuse. Les rues étaient bordées de maisons splendides, toutes de marbre vert et incrustées d\'émeraudes étincelantes. Ils marchaient sur une chaussée du même marbre, et la jointure des dalles était sertie de rangs serrés d\'émeraudes qui resplendissaient au soleil. Les carreaux aux fenêtres étaient verts, le ciel au-dessus de la Cité avait une teinte verte, et le soleil lui-même lançait des rayons verts. \n\nBeaucoup de gens déambulaient dans les rues, hommes, femmes et enfants ; tous étaient vêtus de vert et avaient le teint verdâtre. Étonnés, ils dévisageaient Dorothée et son étrange escorte, les enfants couraient se cacher derrière leurs mères à la vue du Lion ; mais personne ne leur adressait la parole. Il y avait de nombreuses boutiques et Dorothée remarqua que tout y était vert à l\'intérieur. Tout ce qu\'on y vendait était vert : le sucre candi et le pop-corn, les souliers, les chapeaux et les habits. Dans une boutique, un homme vendait de la limonade verte et Dorothée vit que les enfants payaient avec des sous verts. \n\nIl semblait n\'y avoir ni chevaux, ni animaux d\'aucune espèce ; les hommes transportaient diverses choses dans de petites charrettes vertes qu\'ils poussaient devant eux. Tout le monde avait un air heureux et satisfait, et chacun respirait la prospérité."</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"Mémoire de stockage USB"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"Carte SD"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Erreur"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"Bande 5 GHz non disponible dans ce pays."</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"En mode Avion"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Notification de réseau"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Me notifier lorsqu\'un réseau public est disponible"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Éviter les connexions instables"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Ne pas utiliser de réseau Wi-Fi, sauf en cas de connexion Internet de bonne qualité"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"N\'utiliser que réseaux dotés d\'une connexion Internet stable"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Modifier l\'emplacement d\'installation par défaut pour les nouvelles applications"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Désactiver l\'appli intégrée ?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Désactiver l\'application"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Si vous désactivez cette application, il est possible qu\'Android et d\'autres applications ne fonctionnent plus comme prévu."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Supprimer les données et désactiver l\'application ?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Si vous désactivez cette application, il est possible qu\'Android et d\'autres applications ne fonctionnent plus comme prévu. Vos données seront également supprimées."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Désactiver les notifications ?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Si vous désactivez les notifications de cette application, vous risquez de manquer des alertes et des mises à jour importantes."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Boutique"</string>
@@ -2527,8 +2530,7 @@
       <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 (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Notifications"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Importance"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Non défini"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Ne jamais afficher les notifications"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Aucune interruption sonore ni visuelle"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Affichage silencieux"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Alerte sonore"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Alerte sonore et affichage à l\'écran"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Réinitialiser"</string>
     <string name="show_silently" msgid="2222875799232222056">"Affichage silencieux"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Ne pas émettre de son, activer le vibreur ni afficher ces notifications sur l\'écran actif."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Chargement des applications en cours…"</string>
     <string name="notification_channels" msgid="8681423709659818791">"Chaînes"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Tout bloquer"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Ne jamais afficher ces notifications"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Afficher les notifications"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Ne jamais afficher les notifications dans le volet ou sur les périphériques"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Afficher un badge"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Afficher les notifications sous forme de badges dans l\'application Google Home (si disponible)."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"Ignorer l\'option \"Ne pas déranger\""</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Autoriser les interruptions par ces notifications lorsque l\'option \"Ne pas déranger\" est définie sur \"Prioritaires uniquement\""</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"Sur l\'écran de verrouillage"</string>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Ne plus afficher"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Demande envoyée depuis le compte"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Ajouter un compte"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Informations système"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Paramètres du profil professionnel"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Recherche de contacts"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Autoriser les recherches de contacts dans votre organisation à identifier les appelants et les contacts"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Votre dernier rapport de bug"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Votre dernier journal de sécurité"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Jamais"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Photos et vidéos"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Musique et audio"</string>
     <string name="storage_games" msgid="7703159201697117621">"Jeux"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Autres applications"</string>
     <string name="storage_files" msgid="8581083146777364063">"Fichiers"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Espace stockage téléphone"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"Espace utilisé : <xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g>"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"Espace libre : <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g> %%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 96a80a3..71fda29 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Texto de mostra"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"O marabilloso mago de Oz"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Capítulo 11: A marabillosa Cidade Esmeralda de Oz"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Ao principio, aínda cos ollos protexidos polas lentes verdes, Dorothy e os seus amigos quedaron cegados polo brillo daquela marabillosa cidade. As rúas estaban formadas por preciosas casas construídas con mármore verde e todo estaba salpicado de relucentes esmeraldas. Pasearon por un camiño de mármore verde cuxas placas se unían con fileiras de esmeraldas, colocadas moi xuntas e que relucían baixo a luz do sol. As ventás tiñan cristal verde e ata o ceo e os raios do sol tiraban a verde. \n\nHabía moitos homes, mulleres e nenos paseando e todos tiñan a pel verdosa e vestían roupa verde. Miraban con asombro a Dorothy e os seus estraños acompañantes, e os nenos corrían a esconderse detrás das súas nais cando vían o león, pero ninguén lles dirixía a palabra. Había tamén moitas tendas e Dorothy observou que todo o que había nelas era verde. Vendían caramelos e flocos de millo verdes, así como zapatos, chapeus e todo tipo de roupa da mesma cor. Nunha delas, un home vendía limoada verde e Dorothy puido comprobar que os nenos pagaban con moedas verdes. \n\nNon parecía que naquel lugar houbese cabalos nin animais de ningún tipo, pois os homes transportábano todo tirando de pequenos carros desta cor. Todos parecían felices, satisfeitos e afortunados."</string>
     <string name="font_size_save" msgid="3450855718056759095">"Aceptar"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"Almacenamento USB"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"Tarxeta SD"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Erro"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"A banda de 5 GHz non está dispoñible neste país"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"No modo avión"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Notificación de rede"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Notifica se unha rede pública está dispoñible"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Evitar conexións deficientes"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Non utilizar unha rede wifi se non ten unha boa conexión a Internet"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Usa só redes que teñan unha boa conexión a Internet"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Cambia a localización de instalación preferida para as aplicacións novas"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Desactivar app integrada?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Desactivar aplicación"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Se desactivas esta aplicación, é posible que Android e outras aplicacións deixen de funcionar segundo o previsto."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Queres borrar datos e desactivar a aplicación?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Se desactivas esta aplicación, é posible que Android e outras aplicacións deixen de funcionar segundo o previsto. Tamén se eliminarán os teus datos."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Desactivar as notificacións?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Se desactivas as notificacións desta aplicación, é posible que perdas alertas e actualizacións importantes."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Tenda"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="other">Mostrar %d elementos ocultos</item>
       <item quantity="one">Mostrar %d elemento oculto</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Rede e Internet"</string>
     <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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Notificacións"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Importancia"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Sen especificar"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Non mostra nunca as notificacións"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Nin son nin interrupción visual"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Mostrar en silencio"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Emitir son"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Emitir son e aparecer na pantalla"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Restablecer"</string>
     <string name="show_silently" msgid="2222875799232222056">"Mostrar en silencio"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Non emitir son, vibrar nin mostrar estas notificacións na pantalla actual."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Cargando aplicacións..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Canles"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Bloquear todo"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Non mostrar nunca estas notificacións"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Mostrar notificacións"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Non mostra nunca as notificacións no menú despregable da parte superior da pantalla nin en dispositivos periféricos"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Mostrar insignia"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Mostra as notificacións como insignias na aplicación de Inicio, se é compatible."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"Anular opción Non molestar"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Permitir que estas notificacións sigan interrompendo cando a opción Non molestar estea configurada como Só prioridade"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"Na pantalla de bloqueo"</string>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Non mostrar de novo"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Solicitando como"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Engadir conta"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Información do sistema"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Configuración do perfil de traballo"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Busca de contactos"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Permite buscas de contactos por parte da túa organización para identificar os emisores das chamadas e os contactos"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"O teu informe de erros máis recente"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"O teu rexistro de seguranza máis recente"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Nunca"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Fotos e vídeos"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Música e audio"</string>
     <string name="storage_games" msgid="7703159201697117621">"Xogos"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Outras aplicacións"</string>
     <string name="storage_files" msgid="8581083146777364063">"Ficheiros"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Almacenamento do teléfono"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"Espazo utilizado: <xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g>"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> gratis"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g> %%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index 2542b1f..56c2fc8 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"નમૂના ટેક્સ્ટ"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"ઓઝીનું અદ્ભુત જાદુ"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"અધ્યાય 11: ઓઝીનું નીલમનું અદ્ભુત શહેર"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"લીલા રંગના ચશ્મા પહેરેલ હોવા છતાં પણ ડોરોથી અને તેના મિત્રો આ અદ્ભુત શહેરના ભપકાદાર દેખાવથી આશ્ચર્યચકિત થઈ ગયાં હતાં. લીલા રંગના માર્બલથી બનેલ સુંદર ઘર શેરીમાં એક હરોળમાં ઉભા હતાં અને તે ચમકતાં નીલમથી જડિત હતાં. તેઓ એ જ લીલા માર્બલ પર ચાલવા લાગ્યાં, જ્યાં પાસે-પાસે રાખેલા બ્લૉક્સ એકબીજાથી જોડાઈ રહ્યાં હતાં અને તે નીલમની હરોળ હતી અને તે સૂરજની ચમકમાં ચમકી રહ્યાં હતાં. બારીઓના કાંચ લીલા રંગના હતાં; શહેરના ઉપરના આકાશની રંગછટા પણ લીલી હતી અને સૂર્યની કિરણો પણ લીલા રંગની હતી. \n\nત્યાં ઘણા લોકો, પુરુષો, સ્ત્રીઓ અને બાળકો ચાલી રહ્યાં હતાં અને આ બધાએ લીલા રંગના કપડાં પહેરેલા હતાં અને તેમની ત્વચા પણ લીલા રંગની હતી. તેઓએ ડોરોથી અને તેના વિચિત્ર  મિત્રોની તરફ વિસ્મય પામેલ નજરોથી જોયું અને જ્યારે બાળકોએ સિંહને જોયો તો તે બધા ત્યાંથી ભાગી ગયાં અને તેમની માતાની પાછળ જઈને સંતાઈ ગયાં; પણ કોઈએ તેનાથી વાત ન કરી. શેરીમાં કેટલીક દુકાનો હતી અને ડોરોથી એ જોયું કે ત્યાં બધું જ લીલા રંગનું હતું. લીલી કૅન્ડી અને લીલા પૉપ-કોર્ન વેચાઈ રહ્યાં હતાં, તેમજ લીલા જૂતાં, લીલી ટોપીઓ અને બધી જાતના લીલી કપડાં. એક જગ્યાએ એક માણસ લીલા રંગનું શરબત વેચી રહ્યો હતો અને જ્યારે બાળકોએ તેને ખરીદ્યું ત્યારે ડોરોથી એ જોયું કે તેઓએ તેના માટે લીલા રંગના સિક્કા આપ્યાં. \n\nત્યાં કોઈપણ ઘોડા કે કોઈપણ પ્રકારના પ્રાણી ન હતાં; માણસો તેમની સામે નાના લીલા ગાડામાં સામાન અહીંથી ત્યાં લઈ જઈ રહ્યાં હતાં. પ્રત્યેક જણ ખુશ, સંતુષ્ટ અને સમૃદ્ધ લાગી રહ્યાં હતાં."</string>
     <string name="font_size_save" msgid="3450855718056759095">"ઓકે"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB સંગ્રહ"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD કાર્ડ"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"ભૂલ"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"આ દેશમાં 5 GHz બેન્ડ ઉપલબ્ધ નથી"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"એરપ્લેન મોડમાં"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"નેટવર્ક સૂચના"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"જ્યારે પણ જાહેર નેટવર્ક ઉપલબ્ધ હોય ત્યારે સૂચિત કરો"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"નબળા જોડાણો ટાળો"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"જ્યાં સુધી સારું ઇન્ટરનેટ કનેક્શન ન ધરાવતું હોય ત્યાં સુધી Wi‑Fi નેટવર્કનો ઉપયોગ કરશો નહીં"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"ફક્ત સારું ઇન્ટરનેટ કનેક્શન ધરાવતા નેટવર્ક્સનો જ ઉપયોગ કરો"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"નવી એપ્લિકેશન્શ માટે પસંદગીનું ઇન્સ્ટોલેશન સ્થાન બદલો"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"બિલ્ટ-ઇન ઍપ્લિકેશન અક્ષમ કરીએ?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"ઍપ્લિકેશન અક્ષમ કરો"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"જો તમે આ ઍપ્લિકેશન અક્ષમ કરો છો, તો Android અને અન્ય ઍપ્લિકેશનો અપેક્ષા પ્રમાણે કાર્ય કરી શકશે નહીં."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"ડેટાને કાઢી નાખી અને એપ્લિકેશનને અક્ષમ કરીએ?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"જો તમે આ ઍપ્લિકેશન અક્ષમ કરો છો, તો Android અને અન્ય ઍપ્લિકેશનો અપેક્ષા પ્રમાણે કાર્ય કરી શકશે નહીં. તમારો ડેટા પણ કાઢી નાખવામાં આવશે."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"સૂચનાઓ બંધ કરીએ?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"જો તમે આ ઍપ્લિકેશન માટે સૂચનાઓ બંધ કરો, તો મહત્વપૂર્ણ ચેતવણીઓ અને અપડેટ્સ ચૂકી શકો છો."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"દુકાન"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="one">%d છુપાયેલ આઇટમ બતાવો</item>
       <item quantity="other">%d છુપાયેલ આઇટમ બતાવો</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"નેટવર્ક અને ઇન્ટરનેટ"</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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"સૂચનાઓ"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"મહત્વ"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"સેટ નથી"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"સૂચનાઓ ક્યારેય બતાવશો નહીં"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"કોઈ અવાજ અથવા વિઝ્યુઅલ અવરોધ નહીં"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"ચુપચાપ બતાવો"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"અવાજ કરો"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"અવાજ કરો અને સ્ક્રીન પર બતાવો"</string>
     <string name="importance_reset" msgid="7458420788555607007">"ફરીથી સેટ કરો"</string>
     <string name="show_silently" msgid="2222875799232222056">"ચુપચાપ બતાવો"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"વર્તમાન સ્ક્રીન પર દૃશ્યમાં આ સૂચનાઓને અવાજ કરવા, વાઇબ્રેટ કરવા કે ઝબકારારૂપે દેખાવા દેશો નહીં."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"ઍપ્લિકેશનો લોડ કરી રહ્યું છે..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"ચૅનલ્સ"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"તમામને અવરોધિત કરો"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"આ સૂચનાઓ ક્યારેય બતાવશો નહીં"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"સૂચનાઓ બતાવો"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"સૂચનાઓ ક્યારેય શૅડમાં અથવા પેરિફેરલ ઉપકરણો પર બતાવશો નહીં"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"બૅજ બતાવો"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"હોમ ઍપ્લિકેશન પર બૅજ તરીકે સૂચનાઓ બતાવો, જો સમર્થિત હોય."</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>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"ફરી બતાવશો નહીં"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"આ તરીકે વિનંતી કરી રહ્યું છે"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"એકાઉન્ટ ઉમેરો"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"સિસ્ટમ માહિતી"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"કાર્ય પ્રોફાઇલ સેટિંગ્સ"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"સંપર્ક શોધ"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"કૉલર્સ અને સંપર્કોને ઓળખવા માટે તમારી સંસ્થા દ્વારા સંપર્ક શોધની મંજૂરી આપો"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"તમારી સૌથી તાજેતરની બગ રિપોર્ટ"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"તમારો સૌથી તાજેતરનો સુરક્ષા લૉગ"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"ક્યારેય નહીં"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"ફોટા અને વિડિઓઝ"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"સંગીત અને ઑડિઓ"</string>
     <string name="storage_games" msgid="7703159201697117621">"રમતો"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"અન્ય ઍપ્લિકેશનો"</string>
     <string name="storage_files" msgid="8581083146777364063">"ફાઇલો"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"ફોન સ્ટોરેજ"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> ઉપયોગમાં લેવાયું"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> ખાલી"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index a1a1494..d2f6c65 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -86,7 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"नमूना लेख"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"ओज़ का अद्भुत जादू"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"अध्याय 11: ओज़ का अद्भुत पन्ने का शहर"</string>
-    <string name="font_size_preview_text_body" msgid="2846183528684496723">"हरे रंग के चश्मे पहने हुए भी डॉरथी और उसके दोस्त इस अद्भुत शहर की चकाचौंध से चकित थे. हरे रंग के मार्बल से बने खूबसूरत घर सड़कों के किनारे कतार में खड़े थे और उन पर चमचमाते पन्ने जड़े हुए थे. वे उसी हरे रंग के मार्बल पर चलने लगे, जहां पास-पास रखे गए ब्लॉक आपस में जुड़ रहे थे वे पन्ने की कतारें थीं और सूरज की चमक से चमचमा रही थीं. जहां खिड़कियों के शीशे हरे रंग के थे; यहां तक की शहर के ऊपर छाया आसमान भी हरा रंग लिए था, और सूरज की किरणें भी हरी थीं. \n\nवहां कई लोग थे, महिलाएं, पुरुष और बच्चे, और वे सभी हरे रंग के कपड़े पहने हुए थे और उनकी त्वचा भी हरे रंग की थी. उन्होंने डॉरथी और उसके अजीबो-गरीब दोस्तों की ओर अचरज भरी नज़रों से देखा, और जब बच्चों ने शेर को देखा तो वे सभी वहां से भाग खड़े हुए और अपनी मां के पीछे जाकर छिप गए; लेकिन किसी ने भी उनसे बात नहीं की. सड़क पर कई दुकानें थीं और डॉरथी ने देखा कि वहां सब कुछ हरा था. हरी कैंडी और हरे पॉप-कॉर्न बिक रहे थे, साथ ही हरे जूते, हरी टोपियां और सभी तरह के हरे कपड़े भी. एक जगह पर एक आदमी हरे रंग के नींबू का शरबत बेच रहा था और जब बच्चों ने उसे खरीदा तो डॉरथी ने देखा कि उन्होंने उसके लिए हरे रंग के सिक्के दिए. \n\nवहां कोई भी घोड़ा या किसी भी तरह का कोई जानवर नहीं था; आदमी उनके सामने से हरे रंग की गाड़ियों में यहां-वहां सामान ले जा रहे थे. हर कोई खुश, संतुष्ट और समृद्ध नज़र आ रहा था."</string>
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"हरे रंग के चश्मे पहने हुए भी डॉरथी और उसके दोस्त इस अद्भुत शहर की चकाचौंध से चकित थे. हरे रंग के संगमरमर से बने खूबसूरत घर सड़कों के किनारे कतार में खड़े थे और उन पर चमचमाते पन्ने जड़े हुए थे. वे उसी हरे रंग के संगमरमर पर चलने लगे, जहां पास-पास रखे गए ब्लॉक आपस में जुड़ रहे थे वे पन्ने की कतारें थीं और सूरज की चमक से चमचमा रही थीं. जहां खिड़कियों के शीशे हरे रंग के थे; यहां तक की शहर के ऊपर छाया आसमान भी हरा रंग लिए था, और सूरज की किरणें भी हरी थीं. \n\nवहां कई लोग थे, महिलाएं, पुरुष और बच्चे, और वे सभी हरे रंग के कपड़े पहने हुए थे और उनकी त्वचा भी हरे रंग की थी. उन्होंने डॉरथी और उसके अजीबो-गरीब दोस्तों की ओर अचरज भरी नज़रों से देखा, और जब बच्चों ने शेर को देखा तो वे सभी वहां से भाग खड़े हुए और अपनी मां के पीछे जाकर छिप गए; लेकिन किसी ने भी उनसे बात नहीं की. सड़क पर कई दुकानें थीं और डॉरथी ने देखा कि वहां सब कुछ हरा था. हरी कैंडी और हरे पॉप-कॉर्न बिक रहे थे, साथ ही हरे जूते, हरी टोपियां और सभी तरह के हरे कपड़े भी. एक जगह पर एक आदमी हरे रंग वाला नींबू का शरबत बेच रहा था और जब बच्चों ने उसे खरीदा तो डॉरथी ने देखा कि उन्होंने उसके लिए हरे रंग के सिक्के दिए. \n\nवहां कोई भी घोड़ा या किसी भी तरह का कोई जानवर नहीं था; आदमी उनके सामने से हरे रंग की गाड़ियों में यहां-वहां सामान ले जा रहे थे. हर कोई खुश, संतुष्ट और समृद्ध नज़र आ रहा था."</string>
     <string name="font_size_save" msgid="3450855718056759095">"ठीक है"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB मेमोरी"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD कार्ड"</string>
@@ -657,7 +657,7 @@
     <string name="android_beam_off_summary" msgid="4663095428454779138">"बंद"</string>
     <string name="android_beam_disabled_summary" msgid="1737782116894793393">"अनुपलब्‍ध है क्‍योंकि NFC बंद है"</string>
     <string name="android_beam_label" msgid="6257036050366775040">"Android Beam"</string>
-    <string name="android_beam_explained" msgid="1810540319385192758">"इस सुविधा के चालू होने पर, आप ऐप्लिकेशन की सामग्री को किसी दूसरे NFC-सक्षम डिवाइस पर बीम कर सकते हैं, जिसके लिए आपको दोनों डिवाइस पास-पास पकड़कर रखने होंगे. उदाहरण के लिए, आप वेब पेज, YouTube वीडियो, संपर्कों आदि को बीम कर सकते हैं.\n\nबस दोनों डिवाइस को साथ लाएं (आमतौर एक के पीछे एक) और फिर अपनी स्क्रीन टैप करें. ऐप्लिकेशन पता लगा लेता है कि कौन सी चीज़ बीम हो रही है."</string>
+    <string name="android_beam_explained" msgid="1810540319385192758">"इस सुविधा के चालू होने पर, आप ऐप्लिकेशन की सामग्री को किसी दूसरे NFC-सक्षम डिवाइस पर बीम कर सकते हैं, जिसके लिए आपको दोनों डिवाइस पास-पास पकड़कर रखने होंगे. उदाहरण के लिए, आप वेब पेज, YouTube वीडियो, संपर्कों आदि को बीम कर सकते हैं.\n\nबस दोनों डिवाइस साथ लाएं (आमतौर एक के पीछे एक) और फिर अपनी स्क्रीन टैप करें. ऐप्लिकेशन पता लगा लेता है कि कौन सी चीज़ बीम हो रही है."</string>
     <string name="wifi_quick_toggle_title" msgid="8850161330437693895">"वाई-फ़ाई"</string>
     <string name="wifi_quick_toggle_summary" msgid="2696547080481267642">"वाई-फ़ाई  चालू करें"</string>
     <string name="wifi_settings" msgid="29722149822540994">"वाई-फ़ाई"</string>
@@ -670,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"त्रुटि"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"5 GHz बैंड इस देश में उपलब्‍ध नहीं है"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"हवाई जहाज़ मोड में"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"नेटवर्क नोटिफिकेशन"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"सार्वजनिक नेटवर्क उपलब्ध होने पर सूचित करें"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"खराब कनेक्‍शन से बचें"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"जब तक वाई-फ़ाई  नेटवर्क में अच्छा इंटरनेट कनेक्‍शन न हो, तब तक उसका उपयोग न करें"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"उन्हीं नेटवर्क का उपयोग करें जिनमें अच्छा इंटरनेट कनेक्शन है"</string>
@@ -1535,9 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"नए ऐप्स के लिए पसंदीदा इंस्‍टॉलेशन स्‍थान बदलें"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"अंतर्निहित ऐप्स अक्षम करें?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"ऐप को अक्षम करें"</string>
-    <string name="app_disable_dlg_text" msgid="5632072173181990531">"अगर आप इस ऐप्लिकेशन को अक्षम करते हैं, तो हो सकता है कि Android और दूसरे ऐप्लिकेशन लक्षित रूप से काम ना कर पाएं."</string>
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"अगर आप इस ऐप्लिकेशन को अक्षम करते हैं, तो हो सकता है कि Android और दूसरे ऐप्लिकेशन अपेक्षित रूप से काम ना कर पाएं."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"डेटा हटाएं और ऐप्स  को अक्षम करें?"</string>
-    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"यदि आप इस ऐप्लिकेशन को अक्षम करते हैं, तो हो सकता है कि दूसरे ऐप्लिकेशन लक्षित रूप से काम ना कर पाएं. आपका डेटा भी हटा दिया जाएगा."</string>
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"यदि आप इस ऐप्लिकेशन को अक्षम करते हैं, तो हो सकता है कि दूसरे ऐप्लिकेशन अपेक्षित रूप से काम ना कर पाएं. आपका डेटा भी हटा दिया जाएगा."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"नोटिफिकेशन बंद करें?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"यदि आप इस ऐप्स के लिए नोटिफिकेशन बंद करते हैं, तो आप महत्‍वपूर्ण अलर्ट और नई जानकारी खो देंगे."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"स्टोर"</string>
@@ -3301,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"आपकी हाल ही की बग रिपोर्ट"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"आपका हाल ही का सुरक्षा लॉग"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"कभी नहीं"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"फ़ोटो और वीडियो"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"संगीत और ऑडियो"</string>
     <string name="storage_games" msgid="7703159201697117621">"गेम"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"अन्य ऐप्लिकेशन"</string>
     <string name="storage_files" msgid="8581083146777364063">"फ़ाइलें"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"फ़ोन की जगह"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> उपयोग किया गया"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> खाली है"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index b03732a..cd24536 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -87,8 +87,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Primjer teksta"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Čarobnjak iz Oza"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"11. poglavlje: Čudesni Smaragdni Grad čarobnjaka Oza"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Čak i sa zelenim naočalama koje su im štitile oči Dorothy i njezini prijatelji isprva su bili zaslijepljeni sjajem prekrasnoga Grada. Ulicama su se nizale predivne kuće sve izgrađene od zelenog mramora i cijele optočene svjetlucavim smaragdima. Hodali su pločnikom od istog zelenog mramora, a na mjestima gdje su se kameni blokovi spajali nalazili su se redovi gusto postavljenih smaragda koji su svjetlucali na jarkom suncu. Prozori su bili od zelenog stakla, a čak je i nebo iznad Grada imalo zeleni odsjaj i sunčeve su zrake bile zelene boje. \n\nNa ulicama je bilo mnogo ljudi, muškaraca, žena i djece, i svi su bili odjeveni u zeleno i imali zelenkastu put. S čuđenjem su gledali Dorothy i njezinu neobičnu, šaroliku pratnju i sva su se djeca sakrila iza svojih majki kada su ugledala Lava, no nitko im se nije obratio. Mnoge su trgovine bile otvorene na ulicu i Dorothy je mogla vidjeti kako je u njima sve zeleno. Prodavali su se zeleni slatkiši i zelene kokice, kao i zelene cipele, zeleni šeširi i zelena odjeća svakojake vrste. Na jednom je mjestu jedan čovjek prodavao zelenu limunadu, a kad ju je koje dijete kupilo, Dorothy je mogla vidjeti kako je plaća zelenim novčićima. \n\nČinilo se da nije bilo konja niti koje druge životinje, a ljudi su naokolo vozili stvari u malim zelenim kolicima koja su gurali ispred sebe. Svi su se činili sretnima, zadovoljnima i uspješnima."</string>
     <string name="font_size_save" msgid="3450855718056759095">"U redu"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"Memorija USB"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD kartica"</string>
@@ -680,8 +679,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Pogreška"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"U ovoj zemlji nije dostupna frekvencija od 5 GHz"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"U načinu rada u zrakoplovu"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Mrežna obavijest"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Obavijesti uvijek kada je dostupna javna mreža"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Izbjegavati slabe veze"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Ne upotrebljavaj Wi-Fi mrežu ako internetska veza nije zadovoljavajuća"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Koristi samo mreže s dobrom internetskom vezom"</string>
@@ -1547,11 +1552,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Promijenite željenu lokaciju instalacije za nove aplikacije."</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Onemogući ugrađenu aplikaciju?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Onemogući aplikaciju"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Ako onemogućite tu aplikaciju, Android i druge aplikacije možda više neće funkcionirati pravilno."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Izbrisati podatke i onemogućiti aplikaciju?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Ako onemogućite tu aplikaciju, Android i druge aplikacije možda više neće funkcionirati pravilno, a izbrisat će se i vaši podaci."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Isključiti obavijesti?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Ako isključite obavijesti za ovu aplikaciju, možda ćete propustiti važna upozorenja i ažuriranja."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Trgovina"</string>
@@ -2549,8 +2552,7 @@
       <item quantity="few">Prikaži %d skrivene stavke</item>
       <item quantity="other">Prikaži %d skrivenih stavki</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Mreža i internet"</string>
     <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>
@@ -2676,16 +2678,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Obavijesti"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Važnost"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Nije postavljeno"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Nikad ne prikazuj obavijesti"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Bez zvučnog ili vizualnog ometanja"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Prikaži tiho"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Reproduciraj zvuk"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Reproduciraj zvuk i prikaži na zaslonu"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Poništi"</string>
     <string name="show_silently" msgid="2222875799232222056">"Prikaži tiho"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Nemoj emitirati zvuk, vibrirati niti prikazivati obavijesti na trenutačnom zaslonu."</string>
@@ -2715,16 +2712,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Učitavanje aplikacija..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Kanali"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Blokiraj sve"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Nikad ne prikazuj te obavijesti"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Prikaži obavijesti"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Nikad ne prikazuj obavijesti na zaslonu obavijesti ili na perifernim uređajima"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Prikaži značku"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Prikaži obavijesti u obliku znački u aplikaciji Home ako je to podržano."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"Nadjačaj Ne ometaj"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Neka te obavijesti nastave prekidati kada je način Ne ometaj postavljen na Samo prioritetno"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"Na zaključanom zaslonu"</string>
@@ -3256,8 +3248,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Ne prikazuj ponovo"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Zahtjev šalje"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Dodaj račun"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Informacije o sustavu"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Postavke radnog profila"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Pretraživanje kontakata"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Omogućuje pretraživanjima kontakata vaše organizacije da identificiraju pozivatelje i kontakte"</string>
@@ -3352,16 +3343,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Vaše najnovije izvješće o programskoj pogrešci"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Najnoviji sigurnosni zapisnik"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Nikada"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Fotografije i videozapisi"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Glazba i zvuk"</string>
     <string name="storage_games" msgid="7703159201697117621">"Igre"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Ostale aplikacije"</string>
     <string name="storage_files" msgid="8581083146777364063">"Datoteke"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Pohrana telefona"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> iskorišteno"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> raspoloživo"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 3f4f444..f55f44c 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Mintaszöveg"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Óz, a csodák csodája"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"11. fejezet: A csodálatos Smaragdváros"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Dorothyt és barátait még a zöld szemüvegen át is lenyűgözte a csodálatos Város tündöklése. Az utcákat gyönyörű házak sora szegélyezte, melyek zöld márványból készültek, ragyogó smaragdokkal kirakva. Az utak ugyanebből a zöld márványból készültek, az utcaköveket pedig sűrűn rakott smaragdsorok választották el, melyek csak úgy sziporkáztak a napfényben. Az ablaktáblák zöld üvegből voltak, az ég zöldes színben tündökölt a Város fölött, és még a napsugarak is zöld színben játszottak. \n\nRengeteg ember járkált mindenfelé, férfiak, nők, gyerekek, mind zöld ruhákban, zöldes árnyalatú volt a bőrük is. Csodálkozó szemekkel néztek Dorothyra és furcsa kísérőire, és amikor a gyerekek meglátták az Oroszlánt, elszaladtak, és anyjuk mögé bújtak. De senki sem szólt hozzájuk. Az utcán sok bolt állt, és Dorothy észrevette, hogy ezekben is minden zöld. Lehetett kapni zöld cukorkát és zöld pattogatott kukoricát, zöld cipőt, zöld kalapot és mindenféle zöld ruhát. Az egyik helyen egy férfi zöld limonádét árult, és Dorothy látta, hogy a gyerekek zöld pennykkel fizetnek érte. \n\nNem voltak sehol lovak vagy más állatok; az emberek mindent kis zöld kocsikon hordtak, amelyet maguk előtt toltak. Mindenki boldognak, elégedettnek és jómódúnak tűnt."</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB-tár"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD-kártya"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Hiba"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"Az 5 GHz-es sáv nem áll rendelkezésre ebben az országban"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"Repülési üzemmódban"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Hálózati értesítés"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Értesítsen, ha rendelkezésre áll nyilvános hálózat"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Rossz minőségű kapcsolatok kerülése"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Csak akkor használjon Wi-Fi hálózatot, ha jó internetkapcsolatot tud biztosítani."</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Csak jó internetkapcsolattal rendelkező hálózatok használata"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Az új alkalmazások telepítése során előnyben részesített hely módosítása"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Letiltja a beép. alkalmazást?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Alkalmazás letiltása"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Ha letiltja ezt az alkalmazást, akkor előfordulhat, hogy az Android- és más alkalmazások nem működnek majd megfelelően."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Szeretné törölni az adatokat és letiltani az alkalmazást?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Ha letiltja ezt az alkalmazást, akkor előfordulhat, hogy az Android- és más alkalmazások működnek majd megfelelően. Továbbá az adatok is törlődnek."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Kikapcsolja az értesítéseket?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Ha kikapcsolja az erre az alkalmazásra vonatkozó értesítéseket, akkor lemaradhat fontos figyelmeztetésekről és a frissítésekről."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Áruház"</string>
@@ -2527,8 +2530,7 @@
       <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 (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Értesítések"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Fontosság"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Nincs megadva"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Soha ne jelenjen meg értesítés"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Hangjelzés és vizuális megszakítás nélkül"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Megjelenítés hangjelzés nélkül"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Hangjelzés"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Hangjelzés és felugró értesítés a képernyőn"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Visszaállítás"</string>
     <string name="show_silently" msgid="2222875799232222056">"Megjelenítés hangjelzés nélkül"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Ne legyen hangjelzés vagy rezgés, illetve az értesítések ne jelenjenek meg rövid időre sem az aktuális képernyőn."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Alkalmazások betöltése…"</string>
     <string name="notification_channels" msgid="8681423709659818791">"Csatornák"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Az összes letiltása"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Soha ne jelenjenek meg ezek az értesítések"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Értesítések megjelenítése"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Soha ne jelenjen meg értesítés az értesítési felületen és a perifériás eszközökön"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Jelvény megjelenítése"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Értesítések megjelenítése jelvényként a kezdőalkalmazásban, ha támogatott."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"A Ne zavarjanak mód felülbírálása"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"A Ne zavarjanak mód „Csak prioritásos” beállítása esetén ezek az értesítések továbbra is zavarhatnak"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"A lezárási képernyőn"</string>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Ne jelenjen meg újra"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Lekérés a következőként:"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Fiók hozzáadása"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Rendszer-információk"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Munkaprofil beállításai"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Névjegykeresés"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Névjegykeresés engedélyezése a szervezet számára a hívó felek és ismerősök azonosítása érdekében"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Az Ön legutóbbi hibajelentése"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Legutóbbi biztonsági naplója"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Soha"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Fényképek és videók"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Zene és hang"</string>
     <string name="storage_games" msgid="7703159201697117621">"Játékok"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Egyéb alkalmazások"</string>
     <string name="storage_files" msgid="8581083146777364063">"Fájlok"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Telefontárhely"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> felhasznált terület"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> szabad"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 0c5b9de..3d850e8 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Տեքստի նմուշ"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Օզի կախարդը"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Գլուխ 11. Օզի հրաշալի Զմրուխտե քաղաքը"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Նույնիսկ հագնելով կանաչ ապակիներով ակնոցներ՝ Դորոթին և նրա ընկերները շլացան այս զարմանահրաշ քաղաքի փայլից: Փողոցների երկայնքով շարված էին կանաչ մարմարից գեղեցիկ տներ՝ զարդարված փայլուն զմրուխտներով: Ճամփորդները քայլում էին այդ նույն կանաչ մարմարով պատած մայթերով, որոնց սալիկների արանքները լցված էին արևի շողերի տակ փայլող զմրուխտներով: Տների պատուհանները կանաչ ապակուց էին: Զմրուխտե քաղաքում նույնիսկ երկինքն ուներ կանաչ երանգ, իսկ կանաչ արևը պայծառ կանաչ շողեր էր արձակում: \n\nՇուրջը տղամարդիկ, կանայք և երեխաներ էին քայլում, որոնք բոլորը կրում էին կանաչ հագուստ և ունեին կանաչավուն մաշկ: Նրանք զարմանքով էին նայում Դորոթիի և նրա տարօրինակ ուղեկիցներին: Նկատելով Առյուծին՝ երեխաները թաքնվում էին իրենց ծնողների մեջքի ետևում և ոչ-ոք չեր համարձակվում խոսել անծանոթների հետ: Խանութներում վաճառվում էին կանաչ գույնի ապրանքներ. կանաչ կոնֆետներ և կանաչ ադիբուդի, տարբեր տեսակի կանաչ կոշիկներ, գլխարկներ և զգեստներ: Վաճառականներից մեկն առաջարկում էր կանաչ լիմոնադ, իսկ նրան շրջապատող երեխաները լիմոնադի համար վճարում էին կանաչ մետաղադրամներով: \n\nԶմրուխտե քաղաքի փողոցներում ոչ ձիեր, ոչ էլ այլ կենդանիներ չկային: Տղամարդիկ իրենց իրերը կրում էին փոքր կանաչ ձեռնասայլակներով: Քաղաքի բոլոր բնակիչները ուրախ և անհոգ տեսք ունեին:"</string>
     <string name="font_size_save" msgid="3450855718056759095">"Լավ"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB կրիչ"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD քարտ"</string>
@@ -658,7 +657,7 @@
     <string name="android_beam_off_summary" msgid="4663095428454779138">"Անջատած է"</string>
     <string name="android_beam_disabled_summary" msgid="1737782116894793393">"Անհասանելի է, քանի որ NFC-ն անջատված է"</string>
     <string name="android_beam_label" msgid="6257036050366775040">"Android Beam"</string>
-    <string name="android_beam_explained" msgid="1810540319385192758">"Երբ այս գործառույթը միացված է, կարող եք բովանդակություն ճառագայթել մեկ այլ NFC հնարավորությամբ սարքի` սարքերը միմյանց մոտ պահելով: Օրինակ` կարող եք ճառագայթել կայքէջեր, YouTube-ի տեսանյութեր, կոնտակտներ և ավելին:\n\nՊարզապես մոտեցրեք սարքերը միմյանց (հիմնականում մեջք մեջքի) և հպեք ձեր էկրանին: Հավելվածը կորոշի, թե ինչն է անհրաժեշտ ճառագայթել:"</string>
+    <string name="android_beam_explained" msgid="1810540319385192758">"Երբ այս գործառույթը միացված է, կարող եք բովանդակություն ճառագայթել մեկ այլ NFC հնարավորությամբ սարքի` սարքերը միմյանց մոտ պահելով: Օրինակ` կարող եք ճառագայթել կայքէջեր, YouTube-ի տեսանյութեր, կոնտակտներ և ավելին:\n\nՊարզապես մոտեցրեք սարքերը միմյանց (հիմնականում հետևի մասերով իրար) և հպեք ձեր էկրանին: Հավելվածը կորոշի, թե ինչն է անհրաժեշտ ճառագայթել:"</string>
     <string name="wifi_quick_toggle_title" msgid="8850161330437693895">"Wi‑Fi"</string>
     <string name="wifi_quick_toggle_summary" msgid="2696547080481267642">"Միացնել Wi-Fi-ը"</string>
     <string name="wifi_settings" msgid="29722149822540994">"Wi‑Fi"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Սխալ"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"5 ԳՀց հաճախականության շերտը հասանելի չէ այս երկրում"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"Ինքնաթիռի ռեժիմում"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Ցանցի ծանուցումներ"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Տեղեկացնել, երբ որևէ հասարակական ցանց հասանելի լինի"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Չօգտագործել թույլ կապ"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Չօգտագործել Wi‑Fi ցանցը, մինչև այն չունենա լավ ինտերնետային կապ"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Օգտագործել միայն լավ ինտերնետ կապ ունեցող ցանցերը"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Փոխել նոր ծրագրերի համար նախընտրած տեղադրման վայրը"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Անջատե՞լ ներկառուցված ծրագիրը:"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Անջատել հավելվածը"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Եթե անջատեք այս հավելվածը, Android և այլ հավելվածները հնարավոր է սխալ աշխատեն:"</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Ջնջե՞լ տվյալներն ու ապակատիվացնե՞լ հավելվածը:"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Եթե անջատեք այս հավելվածը, Android և այլ հավելվածները հնարավոր է սխալ աշխատեն: Ձեր տվյալները նույնպես կջնջվեն:"</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Անջատե՞լ ծանուցումները:"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Եթե դուք անջատեք ծամուցումները այս ծրագրի համար, հնարավոր է` բաց թողնեք կարևոր զգուշացումները և թարմացումները:"</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Խանութ"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="one">Show %d hidden items</item>
       <item quantity="other">Ցույց տալ %d թաքնված տարրեր</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Ցանց և ինտերնետ"</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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Ծանուցումներ"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Կարևորություն"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Կարգավորված չէ"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Երբեք չցուցադրել ծանուցումները"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Առանց ձայնի և տեսողական ընդհատումների"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Ցույց տալ անձայն"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Ձայն հանել"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Ձայն հանել և ցուցադրել էկրանին"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Վերակայել"</string>
     <string name="show_silently" msgid="2222875799232222056">"Ցույց տալ անձայն"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Ձայնային ազդանշան չհնչեցնել, չթրթռալ և ընթացիկ էկրանին այս ծանուցումները չցուցադրել:"</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Ծրագրերը բեռնվում են..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Ալիքներ"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Արգելափակել բոլորը"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Երբեք չցուցադրել այս ծանուցումները"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Ցուցադրել ծանուցումները"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Երբեք չցուցադրել ծանուցումները ստվերում կամ արտաքին սարքերի վրա"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Ցուցադրել նշանակը"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Հնարավորության դեպքում ծանուցումները Հիմնական հավելվածում ցուցադրել նշանակների տեսքով:"</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>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Այլևս ցույց չտալ"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Հարցվում է որպես"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Ավելացնել հաշիվ"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Համակարգային տեղեկություններ"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Աշխատանքային պրոֆիլի կարգավորումներ"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Կոնտակտների որոնում"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Թույլատրել ձեր կազմակերպությանը որոնել կոնտակտներ՝ զանգողներին և կոնտակտները նույնականացնելու համար:"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Ձեր ամենավերջի վրիպակի զեկույցը"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Ձեր ամենավերջին անվտանգության մատյանը"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Երբեք"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Լուսանկարներ և տեսանյութեր"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Երաժշտություն և աուդիո"</string>
     <string name="storage_games" msgid="7703159201697117621">"Խաղեր"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Այլ հավելվածներ"</string>
     <string name="storage_files" msgid="8581083146777364063">"Ֆայլեր"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Հեռախոսի հիշողություն"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> օգտագործված"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> ազատ է"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index b6b7ef4..1fc2770 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -670,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Kesalahan"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"Pita 5 GHz tidak tersedia di negara ini"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"Dalam mode Pesawat"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Notifikasi jaringan"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Beri tahu saat jaringan publik tersedia"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Hindari sambungan buruk"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Jangan gunakan jaringan Wi-Fi kecuali koneksi internetnya bagus"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Hanya gunakan jaringan yang memiliki koneksi internet kuat"</string>
@@ -3301,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Laporan bug terbaru"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Log keamanan terbaru"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Tidak pernah"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Foto &amp; Video"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Musik &amp; Audio"</string>
     <string name="storage_games" msgid="7703159201697117621">"Game"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Aplikasi lainnya"</string>
     <string name="storage_files" msgid="8581083146777364063">"File"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Penyimpanan Ponsel"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> digunakan"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> kosong"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index 61cf784..7183057 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Textadæmi"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Galdrakarlinn í Oz"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"11. kafli: Smaragðsborgin dásamlega í Oz"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Jafnvel þótt grænu gleraugun hlífðu augum Dóróteu og vina hennar fengu þau fyrst ofbirtu í augun af ljóma borgarinnar undursamlegu. Meðfram götunum lágu falleg hús, öll úr grænum marmara og skreytt glitrandi smarögðum. Þau gengu eftir gangstétt úr sama græna marmaranum og þar sem steinhellurnar komu saman lágu smaragðar í röðum, þéttskipaðir og ljómandi í sólarljósinu. Rúðurnar voru úr grænu gleri, jafnvel himinninn yfir borginni var með grænum litblæ og sólargeislarnir voru grænir. \n\nMargt fólk var á gangi, karlar, konur og börn, og allt var það grænklætt og húðin grænleit. Fólkið horfði á Dóróteu og sundurleita félaga hennar með spurn í augum og börnin flúðu og földu sig á bak við mæður sínar þegar þau sáu ljónið, en enginn yrti á þau. Við götuna stóðu margar verslanir og Dórótea sá að allt var grænt þar inni. Grænn brjóstsykur og grænt poppkorn var þar til sölu, ásamt grænum skóm, grænum höttum og alls kyns grænum fötum. Á einum stað seldi maður grænt límonaði og þegar börnin keyptu það sá Dórótea að þau greiddu fyrir það með grænum peningum. \n\nEngir hestar eða önnur dýr voru sjáanleg heldur keyrðu karlarnir hluti um í litlum grænum kerrum sem þeir ýttu á undan sér. Allir virtust hamingjusamir og ánægðir og velmegandi."</string>
     <string name="font_size_save" msgid="3450855718056759095">"Í lagi"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB-geymsla"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD-kort"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Villa"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"5 GHz tíðnisvið er ekki í boði í þessu landi"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"Í flugstillingu"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Nettilkynning"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Tilkynna þegar opið net er í boði"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Forðast lélegar tengingar"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Ekki nota Wi-Fi net nema nettengingin sé góð"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Nota aðeins net með góða tengingu"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Breyta valinni staðsetningu fyrir uppsetningu nýrra forrita"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Gera innbyggt forrit óvirkt?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Slökkva á forriti"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Ef þú slekkur á þessu forriti getur verið að Android og önnur forrit virki ekki lengur sem skyldi."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Eyða gögnum og slökkva á forriti?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Ef þú slekkur á þessu forriti getur verið að Android og önnur forrit virki ekki lengur sem skyldi. Einnig verður gögnunum þínum eytt."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Slökkva á tilkynningum?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Ef þú slekkur á tilkynningum fyrir þetta forrit gætirðu misst af mikilvægum viðvörunum og uppfærslum."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Verslun"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="one">Sýna %d falið atriði</item>
       <item quantity="other">Sýna %d falin atriði</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Netkerfi og internet"</string>
     <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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Tilkynningar"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Mikilvægi"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Ekki stillt"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Aldrei sýna tilkynningar"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Ekkert hljóð eða sjónræn truflun"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Sýna án hljóðs"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Spila hljóð"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Spila hljóð og birta sprettitilkynningu"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Endurstilla"</string>
     <string name="show_silently" msgid="2222875799232222056">"Sýna án hljóðs"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Ekki nota hljóð, titring eða birta tilkynningar á núverandi skjá."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Hleður forrit..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Rásir"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Útiloka allt"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Aldrei sýna þessar tilkynningar"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Sýna tilkynningar"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Aldrei sýna tilkynningar í skugga eða á jaðartækjum"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Sýna merki"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Sýna tilkynningar sem merki í Home forritinu, ef þær eru studdar."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"Hnekkja „Ónáðið ekki“"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Láta þessar tilkynningar halda áfram að trufla þegar „Ónáðið ekki“ er stillt á „Aðeins forgangur“"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"Á lásskjá"</string>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Ekki birta aftur"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Beðið um sem"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Bæta reikningi við"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Kerfisupplýsingar"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Stillingar vinnusniðs"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Tengiliðaleit"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Leyfa fyrirtækinu þínu að leita í tengiliðum til að bera kennsl á þá sem hringja og tengiliði"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Nýlegasta villutilkynningin"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Nýjasta öryggisannálinn þinn"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Aldrei"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Myndir og myndskeið"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Tónlist og hljóð"</string>
     <string name="storage_games" msgid="7703159201697117621">"Leikir"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Önnur forrit"</string>
     <string name="storage_files" msgid="8581083146777364063">"Skrár"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Geymslurými símans"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> notað"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> laust"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 08bed2c..ad70c78 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Testo di esempio"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Il meraviglioso mago di Oz"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Capitolo 11: La splendida Città di smeraldo di Oz"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Sebbene i loro occhi fossero protetti dalle lenti verdi, Dorothy e i suoi amici rimasero immediatamente abbagliati dal fulgore della splendida Città. Lungo le strade si affacciavano belle case tutte realizzate in marmo verde e tempestate ovunque di smeraldi scintillanti. Camminarono lungo un marciapiede fatto dello stesso marmo verde, i cui blocchi erano congiunti da file e file di smeraldi incastonati che rilucevano sotto il sole splendente. I vetri alle finestre erano verdi e persino il cielo sopra la Città e i raggi di sole avevano una sfumatura verde. \n\nC\'erano molte persone che passeggiavano, uomini, donne e bambini: erano tutti vestiti di verde e avevano la pelle verdognola. Guardavano Dorothy e la sua stravagante compagnia con occhi pieni di meraviglia e i bambini correvano tutti a nascondersi dietro le loro madri quando vedevano il Leone; ma nessuno rivolse loro la parola. C\'erano molti negozi lungo la strada e Dorothy vide che ogni cosa al loro interno era verde. Si vendevano caramelle verdi e popcorn verdi, come pure scarpe verdi, cappelli verdi e abiti verdi di ogni tipo. C\'era anche un posto in cui un uomo vendeva limonata verde e, quando i bambini la acquistavano, Dorothy vide che pagavano con monetine verdi. \n\nSembrava che non esistessero cavalli o altri animali; gli uomini portavano le merci spingendole davanti a sé su carretti verdi. Tutti sembravano felici, soddisfatti e prosperi."</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"Archivio USB"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"Scheda SD"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Errore"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"Banda da 5 GHz non disponibile in questo paese"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"In modalità aereo"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Notifica rete"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Avvisa quando è disponibile una rete pubblica"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Evita connessioni deboli"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Non utilizzare una rete Wi‑Fi a meno che non abbia una buona connessione a Internet"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Utilizza solo reti con una buona connessione a Internet"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Cambia il percorso preferito per l\'installazione di nuove applicazioni"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Disattivare app integrata?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Disattiva app"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Se disattivi questa app, Android e altre app potrebbero non funzionare più come previsto."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Eliminare i dati e disattivare l\'applicazione?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Se disattivi questa app, Android e altre app potrebbero non funzionare più come previsto. I tuoi dati inoltre saranno eliminati."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Disattivare le notifiche?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Se disattivi le notifiche per questa applicazione potresti perdere avvisi e aggiornamenti importanti."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Store"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="other">Mostra %d elementi nascosti</item>
       <item quantity="one">Mostra %d elemento nascosto</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Rete e Internet"</string>
     <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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Notifiche"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Importanza"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Non impostato"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Non mostrare mai notifiche"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Senza suoneria o interruzione visiva"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Mostra silenziosamente"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Con suoneria"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Con suoneria e visualizzazione sullo schermo"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Reimposta"</string>
     <string name="show_silently" msgid="2222875799232222056">"Mostra silenziosamente"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Non emettere suoni o vibrazioni e non mostrare queste notifiche nella schermata corrente."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Caricamento app..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Canali"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Blocca tutto"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Non mostrare mai queste notifiche"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Mostra notifiche"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Non mostrare mai notifiche nella relativa area o su dispositivi periferici"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Mostra badge"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Mostra notifiche come badge nell\'app Home, se supportato."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"Ignora Non disturbare"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Consenti interruzione per queste notifiche quando l\'opzione Non disturbare è impostata su Solo con priorità"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"Nella schermata di blocco"</string>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Non mostrare più"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Richiesta come"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Aggiungi account"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Informazioni di sistema"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Impostazioni profilo di lavoro"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Ricerca di contatti"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Consenti ricerche di contatti in base all\'organizzazione per identificare chiamanti e contatti"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"La tua segnalazione di bug più recente"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Il tuo log di sicurezza più recente"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Mai"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Foto e video"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Musica e audio"</string>
     <string name="storage_games" msgid="7703159201697117621">"Giochi"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Altre app"</string>
     <string name="storage_files" msgid="8581083146777364063">"File"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Memoria telefono"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> utilizzati"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> liberi"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 7564915..75f72dd 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -88,8 +88,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"טקסט לדוגמה"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"הקוסם המופלא מארץ עוץ"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"פרק 11: עיר הברקת המופלאה של ארץ עוץ"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"אפילו עם המשקפיים הירוקים שהגנו על עיניהם, דורותי וחבריה הסתנוורו בתחילה מזוהרה של העיר הנפלאה. לאורך הרחובות ניצבו בתים יפהפיים, שכולם בנויים משיש ירוק ומשובצים אבני ברקת מבריקות. הם צעדו על פני מדרכה שהייתה עשויה מאותו שיש ירוק, ובמקום המפגש של שורות הבתים היו משובצות זו לצד זו שורות של אבני ברקת, מנצנצות באור השמש הבהיר. אדני החלונות היו עשויים מזכוכית ירוקה. אפילו לשמיים שמעל העיר היה גוון ירקרק, וקרני השמש היו ירוקות. \n\nאנשים רבים התהלכו ברחובות, גברים, נשים וילדים, וכולם היו לבושים בבגדים ירוקים ולעורם היה גון ירוק. הם הסתכלו בהשתוממות על דורותי ועל החבורה המוזרה שסבבה אותה, וכשראו את האריה, כל הילדים ברחו והתחבאו מאחורי אימותיהם. אבל איש לא פנה אליהם בדברים. חנויות רבות ניצבו ברחוב ודורותי ראתה שכל הפריטים שבתוכן היו ירוקים. ממתקים ירוקים ופופקורן ירוק הוצעו למכירה, וגם נעליים ירוקות, כובעים ירוקים ובגדים ירוקים מכל מיני סוגים. בחנות אחת מכר מישהו לימונדה ירוקה, וכשהילדים קנו אותה, דורותי הבחינה שהם שילמו במטבעות ירוקים. \n\nנראה היה שאין שם סוסים, או חיות מכל סוג שהוא. הגברים נשאו דברים בעגלות ירוקות קטנות, שאותן הם דחפו לפניהם. נראה היה שכולם מאושרים, שבעי רצון ומצליחים."</string>
     <string name="font_size_save" msgid="3450855718056759095">"אישור"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"‏אחסון USB"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"‏כרטיס SD"</string>
@@ -676,7 +675,7 @@
     <string name="android_beam_off_summary" msgid="4663095428454779138">"כבוי"</string>
     <string name="android_beam_disabled_summary" msgid="1737782116894793393">"‏לא זמין משום שה-NFC כבוי"</string>
     <string name="android_beam_label" msgid="6257036050366775040">"Android Beam"</string>
-    <string name="android_beam_explained" msgid="1810540319385192758">"‏כשתכונה זו מופעלת, תוכל לשדר תוכן מתוך אפליקציה למכשיר אחר התומך ב-NFC על ידי החזקת המכשירים קרוב זה לזה. לדוגמה, תוכל לשדר דפי אינטרנט, סרטוני YouTube, אנשי קשר ועוד.\n\nפשוט קרב את המכשירים זה לזה (בדרך כלל גב אל גב) ולאחר מכן גע במסך שלך. האפליקציה תקבע מה ישודר."</string>
+    <string name="android_beam_explained" msgid="1810540319385192758">"‏כשתכונה זו מופעלת, תוכל לשדר תוכן מאפליקציה למכשיר אחר התומך ב-NFC על ידי החזקת המכשירים קרוב זה לזה. לדוגמה, תוכל לשדר דפי אינטרנט, סרטוני YouTube, אנשי קשר ועוד.\n\nפשוט קרב את המכשירים זה לזה (בדרך כלל גב אל גב) ולאחר מכן גע במסך. האפליקציה תקבע מה ישודר."</string>
     <string name="wifi_quick_toggle_title" msgid="8850161330437693895">"Wi-Fi"</string>
     <string name="wifi_quick_toggle_summary" msgid="2696547080481267642">"‏הפעל את ה-Wi-Fi"</string>
     <string name="wifi_settings" msgid="29722149822540994">"Wi-Fi"</string>
@@ -689,8 +688,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"שגיאה"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"‏רצועת התדרים של ‎5 GHz אינה זמינה במדינה זו"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"במצב טיסה"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"התראת רשת"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"הצג הודעה כאשר יש רשת ציבורית זמינה"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"הימנע מחיבורים באיכות ירודה"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"‏אל תשתמש ברשת Wi-Fi, אלא אם יש לה חיבור אינטרנט באיכות טובה"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"השתמש רק ברשתות בעלות חיבור אינטרנט איכותי"</string>
@@ -1558,11 +1563,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"שנה את מיקום ההתקנה המועדף עבור אפליקציות חדשות."</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"להשבית אפליקציה מובנית?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"השבת את האפליקציה"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"‏אם תשבית את האפליקציה הזו, ייתכן ש-Android ואפליקציות אחרות לא יפעלו כצפוי."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"האם למחוק נתונים ולהשבית את האפליקציה?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"‏אם תשבית את האפליקציה הזו, ייתכן ש-Android ואפליקציות אחרות לא יפעלו כצפוי. בנוסף, הנתונים שלך יימחקו."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"האם לבטל התראות?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"אם תבטל התראות עבור אפליקציה זו, אתה עלול להחמיץ התראות ועדכונים חשובים."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"חנות"</string>
@@ -2511,8 +2514,8 @@
     <string name="user_restrictions_controlled_by" msgid="3164078767438313899">"בשליטת <xliff:g id="APP">%1$s</xliff:g>"</string>
     <string name="app_sees_restricted_accounts" msgid="7503264525057246240">"האפליקציה הזו יכולה לגשת לחשבונות שלך"</string>
     <string name="app_sees_restricted_accounts_and_controlled_by" msgid="6968697624437267294">"האפליקציה הזו יכולה לגשת אל החשבונות שלך. בשליטה של <xliff:g id="APP">%1$s</xliff:g>"</string>
-    <string name="restriction_wifi_config_title" msgid="8889556384136994814">"‏רשת Wi‑Fi ורשת לנייד"</string>
-    <string name="restriction_wifi_config_summary" msgid="70888791513065244">"‏אפשר שינוי של הגדרות רשת Wi-Fi ורשת לנייד"</string>
+    <string name="restriction_wifi_config_title" msgid="8889556384136994814">"‏רשת Wi‑Fi ורשת סלולרית"</string>
+    <string name="restriction_wifi_config_summary" msgid="70888791513065244">"‏אפשר שינוי של הגדרות רשת Wi-Fi ורשת סלולרית"</string>
     <string name="restriction_bluetooth_config_title" msgid="8871681580962503671">"Bluetooth"</string>
     <string name="restriction_bluetooth_config_summary" msgid="8372319681287562506">"‏אפשר שינויים של התאמות והגדרות Bluetooth"</string>
     <string name="restriction_nfc_enable_title" msgid="5888100955212267941">"NFC"</string>
@@ -2573,8 +2576,7 @@
       <item quantity="other">‏הצג %d פריטים מוסתרים</item>
       <item quantity="one">‏הצג פריט %d מוסתר</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"רשת ואינטרנט"</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>
@@ -2700,16 +2702,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"הודעות"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"חשיבות"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"לא הוגדר"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"לעולם אל תציג הודעות"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"ללא צליל וללא הפרעה ויזואלית"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"הצג ללא צליל"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"השמע צליל"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"השמע צליל והצג במסך"</string>
     <string name="importance_reset" msgid="7458420788555607007">"אפס"</string>
     <string name="show_silently" msgid="2222875799232222056">"הצג ללא צליל"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"אל תשמיע צליל, תפעיל רטט או תציג במהירות הודעות אלו לתצוגה המפורטת במסך הנוכחי."</string>
@@ -2740,16 +2737,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"טוען אפליקציות..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"ערוצים"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"חסום הכל"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"לעולם אל תציג את ההודעות האלה"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"הצג הודעות"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"אף פעם אל תציג הודעות בהצללה או במכשירים היקפיים"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"הצג תג"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"הצג הודעות כתגים באפליקציית דף הבית אם האפשרות נתמכת."</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>
@@ -3290,8 +3282,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"אל תציג שוב"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"מבקש בשם"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"הוסף חשבון"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"נתוני מערכת"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"הגדרות של פרופיל עבודה"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"חיפוש אנשי קשר"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"אפשר לחיפושי אנשי קשר שמבצע הארגון לזהות מתקשרים ואנשי קשר"</string>
@@ -3390,16 +3381,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"הדוח האחרון שלך על באג"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"יומן האבטחה האחרון שלך"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"אף פעם"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"תמונות וסרטונים"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"מוזיקה ואודיו"</string>
     <string name="storage_games" msgid="7703159201697117621">"משחקים"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"אפליקציות אחרות"</string>
     <string name="storage_files" msgid="8581083146777364063">"קבצים"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"אחסון בטלפון"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="UNIT">^2</xliff:g><xliff:g id="NUMBER">^1</xliff:g>"<small><small>" בשימוש"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> פנויים"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"%%<xliff:g id="PERCENT">%1$s</xliff:g>"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index a93d4f1..89d1615 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -670,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"エラー"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"この国では5GHz帯域は利用できません"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"機内モード"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"ネットワークの通知"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"公衆通信回線が利用可能なときは通知する"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"接続不良のとき無効にする"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"安定したインターネット接続があるときのみWi-Fiネットワークを使用する"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"インターネット接続が安定したネットワークのみ使用する"</string>
@@ -3305,16 +3311,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"最新のバグレポート"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"最新のセキュリティ ログ"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"未実行"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"写真＆動画"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"音楽＆オーディオ"</string>
     <string name="storage_games" msgid="7703159201697117621">"ゲーム"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"その他のアプリ"</string>
     <string name="storage_files" msgid="8581083146777364063">"ファイル"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"スマートフォンのストレージ"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> 使用"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> 空き"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index 3126833..bebf54a 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"ტექსტის ნიმუში"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"ოზის საოცარი ჯადოქარი"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"თავი 11: ოზის ზურმუხტის ქალაქი"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"მართალია, მწვანე სათვალე ეკეთათ, მაგრამ დოროთი და მისი მეგობრები ამ საკვირველი ქალაქის ბრწყინვალებამ მაინც გააოცა. ქუჩებში რიგებად იდგა მწვანე მარმარილოს უმშვენიერესი სახლები, რომლებიც ბრჭყვიალა ზურმუხტებით იყო მორთული. გამვლელები დადიოდნენ ტროტუარზე, რომელიც იმავე მწვანე მარმარილოსი იყო, ხოლო ფილებს შორის ნაპრალები ამოევსოთ ზურმუხტებით, რომლებიც მზის სინათლეზე ბზინავდა. სახლების ფანჯრებს მწვანე მინები ჰქონდა. ზურმუხტის ქალაქის თავზე ცასაც მწვანე ელფერი დაჰკრავდა. მწვანე მზიდან კი ქვემოთ მწვანე სხივები ეცემოდა. \n\nგარშემო ბევრი ადამიანი ირეოდა — კაცები, ქალები, ბავშვები — ყველას მწვანე ტანსაცმელი ეცვა და კანიც მწვანე შეფერილობის ჰქონდათ. ისინი გაკვირვებით შეჰყურებდნენ დოროთისა და მის უცნაურ თანამგზავრებს. ლომის დანახვისთანავე ბავშვები მშობლების ზურგსუკან იმალებოდნენ და ვერავინ ბედავდა სტუმრებთან საუბარს. ქუჩის გაყოლებაზე ბევრი მაღაზია ჩამწკრივებულიყო და დოროთიმ დაინახა, რომ ყველაფერი, რაც გასაყიდად გამოეტანათ, მწვანე ფერისა იყო — მწვანე ტკბილეული თუ მწვანე ბატი-ბუტი, მწვანე ფეხსაცმელი თუ თავსაბურავი და სხვადასხვა ზომის და ფორმის ტანსაცმელიც კი მწვანე იყო. ერთ-ერთ დახლზე კაცი მწვანე ლიმონათს ყიდდა, გარსშემოხვეული ბავშვები კი მწვანე მონეტებით უხდიდნენ. \n\nზურმუხტის ქალაქის ქუჩებში არც ცხენები ჩანდა, არც სხვა ცხოველები. კაცებს ტვირთი პატარა მწვანე ხელის ურიკებით გადაჰქონდათ. ქალაქის მაცხოვრებლებს სახეზე ბედნიერება და კმაყოფილება ეტყობოდათ."</string>
     <string name="font_size_save" msgid="3450855718056759095">"კარგი"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB მეხსიერება"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD ბარათი"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"შეცდომა"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"5 გიგაჰერციანი სიხშირე არ არის ხელმისაწვდომი ამ ქვეყანაში"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"თვითმფრინავის რეჟიმში"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"ქსელის შესახებ შეტყობინება"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"შემატყობინება, როდესაც საჯარო ქსელი ხელმისაწვდომი იქნება"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Wi-Fi ქსელების ფილტრი"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"არ გამოიყენო Wi‑Fi ქსელი, თუ მას არ აქვს კარგი ინტერნეტ კავშირი"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"მხოლოდ იმ ქსელების გამოყენება, რომლებსაც კარგი ინტერნეტ-კავშირი გააჩნია"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"შეცვალეთ ახალი აპების დაყენებისთვის შერჩეული მდებარეობა"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"გამოირთოს ჩაშენებული აპი?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"აპის გამორთვა"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"ამ აპის გათიშვის შემთხვევაში, Android-მა და სხვა აპებმა შეიძლება გამართულად აღარ იმუშაოს."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"გსურთ, მონაცემების წაშლა და აპის გამორთვა?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"ამ აპის გათიშვის შემთხვევაში, Android-მა და სხვა აპებმა შეიძლება გამართულად აღარ იმუშაოს. თქვენი მონაცემებიც წაიშლება."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"გამოვრთოთ შეტყობინებები?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"ამ აპის შეტყობინებების გამორთვის შემთხვევაში შეიძლება გამოგრჩეთ მნიშვნელოვანი გაფრთხილებები და განახლებები."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"მაღაზია"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="other">%d დამალული ერთეულის ჩვენება</item>
       <item quantity="one">%d დამალული ერთეულის ჩვენება</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"ქსელი და ინტერნეტი"</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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"შეტყობინებები"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"მნიშვნელობის დონე"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"არ არის დაყენებული"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"შეტყობინებების ჩვენების აღკვეთა"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"ხმოვანი ან ვიზუალური შეფერხების გარეშე"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"უხმოდ ჩვენება"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"ხმის გამოცემა"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"ხმის გამოცემა და ეკრანზე გამოჩენა"</string>
     <string name="importance_reset" msgid="7458420788555607007">"გადაყენება"</string>
     <string name="show_silently" msgid="2222875799232222056">"უხმოდ ჩვენება"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"შეტყობინებებისთვის ხმისა თუ ვიბრაციის გათიშვა და მიმდინარე ეკრანზე ანთების აკრძალვა."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"აპები იტვირთება..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"არხები"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"ყველას დაბლოკვა"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"ამ შეტყობინებების ჩვენების შეწყვეტა"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"შეტყობინებების ჩვენება"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"შეტყობინებების ჩრდილოვნად ან პერიფერიულ მოწყობილობებზე ჩვენების აღკვეთა"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"ბეჯის ჩვენება"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"შეტყობინებების Home აპში ბეჯების სახით ჩვენება, თუ ეს ფუნქცია მხარდაჭერილია."</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>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"აღარ გამოჩნდეს"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"მოთხოვნა, როგორც:"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"ანგარიშის დამატება"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"სისტემის ინფორმაცია"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"სამსახურის პროფილის პარამეტრები"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"კონტაქტების ძიება"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"აბონენტებისა და კონტაქტების ამოცნობის მიზნით, თქვენი ორგანიზაციისთვის კონტაქტების ძიების დაშვება"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"ხარვეზის შესახებ ყველაზე ბოლო ანგარიში"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"უსაფრთხოების ყველაზე ბოლო ჟურნალი"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"არასოდეს"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"ფოტოები და ვიდეოები"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"მუსიკა და აუდიო"</string>
     <string name="storage_games" msgid="7703159201697117621">"თამაშები"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"სხვა აპები"</string>
     <string name="storage_files" msgid="8581083146777364063">"ფაილები"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"ტელეფონის მეხსიერება"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> გამოყენებულია"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> თავისუფალია"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index b191544..99fa67e 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Қарапайым мәтін"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Оз қаласының ғажап сиқыршысы"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"11-тарау: Ғажайып жасыл қала Оз"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Дороти мен достары қалаға алғаш келгенде оның ғажайып көркіне таңғалды. Әдемі жасыл мәрмәр үйлер көшені жағалай тізіліп тұрды, бүкіл жерде жарқыраған зүбаржат тастар шашылып жатқандай көрінді. Олар дәл сондай жасыл мәрмәр жолмен жүрді, тұрғын үйлер зүбаржат кірпіштерден қаланып, күн сәулесіне жарқырап тұрды. Терезелердің әйнектері жасыл шыныдан жасалған, қала үстіндегі жасыл аспаннан жасыл түсті күн сәулесі түсіп тұрды. \n\nКөшедегі ерлер, әйелдер мен балалар жасыл түсті киім киіп алған, олардың терілері де жасыл реңді екен. Олар Доротиге мен оның әпенді достарына таңдана қарады. Балалар Арыстанды көре сала қашып, аналарының артына тығылды. Алайда бұлармен ешкім сөйлеспеді. Дороти көше бойындағы көптеген дүкендердегі нәрселердің барлығы жасыл түсті екенін көрді. Бұл дүкендерде сатылатын кәмпиттер, поп-корн, аяқ киім, қалпақтар мен неше түрлі киімдер – барлығы жасыл еді. Бір кісі жасыл лимонад сатып тұрды және Дороти балалардың ол үшін жасыл ақша төлегенін көрді. \n\nОл жерде ешқандай жануарлар болмаған сияқты, ер адамдар заттарды кішкене жасыл арбалармен алдында салып тасып жүрді. Барлығы бақытты, өмірге риза және уайымсыз болып көрінді."</string>
     <string name="font_size_save" msgid="3450855718056759095">"Жарайды"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB жады"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD картасы"</string>
@@ -658,7 +657,7 @@
     <string name="android_beam_off_summary" msgid="4663095428454779138">"Өшірулі"</string>
     <string name="android_beam_disabled_summary" msgid="1737782116894793393">"Қол жетімсіз себебі ЖӨБ өшірілген"</string>
     <string name="android_beam_label" msgid="6257036050366775040">"Android тарату функциясы"</string>
-    <string name="android_beam_explained" msgid="1810540319385192758">"Бұл функция қосылғанда, құрылғыларды бір-біріне жақын орналастырып, қолданба мазмұнын басқа NFC орнатылған құрылғыға жіберуге болады. Мысалы, беттерді, YouTube бейнелерін, контактілерді және басқаларды беттерін жібере аласыз.\n\nҚұрылғыларды бірге қойып (артқы жақтарын түйістіріп), экранды түртіңіз. Қолданба жіберілетін мазмұндарды анықтайды."</string>
+    <string name="android_beam_explained" msgid="1810540319385192758">"Бұл функция қосылғанда, құрылғыларды бір-біріне жақын орналастырып, қолданба мазмұнын басқа NFC орнатылған құрылғыға жіберуге болады. Мысалы, беттерді, YouTube бейнелерін, контактілерді және басқаларды жібере аласыз.\n\nҚұрылғыларды бірге қойып (артқы жақтарын түйістіріп), экранды түртіңіз. Қолданба жіберілетін мазмұндарды анықтайды."</string>
     <string name="wifi_quick_toggle_title" msgid="8850161330437693895">"Wi‑Fi"</string>
     <string name="wifi_quick_toggle_summary" msgid="2696547080481267642">"Wi‑Fi қосу"</string>
     <string name="wifi_settings" msgid="29722149822540994">"Wi‑Fi"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Қателік"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"5 ГГц диапазоны бұл елде қолжетімсіз"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"Ұшақ режимі"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Желі хабарлары"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Қоғамдық желі қол жетімді болғанда хабарлау"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Нашар байланыстарды қолданбау"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Егер интернет байланысы жақсы болмаса Wi‑Fi желісін қолданбаңыз"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Тек жақсы интернет байланысы бар желілерді пайдалану"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Жаңа қолданбаны орнату үшін қаланған аймақты өзгерту"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Орнатылған қолданба істен шығарылсын ба?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Қолданбаны өшіру"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Бұл қолданбаны өшірсеңіз, Android жүйесі мен басқа қолданбалар тиісінше жұмыс істемеуі мүмкін."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Деректер жойылып, қолданба істен шығарылсын ба?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Бұл қолданбаны өшірсеңіз, Android жүйесі мен басқа қолданбалар тиісінше жұмыс істемеуі мүмкін. Оған қоса деректер де жойылады."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Хабарлар өшірілісін бе?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Бұл қолданбаның хабарларын өшірсеңіз, маңызды дабылдар мен жаңартулар сізге жеткізілмейді."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Дүкен"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="other">%d жасырын элементті көрсету</item>
       <item quantity="one">%d жасырын элементті көрсету</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Желі және интернет"</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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Хабарландырулар"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Маңыздылық"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Орнатылмаған"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Хабарландыруларды ешқашан көрсетпеу"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Дыбыссыз және визуалдық кедергісіз"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Дыбыссыз көрсету"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Дыбыстық сигнал беру"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Дыбыстық сигнал беру және экранға шығару"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Ысыру"</string>
     <string name="show_silently" msgid="2222875799232222056">"Үнсіз көрсету"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Дыбыс шығармау, дірілдетпеу немесе осы хабарландыруларды ағымдағы экрандағы көріністе көрсетпеу."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Қолданбаларды жүктеу…"</string>
     <string name="notification_channels" msgid="8681423709659818791">"Арналар"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Барлығына тыйым салу"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Бұл хабарландыруларды ешқашан көрсетпеу"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Хабарландыруларды көрсету"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Тақтада немесе перифериялық құрылғыларда хабарландыруларды ешқашан көрсетпеу"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Танымбелгіні көрсету"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Қолдау көрсетілетін жағдайда хабарландыруларды Home қолданбасында танымбелгі ретінде көрсету."</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>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Енді көрсетпеу"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Келесі болып сұралуда:"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Есептік жазбаны енгізу"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Жүйе ақпараты"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Жұмыс профилінің параметрлері"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Контакт іздеу"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Қоңырау шалушылар мен контактілерді анықтау үшін ұйым бойынша контакт іздеуге рұқсат беру"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Ең соңғы қате туралы есеп"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Ең соңғы қауіпсіздік журналы"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Ешқашан"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Суреттер және бейнелер"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Музыка және аудиомазмұн"</string>
     <string name="storage_games" msgid="7703159201697117621">"Ойындар"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Басқа қолданбалар"</string>
     <string name="storage_files" msgid="8581083146777364063">"Файлдар"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Телефон жады"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> пайдаланылды"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> бос"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index 7a1ef80..aa53f61 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"អត្ថបទគំរូ"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"មេធ្មប់ដ៏អស្ចារ្យនៃទឹកដីពិសិដ្ឋ"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"ជំពូកទី 11៖ ទីក្រុងមរកតដ៏អស្ចារ្យនៃទឹកដីពិសិដ្ឋ"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"មុនដំបូង ដូរ៉ូធី និង​មិត្តភក្តិ​របស់​នាង​មាន​ភាព​ភ្ញាក់​ផ្អើលយ៉ាងខ្លាំង​​ចំពោះ​ភាព​ស្រស់ស្អាត​នៃ​ទីក្រុង​ដ៏អស្ចារ្យ​នេះ​ បើ​ទោះ​បី​ជា​ពួកគេ​ពាក់វ៉ែនតា​ការពារ​ភ្នែក​ដែល​មាន​ពណ៌បៃតង​ក៏ដោយ។ ​នៅ​តាមដង​ផ្លូវ មាន​ផ្ទះ​ដ៏​ស្រស់​ស្អាត ដែល​ធ្វើ​ឡើង​ពី​ថ្ម​ម៉ាប​ពណ៌បៃតង និង​លម្អ​ដោយ​ត្បូង​មរកត​ដ៏​ចែងចាំង​នៅគ្រប់​ទីកន្លែង​តម្រៀប​ជួរគ្នា។ \n\n ពួកគេ​ដើរ​នៅ​លើ​ដង​ផ្លូវ​ដែល​ធ្វើ​ពី​ថ្ម​ម៉ាប​ពណ៌បៃតងដូចគ្នា ហើយ​នៅ​ត្រង់កន្លែង​ដែល​ប្លុក​​អគារ​​តភ្ជាប់​គ្នាមាន​​ត្បូង​មរកតតម្រៀបជាជួរក្បែរៗគ្នា និង​មាន​ពន្លឺចែង​ចាំង​នៅក្រោម​ពន្លឺ​ព្រះអាទិត្យ។ ផ្ទាំង​បង្អួច​ធ្វើ​ឡើង​ពីកញ្ចក់​ពណ៌បៃតង ហើយ​សូម្បី​​តែ​ផ្ទៃមេឃគ្របដណ្ដប់ដោយ​ស្រមោលពណ៌បៃតង ហើយកាំរស្មីនៃ​​ពន្លឺ​ព្រះអាទិត្យ​ក៏មាន​​ពណ៌​បៃតង​ដែរ។ មាន​មនុស្ស​ម្នាកុះករទាំងប្រុស ទាំងស្រី ទាំងកុមារា ទាំងកុមារី​ដើរ​ទៅ​មក​ក្នុង​សំលៀក​បំពាក់​ពណ៌បៃតង ហើយ​ពួកគេ​ទាំងអស់​សុទ្ធ​តែមាន​ស្បែករាងបៃតង។ ពួកគេ​មើលទៅ​កាន់ដូរ៉ូធី និង​អ្នក​រួមដំណើរ​ជាមួយ​នាង​ដ៏ចម្លែក​ដោយ​បង្ហាញកែវភ្នែកដែលពោរពេញដោយ​ក្តី​ងឿងឆ្ងល់ ហើយ​ក្មេងៗទាំងអស់​រត់​ទៅ​ពួន​នៅ​ខាងក្រោយ​ម្តាយ​របស់​ពួកគេ នៅ​ពេល​ដែល​គេឃើញ​សត្វតោ ប៉ុន្តែ​គ្មាន​នរណាម្នាក់​និយាយ​ទៅកាន់​ពួកគេ​នោះទេ។ មាន​ហាង​ជា​ច្រើន​នៅ​តាម​ផ្លូវ ហើយ​ដូរ៉ូធីបាន​សង្កេត​ឃើញ​ថា ​អ្វីៗទាំងអស់​នៅ​ក្នុង​ហាងទាំងនោះ​សុទ្ធតែ​មាន​ពណ៌បៃតង។ ​ស្ករគ្រាប់ពណ៌បៃតង និង​ពោតលីង​ពណ៌បៃតង ក៏​ដូចជា​ស្បែកជើងពណ៌បៃតង មួកពណ៌បៃតង និង​សម្លៀកបំពាក់ពណ៌បៃតង​គ្រប់ប្រភេទ​សុទ្ធតែមានលក់នៅក្នុងហាង។ នៅកន្លែងមួយ មានបុរសម្នាក់​លក់​ទឹកក្រូចឆ្មាពណ៌បៃតង ហើយនៅ​​ពេលក្មេង​ៗ​ទិញ​ទឹកក្រូចឆ្មា​នោះ ដូរ៉ូធី​បាន​សង្កេត​ឃើញថា ពួកគេ​បានប្រើកាក់ពណ៌បៃតងទៅទិញ។ \n\nនៅ​ទីនោះ​ហាក់ដូចជា​គ្មាន​សត្វសេះ ឬ​សត្វផ្សេង​ទៀតសោះ។ ពួកគេ​ដឹក​ជញ្ជូន​សម្ភារៈ​ទាំងអស់​តាម​រយៈ​រទេះ​​រុញ​ពណ៌បៃតង។ ពួកគេ​គ្រប់គ្នា​ហាក់បី​ដូចជា​រស់នៅ​ប្រកប​ដោយក្ដី​រីករាយ និង​ភាពសម្បូរ​សប្បាយ​ណាស់។"</string>
     <string name="font_size_save" msgid="3450855718056759095">"យល់​ព្រម​"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"ឧបករណ៍​ផ្ទុក​យូអេសប៊ី"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"កាត​អេសឌី"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"កំហុស"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"5 GHz band មិនមានផ្តល់ជូននៅក្នុងប្រទេសនេះទេ"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"ពេល​ជិះ​យន្ត"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"ការ​ជូន​ដំណឹង​បណ្ដាញ"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"ជូនដំណឹង​រាល់​ពេល​មាន​បណ្ដាញ​សាធារណៈ"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"ជៀសវាង​ការ​តភ្ជាប់​ដែល​ខ្សោយ"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"កុំ​ប្រើ​បណ្ដាញ​វ៉ាយហ្វាយ លុះ​ត្រា​វា​មាន​ការ​តភ្ជាប់​អ៊ីនធឺណិត​ល្អ"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"ប្រើ​តែ​បណ្ដាញ​ដែល​មាន​ការ​តភ្ជាប់​អ៊ីនធឺណិត​ល្អ"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"ប្ដូរ​ទីតាំង​ដំឡើង​ដែល​ពេញ​ចិត្ត​សម្រាប់​កម្មវិធី​ថ្មីៗ"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"បិទ​កម្មវិធី​ជាប់​ជា​មួយ?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"បិទដំណើរការកម្មវិធី"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"ប្រសិន​បើ​អ្នក​បិទ​កម្មវិធីនេះ Android និង​កម្មវិធី​ផ្សេង​ទៀត​អាច​នឹង​លែង​ដំណើរការ​ដូច​ដែល​អ្នក​ចង់បាន​ទៀត​ឡើយ។"</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"លុប​ទិន្នន័យ និង​បិទ​កម្មវិធី?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"ប្រសិន​បើ​អ្នក​បិទ​កម្មវិធីនេះ Android និង​កម្មវិធី​ផ្សេង​ទៀត​អាច​នឹង​លែង​ដំណើរការ​ដូច​ដែល​អ្នក​ចង់​បាន​ទៀត​ឡើយ។ ទិន្នន័យ​របស់អ្នក​នឹង​ត្រូវ​បាន​លុប​ផង​ដែរ។"</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"បិទ​ការ​ជូន​ដំណឹង?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"បើ​អ្នក​បិទ​ការ​ជូន​ដំណឹង​សម្រាប់​កម្មវិធី​នេះ អ្នក​អាច​បាត់​ការ​ជូន​ដំណឹង និង​បច្ចុប្បន្នភាព​សំខាន់​ៗ។"</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"ហាង"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="other">បង្ហាញធាតុ %d ដែលបានលាក់</item>
       <item quantity="one">បង្ហាញធាតុ %d ដែលបានលាក់</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"បណ្តាញ និង​អ៊ីនធឺណិត"</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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"ការជូនដំណឹង"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"សារៈសំខាន់"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"មិនបាន​កំណត់"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"កុំ​បង្ហាញ​ការ​ជូនដំណឹង"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"គ្មាន​សំឡេង ឬ​ការ​រំខាន​ដល់​ការ​មើល​ឡើយ"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"បង្ហាញ​ស្ងាត់ៗ"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"បន្លឺ​សំឡេង"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"បន្លឺ​សំឡេង និង​លេច​ឡើង​នៅលើ​អេក្រង់"</string>
     <string name="importance_reset" msgid="7458420788555607007">"កំណត់​ឡើងវិញ"</string>
     <string name="show_silently" msgid="2222875799232222056">"បង្ហាញស្ងាត់ៗ"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"កុំបន្លឺសំឡេង ញ័រ ឬលោតបង្ហាញការជូនដំណឹងទាំងនេះទៅក្នុងការបង្ហាញនៃអេក្រង់បច្ចុប្បន្ន។"</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"កំពុង​ផ្ទុក​កម្មវិធី..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"ប៉ុស្តិ៍"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"រារាំងទាំងអស់"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"កុំ​បង្ហាញ​ការ​ជូនដំណឹង​ទាំង​នេះ"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"បង្ហាញ​ការ​ជូន​ដំណឹង"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"កុំ​បង្ហាញ​ការ​ជូន​ដំណឹង​នៅក្នុង​ផ្ទាំង​ទម្លាក់ ឬ​នៅលើ​ឧបករណ៍​ភ្ជាប់​ជាមួយ​កុំព្យូទ័រ"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"បង្ហាញ​ស្លាក​សញ្ញា"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"បង្ហាញ​ការ​ជូន​ដំណឹង​ជា​ស្លាកសញ្ញា​នៅ​លើ​កម្មវិធី Home នេះ ប្រសិន​បើ​​ស្គាល់។"</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>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"កុំបង្ហាញម្តងទៀត"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"ស្នើ​សុំ​ជា​"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"បញ្ចូលគណនី"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"ព័ត៌មាន​អំពី​ប្រព័ន្ធ"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"ការកំណត់ប្រវត្តិរូបការងារ"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"ការស្វែងរកទំនាក់ទំនង"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"អនុញ្ញាតការស្វែងរកទំនាក់ទំនងដោយស្ថាប័នរបស់អ្នកដើម្បីកំណត់អត្តសញ្ញាណអ្នកហៅ និងលេខទំនាក់ទំនង"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"របាយការណ៍អំពីបញ្ហាថ្មីបំផុតរបស់អ្នក"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"កំណត់ហេតុសុវត្ថិភាពថ្មីបំផុតរបស់អ្នក"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"កុំឲ្យសោះ"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"រូបថត និង​វីដេអូ"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"តន្រ្តី និង​សំឡេង"</string>
     <string name="storage_games" msgid="7703159201697117621">"ហ្គេម"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"កម្មវិធី​ផ្សេង​ទៀត"</string>
     <string name="storage_files" msgid="8581083146777364063">"ឯកសារ"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"ទំហំផ្ទុក​ក្នុង​ទូរសព្ទ"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"ប្រើ​អស់ <xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> "</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"ទំនេរ <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index 9822402..0a41c63 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"ಮಾದರಿ ಪಠ್ಯ"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Oz ನ ಅದ್ಭುತವಾದ ವಿಜಾರ್ಡ್‌"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"ಅಧ್ಯಾಯ 11: Oz ನ ಅದ್ಭುತವಾದ ಎಮೆರಾಲ್ಡ್ ಸಿಟಿ"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"ಹಸಿರು ಕನ್ನಡಕಗಳ ಮೂಲಕ ಕಣ್ಣುಗಳನ್ನು ರಕ್ಷಿಸಿಕೊಳ್ಳುತ್ತಲೇ ಡರೋಥಿ ಹಾಗೂ ಅವರ  ಸ್ನೇಹಿತರು ಮೊದಲ ಬಾರಿಗೆ ಅದ್ಭುತ ನಗರದ ವೈಭವ ಕಂಡು ವಿಸ್ಮಯಗೊಂಡರು. ಬೀದಿಗಳ ಅಕ್ಕಪಕ್ಕ ಸುಂದರವಾದ ಮನೆಗಳಿದ್ದವು. ಎಲ್ಲವನ್ನೂ ಹಸಿರು ಅಮೃತ ಶಿಲೆಯಿಂದ ಕಟ್ಟಲಾಗಿತ್ತು ಹಾಗೂ ಹೊಳೆಯುವ ಪಚ್ಚೆಗಳಿಂದ ಎಲ್ಲೆಡೆ ಅಲಂಕರಿಸಲಾಗಿತ್ತು. ಅವರು ಅದೇ ಹಸಿರು ಅಮೃತ ಶಿಲೆ ಮತ್ತು ಪಚ್ಚೆಗಳ ಸಾಲುಗಳಿಂದ ಒಟ್ಟಿಗೆ ಕೂಡಿರುವ ರಸ್ತೆಗಳು, ಹತ್ತಿರ-ಹತ್ತಿರವಾಗಿ ಹೊಂದಿಸಲಾದ ಮತ್ತು ಸೂರ್ಯನ ಪ್ರಕಾಶತೆಯಲ್ಲಿ ಹೊಳೆಯುತ್ತಿರುವ ಕಾಲುಹಾದಿಯಲ್ಲಿ ನಡೆದರು. ಕಿಟಕಿಯ ಫಲಕಗಳನ್ನು ಹಸಿರು ಗಾಜಿನಿಂದ ಮಾಡಲಾಗಿತ್ತು; ಅಲ್ಲದೆ ನಗರದ ಆಕಾಶವೂ ಹಸಿರು ಛಾಯೆಯಿಂದ ಕೂಡಿತ್ತು ಮತ್ತು ಸೂರ್ಯನ ಕಿರಣಗಳು ಹಸಿರಿನಿಂದ ಕಂಗೊಳಿಸುತ್ತಿದ್ದವು. \n\nಅನೇಕ ಜನರು, ಪುರುಷರು, ಮಹಿಳೆಯರು ಮತ್ತು ಮಕ್ಕಳು ಬಂದಿದ್ದರು, ನಡೆದಾಡುತ್ತಿದ್ದರು ಹಾಗೂ ಈ ಎಲ್ಲರೂ ಹಸಿರು ಬಟ್ಟೆಯನ್ನು ಧರಿಸಿದ್ದರು ಜೊತೆಗೆ ಹಸಿರು ಚರ್ಮ ಹೊಂದಿದ್ದರು. ಅವರು ಡರೊಥಿಯನ್ನು ನೋಡಿದರು ಮತ್ತು ಅವರು ತಮ್ಮ ಚಕಿತಗೊಳ್ಳುವ ಕಣ್ಣುಗಳಿಂದ ಕಂಪನಿಯನ್ನು ಆಶ್ಚರ್ಯದಿಂದ ನೋಡುತ್ತಿದ್ದರು ಮತ್ತು ಎಲ್ಲಾ ಮಕ್ಕಳು ಸಿಂಹವನ್ನು ನೋಡಿದ ರೀತಿಯಲ್ಲಿ ತಮ್ಮ ತಾಯಿ ಹಿಂದೆ ಅಡಗಿಕೊಂಡವು; ಆದರೆ ಯಾರೊಬ್ಬರೂ ಇವರೊಂದಿಗೆ ಮಾತನಾಡಲಿಲ್ಲ. ಅನೇಕ ಅಂಗಡಿಗಳು ಬೀದಿಯಲ್ಲಿದ್ದವು, ಡರೊಥಿ ಮೂಲಕ ನೋಡಿದಾಗ ಅವುಗಳಲ್ಲಿ ಎಲ್ಲವೂ ಹಸಿರಾಗಿ ಕಂಡಿತು. ಮಾರಾಟಕ್ಕಿಡಲಾದ ಹಸಿರು ಕ್ಯಾಂಡಿ ಮತ್ತು ಹಸಿರು ಪಾಪ್‌-ಕಾರ್ನ್‌, ಜೊತೆಗೆ ಹಸಿರು ಶೂ, ಹಸಿರು ಟೋಪಿಗಳು ಮತ್ತು ಎಲ್ಲ ವಿಂಗಡನೆಗಳ ಹಸಿರು ಬಟ್ಟೆಗಳು ಮತ್ತು ಒಂದು ಸ್ಥಳದಲ್ಲಿ ಒಬ್ಬ ವ್ಯಕ್ತಿ ಹಸಿರು ನಿಂಬೆ ಪಾನಕ ಮಾರಾಟ ಮಾಡುತ್ತಿದ್ದನು ಮತ್ತು ಇದನ್ನು ಮಕ್ಕಳು ಖರೀದಿಸಿದಾಗ ಅವರು ಹಸಿರು ನಾಣ್ಯಗಳನ್ನು ಕೊಟ್ಟು ಖರೀದಿಸುತ್ತಿರುವುದನ್ನು ನೋಡಲಾಯಿತು. \n\nಯಾವುದೇ ಕುದುರೆಗಳು ಅಥವಾ ಯಾವುದೇ ರೀತಿಯ ಪ್ರಾಣಿಗಳು ಅಲ್ಲಿ ಕಾಣುತ್ತಿರಲಿಲ್ಲ; ಮಕ್ಕಳು ಬಂಡಿಯನ್ನು ತಳ್ಳುವುದಕ್ಕೂ ಮೊದಲು, ಒಬ್ಬ ವ್ಯಕ್ತಿಯು ಸಣ್ಣ ಹಸಿರು ಬಂಡಿಗಳಲ್ಲಿ ಸುತ್ತಮುತ್ತಲಿನ ವಸ್ತುಗಳನ್ನು ಸಾಗಿಸುತ್ತಿರುವುದು ಕಂಡುಬಂದಿತು. ಎಲ್ಲರೂ ಸಂತೋಷ ಮತ್ತು ತೃಪ್ತಿ ಹಾಗೂ ಸಮೃಧ್ಧ ಭಾವನೆಯಿಂದ ಇರುವಂತೆ ತೋರುತ್ತಿತ್ತು."</string>
     <string name="font_size_save" msgid="3450855718056759095">"ಸರಿ"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB ಸಂಗ್ರಹಣೆ"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD ಕಾರ್ಡ್"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"ದೋಷ"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"ಈ ದೇಶದಲ್ಲಿ 5 GHz ಬ್ಯಾಂಡ್ ಲಭ್ಯವಿಲ್ಲ"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"ಏರ್‌ಪ್ಲೇನ್ ಮೋಡ್‌ನಲ್ಲಿ"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"ನೆಟ್‌ವರ್ಕ್‌ ಅಧಿಸೂಚನೆ"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"ಎಲ್ಲಿಯಾದರೂ ಸಾರ್ವಜನಿಕ ನೆಟ್‌ವರ್ಕ್‌ ಲಭ್ಯವಿದ್ದಲ್ಲಿ ಸೂಚಿಸಿ"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"ಕಳಪೆ ಸಂಪರ್ಕಗಳಿಂದ ದೂರವಿರು"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Wi‑Fi ನೆಟ್‌ವರ್ಕ್‌ ಉತ್ತಮ ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕ ಹೊಂದಿಲ್ಲದಿದ್ದರೆ ಅದನ್ನು ಬಳಸಬೇಡ"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"ಉತ್ತಮ ಇಂಟರ್ನೆಟ್‌ ಸಂಪರ್ಕವನ್ನು ಹೊಂದಿರುವ ನೆಟ್‌ವರ್ಕ್‌ಗಳನ್ನು ಮಾತ್ರ ಬಳಸಿ"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"ಹೊಸ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗಾಗಿ ಪ್ರಾಶಸ್ತ್ಯದ ಸ್ಥಾಪನೆ ಸ್ಥಾನವನ್ನು ಬದಲಾಯಿಸಿ"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"ಅಂತರ್‌ನಿರ್ಮಿತ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವುದೇ?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"ಅಪ್ಲಿಕೇಶನ್‌ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"ನೀವು ಈ ಅಪ್ಲಿಕೇಶನ್‌ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದರೆ, ಇನ್ನು ಮುಂದೆ Android  ಮತ್ತು ಇತರ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಉದ್ದೇಶಿಸಿದಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸದಿರಬಹುದು."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"ಡೇಟಾವನ್ನು ಅಳಿಸಿ ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವುದೇ?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"ನೀವು ಈ ಅಪ್ಲಿಕೇಶನ್‌ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದರೆ, ಇನ್ನು ಮುಂದೆ Android  ಮತ್ತು ಇತರ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಉದ್ದೇಶಿಸಿದಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸದಿರಬಹುದು. ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸಹ ಅಳಿಸಲಾಗುತ್ತದೆ."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"ಅಧಿಸೂಚನೆಗಳನ್ನು ಆಫ್‌ ಮಾಡುವುದೇ?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"ಈ ಅಪ್ಲಿಕೇಶನ್‌ಗಾಗಿ ನೀವು ಅಧಿಸೂಚನೆಗಳನ್ನು ಆಫ್‌ ಮಾಡಿದರೆ, ನೀವು ಪ್ರಮುಖ ಎಚ್ಚರಿಕೆಗಳು ಮತ್ತು ನವೀಕರಣಗಳನ್ನು ಕಳೆದುಕೊಳ್ಳಬಹುದು."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"ಅಂಗಡಿ"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="one">%d ಮರೆಮಾಡಲಾದ ಐಟಂಗಳನ್ನು ತೋರಿಸಿ</item>
       <item quantity="other">%d ಮರೆಮಾಡಲಾದ ಐಟಂಗಳನ್ನು ತೋರಿಸಿ</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"ನೆಟ್‌ವರ್ಕ್ ಮತ್ತು ಇಂಟರ್ನೆಟ್"</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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"ಅಧಿಸೂಚನೆಗಳು"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"ಪ್ರಾಮುಖ್ಯತೆ"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"ಹೊಂದಿಸಿಲ್ಲ"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"ಎಂದಿಗೂ ಅಧಿಸೂಚನೆಗಳನ್ನು ತೋರಿಸಬೇಡಿ"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"ಯಾವುದೇ ಧ್ವನಿ ಅಥವಾ ದೃಶ್ಯ ಅಡಚಣೆಗಳಿಲ್ಲ"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"ಮೌನವಾಗಿ ತೋರಿಸಿ"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"ಧ್ವನಿ ಮಾಡಿ"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"ಪರದೆಯ ಮೇಲೆ ಧ್ವನಿಮಾಡಿ ಮತ್ತು ಪಾಪ್ ಮಾಡಿ"</string>
     <string name="importance_reset" msgid="7458420788555607007">"ಮರುಹೊಂದಿಸಿ"</string>
     <string name="show_silently" msgid="2222875799232222056">"ಮೌನವಾಗಿ ತೋರಿಸು"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"ಪ್ರಸ್ತುತ ಪರದೆಯಲ್ಲಿ ಈ ಅಧಿಸೂಚನೆಗಳನ್ನು ತೋರಿಸಲು ಧ್ವನಿ, ವೈಬ್ರೇಷನ್ ಅಥವಾ ಇಣುಕು ನೋಟ ಮಾಡಬೇಡ."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"ಚಾನಲ್‌ಗಳು"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"ಎಲ್ಲವನ್ನೂ ನಿರ್ಬಂಧಿಸು"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"ಈ ಅಧಿಸೂಚನೆಗಳನ್ನು ಎಂದಿಗೂ ತೋರಿಸಬೇಡ"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"ಅಧಿಸೂಚನೆಗಳನ್ನು ತೋರಿಸು"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"ಶೇಡ್ ಅಥವಾ ಪೆರಿಪೆರಲ್ ಸಾಧನಗಳಲ್ಲಿ ಎಂದಿಗೂ ಅಧಿಸೂಚನೆಗಳನ್ನು ತೋರಿಸಬೇಡಿ"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"ಬ್ಯಾಡ್ಜ್‌ ತೋರಿಸಿ"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"ಬೆಂಬಲಿಸಿದರೆ, ಮುಖಪುಟ ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ ಬ್ಯಾಡ್ಜ್‌ಗಳಂತಿರುವ ಅಧಿಸೂಚನೆಗಳನ್ನು ತೋರಿಸಿ."</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>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"ಮತ್ತೆ ತೋರಿಸಬೇಡ"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"ಇದರಂತೆ ವಿನಂತಿಸಲಾಗುತ್ತಿದೆ"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"ಖಾತೆ ಸೇರಿಸಿ"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"ಸಿಸ್ಟಮ್ ಮಾಹಿತಿ"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"ಕೆಲಸದ ಪ್ರೊಫೈಲ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"ಸಂಪರ್ಕ ಹುಡುಕಿ"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"ಕರೆದಾತರು ಮತ್ತು ಸಂಪರ್ಕಗಳನ್ನು ಗುರುತಿಸಲು ನಿಮ್ಮ ಸಂಸ್ಥೆಯ ಮೂಲಕ ಸಂಪರ್ಕ ಹುಡುಕಾಟಗಳಿಗೆ ಅನುಮತಿಸಿ"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"ನಿಮ್ಮ ಇತ್ತೀಚಿನ ಬಗ್‌ ವರದಿ"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"ನಿಮ್ಮ ಅತ್ಯಂತ ಇತ್ತೀಚಿನ ಭದ್ರತಾ ಲಾಗ್"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"ಎಂದಿಗೂ ಇಲ್ಲ"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"ಫೋಟೋಗಳು ಮತ್ತು ವೀಡಿಯೊಗಳು"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"ಸಂಗೀತ ಮತ್ತು ಆಡಿಯೋ"</string>
     <string name="storage_games" msgid="7703159201697117621">"ಆಟಗಳು"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"ಇತರ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು"</string>
     <string name="storage_files" msgid="8581083146777364063">"ಫೈಲ್‌ಗಳು"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"ಫೋನ್ ಸಂಗ್ರಹಣೆ"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> ಬಳಸಲಾಗಿದೆ"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> ಮುಕ್ತ"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index af8153d..685a68b 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"샘플 텍스트"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"오즈의 마법사"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"11장: 오즈의 멋진 에메랄드 도시"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"도로시와 친구들은 녹색 안경으로 눈을 보호하고 있었는데도 처음에는 휘황찬란한 도시에 눈이 부셨습니다. 거리에는 녹색 대리석으로 지은 아름다운 집이 늘어서 있고 어디든지 반짝이는 에메랄드가 박혀 있었습니다. 같은 녹색 대리석으로 된 도로를 따라 걷는데 블록이 만나는 곳에는 에메랄드가 줄지어 촘촘히 박혀 있어서 햇빛에 반짝거리고 있었습니다. 창문이 녹색 유리로 되어 있었으며, 도시를 덮고 있는 하늘도 녹색을 띠고 있고 햇빛도 녹색이었습니다. \n\n남녀노소 많은 사람들이 걸어 다니고 있었는데 모두 녹색 옷을 입고 피부도 녹색을 띠고 있었습니다. 도로시와 도로시의 특이하게 모인 친구들을 놀란 눈으로 쳐다보았으며 아이들은 사자를 보자 도망가서 엄마 뒤로 숨었지만, 말을 거는 사람은 없었습니다. 거리에 많은 상점이 있었으며 도로시가 들여다보니 안에 있는 모든 것이 녹색이었습니다. 녹색 사탕과 녹색 팝콘 그리고 갖가지 녹색 신발, 녹색 모자, 녹색 옷을 팔고 있었습니다. 한 남자가 녹색 레모네이드를 팔고 있는 곳이 있었는데 아이들이 살 때 도로시가 보니 녹색 동전을 내고 있었습니다. \n\n말이나 어떤 동물도 없는 것 같았고, 남자들이 작은 녹색 손수레에 짐을 싣고 밀어서 운반했습니다. 모두 행복하고 만족스러우며 풍족해 보였습니다."</string>
     <string name="font_size_save" msgid="3450855718056759095">"확인"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB 저장소"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD 카드"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"오류"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"5GHz 대역은 이 국가에서 지원되지 않습니다."</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"비행기 모드"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"네트워크 알림"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"공용 네트워크가 사용 가능한 경우 알림"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"불량 네트워크 방지"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"인터넷 연결이 원활하지 않은 경우 Wi-Fi 네트워크를 사용하지 않음"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"인터넷 연결이 안정적인 네트워크만 사용합니다."</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"새 앱의 기본 설치 위치를 변경합니다."</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"내장 앱을 사용중지하시겠습니까?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"앱 사용 중지"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"이 앱을 사용 중지하면 Android와 다른 앱이 제대로 작동하지 않을 수도 있습니다."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"데이터를 삭제하고 앱을 사용 중지하시겠습니까?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"이 앱을 사용 중지하면 Android와 다른 앱이 제대로 작동하지 않을 수도 있습니다. 또한 데이터가 삭제됩니다."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"알림을 사용 중지하시겠습니까?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"이 앱에서 알림을 사용하도록 설정하지 않으면 중요한 알리미와 업데이트를 놓칠 수 있습니다."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"스토어"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="other">%d개의 숨겨진 항목 표시</item>
       <item quantity="one">%d개의 숨겨진 항목 표시</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"네트워크 및 인터넷"</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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"알림"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"중요도"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"설정되지 않음"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"알림 표시 안함"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"소리나 시각적인 방해 없음"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"조용히 표시"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"소리로 알림"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"소리 및 화면 표시로 알림"</string>
     <string name="importance_reset" msgid="7458420788555607007">"초기화"</string>
     <string name="show_silently" msgid="2222875799232222056">"조용히 표시"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"현재 화면에서 소리, 진동, 알림 표시를 허용하지 않습니다."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"앱 로드 중..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"채널"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"모두 차단"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"이러한 알림을 다시 표시하지 않음"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"알림 표시"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"알림을 창이나 주변기기에 표시하지 않음"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"배지 표시"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"지원되는 경우 Home 앱에서 알림을 배지로 표시"</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>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"다시 표시 안 함"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"요청 계정:"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"계정 추가"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"시스템 정보"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"직장 프로필 설정"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"연락처 검색"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"조직에서 연락처를 검색하여 발신자 및 연락처를 확인할 수 있도록 허용합니다."</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"최근 버그 신고"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"최근 보안 로그"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"사용 안함"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"사진 및 동영상"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"음악 및 오디오"</string>
     <string name="storage_games" msgid="7703159201697117621">"게임"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"기타 앱"</string>
     <string name="storage_files" msgid="8581083146777364063">"파일"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"휴대전화 저장용량"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>"<xliff:g id="UNIT">^2</xliff:g> 사용"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> 사용 가능"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index 2c39a8a..57387d1 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -85,8 +85,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Үлгү текст"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Оз өлкөсүнүн ажайып сыйкырчысы"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"11-бөлүм: Оз өлкөсүнүн ажайып зумурут шаары"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Жашыл көз айнек тагынып турса да, Дороти менен достору жаркыраган ажайып шаарды көргөндө көздөрү уялып кетти. Шаардын көчөлөрүндөгү үйлөр жалаң гана жашыл мрамордон курулуп, күндүн нуруна чагылышып жалт-жулт эткен зымырыт таштары менен капталган. Жада калса алар өтүп бара жаткан көпүрө да жашыл мрамордон курулган экен. Бут астындагы мрамор төшөмөлөрдүн ортолору зымырыт таштары менен толтурулуп, алар күн нуруна жарк-журк этет. Терезелерге да жашыл айнек коюлуп, шаар үстүндө асман да, күн нурлары да жашыл түскө боёлуп турду. \n\nКөчөдө ары-бери өткөн адамдар да жашыл кийимдерди кийип, өңү-түстөрү да жашгылт тартып турат экен. Дороти менен анын кызыктай досторунун жанынан өткөн адамдар аларды айран таң калып карап, арстанды көргөн кичинекей балдар энелеринин аркаларына жашына калып жатышты. Шаардыктардын эч кимиси алардын жанына барып, сүйлөшүүгө даай алышкан жок. Дороти шаардын дүкөндөрүндө сатылып жаткан көйнөктөр, кийим-кечелер, бут кийимдер, шляпалар, момпосуйлар, жада калса, бадырак жүгөрүлөр да жашыл түстө экендигин байкады. Бир жерде балдар жашыл тыйындарды төлөп жашыл лимонад алып жатышат. \n\nШаарда, сыягы, жылкылар жана башка жаныбарлар жок окшойт, себеби эркектер буюмдарын жашыл арабаларга салып түртүп алышкан. Элдин баары бактылуу, жашоосуна ыраазы жана гүлдөп тургандай туюлду."</string>
     <string name="font_size_save" msgid="3450855718056759095">"Жарайт"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB сактагыч"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD карта"</string>
@@ -670,8 +669,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Ката"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"5 ГГц жыштык тилкеси бул өлкөдө жеткиликтүү эмес"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"Учак тартибинде"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Тармак эскертмеси"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Коомдук тармак жеткиликтүү болгондо эскертме берилсин"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Начар байланыштарга кошулбоо"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Жакшы интернет байланыш болмоюнча Wi‑Fi түйүнүн колдонбоо"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Туруктуу Интернет туташуусу менен камсыз кылган тармактар гана колдонулсун"</string>
@@ -1535,11 +1540,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Жаңы колдонмолор үчүн орнотуу жайын алмаштырыңыз"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Камтылган колд. токтотулсунбу?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Колдонмону өчүрүү"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Эгер бул колдонмону өчүрсөңүз, Android жана башка колдонмолор талаптагыдай иштебей калышы мүмкүн."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Берилиштер жок кылынып, колдонмо өчүрүлсүнбү?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Эгер бул колдонмону өчүрсөңүз, Android жана башка колдонмолор талаптагыдай иштебей калышы мүмкүн. Дайындарыңыз да жок болот."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Эскертмелер өчүрүлсүнбү?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Эгер сиз бул колдонмо үчүн эскертмелерди өчүрсөңүз, сиз маанилүү эскертүүлөрдү жана жаңыртууларды өткөзүп жиберишиңиз мүмкүн."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Дүкөн"</string>
@@ -2526,8 +2529,7 @@
       <item quantity="other">Жашырылган %d нерсе көрсөтүлсүн</item>
       <item quantity="one">Жашырылган %d нерсе көрсөтүлсүн</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Тармак жана Интернет"</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>
@@ -2653,16 +2655,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Эскертмелер"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Маанилүүлүгү"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Коюлган эмес"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Эскертмелер эч качан көрсөтүлбөсүн"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Добуш да чыгарбасын, экранда да көрсөтүлбөсүн"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Үнсүз көрсөтүлсүн"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Добуш чыгарсын"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Добуш менен экранга калкып чыксын"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Баштапкы абалга келтирүү"</string>
     <string name="show_silently" msgid="2222875799232222056">"Үнсүз көрсөтүлсүн"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Үн чыгарылбасын, дирилдебесин же бул эскертмелер учурдагы экранда көрүнбөсүн."</string>
@@ -2691,16 +2688,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Колдонмолор жүктөлүүдө…"</string>
     <string name="notification_channels" msgid="8681423709659818791">"Каналдар"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Баарын бөгөттөө"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Бул эскертмелер эч качан көрсөтүлбөсүн"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Эскертмелерди көрсөтүү"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Эскертмелер эч качан көлөкөдө же сырткы түзмөктөрдө көрсөтүлбөсүн"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Бейджикти көрсөтүү"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Эгер колдоого алынса, эскертмелер Home колдонмосунда бейджик түрүндө көрсөтүлсүн."</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>
@@ -3223,8 +3215,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Экинчи көрсөтүлбөсүн"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Төмөнкү катары талап кылууда"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Каттоо эсебин кошуу"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Тутумдун маалыматы"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Жумуш профилинин жөндөөлөрү"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Байланыштарды издөө"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Чалуучуларды жана байланыштарды аныктоо үчүн ишканаңыз байланыштарды издешине уруксат бериңиз"</string>
@@ -3315,16 +3306,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Мүчүлүштүк тууралуу акыркы кабарлооңуз"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Түзмөгүңүздүн эң акыркы коопсуздук таржымалы"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Эч качан"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Сүрөттөр жана видеолор"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Музыка жана аудио"</string>
     <string name="storage_games" msgid="7703159201697117621">"Оюндар"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Башка колдонмолор"</string>
     <string name="storage_files" msgid="8581083146777364063">"Файлдар"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Телефондун сактагычы"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> ээленген"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> бош"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index daa608e..f4a8634 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"ຂໍ້ຄວາມຕົວຢ່າງ"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"ພໍ່ມົດອັດສະຈັນແຫ່ງອອດຊ໌"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"ບົດທີ 11: ເມືອງມໍລະກົດອັນໜ້າອັດສະຈັນຂອງອອດຊ໌"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Even with eyes protected by the green spectacles Dorothy and her friends were at first dazzled by the brilliancy of the wonderful City. The streets were lined with beautiful houses all built of green marble and studded everywhere with sparkling emeralds. They walked over a pavement of the same green marble, and where the blocks were joined together were rows of emeralds, set closely, and glittering in the brightness of the sun. The window panes were of green glass; even the sky above the City had a green tint, and the rays of the sun were green. \n\nThere were many people, men, women and children, walking about, and these were all dressed in green clothes and had greenish skins. They looked at Dorothy and her strangely assorted company with wondering eyes, and the children all ran away and hid behind their mothers when they saw the Lion; but no one spoke to them. Many shops stood in the street, and Dorothy saw that everything in them was green. Green candy and green pop-corn were offered for sale, as well as green shoes, green hats and green clothes of all sorts. At one place a man was selling green lemonade, and when the children bought it Dorothy could see that they paid for it with green pennies. \n\nThere seemed to be no horses nor animals of any kind; the men carried things around in little green carts, which they pushed before them. Everyone seeemed happy and contented and prosperous."</string>
     <string name="font_size_save" msgid="3450855718056759095">"ຕົກລົງ"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"ບ່ອນຈັດເກັບຂໍ້ມູນ USB"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD card"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"ຜິດພາດ"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"ຄື້ນ 5 GHz ແມ່ນ​ບໍ່​ມີ​ຢູ່​ໃນ​ປະ​ເທດ​ນີ້"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"ໃນໂໝດການໃຊ້ເທິງຍົນ"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"ການແຈ້ງເຕືອນເຄືອຂ່າຍ"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"ແຈ້ງ​ເຕືອນ​ເມື່ອ​ມີ​ເຄືອ​ຂ່າຍ​ສາ​ທາ​ລະ​ນະ​ທີ່​ສາ​ມາດ​ໃຊ້​ໄດ້"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"ຫຼີກເວັ້ນເຄືອຂ່າຍທີ່ສັນຍານອ່ອນ"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"ບໍ່ໃຊ້ເຄືອຂ່າຍ Wi-Fi ເວັ້ນເສຍແຕ່ມັນຈະມີຄວາມໄວການເຊື່ອມຕໍ່ອິນເຕີເນັດທີ່ດີ."</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"ໃຊ້​ສະ​ເພາະ​ເຄືອ​ຂ່າຍ​ທີ່​ມີ​ການ​ເຊື່ອມ​ຕໍ່​ອິນ​ເຕີ​ເນັດ​ທີ່​ດີ​ເທົ່າ​ນັ້ນ"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"ປ່ຽນບ່ອນຕິດງຕັ້ງທີ່ຕ້ອງການສຳລັບແອັບຯໃໝ່"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"ປິດການນຳໃຊ້ແອັບຯທີ່ມາກັບເຄື່ອງ?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"ປິດການນຳໃຊ້ແອັບ"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"ຫາກທ່ານປິດການນຳໃຊ້ແອັບນີ້, Android ແລະ ແອັບອື່ນອາດບໍ່ສາມາດເຮັດວຽກຕາມທີ່ຖືກອອກແບບມາໄດ້."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"ລຶບຂໍ້ມູນ ແລະປິດການນຳໃຊ້ແອັບຯ?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"ຖ້າທ່ານປິດການນຳໃຊ້ແອັບນີ້, Android ແລະ ແອັບອື່ນອາດບໍ່ເຮັດໜ້າທີ່ຕາມທີ່ກຳນົດໄວ້ໄດ້. ຂໍ້ມູນຂອງທ່ານກໍຈະຖືກລຶບອອກໄປນຳ."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"ປິດການແຈ້ງເຕືອນ?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"ຫາກທ່ານປິດການແຈ້ງເຕືອນສຳລັບແອັບຯນີ້ແລ້ວ ທ່ານອາດພາດການແຈ້ງເຕືອນ ແລະອັບເດດສຳຄັນໄດ້."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"ຮ້ານຄ້າ"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="other">ສະແດງ %d ລາຍການທີ່ເຊື່ອງໄວ້</item>
       <item quantity="one">ສະແດງ %d ລາຍການທີ່ເຊື່ອງໄວ້</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"ເຄືອຂ່າຍ ແລະ ອິນເຕີເນັດ"</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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"ການແຈ້ງເຕືອນ"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"ຄວາມສໍາຄັນ"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"ບໍ່ໄດ້ຕັ້ງ"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"ຢ່າສະແດງການແຈ້ງເຕືອນອີກ"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"ບໍ່ມີສຽງ ຫຼື ການລົບກວນໃນໜ້າຈໍ"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"ສະແດງແບບງຽບໆ"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"ເຮັດສຽງ"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"ເຮັດສຽງດັງ ແລະ ສະແດງຂຶ້ນໃນໜ້າຈໍ"</string>
     <string name="importance_reset" msgid="7458420788555607007">"ຣີເຊັດ"</string>
     <string name="show_silently" msgid="2222875799232222056">"ສະແດງແບບມິດໆ"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"ບໍ່ໃຊ້ສຽງ, ສັ່ນ ຫຼື ເຫັນການແຈ້ງເຕືອນເຫຼົ່ານີ້ໃນໜ້າຈໍປັດຈຸບັນ."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"​ກຳ​ລັງ​ໂຫລດ​ແອັບຯ..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"ຊ່ອງ"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"ບ​ລັອກ​ທັງ​ໝົດ"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"ຢ່າສະແດງການແຈ້ງເຕືອນເຫຼົ່ານີ້ອີກ"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"ສະແດງການແຈ້ງເຕືອນ"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"ຢ່າສະແດງການແຈ້ງເຕືອນໃນເງົາ ຫຼື ອຸປະກອນຕໍ່ພ່ວງອີກ."</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"ສະແດງປ້າຍ"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"ສະແດງການແຈ້ງເຕືອນເປັນປ້າຍໃນແອັບ Home ແທນ, ຫາກຮອງຮັບ."</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>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"ບໍ່ຕ້ອງສະແດງອີກ"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"​ກຳ​ລັງ​ຮ້ອງ​ຂໍ​ໃນ​ນາມ"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"ເພີ່ມບັນຊີ"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"ຂໍ້ມູນລະບົບ"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"ການຕັ້ງຄ່າໂປຣໄຟລ໌ບ່ອນເຮັດວຽກ"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"ຊອກຫາລາຍຊື່ຜູ້ຕິດຕໍ່"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"ອະນຸຍາດໃຫ້ລາຍຊື່ຜູ້ຕິດຕໍ່ຊອກຫາໂດຍອົງກອນຂອງທ່ານໄດ້ເພື່ອຢືນຢັນຜູ້ໂທ ແລະ ລາຍຊື່ຜູ້ຕິດຕໍ່ຕ່າງໆ"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Your most recent bug report"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Your most recent security log"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"ບໍ່ມີກຳນົດ"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"ຮູບພາບ ແລະ ວິດີໂອ"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Music &amp; Audio"</string>
     <string name="storage_games" msgid="7703159201697117621">"ເກມ"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"ແອັບຯອື່ນໆ"</string>
     <string name="storage_files" msgid="8581083146777364063">"ໄຟລ໌"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Phone Storage"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> ໃຊ້ໄປແລ້ວ"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"ຫວ່າງ <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index f88396e..27ecfa0 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -88,8 +88,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Pavyzdinis tekstas"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Nuostabusis Ozo šalies burtininkas"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"11 skyrius. Nuostabusis Smaragdo miestas"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Netgi žaliais akiniais apsaugoję akis Dorotė ir jos draugai iš pradžių buvo apstulbinti nuostabiojo miesto žvilgesiu. Gatvėse stovėjo gražūs namai, pastatyti iš žalio marmuro ir nusagstyti žvilgančiais smaragdais. Jie ėjo tokiu pačiu žaliu marmuru grįstu šaligatviu, o kvartalų sujungimo vietos buvo papuoštos viena šalia kitos esančiomis saulėje žvilgančių smaragdų eilėmis. Langų stiklai buvo žali, netgi dangaus virš miesto ir saulės spindulių spalva buvo žalia. \n\nMieste buvo daug žmonių (vyrų, moterų ir vaikų), kurie vaikščiojo apsirengę žaliais drabužiais. Jų oda buvo žalsvos spalvos. Į Dorotę ir jos keistą draugiją visi žiūrėjo su nuostaba, o pamatę Liūtą vaikai bėgo tolyn ir slėpėsi už savo mamų, tačiau niekas su jais nešnekėjo. Gatvėse buvo daug parduotuvių, o Dorotė pastebėjo, kad jose viskas taip pat buvo žalios spalvos. Viduje buvo parduodami žali saldainiai ir žali kukurūzų spragėsiai bei įvairūs žali batai, žalios kepurės ir žali drabužiai. Vienoje vietoje vyras siūlė nusipirkti žalio limonado ir Dorotė pastebėjo, kad jį perkantys vaikai atsiskaitė žaliomis monetomis. \n\nMieste nebuvo arklių ar kitų gyvūnų. Vyrai viską vežiojo mažais žaliais priekyje stumiamais vežimais. Visi atrodė laimingi, patenkinti ir turtingi."</string>
     <string name="font_size_save" msgid="3450855718056759095">"Gerai"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB atmintinė"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD kortelė"</string>
@@ -689,8 +688,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Klaida"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"5 GHz juosta neprieinama šioje šalyje"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"Veikia lėktuvo režimu"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Tinklo įspėjimas"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Pranešti, kai pasiekiamas viešasis tinklas"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Vengti prasto ryšio"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Nenaudoti „Wi-Fi“ tinklo, jei jo interneto ryšys nėra geras"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Naudoti tik tuos tinklus, kurių stiprus interneto ryšys"</string>
@@ -1558,11 +1563,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Pakeisti pageidaujamą naujų programų diegimo vietą"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Neleisti integruotos programos?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Išjungti programą"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Jei išjungsite šią programą, „Android“ ir kitos programos gali neveikti, kaip numatyta."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Ištrinti duomenis ir neleisti programos?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Jei išjungsite šią programą, „Android“ ir kitos programos gali neveikti, kaip numatyta. Be to, bus ištrinti duomenys."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Išjungti pranešimus?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Jei išjungsite šios programos pranešimus, galite praleisti svarbius įspėjimus ir naujinius."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Parduotuvė"</string>
@@ -2571,8 +2574,7 @@
       <item quantity="many">Rodyti %d paslėpto elemento</item>
       <item quantity="other">Rodyti %d paslėptų elementų</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Tinkas ir internetas"</string>
     <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>
@@ -2698,16 +2700,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Pranešimai"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Svarba"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Nenustatyta"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Niekada nerodyti pranešimų"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Neskambėti ir nepertraukti vaizdo"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Rodyti tyliai"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Skambėti"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Skambėti ir iššokti ekrane"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Nustatyti iš naujo"</string>
     <string name="show_silently" msgid="2222875799232222056">"Rodyti tyliai"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Neskambėti, nevibruoti arba nerodyti šių pranešimų dabartiniame ekrane."</string>
@@ -2738,16 +2735,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Įkeliamos programos..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Kanalai"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Blokuoti viską"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Niekada nerodyti šių pranešimų"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Rodyti pranešimus"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Niekada nerodyti pranešimų skydelyje ar išoriniuose įrenginiuose"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Rodyti ženklelį"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"„Home“ programoje rodyti pranešimus kaip ženklelius, jei tai palaikoma."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"Nepaisyti netrukdymo režimo"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Leisti ir toliau teikti šiuos pranešimus, kai netrukdymo režimas nustatytas į „Tik prioritetiniai“"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"Užrakinimo ekrane"</string>
@@ -3290,8 +3282,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Daugiau nerodyti"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Užklausa pateikiama kaip"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Pridėti paskyrą"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Sistemos informacija"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Darbo profilio nustatymai"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Kontaktų paieška"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Leiskite nustatyti skambintojus ir kontaktus atliekant organizacijos kontaktų paiešką"</string>
@@ -3390,16 +3381,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Pats naujausias pranešimas apie riktą"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Pats naujausias saugos žurnalas"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Niekada"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Nuotraukos ir vaizdo įrašai"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Muzika ir garso įrašai"</string>
     <string name="storage_games" msgid="7703159201697117621">"Žaidimai"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Kitos programos"</string>
     <string name="storage_files" msgid="8581083146777364063">"Failai"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Telefono saugykla"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"Panaudota: <xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g>"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> nemokamai"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g> %%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 6c39b30..55be0d4 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -87,8 +87,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Teksta paraugs"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Brīnumainais burvis no Oza zemes"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"11. nodaļa: Oza zemes brīnumainā Smaragda pilsēta"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Pat raugoties caur zaļajām brillēm, kas sargāja acis, Dorotija un viņas draugi sākotnēji apžilba no brīnišķīgās pilsētas spožuma. Ielas greznoja skaisti zaļa marmora nami, viscaur izgreznoti ar vizuļojošu smaragdu. Ielas bija izklātas ar tāda paša zaļa marmora bruģi, kura bluķu spraugās bija iestrādātas cieši kopā saliktu smaragdu rindas, kas laistījās saules gaismā. Logos bija zaļa stikla rūtis; pat debesīm virs pilsētas bija zaļa nokrāsa, un arī saules stari šķita zaļi. \n\nIelās bija daudz ļaužu — gan vīrieši, gan sievietes, gan bērni —, un visi bija tērpušies zaļās drēbēs, un tiem bija zaļgana āda. Cilvēki ar izbrīnu uzlūkoja Dorotiju un viņas savādos pavadoņus, un, ieraugot Gļēvo Lauvu, bērni bēga un slēpās aiz savām mātēm. Taču neviens viņus neuzrunāja. Visapkārt bija daudz veikalu, un Dorotija ievēroja, ka arī tajos viss ir zaļš. Tika piedāvātas gan zaļas ledenes un zaļi kukurūzas našķi, gan zaļas kurpes, zaļas cepures un visu veidu zaļas drēbes. Kāds vīrs tirgoja zaļu limonādi, un Dorotija redzēja, ka bērni to pērk, maksājot ar zaļiem penijiem. \n\nNekur nemanīja nevienu zirgu vai citu dzīvnieku; vīri pārvadāja lietas mazos zaļos ratiņos, kurus tie ejot stūma pa priekšu. Visi šķita laimīgi, apmierināti un pārtikuši."</string>
     <string name="font_size_save" msgid="3450855718056759095">"Labi"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB krātuve"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD karte"</string>
@@ -680,8 +679,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Kļūda"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"5 GHz josla nav pieejama šajā valstī."</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"Lidmašīnas režīmā"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Tīkla paziņojums"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Paziņot, kad ir pieejams publisks tīkls"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Nelietot vājus savienojumus"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Nelietot Wi-Fi tīklu, ja vien tam nav labs interneta savienojums"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Izmantot tikai tīklus ar labu interneta savienojumu"</string>
@@ -1547,11 +1552,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Mainīt jaunu lietotņu vēlamo instalēšanas vietu"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Vai atspējot iebūvēto lietotni?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Atspējot lietotni"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Ja atspējosiet šo lietotni, Android un citas lietotnes, iespējams, vairs nedarbosies, kā paredzēts."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Vai dzēst datus un atspējot lietotni?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Ja atspējosiet šo lietotni, Android un citas lietotnes, iespējams, vairs nedarbosies, kā paredzēts. Tiks izdzēsti arī jūsu dati."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Vai izslēgt paziņojumus?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Izslēdzot paziņojumus šajā lietotnē, varat palaist garām svarīgus brīdinājumus un atjauninājumus."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Veikals"</string>
@@ -2549,8 +2552,7 @@
       <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 (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"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>
@@ -2676,16 +2678,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Paziņojumi"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Svarīgums"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Nav iestatīts"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Nekad nerādīt paziņojumus"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Bez skaņas signāla vai vizuāla paziņojuma"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Rādīt bez skaņas signāla"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Atskaņot skaņas signālu"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Atskaņot skaņas signālu un īslaicīgi parādīt ekrānā"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Atiestatīt"</string>
     <string name="show_silently" msgid="2222875799232222056">"Rādīt bez skaņas signāla"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Nerādīt šos paziņojumus pašreizējā ekrāna skatā, kā arī neatskaņot to skaņas signālu un nevibrēt"</string>
@@ -2715,16 +2712,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Notiek lietotņu ielāde..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Kanāli"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Bloķēt visus"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Nekad nerādīt šos paziņojumus"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Rādīt paziņojumus"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Nekad nerādīt paziņojumus panelī vai perifērijas ierīcēs"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Rādīt emblēmu"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Ja tiek atbalstīts, rādīt paziņojumus kā emblēmas lietotnē Sākums."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"Ignorēt režīmu “Netraucēt”"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Ļaut šiem paziņojumiem pārtraukt arī turpmāk, ja režīms “Netraucēt” ir iestatīts uz “Tikai prioritārie”"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"Bloķēšanas ekrānā"</string>
@@ -3256,8 +3248,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Vairs nerādīt"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Pieprasījums tiks iesniegts, izmantojot kontu"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Pievienot kontu"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Sistēmas informācija"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Darba profila iestatījumi"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Kontaktpersonu meklēšana"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Atļaut identificēt zvanītājus un kontaktpersonas, kad organizācijā tiek meklētas kontaktpersonas"</string>
@@ -3352,16 +3343,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Jūsu pēdējais kļūdas pārskats"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Jūsu pēdējais drošības žurnāls"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Nekad"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Fotoattēli un videoklipi"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Mūzika un audio"</string>
     <string name="storage_games" msgid="7703159201697117621">"Spēles"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Citas lietotnes"</string>
     <string name="storage_files" msgid="8581083146777364063">"Faili"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Tālruņa krātuve"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> izmantoti"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> bez maksas"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index 63c7758..a8d1a89 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Примерок на текст"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Чудесниот волшебник од Оз"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Поглавје 11: Чудесниот смарагден град Оз"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"И покрај тоа што очите им беа заштитени со зелени очила, во почетокот Дороти и нејзините пријатели беа заслепени од блескотот на прекрасниот град. По должината на улиците имаше редици прекрасни куќи, изградени од зелен мермер и украсени насекаде со блескави смарагди. Одеа по тротоар од зелен мермер, а на местата каде што се спојуваа мермерните плочи имаше низи од смарагди што наредени една до друга светкаа на сонцето. Стаклата на прозорците беа зелени, дури и небото над градот беше зеленикаво, па и самите сончеви зраци се зеленееја. \n\nПокрај нив поминуваа многу луѓе - мажи, жени и деца - сите беа облечени во зелени облеки и имаа зеленикава кожа. Чудејќи се, ги погледнуваа Дороти и нејзиното необично друштво, а сите деца бегаа од нив и се криеја зад своите мајки штом ќе го забележеа лавот; но никој не им се обрати. На улицата имаше многу дуќани и Дороти забележа дека и во нив сѐ е зелено. Тука се продаваа зелени бонбони и зелени пуканки, како и зелени чевли и зелена облека од сите видови. На едно место некој човек продаваше зелена лимонада. Кога децата ја купуваа, Дороти виде дека ја плаќаат со зелени парички. \n\nТука, изгледа, немаше ни коњи ни некои други животни; луѓето туркаа пред себе мали зелени колички и секој изгледаше среќен и задоволен како да живее во благосостојба."</string>
     <string name="font_size_save" msgid="3450855718056759095">"Во ред"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"УСБ меморија"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD картичка"</string>
@@ -658,7 +657,7 @@
     <string name="android_beam_off_summary" msgid="4663095428454779138">"Исклучено"</string>
     <string name="android_beam_disabled_summary" msgid="1737782116894793393">"Недостапен зашто комуникацијата на блиско поле (NFC) е исклучен"</string>
     <string name="android_beam_label" msgid="6257036050366775040">"Android Beam"</string>
-    <string name="android_beam_explained" msgid="1810540319385192758">"Кога функцијава е вклучена, може да вршите beam на содржината на апликацијата на друг уред со опција за NFC со држење на уредите блиску еден до друг. На пример, може да вршите beam на веб-страници, видеа на YouTube, контакти од лица и др.\n\nСамо приближете ги уредите еден до друг (обично од задната страна), а потоа допрете го вашиот екран. Апликацијата утврдува на што ќе се изврши вршите beam."</string>
+    <string name="android_beam_explained" msgid="1810540319385192758">"Кога функцијава е вклучена, може да вршите пренос на содржината на апликацијата на друг уред со опција за NFC со држење на уредите блиску еден до друг. На пример, може да вршите пренос на веб-страници, видеа на YouTube, контакти од лица и др.\n\nСамо приближете ги уредите еден до друг (обично од задната страна), а потоа допрете го вашиот екран. Апликацијата утврдува што ќе се пренесе."</string>
     <string name="wifi_quick_toggle_title" msgid="8850161330437693895">"Wi-Fi"</string>
     <string name="wifi_quick_toggle_summary" msgid="2696547080481267642">"Вклучи Wi-Fi"</string>
     <string name="wifi_settings" msgid="29722149822540994">"Wi-Fi"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Грешка"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"Појас од 5 GHz не е достапен во земјава"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"Во режим на работа во авион"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Известување за мрежа"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Извести кога ќе има достапна јавна мрежа"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Избегнувај слаби поврзувања"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Не користи Wi-Fi мрежа, освен ако има добро поврзување со интернет"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Користи само мрежи со добро поврзување на интернет"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Променете ја претпочитаната локација на инсталирање за нови апликации."</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Оневозможи вградена апликација?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Оневозможете ја апликацијата"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Ако ја оневозможите оваа апликација, Android и другите апликации можеби веќе нема да функционираат како што треба."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Избриши ги податоците и оневозможи ја апликацијата?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Ако ја оневозможите оваа апликација, Android и другите апликации можеби веќе нема да функционираат како што треба. Освен тоа, ќе се избришат и вашите податоци."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Исклучи известувања?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Ако ги исклучите известувањата за оваа апликација, може да пропуштите важни предупредувања и ажурирања."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Продавница"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="one">Прикажи %d сокриена ставка</item>
       <item quantity="other">Прикажи %d сокриени ставки</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Мрежа и интернет"</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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Известувања"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Важност"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Не е поставено"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Никогаш не прикажувај известувања"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Без звук или визуелен прекин"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Прикажи тивко"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Испушти звук"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Испушти звук и прикажи го на екранот"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Ресетирај"</string>
     <string name="show_silently" msgid="2222875799232222056">"Покажи тивко"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Прикажувај ги овие апликации на тековниот екран без звук, вибрации или ѕиркање."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Вчитување апликации…"</string>
     <string name="notification_channels" msgid="8681423709659818791">"Канали"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Блокирај ги сите"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Никогаш не прикажувај ги известувањава"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Прикажувај известувања"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Никогаш не прикажувај известувања во сенка или на периферни уреди"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Прикажи значка"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Прикажувај ги известувањата како значки во апликацијата Home, ако е поддржано."</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>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Не покажувај повторно"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Бара како"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Додај сметка"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Системски информации"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Поставки на работен профил"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Пребарување контакти"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Дозволете при пребарувањата контакти на вашата организација да се препознаваат повикувачи и контакти"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Вашиот најнов извештај за грешки"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Вашиот најнов безбедносен дневник"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Никогаш"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Фотографии и видеа"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Музика и аудио"</string>
     <string name="storage_games" msgid="7703159201697117621">"Игри"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Други апликации"</string>
     <string name="storage_files" msgid="8581083146777364063">"Датотеки"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Простор на телефонот"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> искористен простор"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> слободен простор"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index 3a9ea48..5537d6e 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"സാമ്പിൾ ടെക്‌സ്റ്റ്"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"ഓസ് നഗരത്തിലെ അതിശയിപ്പിക്കുന്ന മന്ത്രവാദി"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"അധ്യായം 11: ഓസ് എന്ന അത്ഭുതകരമായ മരതകനഗരം"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"പച്ചക്കണ്ണടകൾ കൊണ്ട് കണ്ണുകൾ പരിരക്ഷിച്ച നിലയിലായിരുന്നുവെങ്കിലും, അത്ഭുതകരമായ നഗരത്തിന്റെ ഹരിതദീപ്തി കണ്ട് ഡൊറോത്തിയും കൂട്ടുകാരും അന്തംവിട്ടുപോയി. തെരുവുകളുടെ ഇരുഭാഗത്തും പച്ച മാർബിളുകൾ കൊണ്ട് നിർമ്മിച്ച കെട്ടിടങ്ങൾ നിരന്നുനിന്നിരുന്നു, എല്ലായിടത്തും തിളങ്ങുന്ന മരതകം പതിച്ചിട്ടുണ്ടായിരുന്നു. വീടുകൾ നിർമ്മിച്ചിരുന്ന അതേ പച്ച മാർബിൾ പതിച്ച നടപ്പാതയിലൂടെ അവർ നടന്നു, നടപ്പാതയിൽ വിരിച്ചിരുന്ന മാർബിൾ ബ്ലോക്കുകൾ കൂടിച്ചേരുന്ന ഇടങ്ങളിൽ മരതകത്തിന്റെ നിരകൾ കാണാനുണ്ടായിരുന്നു. സൂര്യവെളിച്ചത്തിൽ, അടുത്തടുത്തായി അടുക്കിയിരുന്ന മരതകങ്ങൾ വെട്ടിത്തിളങ്ങി. വീടുകളുടെ ജാലകങ്ങൾ പച്ച നിറത്തിൽ ഉള്ളവയായിരുന്നു. നഗരത്തിന് മുകളിലെ ആകാശം ഹരിതാഭമായിരുന്നു, സൂര്യപ്രകാശം പോലും പച്ചയായിരുന്നു. \n\nപുരുഷന്മാരും സ്ത്രീകളും കുട്ടികളും ഉൾപ്പെടെ അനേകം പേർ അവിടവിടെ നടന്നിരുന്നു. എല്ലാവരും അണിഞ്ഞിരുന്നത് പച്ച വസ്ത്രങ്ങളായിരുന്നു, അവരുടെ ചർമ്മവും പച്ചയായിരുന്നു. ഡൊറോത്തിയെയും അവളുടെ വിചിത്രരായ കൂട്ടുകാരെയും അവർ അത്ഭുതത്തോടെ നോക്കി. സിംഹത്തെ കണ്ട കുട്ടികൾ ഓടിപ്പോയി, അവരുടെ അമ്മമാരുടെ പിന്നിലൊളിച്ചു. എന്നാൽ, ആരും ഡോറോത്തിയോടും കൂട്ടുകാരോടും സംസാരിച്ചില്ല. തെരുവിൽ പല തരത്തിലുള്ള കടകളും ഉണ്ടായിരുന്നു. അവയിൽ ഉണ്ടായിരുന്നവയെല്ലാം പച്ച നിറത്തിലായിരുന്നു. പച്ച മിഠായികളും പച്ച പോപ് കോണും വിൽപ്പനയ്ക്ക് വച്ചിരുന്നു. കൂടാതെ വിൽപ്പനയ്ക്ക് വച്ചിരുന്ന ഷൂകളും തൊപ്പികളും വസ്ത്രങ്ങളും പച്ച നിറത്തിൽ തന്നെയായിരുന്നു. ഒരിടത്ത് ഒരു മനുഷ്യൻ പച്ച ലെമൊനേഡ് വിൽക്കുന്നത് അവർ കണ്ടു. അത് വാങ്ങുന്നതിന് കുട്ടികൾ കൊടുക്കുന്ന നാണയങ്ങളും പച്ച നിറത്തിലായിരുന്നുവെന്നത് ഡോറോത്തിയെ അത്ഭുതപ്പെടുത്തി. \n\nകുതിരകളെയും മറ്റ് തരത്തിലുള്ള മൃഗങ്ങളെയോ അവിടെ കാണാനുണ്ടായിരുന്നില്ല. ചെറിയ പച്ച വണ്ടികളിൽ ആളുകൾ സാധനങ്ങൾ തള്ളിക്കൊണ്ട് പോകുന്നത് ഡോറോത്തിയും കൂട്ടുകാരും കണ്ടു. അവിടെ ഉണ്ടായിരുന്നവരെല്ലാം സംതൃപ്തരായും സന്തോഷവാന്മാരായും സമ്പന്നരായും കാണപ്പെട്ടു."</string>
     <string name="font_size_save" msgid="3450855718056759095">"ശരി"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB സ്റ്റോറേജ്"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD കാർഡ്"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"പിശക്"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"ഈ രാജ്യത്ത് 5 GHz ബാൻഡ് ലഭ്യമല്ല"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"വിമാന മോഡിലാണ്"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"നെറ്റ്‌വർക്ക് അറിയിപ്പ്"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"പൊതുവായ ഒരു നെറ്റ്‌വർക്ക് എപ്പോഴെങ്കിലും ലഭ്യമാണെങ്കിൽ അറിയിക്കുക"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"മോശം കണക്ഷനുകൾ ഒഴിവാക്കുക"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"മികച്ച ഇന്റർനെറ്റ് കണക്ഷൻ ഉണ്ടാകുന്നതുവരെ വൈഫൈ നെറ്റ്‌വർക്ക് ഉപയോഗിക്കരുത്"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"മികച്ച ഇന്റർനെറ്റ് കണക്ഷനുള്ള നെറ്റ്‌വർക്കുകൾ മാത്രം ഉപയോഗിക്കുക"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"പുതിയ അപ്ലിക്കേഷനുകൾക്കായി തിരഞ്ഞെടുത്ത ഇൻസ്‌റ്റാളേഷൻ ലൊക്കേഷൻ മാറ്റുക"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"ബിൽറ്റ്ഇൻ ആപ്പ് നിഷ്ക്രിയമാക്കണോ?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"ആപ്പ് പ്രവർത്തനരഹിതമാക്കുക"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"നിങ്ങൾ ഈ ആപ്പ് പ്രവർത്തനരഹിതമാക്കുന്നുവെങ്കിൽ, Android-ഉം മറ്റ് ആപ്‌സും തുടർന്നങ്ങോട്ട് ഉദ്ദേശിച്ചത് പോലെ പ്രവർത്തിച്ചേക്കില്ല."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"ഡാറ്റ ഇല്ലാതാക്കി അപ്ലിക്കേഷൻ പ്രവർത്തനരഹിതമാക്കണോ?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"നിങ്ങൾ ഈ ആപ്പ് പ്രവർത്തനരഹിതമാക്കുന്നുവെങ്കിൽ, Android-ഉം മറ്റ് ആപ്‌സും തുടർന്നങ്ങോട്ട് ഉദ്ദേശിച്ചത് പോലെ പ്രവർത്തിച്ചേക്കില്ല. നിങ്ങളുടെ ഡാറ്റ ഇല്ലാതാക്കപ്പെടുകയും ചെയ്യും."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"അറിയിപ്പുകൾ ഓഫാക്കണോ?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"ഈ അപ്ലിക്കേഷനായി അറിയിപ്പുകൾ ഓഫുചെയ്യുമ്പോൾ, പ്രധാന അലേർട്ടുകളും അപ്‌ഡേറ്റുകളും നിങ്ങളുടെ ശ്രദ്ധയിൽപ്പെടാതെ പോകാം."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"സ്റ്റോർ"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="other">മറച്ച %d ഇനങ്ങൾ കാണിക്കുക</item>
       <item quantity="one">മറച്ച %d ഇനം കാണിക്കുക</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"നെറ്റ്‌വർക്കും ഇന്റർനെറ്റും"</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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"അറിയിപ്പുകൾ"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"പ്രാധാന്യം"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"സജ്ജമാക്കിയിട്ടില്ല"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"അറിയിപ്പുകൾ ഒരിക്കലും കാണിക്കരുത്"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"ശബ്ദപരമോ ദൃശ്യപരമോ ആയ തടസ്സമില്ല"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"നിശബ്ദമായി കാണിക്കുക"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"ശബ്ദമുണ്ടാക്കുക"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"ശബ്ദമുണ്ടാക്കുക, സ്ക്രീനിൽ കാണിക്കുക"</string>
     <string name="importance_reset" msgid="7458420788555607007">"പുനഃക്രമീകരിക്കുക"</string>
     <string name="show_silently" msgid="2222875799232222056">"നിശബ്ദമായി കാണിക്കുക"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"ഈ അറിയിപ്പുകൾ ശബ്ദമുണ്ടാക്കുകയോ വൈബ്രേറ്റുചെയ്യുകയോ നിലവിലെ സ്ക്രീനിലെ കാഴ്ചയിൽ കാണിക്കുകയോ അരുത്."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"അപ്ലിക്കേഷനുകൾ ലോഡുചെയ്യുന്നു..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"ചാനലുകൾ"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"എല്ലാം തടയുക"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"ഈ അറിയിപ്പുകൾ ഒരിക്കലും കാണിക്കരുത്"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"അറിയിപ്പുകൾ കാണിക്കുക"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"ഷെയ്‌ഡിലോ പെരിഫെറൽ ഉപകരണങ്ങളിലോ ഒരിക്കലും അറിയിപ്പുകൾ കാണിക്കരുത്"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"ബാഡ്‌ജ് കാണിക്കുക"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"പിന്തുണയുണ്ടെങ്കിൽ, ഹോം ആപ്പിൽ ബാഡ്‌ജുകളായി അറിയിപ്പുകൾ കാണിക്കുക."</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>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"വീണ്ടും കാണിക്കരുത്"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"ഇനിപ്പറയുന്നതായി അഭ്യർത്ഥിക്കുന്നു"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"അക്കൗണ്ട് ചേർക്കുക"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"സിസ്റ്റം വിവരങ്ങൾ"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"ഔദ്യോഗിക പ്രൊഫൈൽ ക്രമീകരണം"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"കോൺടാക്റ്റ് തിരയൽ"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"വിളിക്കുന്നവരെയും കോൺടാക്റ്റുകളെയും തിരിച്ചറിയുന്നതിന് കോൺടാക്റ്റുകൾ തിരയാൻ നിങ്ങളുടെ സ്ഥാപനത്തെ അനുവദിക്കുക"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"നിങ്ങളുടെ ഏറ്റവും പുതിയ ബഗ് റിപ്പോർട്ട്"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"നിങ്ങളുടെ ഏറ്റവും പുതിയ സുരക്ഷാ ലോഗ്"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"ഒരിക്കലും വേണ്ട"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"ഫോട്ടോകളും വീഡിയോകളും"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"സംഗീതവും ഓഡിയോയും"</string>
     <string name="storage_games" msgid="7703159201697117621">"ഗെയിമുകള്‍"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"മറ്റ് ആപ്‌സ്"</string>
     <string name="storage_files" msgid="8581083146777364063">"ഫയലുകള്‍"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"ഫോൺ സ്റ്റോറേജ്"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> ഉപയോഗിച്ചു"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> ലഭ്യം"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index dde38dc..e21ec32 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -670,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Алдаа"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"5 GHz холбогчийг энэ улсад ашиглах боломжгүй байна"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"Нислэгийн горим"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Сүлжээний мэдэгдэл"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Нийтийн сүлжээ ашиглах боломжтой үед мэдэгдэх"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Муу холболтуудаас зайлсхийх"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Wi-Fi сүлжээний Интернэт холболт сайн биш бол бүү ашиглаарай"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Зөвхөн сайн интернэт холболттой сүлжээг ашиглах"</string>
@@ -3299,16 +3305,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Таны сүүлийн үеийн алдааны тайлан"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Таны сүүлийн үеийн аюулгүй байдлын бүртгэл"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Хэзээ ч үгүй"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Зураг &amp; видео"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Хөгжим &amp; аудио"</string>
     <string name="storage_games" msgid="7703159201697117621">"Тоглоом"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Бусад апп"</string>
     <string name="storage_files" msgid="8581083146777364063">"Файл"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Зургийн сан"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> ашигласан"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> сул"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index 2c12002..f2b2407 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"नमुना मजकूर"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Oz चा अद्भूत जादू"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"अध्याय 11: Oz चे अद्भूत पाचूंचे शहर"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"डॉर्थी आणि तिच्या मित्रांचे डोळे हिरव्या चष्म्याने झाकले असले तरीही अद्भूत शहराच्या झगमगाटाने ते विस्मयचकित झाले. रस्त्यांवर हिरव्या मार्बलने बनलेल्या सुंदर घरांच्या रांगा आणि सर्वत्र चमकणारे पाचू होते. ते त्याच हिरव्या मार्बलच्या रस्त्यावरून चालत गेले आणि जेथे ते ब्लॉक एकत्र जुळत होते तेथे एकमेकांजवळ लावलेल्या पाचूच्या पंक्ती होत्या आणि ते सूर्यप्रकाशात चमकत होते. खिडक्यांचे भाग हिरव्या काचांचे होते; त्या शहरावर असलेल्या आकाशात देखील हिरव्या रंगाची छटा होती आणि सूर्याचे किरण हिरवे होते. \n\nअनेक लोकांचा, महिलांचा आणि मुलांचा, चालणार्‍यांचा पोशाख हिरव्या रंगाचा होता आणि त्यांची त्वचा हिरवट रंगाची होती. त्यांनी डॉर्थीकडे पाहिले आणि तिच्या सोबत असलेल्या विचित्र लोकांकडे आश्चर्यचकित होऊन पाहिले, सर्व मुले पळाली आणि त्यांनी सिंहास पाहिले तेव्हा त्यांच्या मातांच्या पाठीमागे जाऊन लपले परंतु त्यांच्याशी बोलले नाही. रस्त्यांमध्ये अनेक दुकाने होती आणि डॉर्थीने पाहिले की त्यामधील प्रत्येक गोष्ट हिरवी होती. हिरवी कँडी आणि हिरवे पॉप-कॉर्न, तसेच हिरवे जोडे, हिरव्या टोप्या आणि सर्व प्रकारचे हिरवे कपडे विक्रीसाठी ठेवले होते. एका ठिकाणी एक माणूस हिरवे लिंबाचे सरबत विकत होता आणि डॉर्थीने पाहिले की मुलांनी ते विकत घेतले आणि त्याच्यासाठी त्यांनी हिरवे पैसे दिले. \n\nतेथे घोडे किंवा कोणत्याही प्रकारचे प्राणी दिसत नव्हते; माणसे धक्का मारून लहान हिरव्या गाड्यांमध्ये वस्तू घेऊन जात होते. प्रत्येकजण आनंदी आणि समाधनी आणि समृद्ध दिसत होता."</string>
     <string name="font_size_save" msgid="3450855718056759095">"ठीक"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB संचयन"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD कार्ड"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"त्रुटी"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"या देशात 5 GHz बँड उपलब्‍ध नाही"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"विमान मोड मध्ये"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"नेटवर्क सूचना"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"जेव्हाही सार्वजनिक नेटवर्क उपलब्ध असते तेव्हा सूचित करा"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"खराब कनेक्शन टाळा"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"वाय-फाय नेटवर्कचे चांगले इंटरनेट कनेक्शन नसल्यास त्याचा वापर करु नका"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"केवळ चांगले इंटरनेट कनेक्शन असलेली नेटवर्क वापरा"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"नवीन अॅप्स साठी प्राधान्यीकृत स्थापना स्थान बदला"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"अंगभूत अॅप अक्षम करायचा?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"अॅप अक्षम करा"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"आपण हा अॅप अक्षम केल्यास, Android आणि अन्य अॅप्सना ज्या हेतूने कार्य करायचे आहे कदाचित त्यानुसार ते यापुढे कार्य करू शकणार नाहीत."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"डेटा हटवायचा आणि अॅप अक्षम करायचा?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"आपण हा अॅप अक्षम केल्यास, Android आणि अन्य अॅप्सना ज्या हेतूने कार्य करायचे आहे कदाचित त्यानुसार ते यापुढे कार्य करू शकणार नाहीत. आपला डेटा हटविला देखील जाईल."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"सूचना बंद करायच्या?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"आपण या अॅपसाठी सूचना बंद केल्यास, आपण महत्वाच्या सूचना आणि अद्यतने गमावू शकता."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"स्टोअर"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="one">%d लपविलेला आयटम दर्शवा</item>
       <item quantity="other">%d लपविलेले आयटम दर्शवा</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"नेटवर्क आणि इंटरनेट"</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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"सूचना"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"महत्त्व"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"सेट केलेले नाही"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"सूचना कधीही दर्शवू नका"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"कोणताही ध्वनी किंवा व्हिज्युअल व्यत्यय नाही"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"शांतपणे दर्शवा"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"ध्वनी करा"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"ध्वनी करा आणि स्क्रीनवर पॉप करा"</string>
     <string name="importance_reset" msgid="7458420788555607007">"रीसेट करा"</string>
     <string name="show_silently" msgid="2222875799232222056">"शांतपणे दर्शवा"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"ध्वनी, कंपन करू नका किंवा वर्तमान स्क्रीनवर दृश्यामध्ये या सूचना दर्शवू नका."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"अॅप्स लोड करीत आहे..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"चॅनेल"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"सर्व अवरोधित करा"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"या सूचना कधीही दर्शवू नका"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"सूचना दर्शवा"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"सूचना कधीही रंगछटांंमध्ये किंवा डिव्हाइसच्या किनारीवर दर्शवू नका"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"बॅज दर्शवा"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"समर्थित असल्यास, मुख्यपृष्ठ अॅपवर सूचना बॅज म्हणून दर्शवा."</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>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"परत दर्शवू नका"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"म्हणून विनंती करीत आहे"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"खाते जोडा"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"सिस्टिम माहिती"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"कार्य प्रोफाइल सेटिंग्ज"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"संपर्क शोध"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"कॉलर आणि संपर्कांना ओळखण्यासाठी आपल्या संस्थेनुसार संपर्क शोधांची अनुमती द्या"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"आपले अगदी अलीकडील दोष अहवाल"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"आपली अगदी अलीकडील सुरक्षितता लॉग"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"कधीही नाही"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"फोटो आणि व्हिडिओ"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"संगीत आणि ऑडिओ"</string>
     <string name="storage_games" msgid="7703159201697117621">"गेम"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"अन्य अॅप्स"</string>
     <string name="storage_files" msgid="8581083146777364063">"फायली"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"फोन संचय"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> वापरले"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> विनामूल्य"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index eb9c5c8..26389d1 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Teks contoh"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Ahli Sihir Oz yang Menakjubkan"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Bab 11: Oz, Kota Zamrud yang Menakjubkan"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Biarpun mata mereka ditutupi cermin mata hijau, Dorothy dan rakan-rakannya tetap silau dengan kilauan Kota hebat yang terang-benderang itu. Rumah-rumah cantik yang diperbuat daripada marmar hijau bertatah batu zamrud yang berkilau-kilau membarisi jalan-jalannya. Mereka berjalan di atas laluan jalan kaki yang berturap marmar hijau serupa. Zamrud disusun rapi di garisan cantuman bongkah-bongkah laluan itu, sehingga bergemerlapan dalam terangnya sinaran matahari. Cermin tingkap diperbuat daripada kaca berwarna hijau; malah langit yang memayungi Kota itu berwarna kehijauan, bahkan sinar matahari juga berwarna hijau. \n\nKelihatan ramai orang, lelaki, wanita dan kanak-kanak, berjalan-jalan, dan mereka berpakaian serba hijau dan berkulit kehijauan. Mereka memandang Dorothy dan rakannya yang pelbagai rupa dengan penuh tanda-tanya, malah kanak-kanak berlari dan bersembunyi di sebalik tubuh ibu mereka apabila ternampak sang Singa; namun tiada siapa yang menegur. Banyak kedai terdapat di jalan, dan Dorothy mendapati semua barangan di dalam kedai-kedai itu berwarna hijau. Ada dijual gula-gula hijau dan bertih jagung hijau, selain kasut hijau, topi hijau dan pelbagai jenis pakaian hijau. Di satu tempat, seorang lelaki menjual lemonad hijau, dan apabila kanak-kanak membelinya, Dorothy lihat mereka membayar dengan duit syiling hijau. \n\nTidak kelihatan kuda atau sebarang jenis haiwan lain; kaum lelaki menggunakan pedati kecil berwarna hijau yang ditolak oleh mereka sendiri untuk mengangkut barang-barang. Semua orang kelihatan gembira dan bahagia dan makmur."</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"Storan USB"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"Kad SD"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Ralat"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"Jalur 5 GHz tidak tersedia di negara ini"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"Dalam mod Pesawat"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Pemberitahuan rangkaian"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Maklumkan apabila rangkaian awam tersedia"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Elakkan sambungan lemah"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Jangan gunakan rangkaian Wi-Fi melainkan jika rangkaian itu mempunyai sambungan internet yang baik"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Guna rangkaian dengan sambungan Internet yang stabil sahaja"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Tukar lokasi pemasangan pilihan untuk aplikasi baru"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Lumpuhkan aplikasi terbina dalam?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Lumpuhkan apl"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Jika anda melumpuhkan apl ini, Android dan apl lain mungkin tidak berfungsi seperti yang dimaksudkan lagi."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Padam data dan lumpuhkan apl?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Jika anda melumpuhkan apl ini, Android dan apl lain mungkin tidak berfungsi seperti yang dimaksudkan lagi. Data anda akan turut dipadamkan."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Matikan pemberitahuan"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Jika anda mematikan pemberitahuan untuk apl ini, anda mungkin terlepas amaran dan kemas kini penting."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Gedung"</string>
@@ -2527,8 +2530,7 @@
       <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 (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Pemberitahuan"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Kepentingan"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Tidak ditetapkan"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Jangan sekali-kali tunjukkan pemberitahuan"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Tiada gangguan bunyi atau visual"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Tunjukkan secara senyap"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Berbunyi"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Berbunyi dan paparkan pada skrin"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Tetapkan semula"</string>
     <string name="show_silently" msgid="2222875799232222056">"Tunjukkan secara senyap"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Jangan berbunyi, bergetar atau mengintai pemberitahuan ini sehingga kelihatan pada skrin semasa."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Memuatkan apl..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Saluran"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Sekat semua"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Jangan sekali-kali tunjukkan pemberitahuan ini"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Tunjukkan pemberitahuan"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Jangan sekali-kali tunjukkan pemberitahuan dalam bidai atau pada peranti persisian"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Tunjukkan lencana"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Tunjukkan pemberitahuan sebagai lencana pada apl Skrin Utama, jika disokong."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"Atasi Jangan Ganggu"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Benarkan pemberitahuan ini terus mengganggu apabila tetapan Jangan Ganggu ditetapkan kepada Keutamaan Sahaja"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"Pada skrin kunci"</string>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Jangan tunjukkan lagi"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Meminta sebagai"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Tambah akaun"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Maklumat sistem"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Tetapan profil kerja"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Carian kenalan"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Benarkan carian kenalan oleh organisasi anda untuk mengenal pasti pemanggil dan kenalan"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Laporan pepijat anda yang terbaharu"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Log keselamatan anda yang terbaharu"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Tidak pernah"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Foto &amp; Video"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Muzik &amp; Audio"</string>
     <string name="storage_games" msgid="7703159201697117621">"Permainan"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Apl lain"</string>
     <string name="storage_files" msgid="8581083146777364063">"Fail"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Storan Telefon"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> digunakan"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> ruang kosong"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index e467fcd..0e52755 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"နမူနာ စာသား"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Oz ၏အံ့ဖွယ်ဝိဇ္ဇာ"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"အခန်းကြီး ၁၁ − Oz ၏အံ့ဖွယ် မြစိမ်းရောင်မြို့တော်"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"မျက်လုံးများကို ကာကွယ်ရန် အစိမ်းရောင်မျက်မှန်များ တပ်ထားသော်လည်း ဒေါ်ရသီနှင့် သူ့သူယ်ချင်းများသည် အံ့ဩဖွယ်မြို့တော်၏ တောက်ပမှုကြောင့် မျက်စိစူးသွားပါသေးသည်။ လမ်းများတလျှောက် အစိမ်းရောင်စကျင်ကျောက်များဖြင့် ဆောက်လုပ်ထားပြီး တဖိတ်ဖိတ်တောက်ပနေသည့် မြများ မြုပ်သွင်းထားသည့် လပသောအိမ်များနှင့် စီတန်းထားပါသည်။ သူတို့သည် ၎င်းအစိမ်းရောင်စကျင်ကျောက်ဖြင့် ခင်းထားပြီး ဆက်ထားသည့် နေရာများတွင် မြများကို အတန်းလိုက် နီးကပ်စွာစီတန်းထား၍ နေရောင်အောက်တွင် တစ်လျှပ်လျှပ်တောက်ပနေသည့် ပလပ်ဖောင်းတလျှောက် လမ်းလျှောက်လာခဲ့ပါသည်။ ပြတင်းပေါက်မှန်များအားလုံးသည် အစိမ်းရောင်ဖန်သားများဖြစ်သည်။ မြို့အထက်ရှိ ကောင်းကင်ပြင်သည်ပင်လျှင် အစိမ်းရောင်သန်းလျက်ရှိပြီး နေရောင်ခြည်သည်လည်း အစိမ်းရောင်ပင်ဖြစ်သည်။ \n\nလူများစွာရှိပြီး ယောကျာ်း၊ မိန်းမနှင့် ကလေးများ လမ်းလျှောက်လျက်ရှိကာ ၎င်းတို့အားလုံးသည် အစိမ်းရောင်အဝတ်အစားများကို ဝတ်ဆင်ထား၍ အစိမ်းရောင်သန်းသည့် အသားရောင်များ ရှိကြပါသည်။ သူတို့သည် ဒေါ်ရသီနှင့် ကွဲပြားခြားနားသည့် သူ့အဖော်များကို စိတ်ဝင်တစား ကြည့်နေကြပြီး ကလေးများသည် ခြင်္သေ့ကို တွေ့သည့်အခါ အမေ့နောက်ကျော်တွင် သွားရောက် ကွယ်ဝှက်နေကြပါသည်။ သို့သော် မည်သူမျှ သူတို့ကို စကားမပြောကြပါ။ လမ်းတလျှောက် ဆိုင်များစွာရှိပါသည်။ ၎င်းဆိုင်များရှိ အရာအားလုံးသည် အစိမ်းရောင်များဖြစ်သည်ကို ဒေါ်ရသီ တွေ့ရှိခဲ့ရပါသည်။ အစိမ်းရောင်ချိုချဉ်နှင့် အစိမ်းရောင်ပေါက်ပေါက်ဆုတ်တို့အပြင် အစိမ်းရောင်ဖိနပ်၊ အစိမ်းရောင်ဦးထုပ်နှင့် အစိမ်းရောင် အဝတ်အထည် မျိုးစုံတို့ကို ရောင်းနေကြသည်။ တစ်နေရာတွင် လူတစ်ဦးသည် အစိမ်းရောင် သံပုရာရည်ကို ရောင်းချလျှက်ရှိပြီး ကလေးများက၎င်းကို ဝယ်ယူကြရာတွင် အစိမ်းရောင် ဒင်္ဂါးပြားများဖြင့် ပေးဝယ်နေကြကြောင်းကို ဒေါ်ရသီတွေ့ရှိခဲ့ပါသည်။ \n\nထိုနေရာတွင် မြင်းအစရှိသည့် တိရစ္ဆာန်တစ်ကောင်တလေမျှ မတွေ့ခဲ့ရပါ။ ယောကျာ်းများသည် ပစ္စည်းများကို လှည်းတစ်ခုထဲထည့်၍ တွန်းသွားကြပါသည်။ လူတိုင်းလူတိုင်းသည် ပျော်ရွှင်နေကြပြီး ရောင့်ရဲတင်းတိမ်ကြပြီး ကြွယ်ဝကြပါသည်။"</string>
     <string name="font_size_save" msgid="3450855718056759095">"အိုကေ"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USBသိုလှောင်ကိရိယာ"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD ကဒ်"</string>
@@ -658,7 +657,7 @@
     <string name="android_beam_off_summary" msgid="4663095428454779138">"ပိတ်ထားသည်"</string>
     <string name="android_beam_disabled_summary" msgid="1737782116894793393">"NFCကိုပိတ်ထားသောကြောင့် မရရှိနိုင်ပါ"</string>
     <string name="android_beam_label" msgid="6257036050366775040">"Android လှိုင်း"</string>
-    <string name="android_beam_explained" msgid="1810540319385192758">"ဤဝန်ဆောင်မှုကို ဖွင့်ထားသည့်အခါ အခြား NFC ဖွင့်ထားသည့် စက်ပစ္စည်းသို့ စက်ပစ္စည်းများအား နီးကပ်စွာထားခြင်းဖြင့် အက်ပ်များကို လှိုင်းလွှင့်နိုင်သည်။ ဥပမာ၊ ဝဘ်စာမျက်နှာများ၊ YouTUbe ဗီဒီယိုများ၊ အဆက်အသွယ်များနှင့် အခြားအရာများစွာကို လှိုင်းလွှင့်နိုင်သည်။\n\nစက်ပစ္စည်းများကို နီးကပ်စွာထားပြီး (ကျောခြင်းကပ်) မျက်နှာပြင်ကို တို့ပါ။ မည်သည့်အရာအား လှိုင်းလွှင့်မည်ကို အက်ပ်က ဆုံးဖြတ်ပေးပါမည်။"</string>
+    <string name="android_beam_explained" msgid="1810540319385192758">"ဤဝန်ဆောင်မှုကို ဖွင့်ထားသည့်အခါ အခြား NFC ချိတ်ဆက်နိုင်သည့် စက်ပစ္စည်းသို့ စက်ပစ္စည်းများအား နီးကပ်စွာထားခြင်းဖြင့် အက်ပ်များကို လှိုင်းလွှင့်နိုင်သည်။ ဥပမာ၊ ဝဘ်စာမျက်နှာများ၊ YouTube ဗီဒီယိုများ၊ အဆက်အသွယ်များနှင့် အခြားအရာများစွာကို လှိုင်းလွှင့်နိုင်သည်။\n\nစက်ပစ္စည်းများကို နီးကပ်စွာ (ကျောခြင်းကပ်) ထားပြီး  မျက်နှာပြင်ကို တို့ပါ။ မည်သည့်အရာအား လှိုင်းလွှင့်မည်ကို အက်ပ်က ဆုံးဖြတ်ပေးပါမည်။"</string>
     <string name="wifi_quick_toggle_title" msgid="8850161330437693895">"Wi-Fi"</string>
     <string name="wifi_quick_toggle_summary" msgid="2696547080481267642">"ဝိုင်ဖိုင်ဖွင့်ရန်"</string>
     <string name="wifi_settings" msgid="29722149822540994">"Wi-Fi"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"အမှား"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"5 GHz ဘန်းဤနိုင်ငံတွင်မရပါ"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"လေယာဉ်ပျံပေါ်သုံးစနစ်"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"ကွန်ယက်မှအကြောင်းကြားချက်"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"အများပြည်သူ ကွန်ရက် ရနိုင်တိုင်းမှာ အကြောင်းကြားပေးရန်"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"အားနည်းသော ချိတ်ဆက်မှုများကို ရှောင်ကြဉ်ရန်"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"ကောင်းမွန်သော အင်တာနက် ချိတ်ဆက်မှု မရှိသော ဝိုင်ဖိုင်ကွန်ရက်အား မသုံးပါနှင့်"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"အင်တာနက် ချိတ်ဆက်မှု ကောင်းသည့် ကွန်ရက်များကိုသာ အသုံးပြုရန်"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"အပလီကေးရှင်းအသစ်အတွက် လိုလားသောတည်နေရာထည့်သွင်းခြင်းကို ပြောင်းရန်။"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"နဂိုပါအပလီကေးရှင်းများပိတ်မလား"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"အက်ပ်ပိတ်ထားရန်"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"ဤအက်ပ်ကို ပိတ်လိုက်လျှင် Android နှင့် အခြားအက်ပ်များသည် ပုံမှန် အလုပ်လုပ်တော့မည် မဟုတ်ပါ။"</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"အချက်အလက်များကိုဖျက်၍ အပလီကေးရှင်းအား ပိတ်မည်လား ?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"ဤအက်ပ်ကို သင်ပိတ်လိုက်ပါက အခြားအက်ပ်များသည် ပုံမှန် အလုပ်လုပ်တော့မည် မဟုတ်ပါ။ သင့် ဒေတာများကိုလည်း ဖျက်လိုက်ပါမည်။"</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"အကြောင်းကြားချက်များကို ပိတ်မည်လား ?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"ဤအပလီကေးရှင်း၏ အကြောင်းကြားစာများကို ပိတ်ထားလျှင် အရေးကြီး သတိပေးချက်များနှင့် အဆင့်မြှင့်မှုများကို သင် လွတ်သွားနိုင်ပါသည်။"</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"စတိုး"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="other">ဖျောက်ထားသည့် %d ခုကို ပြပါ</item>
       <item quantity="one">ဖျောက်ထားသည့် %d ခုကို ပြပါ</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"ကွန်ရက်နှင့် အင်တာနက်"</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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"အကြောင်းကြားချက်များ"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"အရေးပါမှု"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"မသတ်မှတ်ထားပါ"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"အကြောင်းကြားချက်များကို ဘယ်တော့မှ မပြပါနှင့်"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"အသံ သို့မဟုတ် ရုပ်ပုံ ဖွင့်ခြင်းတို့ကို မပြုလုပ်လိုပါ"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"တိတ်တဆိတ်ပြပါ"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"အသံဖွင့်ပါ"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"အသံဖွင့်၍ မျက်နှာပြင်ပေါ်တွင် ပြပါ"</string>
     <string name="importance_reset" msgid="7458420788555607007">"ပြန်လည်သတ်မှတ်ပါ"</string>
     <string name="show_silently" msgid="2222875799232222056">"တိတ်တဆိတ်ပြပါ"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"အသံပြုခြင်း၊ တုန်ခါခြင်း၊ သို့မဟုတ် လက်ရှိမျက်နှာပြင်တွင် ဤသတိပေးချက်များကို ပြခြင်းများ မပြုလုပ်ပါနှင့်။"</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"အက်ပ်များကို တင်နေ..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"ချန်နယ်များ"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"အားလုံးကို ပိတ်ဆို့ရန်။"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"ဤအကြောင်းကြားချက်များကို ဘယ်တော့မှ မပြပါနှင့်"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"အကြောင်းကြားချက်များ ပြပါ"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"အရိပ်ထဲ သို့မဟုတ် တွဲချိတ်ထားသည့် စက်ပစ္စည်းများပေါ်တွင် အကြောင်းကြားချက်များကို ဘယ်တော့မှ မပြပါနှင့်"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"တံဆိပ်ကို ပြပါ"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"ပံ့ပိုးထားလျှင် Home အက်ပ်ပေါ်တွင် အကြောင်းကြားချက်များကို တံဆိပ်များအဖြစ် ပြသပါမည်။"</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>
@@ -3194,7 +3186,7 @@
     <string name="developer_density_summary" msgid="1998244213021456519">"<xliff:g id="ID_1">%d</xliff:g> dp"</string>
     <string name="developer_smallest_width" msgid="7516950434587313360">"အသေးဆုံး အကျယ်"</string>
     <string name="developer_tile" msgid="4822711696408279658">"ပြင်ဆင်မွမ်းမံမှုမုဒ်"</string>
-    <string name="developer_tile_unavailable" msgid="6559656549479711827">"လက်ရှိလုပ်ဆောင်နေသော အခြေအနေကို ရွေးချယ်ထားခြင်း မရှိပါ"</string>
+    <string name="developer_tile_unavailable" msgid="6559656549479711827">"ပြင်ဆင်မွမ်းမံမှု အခြေအနေကို ရွေးချယ်ထားခြင်း မရှိပါ"</string>
     <string name="premium_sms_none" msgid="8268105565738040566">"ထည့်သွင်းထားသည့် မည်သည့်အက်ပ်တစ်ခုမျှ ပရီမီယံ SMS အသုံးပြုခွင့်တောင်းဆိုမှု မရှိပါ။"</string>
     <string name="premium_sms_warning" msgid="9086859595338944882">"ပရီမီယံ SMS သည်ငွေကြေးကုန်ကျနိုင်ပြီး သင့်ဖုန်းဝန်​ဆောင်မှုပေးသူ၏ ငွေတောင်းခံလွှာသို့ ပေါင်း၍ ထည့်သွင်းပါမည်။ အက်ပ်တစ်ခုကို သင်ခွင့်ပြုလိုက်လျှင် ၎င်းအက်ပ်ကိုအသုံးပြုပြီး ပရီမီယံ SMS ပို့နိုင်မည်ဖြစ်သည်။"</string>
     <string name="premium_sms_access" msgid="4660047004791638305">"ပရီမီယံ SMS အသုံးပြုခွင့်"</string>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"နောက်တစ်ခါ မပြပါနှင့်"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"အဖြစ် တောင်းဆိုနေသည်"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"အကောင့်ထည့်ရန်"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"စနစ်အချက်အလက်"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"အလုပ်ပရိုဖိုင်ဆက်တင်များ"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"အဆက်အသွယ်ကို ရှာဖွေပါ"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"ခေါ်ဆိုသူများနှင့် အဆက်အသွယ်များကို မည်သူမည်ဝါဖြစ်ကြောင်း ခွဲခြားနိုင်ရန်အတွက် သင့်အဖွဲ့အစည်းအမည်ကို အဆက်အသွယ်အား ရှာဖွေခွင့်ပြုပါ"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"သင့်မကြာသေးမီက ချွတ်ယွင်းမှုအစီရင်ခံချက်များ"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"သင့်လတ်တလော လုံခြုံရေးမှတ်တမ်း"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"ဘယ်တော့မှ"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"ဓာတ်ပုံနှင့် ဗီဒီယိုများ"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"တေးဂီတနှင့် အသံ"</string>
     <string name="storage_games" msgid="7703159201697117621">"ဂိမ်းများ"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"အခြားအက်ပ်များ"</string>
     <string name="storage_files" msgid="8581083146777364063">"ဖိုင်များ"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"ဖုန်းသိုလှောင်ခန်း"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> အသုံးပြုထားပါသည်"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"နေရာလွတ် <xliff:g id="TOTAL">%1$s</xliff:g> ရှိပါသည်"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 00b922c..7719508 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Eksempeltekst"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Trollmannen fra Oz"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Kapittel 11: Den vidunderlige smaragdbyen Oz"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Selv om øynene deres var beskyttet av de grønne brillene, ble Dorothy og vennene hennes overveldet ved synet av denne vidunderlige byen. Langs gatene sto vakre hus bygget av grønn marmor og prydet med skinnende smaragder overalt. De gikk langs et fortau laget av den samme grønne marmoren, og der steinene møttes, var det rader av smaragder som glitret i lyset fra solen. Vindusrutene var av grønt glass, og selv himmelen hadde et grønt skjær over seg. Til og med solstrålene var grønne. \n\nDet var mange mennesker som gikk rundt i byen, både menn, kvinner og barn. Alle var kledd i grønne klær og hadde grønnlig hud. De så undrende på Dorothy og det brokete selskapet hennes. Barna løp og gjemte seg bak mødrene sine da de så Løven, men ingen sa noe til dem. Butikkene i gatene var alle fylt med grønne varer. Grønt godteri og grønt popkorn var til salgs, og det var også utstilt grønne sko, grønne hatter og grønne klær i alle mulige varianter. I én av butikkene solgte en mann grønn limonade, og Dorothy kunne se at barna betalte med grønne mynter. \n\nDet var ingen hester eller andre dyr å se i byen – mennene bar ting i små, grønne vogner som de dyttet foran seg. Alle virket glade, tilfredse og velstående."</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB-lagring"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"Minnekort"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Feil"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"5 GHz-bånd er ikke tilgjengelig i dette landet"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"I flymodus"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Nettverksvarsel"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Varsle når et offentlig nettverk er tilgjengelig"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Unngå dårlige tilkoblinger"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Ikke bruk et Wi-Fi-nettverk med mindre det har en brukbar Internett-tilkobling"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Bare bruk nettverk som har en god nettilkobling"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Endre foretrukket plassering for installasjon av nye apper"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Slå av innebygd app?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Deaktiver appen"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Hvis du slår av denne appen, slutter muligens Android og andre apper å fungere som de skal."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Vil du slette dataene og deaktivere appen?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Hvis du slår av denne appen, kan det føre til at Android og andre apper slutter å fungere som de skal. Dataene dine blir også slettet."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Vil du deaktivere varsler?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Hvis du slår av varsler for denne appen, kan du gå glipp av viktige beskjeder og oppdateringer."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Butikk"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="other">Vis %d skjulte elementer</item>
       <item quantity="one">Vis %d skjult element</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Nettverk og Internett"</string>
     <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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Varsler"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Viktighet"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Ikke angitt"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Vis aldri varsler"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Ingen lyd eller visuell forstyrrelse"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Vis uten lyd"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Lag lyd"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Lag lyd og vis i forgrunnen"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Tilbakestill"</string>
     <string name="show_silently" msgid="2222875799232222056">"Vis uten lyd"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Disse varslene vises ikke kjapt på skjermen – verken med vibrering eller lyd."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Laster inn apper …"</string>
     <string name="notification_channels" msgid="8681423709659818791">"Kanaler"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Blokkér alle"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Vis aldri disse varslene"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Vis varsler"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Vis aldri varlser i panelet eller på eksterne enheter"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Vis merke"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Vis varsler som merker i Home-appen, hvis det støttes."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"Overstyr Ikke forstyrr"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"La disse varslene fortsette å forstyrre når Ikke forstyrr er angitt til Bare prioriterte"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"På låseskjermen"</string>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Ikke vis dette igjen"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Sender forespørsel som"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Legg til konto"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Systeminformasjon"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Innstillinger for jobbprofilen"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Kontaktsøk"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Tillat kontaktsøk for organisasjonen din for å identifisere innringere og kontakter"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Den nyeste feilrapporten din"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Den nyeste sikkerhetsloggen din"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Aldri"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Bilder og videoklipp"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Musikk og lyd"</string>
     <string name="storage_games" msgid="7703159201697117621">"Spill"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Andre apper"</string>
     <string name="storage_files" msgid="8581083146777364063">"Filer"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Telefonlagring"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> brukt"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> ledig"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g> %%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index 721eacc..9a456a4 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"नमूना पाठ"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"दि वन्डरफुल विजार्ड अफ ओज"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"अध्याय ११: दि वन्डरफुल एमरल्ड सिटी अफ ओज"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"डोरोथी र उसका साथीहरूले सुरक्षाका लागि आँखामा हरियो चश्मा लगाएका भए पनि त्यस अद्भुत सहरको चमक देखेर तिनीहरू सुरुमा निकै आश्चर्यचकित भए। त्यस सहरका गल्लीहरूको दुवै छेउमा लस्करै हरियो संगमरमरले बनेका सुन्दर घरहरू थिए र ती घरहरूमा जताततै झिलमिलाउँदा पन्नाहरू जडित गरिएका थिए। तिनीहरू त्यही हरियो संगमरमरको पेटीमा हिँडदै थिए जसमा ब्लकहरूलाई आपसमा नजिक-नजिक मिलाएर राखी पन्नाका पङ्‌क्तिहरूले जोडिएको थियो र त्यो सूर्यको प्रकाशमा जगमगाइरहेको थियो। झ्यालका पल्लाहरू हरियो काँचका थिए, त्यतिमात्र कहाँ हो र माथिको आकाशमा पनि हल्का हरियो रङको छाप देखिन्थ्यो र सूर्यका किरणहरू पनि हरियो रङका नै थिए। \n\nत्यहाँ महिला, पुरुष र बच्चाहरू जस्ता धेरै मानिसहरू यताउता हिँडिरहेका थिए। ती मानिसहरूले हरियो कपडा लगाएका थिए र तिनीहरूको छाला पनि हल्का हरियो खाले थियो। तिनीहरूले डोरोथी तथा अनौठो विविधता भएका उसका साथीहरूलाई अचम्मको दृष्टिले हेरे र लायनलाई देखेर सबै बच्चाहरू भागेर आफ्नो आमाको पछाडि लुक्न थाले; तर कसैले पनि उनीहरूसँग बात गरेनन्। गल्लीमा थुप्रै पसलहरू थिए र डोरोथीले के देख्छ भने त्यहाँ भएका सबै कुराहरू हरियो रङका नै छन्। त्यहाँ बिक्रीका लागि हरियो क्यान्डी र मकैका फुला, यसबाहेक हरियो रङका जुत्ताहरू र हरियो रङका टोपी र थुप्रै प्रकारका कपडाहरू राखिएका थिए। एक ठाउँमा एक व्यक्ति हरियो रङको निम्बु पानी बेच्दै थियो र बच्चाहरूले त्यो किन्दा डोरोथीले के देख्छ भने ती बच्चाहरूले त्यसको पैसा तिर्नका लागि पनि हरियो रङका सिक्काहरू दिन्छन्। \n\nत्यहाँ घोडा वा कुनै अरु जनावरहरू छैनन् जस्तो देखिन्थ्यो; त्यहाँ मान्छेहरूले साना हरियो रङका गाडाहरूमा वस्तुहरू लिएर अगाडितिर धकाल्दै हिँड्थे। सबैजना खुसी र सन्तुष्ट तथा समृद्ध देखिन्थ्ये।"</string>
     <string name="font_size_save" msgid="3450855718056759095">"ठीक छ"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB भण्डारण"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD कार्ड"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"त्रुटि"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"यो देशमा ५ GHz व्यान्ड उपलब्ध छैन"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"हवाइजहाज मोडमा"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"नेटवर्क सूचना"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"सूचीत गर्नुहोस् जब एक सार्वजनिक सञ्जाल उपलब्ध हुन्छ"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"कमजोर जडान त्याग्नुहोस्"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Wi-Fi नेटवर्क राम्रो इन्टरनेट जडान नभएसम्म प्रयोग नगर्नुहोस्।"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"केवल राम्रो इन्टरनेट जडान हुने सञ्जालको उपयोग गर्नुहोस्"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"नयाँ अनुप्रयोगका लागि रुचाइएको स्थापना स्थान बदल्नुहोस्"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"पूर्वनिर्मित अनुप्रयोग असक्षम पार्ने हो?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"अनुप्रयोग असक्षम गर्नुहोस्"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"तपाईंले यस अनुप्रयोगलाई असक्षम पार्नुभयो भने अब Android र अन्य अनुप्रयोगहरूले अपेक्षित कार्य नगर्न सक्छन्।"</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"डेटा हटाएर अनुप्रयोग असक्षम पार्ने हो?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"तपाईंले यस अनुप्रयोगलाई असक्षम पार्नुभयो भने त्यस उकप्रन्त Android र अन्य अनुप्रयोगहरूले अपेक्षित कार्य नगर्न सक्छन्। तपाईंको डेटा पनि मेटाइने छ।"</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"सूचनाहरू बन्द गर्नुहोस्?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"यदि तपाईँ यस अनुप्रयोगको लागि सूचनाहरू बन्द गर्नुहुन्छ, तपाईँले महत्त्वपूर्ण अलर्ट र अपडेटहरू गुमाउन सक्नुहुने छ।"</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"स्टोर"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="other">लुकाइएका %d वस्तुहरू देखाउनुहोस्</item>
       <item quantity="one">लुकाइएको %d वस्तु देखाउनुहोस्</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"नेटवर्क र इन्टरनेट"</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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"सूचनाहरू"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"महत्त्व"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"सेट गरिएको छैन"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"सूचनाहरू कहिल्यै नदेखाउनुहोस्"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"कुनै आवाज ननिकाल्ने वा दृश्य सम्बन्धी अवरोध नपुर्याउने"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"मौन रूपमा देखाउने"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"आवाज निकाल्ने"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"आवाज निकाल्ने र स्क्रिनमा पपअप देखाउने"</string>
     <string name="importance_reset" msgid="7458420788555607007">"रिसेट गर्नुहोस्"</string>
     <string name="show_silently" msgid="2222875799232222056">"मौन रूपमा देखाउनुहोस्"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"ध्वनि, कम्पन नगर्नुहोस् वा हालको स्क्रिनमा यी सूचनाहरूलाई दृश्यमा नचियाउनुहोस्।"</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"अनुप्रयोगहरू लोड हुँदै..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"च्यानलहरू"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"सबै रोक्नुहोस्"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"यी सूचनाहरू कहिल्यै नदेखाउनुहोस्"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"सूचनाहरू देखाउनुहोस्"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"ओझेलमा वा पेरिफेरल यन्त्रहरूमा कहिल्यै सूचनाहरू नदेखाउनुहोस्"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"पदक देखाउनुहोस्"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"समर्थन गरिएमा गृहपृष्ठको अनुप्रयोगमा सूचना र पदकहरू देखाउनुहोस्।"</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>
@@ -3226,8 +3218,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"फेरि नदेखाउनुहोस्"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"निम्न प्रयोगकर्ताको रूपमा अनुरोध गर्दै"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"खाता थप्नुहोस्"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"प्रणाली सम्बन्धी जानकारी"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"कार्य प्रोफाइलका सेटिङहरू"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"सम्पर्कको खोजी"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"कलर र सम्पर्कहरूको पहिचान गर्न तपाईँको संगठन अनुसार गरिने सम्पर्कका खोजीहरूलाई अनुमति दिनुहोस्"</string>
@@ -3318,16 +3309,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"तपाईंको सबैभन्दा पछिल्लो बग रिपोर्ट"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"तपाईंको सबैभन्दा पछिको सुरक्षा लग"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"कहिल्यै पनि होइन"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"तस्बिर र भिडियोहरू"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"संगीत र अडियो"</string>
     <string name="storage_games" msgid="7703159201697117621">"खेलहरू"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"अन्य अनुप्रयोगहरू"</string>
     <string name="storage_files" msgid="8581083146777364063">"फाइलहरू"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"फोनको भण्डारण"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> प्रयोग गरिएको"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> खाली"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 1c0bae5..509997b 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Voorbeeldtekst"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"De tovenaar van Oz"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Hoofdstuk 11: De prachtige Smaragden Stad van Oz"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Hoewel hun ogen werden beschermd door de groene bril, werden Dorothy en haar vrienden eerst verblind door de schittering van de prachtige Stad. Langs de straten stonden schitterende huizen van groen marmer die waren versierd met glinsterende smaragden. Ze liepen over een pad dat was geplaveid met hetzelfde groene marmer. In de voegen tussen de stenen waren dichte rijen smaragden ingelegd die fonkelden in het zonlicht. De ramen waren van groen glas en zelfs de lucht boven de Stad had een groene tint, en ook de zonnestralen waren groen. \n\nEr waren veel mensen op straat: mannen vrouwen en kinderen. Ze droegen allemaal groene kleren en hadden een groengetinte huid. Ze keken Dorothy en haar vreemde gezelschap verbaasd aan. De kinderen verstopten zich achter hun moeders als ze de Leeuw zagen, maar niemand sprak hen aan. Er waren veel winkels in de straat gevestigd en Dorothy zag dat alles wat ze verkochten, groen was. Er waren groene snoepjes en groene popcorn te koop, maar ook groene schoenen, groene hoeden en allerlei groene kleding. Een man verkocht groene limonade, en toen kinderen die kochten, zag Dorothy dat ze ervoor betaalden met groene muntjes. \n\nEr leken geen paarden of andere dieren te zijn. De mannen vervoerden dingen in kleine groene handkarren, die ze voor zich uit duwden. Iedereen leek gelukkig, tevreden en welvarend."</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB-opslag"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD-kaart"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Fout"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"5 GHz-band niet beschikbaar in dit land"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"In vliegtuigmodus"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Netwerkmelding"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Melden wanneer een openbaar netwerk beschikbaar is"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Slechte verbindingen vermijden"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Wifi-netwerk niet gebruiken, tenzij dit een goede internetverbinding heeft"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Alleen netwerken gebruiken met een goede internetverbinding"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"De voorkeursinstallatielocatie voor nieuwe apps wijzigen"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Ingebouwde app uitschakelen?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"App uitschakelen"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Als je deze app uitschakelt, werken Android en andere apps mogelijk niet meer zoals bedoeld."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Gegevens verwijderen en app uitschakelen?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Als je deze app uitschakelt, werken Android en andere apps mogelijk niet meer zoals bedoeld. Je gegevens worden ook verwijderd."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Meldingen uitschakelen?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Als je meldingen voor deze app uitschakelt, mis je misschien belangrijke waarschuwingen en updates."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Winkel"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="other">%d verborgen items weergeven</item>
       <item quantity="one">%d verborgen item weergeven</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Netwerk en internet"</string>
     <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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Meldingen"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Belang"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Niet ingesteld"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Nooit meldingen weergeven"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Geen geluid of visuele onderbreking"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Zonder geluid weergeven"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Geluid laten horen"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Geluid laten horen en op het scherm weergeven"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Resetten"</string>
     <string name="show_silently" msgid="2222875799232222056">"Zonder geluid weergeven"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Geen geluid laten horen, niet trillen en deze meldingen niet weergeven op het huidige scherm."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Apps laden..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Kanalen"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Alles blokkeren"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Deze meldingen nooit weergeven"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Meldingen weergeven"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Nooit meldingen weergeven in het meldingenpaneel of op randapparaten"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Badge weergeven"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Meldingen weergeven als badges op het startscherm (indien ondersteund)."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"\'Niet storen\' overschrijven"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Deze meldingen nog steeds laten onderbreken wanneer \'Niet storen\' is ingesteld op \'Alleen prioriteit\'"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"Op het vergrendelingsscherm"</string>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Niet opnieuw weergeven"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Aanvragen als"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Account toevoegen"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Systeemgegevens"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Instellingen voor werkprofiel"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Contacten zoeken"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Contactzoekopdrachten door je organisatie toestaan om bellers en contacten te identificeren"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Je recentste bugrapport"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Je recentste beveiligingslogboek"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Nooit"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Foto\'s en video\'s"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Muziek en audio"</string>
     <string name="storage_games" msgid="7703159201697117621">"Games"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Andere apps"</string>
     <string name="storage_files" msgid="8581083146777364063">"Bestanden"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Telefoonopslag"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> gebruikt"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> beschikbaar"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index f1bd527..1bfe3e5 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"ਨਮੂਨਾ ਲਿਖਤ"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"ਔਜ਼ ਦਾ ਨਿਰਾਲਾ ਜਾਦੂਗਰ"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"ਪਾਠ 11: ਔਜ਼ ਦਾ ਹੀਰਿਆਂ-ਪੰਨਿਆਂ ਵਾਲਾ ਨਿਰਾਲਾ ਸ਼ਹਿਰ"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"ਹਰੇ ਰੰਗ ਦੀਆਂ ਐਨਕਾਂ ਲਗਾ ਕੇ ਵੀ ਡੋਰਥੀ ਅਤੇ ਉਸ ਦੇ ਦੋਸਤ ਨਿਰਾਲੇ ਸ਼ਹਿਰ ਦੀ ਚਮਕ-ਦਮਕ ਵੇਖ ਕੇ ਹੈਰਾਨ ਸਨ। ਹਰੇ ਰੰਗ ਦੇ ਮਾਰਬਲ ਨਾਲ ਬਣੇ ਹੋਏ ਸੁੰਦਰ ਘਰ, ਗਲੀਆਂ ਵਿੱਚ ਕਤਾਰਬੱਧ ਸਨ ਅਤੇ ਉਹਨਾਂ ਵਿੱਚ ਚਮਕਦੇ ਪੰਨੇ ਜੜੇ ਹੋਏ ਸਨ। ਉਹ ਉਸੇ ਹਰੇ ਮਾਰਬਲ ਦੇ ਫੁੱਟਪਾਥ \'ਤੇ ਪੈਦਲ ਤੁਰ ਪਏ, ਅਤੇ ਜਿੱਥੇ ਆਲੇ-ਦੁਆਲੇ ਰੱਖੇ ਹੋਏ ਮਾਰਬਲ ਪੱਥਰ ਆਪਸ ਵਿੱਚ ਜੁੜਦੇ ਸਨ ਉੱਥੇ ਨੇੜੇ-ਨੇੜੇ ਲਗਾਏ ਗਏ ਪੰਨਿਆਂ ਦੀਆਂ ਕਤਾਰਾਂ ਸਨ ਅਤੇ ਧੁੱਪ ਵਿੱਚ ਚਮਕ ਰਹੀਆਂ ਸਨ। ਖਿੜਕੀਆਂ ਦੇ ਸ਼ੀਸ਼ੇ ਹਰੇ ਰੰਗ ਦੇ ਸਨ; ਇੱਥੋਂ ਤੱਕ ਕਿ ਸ਼ਹਿਰ ਦੇ ਉੱਤੇ ਅਸਮਾਨ ਵਿੱਚ ਵੀ ਹਰੇ ਰੰਗ ਦੀ ਭਾਅ ਸੀ, ਅਤੇ ਸੂਰਜ ਦੀਆਂ ਕਿਰਨਾਂ ਵੀ ਹਰੇ ਰੰਗ ਦੀਆਂ ਸਨ। \n\nਉੱਥੇ ਬਹੁਤ ਸਾਰੇ ਲੋਕ, ਆਦਮੀ, ਔਰਤਾਂ, ਅਤੇ ਬੱਚੇ ਘੁੰਮ ਰਹੇ ਸਨ, ਅਤੇ ਉਹਨਾਂ ਨੇ ਹਰੇ ਰੰਗ ਦੇ ਕੱਪੜੇ ਪਾਏ ਹੋਏ ਸਨ ਅਤੇ ਉਹਨਾਂ ਦੀ ਚਮੜੀ ਦਾ ਰੰਗ ਵੀ ਹਰਾ ਹੀ ਸੀ। ਉੁਹਨਾਂ ਨੇ ਡੋਰਥੀ ਅਤੇ ਉਸਦੇ ਅਜੀਬੋ-ਗਰੀਬ ਦੋਸਤਾਂ ਵੱਲ ਹੈਰਾਨੀ ਭਰੀਆਂ ਨਜ਼ਰਾਂ ਨਾਲ ਵੇਖਿਆ, ਅਤੇ ਜਦੋਂ ਬੱਚਿਆਂ ਨੇ ਸ਼ੇਰ ਨੂੰ ਵੇਖਿਆ ਤਾਂ ਸਾਰੇ ਬੱਚੇ ਭੱਜ ਗਏ ਅਤੇ ਆਪਣੀਆਂ ਮਾਵਾਂ ਦੇ ਪਿੱਛੇ ਜਾ ਕੇ ਲੁਕ ਗਏ; ਪਰ ਕਿਸੇ ਨੇ ਵੀ ਉਹਨਾਂ ਨਾਲ ਗੱਲ ਨਹੀਂ ਕੀਤੀ। ਗਲੀ ਵਿੱਚ ਬਹੁਤ ਸਾਰੀਆਂ ਦੁਕਾਨਾਂ ਸਨ, ਅਤੇ ਡੋਰਥੀ ਨੇ ਵੇਖਿਆ ਕਿ ਉੱਥੇ ਸਭ ਕੁਝ ਹਰੇ ਰੰਗ ਦਾ ਹੀ ਸੀ। ਹਰੇ ਰੰਗ ਦੀਆਂ ਟੌਫੀਆਂ, ਅਤੇ ਹਰੇ ਰੰਗੇ ਦੇ ਮੱਕੀ ਦੇ ਫੁੱਲੇ ਵੇਚੇ ਜਾ ਰਹੇ ਸਨ, ਹਰੇ ਰੰਗ ਦੇ ਬੂਟ ਵੀ, ਹਰੀਆਂ ਟੋਪੀਆਂ, ਅਤੇ ਸਾਰੀਆਂ ਕਿਸਮਾਂ ਦੇ ਹਰੇ ਰੰਗ ਦੇ ਕੱਪੜੇ। ਇੱਕ ਥਾਂ \'ਤੇ ਇੱਕ ਵਿਅਕਤੀ ਹਰੇ ਰੰਗ ਦੀ ਸ਼ਕੰਜਵੀ ਵੇਚ ਰਿਹਾ ਸੀ, ਅਤੇ ਜਦੋਂ ਬੱਚੇ ਸ਼ਕੰਜਵੀ ਨੂੰ ਖ਼ਰੀਦ ਰਹੇ ਸਨ ਤਾਂ ਡੋਰਥੀ ਵੇਖ ਸਕਦੀ ਸੀ ਕਿ ਉਹ ਉਸ ਵਿਅਕਤੀ ਨੂੰ ਹਰੇ ਰੰਗ ਦੀਆਂ ਪੈਨੀਆਂ (ਪੈਸੇ) ਦੇ ਰਹੇ ਸਨ। \n\nਇੰਝ ਪ੍ਰਤੀਤ ਹੁੰਦਾ ਸੀ ਕਿ ਉੱਥੇ ਕੋਈ ਘੋੜੇ ਜਾਂ ਕਿਸੇ ਵੀ ਕਿਸਮ ਦੇ ਜਾਨਵਰ ਨਹੀਂ ਸਨ: ਬੰਦੇ ਹਰੇ ਰੰਗ ਦੇ ਛੋਟੇ-ਛੋਟੇ ਗੱਡਿਆਂ ਉੱਤੇ ਚੀਜ਼ਾਂ ਨੂੰ ਇੱਧਰ-ਉੱਧਰ ਲੈ ਕੇ ਜਾ ਰਹੇ ਸਨ, ਜਿੰਨ੍ਹਾਂ ਨੂੰ ਉਹ ਆਪਣੇ ਅੱਗੇ ਧਕੇਲ ਕੇ ਲੈ ਜਾ ਰਹੇ ਸਨ। ਹਰ ਕੋਈ ਖੁਸ਼ ਅਤੇ ਸੰਤੁਸ਼ਟ ਅਤੇ ਖ਼ੁਸ਼ਹਾਲ ਪ੍ਰਤੀਤ ਹੋ ਰਿਹਾ ਸੀ।"</string>
     <string name="font_size_save" msgid="3450855718056759095">"ਠੀਕ"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB ਸਟੋਰੇਜ"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD ਕਾਰਡ"</string>
@@ -658,7 +657,7 @@
     <string name="android_beam_off_summary" msgid="4663095428454779138">"ਬੰਦ"</string>
     <string name="android_beam_disabled_summary" msgid="1737782116894793393">"ਅਣਉਪਲਬਧ ਕਿਉਂਕਿ NFC ਬੰਦ ਹੈ"</string>
     <string name="android_beam_label" msgid="6257036050366775040">"Android ਬੀਮ"</string>
-    <string name="android_beam_explained" msgid="1810540319385192758">"ਜਦੋਂ ਇਹ ਵਿਸ਼ੇਸ਼ਤਾ ਚਾਲੂ ਕੀਤੀ ਹੋਵੇ, ਤਾਂ ਡੀਵਾਈਸਾਂ ਨੂੰ ਇੱਕ-ਦੂਜੇ ਦੇ ਨੇੜੇ ਰੱਖਣ ਦੁਆਰਾ ਤੁਸੀਂ ਐਪ ਸਮੱਗਰੀ ਨੂੰ ਕਿਸੇ ਹੋਰ NFC-ਸਮਰੱਥਾ ਵਾਲੀ ਡੀਵਾਈਸ \'ਤੇ ਬੀਮ ਕਰ ਸਕਦੇ ਹੋ। ਉਦਾਹਰਨ ਲਈ, ਤੁਸੀਂ ਵੈੱਬ ਪੰਨਿਆਂ, YouTube ਵੀਡੀਓ, ਸੰਪਰਕਾਂ, ਅਤੇ ਹੋਰ ਚੀਜ਼ਾਂ ਨੂੰ ਬੀਮ ਕਰ ਸਕਦੇ ਹੋ।\n\nਸਿਰਫ਼ ਡੀਵਾਈਸਾਂ ਨੂੰ ਇੱਕ-ਦੂਜੇ ਦੇ ਨੇੜੇ ਲਿਆਓ (ਖ਼ਾਸ ਤੌਰ \'ਤੇ ਵਾਰ-ਵਾਰ) ਅਤੇ ਫਿਰ ਆਪਣੀ ਸਕ੍ਰੀਨ ਨੂੰ ਟੈਪ ਕਰੋ। ਐਪ ਇਹ ਤੈੈਅ ਕਰਦੀ ਹੈ ਕਿ ਕਿਹੜੀ ਚੀਜ਼ ਬੀਮ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।"</string>
+    <string name="android_beam_explained" msgid="1810540319385192758">"ਜਦੋਂ ਇਹ ਵਿਸ਼ੇਸ਼ਤਾ ਚਾਲੂ ਕੀਤੀ ਹੋਵੇ, ਤਾਂ ਡੀਵਾਈਸਾਂ ਨੂੰ ਇੱਕ-ਦੂਜੇ ਦੇ ਨੇੜੇ ਰੱਖਣ ਦੁਆਰਾ ਤੁਸੀਂ ਐਪ ਸਮੱਗਰੀ ਨੂੰ ਕਿਸੇ ਹੋਰ NFC-ਸਮਰੱਥਾ ਵਾਲੀ ਡੀਵਾਈਸ \'ਤੇ ਬੀਮ ਕਰ ਸਕਦੇ ਹੋ। ਉਦਾਹਰਨ ਲਈ, ਤੁਸੀਂ ਵੈੱਬ ਪੰਨਿਆਂ, YouTube ਵੀਡੀਓ, ਸੰਪਰਕਾਂ, ਅਤੇ ਹੋਰ ਚੀਜ਼ਾਂ ਨੂੰ ਬੀਮ ਕਰ ਸਕਦੇ ਹੋ।\n\nਬੱਸ ਡੀਵਾਈਸਾਂ ਨੂੰ ਇੱਕ-ਦੂਜੇ ਦੇ ਨੇੜੇ ਲਿਆਓ (ਰਵਾਇਤੀ ਤੌਰ \'ਤੇ ਪਿਛਲੇ ਪਾਸੇ ਨੂੰ ਪਿਛਲੇ ਪਾਸੇ ਨਾਲ ਜੋੜੋ) ਅਤੇ ਫਿਰ ਆਪਣੀ ਸਕ੍ਰੀਨ ਨੂੰ ਟੈਪ ਕਰੋ। ਐਪ ਇਹ ਤੈੈਅ ਕਰਦੀ ਹੈ ਕਿ ਕਿਹੜੀ ਚੀਜ਼ ਬੀਮ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।"</string>
     <string name="wifi_quick_toggle_title" msgid="8850161330437693895">"Wi‑Fi"</string>
     <string name="wifi_quick_toggle_summary" msgid="2696547080481267642">"Wi‑Fi ਚਾਲੂ ਕਰੋ"</string>
     <string name="wifi_settings" msgid="29722149822540994">"Wi‑Fi"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"ਅਸ਼ੁੱਧੀ"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"5 GHz ਬੈਂਡ ਇਸ ਦੇਸ਼ ਵਿੱਚ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"ਏਅਰਪਲੇਨ ਮੋਡ ਵਿੱਚ"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"ਨੈੱਟਵਰਕ ਸੂਚਨਾ"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"ਜਦੋਂ ਵੀ ਇੱਕ ਜਨਤਕ ਨੈੱਟਵਰਕ ਉਪਲਬਧ ਹੋਵੇ ਤਾਂ ਸੂਚਨਾ ਦਿਓ"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"ਖ਼ਰਾਬ ਕਨੈਕਸ਼ਨਾਂ ਤੋਂ ਬਚੋ"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"ਜੇਕਰ ਤੱਕ ਤੁਹਾਡੇ ਕੋਲ ਇੱਕ ਚੰਗਾ ਇੰਟਰਨੈਟ ਕਨੈਕਸ਼ਨ ਨਾ ਹੋਵੇ ਤਾਂ Wi‑Fi ਨੈੱਟਵਰਕ ਨਾ ਵਰਤੋ"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"ਕੇਵਲ ਉਹ ਨੈੱਟਵਰਕ ਵਰਤੋ ਜਿਹਨਾਂ ਦਾ ਇੱਕ ਚੰਗਾ ਇੰਟਰਨੈਟ ਕਨੈਕਸ਼ਨ ਹੈ"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"ਨਵੇਂ ਐਪਸ ਲਈ ਤਰਜੀਹੀ ਇੰਸਟੌਲੇਸ਼ਨ ਨਿਰਧਾਰਿਤ ਸਥਾਨ ਬਦਲੋ"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"ਕੀ ਬਿਲਟ-ਇਨ ਐਪ ਨੂੰ ਅਸਮਰੱਥ ਬਣਾਉਣਾ ਹੈ?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"ਐਪ ਨੂੰ ਅਸਮਰੱਥ ਬਣਾਓ"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"ਜੇਕਰ ਤੁਸੀਂ ਇਸ ਐਪ ਨੂੰ ਅਯੋਗ ਬਣਾਉਂਦੇ ਹੋ, ਤਾਂ ਹੋ ਸਕਦਾ ਹੈ ਕਿ Android ਅਤੇ ਹੋਰ ਐਪਾਂ ਉਸ ਤਰ੍ਹਾਂ ਕੰਮ ਨਾ ਕਰਨ ਜਿਵੇਂ ਇਹਨਾਂ ਤੋਂ ਉਮੀਦ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।"</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"ਕੀ ਡੈਟਾ ਮਿਟਾਉਣਾ ਹੈ ਅਤੇ ਐਪ ਨੂੰ ਅਸਮਰੱਥ ਬਣਾਉਣਾ ਹੈ?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"ਜੇਕਰ ਤੁਸੀਂ ਇਸ ਐਪ ਨੂੰ ਅਯੋਗ ਬਣਾਉਂਦੇ ਹੋ, ਤਾਂ ਹੋ ਸਕਦਾ ਹੈ ਕਿ Android ਅਤੇ ਹੋਰ ਐਪਾਂ ਉਸ ਤਰ੍ਹਾਂ ਕੰਮ ਨਾ ਕਰਨ ਜਿਵੇਂ ਇਹਨਾਂ ਤੋਂ ਉਮੀਦ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਤੁਹਾਡਾ ਡੈਟਾ ਵੀ ਮਿਟਾ ਦਿੱਤਾ ਜਾਏਗਾ।"</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"ਕੀ ਸੂਚਨਾਵਾਂ ਬੰਦ ਕਰਨੀਆਂ ਹਨ?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"ਜੇਕਰ ਤੁਸੀਂ ਇਸ ਐਪ ਲਈ ਸੂਚਨਾਵਾਂ ਬੰਦ ਕਰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਡੇ ਤੋਂ ਮਹੱਤਵਪੂਰਣ ਚਿਤਾਵਨੀਆਂ ਅਤੇ ਅਪਡੇਟਾਂ ਖੁੰਝ ਸਕਦੀਆਂ ਹਨ।"</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"ਸਟੋਰ"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="one">%d ਲੁਕੀਆਂ ਹੋਈਆਂ ਆਈਟਮਾਂ ਵਿਖਾਓ</item>
       <item quantity="other">%d ਲੁਕੀਆਂ ਹੋਈਆਂ ਆਈਟਮਾਂ ਵਿਖਾਓ</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"ਨੈੱਟਵਰਕ ਅਤੇ ਇੰਟਰਨੈੱਟ"</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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"ਸੂਚਨਾਵਾਂ"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"ਮਹੱਤਤਾ"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"ਸੈੱਟ ਨਹੀਂ ਕੀਤਾ"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"ਸੂਚਨਾਵਾਂ ਕਦੇ ਵੀ ਨਾ ਵਿਖਾਓ"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"ਕੋਈ ਧੁਨੀ ਜਾਂ ਦ੍ਰਿਸ਼ਟਾਂਤਕ ਰੁਕਾਵਟ ਨਹੀਂ"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"ਚੁੱਪਚਾਪ ਵਿਖਾਓ"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"ਧੁਨੀ ਵਜਾਓ"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"ਧੁਨੀ ਵਜਾਓ ਅਤੇ ਸਕ੍ਰੀਨ \'ਤੇ ਵਿਖਾਓ"</string>
     <string name="importance_reset" msgid="7458420788555607007">"ਰੀਸੈੱਟ ਕਰੋ"</string>
     <string name="show_silently" msgid="2222875799232222056">"ਚੁੱਪਚਾਪ ਵਿਖਾਓ"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"ਵਰਤਮਾਨ ਸਕ੍ਰੀਨ \'ਤੇ ਦ੍ਰਿਸ਼ ਵਿੱਚ ਇਹਨਾਂ ਸੂਚਨਾਵਾਂ ਨੂੰ ਧੁਨੀ ਨਾ ਵਜਾਉਣ ਦਿਓ, ਥਰਥਰਾਹਟ ਨਾ ਕਰਨ ਦਿਓ ਜਾਂ ਝਲਕ ਨਾ ਵਿਖਾਉਣ ਦਿਓ।"</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"ਐਪਸ ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"ਚੈਨਲ"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"ਸਾਰੇ ਬਲੌਕ ਕਰੋ"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"ਇਹਨਾਂ ਸੂਚਨਾਵਾਂ ਨੂੰ ਕਦੇ ਨਾ ਵਿਖਾਓ"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"ਸੂਚਨਾਵਾਂ ਵਿਖਾਓ"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"ਸੂਚਨਾਵਾਂ ਕਦੇ ਵੀ ਪਰਛਾਵੇਂ ਵਿੱਚ ਜਾਂ ਪੈਰੀਫਿਰਲ ਡੀਵਾਈਸਾਂ \'ਤੇ ਨਾ ਵਿਖਾਓ"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"ਬੈਜ ਵਿਖਾਓ"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"ਹੋਮ ਐਪ \'ਤੇ ਬੈਜਾਂ ਵਜੋਂ ਸੂਚਨਾਵਾਂ ਵਿਖਾਓ, ਜੇਕਰ ਸਮਰਥਨ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।"</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>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"ਦੁਬਾਰਾ ਨਾ ਵਿਖਾਓ"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"ਇਸ ਵਜੋਂ ਬੇਨਤੀ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"ਖਾਤਾ ਸ਼ਾਮਲ ਕਰੋ"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"ਸਿਸਟਮ ਜਾਣਕਾਰੀ"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"ਕੰਮ ਪ੍ਰੋਫਾਈਲ ਸੈਟਿੰਗਾਂ"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"ਸੰਪਰਕ ਖੋਜ"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"ਕਾਲ ਕਰਨ ਵਾਲਿਆਂ ਅਤੇ ਸੰਪਰਕਾਂ ਦੀ ਪਛਾਣ ਕਰਨ ਲਈ ਤੁਹਾਡੀ ਸੰਸਥਾ ਵਿੱੱਚ ਸੰਪਰਕ ਖੋਜਾਂ ਕਰਨ ਦਿਓ"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"ਤੁਹਾਡੀ ਸਭ ਤੋਂ ਹਾਲੀਆ ਬੱਗ ਰਿਪੋਰਟ"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"ਤੁਹਾਡਾ ਸਭ ਤੋਂ ਹਾਲੀਆ ਸੁਰੱਖਿਆ ਲੌਗ"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"ਕਦੇ ਵੀ ਨਹੀਂ"</string>
-    <string name="storage_photos_videos" msgid="1872663116054954685">"ਫ਼ੋਟੋਆਂ ਅਤੇ ਵੀਡੀਓ ਫ਼ਾਈਲਾਂ"</string>
-    <string name="storage_music_audio" msgid="7890103397813503615">"ਸੰਗੀਤ ਅਤੇ ਔਡੀਓ ਫ਼ਾਈਲ"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
+    <string name="storage_photos_videos" msgid="1872663116054954685">"ਫ਼ੋਟੋਆਂ ਅਤੇ ਵੀਡੀਓ"</string>
+    <string name="storage_music_audio" msgid="7890103397813503615">"ਸੰਗੀਤ ਅਤੇ ਔਡੀਓ"</string>
     <string name="storage_games" msgid="7703159201697117621">"ਗੇਮਾਂ"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"ਹੋਰ ਐਪਾਂ"</string>
     <string name="storage_files" msgid="8581083146777364063">"ਫ਼ਾਈਲਾਂ"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"ਫ਼ੋਨ ਸਟੋਰੇਜ"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> ਵਰਤੀ ਗਈ"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> ਖਾਲੀ"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index f8c6c3a..365fc11 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -88,8 +88,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Przykładowy tekst"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Czarnoksiężnik z Krainy Oz"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Rozdział 11: Szmaragdowe Miasto"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Mimo że Dorotka i jej przyjaciele mieli na nosach ochronne zielone okulary, odruchowo zmrużyli oczy, gdy pierwszy raz ujrzeli lśniące wspaniale Szmaragdowe Miasto. Wzdłuż ulic stały równo piękne domy z zielonego marmuru, wysadzane połyskującymi szmaragdami. Chodniki wykonane były z tego samego budulca, a w spojeniach płyt skrzyły się w słońcu całe rzędy osadzonych ciasno szmaragdów. Szyby w oknach były z zielonego szkła. Nawet niebo nad Miastem i promienie słońca miały zielonkawe zabarwienie. \n\nWokół kręciło się mnóstwo ludzi – mężczyzn, kobiet i dzieci – ubranych na zielono. Również ich skóra miała zielony odcień. Patrzyli na Dorotkę i jej barwną kompanię wielkimi, zdziwionymi oczami, a dzieci na widok Lwa uciekały i chowały się za swoimi mamami. Nikt jednak nie odezwał się do nich nawet słowem. Przy ulicy nie brakowało różnych sklepów i Dorotka zauważyła, że cały ich asortyment był zielony: zielone cukierki, zielona prażona kukurydza, zielone buty, zielone kapelusze, wszelkiego rodzaju zielone ubrania. Przy jednym ze stoisk jakiś pan sprzedawał zieloną lemoniadę, za którą dzieci płaciły – jak dostrzegła Dorotka – zielonymi monetami. \n\nNigdzie nie było widać ani koni, ani żadnych innych zwierząt. Do transportu używano zielonych wózeczków, które mieszkańcy pchali przed sobą. Wszyscy wydawali się szczęśliwi, radośni i zadowoleni z życia."</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"Nośnik USB"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"Karta SD"</string>
@@ -689,8 +688,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Błąd"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"Pasmo 5 GHz nie jest dostępne w tym kraju"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"W trybie samolotowym"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Powiadomienie o sieci"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Powiadamiaj o dostępnej sieci publicznej"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Unikaj słabych połączeń"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Nie używaj sieci Wi-Fi, jeśli połączenie jest słabe"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Używaj tylko sieci z dobrym połączeniem internetowym"</string>
@@ -1558,11 +1563,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Zmień preferowaną lokalizację instalacji nowych aplikacji."</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Wyłączyć wbudowaną aplikację?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Wyłącz aplikację"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Jeśli wyłączysz tę aplikację, Android i inne aplikacje mogą działać nieprawidłowo."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Usunąć dane i wyłączyć aplikację?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Jeśli wyłączysz tę aplikację, Android i inne aplikacje mogą działać nieprawidłowo. Zostaną też usunięte Twoje dane."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Wyłączyć powiadomienia?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Jeśli wyłączysz powiadomienia tej aplikacji, możesz przeoczyć ważne alerty i aktualizacje."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Sklep"</string>
@@ -2571,8 +2574,7 @@
       <item quantity="other">Pokaż %d ukrytego elementu</item>
       <item quantity="one">Pokaż %d ukryty element</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Sieć i internet"</string>
     <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>
@@ -2698,16 +2700,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Powiadomienia"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Ważność"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Nie ustawiono"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Nigdy nie pokazuj powiadomień"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Brak dźwięku i komunikatów wizualnych"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Pokazuj dyskretnie"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Sygnalizacja dźwiękiem"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Sygnalizacja dźwiękiem i wyświetlenie komunikatu"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Resetuj"</string>
     <string name="show_silently" msgid="2222875799232222056">"Pokazuj dyskretnie"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Nie sygnalizuj tych powiadomień dźwiękiem ani wibracjami ani nie wyświetlaj ich na bieżącym ekranie."</string>
@@ -2738,16 +2735,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Wczytuję aplikacje..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Kanały"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Blokuj wszystkie"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Nigdy nie pokazuj tych powiadomień"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Pokazuj powiadomienia"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Nigdy nie pokazuj powiadomień w obszarze powiadomień ani na urządzeniach peryferyjnych"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Pokaż plakietkę"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Pokazuj powiadomienia jako plakietki w aplikacji Google Home, jeśli są obsługiwane."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"Zastąp Nie przeszkadzać"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Zezwól na działanie tych powiadomień, gdy Nie przeszkadzać ma ustawienie Tylko priorytetowe"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"Na ekranie blokady"</string>
@@ -3288,8 +3280,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Nie pokazuj ponownie"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Wysyłasz jako"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Dodaj konto"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Informacje o systemie"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Ustawienia profilu do pracy"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Wyszukiwanie kontaktów"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Zezwalaj na wyszukiwanie kontaktów do identyfikacji rozmówców i kontaktów przez Twoją organizację"</string>
@@ -3388,16 +3379,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Najnowszy raport o błędzie"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Twój najnowszy dziennik zabezpieczeń"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Nigdy"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Zdjęcia i filmy"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Muzyka i nagrania audio"</string>
     <string name="storage_games" msgid="7703159201697117621">"Gry"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Inne aplikacje"</string>
     <string name="storage_files" msgid="8581083146777364063">"Pliki"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Pamięć telefonu"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> wykorzystano"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"Wolne: <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml
index c1529ba..4456004 100644
--- a/res/values-pt-rBR/strings.xml
+++ b/res/values-pt-rBR/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Texto de amostra"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"O Mágico de Oz"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Capítulo 11: A maravilhosa Cidade das Esmeraldas de Oz"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Mesmo com os olhos protegidos pelos óculos verdes, Dorothy e seus amigos foram ofuscados pelo brilho da magnífica cidade. As ruas estavam repletas de belas casas, todas feitas de mármore verde e cravejadas de esmeraldas brilhantes por toda a parte. Eles caminharam pela calçada do mesmo mármore verde, e, onde os blocos se encontravam, havia fileiras de esmeraldas bem próximas umas das outras, brilhantes à luz do sol. As janelas eram de vidro verde. Até mesmo o céu sobre a cidade era esverdeado, e os raios do sol eram verdes. \n\nHavia muitas pessoas, homens, mulheres e crianças, caminhando por lá, e todos estavam vestidos com roupas verdes e tinham a pele esverdeada. Eles olharam para Dorothy e seu grupo estranhamente variado com olhos curiosos, e todas as crianças fugiram e se esconderam atrás de suas mães quando viram o Leão; mas ninguém falou com eles. Havia muitas lojas na rua, e Dorothy viu que tudo nelas era verde. Doces verdes e pipoca verde estavam à venda, assim como sapatos verdes, chapéus verdes e roupas verdes de todos os tipos. Em um lugar, um homem estava vendendo limonada verde, e quando as crianças a compravam, Dorothy viu que elas pagavam com moedas verdes. \n\nParecia não haver nenhum cavalo nem animais de qualquer espécie. Os homens carregavam as coisas em pequenos carrinhos verdes, que eles empurravam à sua frente. Todos pareciam felizes, satisfeitos e prósperos."</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"Armaz. USB"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"Cartão SD"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Erro"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"Banda de 5 GHz não está disponível neste país"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"No modo avião"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Notificação de rede"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Notificar sempre que houver uma rede pública disponível"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Evitar conexões ruins"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Não usar uma rede Wi-Fi a menos que tenha uma boa conexão com a Internet"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Use somente redes que têm uma boa conexão com a Internet"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Alterar o local de instalação preferido para novos apps"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Desativar app integrado?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Desativar app"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Se você desativar esse app, o Android e outros apps poderão deixar de funcionar como deveriam."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Excluir os dados e desativar o app?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Se você desativar esse app, o Android e outros apps poderão deixar de funcionar como deveriam. Seus dados também serão excluídos."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Desativar notificações?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Se você desativar as notificações para este app, poderá perder alertas e atualizações importantes."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Loja"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="one">Mostrar %d item oculto</item>
       <item quantity="other">Mostrar %d itens ocultos</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Notificações"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Importância"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Não definido"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Nunca mostrar notificações"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Sem som ou interrupção visual"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Mostrar de forma silenciosa"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Emitir som"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Emitir som e exibir na tela"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Redefinir"</string>
     <string name="show_silently" msgid="2222875799232222056">"Mostrar de forma silenciosa"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Não emitir som, vibrar ou mostrar parcialmente essas notificações na tela atual."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Carregando apps…"</string>
     <string name="notification_channels" msgid="8681423709659818791">"Canais"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Bloquear tudo"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Nunca mostrar essas notificações"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Mostrar notificações"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Nunca mostrar notificações na aba ou em dispositivos periféricos"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Mostrar selos"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Mostrar notificações como selos no app Google Home, se compatível."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"Modificar \"Não perturbe\""</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Permitir que essas notificações continuem a interromper quando \"Não perturbe\" estiver definido para \"Somente prioridade\""</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"Na tela de bloqueio"</string>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Não mostrar novamente"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Solicitando como"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Adicionar conta"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Informações do sistema"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Configurações do perfil de trabalho"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Pesquisa de contatos"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Permitir que sua organização pesquise contatos para identificar autores de chamadas e contatos"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Seu relatório do bug mais recente"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Seu registro de segurança mais recente"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Nunca"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Fotos e vídeos"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Música e áudio"</string>
     <string name="storage_games" msgid="7703159201697117621">"Jogos"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Outros apps"</string>
     <string name="storage_files" msgid="8581083146777364063">"Arquivos"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Armazen. do smartphone"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> usado(s)"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> livre(s)"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 933fe28..e15f740 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Exemplo de texto"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"O Maravilhoso Feiticeiro de Oz"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Capítulo 11: A Maravilhosa Cidade Esmeralda de Oz"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Mesmo com os olhos protegidos pelos óculos verdes, Dorothy e os seus amigos ficaram ofuscados pelo esplendor da maravilhosa Cidade. As ruas estavam ladeadas por casas magníficas totalmente construídas em mármore verde e cravejadas de esmeraldas brilhantes. Caminhavam por um passeio feito do mesmo mármore verde e, nos espaços onde os blocos se uniam, havia filas apertadas de esmeraldas que brilhavam sob a luz do sol. Os vidros das janelas eram verdes; até mesmo o céu sobre a Cidade tinha um tom esverdeado, e os raios do sol eram verdes. \n\nPelas ruas caminhavam várias pessoas, homens, mulheres e crianças, todos vestidos com roupas verdes e com uma pele esverdeada. Olhavam com curiosidade para Dorothy e os seus estranhos companheiros, e as crianças fugiam e escondiam-se atrás das suas mães quando viam o Leão. Contudo, ninguém falava com eles. A rua estava repleta de lojas e Dorothy viu que tudo o que nelas havia era verde. Vendiam-se doces verdes e pipocas verdes, bem como sapatos verdes, chapéus verdes e roupas verdes de todos os tipos. Por ali, um homem vendia limonada verde e Dorothy reparou que as crianças lhe pagavam com moedas verdes. \n\nParecia não haver cavalos ou animais de qualquer espécie. Os homens levavam as suas coisas em pequenos carrinhos verdes que empurravam à sua frente. Todos pareciam felizes, satisfeitos e prósperos."</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"Armazenamento USB"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"Cartão SD"</string>
@@ -658,7 +657,7 @@
     <string name="android_beam_off_summary" msgid="4663095428454779138">"Desativado"</string>
     <string name="android_beam_disabled_summary" msgid="1737782116894793393">"Não disponível, porque o NFC está desativado"</string>
     <string name="android_beam_label" msgid="6257036050366775040">"Android Beam"</string>
-    <string name="android_beam_explained" msgid="1810540319385192758">"Quando esta funcionalidade está ativada, pode transmitir conteúdo da aplicação para outro dispositivo compatível com NFC ao manter os dispositivos próximos um do outro. Por exemplo, pode transmitir páginas Web, vídeos do YouTube, contactos e muito mais.\n\nBasta aproximar os dispositivos um do outro (normalmente, de costas) e, em seguida, toque no ecrã. A aplicação determina o que é transmitido."</string>
+    <string name="android_beam_explained" msgid="1810540319385192758">"Quando esta funcionalidade está ativada, pode transmitir conteúdo da aplicação para outro dispositivo compatível com NFC ao manter os dispositivos próximos um do outro. Por exemplo, pode transmitir páginas Web, vídeos do YouTube, contactos e muito mais.\n\nBasta aproximar os dispositivos um do outro (normalmente, de costas) e, em seguida, tocar no ecrã. A aplicação determina o que é transmitido."</string>
     <string name="wifi_quick_toggle_title" msgid="8850161330437693895">"Wi‑Fi"</string>
     <string name="wifi_quick_toggle_summary" msgid="2696547080481267642">"Ativar Wi-Fi"</string>
     <string name="wifi_settings" msgid="29722149822540994">"Wi‑Fi"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Erro"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"Banda de 5 GHz não disponível neste país"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"No Modo de avião"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Notificação de rede"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Notificar sempre que uma rede pública estiver disponível"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Evitar más ligações"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Não utilizar uma rede Wi-Fi exceto se tiver uma boa ligação à Internet"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Utilize apenas redes com uma boa ligação à Internet"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Alterar a localização de instalação preferida para novas aplicações"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Desativar aplicação incorporada?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Desativar aplicação"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Se desativar esta aplicação, o Android e outras aplicações podem deixar de funcionar corretamente."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Eliminar dados e desativar aplicação?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Se desativar esta aplicação, o Android e outras aplicações podem deixar de funcionar corretamente. Os seus dados também são eliminados."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Desativar notificações?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Se desativar as notificações para esta aplicação, pode perder alertas e atualizações importantes."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Loja"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="other">Mostrar %d itens ocultos</item>
       <item quantity="one">Mostrar %d item oculto</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Rede e Internet"</string>
     <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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Notificações"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Importância"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Não definido"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Nunca mostrar notificações"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Sem interrupção sonora ou visual"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Mostrar silenciosamente"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Emitir som"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Emitir som e aparecer no ecrã"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Repor"</string>
     <string name="show_silently" msgid="2222875799232222056">"Mostrar silenciosamente"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Não emitir som, vibrar, nem mostrar estas notificações no ecrã atual."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"A carregar aplicações..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Canais"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Bloquear tudo"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Nunca mostrar estas notificações"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Mostrar notificações"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Nunca mostrar notificações no painel ou nos dispositivos periféricos"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Mostrar emblema"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Mostrar notificações como emblemas na aplicação Google Home, se tal for suportado."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"Substituir o modo Não incomodar"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Permitir que estas notificações continuem a interrompê-lo quando o modo Não incomodar estiver definido como Apenas prioridade"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"No ecrã de bloqueio"</string>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Não mostrar novamente"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"A solicitar como"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Adicionar conta"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Informações do sistema"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Definições do perfil de trabalho"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Pesquisa de contactos"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Permitir pesquisa de contactos por parte da sua entidade para identificar autores das chamadas e contactos"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"O seu relatório de erro mais recente"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"O seu registo de segurança mais recente"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Nunca"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Fotos e vídeos"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Música e áudio"</string>
     <string name="storage_games" msgid="7703159201697117621">"Jogos"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Outras aplicações"</string>
     <string name="storage_files" msgid="8581083146777364063">"Ficheiros"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Armazenam. do telemóvel"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> utilizado(s)"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> livre(s)"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index c1529ba..4456004 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Texto de amostra"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"O Mágico de Oz"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Capítulo 11: A maravilhosa Cidade das Esmeraldas de Oz"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Mesmo com os olhos protegidos pelos óculos verdes, Dorothy e seus amigos foram ofuscados pelo brilho da magnífica cidade. As ruas estavam repletas de belas casas, todas feitas de mármore verde e cravejadas de esmeraldas brilhantes por toda a parte. Eles caminharam pela calçada do mesmo mármore verde, e, onde os blocos se encontravam, havia fileiras de esmeraldas bem próximas umas das outras, brilhantes à luz do sol. As janelas eram de vidro verde. Até mesmo o céu sobre a cidade era esverdeado, e os raios do sol eram verdes. \n\nHavia muitas pessoas, homens, mulheres e crianças, caminhando por lá, e todos estavam vestidos com roupas verdes e tinham a pele esverdeada. Eles olharam para Dorothy e seu grupo estranhamente variado com olhos curiosos, e todas as crianças fugiram e se esconderam atrás de suas mães quando viram o Leão; mas ninguém falou com eles. Havia muitas lojas na rua, e Dorothy viu que tudo nelas era verde. Doces verdes e pipoca verde estavam à venda, assim como sapatos verdes, chapéus verdes e roupas verdes de todos os tipos. Em um lugar, um homem estava vendendo limonada verde, e quando as crianças a compravam, Dorothy viu que elas pagavam com moedas verdes. \n\nParecia não haver nenhum cavalo nem animais de qualquer espécie. Os homens carregavam as coisas em pequenos carrinhos verdes, que eles empurravam à sua frente. Todos pareciam felizes, satisfeitos e prósperos."</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"Armaz. USB"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"Cartão SD"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Erro"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"Banda de 5 GHz não está disponível neste país"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"No modo avião"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Notificação de rede"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Notificar sempre que houver uma rede pública disponível"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Evitar conexões ruins"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Não usar uma rede Wi-Fi a menos que tenha uma boa conexão com a Internet"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Use somente redes que têm uma boa conexão com a Internet"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Alterar o local de instalação preferido para novos apps"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Desativar app integrado?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Desativar app"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Se você desativar esse app, o Android e outros apps poderão deixar de funcionar como deveriam."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Excluir os dados e desativar o app?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Se você desativar esse app, o Android e outros apps poderão deixar de funcionar como deveriam. Seus dados também serão excluídos."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Desativar notificações?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Se você desativar as notificações para este app, poderá perder alertas e atualizações importantes."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Loja"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="one">Mostrar %d item oculto</item>
       <item quantity="other">Mostrar %d itens ocultos</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Notificações"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Importância"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Não definido"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Nunca mostrar notificações"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Sem som ou interrupção visual"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Mostrar de forma silenciosa"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Emitir som"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Emitir som e exibir na tela"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Redefinir"</string>
     <string name="show_silently" msgid="2222875799232222056">"Mostrar de forma silenciosa"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Não emitir som, vibrar ou mostrar parcialmente essas notificações na tela atual."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Carregando apps…"</string>
     <string name="notification_channels" msgid="8681423709659818791">"Canais"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Bloquear tudo"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Nunca mostrar essas notificações"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Mostrar notificações"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Nunca mostrar notificações na aba ou em dispositivos periféricos"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Mostrar selos"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Mostrar notificações como selos no app Google Home, se compatível."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"Modificar \"Não perturbe\""</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Permitir que essas notificações continuem a interromper quando \"Não perturbe\" estiver definido para \"Somente prioridade\""</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"Na tela de bloqueio"</string>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Não mostrar novamente"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Solicitando como"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Adicionar conta"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Informações do sistema"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Configurações do perfil de trabalho"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Pesquisa de contatos"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Permitir que sua organização pesquise contatos para identificar autores de chamadas e contatos"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Seu relatório do bug mais recente"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Seu registro de segurança mais recente"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Nunca"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Fotos e vídeos"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Música e áudio"</string>
     <string name="storage_games" msgid="7703159201697117621">"Jogos"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Outros apps"</string>
     <string name="storage_files" msgid="8581083146777364063">"Arquivos"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Armazen. do smartphone"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> usado(s)"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> livre(s)"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 0c572c5..73119a8 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -87,8 +87,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Exemplu de text"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Minunatul Vrăjitor din Oz"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Capitolul 11: Minunatul Oraș de Smarald Oz"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Deși purtau ochelarii verzi, Dorothy și prietenii ei fură la început orbiți de strălucirea minunatei cetăți. De-a lungul străzilor se înșiruiau case frumoase din marmură verde, încrustate pretutindeni cu smaralde scânteietoare. Mergeau pe un caldarâm tot din marmură verde, iar în locurile unde blocurile de marmură erau lipite laolaltă, se aflau, unul lângă altul, șiruri de smaralde care străluceau în razele soarelui. Geamurile erau din sticlă verde. Chiar și cerul de deasupra Cetății avea o nuanță verde, iar razele soarelui erau verzui. \n\nPe străzi se plimba multă lume - bărbați, femei și copii - și cu toții erau îmbrăcați în verde și aveau pielea verzuie. Se uitau uimiți la Dorothy și la neobișnuita ei ceată, iar copiii fugeau în toate părțile când îl vedeau pe Leu și se ascundeau în spatele mamelor lor. Însă nimeni nu vorbea cu ei. Pe străzi erau multe dughene, iar Dorothy observă că în ele totul era verde. Se vindeau bomboane verzi și floricele de porumb verde, pantofi verzi, pălării verzi și haine verzi de tot soiul. Într-un loc, cineva vindea limonadă verde, iar niște copii tocmai cumpărau și Dorothy văzu că plăteau cu bănuți verzi. \n\nNu păreau să existe nici cai, nici alte animale. În schimb, oamenii își cărau lucrurile în niște cărucioare verzi, pe care tot ei le împingeau. Cu toții păreau să emane o stare de fericire, de mulțumire și bunăstare."</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"Stocare USB"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"Card SD"</string>
@@ -680,8 +679,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Eroare"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"Banda de 5 GHz nu este disponibilă în această țară"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"În modul Avion"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Notificare de rețea"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Notifică-mă când este disponibilă o rețea publică"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Evitați conexiunile slabe"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Nu utilizați o rețea Wi-Fi, cu excepția cazului în care aceasta are o conexiune la internet adecvată"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Utilizați numai rețelele care au conexiune bună la internet"</string>
@@ -1547,11 +1552,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Schimbați locația preferată de instalare pentru noile aplicații"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Dezactiv. aplic. încorporată?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Dezactivați aplicația"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Dacă dezactivați această aplicație, este posibil ca Android și alte aplicații să nu mai funcționeze corespunzător."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Ștergeți datele și dezactivați aplicația?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Dacă dezactivați această aplicație, este posibil ca Android și alte aplicații să nu mai funcționeze corespunzător. În plus, datele dvs. vor fi șterse."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Dezactivați notificările?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Dacă dezactivați notificările pentru această aplicație, puteți pierde alerte și actualizări importante."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Magazin"</string>
@@ -2549,8 +2552,7 @@
       <item quantity="other">Afișați %d de elemente ascunse</item>
       <item quantity="one">Afișați %d element ascuns</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Rețea și internet"</string>
     <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>
@@ -2676,16 +2678,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Notificări"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Importanță"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Nesetat"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Nu afișați niciodată notificările"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Fără sunet sau întrerupere vizuală"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Se afișează fără sunet"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Se emite un sunet"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Se emite un sunet și se evidențiază pe ecran"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Resetați"</string>
     <string name="show_silently" msgid="2222875799232222056">"Se afișează fără sunet"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Sunetul și vibrațiile sunt dezactivate, iar aceste notificări nu se afișează pentru o scurtă durată pe ecranul actual."</string>
@@ -2715,16 +2712,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Se încarcă aplicațiile..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Canale"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Blocați-le pe toate"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Aceste notificări nu se afișează niciodată"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Afișați notificările"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Nu afișați niciodată notificările în umbră sau pe dispozitive periferice"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Afișați insigna"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Afișați notificările ca insigne pe aplicația de pe ecranul de pornire, dacă sunt acceptate."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"Ignoră Nu deranja"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Permiteți acestor notificări să vă întrerupă când modul Nu deranja este setat la Numai cu prioritate"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"Pe ecranul de blocare"</string>
@@ -3256,8 +3248,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Nu mai afișa"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Solicitarea se trimite din contul"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Adăugați un cont"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Informații de sistem"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Setările profilului de serviciu"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Căutarea persoanelor de contact"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Permiteți căutările persoanelor de contact efectuate de organizația dvs. pentru a identifica apelanții și persoanele de contact"</string>
@@ -3352,16 +3343,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Cel mai recent raport de eroare"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Cel mai recent jurnal de securitate"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Niciodată"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Fotografii și videoclipuri"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Muzică și audio"</string>
     <string name="storage_games" msgid="7703159201697117621">"Jocuri"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Alte aplicații"</string>
     <string name="storage_files" msgid="8581083146777364063">"Fișiere"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Stocare pe telefon"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> folosit"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> gratuit"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 0075a59..bee81ee 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -88,8 +88,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Пример текста"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Удивительный волшебник из страны Оз"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Глава 11. Изумрудный город страны Оз"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Даже надев зеленые очки, Дороти и ее друзья были ошеломлены сверканием этого удивительного города. По улицам стояли прекрасные дома из зеленого мрамора, украшенные блестящими изумрудами. Путники шли по тротуару из того же зеленого мрамора, а щели между плитами были заполнены изумрудами, сиявшими под лучами солнца. Окна домов были из зеленого стекла. Даже небо над Изумрудным Городом было зеленое, и зеленое солнце посылало жаркие зеленые лучи.\n\nВокруг сновали мужчины, женщины, дети, и все они носили зеленую одежду, и кожа у них была зеленоватого оттенка. Они с удивлением смотрели на Дороти и ее странных спутников. Завидев большого Льва, дети прятались за спины родителей, и никто не осмеливался задавать вопросы чужестранцам. В магазинах продавались товары зеленого цвета – зеленые конфеты и зеленая жареная кукуруза, зеленые башмаки и шляпы, зеленые платья и сюртуки всех фасонов и размеров. На одном из лотков продавец торговал зеленым лимонадом, и обступившие его дети расплачивались зелеными монетками.\n\nНа улицах Изумрудного Города не было ни лошадей, ни других животных. Мужчины возили поклажу в маленьких тачках на колесиках. У жителей Изумрудного Города был веселый и довольный вид."</string>
     <string name="font_size_save" msgid="3450855718056759095">"ОК"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB-накопитель"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD-карта"</string>
@@ -689,8 +688,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Ошибка"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"Частота 5 ГГц недоступна в этой стране"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"Режим полета"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Уведомления о сетях"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Сообщать о наличии общедоступных сетей"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Фильтр сетей Wi-Fi"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Не использовать сети Wi-Fi с плохим интернет-соединением"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Использовать только сети с сильным сигналом"</string>
@@ -1558,11 +1563,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Изменить папку для установки приложений"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Отключить приложение?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Отключить приложение"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Если вы отключите это приложение, другие могут работать неправильно."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Отключить?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Если вы отключите это приложение, данные будут удалены, а другие приложения и Android могут работать неправильно."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Отключить уведомления?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Если в настройках этого приложения отключены уведомления, вы можете пропустить важные оповещения и обновления."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Магазин"</string>
@@ -2571,8 +2574,7 @@
       <item quantity="many">Показать %d скрытых объектов</item>
       <item quantity="other">Показать %d скрытых объекта</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Сеть и Интернет"</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>
@@ -2698,16 +2700,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Уведомления"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Важность"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Не указано"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Отключить уведомления"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Без уведомлений"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Без звука"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Звук"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Звук и всплывающее окно"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Сбросить"</string>
     <string name="show_silently" msgid="2222875799232222056">"Без звука"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Отключить звуковой сигнал и вибрацию, не показывать оповещения поверх других приложений."</string>
@@ -2738,16 +2735,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Загрузка..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Каналы"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Блокировать все"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Не показывать эти уведомления."</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Включить уведомления"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Не показывать уведомления на фоне или на периферийных устройствах"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Показывать значки"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Показывать уведомления в виде значков в приложении Home (если функция поддерживается)"</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>
@@ -3288,8 +3280,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Больше не показывать"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Запрос от:"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Добавить аккаунт"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Сведения о системе"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Настройки рабочего профиля"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Поиск контактов"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Разрешить поиск контактов в организации для определения вызывающих абонентов"</string>
@@ -3388,16 +3379,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Последний отчет об ошибках"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Последний журнал безопасности"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Никогда"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Фото и видео"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Музыка"</string>
     <string name="storage_games" msgid="7703159201697117621">"Игры"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Другие приложения"</string>
     <string name="storage_files" msgid="8581083146777364063">"Файлы"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Хранилище телефона"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> занято"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> свободно"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index e5da4eb..5579351 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -670,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"දෝෂය"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"5 GHz කලාපය මෙම රටෙහි නොමැත"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"අහස්යානා ආකාරය තුළ"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"ජාල දැනුම්දීම"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"පොදු ජාල තිබෙන්නේ කොහේ දැයි දැනුම් දෙන්න"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"දුර්වල සම්බන්ධතා මඟහරින්න"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"හොඳ අන්තර්ජාල සම්බන්ධතාවයක් නොමැති නම් Wi‑Fi ජාල භාවිතා නොකරන්න"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"හොඳ අන්තර්ජාල සම්බන්ධතාවක් තිබෙන ජාල පමණක් භාවිතා කරන්න"</string>
@@ -3301,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"ඔබේ වඩාත්ම මෑත දෝෂ වාර්තාව"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"ඔබේ වඩාත්ම මෑත ආරක්ෂක ලොගය"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"කවදාවත් නෑ"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"ඡායාරූප සහ වීඩියෝ"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"සංගීතය සහ ශ්‍රව්‍ය"</string>
     <string name="storage_games" msgid="7703159201697117621">"ක්‍රීඩා"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"වෙනත් යෙදුම්"</string>
     <string name="storage_files" msgid="8581083146777364063">"ගොනු"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"දුරකථන ගබඞාව"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> භාවිත කරන ලදී"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> නිදහස්ය"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index c3aadfc..59e1c42 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -88,8 +88,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Ukážkový text"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Čarodejník z krajiny Oz"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"11. kapitola: Nádherné smaragdové mesto"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Lesk tohto nádherného mesta Dorotku a jej priateľov najskôr oslepoval, hoci mali na očiach zelené okuliare. Ulice lemovali nádherné domy zo zeleného mramoru, husto osadené trblietajúcimi sa smaragdmi. Kráčali po chodníku z takého istého zeleného mramoru. Na miestach, kde sa spájali dlaždice, sa ligotali v odraze slnka husté rady smaragdov. Obločné tabule boli zo zeleného skla. Dokonca aj obloha nad mestom bola zafarbená dozelena a slnečné lúče boli tiež zelené. \n\nV uliciach bolo veľa ľudí. Muži, ženy i deti si vykračovali oblečení v zelených šatách a všetci mali zelenkavú pokožku. Zvedavo si obzerali Dorotku a jej prazvláštnu spoločnosť. Keď deti zbadali leva, rýchlo utiekli a skryli sa za matkin chrbát. Nik sa však Dorotke a jej spoločníkom neprihovoril. Na ulici bolo mnoho rozličných obchodov. Dorotkinmu zraku neušlo, že všetok tovar bol zelený. Zelené cukríky, zelené pukance, zelené topánky, zelené klobúky a všelijaké zelené šaty – to všetko tu bolo na predaj. Jeden obchodník predával zelenú limonádu. Keď si ju deti kupovali, Dorotka zbadala, že platia zelenými mincami. \n\nZdalo sa, že sa v meste nenachádzajú žiadne kone ani iné zvieratá. Muži tlačili pred sebou malé zelené vozíky, v ktorých prevážali veci, kam bolo treba. Všetci vyzerali šťastní, spokojní a prekvitajúci."</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"Ukladací priestor USB"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD karta"</string>
@@ -689,8 +688,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Chyba"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"V tejto krajine nie je pásmo 5 GHz k dispozícii"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"Režim v lietadle"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Upozornenia na siete"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Upozorniť, keď bude dostupná verejná sieť"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Vyhnúť sa nekvalitným pripojeniam"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Nepoužívať sieť Wi-Fi, pokiaľ nemá dostatočne kvalitné internetové pripojenie"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Použiť iba siete s dobrým pripojením k internetu"</string>
@@ -1558,11 +1563,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Zmena preferovaného umiestnenia pre inštaláciu nových aplikácií"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Chcete deaktivovať vstavanú aplikáciu?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Zakázať aplikáciu"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Ak zakážete túto aplikáciu, systém Android a ďalšie aplikácie už nemusia fungovať podľa očakávaní."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Odstrániť údaje a zakázať aplikáciu?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Ak zakážete túto aplikáciu, systém Android a ďalšie aplikácie už nemusia fungovať podľa očakávaní. Taktiež sa odstránia vaše údaje."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Vypnúť upozornenia?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Ak v tejto aplikácii vypnete upozornenia, môžete prísť o dôležité upozornenia a aktuálne informácie."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Obchod"</string>
@@ -2571,8 +2574,7 @@
       <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 (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"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>
@@ -2698,16 +2700,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Upozornenia"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Dôležitosť"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Nenastavené"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Nikdy nezobrazovať upozornenia"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Bez zvuku a vizuálneho vyrušenia"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Zobraziť bez zvukov"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Vydať zvukový signál"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Vydať zvukový signál a vyskočiť na obrazovku"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Obnoviť"</string>
     <string name="show_silently" msgid="2222875799232222056">"Zobraziť bez zvukov"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Bez zvukov, vibrovania alebo posunutia do zobrazenia na aktuálnej obrazovke"</string>
@@ -2738,16 +2735,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Načítavajú sa aplikácie..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Kanály"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Blokovať všetko"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Tieto upozornenia nikdy nezobrazovať"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Zobrazovať upozornenia"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Nikdy nezobrazovať upozornenia na paneli ani v periférnych zariadeniach"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Zobrazovať odznaky"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Zobrazovať upozornenia ako odznaky v aplikácii Home, ak je táto funkcia podporovaná."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"Prepísať možnosť Nerušiť"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Umožniť týmto upozorneniam vyrušiť ma, ak je možnosť Nerušiť nastavená na možnosť Iba prioritné"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"Na uzamknutej obrazovke"</string>
@@ -3288,8 +3280,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Nabudúce nezobrazovať"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Žiadosť sa odošle z účtu"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Pridať účet"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Systémové informácie"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Nastavenia pracovného profilu"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Vyhľadávanie kontaktov"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Povoliť vašej organizácii hľadať kontakty na identifikáciu volajúcich a kontaktov"</string>
@@ -3388,16 +3379,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Najaktuálnejšie hlásenie chyby"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Váš najaktuálnejší denník zabezpečenia"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Nikdy"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Fotky a videá"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Hudba a zvuk"</string>
     <string name="storage_games" msgid="7703159201697117621">"Hry"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Ďalšie aplikácie"</string>
     <string name="storage_files" msgid="8581083146777364063">"Súbory"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Úložisko telefónu"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> využité"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"Voľné miesto: <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g> %%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index b25542c..ac7329f 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -88,8 +88,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Vzorec besedila"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Čudoviti čarovnik iz Oza"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"11. poglavje: Čudovito Smaragdno mesto"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Še celo skoz zelene naočnike, ki so jim varovali oči, so bili Doroteja in njeni prijatelji od kraja čisto oslepljeni od lesketanja čudovitega mesta. Na obakraj ceste so stale prelepe hiše, vse zidane iz zelenega marmorja in čez in čez posejane z bleščečimi smaragdi. Hodili so po tlaku iz ravno tako zelenega marmorja in povsod, kjer so bile plošče staknjene, so bile tikoma nanizane vrste smaragdov in se iskrile v sončnih žarkih. Šipe v oknih so bile iz zelenega stekla; še celo nebo nad mestom je bilo zeleno nadahnjeno in sončni žarki so bili zeleni. \n\nNa cestah je bilo vse polno ljudi – mož, žena in otrok – hodili so gor in dol in vsi so bili oblečeni v zelena oblačila in so bili zelenkaste polti. Vsi so radovedno ogledovali Dorotejo in njeno čudno pisano tovarišijo in od vseh strani so se zgrinjali otroci in se skrivali za matere, ko so zagledali leva; vendar jih nihče ni ogovoril. Ob cesti je bilo veliko trgovin in Doroteja je videla, da je v njih vse zeleno. Prodajali so zelene bonbončke in zeleno koruzo, pa tudi zelene čevlje, zelene klobuke in vse mogoče zelene obleke. Nekje je nekdo prodajal zeleno limonado in ko so jo otroci kupovali, je Doroteja videla, da jo plačujejo z zelenim denarjem. \n\nVideti je bilo, da v mestu ni ne konj ne nobenih drugih živali; ljudje so prevažali tovore sem ter tja na majhnih zelenih vozičkih, ki so jih potiskali pred seboj. Vse je bilo videti srečno in zadovoljno in zvrhano blaginje."</string>
     <string name="font_size_save" msgid="3450855718056759095">"V redu"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"Pomnilnik USB"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"Kartica SD"</string>
@@ -689,8 +688,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Napaka"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"5-GHz pas ni na voljo v tej državi"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"V načinu za letalo"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Obveščanje o omrežjih"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Obveščanje, ko je na voljo javno omrežje"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Izogni se slabim povezavam"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Omrežje Wi-Fi uporabi samo, če je na voljo dobra internetna povezava"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Uporaba samo omrežij z dobro internetno povezavo"</string>
@@ -1558,11 +1563,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Spremenite prednostno namestitveno mesto za nove aplikacije."</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Želite onemogočiti vgrajeno aplikacijo?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Onemogočanje aplikacije"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Če onemogočite to aplikacijo, Android in druge aplikacije morda ne bodo več delovali, kot bi morali."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Ali želite izbrisati podatke in onemogočiti aplikacijo?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Če onemogočite to aplikacijo, Android in druge aplikacije morda ne bodo več delovali, kot bi morali. Poleg tega bodo vaši podatki izbrisani."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Želite izklopiti obvestila?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Če izklopite obvestila za to aplikacijo, boste morda zamudili pomembna opozorila in posodobitve."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Trgovina"</string>
@@ -2571,8 +2574,7 @@
       <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 (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"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>
@@ -2698,16 +2700,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Obvestila"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Pomembnost"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Ni nastavljeno"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Nikoli ne pokaži obvestil"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Brez zvočne ali vizualne prekinitve"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Prikaži brez zvoka"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Predvajaj zvok"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Predvajaj zvok in prikaži na zaslonu"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Ponastavi"</string>
     <string name="show_silently" msgid="2222875799232222056">"Prikaži brez zvoka"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Na trenutnem zaslonu ne predvajaj zvoka, vibriraj ali na hitro prikazuj teh obvestil."</string>
@@ -2738,16 +2735,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Nalaganje aplikacij ..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Kanali"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Blokiraj vse"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Nikoli ne prikaži teh obvestil"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Pokaži obvestila"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Nikoli ne pokaži obvestil na zaslonu z obvestili ali v zunanjih napravah."</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Pokaži značko"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Pokaži obvestila kot značke v aplikaciji Home, če je to podprto."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"Preglasitev načina »Ne moti«"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Naj se ta obvestila prikazujejo tudi, ko je način »Ne moti« nastavljen na »Samo prednostno«"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"Na zaklenjenem zaslonu"</string>
@@ -3288,8 +3280,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Ne prikaži več"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Zahteva uporabnik"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Dodajanje računa"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Podatki o sistemu"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Nastavitve delovnega profila"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Iskanje po stikih"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Organizaciji dovoli iskanje po stikih zaradi prepoznavanja klicateljev in stikov"</string>
@@ -3388,16 +3379,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Najnovejše poročilo o napakah"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Najnovejši varnostni dnevnik"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Nikoli"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Fotografije in videoposnetki"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Glasba in zvok"</string>
     <string name="storage_games" msgid="7703159201697117621">"Igre"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Druge aplikacije"</string>
     <string name="storage_files" msgid="8581083146777364063">"Datoteke"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Pomnilnik telefona"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"Porabljeno: <xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g>"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"Nezasedeno: <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g> %%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index 75784ef..7132849 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Teksti shembull"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Magjistari i mrekullueshëm i Ozit"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Kapitulli 11: Qyteti i mrekullueshëm i smeraldtë i Ozit"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Edhe me sytë e mbrojtur nga syzet e gjelbra Doroti dhe shokët e saj u dalldisën në fillim nga shkëlqimi i Qytetit të mrekullueshëm. Rrugët ishin të mbushura me shtëpi të bukura të gjitha të ndërtuara me mermer të gjelbër dhe kudo shkëlqenin prej tyre smeralde. Ata shëtitën në një trotuar me po të njëjtin mermer të gjelbër dhe aty ku blloqet bashkoheshin kishte radhë të tjera smeraldi, ngjitur me njëra-tjetrën, dhe që shkëlqenin nën ndriçimin e diellit. Dritaret ishin me xhama të gjelbër; edhe qielli mbi Qytet kishte një nuancë të gjelbër, dhe rrezet e diellit ishin të gjelbra. \n\nKishte shumë njerëz, burra, gra dhe fëmijë, që shëtisnin dhe të gjithë ishin të veshur me rroba të gjelbra dhe kishin lëkurë të gjelbër. Ata e shikonin Dorotin dhe shoqëruesit e saj të çuditshëm me sy të habitur, dhe fëmijët të gjithë u trembën dhe u fshehën pas nënave kur panë Luanin, por askush nuk u foli. Në rrugë kishte shumë dyqane dhe Doroti pa se gjithçka brenda tyre ishte e gjelbër. Shiteshin karamele të gjelbra dhe kokoshka të gjelbra, si dhe këpucë të gjelbra, kapele të gjelbra dhe rroba të gjelbra të të gjitha llojeve. Në një vend dikush shiste limonadë të gjelbër dhe kur fëmijët blinin, Doroti pa se ata paguanin me monedha të gjelbra. \n\nDukej sikur nuk kishte kuaj apo kafshë të ndonjë lloji; burrat i transportonin sendet me karroca të vogla të gjelbra, të cilat i shtynin përpara. Të gjithë dukeshin të kënaqur, të lumtur dhe të begatë."</string>
     <string name="font_size_save" msgid="3450855718056759095">"Në rregull"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"Hapësira ruajtëse e USB-së"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"Karta SD"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Gabim"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"Brezi 5 GHz nuk ofrohet në këtë vend"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"Në modalitetin e aeroplanit"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Njoftimi për rrjetin"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Njofto sa herë që ofrohet ndonjë rrjet publik"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Shmang lidhjet e dobëta"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Mos e përdor një rrjet Wi‑Fi nëse nuk ka lidhje të mirë interneti"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Përdor vetëm rrjete që kanë lidhje të mirë interneti"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Ndrysho vendndodhjen e preferuar të instalimit për aplikacione të reja"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Të çaktivizohet aplikacioni i integruar?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Çaktivizo aplikacionin"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Nëse e çaktivizon këtë aplikacion, Android dhe aplikacionet e tjera mund të mos funksionojnë më siç pritet."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Të fshihen të dhënat dhe të çaktivizohet aplikacioni?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Nëse e çaktivizon këtë aplikacion, Android dhe aplikacionet e tjera mund të mos funksionojnë më siç pritet. Të dhënat e tua do të fshihen po ashtu."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Të çaktivizohen njoftimet?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Nëse i çaktivizon njoftimet për këtë aplikacion, mund të humbasësh alarme dhe përditësime të rëndësishme."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Dyqani"</string>
@@ -2527,8 +2530,7 @@
       <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 (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Njoftimet"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Rëndësia"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Nuk është caktuar"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Mos i shfaq asnjëherë njoftimet"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Asnjë tingull apo ndërprerje vizuale"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Shfaq në heshtje"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Bëj tingull"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Bëj një tingull dhe shfaq në ekran"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Rivendos"</string>
     <string name="show_silently" msgid="2222875799232222056">"Shfaq në heshtje"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Mos lësho tingull, dridhje apo t\'i shfaqësh me shpejtësi në pamje këto njoftime në ekranin aktual."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Po ngarkon aplikacionet..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Kanalet"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Bllokoji të gjitha"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Mos i shfaq asnjëherë këto njoftime"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Shfaq njoftimet"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Mos shfaq asnjëherë njoftime në hije ose në pajisje periferike"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Shfaq simbolin dallues"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Shfaq njoftimet si simbole dalluese në aplikacionin bazë, nëse mbështetet."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"Anulo \"Mos shqetëso\""</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Lejo që këto njoftime të vazhdojnë të ndërpresin kur \"Mos shqetëso\" është vendosur në \"Vetëm prioritare\""</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"Në ekranin e kyçjes"</string>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Mos e shfaq përsëri"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Po kërkon si"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Shto llogari"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Informacioni i sistemit"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Cilësimet e profilit të punës"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Kërkimi i kontakteve"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Lejo kërkimet e kontakteve nga organizata jote për të identifikuar telefonuesit dhe kontaktet"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Raporti më i fundit i defekteve në kod"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Regjistri yt më i fundit i sigurisë"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Asnjëherë"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Fotografitë dhe videot"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Muzikë dhe audio"</string>
     <string name="storage_games" msgid="7703159201697117621">"Lojëra"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Aplikacionet e tjera"</string>
     <string name="storage_files" msgid="8581083146777364063">"Skedarët"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Hapësira ruajtëse e telefonit"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> të përdorura"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> të lira"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 17c4e6c..72619e6 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -87,8 +87,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Пример текста"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Чаробњак из Оза"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Поглавље 11: Чудесни Смарагдни град Оза"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"И поред тога што су им очи биле заштићене зеленим наочарима, Дороти и њени пријатељи су у првом тренутку били заслепљени сјајем чудесног града. Улице су биле пуне прелепих кућа саграђених од зеленог мермера и украшених светлуцавим смарагдима. Ходали су плочником од истог зеленог мермера, а на местима на којима су се плоче спајале налазили су се густо поређани смарагди који су се пресијавали на сунцу. Чак је и небо изнад града било зелене боје, као и сунчеви зраци. \n\nНа улицама је било много људи. Мушкарци, жене и деца су шетали, при чему су сви носили зелена одела и имали зеленкасту кожу. Посматрали су Дороти и њено необично друштво са чуђењем, а деца су бежала и крила се иза својих мајки кад би видела Лава. Међутим, нико им се није обраћао. У улици је било много радњи, а Дороти је приметила да је у њима све било зелено. Продавале су се зелене бомбоне и кокице, зелене ципеле, зелени шешири и зелена одећа свих врста. На једном месту је неки човек продавао зелену лимунаду, а Дороти је приметила да су је деца плаћала зеленим новчићима. \n\nЧинило се да нема коња нити било каквих других животиња. Људи су ствари носили у малим зеленим колицима која су гурали испред себе. Сви су изгледали срећно, задовољно и успешно."</string>
     <string name="font_size_save" msgid="3450855718056759095">"Потврди"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB меморија"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD картица"</string>
@@ -680,8 +679,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Грешка"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"Опсег од 5 GHz није доступан у овој земљи"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"У Режиму рада у авиону"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Обавештење мреже"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Обавештавање када год је доступна јавна мрежа"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Избегавај лоше везе"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Не користи Wi-Fi мрежу ако нема добру интернет везу"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Коришћење само оних мрежа које имају добру интернет везу"</string>
@@ -1547,11 +1552,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Мењање жељене локације за инсталацију нових апликација"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Желите да онемогућите уграђену апл.?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Онемогући апликацију"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Ако онемогућите ову апликацију, Android и друге апликације можда више неће функционисати исправно."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Желите ли да избришете податке и онемогућите апликацију?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Ако онемогућите ову апликацију, Android и друге апликације можда више неће функционисати исправно. Осим тога, подаци ће бити избрисани."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Желите ли да искљ. обавештења?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Ако искључите обавештења за ову апликацију, можете да пропустите важна обавештења и ажурирања."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Продавница"</string>
@@ -2549,8 +2552,7 @@
       <item quantity="few">Прикажи %d скривене ставке</item>
       <item quantity="other">Прикажи %d скривених ставки</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Мрежа и интернет"</string>
     <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>
@@ -2676,16 +2678,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Обавештења"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Важност"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Није подешено"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Никада не приказуј обавештења"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Без звучног сигнала или визуелног обавештења"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Приказује се без звучног сигнала"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Емитује се звучни сигнал"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Емитује се звучни сигнал и приказује се на екрану"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Ресетуј"</string>
     <string name="show_silently" msgid="2222875799232222056">"Приказивање без звука"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Нема никаквог звука ни вибрације нити се ова обавештења накратко приказују на актуелном екрану."</string>
@@ -2715,16 +2712,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Учитавају се апликације..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Канали"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Блокирај све"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Никада не приказуј ова обавештења"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Приказуј обавештења"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Обавештења се никада не приказују на траци или периферијским уређајима"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Приказуј значке"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Приказује обавештења као значке у апликацији Home ако је то подржано."</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>
@@ -3256,8 +3248,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Не приказуј поново"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Захтевате као"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Додај налог"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Информације о систему"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Подешавања пословног профила"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Претрага контаката"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Дозволите да претраживање контаката од стране ваше организације идентификује позиваоце и контакте."</string>
@@ -3352,16 +3343,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Најновији извештај о грешци"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Најновија безбедносна евиденција"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Никада"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Слике и видео снимци"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Музика и аудио"</string>
     <string name="storage_games" msgid="7703159201697117621">"Игре"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Друге апликације"</string>
     <string name="storage_files" msgid="8581083146777364063">"Датотеке"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Меморијски простор телефона"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> је искоришћено"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> је слободно"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 976cd73..4df6b47 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Exempeltext"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Den fantastiska trollkarlen från Oz"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Kapitel 11: Den underbara Smaragdstaden i Oz"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Trots att deras ögon skyddades av de gröna glasögonen blev Dorothy och hennes vänner först bländade av den underbara stadens glans. Gatorna kantades av underbara hus som alla var byggda av grön marmor och översållade med gnistrande smaragder. De gick på stenläggning av samma slags gröna marmor och där stenarna gränsade till varandra fanns rader av smaragder som låg tätt tillsammans och blixtrade i solskenet. Fönsterrutorna var av grönt glas, till och med himlen över staden var grönaktig och solstrålarna var gröna. \n\nMånga män, kvinnor och barn promenerade omkring, och alla var klädda i gröna kläder och hade grönaktig hy. De såg förundrat på Dorothy och hennes egendomliga följeslagare, och alla barnen sprang bort och gömde sig bakom sina mammor när de såg Lejonet; men ingen talade till dem. Det fanns många affärer längs gatan, och Dorothy såg att allt i dem var grönt. Där såldes grön kola och gröna popcorn liksom gröna skor, gröna hattar och gröna kläder av alla slag. På en plats sålde en man grön saft och när barnen köpte den såg Dorothy att de betalade för den med gröna slantar. \n\nDet tycktes inte finnas några hästar eller några slags djur; männen drog omkring saker i små gröna vagnar. Alla tycktes vara lyckliga och belåtna och välmående."</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB-lagring"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD-kort"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Fel"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"5 GHz-bandet är inte tillgänligt i det här landet"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"I flygplansläge"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Nätverksmeddelande"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Meddela när ett offentligt nätverk är tillgängligt"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Undvik dåliga anslutningar"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Använd inte Wi-Fi-nätverk som inte har en bra internetanslutning"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Använd endast nätverk som har en bra internetanslutning"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Ändra önskad installationsplats för nya appar."</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Inaktivera den inbyggda appen?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Inaktivera app"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Om du inaktiverar den här appen kan det påverka Android och andra appar så att de inte längre fungerar som de ska."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Vill du radera uppgifterna och inaktivera appen?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Om du inaktiverar den här appen kan det påverka Android och andra appar så att de inte längre fungerar som de ska. Din data raderas också."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Inaktivera meddelanden?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Om du inaktiverar meddelanden för den här appen kanske du missar viktiga meddelanden och uppdateringar."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Butik"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="other">Visa %d dolda objekt</item>
       <item quantity="one">Visa %d dolt objekt</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Aviseringar"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Relevans"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Har inte angetts"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Visa aldrig aviseringar"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Spela inte upp ljud och visa inte"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Visa utan ljud"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Spela upp ljud"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Spela upp ljud och visa på skärmen"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Återställ"</string>
     <string name="show_silently" msgid="2222875799232222056">"Visa utan ljud"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Inga ljud, ingen vibration och inga aviseringar som visas som snabbtitt på skärmen."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Läser in appar ..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Kanaler"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Blockera alla"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Visa aldrig de här aviseringarna"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Visa aviseringar"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Visa aldrig aviseringar i panelen eller på perifera enheter"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Visa som märke"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Visa aviseringar som märken i appen Home om detta stöds"</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"Åsidosätt Stör ej"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Fortsätt att få dessa aviseringar när Endast prioriterade har angetts för Stör ej"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"På låsskärmen"</string>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Visa inte igen"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Utför en begäran som"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Lägg till ett konto"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Systeminformation"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Inställningar för jobbprofilen"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Kontaktsökning"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Tillåt att organisationen söker bland kontakter för att identifiera ringande och kontakter"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Din senaste felrapport"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Din senaste säkerhetslogg"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Aldrig"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Foton och videor"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Musik och ljud"</string>
     <string name="storage_games" msgid="7703159201697117621">"Spel"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Andra appar"</string>
     <string name="storage_files" msgid="8581083146777364063">"Filer"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Mobilens lagringsutrymme"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> har använts"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> ledigt utrymme"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g> %%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index ff17c9c..06adbb7 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Sampuli ya maandishi"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Wachawi wa Ajabu kutoka Oz"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Sura ya 11: Mji wa Ajabu wa Johari wa Oz"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Hata baada ya kulinda macho yake kwa miwani ya kijani, Amina na marafiki zake walishangazwa na mwangaza wa Mji wa ajabu. Mitaa ilikuwa na nyumba maridadi zilizotengenezwa kwa marumaru za kijani na kila mahali kulikuwa na johari zilizong\'aa. Walitembea kwenye njia ya marumaru, na matofali yalipokuwa yameuganishwa, kulikuwa na safu za johari zilizong\'aa kama jua. Madirisha yalitengezwa kwa vioo vya kijani. Anga la Mji na miale ya jua pia ilikuwa ya kijani. \n\nKulikuwa na watu wengi (wanaume, wanawake na watoto) ambao walikuwa wakitembea na wote walikuwa wamevalia nguo za kijani na ngozi yao ilikuwa ya kijani. Watu hawa walimtazama Amina na marafiki zake kwa mshangao. Watoto nao walitoroka na kujificha nyuma ya mama zao walipoona Simba; lakini hakuna aliyewazungumzia. Kulikuwa na maduka mengi mtaani na Amina aliona kuwa bidhaa zilizokuwemo zilikuwa za kijani. Peremende, bisi, viatu, kofia na nguo za aina zote zilikuwa za kijani. Katika sehemu fulani, mtu mmoja alikuwa akiuza sharubati ya kijani, na watoto walilipa sarafu za kijani ili kuinunua. \n\nIlionekana kuwa mji huo haukuwa na farasi wala wanyama wa aina yoyote; watu walibeba bidhaa katika vikapu vya kijani. Kila mtu alionekana mchangamfu na aliyeridhika."</string>
     <string name="font_size_save" msgid="3450855718056759095">"Sawa"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"Hifadhi ya USB"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"Kadi ya SD"</string>
@@ -658,7 +657,7 @@
     <string name="android_beam_off_summary" msgid="4663095428454779138">"Imezimwa"</string>
     <string name="android_beam_disabled_summary" msgid="1737782116894793393">"Hazipatikani kwa sababu NFC imezimwa"</string>
     <string name="android_beam_label" msgid="6257036050366775040">"Android Beam"</string>
-    <string name="android_beam_explained" msgid="1810540319385192758">"Unapowasha kipengele hiki, unaweza kuelekeza maudhui ya programu kwenye kifaa kingine kinachoweza kutumia NFC kwa kuweka vifaa pamoja. Kwa mfano, unaweza kuelekeza kurasa za wavuti, video za YouTube, anwani na zaidi.\n\nWeka tu vifaa pamoja (kinyumenyume) na ugonge skrini yako. Programu itabaini ni nini kitaelekezwa."</string>
+    <string name="android_beam_explained" msgid="1810540319385192758">"Unapowasha kipengele hiki, unaweza kuelekeza maudhui ya programu kwenye kifaa kingine kinachoweza kutumia NFC kwa kuweka vifaa pamoja. Kwa mfano, unaweza kuelekeza kurasa za wavuti, video za YouTube, anwani na zaidi.\n\nWeka tu vifaa pamoja (kwa kuvigusisha sehemu za nyuma) na ugonge skrini yako. Programu itabaini ni nini kitaelekezwa."</string>
     <string name="wifi_quick_toggle_title" msgid="8850161330437693895">"Wi-Fi"</string>
     <string name="wifi_quick_toggle_summary" msgid="2696547080481267642">"Washa Wi-Fi"</string>
     <string name="wifi_settings" msgid="29722149822540994">"Wi-Fi"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Hitilafu"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"Mitabendi ya GHz 5 haipatikani katika nchi hii"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"Hali ya ndege imewashwa"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Arifa ya mtandao"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Tuma arifa wakati wowote mtandao wa umma unapopatikana"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Epuka miunganisho mibovu"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Usitumie mtandao wa Wi-Fi ambao hauna muunganisho mzuri wa Intaneti"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Tumia mitandao yenye muunganisho bora wa Intaneti pekee"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Badilisha usakinishaji wa eneo unalopenda ya programu mpya"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Lemaza programu zilizoundwa-ndani?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Zima programu"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Ukizima programu hii, huenda Android na programu zingine zikakosa kufanya kazi tena kama ilivyokusudiwa."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Futa data na ulemaze programu?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Ukizima programu hii, huenda Android na programu zingine zikakosa kufanya kazi tena kama ilivyokusudiwa. Data yako pia itafutwa."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Arifa zilemazwe?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Ikiwa utazima arifa za programu hii, unaweza kosa kupata arifa na masasisho muhimu."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Duka"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="other">Onyesha vipengee %d vilivyofichwa</item>
       <item quantity="one">Onyesha kipengee %d kilichofichwa</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Mtandao na intaneti"</string>
     <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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Arifa"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Umuhimu"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Haijawekwa"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Usawahi kuonyesha arifa"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Hakuna kukatizwa kwa sauti au maonyesho"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Onyesha chinichini"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Toa sauti"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Toa sauti na ibukizi kwenye skrini"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Weka upya"</string>
     <string name="show_silently" msgid="2222875799232222056">"Onyesha chinichini"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Usiruhusu sauti, mtetemo au onyesho la kuchungulia kwenye skrini ya sasa."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Inapakia programu ..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Vituo"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Zuia zote"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Usionyeshe arifa hizi kamwe"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Onyesha arifa"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Usiwahi kuonyesha arifa kwenye vifaa vya kando au katika kivuli"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Onyesha beji"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Onyesha arifa kama beji kwenye programu ya Mwanzo, kama inatumika."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"Batilisha hali ya \'Usinisumbue\'"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Ruhusu arifa hizi ziendelee kukatiza wakati hali ya Usinisumbue imewekwa katika Kipaumbele Pekee"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"Skrini inapofungwa"</string>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Usionyeshe tena"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Inaomba kama"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Ongeza akaunti"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Maelezo ya mfumo"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Mipangilio ya wasifu wa kazini"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Utafutaji wa anwani"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Ruhusu utafutaji wa anwani unaofanywa na shirika lako kutambua anwani na anayepiga simu"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Ripoti yako ya hivi majuzi ya hitilafu"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Kumbukumbu yako ya hivi majuzi ya usalama"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Hajawahi"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Picha na Video"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Muziki na Sauti"</string>
     <string name="storage_games" msgid="7703159201697117621">"Michezo"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Programu zingine"</string>
     <string name="storage_files" msgid="8581083146777364063">"Faili"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Hifadhi ya Simu"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"Umetumia <xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g>"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"Imebaki hifadhi ya <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index 7b15b9b..400b053 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"மாதிரி உரை"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"கள்வனின் காதலி"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"அத்தியாயம் 1: பறித்த தாமரை"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"டோரத்தியும் அவளின் நண்பர்களும் பச்சைநிறக் கண்ணாடிகளை அணிந்து கண்ணைப் பாதுகாத்திருந்தாலும், முதல் பார்வையிலேயே எழில்கொஞ்சம் நகரத்தின் அழகில் மயங்கினர். பச்சைநிறச் சலவைக் கற்களினால் கட்டப்பட்ட அழகிய வீடுகள் தெருக்களில் அணிவகுத்து நின்றன. அத்துடன் திரும்பும் இடமெல்லாம் மின்னும் பச்சைக்கற்களால் அலங்கரிக்கப்பட்டிருந்தன. அவர்கள் பச்சை வண்ணச் சலவைக் கண்ணாடியால் செய்த அதே நடைப்பாதையில் நடந்தனர், அதன் இணைக்கப்பட்டிருந்த தடுப்புகள் பச்சைக்கற்கள் நெருக்கமாக வைத்து கட்டப்பட்டிருந்தன, அவை சூரியனின் ஒளிக்கதிர்களால் பளபளத்தன. ஜன்னல் கண்ணாடிகள் பச்சை வண்ணக் கண்ணாடியால் கட்டப்பட்டிருந்தன; நகரத்தின் மேலே உள்ள வானமும் பச்சை வண்ணச் சாயலில் இருந்தது, அத்துடன் சூரியனும் பச்சை வண்ண ஒளிக்கதிர்களை வீசியது. \n\nஅங்கே நிறைய மனிதர்கள், ஆண்கள், பெண்கள், குழந்தைகள் இருந்தனர். அவர்கள் பச்சை வண்ண ஆடைகளை அணிந்திருந்தனர், அத்துடன் அவர்களின் தோல்நிறமும் பச்சையாக இருந்தது. டோரத்தியையும் அவளுடன் இருந்த விசித்திரமான நண்பர்களையும் பிரம்மிப்புடன் பார்த்தார்கள். சிங்கத்தைப் பார்த்தவுடன், குழந்தைகள் அனைவரும் ஓடிச்சென்று தங்கள் அம்மாக்களின் பின் ஒளிந்துகொண்டனர். ஆனால் யாரும் அவர்களிடம் பேசவில்லை. அந்தத் தெருவில் நிறைய கடைகள் இருந்தன. அந்தக் கடைகளில் எல்லாம் பச்சையாக இருந்ததை டோரத்தி பார்த்தாள். பச்சை மிட்டாய் மற்றும் பச்சை பாப்-கார்னுடன் பச்சைக் காலணிகள், பச்சைத் தொப்பிகள் மற்றும் அனைத்து விதமான பச்சை உடைகள் ஆகியவை விற்பனைக்கு வைக்கப்பட்டிருந்தன. ஓரிடத்தில் ஒருவர், பச்சை எலுமிச்சைச் சாற்றை விற்றுக் கொண்டிருந்தான். அவற்றைக் குழந்தைகள் பச்சை சில்லறைக் கொடுத்து அதை வாங்கிச் செல்வதை டோரத்தி பார்த்தாள். \n\nஅங்கே குதிரைகளோ அல்லது எந்த விதமான விலங்குகளோ இல்லை. எல்லாவற்றையும் செடிகொடிகளால் பின்னப்பட்ட, முன்புறமாகத் தள்ளிச்செல்லக்கூடிய பச்சைநிறக் கூடைகளில் மனிதர்களே சுமந்து சென்றனர். அனைவரும் மகிழ்ச்சியாகவும் திருப்தியாகவும் செழிப்பாகவும் இருந்தனர்."</string>
     <string name="font_size_save" msgid="3450855718056759095">"சரி"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB சேமிப்பிடம்"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD கார்டு"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"பிழை"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"இந்த நாட்டில் 5 GHz அலைவரிசை இல்லை"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"விமானப் பயன்முறையில்"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"நெட்வொர்க் அறிவிப்பு"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"பொதுவான நெட்வொர்க் கிடைக்கும் போது அறிவி"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"வேகம் குறைந்த இணைப்புகளைத் தவிர்"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"சிறப்பான இணைய இணைப்பைப் பெறும் வரை வைஃபை நெட்வொர்க்கைப் பயன்படுத்தாதே"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"நல்ல இணைய இணைப்பு கொண்ட நெட்வொர்க்குகளை மட்டும் பயன்படுத்து"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"புதிய பயன்பாடுகளுக்கான பரிந்துரைக்கப்பட்ட நிறுவல் இடங்களை மாற்றவும்"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"உள்ளமைக்கப்பட்டுள்ள பயன்பாட்டை முடக்கவா?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"பயன்பாட்டை முடக்கு"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"பயன்பாட்டை முடக்கினால், Android மற்றும் பிற பயன்பாடுகள் சரியாகச் செயல்படாமல் போகக்கூடும்."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"தரவை நீக்கிவிட்டு பயன்பாட்டை முடக்கவா?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"இந்தப் பயன்பாட்டை முடக்கினால், Android மற்றும் பிற பயன்பாடுகள் சரியாகச் செயல்படாமல் போகக்கூடும். அத்துடன், உங்கள் தரவும் நீக்கப்படும்."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"அறிவிப்புகளை முடக்கவா?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"பயன்பாட்டிற்கான அறிவிப்புகளை முடக்கினால், முக்கிய விழிப்பூட்டல்கள் மற்றும் புதுப்பிப்புகளை நீங்கள் தவற விடலாம்."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"ஸ்டோர்"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="other">மறைந்துள்ள %d உருப்படிகளைக் காட்டு</item>
       <item quantity="one">மறைந்துள்ள %d உருப்படியைக் காட்டு</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"நெட்வொர்க் &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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"அறிவிப்புகள்"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"முக்கியத்துவம்"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"அமைக்கப்படவில்லை"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"அறிவிப்புகளை ஒருபோதும் காட்டாது"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"ஒலியெழுப்பாது அல்லது காட்சிக் குறுக்கீடு செய்யாது"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"ஒலிக்காமல் காட்டும்"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"ஒலியெழுப்பும்"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"ஒலியெழுப்பி, திரையில் காட்டும்"</string>
     <string name="importance_reset" msgid="7458420788555607007">"மீட்டமை"</string>
     <string name="show_silently" msgid="2222875799232222056">"ஒலிக்காமல் காட்டு"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"இந்த அறிவிப்புகளை நடப்புத் திரையில் காட்டும் போது ஒலி, அதிர்வை ஏற்படுத்தாது அல்லது திரையின் மேல் பகுதியில் காட்டாது."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"பயன்பாடுகளை ஏற்றுகிறது..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"சேனல்கள்"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"எல்லாம் தடு"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"இந்த அறிவிப்புகளை ஒருபோதும் காட்டாது"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"அறிவிப்புகளைக் காட்டு"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"ஷேட்டில் அல்லது துணைச் சாதனங்களில் அறிவிப்புகளை ஒருபோதும் காட்டாது"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"பேட்ஜைக் காட்டு"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"ஆதரித்தால், முகப்புப் பயன்பாட்டில் அறிவிப்புகளை பேட்ஜ்களாகக் காட்டும்."</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>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"மீண்டும் காட்டாதே"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"இவராகக் கோருகிறது:"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"கணக்கைச் சேர்"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"கணினித் தகவல்"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"பணிச் சுயவிவர அமைப்புகள்"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"தொடர்புகளில் தேடு"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"எனது நிறுவனத்தின்படி அழைப்பாளர்களையும் தொடர்புகளையும் கண்டறிய, ”தொடர்புகளில் தேடு” அம்சத்தை அனுமதி"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"உங்களின் மிகச் சமீபத்திய பிழை அறிக்கை"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"உங்களின் மிகச் சமீபத்திய பாதுகாப்புப் பதிவு"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"ஒருபோதும் வேண்டாம்"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"படங்கள் &amp; வீடியோக்கள்"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"இசை &amp; ஆடியோ"</string>
     <string name="storage_games" msgid="7703159201697117621">"கேம்கள்"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"பிற பயன்பாடுகள்"</string>
     <string name="storage_files" msgid="8581083146777364063">"கோப்புகள்"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"மொபைல் சேமிப்பகம்"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> பயன்படுத்தப்பட்டுள்ளது"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> காலியாக உள்ளது"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index 943a92f..011611b 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"నమూనా వచనం"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"కేశ సంరక్షణ చిట్కాలు"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"అధ్యాయం 11: వేపాకుతో మెరిసిపోయే జుట్టు మీ సొంతం"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"డొరోతీ మరియు ఆమె స్నేహితులు కళ్లకు పచ్చని అద్దాలతో సంరక్షించబడినా, అద్భుతమైన మిరిమిట్లుగొలిపే నగర ప్రకాశాన్ని సందర్శిస్తున్నారు. ప్రతీచోటా మెరిసే పచ్చని రాళ్లతో పొదగబడి ఉన్న ఆకుపచ్చటి పాలరాతితో నిర్మించబడిన అందమైన ఇళ్లతో వీధులు తీర్చిదిద్దబడ్డాయి. వాళ్లు సూర్యకాంతికి మెరుస్తున్న, దగ్గరగా నిర్మితమై ఉన్న, పచ్చల రాళ్లు అన్నీ కలిసి ఉన్న అదే ఆకు పచ్చని పాలరాతిపై నడుస్తున్నారు. కిటికీ అద్దాలు ఆకుపచ్చగా ఉన్నాయి; నగరం పైన ఆకాశం కూడా ఆకుపచ్చ రంగులో ఉంది మరియు సూర్య కిరణాలు కూడా ఆకుపచ్చగా ఉన్నాయి. \n\nఅక్కడ చాలా మంది ఆకు పచ్చని చర్మంతో గల స్త్రీలు, పురుషులు మరియు పిల్లలు ఆకు పచ్చని దుస్తులతో నడుస్తున్నారు. వాళ్లు డొరోతీని మరియు ఆమె ఇతర స్నేహితులను వింతగా ఆశ్చర్యంగా చూసారు. సింహాన్ని చూసినప్పుడు పిల్లలందరూ పారిపోయి, వారి తల్లిదండ్రుల వెనక దాగారు. కానీ వారితో ఎవరూ మాట్లాడలేదు. వీధిలో చాలా దుకాణాలు ఉన్నాయి. డొరోతీకి అక్కడ ఉన్న అంశాలన్నీ పచ్చగా కనిపించాయి పచ్చని మిఠాయిలు మరియు పచ్చని పాప్-కార్న్ అమ్మబడుతున్నాయి, అలాగే పచ్చని చెప్పులు, పచ్చని టోపీలు, పచ్చని దుస్తులు కనిపిస్తున్నాయి. ఒక చోట ఒక వ్యక్తి పచ్చని నిమ్మరసాన్ని అమ్ముతుండటం మరియు పిల్లలు వాటి కోసం పచ్చని నాణేలను ఇవ్వడాన్ని డోరోతీ చూస్తోంది. \n\nఅక్కడ ఎటువంటి గుర్రాలు మరియు ఎటువంటి జంతువులూ లేవు; వ్యక్తులే వస్తువులను పచ్చని బండ్లతో లాగుతున్నారు. ప్రతి ఒక్కరూ చాలా ఆనందంగా మరియు సంతృప్తిగా ఉన్నారు."</string>
     <string name="font_size_save" msgid="3450855718056759095">"సరే"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB నిల్వ"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD కార్డు"</string>
@@ -658,7 +657,7 @@
     <string name="android_beam_off_summary" msgid="4663095428454779138">"ఆఫ్‌లో ఉంది"</string>
     <string name="android_beam_disabled_summary" msgid="1737782116894793393">"NFC ఆఫ్ చేయబడినందున అందుబాటులో లేదు"</string>
     <string name="android_beam_label" msgid="6257036050366775040">"Android Beam"</string>
-    <string name="android_beam_explained" msgid="1810540319385192758">"ఈ లక్షణం ప్రారంభించబడినప్పుడు, మీరు పరికరాలను దగ్గరగా ఉంచి పట్టుకోవడం ద్వారా అనువర్తన కంటెంట్‌ను మరో NFC-సామర్థ్య పరికరానికి బదిలీ చేయవచ్చు. ఉదాహరణకు, మీరు వెబ్ పేజీలు, YouTube వీడియోలు, పరిచయాలు మొదలైనవి బదిలీ చేయవచ్చు.\n\nపరికరాలను దగ్గరగా తీసుకువచ్చి (సాధారణంగా ఒకదాని వెనుక ఒకటి ఉంచి), ఆపై మీ స్క్రీన్‌ను తట్టండి. అనువర్తనం బదిలీ చేయాల్సిన వాటిని నిర్ణయిస్తుంది."</string>
+    <string name="android_beam_explained" msgid="1810540319385192758">"ఈ లక్షణం ప్రారంభించబడినప్పుడు, మీరు పరికరాలను దగ్గరగా ఉంచి పట్టుకోవడం ద్వారా అనువర్తన కంటెంట్‌ను మరో NFC-సామర్థ్య పరికరానికి బదిలీ చేయవచ్చు. ఉదాహరణకు, మీరు వెబ్ పేజీలు, YouTube వీడియోలు, పరిచయాలు మొదలైనవి బదిలీ చేయవచ్చు.\n\nపరికరాలను దగ్గరగా తీసుకువచ్చి (సాధారణంగా ఒకదాని వెనుక ఒకటి ఉంచి), ఆపై మీ స్క్రీన్‌ను నొక్కండి. అనువర్తనం బదిలీ చేయాల్సిన వాటిని గుర్తిస్తుంది."</string>
     <string name="wifi_quick_toggle_title" msgid="8850161330437693895">"Wi‑Fi"</string>
     <string name="wifi_quick_toggle_summary" msgid="2696547080481267642">"Wi‑Fiని ప్రారంభించండి"</string>
     <string name="wifi_settings" msgid="29722149822540994">"Wi‑Fi"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"లోపం"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"ఈ దేశంలో 5 GHz బ్యాండ్ అందుబాటులో లేదు"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"ఎయిర్‌ప్లైన్ మోడ్‌లో"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"నెట్‌వర్క్ నోటిఫికేషన్"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"పబ్లిక్ నెట్‌వర్క్ అందుబాటులో ఉన్నప్పుడు తెలియజేయి"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"బలహీన కనెక్షన్‌లను నివారించు"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Wi‑Fi నెట్‌వర్క్ ఉత్తమ ఇంటర్నెట్ కనెక్షన్‌ను కలిగి ఉంటే మినహా ఉపయోగించవద్దు"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"ఉత్తమ ఇంటర్నెట్ కనెక్షన్ ఉన్న నెట్‌వర్క్‌లను మాత్రమే ఉపయోగించు"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"కొత్త అనువర్తనాల కోసం ప్రాధాన్య ఇన్‌స్టాలేషన్ స్థానాన్ని మార్చండి"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"అంతర్నిర్మిత అనువర్తనాన్ని నిలిపివేయాలా?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"అనువర్తనాన్ని నిలిపివేయి"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"మీరు ఈ అనువర్తనాన్ని నిలిపివేస్తే, Android మరియు ఇతర అనువర్తనాలు ఇకపై ఉద్దేశించిన రీతిలో పని చేయకపోవచ్చు."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"డేటాను తొలగించి అనువర్తనాన్ని నిలిపివేయాలా?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"మీరు ఈ అనువర్తనాన్ని నిలిపివేస్తే, Android మరియు ఇతర అనువర్తనాలు ఇకపై ఉద్దేశించిన రీతిలో పని చేయకపోవచ్చు. మీ డేటా కూడా తొలగించబడుతుంది."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"నోటిఫికేషన్‌లను ఆపివేయాలా?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"మీరు ఈ అనువర్తనానికి నోటిఫికేషన్‌లను ఆపివేస్తే, మీరు ముఖ్యమైన హెచ్చరికలు మరియు నవీకరణలను కోల్పోవడం సంభవించవచ్చు."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"స్టోర్"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="other">%d దాచబడిన అంశాలను చూపుతుంది</item>
       <item quantity="one">%d దాచబడిన అంశాన్ని చూపుతుంది</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"నెట్‌వర్క్ &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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"నోటిఫికేషన్‌లు"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"ప్రాముఖ్యత"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"సెట్ చేయబడలేదు"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"ఎన్నడూ నోటిఫికేషన్‌లను చూపవద్దు"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"శబ్ద లేదా దృశ్య అంతరాయం కలిగించవద్దు"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"నిశ్శబ్దంగా చూపు"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"శబ్దం చేయి"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"శబ్దం చేసి, స్క్రీన్‌పై చూపు"</string>
     <string name="importance_reset" msgid="7458420788555607007">"రీసెట్ చేయి"</string>
     <string name="show_silently" msgid="2222875799232222056">"శబ్దం లేకుండా చూపు"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"శబ్దం చేయదు, వైబ్రేట్ చేయదు లేదా ప్రస్తుత స్క్రీన్‌పై కనిపించేలా ఈ నోటిఫికేషన్‌లను శీఘ్రంగా చూపదు."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"అనువర్తనాలను లోడ్ చేస్తోంది..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"ఛానెల్‌లు"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"అన్నింటినీ బ్లాక్ చేయండి"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"ఈ నోటిఫికేషన్‌లను ఎప్పుడూ చూపవద్దు"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"నోటిఫికేషన్‌లను చూపు"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"నోటిఫికేషన్‌లను ఎన్నడూ షేడ్‌లో లేదా అనుబంధ పరికరాల్లో చూపవద్దు"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"బ్యాడ్జ్‌ను చూపు"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"మద్దతు ఉంటే, నోటిఫికేషన్‌లను Home అనువర్తనంలో బ్యాడ్జ్‌లుగా చూపుతుంది."</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>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"మళ్లీ చూపవద్దు"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"దీనితో అభ్యర్థిస్తున్నారు"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"ఖాతాను జోడించండి"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"సిస్టమ్ సమాచారం"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"కార్యాలయ ప్రొఫైల్ సెట్టింగ్‌లు"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"పరిచయ శోధన"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"కాలర్‌లు మరియు పరిచయాలను గుర్తించడానికి మీ సంస్థ ద్వారా పరిచయ శోధనలను చేయడానికి అనుమతిస్తుంది"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"మీ అత్యంత ఇటీవలి బగ్ నివేదిక"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"మీ అత్యంత ఇటీవలి భద్రతా లాగ్"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"ఎన్నడూ చేయలేదు"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"ఫోటోలు &amp; వీడియోలు"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"సంగీతం &amp; ఆడియో"</string>
     <string name="storage_games" msgid="7703159201697117621">"గేమ్‌లు"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"ఇతర అనువర్తనాలు"</string>
     <string name="storage_files" msgid="8581083146777364063">"ఫైల్‌లు"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"ఫోన్ నిల్వ"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> వినియోగించబడింది"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> ఖాళీగా ఉంది"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 80d826d..8ad2ae2 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -670,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"ข้อผิดพลาด"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"แถบความถี่ 5 GHz ไม่พร้อมใช้งานในประเทศนี้"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"ในโหมดใช้งานบนเครื่องบิน"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"การแจ้งเตือนของเครือข่าย"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"แจ้งเตือนเมื่อใดก็ตามที่เครือข่ายสาธารณะพร้อมใช้งาน"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"หลีกเลี่ยงการเชื่อมต่อที่สัญญาณไม่แรงพอ"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"อย่าใช้เครือข่าย WiFi หากไม่มีการเชื่อมต่ออินเทอร์เน็ตที่ดีเพียงพอ"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"ใช้เครือข่ายที่มีการเชื่อมต่ออินเทอร์เน็ตสัญญาณแรงเท่านั้น"</string>
@@ -3301,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"รายงานข้อบกพร่องล่าสุดของคุณ"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"บันทึกความปลอดภัยล่าสุด"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"ไม่เลย"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"รูปภาพและวิดีโอ"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"เพลงและเสียง"</string>
     <string name="storage_games" msgid="7703159201697117621">"เกม"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"แอปอื่นๆ"</string>
     <string name="storage_files" msgid="8581083146777364063">"ไฟล์"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"พื้นที่เก็บข้อมูลโทรศัพท์"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"ใช้ไป <xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> "</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"พื้นที่ว่าง <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 3e199a6..f6eff10 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -670,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Error"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"Hindi available sa bansang ito ang 5 GHz band"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"Nasa Airplane mode"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Notification ng network"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Mag-notify tuwing may available na pampublikong network"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Iwasan ang mahihinang koneksyon"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Huwag gumamit ng Wi-Fi network maliban kung mayroon itong mahusay na koneksyon sa Internet"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Gamit lang ng network na may maayos na koneksyon sa Internet"</string>
@@ -3301,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Ang iyong pinakakamakailang ulat ng bug"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Ang iyong pinakakamakailang log ng seguridad"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Hindi kailanman"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Mga Larawan at Video"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Musika at Audio"</string>
     <string name="storage_games" msgid="7703159201697117621">"Mga Laro"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Iba pang mga app"</string>
     <string name="storage_files" msgid="8581083146777364063">"Mga File"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Storage ng Telepono"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> ang nagamit"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> ang bakante"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 772d1db..fe67a05 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Örnek metin"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Muhteşem Oz Büyücüsü"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"11. Bölüm: Oz\'un Muhteşem Zümrüt Kenti"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Yeşil gözlükler gözlerini koruyor olsa bile, muhteşem Kentin parlaklığı ilk başta Dorothy ve arkadaşlarının gözlerini kamaştırmıştı. Sokaklar, tamamı yeşil mermerden yapılmış çok güzel evlerle doluydu ve her yer parlak zümrütlerle süslenmişti. Aynı şekilde yeşil mermerden yapılmış bir kaldırımın üzerinde yürüdüler. Blokların birleştiği yerde birbirine yakın bir şekilde yerleştirilmiş sıra sıra zümrütler güneşin parlaklığında ışıldıyordu. Pencerelerde yeşil camlar vardı. Kentin üzerindeki gökyüzünün bile yeşil bir tonu vardı ve güneş ışınları yeşildi. \n\nHepsi de yeşil kıyafetler giymiş ve yeşilimtırak ciltleri olan birçok kadın, erkek ve çocuk sokakta geziniyordu. Dorothy\'yi ve garip görünümlü arkadaşlarını meraklı bakışlarla süzdüler. Çocukların hepsi Aslanı gördüklerinde kaçıp annelerinin arkasına saklanıyordu, ama hiç kimse onlarla konuşmadı. Sokakta pek çok dükkan vardı. Dorothy, bu dükkanlardaki her şeyin yeşil olduğunu gördü. Yeşil şekerlerin, yeşil renkli patlamış mısırların yanı sıra yeşil ayakkabılar, yeşil şapkalar ve her türden yeşil kıyafetler satılıyordu. Bir yerde, yeşil limonata satan bir adam vardı ve Dorothy, limonata alan çocukların parayı yeşil kuruşlarla ödediklerini gördü. \n\nAt veya başka bir hayvan görünmüyordu; erkekler, önlerinde ittikleri küçük yeşil arabalarla eşyaları bir yerden bir yere taşıyordu. Herkes mutlu, memnun ve refah içinde görünüyordu."</string>
     <string name="font_size_save" msgid="3450855718056759095">"Tamam"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB bellek"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD kart"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Hata"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"5 GHz bant genişliği bu ülkede kullanılamıyor"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"Uçak modunda"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Ağ bildirimi"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Herkese açık bir ağ kullanılabilir olduğunda bildir"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Kötü bağlantılardan kaçın"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"İnternet bağlantısı iyi olmadıkça Kablosuz ağı kullanma"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Yalnızca iyi İnternet bağlantısı olan ağları kullanın"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Yeni uygulamalar için tercih edilen yükleme konumunu değiştir"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Yerleşik uygulama devre dışı bırakılsın mı?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Uygulamayı devre dışı bırak"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Bu uygulamayı devre dışı bırakırsanız Android ve diğer uygulamalar artık beklendiği gibi çalışmayabilir."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Veriler silinsin ve uygulama devre dışı bırakılsın mı?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Bu uygulamayı devre dışı bırakırsanız Android ve diğer uygulamalar artık beklendiği gibi çalışmayabilir. Ayrıca verileriniz silinir."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Bildirimler kapatılsın mı?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Bu uygulama için bildirimleri kapatırsanız, önemli uyarıları ve güncellemeleri kaçırabilirsiniz."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Mağaza"</string>
@@ -2527,8 +2530,7 @@
       <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 (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Bildirimler"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Önem"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Ayarlanmadı"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Bildirimleri hiçbir zaman gösterme"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Ses veya görsel kesme yok"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Sessiz bir şekilde göster"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Ses çıkar"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Ses çıkar ve ekranda göster"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Sıfırla"</string>
     <string name="show_silently" msgid="2222875799232222056">"Sessiz bir şekilde göster"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Ses çıkarma, titreştirme veya bu bildirimleri geçerli ekrana getirme."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Uygulamalar yükleniyor..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Kanallar"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Tümünü engelle"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Bu bildirimleri hiçbir zaman gösterme"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Bildirim göster"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Bildirimleri hiçbir zaman gölgede veya çevre birimi cihazlarında gösterme"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Rozet göster"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Destekleniyorsa, bildirimleri Ana Ekran uygulamasında rozet olarak gösterin."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"Rahatsız Etmeyin ayarını geçersiz kıl"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Rahatsız Etmeyin seçeneği \"Yalnızca Öncelikli\" olarak ayarlıyken, bu bildirimlerin kesmeye devam etmesine izin ver"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"Kilit ekranında"</string>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Bir daha gösterme"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"İstekte bulunan hesap:"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Hesap ekle"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Sistem bilgileri"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"İş profili ayarları"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Kişi arama"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Arayanların ve kişilerin kimliğini belirlemek için kuruluşunuz tarafından yapılan kişi aramalarına izin verin"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Son hata raporunuz"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Son güvenlik girişiniz"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Hiçbir zaman"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Fotoğraflar ve Videolar"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Müzik ve Ses"</string>
     <string name="storage_games" msgid="7703159201697117621">"Oyunlar"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Diğer uygulamalar"</string>
     <string name="storage_files" msgid="8581083146777364063">"Dosyalar"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Telefon Depolama Alanı"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> kullanılıyor"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> boş"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"%%<xliff:g id="PERCENT">%1$s</xliff:g>"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 8a85ba8..06e9d7e 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -88,8 +88,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Зразок тексту"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Чарівник країни Оз"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Глава 11. Дивовижне Смарагдове місто країни Оз"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Навіть крізь зелені скельця окулярів краса дивовижного міста спершу засліпила Дороті та її друзів. Уздовж вулиць височіли будинки із зеленого мармуру, прикрашені блискучими смарагдами. Тротуар також був вимощений плитами із зеленого мармуру, на стиках яких виблискували смарагди. Вікна будинків були із зеленого скла. Навіть небо над містом і промені сонця були зеленими. \n\nНа вулиці прогулювалося багато людей – чоловіків, жінок і дітей. Усі вони носили зелений одяг, а їхня шкіра мала зеленуватий відтінок. Люди з подивом дивилися на Дороті та її чудернацьку компанію, а діти тікали й ховалися за своїми матерями, коли бачили Лева. Проте ніхто не наважився заговорити з ними. У магазинах продавалися товари зеленого кольору: зелені цукерки, зелений попкорн, зелені туфлі, капелюхи й інший одяг. В одній крамниці чоловік торгував зеленим лимонадом, за який діти розплачувалися зеленими монетками. \n\nЗдавалось, у місті немає ні коней, ні інших тварин – чоловіки перевозили речі на невеликих зелених тачках. Усі мали щасливий і задоволений вигляд."</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"Носій USB"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"Карта SD"</string>
@@ -689,8 +688,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Помилка"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"Діапазон 5 ГГц недоступний у цій країні"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"У режимі польоту"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Сповіщення мережі"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Сповіщати про доступність загальнодоступної мережі"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Уникати слабких з’єднань"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Не використовувати мережу Wi-Fi, якщо немає стійкого з’єднання з Інтернетом"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Використовувати мережі зі стабільним з’єднанням з Інтернетом"</string>
@@ -1558,11 +1563,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Змінити потрібне місце для встановлення нових програм"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Вимкнути вбудовану програму?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Вимкнути додаток"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Якщо вимкнути цей додаток, додатки Android та інші додатки можуть працювати неналежним чином."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Видалити дані й вимкнути додаток?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Якщо вимкнути цей додаток, додатки Android та інші додатки можуть працювати неналежним чином. Також буде видалено ваші дані."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Вимкнути сповіщення?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Якщо вимкнути сповіщення для цієї програми, можна пропустити важливі повідомлення й оновлення."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Магазин"</string>
@@ -2571,8 +2574,7 @@
       <item quantity="many">Показати %d схованих елементів</item>
       <item quantity="other">Показати %d схованого елемента</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Мережа й Інтернет"</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>
@@ -2698,16 +2700,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Сповіщення"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Пріоритет"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Не вказано"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Ніколи не показувати сповіщення"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Без звуку та візуальних сповіщень"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Показувати без звукового сигналу"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Зі звуком"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Зі звуком і спливаючими вікнами"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Скинути"</string>
     <string name="show_silently" msgid="2222875799232222056">"Показувати без звукового сигналу"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Не подавати звуковий сигнал і вібросигнал та не показувати ці сповіщення на поточному екрані."</string>
@@ -2738,16 +2735,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Завантаження додатків…"</string>
     <string name="notification_channels" msgid="8681423709659818791">"Канали"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Блокувати всі"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Ніколи не показувати ці сповіщення"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Показувати сповіщення"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Ніколи не показувати сповіщення на панелі та периферійних пристроях"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Показувати значки"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Показувати сповіщення у вигляді значків у додатку Home (якщо він підтримується)."</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>
@@ -3288,8 +3280,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Більше не показувати"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Запит з облікового запису"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Додати обліковий запис"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Інформація про систему"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Налаштування робочого профілю"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Пошук контактів"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Дозволити вашій організації шукати контакти, щоб визначати абонентів і контактних осіб"</string>
@@ -3388,16 +3379,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Останнє повідомлення про помилку"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Ваш останній журнал безпеки"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Ніколи"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Фото й відео"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Музика й аудіо"</string>
     <string name="storage_games" msgid="7703159201697117621">"Ігри"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Інші додатки"</string>
     <string name="storage_files" msgid="8581083146777364063">"Файли"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Пам’ять телефона"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"Використовується: <xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g>"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"Вільно: <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index f493550..e92ddd2 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"نمونہ متن"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"اوز کا شاندار جادوگر"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"گیارھواں باب: اوز کا شاندار زمردی شہر"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"سبز عینکوں سے محفوظ ہونے کے باوجود ڈوروتھی اور اس کے دوستوں کی آنکھیں اس شاندار شہر کی آب و تاب سے پہلے پہل چندھیا گئیں۔ سڑکوں پر قطار اندر قطار سبز سنگِ مرمر سے بنے خوبصورت گھر تھے جن پر ہر جگہ چمکتے زمرد جڑے ہوئے تھے۔ وہ اسی سبز سنگِ مرمر کی راہگزر پر چلے اور جہاں بلاک جڑے ہوئے تھے وہاں زمرد کی قطاریں تھیں، قرینے سے لگی ہوئی، اور سورج کی روشنی میں چمکتی ہوئی۔ کھڑکیوں کے چوکھٹے سبز شیشے کے تھے؛ حتی کہ شہر کے اوپر موجود آسمان میں بھی سبز رنگ کی جھلک تھی، اور سورج کی کرنیں بھی سبز تھیں۔ \n\nوہاں کئی لوگ تھے، آدمی، عورتیں اور بچے، مٹر گشت کرتے، اور ان سب نے سبز کپڑے پہنے ہوئے تھے اور ان کی چمڑیاں بھی سبز مائل تھیں۔ انہوں نے ڈوروتھی اور اس کی عجیب قسم کی سنگت کو تعجب سے دیکھا، شیر کو دیکھ کر سارے بچے بھاگ کھڑے ہوئے اور اپنی ماؤں کے پیچھے چھپ گئے؛ مگر ان سے کسی نے بات نہ کی۔ گلی میں کئی دکانیں تھیں اور ڈوروتھی نے دیکھا کہ ان دکانوں کے اندر ہر چیز سبز تھی۔ سبز مٹھائی اور سبز پاپ کارن بیچنے کیلئے رکھے تھے، ساتھ ہی سبز جوتے، سبز ٹوپیاں اور ہر قسم کے سبز کپڑے بھی۔ ایک جگہ پر ایک آدمی سبز سکنجبین بیچ رہا تھا اور ڈوروتھی نے دیکھا کہ جو بچے اسے خرید رہے تھے وہ اس کی ادائیگی سبز سکوں میں کر رہے تھے۔ \n\nوہاں گھوڑے یا کسی بھی اور قسم کے جانور نہیں تھے اور آدمی چیزوں کو چھوٹی سبز ہاتھ گاڑیوں پر لے جا رہے تھے جنہیں وہ اپنے سے آگے دھکیلتے۔ ہر کوئی خوش اور مطمئن اور خوشحال نظر آ رہا تھا۔"</string>
     <string name="font_size_save" msgid="3450855718056759095">"ٹھیک ہے"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"‏USB اسٹوریج"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"‏SD کارڈ"</string>
@@ -659,8 +658,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"خرابی"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"‏اس ملک میں ‎5 GHz بینڈ دستیاب نہیں"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"ہوائی جہاز وضع میں"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"نیٹ ورک کی اطلاع"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"جب بھی عوامی نیٹ ورک دستیاب ہو مطلع کریں"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"خراب کنکشن سے اجتناب کریں"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"‏Wi‑Fi نیٹ ورک کا تب تک استعمال نہ کریں جب تک ایک اچھا انٹرنیٹ کنکشن موجود نہ ہو"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"صرف اچھے انٹرنیٹ کنکشن والے نیٹ ورکس کا استعمال کریں"</string>
@@ -1524,11 +1529,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"نئی ایپس کیلئے ترجیحی انسٹالیشن مقام تبدیل کریں"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"پہلے سے شامل ایپ غیر فعال کریں؟"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"ایپ کو غیر فعال کریں"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"‏اگر آپ اس ایپ کو غیر فعال کرتے ہیں تو ہو سکتا ہے Android اور دیگر ایپس ٹھیک طرح سے کام نہ کریں۔"</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"ڈیٹا حذف کرکے ایپ غیر فعال کریں؟"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"‏اگر آپ اس ایپ کو غیر فعال کرتے ہیں تو ہو سکتا ہے Android اور دیگر ایپس ٹھیک طرح سے کام نہ کریں۔ آپ کا ڈیٹا بھی حذف ہو جائے گا۔"</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"اطلاعات آف کریں؟"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"اگر آپ اس ایپ کیلئے اطلاعات آف کر دیتے ہیں تو ہو سکتا ہے کہ آپ سے اہم الرٹس اور اپ ڈیٹس چھوٹ جائیں۔"</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"اسٹور"</string>
@@ -2513,8 +2516,7 @@
     <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 (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"نیٹ ورک اور انٹرنیٹ"</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>
@@ -2640,16 +2642,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"اطلاعات"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"اہمیت"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"متعین نہیں ہے"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"کبھی اطلاعات نہ دکھائیں"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"کوئی صوتی یا بصری مداخلت نہیں"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"خاموشی سے دکھائیں"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"آواز نکالیں"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"آواز نکالیں اور اسکرین پر پاپ کریں"</string>
     <string name="importance_reset" msgid="7458420788555607007">"دوبارہ ترتیب دیں"</string>
     <string name="show_silently" msgid="2222875799232222056">"خاموشی سے دکھائیں"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"آواز نہ نکالیں، وائبریٹ نہ کریں اور ان اطلاعات کو موجودہ اسکرین پر نہ دکھائیں۔"</string>
@@ -2678,16 +2675,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"ایپس لوڈ ہو رہی ہیں…"</string>
     <string name="notification_channels" msgid="8681423709659818791">"چینلز"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"سبھی کو مسدود کریں"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"یہ اطلاعات کبھی مت دکھائیں"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"اطلاعات دکھائیں"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"شیڈ میں یا پیریفرل آلات پر کبھی بھی اطلاعات نہ دکھائیں"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"بیج دکھائیں"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"ہوم ایپ پر بیجز کی طرح اطلاعات دکھائیں، اگر تعاون یافتہ ہیں۔"</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>
@@ -3210,8 +3202,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"دوبارہ مت دکھائیں"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"درخواست کی جا رہی ہے بطور"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"اکاؤنٹ شامل کریں"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"سسٹم کی معلومات"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"دفتری پروفائل کی ترتیبات"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"رابطہ تلاش"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"کالرز اور رابطوں کی شناخت کیلئے اپنی تنظیم کی جانب سے رابطہ تلاشیوں کی اجازت دیں"</string>
@@ -3302,16 +3293,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"آپ کی سب سے حالیہ بگ رپورٹ"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"آپ کا حالیہ ترین سیکیورٹی لاگ"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"کبھی نہیں"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"تصاویر اور ویڈیوز"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"موسیقی اور آڈیو"</string>
     <string name="storage_games" msgid="7703159201697117621">"گیمز"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"دیگر ایپس"</string>
     <string name="storage_files" msgid="8581083146777364063">"فائلز"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"فون کی اسٹوریج"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> استعمال شدہ"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> خالی ہے"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index 027123f..e4d2b67 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Namunaviy matn"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Oz mamlakati sehrgari"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"11-bob: Oz mamlakatining zumrad shahri"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Yashil ko‘zoynak taqishgan bo‘lishiga qaramasdan, bu ajoyib shaharning jilosi Doroti va uning do‘stlarining ko‘zlarini qamashtirardi. Ko‘chalarda yashil marmardan qurilgan va yorqin zumradlar bilan bezalgan go‘zal uylar tizilib turar edi. Ular yurib borayotgan yashil marmarli yo‘lakdagi zumradlar quyosh nurida jilolanardi. Uylar derazalari ham yashil oynadan qilingan edi. Hattoki shahar osmoni ham yashil tusda bo‘lib, quyosh nurlari ham yashil edi. \n\nAtrofda yashil libos kiygan erkaklar, ayollar va bolalar yurishardi, ularning terisining rangi ham yashilsifat edi. Ular bir so‘z demay Doroti va uning g‘alati do‘stlariga hayratlanib boqishardi, bolalar bahaybat sherdan qo‘rqqanlaridan yugurib onalarini ortiga qochishardi. Doroti ko‘rdiki, ko‘chada ko‘p do‘konlar bo‘lib, ulardagi barcha narsalar yashil rangda edi: yashil shirinliklar va bodroq, yashil poyabzal va bosh kiyimlar, yashil liboslar va barcha turdagi paltolar. Bir joydagi sotuvchidan bolalar yashil tangaga yashil limonad sotib olishar edi. \n\nOtlar va boshqa turdagi hayvonlar ko‘rinmas edi. Odamlarlar o‘zlari surib yurgan yashil aravachalarida narsalarini olib yurishardi. Zumrad shahar aholisi baxtli va mamnun edi."</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB xotira"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD karta"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Xatolik"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"Siz joylashgan mamlakatda 5 GGs chastota qo‘llab-quvvatlanmaydi"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"Uchish rejimida"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Tarmoq haqida bildirishnoma"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Hamma uchun ochiq tarmoqlar haqida xabar qilinsin"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Sifatsiz ulanishdan chetlashish"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Internet aloqasi yomon bo‘lsa, Wi-Fi tarmog‘iga ulanilmasin"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Faqat kuchli signalga ega tarmoqlardan foydalanilsin"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Yangi ilovalar uchun tanlangan o‘rnatish joyini o‘zgartirish"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Ilovani o‘chirib qo‘ymoqchimisiz?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Ilovani o‘chirib qo‘yish"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Agar bu ilovani o‘chirib qo‘ysangiz, Android va boshqa ilovalar bundan buyon kutilganidek ishlamasligi mumkin."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Ma‘lumotlarni o‘chirib tashlab, ilova o‘chirib qo‘yilsinmi?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Agar bu ilovani o‘chirib qo‘ysangiz, Android va boshqa ilovalar bundan buyon kutilganidek ishlamasligi mumkin. Ma’lumotlaringiz ham o‘chib ketadi."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Xabarnomalar o‘chirib qo‘yilsinmi?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Agar bu ilova uchun xabarnomalarni o‘chirib qo‘ysangiz, muhim ogohlantirishlar va yangilanishlardan bexabar qolishingiz mumkin."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Do‘kon"</string>
@@ -2527,8 +2530,7 @@
       <item quantity="other">%d ta yashirin elementni ko‘rsatish</item>
       <item quantity="one">%d ta yashirin elementni ko‘rsatish</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Bildirishnomalar"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Muhimligi"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Ko‘rsatilmagan"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Bildirishnomalar hech qachon ko‘rsatilmasin"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Bildirishnomalarsiz"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Ovozsiz"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Ovozli"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Ovoz va qalqib chiquvchi oyna"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Asliga qaytarish"</string>
     <string name="show_silently" msgid="2222875799232222056">"Ovozsiz"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Ovozli signal va vibratsiyani o‘chirib qo‘yish, bildirishnomalarni boshqa ilovalar ustida ko‘rsatmaslik."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Ilovalar yuklanmoqda…"</string>
     <string name="notification_channels" msgid="8681423709659818791">"Kanallar"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Barchasini bloklash"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Bu bildirishnomalar boshqa ko‘rsatilmasin"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Bildirishnomalar ko‘rsatilsin"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Fonda yoki tashqi qurilmalarda bildirishnomalar hech qachon ko‘rsatilmasin"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Nishoncha ko‘rsatilsin"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Bosh ekranda bildirishnomalar nishoncha sifatida ko‘rsatilsin (agar ishlasa)."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"“Bezovta qilinmasin” rejimini qayta o‘rnatish"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"“Bezovta qilinmasin” rejimi “Faqat muhim bildirishnomalar” uchun istisno qilingan holatda ushbu bildirishnomalar ham ko‘rsatilsin."</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"Qulflangan ekranda"</string>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Boshqa ko‘rsatilmasin"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"So‘rov yuborish…"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Hisob qo‘shish"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Tizimga oid ma’lumotlar"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Ishchi profil sozlamalari"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Kontaktlarni qidirish"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Tashkilot nomi bo‘yicha qidiruvda qo‘ng‘iroq qiluvchi abonent va uning kontaktini aniqlashga ruxsat berish"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Eng oxirgi xatoliklar hisoboti"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Eng oxirgi xavfsizlik jurnali"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Hech qachon"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Surat va videolar"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Musiqa va audio"</string>
     <string name="storage_games" msgid="7703159201697117621">"O‘yinlar"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Boshqa ilovalar"</string>
     <string name="storage_files" msgid="8581083146777364063">"Fayllar"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Telefon xotirasi"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> band"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> bo‘sh"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 2930c64..3404b46 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Văn bản mẫu"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"The Wonderful Wizard of Oz (Phù thủy tuyệt vời xứ Oz)"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Chương 11: The Wonderful Emerald City of Oz (Thành phố ngọc lục bảo tuyệt vời của Oz)"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Ngay cả khi đã đeo kính bảo vệ mắt màu xanh lục, lúc đầu Dorothy và bạn bè của cô vẫn bị lóa mắt bởi sự lộng lẫy của Thành phố tuyệt vời đó. Dọc phố là những ngôi nhà xinh xắn nối đuôi nhau, tất cả đều được xây bằng đá cẩm thạch xanh lục và ngọc lục bảo lấp lánh được sử dụng để tô điểm ở mọi nơi. Ngay cả vỉa hè dưới chân họ cũng lát bằng đá cẩm thạch xanh lục và các viên gạch lát được ghép với nhau bằng những hàng ngọc lục bảo, đặt sát gần nhau và lấp lánh dưới ánh mặt trời. Các tấm cửa sổ bằng kính màu xanh lục; ngay cả bầu trời phía trên Thành phố cũng có sắc xanh lục và các tia nắng cũng màu xanh lục. \n\nNhiều người, đàn ông, phụ nữ và trẻ em, đi dạo ở đây và họ đều khoác trên mình những bộ quần áo màu xanh lục cũng như có làn da hơi màu xanh lục. Họ nhìn Dorothy và những người bạn kỳ lạ của cô bằng con mắt ngạc nhiên còn bọn trẻ bỏ chạy và nấp phía sau lưng mẹ khi chúng nhìn thấy Sư tử; nhưng không ai nói với họ lời nào. Có nhiều cửa hàng trên phố và Dorothy thấy mọi thứ trong các cửa hàng đó đều có màu xanh lục. Kẹo, bỏng ngô cũng như giày, mũ và quần áo đủ loại được bày bán đều có màu xanh lục. Một người đàn ông trên phố đang bán nước chanh màu xanh lục và khi bọn trẻ mua nước chanh, Dorothy quan sát thấy chúng trả cho ông ấy những đồng xu màu xanh lục. \n\nDường như ở đó không có ngựa hay bất kỳ loài động vật nào; người dân ở đó vận chuyển đồ trên những chiếc xe đẩy hàng nhỏ màu xanh lục. Mọi người có vẻ rất hạnh phúc, mãn nguyện và thịnh vượng."</string>
     <string name="font_size_save" msgid="3450855718056759095">"OK"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"Bộ nhớ USB"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"Thẻ SD"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Lỗi"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"Băng tần 5 GHz không khả dụng ở quốc gia này"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"Ở chế độ trên máy bay"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Thông báo mạng"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Thông báo bất cứ khi nào có mạng công cộng"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Tránh kết nối kém"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Không sử dụng mạng Wi‑Fi trừ khi mạng này có kết nối Internet tốt"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Chỉ sử dụng mạng có kết nối Internet tốt"</string>
@@ -1536,11 +1541,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Thay đổi vị trí cài đặt ưa thích cho ứng dụng mới"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Tắt ứng dụng tích hợp sẵn?"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Tắt ứng dụng"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Nếu bạn tắt ứng dụng này, Android và các ứng dụng khác có thể không còn hoạt động như dự kiến."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Xóa dữ liệu và tắt ứng dụng?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Nếu bạn tắt ứng dụng này, Android và các ứng dụng khác có thể không còn hoạt động như dự kiến. Dữ liệu của bạn cũng sẽ bị xóa."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Tắt thông báo?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Nếu bạn tắt thông báo cho ứng dụng này, bạn có thể bỏ qua cảnh báo và cập nhật quan trọng."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Cửa hàng"</string>
@@ -2527,8 +2530,7 @@
       <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 (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"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>
@@ -2654,16 +2656,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Thông báo"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Mức độ quan trọng"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Chưa được đặt"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Không bao giờ hiển thị thông báo"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Không làm gián đoạn bằng âm báo hoặc hình ảnh"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Hiển thị mà không phát âm báo"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Phát âm báo"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Phát âm báo và hiển thị trên màn hình"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Đặt lại"</string>
     <string name="show_silently" msgid="2222875799232222056">"Hiển thị im lặng"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Không phát ra âm thanh, rung hoặc hiển thị các thông báo này khi xem trên màn hình hiện tại."</string>
@@ -2692,16 +2689,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Đang tải ứng dụng..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Kênh"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Chặn tất cả"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Không bao giờ hiển thị các thông báo này"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Hiển thị thông báo"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Không bao giờ hiển thị thông báo trong ngăn thông báo hoặc trên thiết bị ngoại vi"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Hiển thị huy hiệu"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Hiển thị thông báo dưới dạng huy hiệu trên ứng dụng trong Màn hình chính, nếu được hỗ trợ."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"Ghi đè Không làm phiền"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Cho phép các thông báo này tiếp tục làm gián đoạn khi tính năng Không làm phiền được đặt thành Chỉ ưu tiên."</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"Trên màn hình khóa"</string>
@@ -3224,8 +3216,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Không hiển thị lại"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Đang yêu cầu bằng"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Thêm tài khoản"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Thông tin hệ thống"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Cài đặt hồ sơ công việc"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Tìm kiếm liên hệ"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Cho phép tìm kiếm liên hệ theo tổ chức để xác định người gọi và liên hệ"</string>
@@ -3316,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Báo cáo lỗi gần đây nhất của bạn"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Nhật ký bảo mật gần đây nhất của bạn"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Không bao giờ"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Ảnh và video"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Nhạc và âm thanh"</string>
     <string name="storage_games" msgid="7703159201697117621">"Trò chơi"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Ứng dụng khác"</string>
     <string name="storage_files" msgid="8581083146777364063">"Tệp"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Bộ nhớ điện thoại"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"Đã sử dụng <xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> "</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"Còn <xliff:g id="TOTAL">%1$s</xliff:g> dung lượng trống"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 739da14..8df19ec 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -670,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"出错"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"在此国家/地区无法使用 5 GHz 频段"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"正处于飞行模式下"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"网络通知"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"有可用的公共网络时通知我"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"避开状况不佳的网络"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"仅在WLAN互联网连接状况良好时使用WLAN网络"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"仅使用互联网连接情况良好的网络"</string>
@@ -3301,16 +3307,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"您最新的错误报告"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"您最新的安全日志"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"一律不"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"照片和视频"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"音乐和音频"</string>
     <string name="storage_games" msgid="7703159201697117621">"游戏"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"其他应用"</string>
     <string name="storage_files" msgid="8581083146777364063">"文件"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"手机存储空间"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"已使用空间：<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g>"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"总的可用空间：<xliff:g id="TOTAL">%1$s</xliff:g>"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index c953b06..3cf3d52 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -86,7 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"範例文字"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"《綠野仙蹤》"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"第 11 章：奧茲國的奇妙翡翠城"</string>
-    <string name="font_size_preview_text_body" msgid="2846183528684496723">"即使配戴著綠色眼鏡保護雙眼，這座美麗城市閃耀的光芒還是令桃樂絲和她的朋友們目眩神迷。街道兩側佇立著以碧綠大理石建造的華美房屋，上頭鑲滿光彩奪目的翡翠。街道路面同樣是以碧綠大理石鋪砌而成，石板接合處嵌有一排排緊密相連的翡翠，在陽光的照耀下閃閃發亮。房屋窗面採用翠綠玻璃，襯著城市上方的淡綠天空，就連陽光也透出青綠色調。\n\n城內居民眾多，無論男女老幼全都穿著綠色衣物，甚至皮膚也帶有綠色光澤。他們充滿好奇地盯著桃樂絲和她那群外貌迥異的夥伴，只是孩子們一看到獅子便飛快躲到母親身後；然而，一直沒有任何人開口與他們交談。街道上的商店五花八門，桃樂絲發現這些商店兜售的商品，從糖果和爆米花到鞋子、帽子和各式衣物，全都是綠色的。有位小販賣著綠色檸檬汁，當小孩掏錢購買時，桃樂絲清楚看見錢幣也是綠色的。\n\n城裡似乎沒有馬匹或任何動物；居民們都是推著綠色小推車來搬運物品。每個人看起來都相當幸福且富足。"</string>
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"即使戴著綠色眼鏡保護雙眼，桃樂絲和她的朋友一開始還是被這座奇妙城市的耀眼光芒照得目眩神迷。街道兩旁都是以碧綠大理石砌成的美麗房屋，到處鑲滿閃閃發亮的翡翠。她們走過的路面同樣以碧綠大理石鋪砌而成，石板與石板之間鑲有一排排緊密相連的翡翠，在陽光的照耀下閃閃發亮。房屋的窗戶鑲嵌著翠綠玻璃，城市上空呈現淡綠色，就連陽光也散發著綠色光芒。\n\n路上有很多行人，不論男女老幼都穿著綠色衣服，甚至皮膚也略帶綠色。他們好奇地盯著桃樂絲和她那群外貌奇特的夥伴，所有小孩一看到獅子都拔足而逃，各自躲到母親身後；然而，沒有人開口與他們交談。街道上的商店五花八門，桃樂絲發現店裡每件商品都是綠色的，有綠色的糖果和爆谷，還有綠色的鞋子、帽子和衣服。有位小販在路上售賣綠色檸檬水，當孩子們拿錢購買時，桃樂絲發現錢幣也是綠色的。\n\n城裡似乎沒有馬，也沒有任何動物。居民都是推著綠色小車運載物品。每個人看起來都很開心滿足，一切都安定繁榮。"</string>
     <string name="font_size_save" msgid="3450855718056759095">"確定"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB 儲存裝置"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD 卡"</string>
@@ -670,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"錯誤"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"此國家/地區無法使用 5 GHz 頻譜"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"處於飛行模式"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"網絡通知"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"有可用的公用網絡時通知我"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"已避免欠佳的連線"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"除非互聯網連線穩定，否則不要使用 Wi-Fi 網絡"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"只使用連線品質穩定的網絡"</string>
@@ -1536,9 +1542,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"更改新應用程式在安裝時的喜好位置。"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"您要停用內置應用程式嗎？"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"停用應用程式"</string>
-    <string name="app_disable_dlg_text" msgid="5632072173181990531">"如果你停用這個應用程式，Android 和其他應用程式可能無法正常運作。"</string>
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"如果您停用此應用程式，Android 和其他應用程式可能無法正常運作。"</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"要刪除資料並停用應用程式嗎？"</string>
-    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"如果你停用這個應用程式，Android 和其他應用程式可能無法正常運作，你的資料也會遭到刪除。"</string>
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"如果您停用此應用程式，Android 和其他應用程式可能無法正常運作，您的資料亦會被刪除。"</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"關閉通知？"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"如果您關閉這個應用程式的通知，可能會錯失重要的警示與更新。"</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"商店"</string>
@@ -2527,7 +2533,7 @@
       <item quantity="other">顯示 %d 個隱藏項目</item>
       <item quantity="one">顯示 %d 個隱藏項目</item>
     </plurals>
-    <string name="network_dashboard_title" msgid="3135144174846753758">"網路和網際網路"</string>
+    <string name="network_dashboard_title" msgid="3135144174846753758">"網絡和互聯網"</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>
@@ -2653,11 +2659,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"通知"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"重要性"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"未設定"</string>
-    <string name="notification_importance_blocked" msgid="7938180808339386300">"一律不顯示通知"</string>
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"永不顯示通知"</string>
     <string name="notification_importance_min" msgid="5455049524984686275">"不發出音效或顯示通知"</string>
     <string name="notification_importance_low" msgid="2445139943005315690">"顯示通知但不發出音效"</string>
     <string name="notification_importance_default" msgid="5958338024601957516">"發出音效"</string>
-    <string name="notification_importance_high" msgid="2082429479238228527">"發出音效並在畫面上彈出通知"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"發出音效並在螢幕上彈出通知"</string>
     <string name="importance_reset" msgid="7458420788555607007">"重設"</string>
     <string name="show_silently" msgid="2222875799232222056">"顯示通知時不發出音效"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"禁止這些通知發出音效、震動或不時於目前螢幕上出現。"</string>
@@ -2686,11 +2692,11 @@
     <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="4744020456943215352">"一律不顯示這類通知"</string>
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"永不顯示這些通知"</string>
     <string name="notification_content_block_title" msgid="5854232570963006360">"顯示通知"</string>
-    <string name="notification_content_block_summary" msgid="7746185794438882389">"一律不在通知欄或週邊裝置上顯示通知"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"永不在通知欄或周邊裝置上顯示通知"</string>
     <string name="notification_badge_title" msgid="5404669445214920178">"顯示狀態標籤"</string>
-    <string name="notification_badge_summary" msgid="3944771498030335669">"在支援的 Home 應用程式上以狀態標籤形式顯示通知。"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"在 Home 應用程式以狀態標籤形式顯示通知 (如支援)。"</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>
@@ -3213,7 +3219,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"不要再顯示"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"透過以下帳戶提出要求"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"新增帳戶"</string>
-    <string name="support_system_information_title" msgid="3439905790018934773">"系統資訊"</string>
+    <string name="support_system_information_title" msgid="3439905790018934773">"系統資料"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"工作設定檔設定"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"聯絡人搜尋"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"允許您的機構搜尋聯絡人，以識別來電者和聯絡人"</string>
@@ -3304,16 +3310,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"您最近的錯誤報告"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"您最近的安全記錄"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"永不"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"相片和影片"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"音樂和音訊"</string>
     <string name="storage_games" msgid="7703159201697117621">"遊戲"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"其他應用程式"</string>
     <string name="storage_files" msgid="8581083146777364063">"檔案"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"手機儲存空間"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"已使用空間：<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g>"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"可用空間：<xliff:g id="TOTAL">%1$s</xliff:g>"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index a0eee46..9a47cf7 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -670,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"錯誤"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"5 GHz 頻帶在這個國家/地區不受支援"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"處於飛行模式時"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"網路通知"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"有可用的公用網路時通知我"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"避開品質不佳的連線"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"除非 Wi-Fi 網路連線狀態良好，否則不使用"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"僅使用網際網路連線品質穩定的網路"</string>
@@ -3305,16 +3311,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"最新錯誤報告"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"最新安全性紀錄"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"永遠不要"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"相片和影片"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"音樂和音訊"</string>
     <string name="storage_games" msgid="7703159201697117621">"遊戲"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"其他應用程式"</string>
     <string name="storage_files" msgid="8581083146777364063">"檔案"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"手機儲存空間"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"已使用空間：<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g>"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"可用空間：<xliff:g id="TOTAL">%1$s</xliff:g>"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 01841a0..4a5d220 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -86,8 +86,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Isampuli yombhalo"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"I-The Wonderful Wizard of Oz"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"Isahluko 11: The Wonderful Emerald City of Oz"</string>
-    <!-- no translation found for font_size_preview_text_body (2846183528684496723) -->
-    <skip />
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Nanoma amehlo avikelwe izibuko eziluhlaza u-Sonto nabangani bakhe ekuqaleni bamangazwa ubuhle obukhulu bedolobha elihle. Imigwaqo ibikade inezindlu ezinhle ezenze ulayini zonke ezakhiwe ngamamebula aluhlaza nezigcwaliswe yonke indawo ngama-emerald acwebezelayo. Bahamba kuphevumente yamamabuli afanayo aluhlaza, futhi lapho amabhulokhu ahlanganiswe khona ndawonye bekukhona amarowu ama-emerald, asethwe ngokusondelene, aphinde akhazimula ekukhanyeni kwelanga. Amapheyini ewindi bewekade kungowengilazi eliluhlaza; nesibhakabhaka esingaphezulu kwedolobha besikade sinokuthintwa okuluhlaza, futhi imisebe yelanga beyikade iluhlaza. \n\nBekukhona abantu abaningi, abesilisa, abesifazane nezingane, abazihambelayo nje, futhi bonke labo bebagqoke izingubo eziluhlaza futhi banezikhumba ezisaluhlaza. Babheka uSonto nahamba nabo abahlukile ngandlela thize ngamehlo anemibuzo, futhi izingane zonke zabaleka zayozifihla ngemuva komama bazo uma bebona ibhubezi; kodwa akekho umuntu okhulume nabo. Iningi lezitolo zema emgwaqeni, futhi uSonto wabona ukuthi yonke into ekuzo ibikade iluhlaza. Uswidi oluhlaza namakipukipu aluhlaza bewakade anikezwa ukuze athengiswe, kanye nezicathulo eziluhlaza, izigqoko eziluhlaza nezingubo eziluhlaza zalo lonke uhlobo. Endaweni eyodwa indoda ethile ibikade ithengisa i-lemonade eluhlaza, futhi ngenkathi izingane ziyithenga uSonto wakwazi ukubona ukuthi ziyikhokhele ngamapeni aluhlaza. \n\nKwabonakala kungekho amahhashi noma izilwane zanoma iluphi uhlobo; amadoda athwala izinto ngezinqola ezincane eziluhlaza, abazisunduza ngaphambi kwabo. Wonke umuntu wabukeka ajabulile futhi anelisekile futhi aphumelela."</string>
     <string name="font_size_save" msgid="3450855718056759095">"KULUNGILE"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"Isitoreji se-USB"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"Ikhadi le-SD"</string>
@@ -671,8 +670,14 @@
     <string name="wifi_error" msgid="3207971103917128179">"Iphutha"</string>
     <string name="wifi_sap_no_channel_error" msgid="3108445199311817111">"5 GHz ibhendi ayitholakali kuleli zwe"</string>
     <string name="wifi_in_airplane_mode" msgid="8652520421778203796">"Kwimodi yendiza"</string>
-    <string name="wifi_notify_open_networks" msgid="3755768188029653293">"Isaziso senethiwekhi"</string>
-    <string name="wifi_notify_open_networks_summary" msgid="3716818008370391253">"Ngazise uma inethwekhi esesidlangalaleni itholakala"</string>
+    <!-- no translation found for wifi_notify_open_networks (76298880708051981) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1244441254694191115) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup (5685581457584270802) -->
+    <skip />
+    <!-- no translation found for wifi_wakeup_summary (4394339213899922951) -->
+    <skip />
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"Gwema uxhumo olubi"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"Ungasebenzisi inethiwekhi ye-Wi-Fi ngaphandle kokuthi inoxhumano lwe-intanethi olukahle."</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"Sebenzisa kuphela amanethwekhi anoxhumo oluhle lwe-inthanethi"</string>
@@ -1537,11 +1542,9 @@
     <string name="app_install_location_summary" msgid="5155453752692959098">"Shintsha indawo yokufaka efiswayo yezinhlelo zokusebenza ezintsha"</string>
     <string name="app_disable_dlg_title" msgid="3916469657537695436">"Khubeza uhlelo lokusebenza olakhelwe"</string>
     <string name="app_disable_dlg_positive" msgid="7375627244201714263">"Khubaza uhlelo lokusebenza"</string>
-    <!-- no translation found for app_disable_dlg_text (5632072173181990531) -->
-    <skip />
+    <string name="app_disable_dlg_text" msgid="5632072173181990531">"Uma ukhubaza lolu hlelo lokusebenza, i-Android nezinye izinhlelo zokusebenza kungenzeka zingasasebenzi njengoba zihlosiwe."</string>
     <string name="app_special_disable_dlg_title" msgid="2690148680327142674">"Susa idatha futhi ukhubaze uhlelo lokusebenza?"</string>
-    <!-- no translation found for app_special_disable_dlg_text (5832078825810635913) -->
-    <skip />
+    <string name="app_special_disable_dlg_text" msgid="5832078825810635913">"Uma ukhubaza lolu hlelo lokusebenza, i-Android nezinye izinhlelo zokusebenza kungenzeka zingasasebenzi njengoba zihlosiwe. Idatha yakho nayo izosuswa."</string>
     <string name="app_disable_notifications_dlg_title" msgid="7669264654851761857">"Cima izaziso?"</string>
     <string name="app_disable_notifications_dlg_text" msgid="5088484670924769845">"Uma ucima izaziso kulolu hlelo lokusebenza, ungageja izaziso nezibuyekezo ezibalulekile."</string>
     <string name="app_install_details_group_title" msgid="7084623031296083574">"Isitolo"</string>
@@ -2528,8 +2531,7 @@
       <item quantity="one">Bonisa izinto ezingu-%d ezifihliwe</item>
       <item quantity="other">Bonisa izinto ezingu-%d ezifihliwe</item>
     </plurals>
-    <!-- no translation found for network_dashboard_title (3135144174846753758) -->
-    <skip />
+    <string name="network_dashboard_title" msgid="3135144174846753758">"Inethiwekhi ne-inthanethi"</string>
     <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>
@@ -2655,16 +2657,11 @@
     <string name="app_notifications_title" msgid="139788604658984593">"Izaziso"</string>
     <string name="notification_importance_title" msgid="848692592679312666">"Ukubaluleka"</string>
     <string name="notification_importance_none" msgid="3173515479356106227">"Ayisethiwe"</string>
-    <!-- no translation found for notification_importance_blocked (7938180808339386300) -->
-    <skip />
-    <!-- no translation found for notification_importance_min (5455049524984686275) -->
-    <skip />
-    <!-- no translation found for notification_importance_low (2445139943005315690) -->
-    <skip />
-    <!-- no translation found for notification_importance_default (5958338024601957516) -->
-    <skip />
-    <!-- no translation found for notification_importance_high (2082429479238228527) -->
-    <skip />
+    <string name="notification_importance_blocked" msgid="7938180808339386300">"Ungalokothi ubonise izaziso"</string>
+    <string name="notification_importance_min" msgid="5455049524984686275">"Awukho umsindo noma ukuphazamiseka okubukwayo"</string>
+    <string name="notification_importance_low" msgid="2445139943005315690">"Bonisa ngokuthulile"</string>
+    <string name="notification_importance_default" msgid="5958338024601957516">"Yenza umsindo"</string>
+    <string name="notification_importance_high" msgid="2082429479238228527">"Yenza umsindo ne-pop kusikrini"</string>
     <string name="importance_reset" msgid="7458420788555607007">"Setha kabusha"</string>
     <string name="show_silently" msgid="2222875799232222056">"Bonisa ngokuthulile"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"Ungenzi umsindo, ukudlidlizela, noma ubheke lezi zaziso kusikrini samanje."</string>
@@ -2693,16 +2690,11 @@
     <string name="loading_notification_apps" msgid="5031818677010335895">"Ilayisha izinhlelo zokusebenza..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"Iziteshi"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"Vimbela konke"</string>
-    <!-- no translation found for app_notification_block_summary (4744020456943215352) -->
-    <skip />
-    <!-- no translation found for notification_content_block_title (5854232570963006360) -->
-    <skip />
-    <!-- no translation found for notification_content_block_summary (7746185794438882389) -->
-    <skip />
-    <!-- no translation found for notification_badge_title (5404669445214920178) -->
-    <skip />
-    <!-- no translation found for notification_badge_summary (3944771498030335669) -->
-    <skip />
+    <string name="app_notification_block_summary" msgid="4744020456943215352">"Ungalokothi ubonise lezi zaziso"</string>
+    <string name="notification_content_block_title" msgid="5854232570963006360">"Bonisa izaziso"</string>
+    <string name="notification_content_block_summary" msgid="7746185794438882389">"Ungalokothi ubonise izaziso kumthunzi noma kumadivayisi alawulwa ikhompuyutha"</string>
+    <string name="notification_badge_title" msgid="5404669445214920178">"Bonisa ibheji"</string>
+    <string name="notification_badge_summary" msgid="3944771498030335669">"Bonisa izaziso njengamabheji kuhlelo lokusebenza lwasekhaya, uma zisekelwe."</string>
     <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"Bhala ngaphezulu okuthi ungaphazamisi"</string>
     <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"Vumela lezi zaziso ziqhubeke nokuphazamisa uma okuthi ungaphazamisi kusethelwe okuphezulu kuphela"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"Ekukhiyeni kwesikrini"</string>
@@ -3225,8 +3217,7 @@
     <string name="support_disclaimer_do_not_show" msgid="3378367075323727539">"Ungabonisi futhi"</string>
     <string name="support_account_request_prefix" msgid="6387847874661861650">"Icela njengo"</string>
     <string name="support_account_picker_add_account" msgid="5076277544846506214">"Engeza i-akhawunti"</string>
-    <!-- no translation found for support_system_information_title (3439905790018934773) -->
-    <skip />
+    <string name="support_system_information_title" msgid="3439905790018934773">"Ulwazi lwesistimu"</string>
     <string name="managed_profile_settings_title" msgid="2729481936758125054">"Izilungiselelo zephrofayela yomsebenzi"</string>
     <string name="managed_profile_contact_search_title" msgid="6034734926815544221">"Usesho loxhumana naye"</string>
     <string name="managed_profile_contact_search_summary" msgid="5431253552272970512">"Vumela usesho loxhumana naye ngenhlangano yakho ukuze ukhombe abashayayo noxhumana nabo"</string>
@@ -3317,16 +3308,28 @@
     <string name="enterprise_privacy_bug_reports" msgid="4762460041705169944">"Umbiko wakho wakamuva kakhulu wesiphazamisi"</string>
     <string name="enterprise_privacy_security_logs" msgid="3648730027522011684">"Ilogu lakho lokuvikela lakamuva kakhulu"</string>
     <string name="enterprise_privacy_never" msgid="1304035596746436921">"Akusoze"</string>
+    <!-- no translation found for enterprise_privacy_always_on_vpn_device (4409098287763221215) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_personal (9217774730260037434) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_always_on_vpn_work (7244472958208315814) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_global_http_proxy (7936664553416257333) -->
+    <skip />
+    <!-- no translation found for enterprise_privacy_number_enterprise_installed_packages (6167929812245127890) -->
     <string name="storage_photos_videos" msgid="1872663116054954685">"Izithombe namavidiyo"</string>
     <string name="storage_music_audio" msgid="7890103397813503615">"Umculo nomsindo"</string>
     <string name="storage_games" msgid="7703159201697117621">"Amageyimu"</string>
     <string name="storage_other_apps" msgid="5524321740031718083">"Ezinye izinhlelo zokusebenza"</string>
     <string name="storage_files" msgid="8581083146777364063">"Amafayela"</string>
     <string name="storage_settings_2" msgid="6369810699930056554">"Isireji sefoni"</string>
-    <!-- no translation found for storage_size_large_alternate (3436941214395940966) -->
+    <string name="storage_size_large_alternate" msgid="3436941214395940966">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g> isetshenzisiwe"</small></small></string>
+    <string name="storage_volume_free" msgid="8829609507318832879">"<xliff:g id="TOTAL">%1$s</xliff:g> ikhululekile"</string>
+    <string name="storage_percent_used" msgid="6741397129281819921">"<xliff:g id="PERCENT">%1$s</xliff:g>%%"</string>
+    <!-- no translation found for storage_manager_indicator (1516810749625915020) -->
     <skip />
-    <!-- no translation found for storage_volume_free (8829609507318832879) -->
+    <!-- no translation found for storage_manager_indicator_off (7488057587180724388) -->
     <skip />
-    <!-- no translation found for storage_percent_used (6741397129281819921) -->
+    <!-- no translation found for storage_manager_indicator_on (8625551710194584733) -->
     <skip />
 </resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 38eb74b..300d73a 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -99,8 +99,6 @@
     <color name="message_icon_background_outgoing">#4285f4</color>
     <color name="message_icon_text_outgoing">#ffffffff</color>
 
-    <color name="seek_bar_preference_preview_text">#fff</color>
-
     <color name="importance_disabled_slider_color">@*android:color/material_grey_300</color>
     <color name="importance_secondary_slider_color">#858383</color>
 
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 5038177..2879002 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -752,6 +752,8 @@
     <string name="security_passwords_title">Passwords</string>
     <!-- Summary for settings preference disabled by administrator [CHAR LIMIT=50] -->
     <string name="disabled_by_administrator_summary">Disabled by administrator</string>
+    <!-- In the security screen, the header title for security statuses -->
+    <string name="security_status_title">Security status</string>
 
     <!-- Fingerprint enrollment and settings --><skip />
     <!-- Title shown for menu item that launches fingerprint settings or enrollment [CHAR LIMIT=22] -->
@@ -1583,11 +1585,11 @@
     <string name="wifi_in_airplane_mode">In Airplane mode</string>
     <!-- Checkbox title for option to notify user when open networks are nearby -->
     <string name="wifi_notify_open_networks">Open network notification</string>
-    <!-- Checkbox summary for option to notify user when open networks are nearby [CHAR LIMIT=60]-->
+    <!-- Checkbox summary for option to notify user when open networks are nearby-->
     <string name="wifi_notify_open_networks_summary">Notify whenever a high quality open network is available</string>
     <!-- Checkbox title for option to enable Wi-Fi when saved networks are nearby -->
     <string name="wifi_wakeup">Turn Wi\u2011Fi back on</string>
-    <!-- Checkbox summary for option to enable Wi-Fi when saved networks are nearby [CHAR LIMIT=60]-->
+    <!-- Checkbox summary for option to enable Wi-Fi when saved networks are nearby-->
     <string name="wifi_wakeup_summary">Automatically turn on Wi\u2011Fi near saved networks</string>
     <!-- Checkbox title for option to toggle poor network detection -->
     <string name="wifi_poor_network_detection">Avoid poor connections</string>
@@ -1634,6 +1636,8 @@
     <string name="wifi_cellular_data_fallback_summary">Use cellular data when Wi\u2011Fi has no Internet access. Data usage may apply.</string>
     <!-- Action bar text message to manually add a wifi network [CHAR LIMIT=20]-->
     <string name="wifi_add_network">Add network</string>
+    <!-- Action bar title to open additional Wi-Fi settings-->
+    <string name="wifi_configure_settings_preference_title">Wi\u2011Fi preferences</string>
     <!-- Header for the list of wifi networks-->
     <string name="wifi_access_points">Wi\u2011Fi networks</string>
     <!-- Menu option to do WPS Push Button [CHAR LIMIT=25]-->
@@ -3035,6 +3039,8 @@
     <string name="location_mode_sensors_only_title">Device only</string>
     <!-- [CHAR LIMIT=30] Location settings screen, location off mode -->
     <string name="location_mode_location_off_title">Location off</string>
+    <!-- [CHAR LIMIT=30] Location settings screen, app-level permissions -->
+    <string name="location_app_level_permissions">App-level permissions</string>
     <!-- [CHAR LIMIT=30] Location settings screen, sub category for recent location requests -->
     <string name="location_category_recent_location_requests">Recent location requests</string>
     <!-- Location settings screen, displayed when there's no recent app accessing location -->
@@ -3972,6 +3978,8 @@
     <string name="talkback_title">Talkback</string>
     <!-- Summary for the Talkback Accessibility Service. Lets the user know that Talkback is a screenreader and that it is usually most helpful to blind and low vision users and whether the service is on. [CHAR_LIMIT=none] -->
     <string name="talkback_summary">Screen reader primarily for people with blindness and low vision</string>
+    <!-- Summary for the Select to Speak Accessibility Service. [CHAR_LIMIT=none] -->
+    <string name="select_to_speak_summary">Tap items on your screen to hear them read aloud</string>
     <!-- Title for the accessibility preference category of system related preferences. [CHAR LIMIT=25] -->
     <string name="accessibility_system_title">System</string>
     <!-- Title for the accessibility preference category of display related preferences. [CHAR LIMIT=25] -->
@@ -3986,12 +3994,6 @@
     <string name="accessibility_screen_magnification_summary"><b>To zoom</b>, quickly tap the screen 3 times with one finger.\n<ul><li>Drag 2 or more fingers to scroll</li>\n<li>Pinch 2 or more fingers together or apart to adjust zoom</li></ul>\n\n<b>To zoom temporarily</b>, quickly tap the screen 3 times and hold down your finger on the third tap.\n<ul><li>Drag your finger to move around the screen</li>\n<li>Lift your finger to zoom out</li></ul>\n\nYou can\'t zoom in on the keyboard and navigation bar.</string>
     <!-- Title for the preference to enable the global geture that turns on accessibility. [CHAR LIMIT=35] -->
     <string name="accessibility_global_gesture_preference_title">Accessibility shortcut</string>
-    <!-- Summary for the preference to enable the global geture that turns on accessibility (on state). [CHAR LIMIT=60] -->
-    <string name="accessibility_global_gesture_preference_summary_on">On</string>
-    <!-- Summary for the preference screen to enable the global geture that turns on accessibility (off state). [CHAR LIMIT=35] -->
-    <string name="accessibility_global_gesture_preference_summary_off">Off</string>
-    <!--  Description for the preference screen to enable the global geture taht turns on accessibility. [CHAR LIMIT=none] -->
-    <string name="accessibility_global_gesture_preference_description">When this feature is turned on, you can quickly activate accessibility features in two steps:\n\nStep 1: Press and hold the power button until you hear a sound or feel a vibration.\n\nStep 2: Touch and hold two fingers until you hear audio confirmation.\n\nIf the device has multiple users, using this shortcut on the lock screen temporarily enables accessibility until the device is unlocked.</string>
     <!-- Title for the accessibility preference to high contrast text. [CHAR LIMIT=35] -->
     <string name="accessibility_toggle_high_text_contrast_preference_title">High contrast text</string>
     <!-- Title for the accessibility preference to auto update screen magnification. [CHAR LIMIT=35] -->
@@ -4628,9 +4630,20 @@
         behalf.  It comes from the <xliff:g id="voice_input_service_app_name">%s</xliff:g>
         application.  Enable the use of this service?</string>
 
-    <!-- On main TTS Settings screen, in default settings section, reset speech rate for synthesized voice to 1x speech rate.-->
+    <!-- [CHAR LIMIT=50] The text for the settings section that is used to set a preferred text to speech engine -->
+    <string name="tts_engine_preference_title">Preferred engine</string>
+    <!-- [CHAR LIMIT=50] The text for a settings screen of the currently set text to speech engine -->
+    <string name="tts_engine_settings_title">Engine settings</string>
+    <!-- [CHAR LIMIT=50] The text for a button that goes to the speech rate and pitch settings for text to speech. -->
+    <string name="tts_sliders_title">Speech rate &amp; pitch</string>
+    <!-- [CHAR LIMIT=50] Name for the general text to speech settings section. -->
+    <string name="tts_engine_section_title">Engine</string>
+    <!-- [CHAR LIMIT=50] Name for the button that goes to the voice selection screen. -->
+    <string name="tts_install_voice_title">Voices</string>
+
+    <!-- Reset speech rate for synthesized voice to 1x speech rate in the text to speech settings.-->
     <string name="tts_reset_speech_rate_title">Reset speech rate</string>
-    <!-- On main TTS Settings screen, summary for reset speech rate for synthesized voice -->
+    <!-- Summary for reset speech rate for synthesized voice in the text to speech settings.-->
     <string name="tts_reset_speech_rate_summary">Reset the speed at which the text is spoken to normal.</string>
 
     <!-- Power Control Widget -->
@@ -4739,10 +4752,8 @@
     <string name="emergency_tone_summary">Set behavior when an emergency call is placed</string>
 
     <!-- Backup and reset Settings screen --><skip />
-    <!-- Backup and reset settings menu title -->
-    <string name="privacy_settings">Backup &amp; reset</string>
-    <!-- Privacy settings activity title -->
-    <string name="privacy_settings_title">Backup &amp; reset</string>
+    <!-- Backup and reset settings menu and activity title -->
+    <string name="privacy_settings_title">Backup</string>
     <!-- Backup section title -->
     <string name="backup_section_title">Backup &amp; restore</string>
     <!-- Personal data section title -->
@@ -5387,6 +5398,8 @@
 
     <!-- Toast message when there is no network connection to start VPN. [CHAR LIMIT=100] -->
     <string name="vpn_no_network">There is no network connection. Please try again later.</string>
+    <!-- Toast message when VPN has disconnected automatically due to Clear credentials. [CHAR LIMIT=NONE] -->
+    <string name="vpn_disconnected">Disconnected from VPN</string>
     <!-- Toast message when a certificate is missing. [CHAR LIMIT=100] -->
     <string name="vpn_missing_cert">A certificate is missing. Please edit the profile.</string>
 
@@ -5953,6 +5966,10 @@
     <string name="search_menu">Search settings</string>
     <!-- Text used as a search hint into the search box -->
     <string name="query_hint_text">Search settings</string>
+    <!-- Search breadcrumb connector symbol -->
+    <string name="search_breadcrumb_connector" translatable="false">
+        <xliff:g name="first_item">%1$s</xliff:g> > <xliff:g name="second_item">%2$s</xliff:g>
+    </string>
 
     <!-- Text used to identify the search query suggestions / recent searches -->
     <string name="search_recents_queries_label">Recent searches</string>
@@ -6165,6 +6182,11 @@
     <!-- Work Sound: Message for dialog shown when enabling sync with personal sounds. [CHAR LIMIT=none] -->
     <string name="work_sync_dialog_message">Your current work profile sounds will be replaced with your personal profile sounds</string>
 
+    <!-- Ringtones preference category: Title for the Ringotnes preference categories. [CHAR LIMIT=none] -->
+    <string name="ringtones_category_preference_title">Ringtones</string>
+
+    <!-- Other sounds and vibrations preference category: Title for the Other sounds and vibrations preference categories. [CHAR LIMIT=none] -->
+    <string name="other_sound_category_preference_title">Other sounds and vibrations</string>
 
     <!-- Configure Notifications Settings title. [CHAR LIMIT=30] -->
     <string name="configure_notification_settings">Notification preferences</string>
@@ -6230,6 +6252,9 @@
     <!-- [CHAR LIMIT=100] Notification Importance slider: unset importance level description -->
     <string name="notification_importance_none">Not set</string>
 
+    <!-- [CHAR LIMIT=100] Notification Importance slider: unspecified importance level description -->
+    <string name="notification_importance_unspecified">Let the app decide</string>
+
     <!-- [CHAR LIMIT=100] Notification Importance slider: blocked importance level description -->
     <string name="notification_importance_blocked">Never show notifications</string>
 
@@ -6318,6 +6343,21 @@
          flicker while in VR mode. -->
     <string name="display_vr_pref_off">Reduce flicker</string>
 
+    <!-- Special access > Title for managing Picture-in-picture settings. [CHAR LIMIT=50] -->
+    <string name="picture_in_picture_title">Picture-in-picture</string>
+
+    <!-- Special access > Picture-in-picture > Text to display when the list is empty. [CHAR LIMIT=NONE] -->
+    <string name="picture_in_picture_empty_text">No installed apps support Picture-in-picture</string>
+
+    <!-- Special access > Picture-in-picture > Additional keywords to search for. [CHAR LIMIT=NONE] -->
+    <string name="picture_in_picture_keywords">pip picture in</string>
+
+    <!-- Apps > App Details > Advanced section string title. [CHAR LIMIT=NONE] -->
+    <string name="picture_in_picture_app_detail_title">Picture-in-picture</string>
+
+    <!-- Apps > App Details > Advanced section string description. [CHAR LIMIT=NONE] -->
+    <string name="picture_in_picture_app_detail_summary">Permit entering picture-in-picture when leaving app</string>
+
     <!-- Sound & notification > Advanced section: Title for managing Do Not Disturb access option. [CHAR LIMIT=40] -->
     <string name="manage_zen_access_title">Do Not Disturb access</string>
 
@@ -6330,6 +6370,9 @@
     <!-- [CHAR LIMIT=NONE] App notification settings: channels title -->
     <string name="notification_channels">Channels</string>
 
+    <!-- [CHAR LIMIT=60] App notification settings: Text to display for deleted channels -->
+    <string name="deleted_channel_name"><xliff:g id="channel_name" example="Promotions">%1$s</xliff:g> (deleted)</string>
+
     <!-- [CHAR LIMIT=NONE] App notification settings: Block option title -->
     <string name="app_notification_block_title">Block all</string>
 
@@ -6961,8 +7004,8 @@
     <!-- Label for list to control apps that ignore battery saving restrictions [CHAR LIMIT=27]-->
     <string name="high_power_apps">Battery optimization</string>
 
-    <!-- Label for menu to launch additional battery info -->
-    <string name="additional_battery_info" translatable="false">Additional battery info</string>
+    <!-- Label for menu to launch a screen showing usage alerts for battery [CHAR LIMIT=30] -->
+    <string name="additional_battery_info">Usage alerts</string>
 
     <!-- Filter for apps allowed to use a lot of power [CHAR LIMIT=25] -->
     <string name="high_power_filter_on">Not optimized</string>
@@ -6990,6 +7033,9 @@
     <!-- Summary of power usage for an app [CHAR LIMIT=NONE] -->
     <string name="battery_summary"><xliff:g id="percentage" example="2">%1$d</xliff:g>%% use since last full charge</string>
 
+    <!-- Title of a group of settings that let you manage settings that affect battery life [CHAR LIMIT=60] -->
+    <string name="battery_power_management">Power management</string>
+
     <!-- Summary for app with no battery usage [CHAR LIMIT=NONE] -->
     <string name="no_battery_summary">No battery use since last full charge</string>
 
@@ -7225,6 +7271,12 @@
     <!-- Summary of app not allowed to draw overlay [CHAR LIMIT=60] -->
     <string name="system_alert_window_off">No</string>
 
+    <!-- Title for settings screen for controlling apps that can install other apps on device [CHAR LIMIT=30] -->
+    <string name="install_other_apps">Install other apps</string>
+    <!-- Keywords for setting screen for controlling apps that can install other apps on device -->
+    <string name="keywords_install_other_apps">install apps external unknown sources</string>
+    <!-- Label for setting which controls whether app is trusted to install apps on the device [CHAR LIMIT=45] -->
+    <string name="permit_install_other_apps">Allows to install other apps</string>
 
     <!-- Write Settings settings -->
     <!-- Settings title in main settings screen for WRITE_SETTINGS [CHAR LIMIT=30] -->
@@ -7234,6 +7286,8 @@
     <!-- Summary of number of apps currently can draw overlays [CHAR LIMIT=60] -->
     <string name="write_settings_summary"><xliff:g id="count" example="10">%1$d</xliff:g> of <xliff:g id="count" example="10">%2$d</xliff:g> apps allowed to modify system settings</string>
 
+    <!-- Label for showing apps that can install other apps [CHAR LIMIT=45] -->
+    <string name="filter_install_sources_apps">Can install other apps</string>
     <!-- Label for showing apps that can write system settings [CHAR LIMIT=45] -->
     <string name="filter_write_settings_apps">Can modify system settings</string>
     <!-- Title for the apps that are allowed to write system settings [CHAR LIMIT=60] -->
@@ -7250,6 +7304,12 @@
     <string name="write_settings_on">Yes</string>
     <!-- Summary of app not allowed to write system settings [CHAR LIMIT=45] -->
     <string name="write_settings_off">No</string>
+    <!-- Summary of app trusted to install apps [CHAR LIMIT=45] -->
+    <string name="external_source_trusted">Yes</string>
+    <!-- Summary of app not trusted to install apps [CHAR LIMIT=45] -->
+    <string name="external_source_untrusted">No</string>
+    <!-- Title of switch preference that controls whether an external app source is trusted or not [CHAR LIMIT=100] -->
+    <string name="external_source_switch_title">Trust apps from this source</string>
 
     <!-- Title of setting that controls gesture to open camera [CHAR LIMIT=40] -->
     <string name="camera_gesture_title">Double twist for camera</string>
@@ -7440,6 +7500,9 @@
     <!-- Name of the setting to disable the automatic update -->
     <string name="ota_disable_automatic_update">Automatic system updates</string>
 
+    <!-- Name of the setting to enable hal binderization -->
+    <string name="enable_hal_binderization">Binderized HALs (requires reboot)</string>
+
     <!-- Label for category for data usage [CHAR LIMIT=30] -->
     <string name="usage">Usage</string>
 
@@ -7618,6 +7681,8 @@
     <string name="notification_log_details_importance">importance</string>
     <!-- Notification log debug tool: header: notification importance explanation -->
     <string name="notification_log_details_explanation">explanation</string>
+    <!-- Notification log debug tool: header: notification importance -->
+    <string name="notification_log_details_badge">can show badge</string>
     <!-- Notification log debug tool: header: notification contentIntent field -->
     <string name="notification_log_details_content_intent">intent</string>
     <!-- Notification log debug tool: header: notification deleteIntent field -->
@@ -8007,6 +8072,31 @@
     <string name="enterprise_privacy_security_logs">Your most recent security log</string>
     <!-- Label indicating that the date at which the admin last took a particular action was "never" (i.e. the admin never took the action so far). -->
     <string name="enterprise_privacy_never">Never</string>
+    <!-- Label indicating how many apps were installed on the device by the admin. [CHAR LIMIT=NONE] -->
+    <plurals name="enterprise_privacy_number_enterprise_installed_packages">
+        <item quantity="one"><xliff:g id="count">%d</xliff:g> app installed by your admin</item>
+        <item quantity="other"><xliff:g id="count">%d</xliff:g> apps installed by your admin</item>
+    </plurals>
+    <!-- Label indicating how many apps were granted permission to access the device's location by the admin. [CHAR LIMIT=NONE] -->
+    <plurals name="enterprise_privacy_number_location_access_packages">
+        <item quantity="one"><xliff:g id="count">%d</xliff:g> app allowed access to your location by your admin</item>
+        <item quantity="other"><xliff:g id="count">%d</xliff:g> apps allowed access to your location by your admin</item>
+    </plurals>
+    <!-- Label indicating how many apps were granted permission to access the microphone by the admin. [CHAR LIMIT=NONE] -->
+    <plurals name="enterprise_privacy_number_microphone_access_packages">
+        <item quantity="one"><xliff:g id="count">%d</xliff:g> app allowed access to your microphone by your admin</item>
+        <item quantity="other"><xliff:g id="count">%d</xliff:g> apps allowed access to your microphone by your admin</item>
+    </plurals>
+    <!-- Label indicating how many apps were granted permission to access the camera by the admin. [CHAR LIMIT=NONE] -->
+    <plurals name="enterprise_privacy_number_camera_access_packages">
+        <item quantity="one"><xliff:g id="count">%d</xliff:g> app allowed access to your camera by your admin</item>
+        <item quantity="other"><xliff:g id="count">%d</xliff:g> apps allowed access to your camera by your admin</item>
+    </plurals>
+    <!-- Label indicating how many apps were set as default defaults for common actions (e.g. open browser, send e-mail) by the admin. [CHAR LIMIT=NONE] -->
+    <plurals name="enterprise_privacy_number_enterprise_set_default_apps">
+        <item quantity="one"><xliff:g id="count">%d</xliff:g> default app set by your admin</item>
+        <item quantity="other"><xliff:g id="count">%d</xliff:g> default apps set by your admin</item>
+    </plurals>
     <!-- Label explaining that an always-on VPN was set by the admin for the entire device. [CHAR LIMIT=NONE] -->
     <string name="enterprise_privacy_always_on_vpn_device">Always-on VPN turned on</string>
     <!-- Label explaining that an always-on VPN was set by the admin in the personal profile. [CHAR LIMIT=NONE] -->
@@ -8015,11 +8105,18 @@
     <string name="enterprise_privacy_always_on_vpn_work">Always-on VPN turned on in your work profile</string>
     <!-- Label explaining that a global HTTP proxy was set by the admin. [CHAR LIMIT=NONE] -->
     <string name="enterprise_privacy_global_http_proxy">Global HTTP proxy set</string>
-    <!-- Label indicating how many apps were installed on the device by the admin. [CHAR LIMIT=NONE] -->
-    <plurals name="enterprise_privacy_number_enterprise_installed_packages">
-        <item quantity="one"><xliff:g id="count">%d</xliff:g> app installed by your admin</item>
-        <item quantity="other"><xliff:g id="count">%d</xliff:g> apps installed by your admin</item>
-    </plurals>
+    <!-- Label explaining that the admin can lock the device and change the user's password. [CHAR LIMIT=NONE] -->
+    <string name="enterprise_privacy_lock_device">Admin can lock device and reset password</string>
+    <!-- Label explaining that the admin can wipe the device remotely. [CHAR LIMIT=NONE] -->
+    <string name="enterprise_privacy_wipe_device">Admin can delete all device data</string>
+    <!-- Message indicating that the device is enterprise-managed by a Device Owner [CHAR LIMIT=NONE] -->
+    <string name="do_disclosure_generic">This device is managed.</string>
+    <!-- Message indicating that the device is enterprise-managed by a Device Owner [CHAR LIMIT=NONE] -->
+    <string name="do_disclosure_with_name">This device is managed by <xliff:g id="organization_name" example="Foo, Inc.">%s</xliff:g>.</string>
+    <!-- Message indicating that the device is enterprise-managed: Space that separates the main text and the "learn more" link that follows it. [CHAR LIMIT=NONE] -->
+    <string name="do_disclosure_learn_more_separator">" "</string>
+    <!-- Message indicating that the device is enterprise-managed: Link to learn more about what a Device Owner app can do [CHAR LIMIT=NONE] -->
+    <string name="do_disclosure_learn_more">Learn more</string>
 
     <!-- Preference label for the Photos & Videos storage section. [CHAR LIMIT=50] -->
     <string name="storage_photos_videos">Photos &amp; Videos</string>
@@ -8055,4 +8152,29 @@
     <!-- On status for the automatic storage manager. [CHAR_LIMIT=10] -->
     <string name="storage_manager_indicator_on">On</string>
 
+    <!-- Title of games app storage screen [CHAR LIMIT=30] -->
+    <string name="game_storage_settings">Games</string>
+
+    <!-- UI webview setting: WebView uninstalled-for-user explanatory text [CHAR LIMIT=30] -->
+    <string name="webview_uninstalled_for_user">Uninstalled for user <xliff:g id="user" example="John Doe">%s</xliff:g>\n</string>
+    <!-- UI webview setting: WebView disabled-for-user explanatory text [CHAR LIMIT=30] -->
+    <string name="webview_disabled_for_user">Disabled for user <xliff:g id="user" example="John Doe">%s</xliff:g>\n</string>
+
+    <!-- AutoFill strings -->
+    <!-- Preference label for the auto-fill app. [CHAR LIMIT=60] -->
+    <string name="autofill_app">Autofill app</string>
+    <!-- Keywords for the auto-fill feature. [CHAR LIMIT=NONE] -->
+    <string name="autofill_keywords">auto, fill, autofill</string>
+    <!-- Title of the warning dialog for setting the auto-fill app. [CHAR_LIMIT=NONE] -->
+    <string name="autofill_confirmation_message">
+        Make <xliff:g id="app_name">%1$s</xliff:g> your autofill app? <xliff:g id="app_name">%1$s</xliff:g> will be able to read your screen and fill fields in other apps.
+    </string>
+
+    <!-- Name of setting for switching device theme [CHAR LIMIT=60] -->
+    <string name="device_theme">Device theme</string>
+    <!-- Name of default device theme [CHAR LIMIT=60] -->
+    <string name="default_theme">Default</string>
+    <!-- Temporary reboot string, will be removed -->
+    <string name="change_theme_reboot" translatable="false">Changing the theme requires a restart.</string>
+
 </resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 29cb390..092d997 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -293,10 +293,6 @@
     <!-- Scrollbar style OUTSIDE_OVERLAY -->
     <integer name="preference_scrollbar_style">33554432</integer>
 
-    <style name="AppListSwitchPreference" parent="@*android:style/Preference.Material.DialogPreference">
-        <item name="android:widgetLayout">@*android:layout/preference_widget_switch</item>
-    </style>
-
     <style name="TextAppearance.Medium" parent="@android:style/TextAppearance.Material.Medium" />
     <style name="TextAppearance.Small" parent="@android:style/TextAppearance.Material.Small" />
     <style name="TextAppearance.Switch" parent="@android:style/TextAppearance.Material.Title" />
diff --git a/res/values/themes.xml b/res/values/themes.xml
index f1cca37..fe5b3ca 100644
--- a/res/values/themes.xml
+++ b/res/values/themes.xml
@@ -35,6 +35,7 @@
         <item name="side_margin">0dip</item>
         <item name="wifi_signal_color">@color/setup_wizard_wifi_color_dark</item>
         <item name="wifi_signal">@drawable/wifi_signal</item>
+        <item name="wifi_friction">@drawable/wifi_friction</item>
         <item name="preferenceBackgroundColor">?android:attr/colorBackground</item>
         <item name="preferenceTheme">@style/PreferenceTheme.SetupWizard</item>
 
@@ -57,6 +58,7 @@
         <item name="side_margin">0dip</item>
         <item name="wifi_signal_color">@color/setup_wizard_wifi_color_light</item>
         <item name="wifi_signal">@drawable/wifi_signal</item>
+        <item name="wifi_friction">@drawable/wifi_friction</item>
         <item name="preferenceBackgroundColor">?android:attr/colorBackground</item>
         <item name="preferenceTheme">@style/PreferenceTheme.SetupWizard</item>
 
@@ -120,7 +122,7 @@
          layouts against a remote context using our local theme colors. Due to the implementation
          details of Theme, we can't reference any local resources and MUST instead use the values
          directly. So use #ff263238 instead of @color/theme_primary and so on. -->
-    <style name="Theme.SettingsBase" parent="@*android:style/Theme.DeviceDefault.Settings.LightActionBar" />
+    <style name="Theme.SettingsBase" parent="@android:style/Theme.DeviceDefault.Settings" />
 
     <style name="Theme.Settings" parent="Theme.SettingsBase">
         <item name="preferenceTheme">@style/PreferenceTheme</item>
@@ -136,12 +138,12 @@
         <item name="ic_wps">@drawable/ic_wps_light</item>
         <item name="wifi_signal">@drawable/wifi_signal</item>
         <item name="wifi_signal_color">?android:attr/colorAccent</item>
+        <item name="wifi_friction">@drawable/wifi_friction</item>
         <item name="side_margin">@dimen/settings_side_margin</item>
         <item name="suwListItemIconColor">?android:attr/colorAccent</item>
 
         <!-- Redefine the ActionBar style for contentInsetStart -->
         <item name="android:actionBarStyle">@style/Theme.ActionBar</item>
-        <item name="*android:actionBarSize">@dimen/actionbar_size</item>
 
         <item name="switchBarTheme">@style/ThemeOverlay.SwitchBar.Settings</item>
 
@@ -154,8 +156,6 @@
         <item name="*android:regularColor">@color/lock_pattern_view_regular_color</item>
         <item name="*android:successColor">@color/lock_pattern_view_success_color</item>
         <item name="*android:errorColor">@color/lock_pattern_view_error_color</item>
-
-        <item name="android:statusBarColor">@color/status_bar_color</item>
     </style>
 
     <style name="Theme.SubSettings" parent="Theme.Settings">
@@ -175,7 +175,7 @@
         <item name="android:backgroundDimEnabled">false</item>
     </style>
 
-    <style name="Theme.ActionBar" parent="@android:style/Widget.DeviceDefault.Light.ActionBar">
+    <style name="Theme.ActionBar" parent="@android:style/Widget.Material.ActionBar.Solid">
         <item name="android:contentInsetStart">@dimen/actionbar_contentInsetStart</item>
     </style>
 
@@ -183,23 +183,16 @@
         <item name="android:contentInsetStart">@dimen/actionbar_subsettings_contentInsetStart</item>
     </style>
 
-    <style name="ThemeOverlay.SwitchBar.Settings" parent="@*android:style/ThemeOverlay.DeviceDefault.ActionBar.Accent">
+    <style name="ThemeOverlay.SwitchBar.Settings" parent="@android:style/ThemeOverlay.Material.ActionBar">
         <item name="switchBarMarginStart">@dimen/switchbar_subsettings_margin_start</item>
         <item name="switchBarMarginEnd">@dimen/switchbar_subsettings_margin_end</item>
-        <item name="switchBarBackgroundColor">?android:attr/colorBackground</item>
+        <item name="switchBarBackgroundColor">?android:attr/colorSecondary</item>
     </style>
 
-    <style name="ThemeOverlay.SwitchBar.SubSettings" parent="@*android:style/ThemeOverlay.DeviceDefault.ActionBar.Accent">
+    <style name="ThemeOverlay.SwitchBar.SubSettings" parent="@android:style/ThemeOverlay.Material.ActionBar">
         <item name="switchBarMarginStart">@dimen/switchbar_subsettings_margin_start</item>
         <item name="switchBarMarginEnd">@dimen/switchbar_subsettings_margin_end</item>
-        <item name="switchBarBackgroundColor">?android:attr/colorBackground</item>
-    </style>
-
-    <style name="Theme.DialogWhenLarge" parent="@*android:style/Theme.DeviceDefault.Settings.DialogWhenLarge">
-        <!-- Redefine the ActionBar style for contentInsetStart -->
-        <item name="android:actionBarStyle">@style/Theme.ActionBar</item>
-
-        <item name="preferenceBackgroundColor">@drawable/preference_background</item>
+        <item name="switchBarBackgroundColor">?android:attr/colorSecondary</item>
     </style>
 
     <style name="Theme.CryptKeeper" parent="@android:style/Theme.Material.NoActionBar">
@@ -214,13 +207,6 @@
         <item name="*android:errorColor">@color/unlock_pattern_view_error_color</item>
     </style>
 
-    <style name="Theme.SubSettingsDialogWhenLarge" parent="Theme.DialogWhenLarge">
-        <item name="preferenceTheme">@style/PreferenceTheme</item>
-        <item name="android:actionBarWidgetTheme">@null</item>
-        <item name="android:actionBarTheme">@*android:style/ThemeOverlay.DeviceDefault.ActionBar.Accent</item>
-        <item name="preferenceBackgroundColor">@drawable/preference_background</item>
-    </style>
-
     <style name="ThemeOverlay.AlertDialog" parent="@android:style/ThemeOverlay.Material.Dialog.Alert">
         <item name="android:windowSoftInputMode">adjustResize</item>
     </style>
@@ -241,6 +227,7 @@
     </style>
 
     <style name="Theme.ConfirmDeviceCredentials" parent="Theme.SubSettings">
+        <item name="android:windowLightStatusBar">false</item>
         <item name="confirmDeviceCredentialsSideMargin">@dimen/confirm_credentials_side_margin</item>
         <item name="confirmDeviceCredentialsTopMargin">@dimen/confirm_credentials_top_margin</item>
     </style>
diff --git a/res/xml/accessibility_settings.xml b/res/xml/accessibility_settings.xml
index 8bb54c6..fb9e171 100644
--- a/res/xml/accessibility_settings.xml
+++ b/res/xml/accessibility_settings.xml
@@ -81,9 +81,8 @@
                 android:summary="@string/accessibility_toggle_master_mono_summary"
                 android:persistent="false"/>
 
-        <Preference
-                android:fragment="com.android.settings.accessibility.ToggleGlobalGesturePreferenceFragment"
-                android:key="enable_global_gesture_preference_screen"
+        <ListPreference
+                android:key="accessibility_shortcut_preference"
                 android:title="@string/accessibility_global_gesture_preference_title"/>
 
         <Preference
diff --git a/res/xml/accessibility_settings_for_setup_wizard.xml b/res/xml/accessibility_settings_for_setup_wizard.xml
index c938f24..42b137b 100644
--- a/res/xml/accessibility_settings_for_setup_wizard.xml
+++ b/res/xml/accessibility_settings_for_setup_wizard.xml
@@ -46,6 +46,13 @@
 
     <Preference
         android:fragment=
+                "com.android.settings.accessibility.ToggleSelectToSpeakPreferenceFragmentForSetupWizard"
+        android:key="select_to_speak_preference"
+        android:summary="@string/select_to_speak_summary"
+        android:persistent="true" />
+
+    <Preference
+        android:fragment=
                 "com.android.settings.accessibility.ToggleScreenReaderPreferenceFragmentForSetupWizard"
         android:key="screen_reader_preference"
         android:summary="@string/talkback_summary"
diff --git a/res/xml/advanced_apps.xml b/res/xml/advanced_apps.xml
deleted file mode 100644
index 0f9f82b..0000000
--- a/res/xml/advanced_apps.xml
+++ /dev/null
@@ -1,101 +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.
--->
-
-<PreferenceScreen
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
-    android:key="applications_settings">
-
-    <Preference
-        android:key="manage_perms"
-        android:title="@string/app_permissions"
-        settings:keywords="@string/keywords_app_permissions">
-        <intent android:action="android.intent.action.MANAGE_PERMISSIONS"/>
-    </Preference>
-
-    <PreferenceCategory
-        android:title="@string/default_apps_title">
-
-        <Preference
-            android:key="domain_urls"
-            android:title="@string/domain_urls_title"
-            android:fragment="com.android.settings.applications.ManageDomainUrls" />
-
-        <Preference
-            android:key="assist_and_voice_input"
-            android:fragment="com.android.settings.applications.ManageAssist"
-            android:title="@string/assist_and_voice_input_title" />
-
-        <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" />
-
-        <com.android.settings.applications.DefaultBrowserPreference
-            android:key="default_browser"
-            android:title="@string/default_browser_title"
-            android:summary="@string/default_browser_title_none" />
-
-        <com.android.settings.applications.DefaultPhonePreference
-            android:key="default_phone_app"
-            android:title="@string/default_phone_title"
-            settings:keywords="@string/keywords_default_phone_app" />
-
-        <com.android.settings.applications.DefaultEmergencyPreference
-            android:key="default_emergency_app"
-            android:title="@string/default_emergency_app"
-            settings:keywords="@string/keywords_emergency_app" />
-
-        <com.android.settings.applications.DefaultSmsPreference
-            android:key="default_sms_app"
-            android:title="@string/sms_application_title"
-            settings:keywords="@string/keywords_more_default_sms_app" />
-
-        <com.android.settings.applications.DefaultNotificationAssistantPreference
-            android:key="default_notification_asst_app"
-            android:title="@string/default_notification_assistant" />
-
-    </PreferenceCategory>
-
-    <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>
-
-    <PreferenceCategory
-        android:title="@string/advanced_apps">
-
-        <Preference
-            android:key="special_access"
-            android:fragment="com.android.settings.applications.SpecialAccessSettings"
-            android:title="@string/special_access" />
-
-    </PreferenceCategory>
-</PreferenceScreen>
diff --git a/res/xml/apn_editor.xml b/res/xml/apn_editor.xml
index a05d547..eac78e9 100644
--- a/res/xml/apn_editor.xml
+++ b/res/xml/apn_editor.xml
@@ -15,8 +15,7 @@
 -->
 
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
-        android:title="@string/apn_edit">
+                  android:title="@string/apn_edit">
     <EditTextPreference
         android:title="@string/apn_name"
         android:dialogTitle="@string/apn_name"
diff --git a/res/xml/app_default_settings.xml b/res/xml/app_default_settings.xml
index 5da5326..27200e7 100644
--- a/res/xml/app_default_settings.xml
+++ b/res/xml/app_default_settings.xml
@@ -17,7 +17,8 @@
 
 <PreferenceScreen
     xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
+    xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
+    android:title="@string/app_default_dashboard_title">
 
     <Preference
         android:key="assist_and_voice_input"
@@ -25,41 +26,53 @@
         android:fragment="com.android.settings.applications.ManageAssist"
         android:order="-20"/>
 
-    <com.android.settings.applications.DefaultBrowserPreference
+    <com.android.settings.applications.DefaultAutoFillPreference
+        android:key="default_autofill"
+        android:title="@string/autofill_app"
+        android:summary="@string/app_list_preference_none"
+        settings:keywords="@string/autofill_keywords"
+        android:order="-19"/>
+
+    <Preference
         android:key="default_browser"
         android:title="@string/default_browser_title"
         android:summary="@string/default_browser_title_none"
-        android:order="-19"/>
+        android:fragment="com.android.settings.applications.defaultapps.DefaultBrowserPicker"
+        android:order="-18">
+        <extra android:name="for_work" android:value="false"/>
+    </Preference>
 
-    <com.android.settings.applications.DefaultHomePreference
+    <Preference
         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"
+    <Preference
+        android:key="default_phone_app"
+        android:title="@string/default_phone_title"
+        android:fragment="com.android.settings.applications.defaultapps.DefaultPhonePicker"
+        settings:keywords="@string/keywords_default_phone_app"
         android:order="-16"/>
 
-    <com.android.settings.applications.DefaultEmergencyPreference
+    <Preference
+        android:key="default_sms_app"
+        android:title="@string/sms_application_title"
+        android:fragment="com.android.settings.applications.defaultapps.DefaultSmsPicker"
+        settings:keywords="@string/keywords_more_default_sms_app"
+        android:order="-15"/>
+
+    <Preference
         android:key="default_emergency_app"
         android:title="@string/default_emergency_app"
         settings:keywords="@string/keywords_emergency_app"
-        android:order="-15"/>
+        android:order="-14"/>
 
-    <com.android.settings.applications.DefaultNotificationAssistantPreference
+    <Preference
         android:key="default_notification_asst_app"
         android:title="@string/default_notification_assistant"
-        android:order="-14"/>
+        android:order="-13"/>
 
     <Preference
         android:key="domain_urls"
@@ -70,17 +83,21 @@
         android:key="work_defaults"
         android:title="@string/default_for_work">
 
-        <com.android.settings.applications.DefaultBrowserPreference
+        <Preference
             android:key="work_default_browser"
             android:title="@string/default_browser_title"
             android:summary="@string/default_browser_title_none"
-            settings:forWork="true"/>
+            android:fragment="com.android.settings.applications.defaultapps.DefaultBrowserPicker">
+            <extra android:name="for_work" android:value="true"/>
+        </Preference>
 
-        <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"/>
+        <Preference
+            android:key="work_default_phone_app_new"
+            android:title="new phone pref work"
+            android:fragment="com.android.settings.applications.defaultapps.DefaultPhonePicker"
+            settings:keywords="@string/keywords_default_phone_app">
+            <extra android:name="for_work" android:value="true"/>
+        </Preference>
 
     </com.android.settings.WorkOnlyCategory>
 
@@ -89,4 +106,4 @@
         android:fragment="com.android.settings.applications.SpecialAccessSettings"
         android:title="@string/special_access"/>
 
-</PreferenceScreen>
\ No newline at end of file
+</PreferenceScreen>
diff --git a/res/xml/app_notification_settings.xml b/res/xml/app_notification_settings.xml
index 82660dc..7d51fa8 100644
--- a/res/xml/app_notification_settings.xml
+++ b/res/xml/app_notification_settings.xml
@@ -23,6 +23,15 @@
         android:key="block"
         android:title="@string/app_notification_block_title"
         android:summary="@string/app_notification_block_summary"
+        android:order="1"
+        settings:useAdditionalSummary="true"
+        settings:restrictedSwitchSummary="@string/enabled_by_admin" />
+
+    <!-- Show badge -->
+    <com.android.settingslib.RestrictedSwitchPreference
+        android:key="badge"
+        android:title="@string/notification_badge_title"
+        android:summary="@string/notification_badge_summary"
         android:order="2"
         settings:useAdditionalSummary="true"
         settings:restrictedSwitchSummary="@string/enabled_by_admin" />
diff --git a/res/xml/app_picker_prefs.xml b/res/xml/app_picker_prefs.xml
new file mode 100644
index 0000000..9a921ee
--- /dev/null
+++ b/res/xml/app_picker_prefs.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2017 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<PreferenceScreen>
+
+</PreferenceScreen>
\ No newline at end of file
diff --git a/res/xml/channel_notification_settings.xml b/res/xml/channel_notification_settings.xml
index e1d6d55..4af9fe8 100644
--- a/res/xml/channel_notification_settings.xml
+++ b/res/xml/channel_notification_settings.xml
@@ -27,54 +27,55 @@
         settings:useAdditionalSummary="true"
         settings:restrictedSwitchSummary="@string/enabled_by_admin" />
 
+    <!-- Importance -->
+    <com.android.settings.notification.RestrictedDropDownPreference
+        android:key="importance"
+        android:title="@string/notification_importance_title"
+        android:order="2"/>
+
+    <!-- Default ringtone -->
+    <com.android.settings.notification.DefaultNotificationTonePreference
+        android:key="ringtone"
+        android:title="@string/notification_ringtone_title"
+        android:dialogTitle="@string/notification_ringtone_title"
+        android:order="3"
+        android:ringtoneType="notification" />
+
+    <!-- Vibration -->
+    <com.android.settingslib.RestrictedSwitchPreference
+        android:key="vibrate"
+        android:title="@string/notification_vibrate_title"
+        android:order="4"
+        settings:useAdditionalSummary="true" />
+
     <!-- Show badge -->
     <com.android.settingslib.RestrictedSwitchPreference
         android:key="badge"
         android:title="@string/notification_badge_title"
         android:summary="@string/notification_badge_summary"
-        android:order="3"
+        android:order="5"
         settings:useAdditionalSummary="true"
         settings:restrictedSwitchSummary="@string/enabled_by_admin" />
 
-    <!-- Importance -->
-    <com.android.settings.notification.RestrictedDropDownPreference
-            android:key="importance"
-            android:title="@string/notification_importance_title"
-            android:order="4"/>
+    <!-- Lights -->
+    <com.android.settingslib.RestrictedSwitchPreference
+        android:key="lights"
+        android:title="@string/notification_show_lights_title"
+        android:order="6"
+        settings:useAdditionalSummary="true" />
 
     <!-- Visibility Override -->
     <com.android.settings.notification.RestrictedDropDownPreference
             android:key="visibility_override"
             android:title="@string/app_notification_visibility_override_title"
-            android:order="5" />
+            android:order="7" />
 
     <!-- Bypass DND -->
     <com.android.settingslib.RestrictedSwitchPreference
             android:key="bypass_dnd"
             android:title="@string/app_notification_override_dnd_title"
             android:summary="@string/app_notification_override_dnd_summary"
-            android:order="6"
-            settings:useAdditionalSummary="true" />
-
-    <!-- Lights -->
-    <com.android.settingslib.RestrictedSwitchPreference
-            android:key="lights"
-            android:title="@string/notification_show_lights_title"
-            android:order="7"
-            settings:useAdditionalSummary="true" />
-
-    <!-- Vibration -->
-    <com.android.settingslib.RestrictedSwitchPreference
-            android:key="vibrate"
-            android:title="@string/notification_vibrate_title"
             android:order="8"
             settings:useAdditionalSummary="true" />
 
-    <!-- Default ringtone -->
-    <com.android.settings.notification.DefaultNotificationTonePreference
-            android:key="ringtone"
-            android:title="@string/notification_ringtone_title"
-            android:dialogTitle="@string/notification_ringtone_title"
-            android:order="9"
-            android:ringtoneType="notification" />
 </PreferenceScreen>
diff --git a/res/xml/connected_devices.xml b/res/xml/connected_devices.xml
index abf493f..d70cc33 100644
--- a/res/xml/connected_devices.xml
+++ b/res/xml/connected_devices.xml
@@ -18,6 +18,13 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:title="@string/connected_devices_dashboard_title">
 
+    <com.android.settings.widget.MasterSwitchPreference
+      android:fragment="com.android.settings.bluetooth.BluetoothSettings"
+      android:key="toggle_bluetooth"
+      android:title="@string/bluetooth_settings_title"
+      android:icon="@drawable/ic_settings_bluetooth"
+      android:order="-7"/>
+
     <SwitchPreference
         android:key="toggle_nfc"
         android:title="@string/nfc_quick_toggle_title"
diff --git a/res/xml/data_usage_cellular.xml b/res/xml/data_usage_cellular.xml
index 8bfd37d..a5aa316 100644
--- a/res/xml/data_usage_cellular.xml
+++ b/res/xml/data_usage_cellular.xml
@@ -15,7 +15,8 @@
 -->
 
 <PreferenceScreen
-    xmlns:android="http://schemas.android.com/apk/res/android">
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/data_usage_summary_title">
 
     <com.android.settings.datausage.TemplatePreferenceCategory
         android:key="mobile_category"
diff --git a/res/xml/data_usage_wifi.xml b/res/xml/data_usage_wifi.xml
index 62ff17f..ceb5fc8 100644
--- a/res/xml/data_usage_wifi.xml
+++ b/res/xml/data_usage_wifi.xml
@@ -15,7 +15,8 @@
 -->
 
 <PreferenceScreen
-    xmlns:android="http://schemas.android.com/apk/res/android">
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/data_usage_summary_title">
 
     <com.android.settings.datausage.TemplatePreferenceCategory
         android:key="wifi_category"
diff --git a/res/xml/development_prefs.xml b/res/xml/development_prefs.xml
index 3c2bab9..b8043c9 100644
--- a/res/xml/development_prefs.xml
+++ b/res/xml/development_prefs.xml
@@ -74,11 +74,9 @@
         android:title="@string/picture_color_mode"
         android:summary="@string/picture_color_mode_desc" />
 
-    <ListPreference
-        android:key="select_webview_provider"
+    <Preference android:key="select_webview_provider"
         android:title="@string/select_webview_provider_title"
-        android:dialogTitle="@string/select_webview_provider_dialog_title"
-        android:summary="%s" />
+        android:dialogTitle="@string/select_webview_provider_dialog_title" />
 
     <SwitchPreference
         android:key="enable_webview_multiprocess"
@@ -91,6 +89,10 @@
         android:summary="@string/color_temperature_desc" />
 
     <SwitchPreference
+        android:key="enable_hal_binderization"
+        android:title="@string/enable_hal_binderization" />
+
+    <SwitchPreference
         android:key="ota_disable_automatic_update"
         android:title="@string/ota_disable_automatic_update" />
 
diff --git a/res/xml/double_tap_power_settings.xml b/res/xml/double_tap_power_settings.xml
index 3376f3c..54854a8 100644
--- a/res/xml/double_tap_power_settings.xml
+++ b/res/xml/double_tap_power_settings.xml
@@ -16,7 +16,8 @@
   -->
 
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
-                  xmlns:app="http://schemas.android.com/apk/res-auto">
+                  xmlns:app="http://schemas.android.com/apk/res-auto"
+                  android:title="@string/double_tap_power_for_camera_title">
 
     <com.android.settings.widget.VideoPreference
         android:key="gesture_double_tap_power_video"
diff --git a/res/xml/double_tap_screen_settings.xml b/res/xml/double_tap_screen_settings.xml
index a76a487..f7fe853 100644
--- a/res/xml/double_tap_screen_settings.xml
+++ b/res/xml/double_tap_screen_settings.xml
@@ -16,7 +16,8 @@
   -->
 
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
-                  xmlns:app="http://schemas.android.com/apk/res-auto">
+                  xmlns:app="http://schemas.android.com/apk/res-auto"
+                  android:title="@string/ambient_display_title">
 
     <com.android.settings.widget.VideoPreference
         android:key="gesture_double_tap_screen_video"
diff --git a/res/xml/double_twist_gesture_settings.xml b/res/xml/double_twist_gesture_settings.xml
index e8d0abe..f77d778 100644
--- a/res/xml/double_twist_gesture_settings.xml
+++ b/res/xml/double_twist_gesture_settings.xml
@@ -16,7 +16,8 @@
   -->
 
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
-                  xmlns:app="http://schemas.android.com/apk/res-auto">
+                  xmlns:app="http://schemas.android.com/apk/res-auto"
+                  android:title="@string/double_twist_for_camera_mode_title">
 
     <com.android.settings.widget.VideoPreference
         android:key="gesture_double_twist_video"
diff --git a/res/xml/enterprise_privacy_settings.xml b/res/xml/enterprise_privacy_settings.xml
index 9fed938..cc63d5f 100644
--- a/res/xml/enterprise_privacy_settings.xml
+++ b/res/xml/enterprise_privacy_settings.xml
@@ -60,6 +60,26 @@
 
     <PreferenceCategory android:title="@string/enterprise_privacy_exposure_changes_category">
         <com.android.settings.DividerPreference
+                android:key="number_enterprise_installed_packages"
+                settings:allowDividerBelow="true"
+                settings:multiLine="true"/>
+        <com.android.settings.DividerPreference
+                android:key="enterprise_privacy_number_location_access_packages"
+                settings:allowDividerBelow="true"
+                settings:multiLine="true"/>
+        <com.android.settings.DividerPreference
+                android:key="enterprise_privacy_number_microphone_access_packages"
+                settings:allowDividerBelow="true"
+                settings:multiLine="true"/>
+        <com.android.settings.DividerPreference
+                android:key="enterprise_privacy_number_camera_access_packages"
+                settings:allowDividerBelow="true"
+                settings:multiLine="true"/>
+        <com.android.settings.DividerPreference
+                android:key="number_enterprise_set_default_apps"
+                settings:allowDividerBelow="true"
+                settings:multiLine="true"/>
+        <com.android.settings.DividerPreference
                 android:key="always_on_vpn_primary_user"
                 settings:allowDividerBelow="true"
                 settings:multiLine="true"/>
@@ -73,12 +93,18 @@
                 android:title="@string/enterprise_privacy_global_http_proxy"
                 settings:allowDividerBelow="true"
                 settings:multiLine="true"/>
-        <com.android.settings.DividerPreference
-                android:key="number_enterprise_installed_packages"
-                settings:allowDividerBelow="true"
-                settings:multiLine="true"/>
     </PreferenceCategory>
 
     <PreferenceCategory android:title="@string/enterprise_privacy_device_access_category">
+        <com.android.settings.DividerPreference
+                android:key="lock_device"
+                android:title="@string/enterprise_privacy_lock_device"
+                settings:allowDividerBelow="true"
+                settings:multiLine="true"/>
+        <com.android.settings.DividerPreference
+                android:key="wipe_device"
+                android:title="@string/enterprise_privacy_wipe_device"
+                settings:allowDividerBelow="true"
+                settings:multiLine="true"/>
     </PreferenceCategory>
 </PreferenceScreen>
diff --git a/res/xml/external_sources_details.xml b/res/xml/external_sources_details.xml
new file mode 100644
index 0000000..fb443f4
--- /dev/null
+++ b/res/xml/external_sources_details.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <SwitchPreference
+        android:key="external_sources_settings_switch" />
+
+    <Preference
+        android:key="external_sources_settings_description"
+        android:selectable="false" />
+
+</PreferenceScreen>
diff --git a/res/xml/ia_display_settings.xml b/res/xml/ia_display_settings.xml
index 946466b..ed026f1 100644
--- a/res/xml/ia_display_settings.xml
+++ b/res/xml/ia_display_settings.xml
@@ -105,6 +105,11 @@
                 android:title="@string/tap_to_wake"
                 android:summary="@string/tap_to_wake_summary" />
 
+        <ListPreference
+                android:key="theme"
+                android:title="@string/device_theme"
+                android:summary="%s" />
+
         <Preference
                 android:key="wifi_display"
                 android:title="@string/wifi_display_settings_title"
diff --git a/res/xml/ia_sound_settings.xml b/res/xml/ia_sound_settings.xml
new file mode 100644
index 0000000..e63db0d
--- /dev/null
+++ b/res/xml/ia_sound_settings.xml
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+                  xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
+          android:title="@string/sound_settings"
+          android:key="sound_settings"
+          settings:keywords="@string/keywords_sounds">
+
+        <!-- Media volume -->
+        <com.android.settings.notification.VolumeSeekBarPreference
+                android:key="media_volume"
+                android:icon="@*android:drawable/ic_audio_media"
+                android:title="@string/media_volume_option_title" />
+
+        <!-- Alarm volume -->
+        <com.android.settings.notification.VolumeSeekBarPreference
+                android:key="alarm_volume"
+                android:icon="@*android:drawable/ic_audio_alarm"
+                android:title="@string/alarm_volume_option_title" />
+
+        <!-- Ring volume -->
+        <com.android.settings.notification.VolumeSeekBarPreference
+                android:key="ring_volume"
+                android:icon="@*android:drawable/ic_audio_ring_notif"
+                android:title="@string/ring_volume_option_title" />
+
+        <!-- Notification volume -->
+        <com.android.settings.notification.VolumeSeekBarPreference
+                android:key="notification_volume"
+                android:icon="@*android:drawable/ic_audio_ring_notif"
+                android:title="@string/notification_volume_option_title" />
+
+        <!-- Also vibrate for calls -->
+        <SwitchPreference
+                android:key="vibrate_when_ringing"
+                android:title="@string/vibrate_when_ringing_title" />
+
+
+        <!-- Interruptions -->
+        <com.android.settingslib.RestrictedPreference
+                android:key="zen_mode"
+                android:title="@string/zen_mode_settings_title"
+                settings:useAdminDisabledSummary="true"
+                settings:keywords="@string/keywords_sounds_and_notifications_interruptions"
+                android:fragment="com.android.settings.notification.ZenModeSettings" />
+
+        <PreferenceCategory
+          android:key="ringtones_preferecence_category"
+          android:title="@string/ringtones_category_preference_title" />
+
+        <!-- Phone ringtone -->
+        <com.android.settings.DefaultRingtonePreference
+                android:key="ringtone"
+                android:title="@string/ringtone_title"
+                android:dialogTitle="@string/ringtone_title"
+                android:summary="@string/ringtone_summary"
+                android:ringtoneType="ringtone" />
+
+        <!-- Default notification ringtone -->
+        <com.android.settings.DefaultRingtonePreference
+                android:key="notification_ringtone"
+                android:title="@string/notification_ringtone_title"
+                android:dialogTitle="@string/notification_ringtone_title"
+                android:summary="@string/ringtone_summary"
+                android:ringtoneType="notification" />
+
+        <!-- Default alarm ringtone -->
+        <com.android.settings.DefaultRingtonePreference
+                android:key="alarm_ringtone"
+                android:title="@string/alarm_ringtone_title"
+                android:dialogTitle="@string/alarm_ringtone_title"
+                android:summary="@string/ringtone_summary"
+                android:persistent="false"
+                android:ringtoneType="alarm" />
+
+        <!-- Other sounds -->
+        <PreferenceCategory
+          android:key="other_sound_preferecence_category"
+          android:title="@string/other_sound_category_preference_title" />
+
+        <!-- Dial pad tones -->
+        <SwitchPreference
+          android:key="dial_pad_tones"
+          android:title="@string/dial_pad_tones_title" />
+
+        <!-- Screen locking sounds -->
+        <SwitchPreference
+          android:key="screen_locking_sounds"
+          android:title="@string/screen_locking_sounds_title" />
+
+        <!-- Charging sounds -->
+        <SwitchPreference
+          android:key="charging_sounds"
+          android:title="@string/charging_sounds_title" />
+
+        <!-- Docking sounds -->
+        <SwitchPreference
+          android:key="docking_sounds"
+          android:title="@string/docking_sounds_title" />
+
+        <!-- Touch sounds -->
+        <SwitchPreference
+          android:key="touch_sounds"
+          android:title="@string/touch_sounds_title" />
+
+        <!-- Vibrate on touch -->
+        <SwitchPreference
+          android:key="vibrate_on_touch"
+          android:title="@string/vibrate_on_touch_title" />
+
+        <!-- Dock speaker plays -->
+        <DropDownPreference
+          android:key="dock_audio_media"
+          android:title="@string/dock_audio_media_title"
+          android:summary="%s" />
+
+        <!-- Boot sounds -->
+        <SwitchPreference
+          android:key="boot_sounds"
+          android:title="@string/boot_sounds_title" />
+
+        <!-- Emergency tone -->
+        <DropDownPreference
+          android:key="emergency_tone"
+          android:title="@string/emergency_tone_title"
+          android:summary="%s" />
+
+        <com.android.settingslib.RestrictedPreference
+          android:key="cell_broadcast_settings"
+          android:title="@string/cell_broadcast_settings"
+          settings:useAdminDisabledSummary="true">
+                <intent
+                  android:action="android.intent.action.MAIN"
+                  android:targetPackage="com.android.cellbroadcastreceiver"
+                  android:targetClass="com.android.cellbroadcastreceiver.CellBroadcastSettings" />
+        </com.android.settingslib.RestrictedPreference>
+
+</PreferenceScreen>
diff --git a/res/xml/input_and_gesture.xml b/res/xml/input_and_gesture.xml
index c30178b..9abc797 100644
--- a/res/xml/input_and_gesture.xml
+++ b/res/xml/input_and_gesture.xml
@@ -15,7 +15,9 @@
   limitations under the License.
   -->
 
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/input_gesture_settings_title">
 
     <PreferenceCategory
         android:title="@string/keyboard_and_input_methods_category">
diff --git a/res/xml/location_settings.xml b/res/xml/location_settings.xml
index 1abf9be..ecce221 100644
--- a/res/xml/location_settings.xml
+++ b/res/xml/location_settings.xml
@@ -34,6 +34,11 @@
             android:enabled="false"
             android:selectable="true" />
 
+        <!-- This preference category gets removed if new_recent_location_ui is disabled -->
+        <Preference
+            android:key="app_level_permissions"
+            android:title="@string/location_app_level_permissions" />
+
         <com.android.settings.DividedCategory
             android:key="recent_location_requests"
             android:title="@string/location_category_recent_location_requests" />
diff --git a/res/xml/network_and_internet.xml b/res/xml/network_and_internet.xml
index dc2efd8..7c41498 100644
--- a/res/xml/network_and_internet.xml
+++ b/res/xml/network_and_internet.xml
@@ -19,12 +19,23 @@
     xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
     android:title="@string/network_dashboard_title">
 
+    <com.android.settings.widget.MasterSwitchPreference
+        android:fragment="com.android.settings.wifi.WifiSettings"
+        android:key="toggle_wifi"
+        android:title="@string/wifi_settings"
+        android:icon="@drawable/ic_settings_wireless"
+        android:order="-30">
+        <intent
+          android:action="android.settings.WIFI_SETTINGS"
+          android:targetClass="Settings$WifiSettingsActivity" />
+    </com.android.settings.widget.MasterSwitchPreference>
+
     <SwitchPreference
         android:key="toggle_airplane"
         android:title="@string/airplane_mode"
         android:icon="@drawable/ic_airplanemode_active"
         android:disableDependentsState="true"
-        android:order="-30"/>
+        android:order="5"/>
 
     <com.android.settingslib.RestrictedPreference
         android:key="mobile_network_settings"
diff --git a/res/xml/pick_up_gesture_settings.xml b/res/xml/pick_up_gesture_settings.xml
index 6b67e64..78122aa 100644
--- a/res/xml/pick_up_gesture_settings.xml
+++ b/res/xml/pick_up_gesture_settings.xml
@@ -17,7 +17,8 @@
 
 <PreferenceScreen
     xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:title="@string/ambient_display_pickup_title">
 
     <com.android.settings.widget.VideoPreference
         android:key="gesture_pick_up_video"
diff --git a/res/xml/power_usage_summary.xml b/res/xml/power_usage_summary.xml
index 1ae0a44..b4ac7e2 100644
--- a/res/xml/power_usage_summary.xml
+++ b/res/xml/power_usage_summary.xml
@@ -14,20 +14,43 @@
      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/power_usage_summary_title"
-        settings:keywords="@string/keywords_battery">
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
+    android:title="@string/power_usage_summary_title"
+    settings:keywords="@string/keywords_battery">
 
-        <com.android.settings.fuelgauge.BatterySaverPreference
+    <com.android.settings.fuelgauge.BatteryHistoryPreference
+        android:key="battery_history"/>
+
+    <PreferenceCategory
+        android:key="power_management"
+        android:title="@string/battery_power_management">
+
+        <com.android.settings.widget.MasterSwitchPreference
+            android:key="battery_saver"
             android:title="@string/battery_saver"
-            android:fragment="com.android.settings.fuelgauge.BatterySaverSettings" />
+            android:fragment="com.android.settings.fuelgauge.BatterySaverSettings"/>
 
-        <com.android.settings.fuelgauge.BatteryHistoryPreference
-            android:key="battery_history" />
+        <!-- Cross-listed item, if you change this, also change it in ia_display_settings.xml -->
+        <SwitchPreference
+            android:key="auto_brightness"
+            android:title="@string/auto_brightness_title"
+            android:summary="@string/auto_brightness_summary"
+            settings:keywords="@string/keywords_display_auto_brightness"/>
 
-        <PreferenceCategory
-            android:key="app_list"
-            android:title="@string/power_usage_list_summary" />
+        <!-- Cross-listed item, if you change this, also change it in ia_display_settings.xml -->
+        <com.android.settings.TimeoutListPreference
+            android:key="screen_timeout"
+            android:title="@string/screen_timeout"
+            android:summary="@string/screen_timeout_summary"
+            android:entries="@array/screen_timeout_entries"
+            android:entryValues="@array/screen_timeout_values"/>
+
+    </PreferenceCategory>
+
+    <PreferenceCategory
+        android:key="app_list"
+        android:title="@string/power_usage_list_summary"/>
 
 </PreferenceScreen>
diff --git a/res/xml/privacy_settings.xml b/res/xml/privacy_settings.xml
index eeef64c..715f33b 100644
--- a/res/xml/privacy_settings.xml
+++ b/res/xml/privacy_settings.xml
@@ -50,13 +50,4 @@
         android:enabled="false"
         android:selectable="false" />
 
-    <!-- Factory reset -->
-    <com.android.settingslib.RestrictedPreference
-        android:key="factory_reset"
-        android:title="@string/master_clear_title"
-        settings:keywords="@string/keywords_factory_data_reset"
-        settings:userRestriction="no_factory_reset"
-        settings:useAdminDisabledSummary="true"
-        android:fragment="com.android.settings.MasterClear" />
-
 </PreferenceScreen>
diff --git a/res/xml/security_settings_status.xml b/res/xml/security_settings_status.xml
new file mode 100644
index 0000000..06930f9
--- /dev/null
+++ b/res/xml/security_settings_status.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+                  android:title="@string/security_settings_title">
+
+    <PreferenceCategory
+        android:key="security_status"
+        android:title="@string/security_status_title"/>
+
+</PreferenceScreen>
diff --git a/res/xml/special_access.xml b/res/xml/special_access.xml
index 4de167a..8bf5c56 100644
--- a/res/xml/special_access.xml
+++ b/res/xml/special_access.xml
@@ -16,7 +16,8 @@
 
 <PreferenceScreen
         xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
+        xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
+        android:title="@string/special_access">
 
     <Preference
         android:key="high_power_apps"
@@ -74,6 +75,11 @@
         android:fragment="com.android.settings.notification.NotificationAccessSettings" />
 
     <Preference
+        android:key="picture_in_picture"
+        android:title="@string/picture_in_picture_title"
+        android:fragment="com.android.settings.applications.PictureInPictureSettings"
+        settings:keywords="@string/picture_in_picture_keywords" />
+    <Preference
         android:key="premium_sms"
         android:title="@string/premium_sms_access"
         android:fragment="com.android.settings.applications.PremiumSmsAccess" />
@@ -92,4 +98,15 @@
             android:name="classname"
             android:value="com.android.settings.Settings$UsageAccessSettingsActivity" />
     </Preference>
+
+    <Preference
+        android:key="manage_external_sources"
+        android:title="@string/install_other_apps"
+        android:fragment="com.android.settings.applications.ManageApplications"
+        settings:keywords="@string/keywords_install_other_apps">
+        <extra
+            android:name="classname"
+            android:value="com.android.settings.Settings$ManageExternalSourcesActivity" />
+    </Preference>
+
 </PreferenceScreen>
diff --git a/res/xml/swipe_to_notification_settings.xml b/res/xml/swipe_to_notification_settings.xml
index a4dedfb..b26af38 100644
--- a/res/xml/swipe_to_notification_settings.xml
+++ b/res/xml/swipe_to_notification_settings.xml
@@ -16,7 +16,8 @@
   -->
 
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
-                  xmlns:app="http://schemas.android.com/apk/res-auto">
+                  xmlns:app="http://schemas.android.com/apk/res-auto"
+                  android:title="@string/fingerprint_swipe_for_notifications_title">
 
     <com.android.settings.widget.VideoPreference
         android:key="gesture_swipe_down_fingerprint_video"
diff --git a/res/xml/system_dashboard_fragment.xml b/res/xml/system_dashboard_fragment.xml
index 3ad1c61..14579c5 100644
--- a/res/xml/system_dashboard_fragment.xml
+++ b/res/xml/system_dashboard_fragment.xml
@@ -16,6 +16,7 @@
 
 <PreferenceScreen
     xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
     android:title="@string/header_category_system">
 
     <!-- System updates -->
@@ -37,4 +38,14 @@
                 android:targetClass="@string/additional_system_update_menu"/>
     </Preference>
 
+    <!-- Factory reset -->
+    <com.android.settingslib.RestrictedPreference
+        android:key="factory_reset"
+        android:title="@string/device_reset_title"
+        android:icon="@drawable/ic_restore"
+        android:order="-20"
+        settings:keywords="@string/keywords_factory_data_reset"
+        settings:userRestriction="no_factory_reset"
+        settings:useAdminDisabledSummary="true"
+        android:fragment="com.android.settings.MasterClear" />
 </PreferenceScreen>
\ No newline at end of file
diff --git a/res/xml/tts_engine_picker.xml b/res/xml/tts_engine_picker.xml
new file mode 100644
index 0000000..61e3e7e
--- /dev/null
+++ b/res/xml/tts_engine_picker.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+        android:title="@string/tts_settings_title">
+
+    <PreferenceCategory android:key="tts_engine_preference_category"
+        android:title="@string/tts_engine_preference_title"/>
+
+</PreferenceScreen>
diff --git a/res/xml/tts_engine_settings.xml b/res/xml/tts_engine_settings.xml
deleted file mode 100644
index d00c102..0000000
--- a/res/xml/tts_engine_settings.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:title="">
-    <ListPreference
-        android:key="tts_default_lang"
-        android:title="@string/tts_default_lang_title"
-        android:summary="@string/tts_default_lang_summary"
-        android:order="100" />
-
-    <Preference
-        android:key="tts_engine_settings"
-        android:persistent="false"
-        android:title="@string/tts_engine_settings_title"
-        android:order="200" />
-
-    <Preference
-        android:key="tts_install_data"
-        android:persistent="false"
-        android:title="@string/tts_install_data_title"
-        android:summary="@string/tts_install_data_summary"
-        android:order="300" />
-</PreferenceScreen>
diff --git a/res/xml/tts_settings.xml b/res/xml/tts_settings.xml
index 31d2b17..b02a749 100644
--- a/res/xml/tts_settings.xml
+++ b/res/xml/tts_settings.xml
@@ -17,38 +17,40 @@
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
         android:title="@string/tts_settings_title">
 
-    <!-- The contents of this category are filled in by the Java code
-         based on the list of available engines. -->
-    <PreferenceCategory android:key="tts_engine_preference_section"
-        android:title="@string/tts_engine_preference_section_title" />
+    <PreferenceCategory android:key="tts_engine_section"
+         android:title="@string/tts_engine_section_title">
+
+    <com.android.settingslib.RestrictedPreference android:key="tts_engine_preference"
+        android:title="@string/tts_engine_preference_title"
+        android:fragment="com.android.settings.tts.TtsEnginePreferenceFragment"/>
+
+    <Preference
+        android:key="tts_engine_settings"
+        android:persistent="false"
+        android:title="@string/tts_engine_settings_title"
+        android:order="200" />
+
+    <Preference
+        android:key="tts_install_data"
+        android:persistent="false"
+        android:title="@string/tts_install_voice_title"
+        android:order="300" />
+
+    </PreferenceCategory>
 
     <PreferenceCategory android:key="tts_general_section"
          android:title="@string/tts_general_section_title">
-        <!-- The max value for seek bars here should be kept in sync
-             with the max value specified in TextToSpeechSettings class. -->
-        <com.android.settings.SeekBarPreference
-            android:key="tts_default_rate"
-            android:title="@string/tts_default_rate_title"
-            android:summary="@string/tts_default_rate_summary"
-            android:defaultValue="50"
-            android:max="600"/>
 
-        <com.android.settings.SeekBarPreference
-            android:key="tts_default_pitch"
-            android:title="@string/tts_default_pitch_title"
-            android:summary="@string/tts_default_pitch_summary"
-            android:defaultValue="100"
-            android:max="400"/>
+    <com.android.settingslib.RestrictedPreference
+        android:key="tts_sliders"
+        android:title="@string/tts_sliders_title"
+        android:fragment="com.android.settings.tts.TtsSlidersFragment"/>
 
-        <Preference android:key="reset_speech_rate"
-            android:persistent="false"
-            android:title="@string/tts_reset_speech_rate_title"
-            android:summary="@string/tts_reset_speech_rate_summary" />
-
-        <Preference android:key="reset_speech_pitch"
-            android:persistent="false"
-            android:title="@string/tts_reset_speech_pitch_title"
-            android:summary="@string/tts_reset_speech_pitch_summary" />
+        <ListPreference
+            android:key="tts_default_lang"
+            android:title="@string/tts_default_lang_title"
+            android:summary="@string/tts_default_lang_summary"
+            android:persistent="false" />
 
         <Preference android:key="tts_play_example"
             android:persistent="false"
diff --git a/res/xml/tts_sliders.xml b/res/xml/tts_sliders.xml
new file mode 100644
index 0000000..3c767b0
--- /dev/null
+++ b/res/xml/tts_sliders.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+        android:title="@string/tts_settings_title">
+
+        <!-- The max value for seek bars here should be kept in sync
+             with the max value specified in TextToSpeechSettings class. -->
+        <com.android.settings.SeekBarPreference
+            android:key="tts_default_rate"
+            android:title="@string/tts_default_rate_title"
+            android:summary="@string/tts_default_rate_summary"
+            android:defaultValue="50"
+            android:max="600"/>
+
+        <com.android.settings.SeekBarPreference
+            android:key="tts_default_pitch"
+            android:title="@string/tts_default_pitch_title"
+            android:summary="@string/tts_default_pitch_summary"
+            android:defaultValue="100"
+            android:max="400"/>
+
+        <Preference android:key="reset_speech_rate"
+            android:persistent="false"
+            android:title="@string/tts_reset_speech_rate_title"
+            android:summary="@string/tts_reset_speech_rate_summary" />
+
+        <Preference android:key="reset_speech_pitch"
+            android:persistent="false"
+            android:title="@string/tts_reset_speech_pitch_title"
+            android:summary="@string/tts_reset_speech_pitch_summary" />
+
+</PreferenceScreen>
diff --git a/res/xml/wifi_configure_settings.xml b/res/xml/wifi_configure_settings.xml
index a43ea87..1e04749 100644
--- a/res/xml/wifi_configure_settings.xml
+++ b/res/xml/wifi_configure_settings.xml
@@ -17,11 +17,6 @@
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
         android:title="@string/wifi_configure_titlebar">
 
-    <Preference
-        android:key="saved_networks"
-        android:title="@string/wifi_saved_access_points_label"
-        android:fragment="com.android.settings.wifi.SavedAccessPointsWifiSettings" />
-
     <!-- android:dependency="enable_wifi" -->
     <ListPreference
         android:key="sleep_policy"
diff --git a/res/xml/wifi_settings.xml b/res/xml/wifi_settings.xml
index b4ab126..15743ea 100644
--- a/res/xml/wifi_settings.xml
+++ b/res/xml/wifi_settings.xml
@@ -14,14 +14,23 @@
      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"
+<PreferenceScreen
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
         android:title="@string/wifi_settings"
         settings:keywords="@string/keywords_wifi">
 
-    <!-- Needed so PreferenceGroupAdapter allows AccessPointPreference to be
-         recycled. Removed in onResume -->
-    <com.android.settings.wifi.LongPressAccessPointPreference
-        android:key="dummy" />
+    <PreferenceCategory android:key="access_points"/>
 
+    <PreferenceCategory android:key="additional_settings">
+        <Preference
+                android:key="configure_settings"
+                android:title="@string/wifi_configure_settings_preference_title"
+                android:fragment="com.android.settings.wifi.ConfigureWifiSettings" />
+
+        <Preference
+                android:key="saved_networks"
+                android:title="@string/wifi_saved_access_points_label"
+                android:fragment="com.android.settings.wifi.SavedAccessPointsWifiSettings" />
+    </PreferenceCategory>
 </PreferenceScreen>
diff --git a/src/com/android/settings/AppListPreference.java b/src/com/android/settings/AppListPreference.java
index 1fe0c13..8585454 100644
--- a/src/com/android/settings/AppListPreference.java
+++ b/src/com/android/settings/AppListPreference.java
@@ -49,7 +49,11 @@
  * Extends ListPreference to allow us to show the icons for a given list of applications. We do this
  * because the names of applications are very similar and the user may not be able to determine what
  * app they are selecting without an icon.
+ *
+ * @deprecated Selecting app from a list should be done in full UI. Use DefaultAppPickerFragment
+ * instead.
  */
+@Deprecated
 public class AppListPreference extends CustomListPreference {
 
     public static final String ITEM_NONE_VALUE = "";
@@ -57,6 +61,8 @@
     protected final boolean mForWork;
     protected final int mUserId;
 
+
+    private boolean mSavesState = true;
     private Drawable[] mEntryDrawables;
     private boolean mShowItemNone = false;
     private CharSequence[] mSummaries;
@@ -126,6 +132,10 @@
                 : UserHandle.myUserId();
     }
 
+    public void setSavesState(boolean savesState) {
+        mSavesState = savesState;
+    }
+
     public void setShowItemNone(boolean showItemNone) {
         mShowItemNone = showItemNone;
     }
@@ -257,12 +267,16 @@
     @Override
     protected Parcelable onSaveInstanceState() {
         Parcelable superState = super.onSaveInstanceState();
-        return new SavedState(getEntryValues(), getValue(), mSummaries, mShowItemNone, superState);
+        if (mSavesState) {
+            return new SavedState(getEntryValues(), getValue(), mSummaries, mShowItemNone, superState);
+        } else {
+            return superState;
+        }
     }
 
     @Override
     protected void onRestoreInstanceState(Parcelable state) {
-        if (state instanceof SavedState) {
+        if (mSavesState || state instanceof SavedState) {
             SavedState savedState = (SavedState) state;
             mShowItemNone = savedState.showItemNone;
             setPackageNames(savedState.entryValues, savedState.value);
diff --git a/src/com/android/settings/AppListSwitchPreference.java b/src/com/android/settings/AppListSwitchPreference.java
deleted file mode 100644
index 007f243..0000000
--- a/src/com/android/settings/AppListSwitchPreference.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package com.android.settings;
-
-import android.content.Context;
-import android.support.v7.preference.PreferenceViewHolder;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.widget.Checkable;
-
-/**
- * A hybrid of AppListPreference and SwitchPreference, representing a preference which can be on or
- * off but must have a selected value when turned on.
- *
- * It is invalid to show this preference when zero valid apps are present.
- */
-public class AppListSwitchPreference extends AppListPreference {
-    private static final String TAG = "AppListSwitchPref";
-
-    private Checkable mSwitch;
-
-    public AppListSwitchPreference(Context context, AttributeSet attrs) {
-        super(context, attrs, 0, R.style.AppListSwitchPreference);
-    }
-
-    @Override
-    public void onBindViewHolder(PreferenceViewHolder view) {
-        super.onBindViewHolder(view);
-        mSwitch = (Checkable) view.findViewById(com.android.internal.R.id.switch_widget);
-        mSwitch.setChecked(getValue() != null);
-    }
-
-    @Override
-    protected void onClick() {
-        if (getValue() != null) {
-            // Turning off the current value.
-            if (callChangeListener(null)) {
-                setValue(null);
-            }
-        } else if (getEntryValues() == null || getEntryValues().length == 0) {
-            Log.e(TAG, "Attempting to show dialog with zero entries: " + getKey());
-        } else if (getEntryValues().length == 1) {
-            // Suppress the dialog and just toggle the preference with the only choice.
-            String value = getEntryValues()[0].toString();
-            if (callChangeListener(value)) {
-                setValue(value);
-            }
-        } else {
-            super.onClick();
-        }
-    }
-
-    @Override
-    public void setValue(String value) {
-        super.setValue(value);
-        if (mSwitch != null) {
-            mSwitch.setChecked(value != null);
-        }
-    }
-}
diff --git a/src/com/android/settings/ConfirmDeviceCredentialBaseFragment.java b/src/com/android/settings/ConfirmDeviceCredentialBaseFragment.java
index 5aa66bb..cabc805 100644
--- a/src/com/android/settings/ConfirmDeviceCredentialBaseFragment.java
+++ b/src/com/android/settings/ConfirmDeviceCredentialBaseFragment.java
@@ -90,9 +90,6 @@
         final UserManager userManager = UserManager.get(getActivity());
         mEffectiveUserId = userManager.getCredentialOwnerProfile(mUserId);
         mLockPatternUtils = new LockPatternUtils(getActivity());
-        mIsStrongAuthRequired = isFingerprintDisallowedByStrongAuth();
-        mAllowFpAuthentication = mAllowFpAuthentication && !isFingerprintDisabledByAdmin()
-                && !mReturnCredentials && !mIsStrongAuthRequired;
     }
 
     @Override
@@ -141,6 +138,10 @@
     @Override
     public void onResume() {
         super.onResume();
+        mIsStrongAuthRequired = isFingerprintDisallowedByStrongAuth();
+        mAllowFpAuthentication = getActivity().getIntent().getBooleanExtra(
+                        ALLOW_FP_AUTHENTICATION, false)
+                && !isFingerprintDisabledByAdmin() && !mReturnCredentials && !mIsStrongAuthRequired;
         refreshLockScreen();
     }
 
diff --git a/src/com/android/settings/CreateShortcut.java b/src/com/android/settings/CreateShortcut.java
index 7cd6748..726bf0a 100644
--- a/src/com/android/settings/CreateShortcut.java
+++ b/src/com/android/settings/CreateShortcut.java
@@ -17,15 +17,21 @@
 package com.android.settings;
 
 import android.app.LauncherActivity;
+import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.ActivityInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
+import android.content.pm.ShortcutInfo;
+import android.content.pm.ShortcutManager;
 import android.graphics.Bitmap;
 import android.graphics.Bitmap.Config;
 import android.graphics.Canvas;
+import android.graphics.drawable.Icon;
 import android.net.ConnectivityManager;
+import android.os.AsyncTask;
+import android.support.annotation.VisibleForTesting;
 import android.view.ContextThemeWrapper;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -35,34 +41,52 @@
 
 import com.android.settings.Settings.TetherSettingsActivity;
 
+import java.util.ArrayList;
 import java.util.List;
 
 public class CreateShortcut extends LauncherActivity {
 
+    @VisibleForTesting
+    static final String SHORTCUT_ID_PREFIX = "component-shortcut-";
+
     @Override
     protected Intent getTargetIntent() {
-        Intent targetIntent = new Intent(Intent.ACTION_MAIN, null);
-        targetIntent.addCategory("com.android.settings.SHORTCUT");
-        targetIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        return targetIntent;
+        return getBaseIntent().addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
     }
 
     @Override
     protected void onListItemClick(ListView l, View v, int position, long id) {
-        Intent shortcutIntent = intentForPosition(position);
+        ListItem item = itemForPosition(position);
+        setResult(RESULT_OK, createResultIntent(intentForPosition(position),
+                item.resolveInfo, item.label));
+        finish();
+    }
+
+    protected Intent createResultIntent(Intent shortcutIntent, ResolveInfo resolveInfo,
+            CharSequence label) {
         shortcutIntent.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
-        Intent intent = new Intent();
+
+        ActivityInfo activityInfo = resolveInfo.activityInfo;
+        Bitmap icon = activityInfo.icon != 0 ? createIcon(activityInfo.icon) : null;
+
+        String shortcutId = SHORTCUT_ID_PREFIX +
+                shortcutIntent.getComponent().flattenToShortString();
+        ShortcutInfo info = new ShortcutInfo.Builder(this, shortcutId)
+                .setShortLabel(label)
+                .setIntent(shortcutIntent)
+                .setIcon(icon != null ? Icon.createWithBitmap(icon) :
+                        Icon.createWithResource(this, R.mipmap.ic_launcher_settings))
+                .build();
+        Intent intent = getSystemService(ShortcutManager.class).createShortcutResultIntent(info);
+        if (intent == null) {
+            intent = new Intent();
+        }
         intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
                 Intent.ShortcutIconResource.fromContext(this, R.mipmap.ic_launcher_settings));
         intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
-        intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, itemForPosition(position).label);
-        ResolveInfo resolveInfo = itemForPosition(position).resolveInfo;
-        ActivityInfo activityInfo = resolveInfo.activityInfo;
-        if (activityInfo.icon != 0) {
-            intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, createIcon(activityInfo.icon));
-        }
-        setResult(RESULT_OK, intent);
-        finish();
+        intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, label);
+        intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, icon);
+        return intent;
     }
 
     private Bitmap createIcon(int resource) {
@@ -110,4 +134,43 @@
         }
         return activities;
     }
+
+    @VisibleForTesting
+    static Intent getBaseIntent() {
+        return new Intent(Intent.ACTION_MAIN).addCategory("com.android.settings.SHORTCUT");
+    }
+
+    public static class ShortcutsUpdateTask extends AsyncTask<Void, Void, Void> {
+
+        private final Context mContext;
+
+        public ShortcutsUpdateTask(Context context) {
+            mContext = context;
+        }
+
+        @Override
+        public Void doInBackground(Void... params) {
+            ShortcutManager sm = mContext.getSystemService(ShortcutManager.class);
+            PackageManager pm = mContext.getPackageManager();
+
+            List<ShortcutInfo> updates = new ArrayList<>();
+            for (ShortcutInfo info : sm.getPinnedShortcuts()) {
+                if (!info.getId().startsWith(SHORTCUT_ID_PREFIX)) {
+                    continue;
+                }
+                ComponentName cn = ComponentName.unflattenFromString(
+                        info.getId().substring(SHORTCUT_ID_PREFIX.length()));
+                ResolveInfo ri = pm.resolveActivity(getBaseIntent().setComponent(cn), 0);
+                if (ri == null) {
+                    continue;
+                }
+                updates.add(new ShortcutInfo.Builder(mContext, info.getId())
+                    .setShortLabel(ri.loadLabel(pm)).build());
+            }
+            if (!updates.isEmpty()) {
+                sm.updateShortcuts(updates);
+            }
+            return null;
+        }
+    }
 }
diff --git a/src/com/android/settings/CredentialStorage.java b/src/com/android/settings/CredentialStorage.java
index f228f3e..20de9a2 100644
--- a/src/com/android/settings/CredentialStorage.java
+++ b/src/com/android/settings/CredentialStorage.java
@@ -47,6 +47,7 @@
 import com.android.internal.widget.LockPatternUtils;
 import com.android.org.bouncycastle.asn1.ASN1InputStream;
 import com.android.org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
+import com.android.settings.vpn2.VpnUtils;
 
 import sun.security.util.ObjectIdentifier;
 import sun.security.x509.AlgorithmId;
@@ -361,6 +362,7 @@
             if (success) {
                 Toast.makeText(CredentialStorage.this,
                                R.string.credentials_erased, Toast.LENGTH_SHORT).show();
+                clearLegacyVpnIfEstablished();
             } else {
                 Toast.makeText(CredentialStorage.this,
                                R.string.credentials_not_erased, Toast.LENGTH_SHORT).show();
@@ -369,6 +371,14 @@
         }
     }
 
+    private void clearLegacyVpnIfEstablished() {
+        boolean isDone = VpnUtils.disconnectLegacyVpn(getApplicationContext());
+        if (isDone) {
+            Toast.makeText(CredentialStorage.this, R.string.vpn_disconnected,
+                    Toast.LENGTH_SHORT).show();
+        }
+    }
+
     /**
      * Prompt for key guard configuration confirmation.
      */
diff --git a/src/com/android/settings/DateTimeSettings.java b/src/com/android/settings/DateTimeSettings.java
index fc47fef..326f200 100644
--- a/src/com/android/settings/DateTimeSettings.java
+++ b/src/com/android/settings/DateTimeSettings.java
@@ -56,11 +56,6 @@
     }
 
     @Override
-    protected String getCategoryKey() {
-        return null;
-    }
-
-    @Override
     protected String getLogTag() {
         return TAG;
     }
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index 49eb1b0..2c50c5f 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -78,7 +78,7 @@
 import android.view.ViewGroup;
 import android.view.accessibility.AccessibilityManager;
 import android.webkit.IWebViewUpdateService;
-import android.webkit.WebViewProviderInfo;
+import android.webkit.WebViewFactory;
 import android.widget.Switch;
 import android.widget.Toast;
 
@@ -92,6 +92,7 @@
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.search.Indexable;
+import com.android.settings.webview.WebViewAppPreferenceController;
 import com.android.settings.widget.SwitchBar;
 import com.android.settingslib.RestrictedLockUtils;
 import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
@@ -126,7 +127,6 @@
     private static final String ENABLE_TERMINAL = "enable_terminal";
     private static final String KEEP_SCREEN_ON = "keep_screen_on";
     private static final String BT_HCI_SNOOP_LOG = "bt_hci_snoop_log";
-    private static final String WEBVIEW_PROVIDER_KEY = "select_webview_provider";
     private static final String WEBVIEW_MULTIPROCESS_KEY = "enable_webview_multiprocess";
     private static final String ENABLE_OEM_UNLOCK = "oem_unlock_enable";
     private static final String HDCP_CHECKING_KEY = "hdcp_checking";
@@ -227,9 +227,12 @@
     private static final String KEY_CONVERT_FBE = "convert_to_file_encryption";
 
     private static final String OTA_DISABLE_AUTOMATIC_UPDATE_KEY = "ota_disable_automatic_update";
+    private static final String ENABLE_HAL_BINDERIZATION_KEY = "enable_hal_binderization";
+    private static final String ENABLE_HAL_BINDERIZATION_PROPERTY = "persist.hal.binderization";
 
     private static final int RESULT_DEBUG_APP = 1000;
     private static final int RESULT_MOCK_LOCATION_APP = 1001;
+    private static final int RESULT_WEBVIEW_APP = 1002;
 
     private static final String PERSISTENT_DATA_BLOCK_PROP = "ro.frp.pst";
     private static final String FLASH_LOCKED_PROP = "ro.boot.flash.locked";
@@ -287,6 +290,7 @@
     private ListPreference mBluetoothSelectA2dpLdacPlaybackQuality;
 
     private SwitchPreference mOtaDisableAutomaticUpdate;
+    private SwitchPreference mEnableHalBinderization;
     private SwitchPreference mWifiAllowScansWithTraffic;
     private SwitchPreference mStrictMode;
     private SwitchPreference mPointerLocation;
@@ -310,8 +314,8 @@
     private ListPreference mAnimatorDurationScale;
     private ListPreference mOverlayDisplayDevices;
 
+    private WebViewAppPreferenceController mWebViewAppPrefController;
     private SwitchPreference mWebViewMultiprocess;
-    private ListPreference mWebViewProvider;
 
     private ListPreference mSimulateColorSpace;
 
@@ -371,8 +375,7 @@
         mWindowManager = IWindowManager.Stub.asInterface(ServiceManager.getService("window"));
         mBackupManager = IBackupManager.Stub.asInterface(
                 ServiceManager.getService(Context.BACKUP_SERVICE));
-        mWebViewUpdateService =
-                IWebViewUpdateService.Stub.asInterface(ServiceManager.getService("webviewupdate"));
+        mWebViewUpdateService = WebViewFactory.getUpdateService();
         mOemUnlockManager = (PersistentDataBlockManager) getActivity()
                 .getSystemService(Context.PERSISTENT_DATA_BLOCK_SERVICE);
         mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
@@ -384,6 +387,7 @@
 
         mBugReportController = new BugReportPreferenceController(getActivity());
         mBugReportInPowerController = new BugReportInPowerPreferenceController(getActivity());
+        mWebViewAppPrefController = new WebViewAppPreferenceController(getActivity());
 
         setIfOnlyAvailableForAdmins(true);
         if (isUiRestricted() || !Utils.isDeviceProvisioned(getActivity())) {
@@ -414,6 +418,7 @@
 
         mBugReportController.displayPreference(getPreferenceScreen());
         mBugReportInPowerController.displayPreference(getPreferenceScreen());
+        mWebViewAppPrefController.displayPreference(getPreferenceScreen());
 
         mKeepScreenOn = (RestrictedSwitchPreference) findAndInitSwitchPref(KEEP_SCREEN_ON);
         mBtHciSnoopLog = findAndInitSwitchPref(BT_HCI_SNOOP_LOG);
@@ -483,7 +488,6 @@
             mLogpersist = null;
         }
         mUsbConfiguration = addListPreference(USB_CONFIGURATION_KEY);
-        mWebViewProvider = addListPreference(WEBVIEW_PROVIDER_KEY);
         mWebViewMultiprocess = findAndInitSwitchPref(WEBVIEW_MULTIPROCESS_KEY);
         mBluetoothDisableAbsVolume = findAndInitSwitchPref(BLUETOOTH_DISABLE_ABSOLUTE_VOLUME_KEY);
 
@@ -538,13 +542,14 @@
 
         mOtaDisableAutomaticUpdate = findAndInitSwitchPref(OTA_DISABLE_AUTOMATIC_UPDATE_KEY);
 
+        mEnableHalBinderization = findAndInitSwitchPref(ENABLE_HAL_BINDERIZATION_KEY);
+
         mColorModePreference = (ColorModePreference) findPreference(KEY_COLOR_MODE);
         mColorModePreference.updateCurrentAndSupported();
         if (mColorModePreference.getColorModeCount() < 2) {
             removePreference(KEY_COLOR_MODE);
             mColorModePreference = null;
         }
-        updateWebViewProviderOptions();
 
         mColorTemperaturePreference = (SwitchPreference) findPreference(COLOR_TEMPERATURE_KEY);
         if (getResources().getBoolean(R.bool.config_enableColorTemperature)) {
@@ -629,6 +634,7 @@
             pref.setEnabled(enabled && !mDisabledPrefs.contains(pref));
         }
         mBugReportInPowerController.enablePreference(enabled);
+        mWebViewAppPrefController.enablePreference(enabled);
         updateAllOptions();
     }
 
@@ -781,6 +787,7 @@
         updateShowAllANRsOptions();
         updateVerifyAppsOverUsbOptions();
         updateOtaDisableAutomaticUpdateOptions();
+        updateEnableHalBinderizationOptions();
         updateBugreportOptions();
         updateForceRtlOptions();
         updateLogdSizeValues();
@@ -793,8 +800,8 @@
         updateSimulateColorSpace();
         updateUSBAudioOptions();
         updateForceResizableOptions();
+        mWebViewAppPrefController.updateState(null);
         updateWebViewMultiprocessOptions();
-        updateWebViewProviderOptions();
         updateOemUnlockOptions();
         if (mColorTemperaturePreference != null) {
             updateColorTemperature();
@@ -831,54 +838,17 @@
         pokeSystemProperties();
     }
 
-    private void updateWebViewProviderOptions() {
+    private void updateWebViewMultiprocessOptions() {
         try {
-            WebViewProviderInfo[] providers = mWebViewUpdateService.getValidWebViewPackages();
-            if (providers == null) {
-                Log.e(TAG, "No WebView providers available");
-                return;
-            }
-            ArrayList<String> options = new ArrayList<String>();
-            ArrayList<String> values = new ArrayList<String>();
-            for (int n = 0; n < providers.length; n++) {
-                if (Utils.isPackageEnabled(getActivity(), providers[n].packageName)) {
-                    options.add(providers[n].description);
-                    values.add(providers[n].packageName);
-                }
-            }
-            mWebViewProvider.setEntries(options.toArray(new String[options.size()]));
-            mWebViewProvider.setEntryValues(values.toArray(new String[values.size()]));
-
-            String value = mWebViewUpdateService.getCurrentWebViewPackageName();
-            if (value == null) {
-                value = "";
-            }
-
-            for (int i = 0; i < values.size(); i++) {
-                if (value.contentEquals(values.get(i))) {
-                    mWebViewProvider.setValueIndex(i);
-                    return;
-                }
-            }
+            updateSwitchPreference(mWebViewMultiprocess,
+                                   mWebViewUpdateService.isMultiProcessEnabled());
         } catch (RemoteException e) {
         }
     }
 
-    private void updateWebViewMultiprocessOptions() {
-        updateSwitchPreference(mWebViewMultiprocess,
-                Settings.Global.getInt(getActivity().getContentResolver(),
-                        Settings.Global.WEBVIEW_MULTIPROCESS, 0) != 0);
-    }
-
     private void writeWebViewMultiprocessOptions() {
-        boolean value = mWebViewMultiprocess.isChecked();
-        Settings.Global.putInt(getActivity().getContentResolver(),
-                Settings.Global.WEBVIEW_MULTIPROCESS, value ? 1 : 0);
-
         try {
-            String wv_package = mWebViewUpdateService.getCurrentWebViewPackageName();
-            ActivityManager.getService().killPackageDependents(
-                    wv_package, UserHandle.USER_ALL);
+            mWebViewUpdateService.enableMultiProcess(mWebViewMultiprocess.isChecked());
         } catch (RemoteException e) {
         }
     }
@@ -922,17 +892,6 @@
                 mBtHciSnoopLog.isChecked() ? 1 : 0);
     }
 
-    private boolean writeWebViewProviderOptions(Object newValue) {
-        try {
-            String updatedProvider = mWebViewUpdateService.changeProviderAndSetting(
-                    newValue == null ? "" : newValue.toString());
-            updateWebViewProviderOptions();
-            return newValue != null && newValue.equals(updatedProvider);
-        } catch (RemoteException e) {
-        }
-        return false;
-    }
-
     private void writeDebuggerOptions() {
         try {
             ActivityManager.getService().setDebugApp(
@@ -1072,6 +1031,17 @@
                 mOtaDisableAutomaticUpdate.isChecked() ? 0 : 1);
     }
 
+    private void updateEnableHalBinderizationOptions() {
+        updateSwitchPreference(mEnableHalBinderization,
+                SystemProperties.getBoolean(ENABLE_HAL_BINDERIZATION_PROPERTY, false));
+    }
+
+    private void writeEnableHalBinderizationOptions() {
+        SystemProperties.set(ENABLE_HAL_BINDERIZATION_PROPERTY,
+                             mEnableHalBinderization.isChecked() ? "true" : "false");
+        pokeSystemProperties();
+    }
+
     private boolean enableVerifierSetting() {
         final ContentResolver cr = getActivity().getContentResolver();
         if (Settings.Global.getInt(cr, Settings.Global.ADB_ENABLED, 0) == 0) {
@@ -1783,49 +1753,50 @@
 
     private void initBluetoothConfigurationValues() {
         String[] values;
-        String[] titles;
+        String[] summaries;
         int index;
 
         // Init the Codec Type - Default
         values = getResources().getStringArray(R.array.bluetooth_a2dp_codec_values);
-        titles = getResources().getStringArray(R.array.bluetooth_a2dp_codec_titles);
+        summaries = getResources().getStringArray(R.array.bluetooth_a2dp_codec_summaries);
         index = 0;
         mBluetoothSelectA2dpCodec.setValue(values[index]);
-        mBluetoothSelectA2dpCodec.setSummary(titles[index]);
+        mBluetoothSelectA2dpCodec.setSummary(summaries[index]);
 
         // Init the Sample Rate - Default
         values = getResources().getStringArray(R.array.bluetooth_a2dp_codec_sample_rate_values);
-        titles = getResources().getStringArray(R.array.bluetooth_a2dp_codec_sample_rate_titles);
+        summaries = getResources().getStringArray(R.array.bluetooth_a2dp_codec_sample_rate_summaries);
         index = 0;
         mBluetoothSelectA2dpSampleRate.setValue(values[index]);
-        mBluetoothSelectA2dpSampleRate.setSummary(titles[index]);
+        mBluetoothSelectA2dpSampleRate.setSummary(summaries[index]);
 
         // Init the Bits Per Sample - Default
         values = getResources().getStringArray(R.array.bluetooth_a2dp_codec_bits_per_sample_values);
-        titles = getResources().getStringArray(R.array.bluetooth_a2dp_codec_bits_per_sample_titles);
+        summaries = getResources().getStringArray(R.array.bluetooth_a2dp_codec_bits_per_sample_summaries);
         index = 0;
         mBluetoothSelectA2dpBitsPerSample.setValue(values[index]);
-        mBluetoothSelectA2dpBitsPerSample.setSummary(titles[index]);
+        mBluetoothSelectA2dpBitsPerSample.setSummary(summaries[index]);
 
         // Init the Channel Mode - Default
         values = getResources().getStringArray(R.array.bluetooth_a2dp_codec_channel_mode_values);
-        titles = getResources().getStringArray(R.array.bluetooth_a2dp_codec_channel_mode_titles);
+        summaries = getResources().getStringArray(R.array.bluetooth_a2dp_codec_channel_mode_summaries);
         index = 0;
         mBluetoothSelectA2dpChannelMode.setValue(values[index]);
-        mBluetoothSelectA2dpChannelMode.setSummary(titles[index]);
+        mBluetoothSelectA2dpChannelMode.setSummary(summaries[index]);
 
         // Init the LDAC Playback Quality - High
         values = getResources().getStringArray(R.array.bluetooth_a2dp_codec_ldac_playback_quality_values);
-        titles = getResources().getStringArray(R.array.bluetooth_a2dp_codec_ldac_playback_quality_titles);
+        summaries = getResources().getStringArray(R.array.bluetooth_a2dp_codec_ldac_playback_quality_summaries);
         index = 0;
         mBluetoothSelectA2dpLdacPlaybackQuality.setValue(values[index]);
-        mBluetoothSelectA2dpLdacPlaybackQuality.setSummary(titles[index]);
+        mBluetoothSelectA2dpLdacPlaybackQuality.setSummary(summaries[index]);
     }
 
     private void updateBluetoothA2dpConfigurationValues() {
         int index;
-        String[] titles;
+        String[] summaries;
         BluetoothCodecConfig codecConfig = null;
+        String streaming;
 
         synchronized (mBluetoothA2dpLock) {
             if (mBluetoothA2dp != null) {
@@ -1841,22 +1812,26 @@
         case BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC:
             index = 1;
             break;
-        case BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX:
+        case BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC:
             index = 2;
             break;
-        case BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX_HD:
+        case BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX:
             index = 3;
             break;
-        case BluetoothCodecConfig.SOURCE_CODEC_TYPE_LDAC:
+        case BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX_HD:
             index = 4;
             break;
+        case BluetoothCodecConfig.SOURCE_CODEC_TYPE_LDAC:
+            index = 5;
+            break;
         case BluetoothCodecConfig.SOURCE_CODEC_TYPE_INVALID:
         default:
             break;
         }
         if (index >= 0) {
-            titles = getResources().getStringArray(R.array.bluetooth_a2dp_codec_titles);
-            mBluetoothSelectA2dpCodec.setSummary("Streaming: " + titles[index]);
+            summaries = getResources().getStringArray(R.array.bluetooth_a2dp_codec_summaries);
+            streaming = getResources().getString(R.string.bluetooth_select_a2dp_codec_streaming_label, summaries[index]);
+            mBluetoothSelectA2dpCodec.setSummary(streaming);
         }
 
         // Update the Sample Rate
@@ -1881,8 +1856,9 @@
             break;
         }
         if (index >= 0) {
-            titles = getResources().getStringArray(R.array.bluetooth_a2dp_codec_sample_rate_titles);
-            mBluetoothSelectA2dpSampleRate.setSummary("Streaming: " + titles[index]);
+            summaries = getResources().getStringArray(R.array.bluetooth_a2dp_codec_sample_rate_summaries);
+            streaming = getResources().getString(R.string.bluetooth_select_a2dp_codec_streaming_label, summaries[index]);
+             mBluetoothSelectA2dpSampleRate.setSummary(streaming);
         }
 
         // Update the Bits Per Sample
@@ -1902,8 +1878,9 @@
             break;
         }
         if (index >= 0) {
-            titles = getResources().getStringArray(R.array.bluetooth_a2dp_codec_bits_per_sample_titles);
-            mBluetoothSelectA2dpBitsPerSample.setSummary("Streaming: " + titles[index]);
+            summaries = getResources().getStringArray(R.array.bluetooth_a2dp_codec_bits_per_sample_summaries);
+            streaming = getResources().getString(R.string.bluetooth_select_a2dp_codec_streaming_label, summaries[index]);
+            mBluetoothSelectA2dpBitsPerSample.setSummary(streaming);
         }
 
         // Update the Channel Mode
@@ -1920,34 +1897,41 @@
             break;
         }
         if (index >= 0) {
-            titles = getResources().getStringArray(R.array.bluetooth_a2dp_codec_channel_mode_titles);
-            mBluetoothSelectA2dpChannelMode.setSummary("Streaming: " + titles[index]);
+            summaries = getResources().getStringArray(R.array.bluetooth_a2dp_codec_channel_mode_summaries);
+            streaming = getResources().getString(R.string.bluetooth_select_a2dp_codec_streaming_label, summaries[index]);
+             mBluetoothSelectA2dpChannelMode.setSummary(streaming);
         }
 
         // Update the LDAC Playback Quality
-        index = -1;
-        switch ((int)codecConfig.getCodecSpecific1()) {
-        case 1000:
-            index = 0;
-            break;
-        case 1001:
-            index = 1;
-            break;
-        case 1002:
-            index = 2;
+        // The actual values are 0, 1, 2 - those are extracted
+        // as mod-10 remainders of a larger value.
+        // The reason is because within BluetoothCodecConfig we cannot use
+        // a codec-specific value of zero.
+        index = (int)codecConfig.getCodecSpecific1();
+        if (index > 0) {
+            index %= 10;
+        } else {
+            index = -1;
+        }
+        switch (index) {
+        case 0:
+        case 1:
+        case 2:
             break;
         default:
+            index = -1;
             break;
         }
         if (index >= 0) {
-            titles = getResources().getStringArray(R.array.bluetooth_a2dp_codec_ldac_playback_quality_titles);
-            mBluetoothSelectA2dpLdacPlaybackQuality.setSummary("Streaming: " + titles[index]);
+            summaries = getResources().getStringArray(R.array.bluetooth_a2dp_codec_ldac_playback_quality_summaries);
+            streaming = getResources().getString(R.string.bluetooth_select_a2dp_codec_streaming_label, summaries[index]);
+            mBluetoothSelectA2dpLdacPlaybackQuality.setSummary(streaming);
         }
     }
 
     private void writeBluetoothConfigurationOption(Preference preference,
                                                    Object newValue) {
-        String[] titles;
+        String[] summaries;
         int index;
         int codecTypeValue = BluetoothCodecConfig.SOURCE_CODEC_TYPE_INVALID;
         int codecPriorityValue = BluetoothCodecConfig.CODEC_PRIORITY_DEFAULT;
@@ -1965,8 +1949,8 @@
             codecType = newValue.toString();
             index = mBluetoothSelectA2dpCodec.findIndexOfValue(newValue.toString());
             if (index >= 0) {
-                titles = getResources().getStringArray(R.array.bluetooth_a2dp_codec_titles);
-                mBluetoothSelectA2dpCodec.setSummary(titles[index]);
+                summaries = getResources().getStringArray(R.array.bluetooth_a2dp_codec_summaries);
+                mBluetoothSelectA2dpCodec.setSummary(summaries[index]);
             }
         }
         index = mBluetoothSelectA2dpCodec.findIndexOfValue(codecType);
@@ -1981,12 +1965,15 @@
                 codecTypeValue = BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC;
                 break;
             case 2:
-                codecTypeValue = BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX;
+                codecTypeValue = BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC;
                 break;
             case 3:
-                codecTypeValue = BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX_HD;
+                codecTypeValue = BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX;
                 break;
             case 4:
+                codecTypeValue = BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX_HD;
+                break;
+            case 5:
                 codecTypeValue = BluetoothCodecConfig.SOURCE_CODEC_TYPE_LDAC;
                 break;
             default:
@@ -1998,14 +1985,18 @@
             codecPriorityValue = BluetoothCodecConfig.CODEC_PRIORITY_HIGHEST;
             break;
         case 2:
-            codecTypeValue = BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX;
+            codecTypeValue = BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC;
             codecPriorityValue = BluetoothCodecConfig.CODEC_PRIORITY_HIGHEST;
             break;
         case 3:
-            codecTypeValue = BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX_HD;
+            codecTypeValue = BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX;
             codecPriorityValue = BluetoothCodecConfig.CODEC_PRIORITY_HIGHEST;
             break;
         case 4:
+            codecTypeValue = BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX_HD;
+            codecPriorityValue = BluetoothCodecConfig.CODEC_PRIORITY_HIGHEST;
+            break;
+        case 5:
             codecTypeValue = BluetoothCodecConfig.SOURCE_CODEC_TYPE_LDAC;
             codecPriorityValue = BluetoothCodecConfig.CODEC_PRIORITY_HIGHEST;
             break;
@@ -2019,8 +2010,8 @@
             sampleRate = newValue.toString();
             index = mBluetoothSelectA2dpSampleRate.findIndexOfValue(newValue.toString());
             if (index >= 0) {
-                titles = getResources().getStringArray(R.array.bluetooth_a2dp_codec_sample_rate_titles);
-                mBluetoothSelectA2dpSampleRate.setSummary(titles[index]);
+                summaries = getResources().getStringArray(R.array.bluetooth_a2dp_codec_sample_rate_summaries);
+                mBluetoothSelectA2dpSampleRate.setSummary(summaries[index]);
             }
         }
         index = mBluetoothSelectA2dpSampleRate.findIndexOfValue(sampleRate);
@@ -2050,8 +2041,8 @@
             bitsPerSample = newValue.toString();
             index = mBluetoothSelectA2dpBitsPerSample.findIndexOfValue(newValue.toString());
             if (index >= 0) {
-                titles = getResources().getStringArray(R.array.bluetooth_a2dp_codec_bits_per_sample_titles);
-                mBluetoothSelectA2dpBitsPerSample.setSummary(titles[index]);
+                summaries = getResources().getStringArray(R.array.bluetooth_a2dp_codec_bits_per_sample_summaries);
+                mBluetoothSelectA2dpBitsPerSample.setSummary(summaries[index]);
             }
         }
         index = mBluetoothSelectA2dpBitsPerSample.findIndexOfValue(bitsPerSample);
@@ -2078,8 +2069,8 @@
             channelMode = newValue.toString();
             index = mBluetoothSelectA2dpChannelMode.findIndexOfValue(newValue.toString());
             if (index >= 0) {
-                titles = getResources().getStringArray(R.array.bluetooth_a2dp_codec_channel_mode_titles);
-                mBluetoothSelectA2dpChannelMode.setSummary(titles[index]);
+                summaries = getResources().getStringArray(R.array.bluetooth_a2dp_codec_channel_mode_summaries);
+                mBluetoothSelectA2dpChannelMode.setSummary(summaries[index]);
             }
         }
         index = mBluetoothSelectA2dpChannelMode.findIndexOfValue(channelMode);
@@ -2103,20 +2094,16 @@
             ldacPlaybackQuality = newValue.toString();
             index = mBluetoothSelectA2dpLdacPlaybackQuality.findIndexOfValue(newValue.toString());
             if (index >= 0) {
-                titles = getResources().getStringArray(R.array.bluetooth_a2dp_codec_ldac_playback_quality_titles);
-                mBluetoothSelectA2dpLdacPlaybackQuality.setSummary(titles[index]);
+                summaries = getResources().getStringArray(R.array.bluetooth_a2dp_codec_ldac_playback_quality_summaries);
+                mBluetoothSelectA2dpLdacPlaybackQuality.setSummary(summaries[index]);
             }
         }
         index = mBluetoothSelectA2dpLdacPlaybackQuality.findIndexOfValue(ldacPlaybackQuality);
         switch (index) {
         case 0:
-            codecSpecific1Value = 1000;
-            break;
         case 1:
-            codecSpecific1Value = 1001;
-            break;
         case 2:
-            codecSpecific1Value = 1002;
+            codecSpecific1Value = 1000 + index;
             break;
         default:
             break;
@@ -2324,6 +2311,8 @@
                 writeMockLocation();
                 updateMockLocation();
             }
+        } else if (requestCode == RESULT_WEBVIEW_APP) {
+            mWebViewAppPrefController.onActivityResult(resultCode, data);
         } else if (requestCode == REQUEST_CODE_ENABLE_OEM_UNLOCK) {
             if (resultCode == Activity.RESULT_OK) {
                 if (mEnableOemUnlock.isChecked()) {
@@ -2346,6 +2335,10 @@
         if (mBugReportInPowerController.handlePreferenceTreeClick(preference)) {
             return true;
         }
+        if (mWebViewAppPrefController.handlePreferenceTreeClick(preference)) {
+            startActivityForResult(
+                    mWebViewAppPrefController.getActivityIntent(), RESULT_WEBVIEW_APP);
+        }
 
         if (preference == mEnableAdb) {
             if (mEnableAdb.isChecked()) {
@@ -2416,6 +2409,8 @@
             writeVerifyAppsOverUsbOptions();
         } else if (preference == mOtaDisableAutomaticUpdate) {
             writeOtaDisableAutomaticUpdateOptions();
+        } else if (preference == mEnableHalBinderization) {
+            writeEnableHalBinderizationOptions();
         } else if (preference == mStrictMode) {
             writeStrictModeVisualOptions();
         } else if (preference == mPointerLocation) {
@@ -2499,21 +2494,6 @@
             updateHdcpValues();
             pokeSystemProperties();
             return true;
-        } else if (preference == mWebViewProvider) {
-            if (newValue == null) {
-                Log.e(TAG, "Tried to set a null WebView provider");
-                return false;
-            }
-            if (writeWebViewProviderOptions(newValue)) {
-                return true;
-            } else {
-                // The user chose a package that became invalid since the list was last updated,
-                // show a Toast to explain the situation.
-                Toast toast = Toast.makeText(getActivity(),
-                        R.string.select_webview_provider_toast_text, Toast.LENGTH_SHORT);
-                toast.show();
-            }
-            return false;
         } else if ((preference == mBluetoothSelectA2dpCodec) ||
                    (preference == mBluetoothSelectA2dpSampleRate) ||
                    (preference == mBluetoothSelectA2dpBitsPerSample) ||
diff --git a/src/com/android/settings/DeviceAdminAdd.java b/src/com/android/settings/DeviceAdminAdd.java
index 14d42c0..d6a072c 100644
--- a/src/com/android/settings/DeviceAdminAdd.java
+++ b/src/com/android/settings/DeviceAdminAdd.java
@@ -58,6 +58,9 @@
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.core.instrumentation.MetricsFeatureProvider;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.users.UserDialogs;
 
 import org.xmlpull.v1.XmlPullParserException;
@@ -395,6 +398,7 @@
 
     void addAndFinish() {
         try {
+            logSpecialPermissionChange(true, mDeviceAdmin.getComponent().getPackageName());
             mDPM.setActiveAdmin(mDeviceAdmin.getComponent(), mRefreshing);
             EventLog.writeEvent(EventLogTags.EXP_DET_DEVICE_ADMIN_ACTIVATED_BY_USER,
                 mDeviceAdmin.getActivityInfo().applicationInfo.uid);
@@ -429,6 +433,7 @@
                 ActivityManager.getService().resumeAppSwitches();
             } catch (RemoteException e) {
             }
+            logSpecialPermissionChange(false, mDeviceAdmin.getComponent().getPackageName());
             mDPM.removeActiveAdmin(mDeviceAdmin.getComponent());
             finish();
         } else {
@@ -444,6 +449,12 @@
         }
     }
 
+    void logSpecialPermissionChange(boolean allow, String packageName) {
+        int logCategory = allow ? MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_ADMIN_ALLOW :
+                MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_ADMIN_DENY;
+        FeatureFactory.getFactory(this).getMetricsFeatureProvider().action(this, logCategory, packageName);
+    }
+
     @Override
     protected void onResume() {
         super.onResume();
diff --git a/src/com/android/settings/DisplaySettings.java b/src/com/android/settings/DisplaySettings.java
index 91b193d..320cb83 100644
--- a/src/com/android/settings/DisplaySettings.java
+++ b/src/com/android/settings/DisplaySettings.java
@@ -35,6 +35,7 @@
 import com.android.settings.display.NightModePreferenceController;
 import com.android.settings.display.ScreenSaverPreferenceController;
 import com.android.settings.display.TapToWakePreferenceController;
+import com.android.settings.display.ThemePreferenceController;
 import com.android.settings.display.TimeoutPreferenceController;
 import com.android.settings.display.VrDisplayPreferenceController;
 import com.android.settings.display.WallpaperPreferenceController;
@@ -68,11 +69,6 @@
     }
 
     @Override
-    protected String getCategoryKey() {
-        return CategoryKey.CATEGORY_DISPLAY;
-    }
-
-    @Override
     protected int getPreferenceScreenResId() {
         if (mDashboardFeatureProvider.isEnabled()) {
             return R.xml.ia_display_settings;
@@ -97,6 +93,7 @@
         controllers.add(new TimeoutPreferenceController(context));
         controllers.add(new VrDisplayPreferenceController(context));
         controllers.add(new WallpaperPreferenceController(context));
+        controllers.add(new ThemePreferenceController(context));
         return controllers;
     }
 
@@ -182,6 +179,7 @@
                     new TimeoutPreferenceController(context).updateNonIndexableKeys(result);
                     new VrDisplayPreferenceController(context).updateNonIndexableKeys(result);
                     new WallpaperPreferenceController(context).updateNonIndexableKeys(result);
+                    new ThemePreferenceController(context).updateNonIndexableKeys(result);
 
                     return result;
                 }
diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java
index b092857..436745f 100644
--- a/src/com/android/settings/SecuritySettings.java
+++ b/src/com/android/settings/SecuritySettings.java
@@ -25,6 +25,7 @@
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.DialogInterface;
+import android.content.IContentProvider;
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
@@ -38,6 +39,7 @@
 import android.provider.Settings;
 import android.security.KeyStore;
 import android.service.trust.TrustAgentService;
+import android.support.annotation.VisibleForTesting;
 import android.support.v14.preference.SwitchPreference;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.Preference.OnPreferenceChangeListener;
@@ -49,6 +51,7 @@
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
+import android.util.ArrayMap;
 import android.util.Log;
 
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
@@ -56,6 +59,7 @@
 import com.android.settings.TrustAgentUtils.TrustAgentComponentInfo;
 import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 import com.android.settings.dashboard.DashboardFeatureProvider;
+import com.android.settings.dashboard.SummaryLoader;
 import com.android.settings.fingerprint.FingerprintSettings;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.search.BaseSearchIndexProvider;
@@ -63,12 +67,14 @@
 import com.android.settings.search.Indexable;
 import com.android.settings.search.SearchIndexableRaw;
 import com.android.settings.security.SecurityFeatureProvider;
+import com.android.settings.trustagent.TrustAgentManager;
 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 com.android.settingslib.drawer.TileUtils;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -120,6 +126,15 @@
     private static final String KEY_TRUST_AGENT = "trust_agent";
     private static final String KEY_SCREEN_PINNING = "screen_pinning_settings";
 
+    // Security status
+    private static final String KEY_SECURITY_STATUS = "security_status";
+    private static final String SECURITY_STATUS_KEY_PREFIX = "security_status_";
+
+    // Package verifier Settings
+    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    static final String KEY_PACKAGE_VERIFIER_STATUS = "security_status_package_verifier";
+    private static final int PACKAGE_VERIFIER_STATE_ENABLED = 1;
+
     // These switch preferences need special handling since they're not all stored in Settings.
     private static final String SWITCH_PREFERENCE_KEYS[] = {
             KEY_SHOW_PASSWORD, KEY_TOGGLE_INSTALL_APPLICATIONS, KEY_UNIFICATION,
@@ -134,6 +149,7 @@
     private DashboardFeatureProvider mDashboardFeatureProvider;
     private DevicePolicyManager mDPM;
     private SecurityFeatureProvider mSecurityFeatureProvider;
+    private TrustAgentManager mTrustAgentManager;
     private SubscriptionManager mSubscriptionManager;
     private UserManager mUm;
 
@@ -189,6 +205,8 @@
 
         mSecurityFeatureProvider = FeatureFactory.getFactory(activity).getSecurityFeatureProvider();
 
+        mTrustAgentManager = mSecurityFeatureProvider.getTrustAgentManager();
+
         if (savedInstanceState != null
                 && savedInstanceState.containsKey(TRUST_AGENT_CLICK_INTENT)) {
             mTrustAgentClickIntent = savedInstanceState.getParcelable(TRUST_AGENT_CLICK_INTENT);
@@ -247,6 +265,9 @@
         addPreferencesFromResource(R.xml.security_settings);
         root = getPreferenceScreen();
 
+        // Add category for security status
+        addPreferencesFromResource(R.xml.security_settings_status);
+
         // Add options for lock/unlock screen
         final int resid = getResIdForLockUnlockScreen(getActivity(), mLockPatternUtils,
                 mManagedPasswordProvider, MY_USER_ID);
@@ -414,18 +435,39 @@
         Index.getInstance(getActivity())
                 .updateFromClassNameResource(SecuritySettings.class.getName(), true, true);
 
-        final List<Preference> tilePrefs = mDashboardFeatureProvider.getPreferencesForCategory(
-                getActivity(), getPrefContext(), CategoryKey.CATEGORY_SECURITY);
-        if (tilePrefs != null && !tilePrefs.isEmpty()) {
-            for (Preference preference : tilePrefs) {
-                root.addPreference(preference);
+        PreferenceGroup securityStatusPreferenceGroup =
+                (PreferenceGroup) root.findPreference(KEY_SECURITY_STATUS);
+        if (mDashboardFeatureProvider.isEnabled()) {
+            final List<Preference> tilePrefs = mDashboardFeatureProvider.getPreferencesForCategory(
+                    getActivity(), getPrefContext(), CategoryKey.CATEGORY_SECURITY);
+            int numSecurityStatusPrefs = 0;
+            if (tilePrefs != null && !tilePrefs.isEmpty()) {
+                for (Preference preference : tilePrefs) {
+                    if (!TextUtils.isEmpty(preference.getKey())
+                            && preference.getKey().startsWith(SECURITY_STATUS_KEY_PREFIX)) {
+                        // Injected security status settings are placed under the Security status
+                        // category.
+                        securityStatusPreferenceGroup.addPreference(preference);
+                        numSecurityStatusPrefs++;
+                    } else {
+                        // Other injected settings are placed under the Security preference screen.
+                        root.addPreference(preference);
+                    }
+                }
             }
-        }
 
-        // Update preference data with tile data. Security feature provider only updates the data
-        // if it actually needs to be changed.
-        mSecurityFeatureProvider.updatePreferences(getActivity(), root,
-                mDashboardFeatureProvider.getTilesForCategory(CategoryKey.CATEGORY_SECURITY));
+            if (numSecurityStatusPrefs == 0) {
+                root.removePreference(securityStatusPreferenceGroup);
+            } else if (numSecurityStatusPrefs > 0) {
+                // Update preference data with tile data. Security feature provider only updates the
+                // data if it actually needs to be changed.
+                mSecurityFeatureProvider.updatePreferences(getActivity(), root,
+                        mDashboardFeatureProvider.getTilesForCategory(
+                                CategoryKey.CATEGORY_SECURITY));
+            }
+        } else {
+            root.removePreference(root.findPreference(KEY_SECURITY_STATUS));
+        }
 
         for (int i = 0; i < SWITCH_PREFERENCE_KEYS.length; i++) {
             final Preference pref = findPreference(SWITCH_PREFERENCE_KEYS[i]);
@@ -460,8 +502,8 @@
 
     private void addTrustAgentSettings(PreferenceGroup securityCategory) {
         final boolean hasSecurity = mLockPatternUtils.isSecure(MY_USER_ID);
-        ArrayList<TrustAgentComponentInfo> agents =
-                getActiveTrustAgents(getActivity(), mLockPatternUtils, mDPM);
+        ArrayList<TrustAgentComponentInfo> agents = getActiveTrustAgents(
+            getActivity(), mTrustAgentManager, mLockPatternUtils, mDPM);
         for (int i = 0; i < agents.size(); i++) {
             final TrustAgentComponentInfo agent = agents.get(i);
             RestrictedPreference trustAgentPreference =
@@ -522,8 +564,9 @@
         return false;
     }
 
-    private static ArrayList<TrustAgentComponentInfo> getActiveTrustAgents(
-            Context context, LockPatternUtils utils, DevicePolicyManager dpm) {
+    private static ArrayList<TrustAgentComponentInfo> getActiveTrustAgents(Context context,
+        TrustAgentManager trustAgentManager, LockPatternUtils utils,
+        DevicePolicyManager dpm) {
         PackageManager pm = context.getPackageManager();
         ArrayList<TrustAgentComponentInfo> result = new ArrayList<TrustAgentComponentInfo>();
         List<ResolveInfo> resolveInfos = pm.queryIntentServices(TRUST_AGENT_INTENT,
@@ -537,7 +580,9 @@
             for (int i = 0; i < resolveInfos.size(); i++) {
                 ResolveInfo resolveInfo = resolveInfos.get(i);
                 if (resolveInfo.serviceInfo == null) continue;
-                if (!TrustAgentUtils.checkProvidePermission(resolveInfo, pm)) continue;
+                if (!trustAgentManager.shouldProvideTrust(resolveInfo, pm)) {
+                    continue;
+                }
                 TrustAgentComponentInfo trustAgentComponentInfo =
                         TrustAgentUtils.getSettingsComponent(pm, resolveInfo);
                 if (trustAgentComponentInfo.componentName == null ||
@@ -977,8 +1022,11 @@
 
             // Advanced
             if (lockPatternUtils.isSecure(MY_USER_ID)) {
-                ArrayList<TrustAgentComponentInfo> agents =
-                        getActiveTrustAgents(context, lockPatternUtils,
+                final TrustAgentManager trustAgentManager =
+                    FeatureFactory.getFactory(context).getSecurityFeatureProvider()
+                        .getTrustAgentManager();
+                final List<TrustAgentComponentInfo> agents =
+                        getActiveTrustAgents(context, trustAgentManager, lockPatternUtils,
                                 context.getSystemService(DevicePolicyManager.class));
                 for (int i = 0; i < agents.size(); i++) {
                     final TrustAgentComponentInfo agent = agents.get(i);
@@ -1306,4 +1354,63 @@
         }
     }
 
+    static class SummaryProvider implements SummaryLoader.SummaryProvider {
+
+        private final Context mContext;
+        private final SummaryLoader mSummaryLoader;
+
+        public SummaryProvider(Context context, SummaryLoader summaryLoader) {
+            mContext = context;
+            mSummaryLoader = summaryLoader;
+        }
+
+        @Override
+        public void setListening(boolean listening) {
+            if (!listening) {
+                return;
+            }
+            int packageVerifierState = Settings.Secure.getInt(mContext.getContentResolver(),
+                    Settings.Secure.PACKAGE_VERIFIER_STATE, 0);
+            DashboardFeatureProvider dashboardFeatureProvider =
+                    FeatureFactory.getFactory(mContext).getDashboardFeatureProvider(mContext);
+            if (dashboardFeatureProvider.isEnabled()
+                    && (packageVerifierState == PACKAGE_VERIFIER_STATE_ENABLED)) {
+                DashboardCategory dashboardCategory =
+                        dashboardFeatureProvider.getTilesForCategory(CategoryKey.CATEGORY_SECURITY);
+                mSummaryLoader.setSummary(this, getPackageVerifierSummary(dashboardCategory));
+            } else {
+                mSummaryLoader.setSummary(this, null);
+            }
+        }
+
+        @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+        String getPackageVerifierSummary(DashboardCategory dashboardCategory) {
+            int tilesCount = (dashboardCategory != null) ? dashboardCategory.getTilesCount() : 0;
+            if (tilesCount == 0) {
+                return null;
+            }
+            for (int i = 0; i < tilesCount; i++) {
+                Tile tile = dashboardCategory.getTile(i);
+                if (!KEY_PACKAGE_VERIFIER_STATUS.equals(tile.key)) {
+                    continue;
+                }
+                String summaryUri = tile.metaData.getString(
+                        TileUtils.META_DATA_PREFERENCE_SUMMARY_URI, null);
+                return TileUtils.getTextFromUri(mContext, summaryUri,
+                            new ArrayMap<String, IContentProvider>(),
+                            TileUtils.META_DATA_PREFERENCE_SUMMARY);
+            }
+            return null;
+        }
+    }
+
+    public static final SummaryLoader.SummaryProviderFactory SUMMARY_PROVIDER_FACTORY =
+            new SummaryLoader.SummaryProviderFactory() {
+        @Override
+        public SummaryLoader.SummaryProvider createSummaryProvider(Activity activity,
+                SummaryLoader summaryLoader) {
+            return new SummaryProvider(activity, summaryLoader);
+        }
+    };
+
 }
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index 97e53e5..360d258 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -105,6 +105,7 @@
     public static class UserSettingsActivity extends SettingsActivity { /* empty */ }
     public static class NotificationAccessSettingsActivity extends SettingsActivity { /* empty */ }
     public static class VrListenersSettingsActivity extends SettingsActivity { /* empty */ }
+    public static class PictureInPictureSettingsActivity extends SettingsActivity { /* empty */ }
     public static class ZenAccessSettingsActivity extends SettingsActivity { /* empty */ }
     public static class ConditionProviderSettingsActivity extends SettingsActivity { /* empty */ }
     public static class UsbSettingsActivity extends SettingsActivity { /* empty */ }
@@ -123,9 +124,11 @@
     public static class ConfigureNotificationSettingsActivity extends SettingsActivity { /* empty */ }
     public static class NotificationAppListActivity extends SettingsActivity { /* empty */ }
     public static class AppNotificationSettingsActivity extends SettingsActivity { /* empty */ }
+    public static class ChannelNotificationSettingsActivity extends SettingsActivity { /* empty */ }
     public static class OtherSoundSettingsActivity extends SettingsActivity { /* empty */ }
     public static class ManageDomainUrlsActivity extends SettingsActivity { /* empty */ }
     public static class AutomaticStorageManagerSettingsActivity extends SettingsActivity { /* empty */ }
+    public static class GamesStorageActivity extends SettingsActivity { /* empty */ }
 
     public static class TopLevelSettings extends SettingsActivity { /* empty */ }
     public static class ApnSettingsActivity extends SettingsActivity { /* empty */ }
@@ -138,6 +141,9 @@
     public static class AppWriteSettingsActivity extends SettingsActivity { /* empty */ }
     public static class AdvancedAppsActivity extends SettingsActivity { /* empty */ }
 
+    public static class ManageExternalSourcesActivity extends SettingsActivity {
+        /* empty */ }
+
     public static class WifiCallingSuggestionActivity extends SettingsActivity { /* empty */ }
     public static class ZenModeAutomationSuggestionActivity extends SettingsActivity { /* empty */ }
     public static class FingerprintSuggestionActivity extends FingerprintSettings { /* empty */ }
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index 0751b81..c01e4c4 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -191,10 +191,12 @@
     private final BroadcastReceiver mUserAddRemoveReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
-            String action = intent.getAction();
-            if (action.equals(Intent.ACTION_USER_ADDED)
-                    || action.equals(Intent.ACTION_USER_REMOVED)) {
-                mSearchFeatureProvider.updateIndex(getApplicationContext());
+            if (mSearchFeatureProvider != null && !mSearchFeatureProvider.isEnabled(context)) {
+                String action = intent.getAction();
+                if (action.equals(Intent.ACTION_USER_ADDED)
+                        || action.equals(Intent.ACTION_USER_REMOVED)) {
+                    mSearchFeatureProvider.updateIndex(getApplicationContext());
+                }
             }
         }
     };
@@ -251,7 +253,9 @@
     @Override
     public void onConfigurationChanged(Configuration newConfig) {
         super.onConfigurationChanged(newConfig);
-        mSearchFeatureProvider.updateIndex(getApplicationContext());
+        if (!mSearchFeatureProvider.isEnabled(this)) {
+            mSearchFeatureProvider.updateIndex(getApplicationContext());
+        }
     }
 
     @Override
@@ -383,14 +387,10 @@
         final boolean isSubSettings = this instanceof SubSettings ||
                 intent.getBooleanExtra(EXTRA_SHOW_FRAGMENT_AS_SUBSETTING, false);
 
-        // If this is a sub settings, then apply the SubSettings Theme for the ActionBar content insets
+        // If this is a sub settings, then apply the SubSettings Theme for the ActionBar content
+        // insets
         if (isSubSettings) {
-            // Check also that we are not a Theme Dialog as we don't want to override them
-            final int themeResId = getThemeResId();
-            if (themeResId != R.style.Theme_DialogWhenLarge &&
-                    themeResId != R.style.Theme_SubSettingsDialogWhenLarge) {
-                setTheme(R.style.Theme_SubSettings);
-            }
+            setTheme(R.style.Theme_SubSettings);
         }
 
         setContentView(mIsShowingDashboard ?
@@ -400,7 +400,7 @@
 
         getFragmentManager().addOnBackStackChangedListener(this);
 
-        if (mIsShowingDashboard) {
+        if (mIsShowingDashboard && !mSearchFeatureProvider.isEnabled(this)) {
             // Run the Index update only if we have some space
             if (!Utils.isLowStorage(this)) {
                 mSearchFeatureProvider.updateIndex(getApplicationContext());
@@ -642,8 +642,10 @@
                 mDevelopmentPreferencesListener);
 
         registerReceiver(mBatteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
-        registerReceiver(mUserAddRemoveReceiver, new IntentFilter(Intent.ACTION_USER_ADDED));
-        registerReceiver(mUserAddRemoveReceiver, new IntentFilter(Intent.ACTION_USER_REMOVED));
+        if (!mSearchFeatureProvider.isEnabled(this)) {
+            registerReceiver(mUserAddRemoveReceiver, new IntentFilter(Intent.ACTION_USER_ADDED));
+            registerReceiver(mUserAddRemoveReceiver, new IntentFilter(Intent.ACTION_USER_REMOVED));
+        }
         if (mDynamicIndexableContentMonitor == null) {
             mDynamicIndexableContentMonitor = new DynamicIndexableContentMonitor();
         }
@@ -659,7 +661,9 @@
     protected void onPause() {
         super.onPause();
         unregisterReceiver(mBatteryInfoReceiver);
-        unregisterReceiver(mUserAddRemoveReceiver);
+        if (!mSearchFeatureProvider.isEnabled(this)) {
+            unregisterReceiver(mUserAddRemoveReceiver);
+        }
         if (mDynamicIndexableContentMonitor != null) {
             mDynamicIndexableContentMonitor.unregister(this, LOADER_ID_INDEXABLE_CONTENT_MONITOR);
         }
diff --git a/src/com/android/settings/SettingsInitialize.java b/src/com/android/settings/SettingsInitialize.java
index 07fec07..66fc4d6 100644
--- a/src/com/android/settings/SettingsInitialize.java
+++ b/src/com/android/settings/SettingsInitialize.java
@@ -44,6 +44,8 @@
     private static final String TAG = "Settings";
     private static final String PRIMARY_PROFILE_SETTING =
             "com.android.settings.PRIMARY_PROFILE_CONTROLLED";
+    private static final String SETTINGS_PACKAGE = "com.android.settings";
+    private static final String WEBVIEW_IMPLEMENTATION_ACTIVITY = ".WebViewImplementation";
 
     @Override
     public void onReceive(Context context, Intent broadcast) {
@@ -100,7 +102,7 @@
             return;
         }
         ComponentName settingsComponentName =
-            new ComponentName(context, WebViewImplementation.class);
+            new ComponentName(SETTINGS_PACKAGE, SETTINGS_PACKAGE + WEBVIEW_IMPLEMENTATION_ACTIVITY);
         pm.setComponentEnabledSetting(settingsComponentName,
                 userInfo.isAdmin() ?
                         PackageManager.COMPONENT_ENABLED_STATE_ENABLED :
diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java
index ee500a9..3bad5f3 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -727,10 +727,6 @@
         getActivity().setResult(result);
     }
 
-    protected final Context getPrefContext() {
-        return getPreferenceManager().getContext();
-    }
-
     public boolean startFragment(Fragment caller, String fragmentClass, int titleRes,
             int requestCode, Bundle extras) {
         final Activity activity = getActivity();
diff --git a/src/com/android/settings/TrustAgentSettings.java b/src/com/android/settings/TrustAgentSettings.java
index 1eb023d..2f4660e 100644
--- a/src/com/android/settings/TrustAgentSettings.java
+++ b/src/com/android/settings/TrustAgentSettings.java
@@ -34,6 +34,9 @@
 
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.internal.widget.LockPatternUtils;
+import com.android.settings.overlay.FeatureFactory;
+import com.android.settings.security.SecurityFeatureProvider;
+import com.android.settings.trustagent.TrustAgentManager;
 import com.android.settingslib.RestrictedLockUtils;
 import com.android.settingslib.RestrictedSwitchPreference;
 
@@ -49,6 +52,7 @@
     private final ArraySet<ComponentName> mActiveAgents = new ArraySet<ComponentName>();
     private LockPatternUtils mLockPatternUtils;
     private DevicePolicyManager mDpm;
+    private TrustAgentManager mTrustAgentManager;
 
     public static final class AgentInfo {
         CharSequence label;
@@ -78,6 +82,10 @@
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
         mDpm = getActivity().getSystemService(DevicePolicyManager.class);
+        mTrustAgentManager =
+            FeatureFactory.getFactory(getActivity()).getSecurityFeatureProvider()
+                .getTrustAgentManager();
+
         addPreferencesFromResource(R.xml.trust_agent_settings);
     }
 
@@ -151,8 +159,12 @@
         agents.ensureCapacity(count);
         for (int i = 0; i < count; i++ ) {
             ResolveInfo resolveInfo = resolveInfos.get(i);
-            if (resolveInfo.serviceInfo == null) continue;
-            if (!TrustAgentUtils.checkProvidePermission(resolveInfo, pm)) continue;
+            if (resolveInfo.serviceInfo == null) {
+                continue;
+            }
+            if (!mTrustAgentManager.shouldProvideTrust(resolveInfo, pm)) {
+                continue;
+            }
             ComponentName name = TrustAgentUtils.getComponentName(resolveInfo);
             AgentInfo agentInfo = new AgentInfo();
             agentInfo.label = resolveInfo.loadLabel(pm);
diff --git a/src/com/android/settings/TrustAgentUtils.java b/src/com/android/settings/TrustAgentUtils.java
index 9c8d229..b3d560f 100644
--- a/src/com/android/settings/TrustAgentUtils.java
+++ b/src/com/android/settings/TrustAgentUtils.java
@@ -24,7 +24,6 @@
 import android.content.res.XmlResourceParser;
 import android.service.trust.TrustAgentService;
 import android.util.AttributeSet;
-import android.util.Log;
 import android.util.Slog;
 import android.util.Xml;
 
@@ -35,25 +34,11 @@
 
 import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
 
+// TODO(b/34461256): Refactor TrustAgentUtils into TrustAgentManager.
 public class TrustAgentUtils {
     static final String TAG = "TrustAgentUtils";
 
     private static final String TRUST_AGENT_META_DATA = TrustAgentService.TRUST_AGENT_META_DATA;
-    private static final String PERMISSION_PROVIDE_AGENT = android.Manifest.permission.PROVIDE_TRUST_AGENT;
-
-    /**
-     * @return true, if the service in resolveInfo has the permission to provide a trust agent.
-     */
-    public static boolean checkProvidePermission(ResolveInfo resolveInfo, PackageManager pm) {
-        String packageName = resolveInfo.serviceInfo.packageName;
-        if (pm.checkPermission(PERMISSION_PROVIDE_AGENT, packageName)
-                != PackageManager.PERMISSION_GRANTED) {
-            Log.w(TAG, "Skipping agent because package " + packageName
-                    + " does not have permission " + PERMISSION_PROVIDE_AGENT + ".");
-            return false;
-        }
-        return true;
-    }
 
     public static class TrustAgentComponentInfo {
         ComponentName componentName;
diff --git a/src/com/android/settings/WebViewImplementation.java b/src/com/android/settings/WebViewImplementation.java
deleted file mode 100644
index 349f5e9..0000000
--- a/src/com/android/settings/WebViewImplementation.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the
- * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the specific language governing
- * permissions and limitations under the License.
- */
-
-package com.android.settings;
-
-import android.annotation.Nullable;
-import android.app.AlertDialog;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnCancelListener;
-import android.content.DialogInterface.OnClickListener;
-import android.content.DialogInterface.OnDismissListener;
-import android.os.Bundle;
-import android.os.RemoteException;
-import android.os.ServiceManager;
-import android.os.UserManager;
-import android.util.Log;
-import android.webkit.IWebViewUpdateService;
-import android.webkit.WebViewProviderInfo;
-import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
-import com.android.settings.core.InstrumentedActivity;
-
-import java.util.ArrayList;
-
-public class WebViewImplementation extends InstrumentedActivity implements
-        OnCancelListener, OnDismissListener {
-
-    private static final String TAG = "WebViewImplementation";
-
-    private IWebViewUpdateService mWebViewUpdateService;
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        if (!UserManager.get(this).isAdminUser()) {
-            finish();
-            return;
-        }
-        mWebViewUpdateService  =
-                IWebViewUpdateService.Stub.asInterface(ServiceManager.getService("webviewupdate"));
-        try {
-            WebViewProviderInfo[] providers = mWebViewUpdateService.getValidWebViewPackages();
-            if (providers == null) {
-                Log.e(TAG, "No WebView providers available");
-                finish();
-                return;
-            }
-
-            String currentValue = mWebViewUpdateService.getCurrentWebViewPackageName();
-            if (currentValue == null) {
-                currentValue = "";
-            }
-
-            int currentIndex = -1;
-            ArrayList<String> options = new ArrayList<>();
-            final ArrayList<String> values = new ArrayList<>();
-            for (WebViewProviderInfo provider : providers) {
-                if (Utils.isPackageEnabled(this, provider.packageName)) {
-                    options.add(provider.description);
-                    values.add(provider.packageName);
-                    if (currentValue.contentEquals(provider.packageName)) {
-                        currentIndex = values.size() - 1;
-                    }
-                }
-            }
-
-            new AlertDialog.Builder(this)
-                    .setTitle(R.string.select_webview_provider_dialog_title)
-                    .setSingleChoiceItems(options.toArray(new String[0]), currentIndex,
-                            new OnClickListener() {
-                        @Override
-                        public void onClick(DialogInterface dialog, int which) {
-                            try {
-                                mWebViewUpdateService.changeProviderAndSetting(values.get(which));
-                            } catch (RemoteException e) {
-                                Log.w(TAG, "Problem reaching webviewupdate service", e);
-                            }
-                            finish();
-                        }
-                    }).setNegativeButton(android.R.string.cancel, null)
-                    .setOnCancelListener(this)
-                    .setOnDismissListener(this)
-                    .show();
-        } catch (RemoteException e) {
-            Log.w(TAG, "Problem reaching webviewupdate service", e);
-            finish();
-        }
-    }
-
-    @Override
-    public int getMetricsCategory() {
-        return MetricsEvent.WEBVIEW_IMPLEMENTATION;
-    }
-
-    @Override
-    public void onCancel(DialogInterface dialog) {
-        finish();
-    }
-
-    @Override
-    public void onDismiss(DialogInterface dialog) {
-        finish();
-    }
-}
diff --git a/src/com/android/settings/accessibility/AccessibilityServiceWarning.java b/src/com/android/settings/accessibility/AccessibilityServiceWarning.java
new file mode 100644
index 0000000..2d33902
--- /dev/null
+++ b/src/com/android/settings/accessibility/AccessibilityServiceWarning.java
@@ -0,0 +1,157 @@
+/*
+ * 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.accessibility;
+
+import android.accessibilityservice.AccessibilityServiceInfo;
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.os.storage.StorageManager;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.android.settings.R;
+
+import java.util.List;
+
+/**
+ * Utility class for creating the dialog that asks users for explicit permission to grant
+ * all of the requested capabilities to an accessibility service before the service is enabled
+ */
+public class AccessibilityServiceWarning {
+    public static Dialog createCapabilitiesDialog(Activity parentActivity,
+            AccessibilityServiceInfo info, DialogInterface.OnClickListener listener) {
+        final AlertDialog ad = new AlertDialog.Builder(parentActivity)
+                .setTitle(parentActivity.getString(R.string.enable_service_title,
+                        info.getResolveInfo().loadLabel(parentActivity.getPackageManager())))
+                .setView(createEnableDialogContentView(parentActivity, info))
+                .setCancelable(true)
+                .setPositiveButton(android.R.string.ok, listener)
+                .setNegativeButton(android.R.string.cancel, listener)
+                .create();
+
+        final View.OnTouchListener filterTouchListener = (View v, MotionEvent event) -> {
+            // Filter obscured touches by consuming them.
+            if ((event.getFlags() & MotionEvent.FLAG_WINDOW_IS_OBSCURED) != 0) {
+                if (event.getAction() == MotionEvent.ACTION_UP) {
+                    Toast.makeText(v.getContext(), R.string.touch_filtered_warning,
+                            Toast.LENGTH_SHORT).show();
+                }
+                return true;
+            }
+            return false;
+        };
+
+        ad.create();
+        ad.getButton(AlertDialog.BUTTON_POSITIVE).setOnTouchListener(filterTouchListener);
+        return ad;
+    }
+
+    /**
+     * Return whether the device is encrypted with legacy full disk encryption. Newer devices
+     * should be using File Based Encryption.
+     *
+     * @return true if device is encrypted
+     */
+    private static boolean isFullDiskEncrypted() {
+        return StorageManager.isNonDefaultBlockEncrypted();
+    }
+
+    private static View createEnableDialogContentView(Activity parentActivity,
+            AccessibilityServiceInfo info) {
+        LayoutInflater inflater = (LayoutInflater) parentActivity.getSystemService(
+                Context.LAYOUT_INFLATER_SERVICE);
+
+        View content = inflater.inflate(R.layout.enable_accessibility_service_dialog_content,
+                null);
+
+        TextView encryptionWarningView = (TextView) content.findViewById(
+                R.id.encryption_warning);
+        if (isFullDiskEncrypted()) {
+            String text = parentActivity.getString(R.string.enable_service_encryption_warning,
+                    info.getResolveInfo().loadLabel(parentActivity.getPackageManager()));
+            encryptionWarningView.setText(text);
+            encryptionWarningView.setVisibility(View.VISIBLE);
+        } else {
+            encryptionWarningView.setVisibility(View.GONE);
+        }
+
+        TextView capabilitiesHeaderView = (TextView) content.findViewById(
+                R.id.capabilities_header);
+        capabilitiesHeaderView.setText(parentActivity.getString(R.string.capabilities_list_title,
+                info.getResolveInfo().loadLabel(parentActivity.getPackageManager())));
+
+        LinearLayout capabilitiesView = (LinearLayout) content.findViewById(R.id.capabilities);
+
+        // This capability is implicit for all services.
+        View capabilityView = inflater.inflate(
+                com.android.internal.R.layout.app_permission_item_old, null);
+
+        ImageView imageView = (ImageView) capabilityView.findViewById(
+                com.android.internal.R.id.perm_icon);
+        imageView.setImageDrawable(parentActivity.getDrawable(
+                com.android.internal.R.drawable.ic_text_dot));
+
+        TextView labelView = (TextView) capabilityView.findViewById(
+                com.android.internal.R.id.permission_group);
+        labelView.setText(parentActivity.getString(
+                R.string.capability_title_receiveAccessibilityEvents));
+
+        TextView descriptionView = (TextView) capabilityView.findViewById(
+                com.android.internal.R.id.permission_list);
+        descriptionView.setText(
+                parentActivity.getString(R.string.capability_desc_receiveAccessibilityEvents));
+
+        List<AccessibilityServiceInfo.CapabilityInfo> capabilities =
+                info.getCapabilityInfos();
+
+        capabilitiesView.addView(capabilityView);
+
+        // Service-specific capabilities.
+        final int capabilityCount = capabilities.size();
+        for (int i = 0; i < capabilityCount; i++) {
+            AccessibilityServiceInfo.CapabilityInfo capability = capabilities.get(i);
+
+            capabilityView = inflater.inflate(
+                    com.android.internal.R.layout.app_permission_item_old, null);
+
+            imageView = (ImageView) capabilityView.findViewById(
+                    com.android.internal.R.id.perm_icon);
+            imageView.setImageDrawable(parentActivity.getDrawable(
+                    com.android.internal.R.drawable.ic_text_dot));
+
+            labelView = (TextView) capabilityView.findViewById(
+                    com.android.internal.R.id.permission_group);
+            labelView.setText(parentActivity.getString(capability.titleResId));
+
+            descriptionView = (TextView) capabilityView.findViewById(
+                    com.android.internal.R.id.permission_list);
+            descriptionView.setText(parentActivity.getString(capability.descResId));
+
+            capabilitiesView.addView(capabilityView);
+        }
+
+        return content;
+    }
+}
diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java
index af5b5cd..dc57bdd 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettings.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettings.java
@@ -17,9 +17,11 @@
 package com.android.settings.accessibility;
 
 import android.accessibilityservice.AccessibilityServiceInfo;
+import android.app.Dialog;
 import android.app.admin.DevicePolicyManager;
 import android.content.ComponentName;
 import android.content.Context;
+import android.content.DialogInterface;
 import android.content.pm.PackageManager;
 import android.content.pm.ServiceInfo;
 import android.content.res.Resources;
@@ -87,8 +89,8 @@
             "toggle_master_mono";
     private static final String SELECT_LONG_PRESS_TIMEOUT_PREFERENCE =
             "select_long_press_timeout_preference";
-    private static final String ENABLE_ACCESSIBILITY_GESTURE_PREFERENCE_SCREEN =
-            "enable_global_gesture_preference_screen";
+    private static final String ACCESSIBILITY_SHORTCUT_PREFERENCE =
+            "accessibility_shortcut_preference";
     private static final String CAPTIONING_PREFERENCE_SCREEN =
             "captioning_preference_screen";
     private static final String DISPLAY_MAGNIFICATION_PREFERENCE_SCREEN =
@@ -115,6 +117,9 @@
     // presentation.
     private static final long DELAY_UPDATE_SERVICES_MILLIS = 1000;
 
+    // ID for dialog that confirms shortcut capabilities
+    private static final int DIALOG_ID_ADD_SHORTCUT_WARNING = 1;
+
     // Auxiliary members.
     static final Set<ComponentName> sInstalledServices = new HashSet<>();
 
@@ -188,7 +193,7 @@
     private Preference mDisplayMagnificationPreferenceScreen;
     private Preference mFontSizePreferenceScreen;
     private Preference mAutoclickPreferenceScreen;
-    private Preference mGlobalGesturePreferenceScreen;
+    private ListPreference mAccessibilityShortcutPreference;
     private Preference mDisplayDaltonizerPreferenceScreen;
     private SwitchPreference mToggleInversionPreference;
 
@@ -247,6 +252,9 @@
         } else if (mToggleInversionPreference == preference) {
             handleToggleInversionPreferenceChange((Boolean) newValue);
             return true;
+        } else if (mAccessibilityShortcutPreference == preference) {
+            handleAccessibilityShortcutPreferenceChange((String) newValue);
+            return true;
         }
         return false;
     }
@@ -263,6 +271,58 @@
                 Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED, (checked ? 1 : 0));
     }
 
+    private void handleAccessibilityShortcutPreferenceChange(String serviceComponentName) {
+        // When assigning a service to the shortcut the user must explicitly agree to the same
+        // capabilities that are present if the service were being enabled.
+        // No need if clearing the setting or the service is already enabled.
+        if (TextUtils.isEmpty(serviceComponentName)
+                || AccessibilityUtils.getEnabledServicesFromSettings(getActivity())
+                        .contains(ComponentName.unflattenFromString(serviceComponentName))) {
+            Settings.Secure.putString(getContentResolver(),
+                    Settings.Secure.ACCESSIBILITY_SHORTCUT_TARGET_SERVICE, serviceComponentName);
+            updateAccessibilityShortcut();
+            return;
+        }
+        if (!serviceComponentName.equals(mAccessibilityShortcutPreference.getValue())) {
+            showDialog(DIALOG_ID_ADD_SHORTCUT_WARNING);
+        }
+    }
+
+    @Override
+    public Dialog onCreateDialog(int dialogId) {
+        switch (dialogId) {
+            case DIALOG_ID_ADD_SHORTCUT_WARNING: {
+                DialogInterface.OnClickListener listener =
+                        (DialogInterface dialogInterface, int buttonId) -> {
+                            if (buttonId == DialogInterface.BUTTON_POSITIVE) {
+                                Settings.Secure.putString(getContentResolver(),
+                                        Settings.Secure.ACCESSIBILITY_SHORTCUT_TARGET_SERVICE,
+                                        mAccessibilityShortcutPreference.getValue());
+                            }
+                            updateAccessibilityShortcut();
+                        };
+                AccessibilityServiceInfo info = AccessibilityManager.getInstance(getActivity())
+                        .getInstalledServiceInfoWithComponentName(
+                                ComponentName.unflattenFromString(
+                                        mAccessibilityShortcutPreference.getValue()));
+                if (info == null) {
+                    return null;
+                }
+                return AccessibilityServiceWarning
+                        .createCapabilitiesDialog(getActivity(), info, listener);
+            }
+            default: {
+                throw new IllegalArgumentException();
+            }
+        }
+    }
+
+    @Override
+    public int getDialogMetricsCategory(int dialogId) {
+        // The only dialog is the one that confirms the properties for the accessibility shortcut
+        return MetricsEvent.ACCESSIBILITY_TOGGLE_GLOBAL_GESTURE;
+    }
+
     @Override
     public boolean onPreferenceTreeClick(Preference preference) {
         if (mToggleHighTextContrastPreference == preference) {
@@ -283,9 +343,6 @@
         } else if (mToggleMasterMonoPreference == preference) {
             handleToggleMasterMonoPreferenceClick();
             return true;
-        } else if (mGlobalGesturePreferenceScreen == preference) {
-            handleToggleEnableAccessibilityGesturePreferenceClick();
-            return true;
         } else if (mDisplayMagnificationPreferenceScreen == preference) {
             handleDisplayMagnificationPreferenceScreenClick();
             return true;
@@ -329,17 +386,6 @@
                 mToggleMasterMonoPreference.isChecked() ? 1 : 0, UserHandle.USER_CURRENT);
     }
 
-    private void handleToggleEnableAccessibilityGesturePreferenceClick() {
-        Bundle extras = mGlobalGesturePreferenceScreen.getExtras();
-        extras.putString(EXTRA_TITLE, getString(
-                R.string.accessibility_global_gesture_preference_title));
-        extras.putString(EXTRA_SUMMARY, getString(
-                R.string.accessibility_global_gesture_preference_description));
-        extras.putBoolean(EXTRA_CHECKED, Settings.Global.getInt(getContentResolver(),
-                Settings.Global.ENABLE_ACCESSIBILITY_GLOBAL_GESTURE_ENABLED, 0) == 1);
-        super.onPreferenceTreeClick(mGlobalGesturePreferenceScreen);
-    }
-
     private void handleDisplayMagnificationPreferenceScreenClick() {
         Bundle extras = mDisplayMagnificationPreferenceScreen.getExtras();
         extras.putString(EXTRA_TITLE, getString(
@@ -422,18 +468,10 @@
         // Display color adjustments.
         mDisplayDaltonizerPreferenceScreen = findPreference(DISPLAY_DALTONIZER_PREFERENCE_SCREEN);
 
-        // Global gesture.
-        mGlobalGesturePreferenceScreen = findPreference(
-                ENABLE_ACCESSIBILITY_GESTURE_PREFERENCE_SCREEN);
-        final int longPressOnPowerBehavior = getActivity().getResources().getInteger(
-                com.android.internal.R.integer.config_longPressOnPowerBehavior);
-        final int LONG_PRESS_POWER_GLOBAL_ACTIONS = 1;
-        if (!KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_POWER)
-                || longPressOnPowerBehavior != LONG_PRESS_POWER_GLOBAL_ACTIONS) {
-            // Remove accessibility shortcut if power key is not present
-            // nor long press power does not show global actions menu.
-            mSystemsCategory.removePreference(mGlobalGesturePreferenceScreen);
-        }
+        // Accessibility shortcut
+        mAccessibilityShortcutPreference =
+                (ListPreference) findPreference(ACCESSIBILITY_SHORTCUT_PREFERENCE);
+        mAccessibilityShortcutPreference.setOnPreferenceChangeListener(this);
     }
 
     private void updateAllPreferences() {
@@ -598,16 +636,7 @@
 
         updateAutoclickSummary(mAutoclickPreferenceScreen);
 
-        // Global gesture
-        final boolean globalGestureEnabled = Settings.Global.getInt(getContentResolver(),
-                Settings.Global.ENABLE_ACCESSIBILITY_GLOBAL_GESTURE_ENABLED, 0) == 1;
-        if (globalGestureEnabled) {
-            mGlobalGesturePreferenceScreen.setSummary(
-                    R.string.accessibility_global_gesture_preference_summary_on);
-        } else {
-            mGlobalGesturePreferenceScreen.setSummary(
-                    R.string.accessibility_global_gesture_preference_summary_off);
-        }
+        updateAccessibilityShortcut();
     }
 
     private void updateFeatureSummary(String prefKey, Preference pref) {
@@ -656,6 +685,37 @@
         mToggleMasterMonoPreference.setChecked(masterMono);
     }
 
+    private void updateAccessibilityShortcut() {
+        String currentShortcutNameString =
+                AccessibilityUtils.getShortcutTargetServiceComponentNameString(getActivity(),
+                        UserHandle.myUserId());
+        final PackageManager pm = getPackageManager();
+        final AccessibilityManager accessibilityManager = getActivity()
+                .getSystemService(AccessibilityManager.class);
+        final List<AccessibilityServiceInfo> installedServices =
+                accessibilityManager.getInstalledAccessibilityServiceList();
+        final int numInstalledServices = installedServices.size();
+
+        CharSequence[] entries = new CharSequence[numInstalledServices + 1];
+        CharSequence[] entryValues = new CharSequence[numInstalledServices + 1];
+        int currentSettingIndex = numInstalledServices;
+        for (int i = 0; i < numInstalledServices; i++) {
+            AccessibilityServiceInfo installedService = installedServices.get(i);
+            entries[i] = installedService.getResolveInfo().loadLabel(pm);
+            entryValues[i] = installedService.getComponentName().flattenToShortString();
+            if (installedService.getId().equals(currentShortcutNameString)) {
+                currentSettingIndex = i;
+            }
+        }
+        entries[numInstalledServices] =
+                getString(com.android.internal.R.string.disable_accessibility_shortcut);
+        entryValues[numInstalledServices] = "";
+        mAccessibilityShortcutPreference.setEntryValues(entryValues);
+        mAccessibilityShortcutPreference.setEntries(entries);
+        mAccessibilityShortcutPreference.setSummary(entries[currentSettingIndex]);
+        mAccessibilityShortcutPreference.setValueIndex(currentSettingIndex);
+    }
+
     public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
             new BaseSearchIndexProvider() {
         @Override
@@ -663,8 +723,8 @@
             List<SearchIndexableRaw> indexables = new ArrayList<SearchIndexableRaw>();
 
             PackageManager packageManager = context.getPackageManager();
-            AccessibilityManager accessibilityManager = (AccessibilityManager)
-                    context.getSystemService(Context.ACCESSIBILITY_SERVICE);
+            AccessibilityManager accessibilityManager =
+                    context.getSystemService(AccessibilityManager.class);
 
             String screenTitle = context.getResources().getString(
                     R.string.accessibility_services_title);
diff --git a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizard.java b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizard.java
index 009fa5d..b8f3af5 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizard.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizard.java
@@ -41,11 +41,21 @@
     private static final String DISPLAY_MAGNIFICATION_PREFERENCE =
             "screen_magnification_preference";
     private static final String SCREEN_READER_PREFERENCE = "screen_reader_preference";
+    private static final String SELECT_TO_SPEAK_PREFERENCE = "select_to_speak_preference";
     private static final String FONT_SIZE_PREFERENCE = "font_size_preference";
 
+    // Package names and service names used to identify screen reader and SelectToSpeak services.
+    private static final String SCREEN_READER_PACKAGE_NAME = "com.google.android.marvin.talkback";
+    private static final String SCREEN_READER_SERVICE_NAME =
+            "com.google.android.marvin.talkback.TalkBackService";
+    private static final String SELECT_TO_SPEAK_PACKAGE_NAME = "com.google.android.marvin.talkback";
+    private static final String SELECT_TO_SPEAK_SERVICE_NAME =
+            "com.google.android.accessibility.selecttospeak.SelectToSpeakService";
+
     // Preference controls.
     private Preference mDisplayMagnificationPreference;
     private Preference mScreenReaderPreference;
+    private Preference mSelectToSpeakPreference;
 
     @Override
     public int getMetricsCategory() {
@@ -59,12 +69,16 @@
 
         mDisplayMagnificationPreference = findPreference(DISPLAY_MAGNIFICATION_PREFERENCE);
         mScreenReaderPreference = findPreference(SCREEN_READER_PREFERENCE);
+        mSelectToSpeakPreference = findPreference(SELECT_TO_SPEAK_PREFERENCE);
     }
 
     @Override
     public void onResume() {
         super.onResume();
-        updateScreenReaderPreference();
+        updateAccessibilityServicePreference(mScreenReaderPreference,
+                findService(SCREEN_READER_PACKAGE_NAME, SCREEN_READER_SERVICE_NAME));
+        updateAccessibilityServicePreference(mSelectToSpeakPreference,
+                findService(SELECT_TO_SPEAK_PACKAGE_NAME, SELECT_TO_SPEAK_SERVICE_NAME));
     }
 
     @Override
@@ -94,13 +108,15 @@
         return super.onPreferenceTreeClick(preference);
     }
 
-    private AccessibilityServiceInfo findFirstServiceWithSpokenFeedback() {
+    private AccessibilityServiceInfo findService(String packageName, String serviceName) {
         final AccessibilityManager manager =
                 getActivity().getSystemService(AccessibilityManager.class);
         final List<AccessibilityServiceInfo> accessibilityServices =
                 manager.getInstalledAccessibilityServiceList();
         for (AccessibilityServiceInfo info : accessibilityServices) {
-            if ((info.feedbackType & AccessibilityServiceInfo.FEEDBACK_SPOKEN) != 0) {
+            ServiceInfo serviceInfo = info.getResolveInfo().serviceInfo;
+            if (packageName.equals(serviceInfo.packageName)
+                    && serviceName.equals(serviceInfo.name)) {
                 return info;
             }
         }
@@ -108,28 +124,25 @@
         return null;
     }
 
-    private void updateScreenReaderPreference() {
-        // Find a screen reader.
-        AccessibilityServiceInfo info = findFirstServiceWithSpokenFeedback();
+    private void updateAccessibilityServicePreference(Preference preference,
+            AccessibilityServiceInfo info) {
         if (info == null) {
-            mScreenReaderPreference.setEnabled(false);
-        } else {
-            mScreenReaderPreference.setEnabled(true);
+            getPreferenceScreen().removePreference(preference);
+            return;
         }
 
         ServiceInfo serviceInfo = info.getResolveInfo().serviceInfo;
         String title = info.getResolveInfo().loadLabel(getPackageManager()).toString();
-        mScreenReaderPreference.setTitle(title);
-
+        preference.setTitle(title);
         ComponentName componentName = new ComponentName(serviceInfo.packageName, serviceInfo.name);
-        mScreenReaderPreference.setKey(componentName.flattenToString());
+        preference.setKey(componentName.flattenToString());
 
         // Update the extras.
-        Bundle extras = mScreenReaderPreference.getExtras();
+        Bundle extras = preference.getExtras();
         extras.putParcelable(AccessibilitySettings.EXTRA_COMPONENT_NAME, componentName);
 
         extras.putString(AccessibilitySettings.EXTRA_PREFERENCE_KEY,
-                mScreenReaderPreference.getKey());
+            preference.getKey());
         extras.putString(AccessibilitySettings.EXTRA_TITLE, title);
 
         String description = info.loadDescription(getPackageManager());
diff --git a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java
index 3bd450b..9c01a5f 100644
--- a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java
@@ -146,39 +146,13 @@
         switch (dialogId) {
             case DIALOG_ID_ENABLE_WARNING: {
                 mShownDialogId = DIALOG_ID_ENABLE_WARNING;
-
                 final AccessibilityServiceInfo info = getAccessibilityServiceInfo();
                 if (info == null) {
                     return null;
                 }
 
-                final AlertDialog ad = new AlertDialog.Builder(getActivity())
-                        .setTitle(getString(R.string.enable_service_title,
-                                info.getResolveInfo().loadLabel(getPackageManager())))
-                        .setView(createEnableDialogContentView(info))
-                        .setCancelable(true)
-                        .setPositiveButton(android.R.string.ok, this)
-                        .setNegativeButton(android.R.string.cancel, this)
-                        .create();
-
-                final View.OnTouchListener filterTouchListener = new View.OnTouchListener() {
-                    @Override
-                    public boolean onTouch(View v, MotionEvent event) {
-                        // Filter obscured touches by consuming them.
-                        if ((event.getFlags() & MotionEvent.FLAG_WINDOW_IS_OBSCURED) != 0) {
-                            if (event.getAction() == MotionEvent.ACTION_UP) {
-                                Toast.makeText(v.getContext(), R.string.touch_filtered_warning,
-                                        Toast.LENGTH_SHORT).show();
-                            }
-                            return true;
-                        }
-                        return false;
-                    }
-                };
-
-                ad.create();
-                ad.getButton(AlertDialog.BUTTON_POSITIVE).setOnTouchListener(filterTouchListener);
-                return ad;
+                return AccessibilityServiceWarning
+                        .createCapabilitiesDialog(getActivity(), info, this);
             }
             case DIALOG_ID_DISABLE_WARNING: {
                 mShownDialogId = DIALOG_ID_DISABLE_WARNING;
@@ -227,80 +201,6 @@
         return StorageManager.isNonDefaultBlockEncrypted();
     }
 
-    private View createEnableDialogContentView(AccessibilityServiceInfo info) {
-        LayoutInflater inflater = (LayoutInflater) getSystemService(
-                Context.LAYOUT_INFLATER_SERVICE);
-
-        View content = inflater.inflate(R.layout.enable_accessibility_service_dialog_content,
-                null);
-
-        TextView encryptionWarningView = (TextView) content.findViewById(
-                R.id.encryption_warning);
-        if (isFullDiskEncrypted()) {
-            String text = getString(R.string.enable_service_encryption_warning,
-                    info.getResolveInfo().loadLabel(getPackageManager()));
-            encryptionWarningView.setText(text);
-            encryptionWarningView.setVisibility(View.VISIBLE);
-        } else {
-            encryptionWarningView.setVisibility(View.GONE);
-        }
-
-        TextView capabilitiesHeaderView = (TextView) content.findViewById(
-                R.id.capabilities_header);
-        capabilitiesHeaderView.setText(getString(R.string.capabilities_list_title,
-                info.getResolveInfo().loadLabel(getPackageManager())));
-
-        LinearLayout capabilitiesView = (LinearLayout) content.findViewById(R.id.capabilities);
-
-        // This capability is implicit for all services.
-        View capabilityView = inflater.inflate(
-                com.android.internal.R.layout.app_permission_item_old, null);
-
-        ImageView imageView = (ImageView) capabilityView.findViewById(
-                com.android.internal.R.id.perm_icon);
-        imageView.setImageDrawable(getActivity().getDrawable(
-                com.android.internal.R.drawable.ic_text_dot));
-
-        TextView labelView = (TextView) capabilityView.findViewById(
-                com.android.internal.R.id.permission_group);
-        labelView.setText(getString(R.string.capability_title_receiveAccessibilityEvents));
-
-        TextView descriptionView = (TextView) capabilityView.findViewById(
-                com.android.internal.R.id.permission_list);
-        descriptionView.setText(getString(R.string.capability_desc_receiveAccessibilityEvents));
-
-        List<AccessibilityServiceInfo.CapabilityInfo> capabilities =
-                info.getCapabilityInfos();
-
-        capabilitiesView.addView(capabilityView);
-
-        // Service specific capabilities.
-        final int capabilityCount = capabilities.size();
-        for (int i = 0; i < capabilityCount; i++) {
-            AccessibilityServiceInfo.CapabilityInfo capability = capabilities.get(i);
-
-            capabilityView = inflater.inflate(
-                    com.android.internal.R.layout.app_permission_item_old, null);
-
-            imageView = (ImageView) capabilityView.findViewById(
-                    com.android.internal.R.id.perm_icon);
-            imageView.setImageDrawable(getActivity().getDrawable(
-                    com.android.internal.R.drawable.ic_text_dot));
-
-            labelView = (TextView) capabilityView.findViewById(
-                    com.android.internal.R.id.permission_group);
-            labelView.setText(getString(capability.titleResId));
-
-            descriptionView = (TextView) capabilityView.findViewById(
-                    com.android.internal.R.id.permission_list);
-            descriptionView.setText(getString(capability.descResId));
-
-            capabilitiesView.addView(capabilityView);
-        }
-
-        return content;
-    }
-
     @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
         if (requestCode == ACTIVITY_REQUEST_CONFIRM_CREDENTIAL_FOR_WEAKER_ENCRYPTION) {
diff --git a/src/com/android/settings/accessibility/ToggleGlobalGesturePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleGlobalGesturePreferenceFragment.java
deleted file mode 100644
index 5d95d7e..0000000
--- a/src/com/android/settings/accessibility/ToggleGlobalGesturePreferenceFragment.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.accessibility;
-
-import android.provider.Settings;
-
-import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
-import com.android.settings.widget.ToggleSwitch;
-import com.android.settings.widget.ToggleSwitch.OnBeforeCheckedChangeListener;
-
-public class ToggleGlobalGesturePreferenceFragment
-        extends ToggleFeaturePreferenceFragment {
-    @Override
-    protected void onPreferenceToggled(String preferenceKey, boolean enabled) {
-        Settings.Global.putInt(getContentResolver(),
-                Settings.Global.ENABLE_ACCESSIBILITY_GLOBAL_GESTURE_ENABLED, enabled ? 1 : 0);
-    }
-
-    @Override
-    protected void onInstallSwitchBarToggleSwitch() {
-        super.onInstallSwitchBarToggleSwitch();
-        mToggleSwitch.setOnBeforeCheckedChangeListener(new OnBeforeCheckedChangeListener() {
-                @Override
-            public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) {
-                mSwitchBar.setCheckedInternal(checked);
-                getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, checked);
-                onPreferenceToggled(mPreferenceKey, checked);
-                return false;
-            }
-        });
-    }
-
-    @Override
-    public int getMetricsCategory() {
-        return MetricsEvent.ACCESSIBILITY_TOGGLE_GLOBAL_GESTURE;
-    }
-}
diff --git a/src/com/android/settings/accessibility/ToggleSelectToSpeakPreferenceFragmentForSetupWizard.java b/src/com/android/settings/accessibility/ToggleSelectToSpeakPreferenceFragmentForSetupWizard.java
new file mode 100644
index 0000000..2c9b58c
--- /dev/null
+++ b/src/com/android/settings/accessibility/ToggleSelectToSpeakPreferenceFragmentForSetupWizard.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.accessibility;
+
+import android.os.Bundle;
+
+import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+
+public class ToggleSelectToSpeakPreferenceFragmentForSetupWizard
+        extends ToggleAccessibilityServicePreferenceFragment {
+
+    private boolean mToggleSwitchWasInitiallyChecked;
+
+    @Override
+    protected void onProcessArguments(Bundle arguments) {
+        super.onProcessArguments(arguments);
+        mToggleSwitchWasInitiallyChecked = mToggleSwitch.isChecked();
+    }
+
+    @Override
+    public int getMetricsCategory() {
+        return MetricsEvent.SUW_ACCESSIBILITY_TOGGLE_SCREEN_READER;
+    }
+
+    @Override
+    public void onStop() {
+        // Log the final choice in value if it's different from the previous value.
+        if (mToggleSwitch.isChecked() != mToggleSwitchWasInitiallyChecked) {
+            mMetricsFeatureProvider.action(getContext(),
+                    MetricsEvent.SUW_ACCESSIBILITY_TOGGLE_SELECT_TO_SPEAK,
+                    mToggleSwitch.isChecked());
+        }
+
+        super.onStop();
+    }
+}
+
diff --git a/src/com/android/settings/accounts/AccountDetailDashboardFragment.java b/src/com/android/settings/accounts/AccountDetailDashboardFragment.java
index 12f78ff..8143e96 100644
--- a/src/com/android/settings/accounts/AccountDetailDashboardFragment.java
+++ b/src/com/android/settings/accounts/AccountDetailDashboardFragment.java
@@ -22,15 +22,14 @@
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.support.annotation.VisibleForTesting;
-
 import android.support.v7.preference.Preference;
+
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.settings.R;
 import com.android.settings.Utils;
 import com.android.settings.core.PreferenceController;
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settingslib.accounts.AuthenticatorHelper;
-import com.android.settingslib.drawer.CategoryKey;
 import com.android.settingslib.drawer.Tile;
 
 import java.util.ArrayList;
@@ -62,8 +61,8 @@
         Bundle args = getArguments();
         final Activity activity = getActivity();
         UserHandle userHandle = Utils.getSecureTargetUser(activity.getActivityToken(),
-            (UserManager) getSystemService(Context.USER_SERVICE), args,
-            activity.getIntent().getExtras());
+                (UserManager) getSystemService(Context.USER_SERVICE), args,
+                activity.getIntent().getExtras());
         if (args != null) {
             if (args.containsKey(KEY_ACCOUNT)) {
                 mAccount = args.getParcelable(KEY_ACCOUNT);
@@ -94,11 +93,6 @@
     }
 
     @Override
-    protected String getCategoryKey() {
-        return CategoryKey.CATEGORY_ACCOUNT;
-    }
-
-    @Override
     protected String getLogTag() {
         return TAG;
     }
@@ -142,6 +136,6 @@
         }
         final AuthenticatorHelper helper = new AuthenticatorHelper(context, userHandle, null);
         headerPreference.setIcon(helper.getDrawableForType(context, mAccountType));
-   }
+    }
 
 }
\ No newline at end of file
diff --git a/src/com/android/settings/accounts/ChooseAccountActivity.java b/src/com/android/settings/accounts/ChooseAccountActivity.java
index ea39426..6f0c110 100644
--- a/src/com/android/settings/accounts/ChooseAccountActivity.java
+++ b/src/com/android/settings/accounts/ChooseAccountActivity.java
@@ -22,6 +22,7 @@
 
 import android.accounts.AccountManager;
 import android.accounts.AuthenticatorDescription;
+import android.app.Activity;
 import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Intent;
@@ -41,6 +42,10 @@
 import com.android.settings.R;
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.Utils;
+import com.android.settings.enterprise.EnterprisePrivacyFeatureProvider;
+import com.android.settings.overlay.FeatureFactory;
+import com.android.settings.widget.FooterPreference;
+import com.android.settings.widget.FooterPreferenceMixin;
 import com.android.settingslib.RestrictedLockUtils;
 import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
 
@@ -61,6 +66,10 @@
 public class ChooseAccountActivity extends SettingsPreferenceFragment {
 
     private static final String TAG = "ChooseAccountActivity";
+
+    private EnterprisePrivacyFeatureProvider mFeatureProvider;
+    private FooterPreference mEnterpriseDisclosurePreference = null;
+
     private String[] mAuthorities;
     private PreferenceGroup mAddAccountGroup;
     private final ArrayList<ProviderEntry> mProviderList = new ArrayList<ProviderEntry>();
@@ -101,6 +110,10 @@
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
 
+        final Activity activity = getActivity();
+        mFeatureProvider = FeatureFactory.getFactory(activity)
+                .getEnterprisePrivacyFeatureProvider(activity);
+
         addPreferencesFromResource(R.xml.add_account_settings);
         mAuthorities = getIntent().getStringArrayExtra(
                 AccountPreferenceBase.AUTHORITIES_FILTER_KEY);
@@ -187,6 +200,7 @@
                 p.checkAccountManagementAndSetDisabled(mUserHandle.getIdentifier());
                 mAddAccountGroup.addPreference(p);
             }
+            addEnterpriseDisclosure();
         } else {
             if (Log.isLoggable(TAG, Log.VERBOSE)) {
                 final StringBuilder auths = new StringBuilder();
@@ -201,6 +215,19 @@
         }
     }
 
+    private void addEnterpriseDisclosure() {
+        final CharSequence disclosure = mFeatureProvider.getDeviceOwnerDisclosure(getActivity());
+        if (disclosure == null) {
+            return;
+        }
+        if (mEnterpriseDisclosurePreference == null) {
+            mEnterpriseDisclosurePreference = mFooterPreferenceMixin.createFooterPreference();
+            mEnterpriseDisclosurePreference.setSelectable(false);
+        }
+        mEnterpriseDisclosurePreference.setTitle(disclosure);
+        mAddAccountGroup.addPreference(mEnterpriseDisclosurePreference);
+    }
+
     public ArrayList<String> getAuthoritiesForAccountType(String type) {
         if (mAccountTypeToAuthorities == null) {
             mAccountTypeToAuthorities = Maps.newHashMap();
diff --git a/src/com/android/settings/accounts/UserAndAccountDashboardFragment.java b/src/com/android/settings/accounts/UserAndAccountDashboardFragment.java
index 4113152..dbc0292 100644
--- a/src/com/android/settings/accounts/UserAndAccountDashboardFragment.java
+++ b/src/com/android/settings/accounts/UserAndAccountDashboardFragment.java
@@ -25,7 +25,6 @@
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.search.BaseSearchIndexProvider;
-import com.android.settingslib.drawer.CategoryKey;
 import com.android.settingslib.drawer.Tile;
 
 import java.util.ArrayList;
@@ -45,11 +44,6 @@
     }
 
     @Override
-    protected String getCategoryKey() {
-        return CategoryKey.CATEGORY_ACCOUNT;
-    }
-
-    @Override
     protected String getLogTag() {
         return TAG;
     }
diff --git a/src/com/android/settings/applications/ActivityInfoWrapper.java b/src/com/android/settings/applications/ActivityInfoWrapper.java
new file mode 100644
index 0000000..4cb6e68
--- /dev/null
+++ b/src/com/android/settings/applications/ActivityInfoWrapper.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications;
+
+/**
+ * This interface replicates a subset of the android.content.pm.ActivityInfo. The interface
+ * exists so that we can use a thin wrapper around the ActivityInfo in production code and a mock in
+ * tests.
+ */
+public interface ActivityInfoWrapper {
+
+    /**
+     * Returns whether this activity supports picture-in-picture.
+     */
+    boolean supportsPictureInPicture();
+}
diff --git a/src/com/android/settings/applications/ActivityInfoWrapperImpl.java b/src/com/android/settings/applications/ActivityInfoWrapperImpl.java
new file mode 100644
index 0000000..b70a1e8
--- /dev/null
+++ b/src/com/android/settings/applications/ActivityInfoWrapperImpl.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications;
+
+import android.content.pm.ActivityInfo;
+
+public class ActivityInfoWrapperImpl implements ActivityInfoWrapper {
+
+    private final ActivityInfo mInfo;
+
+    public ActivityInfoWrapperImpl(ActivityInfo info) {
+        mInfo = info;
+    }
+
+    @Override
+    public boolean supportsPictureInPicture() {
+        return mInfo.supportsPictureInPicture();
+    }
+}
diff --git a/src/com/android/settings/applications/AdvancedAppSettings.java b/src/com/android/settings/applications/AdvancedAppSettings.java
index 5bce24d..e59f94b 100644
--- a/src/com/android/settings/applications/AdvancedAppSettings.java
+++ b/src/com/android/settings/applications/AdvancedAppSettings.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2017 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,14 +20,19 @@
 
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.settings.R;
-import com.android.settings.Utils;
+import com.android.settings.applications.defaultapps.DefaultBrowserPreferenceController;
+import com.android.settings.applications.defaultapps.DefaultEmergencyPreferenceController;
+import com.android.settings.applications.defaultapps.DefaultHomePreferenceController;
+import com.android.settings.applications.defaultapps.DefaultPhonePreferenceController;
+import com.android.settings.applications.defaultapps.DefaultSmsPreferenceController;
+import com.android.settings.applications.defaultapps.DefaultWorkBrowserPreferenceController;
+import com.android.settings.applications.defaultapps.DefaultWorkPhonePreferenceController;
 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;
 
@@ -36,25 +41,26 @@
     static final String TAG = "AdvancedAppSettings";
 
     @Override
-    protected String getCategoryKey() {
-        return CategoryKey.CATEGORY_APPS_DEFAULT;
-    }
-
-    @Override
     protected String getLogTag() {
         return TAG;
     }
 
     @Override
     protected int getPreferenceScreenResId() {
-        return mDashboardFeatureProvider.isEnabled()
-                ? R.xml.app_default_settings
-                : R.xml.advanced_apps;
+        return R.xml.app_default_settings;
     }
 
     @Override
     protected List<PreferenceController> getPreferenceControllers(Context context) {
-        return null;
+        final List<PreferenceController> controllers = new ArrayList<>();
+        controllers.add(new DefaultBrowserPreferenceController(context));
+        controllers.add(new DefaultWorkBrowserPreferenceController(context));
+        controllers.add(new DefaultPhonePreferenceController(context));
+        controllers.add(new DefaultWorkPhonePreferenceController(context));
+        controllers.add(new DefaultSmsPreferenceController(context));
+        controllers.add(new DefaultEmergencyPreferenceController(context));
+        controllers.add(new DefaultHomePreferenceController(context));
+        return controllers;
     }
 
     @Override
@@ -68,16 +74,8 @@
                 public List<SearchIndexableResource> getXmlResourcesToIndex(
                         Context context, boolean enabled) {
                     final SearchIndexableResource sir = new SearchIndexableResource(context);
-                    sir.xmlResId = FeatureFactory.getFactory(context)
-                            .getDashboardFeatureProvider(context).isEnabled()
-                            ? R.xml.app_default_settings
-                            : R.xml.advanced_apps;
+                    sir.xmlResId = R.xml.app_default_settings;
                     return Arrays.asList(sir);
                 }
-
-                @Override
-                public List<String> getNonIndexableKeys(Context context) {
-                    return Utils.getNonIndexable(R.xml.advanced_apps, context);
-                }
             };
 }
diff --git a/src/com/android/settings/applications/AppAndNotificationDashboardFragment.java b/src/com/android/settings/applications/AppAndNotificationDashboardFragment.java
index be70f86..5dda9c1 100644
--- a/src/com/android/settings/applications/AppAndNotificationDashboardFragment.java
+++ b/src/com/android/settings/applications/AppAndNotificationDashboardFragment.java
@@ -25,7 +25,6 @@
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.search.BaseSearchIndexProvider;
-import com.android.settingslib.drawer.CategoryKey;
 
 import java.util.Arrays;
 import java.util.List;
@@ -40,17 +39,6 @@
     }
 
     @Override
-    public void onAttach(Context context) {
-        super.onAttach(context);
-        mProgressiveDisclosureMixin.setTileLimit(3);
-    }
-
-    @Override
-    protected String getCategoryKey() {
-        return CategoryKey.CATEGORY_APPS;
-    }
-
-    @Override
     protected String getLogTag() {
         return TAG;
     }
diff --git a/src/com/android/settings/applications/AppStateInstallAppsBridge.java b/src/com/android/settings/applications/AppStateInstallAppsBridge.java
new file mode 100644
index 0000000..6d22e25
--- /dev/null
+++ b/src/com/android/settings/applications/AppStateInstallAppsBridge.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.settings.applications;
+
+import android.Manifest;
+import android.app.AppGlobals;
+import android.app.AppOpsManager;
+import android.content.Context;
+import android.content.pm.IPackageManager;
+import android.content.pm.PackageManager;
+import android.os.RemoteException;
+import android.util.Log;
+
+import com.android.internal.util.ArrayUtils;
+import com.android.settings.R;
+import com.android.settingslib.applications.ApplicationsState;
+import com.android.settingslib.applications.ApplicationsState.AppEntry;
+import com.android.settingslib.applications.ApplicationsState.AppFilter;
+
+import java.util.List;
+
+/**
+ * Connects app op info to the ApplicationsState. Wraps around the generic AppStateBaseBridge
+ * class to tailor to the semantics of {@link AppOpsManager#OP_REQUEST_INSTALL_PACKAGES}
+ * Also provides app filters that can use the info.
+ */
+public class AppStateInstallAppsBridge extends AppStateBaseBridge {
+
+    private static final String TAG = AppStateInstallAppsBridge.class.getSimpleName();
+
+    private final IPackageManager mIpm;
+    private final AppOpsManager mAppOpsManager;
+    private final Context mContext;
+
+    public AppStateInstallAppsBridge(Context context, ApplicationsState appState,
+            Callback callback) {
+        super(appState, callback);
+        mContext = context;
+        mIpm = AppGlobals.getPackageManager();
+        mAppOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
+    }
+
+    @Override
+    protected void updateExtraInfo(AppEntry app, String packageName, int uid) {
+        app.extraInfo = createInstallAppsStateFor(packageName, uid);
+    }
+
+    @Override
+    protected void loadAllExtraInfo() {
+        // TODO: consider making this a batch operation with a single binder call
+        final List<AppEntry> allApps = mAppSession.getAllApps();
+        for (int i = 0; i < allApps.size(); i++) {
+            AppEntry currentEntry = allApps.get(i);
+            updateExtraInfo(currentEntry, currentEntry.info.packageName, currentEntry.info.uid);
+        }
+    }
+
+    private boolean hasRequestedAppOpPermission(String permission, String packageName) {
+        try {
+            String[] packages = mIpm.getAppOpPermissionPackages(permission);
+            return ArrayUtils.contains(packages, packageName);
+        } catch (RemoteException exc) {
+            Log.e(TAG, "PackageManager dead. Cannot get permission info");
+            return false;
+        }
+    }
+
+    private boolean hasPermission(String permission, int uid) {
+        try {
+            int result = mIpm.checkUidPermission(permission, uid);
+            return result == PackageManager.PERMISSION_GRANTED;
+        } catch (RemoteException e) {
+            Log.e(TAG, "PackageManager dead. Cannot get permission info");
+            return false;
+        }
+    }
+
+    private int getAppOpMode(int appOpCode, int uid, String packageName) {
+        return mAppOpsManager.checkOpNoThrow(appOpCode, uid, packageName);
+    }
+
+    InstallAppsState createInstallAppsStateFor(String packageName, int uid) {
+        final InstallAppsState appState = new InstallAppsState();
+        appState.permissionRequested = hasRequestedAppOpPermission(
+                Manifest.permission.REQUEST_INSTALL_PACKAGES, packageName);
+        appState.permissionGranted = hasPermission(Manifest.permission.REQUEST_INSTALL_PACKAGES,
+                uid);
+        appState.appOpMode = getAppOpMode(AppOpsManager.OP_REQUEST_INSTALL_PACKAGES, uid,
+                packageName);
+        return appState;
+    }
+
+    /**
+     * Collection of information to be used as {@link AppEntry#extraInfo} objects
+     */
+    public static class InstallAppsState {
+        boolean permissionRequested;
+        boolean permissionGranted;
+        int appOpMode;
+
+        public InstallAppsState() {
+            this.appOpMode = AppOpsManager.MODE_DEFAULT;
+        }
+
+        public boolean canInstallApps() {
+            if (appOpMode == AppOpsManager.MODE_DEFAULT) {
+                return permissionGranted;
+            } else {
+                return appOpMode == AppOpsManager.MODE_ALLOWED;
+            }
+        }
+
+        public int getSummary() {
+            return canInstallApps() ? R.string.external_source_trusted
+                    : R.string.external_source_untrusted;
+        }
+
+        @Override
+        public String toString() {
+            StringBuilder sb = new StringBuilder("[permissionGranted: " + permissionGranted);
+            sb.append(", permissionRequested: " + permissionRequested);
+            sb.append(", appOpMode: " + appOpMode);
+            sb.append("]");
+            return sb.toString();
+        }
+    }
+
+    static final AppFilter FILTER_APP_SOURCES = new AppFilter() {
+
+        @Override
+        public void init() {
+        }
+
+        @Override
+        public boolean filterApp(AppEntry info) {
+            if (info.extraInfo == null || !(info.extraInfo instanceof InstallAppsState)) {
+                return false;
+            }
+            InstallAppsState state = (InstallAppsState) info.extraInfo;
+            return (state.appOpMode != AppOpsManager.MODE_DEFAULT) || state.permissionRequested;
+        }
+    };
+}
diff --git a/src/com/android/settings/applications/AppWithAdminGrantedPermissionsCounter.java b/src/com/android/settings/applications/AppWithAdminGrantedPermissionsCounter.java
new file mode 100644
index 0000000..52f1da5
--- /dev/null
+++ b/src/com/android/settings/applications/AppWithAdminGrantedPermissionsCounter.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+package com.android.settings.applications;
+
+import android.app.admin.DevicePolicyManager;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.os.Build;
+import android.os.RemoteException;
+import android.os.UserHandle;
+
+import com.android.settings.enterprise.DevicePolicyManagerWrapper;
+
+/**
+ * Counts installed apps across all users that have been granted one or more specific permissions by
+ * the admin.
+ */
+public abstract class AppWithAdminGrantedPermissionsCounter extends AppCounter {
+
+    private final String[] mPermissions;
+    private final PackageManagerWrapper mPackageManager;
+    private final IPackageManagerWrapper mPackageManagerService;
+    private final DevicePolicyManagerWrapper mDevicePolicyManager;
+
+    public AppWithAdminGrantedPermissionsCounter(Context context, String[] permissions,
+            PackageManagerWrapper packageManager, IPackageManagerWrapper packageManagerService,
+            DevicePolicyManagerWrapper devicePolicyManager) {
+        super(context, packageManager);
+        mPermissions = permissions;
+        mPackageManager = packageManager;
+        mPackageManagerService = packageManagerService;
+        mDevicePolicyManager = devicePolicyManager;
+    }
+
+    @Override
+    protected boolean includeInCount(ApplicationInfo info) {
+        if (info.targetSdkVersion >= Build.VERSION_CODES.M) {
+            // The app uses run-time permissions. Check whether one or more of the permissions were
+            // granted by enterprise policy.
+            for (final String permission : mPermissions) {
+                if (mDevicePolicyManager.getPermissionGrantState(null /* admin */, info.packageName,
+                        permission) == DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED) {
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        // The app uses install-time permissions. Check whether the app requested one or more of the
+        // permissions and was installed by enterprise policy, implicitly granting permissions.
+        if (mPackageManager.getInstallReason(info.packageName,
+                new UserHandle(UserHandle.getUserId(info.uid)))
+                        != PackageManager.INSTALL_REASON_POLICY) {
+            return false;
+        }
+        try {
+            for (final String permission : mPermissions) {
+                if (mPackageManagerService.checkUidPermission(permission, info.uid)
+                        == PackageManager.PERMISSION_GRANTED) {
+                    return true;
+                }
+            }
+        } catch (RemoteException exception) {
+        }
+        return false;
+    }
+}
diff --git a/src/com/android/settings/applications/ApplicationFeatureProvider.java b/src/com/android/settings/applications/ApplicationFeatureProvider.java
index 1db33a6..fccbbd3 100644
--- a/src/com/android/settings/applications/ApplicationFeatureProvider.java
+++ b/src/com/android/settings/applications/ApplicationFeatureProvider.java
@@ -17,8 +17,11 @@
 package com.android.settings.applications;
 
 import android.app.Fragment;
+import android.content.Intent;
 import android.view.View;
 
+import java.util.Set;
+
 public interface ApplicationFeatureProvider {
 
     /**
@@ -35,17 +38,67 @@
      * Asynchronously calculates the total number of apps installed on the device, across all users
      * and managed profiles.
      *
-     * @param installReason Only consider packages with this install reason; may be any install
-     *         reason defined in {@link android.content.pm.PackageManager} or
-     *         {@link #IGNORE_INSTALL_REASON} to count all packages, irrespective of install reason.
+     * @param installReason Only consider apps with this install reason; may be any install reason
+     *         defined in {@link android.content.pm.PackageManager} or
+     *         {@link #IGNORE_INSTALL_REASON} to count all apps, irrespective of install reason.
      * @param callback The callback to invoke with the result
      */
-    void calculateNumberOfInstalledApps(int installReason, NumberOfInstalledAppsCallback callback);
+    void calculateNumberOfInstalledApps(int installReason, NumberOfAppsCallback callback);
 
     /**
-     * Callback that receives the total number of packages installed on the device.
+     * Asynchronously calculates the total number of apps installed on the device, across all users
+     * and managed profiles, that have been granted one or more of the given permissions by the
+     * admin.
+     *
+     * @param permissions Only consider apps that have been granted one or more of these permissions
+     *        by the admin, either at run-time or install-time
+     * @param callback The callback to invoke with the result
      */
-    interface NumberOfInstalledAppsCallback {
-        void onNumberOfInstalledAppsResult(int num);
+    void calculateNumberOfAppsWithAdminGrantedPermissions(String[] permissions,
+            NumberOfAppsCallback callback);
+
+    /**
+     * Return the persistent preferred activities configured by the admin for the current user and
+     * all its managed profiles. A persistent preferred activity is an activity that the admin
+     * configured to always handle a given intent (e.g. open browser), even if the user has other
+     * apps installed that would also be able to handle the intent.
+     *
+     * @param intent The intents for which to find persistent preferred activities
+     *
+     * @return the persistent preferred activites for the given intent
+     */
+    Set<PersistentPreferredActivityInfo> findPersistentPreferredActivities(Intent[] intents);
+
+    /**
+     * Callback that receives the number of packages installed on the device.
+     */
+    interface NumberOfAppsCallback {
+        void onNumberOfAppsResult(int num);
+    }
+
+    public static class PersistentPreferredActivityInfo {
+        public final String packageName;
+        public final int userId;
+
+        public PersistentPreferredActivityInfo(String packageName, int userId) {
+            this.packageName = packageName;
+            this.userId = userId;
+        }
+
+        @Override
+        public boolean equals(Object other) {
+            if (!(other instanceof PersistentPreferredActivityInfo)) {
+                return false;
+            }
+            final PersistentPreferredActivityInfo otherActivityInfo
+                    = (PersistentPreferredActivityInfo) other;
+            return otherActivityInfo.packageName.equals(packageName)
+                    && otherActivityInfo.userId == userId;
+        }
+
+        @Override
+        public int hashCode() {
+            return packageName.hashCode() ^ userId;
+        }
     }
 }
diff --git a/src/com/android/settings/applications/ApplicationFeatureProviderImpl.java b/src/com/android/settings/applications/ApplicationFeatureProviderImpl.java
index 902008c..2d2bce0 100644
--- a/src/com/android/settings/applications/ApplicationFeatureProviderImpl.java
+++ b/src/com/android/settings/applications/ApplicationFeatureProviderImpl.java
@@ -18,21 +18,38 @@
 
 import android.app.Fragment;
 import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ComponentInfo;
+import android.content.pm.ProviderInfo;
+import android.content.pm.ResolveInfo;
+import android.content.pm.ServiceInfo;
 import android.content.pm.UserInfo;
+import android.os.RemoteException;
+import android.os.UserHandle;
 import android.os.UserManager;
+import android.util.ArraySet;
 import android.view.View;
 
+import com.android.settings.enterprise.DevicePolicyManagerWrapper;
+
 import java.util.List;
+import java.util.Set;
 
 public class ApplicationFeatureProviderImpl implements ApplicationFeatureProvider {
 
     private final Context mContext;
     private final PackageManagerWrapper mPm;
+    private final IPackageManagerWrapper mPms;
+    private final DevicePolicyManagerWrapper mDpm;
     private final UserManager mUm;
 
-    public ApplicationFeatureProviderImpl(Context context, PackageManagerWrapper pm) {
+    public ApplicationFeatureProviderImpl(Context context, PackageManagerWrapper pm,
+            IPackageManagerWrapper pms, DevicePolicyManagerWrapper dpm) {
         mContext = context.getApplicationContext();
         mPm = pm;
+        mPms = pms;
+        mDpm = dpm;
         mUm = UserManager.get(mContext);
     }
 
@@ -42,22 +59,84 @@
     }
 
     @Override
-    public void calculateNumberOfInstalledApps(int installReason,
-            NumberOfInstalledAppsCallback callback) {
-        new AllUserInstalledAppCounter(installReason, callback).execute();
+    public void calculateNumberOfInstalledApps(int installReason, NumberOfAppsCallback callback) {
+        new AllUserInstalledAppCounter(mContext, installReason, mPm, callback).execute();
     }
 
-    private class AllUserInstalledAppCounter extends InstalledAppCounter {
-        private NumberOfInstalledAppsCallback mCallback;
+    @Override
+    public void calculateNumberOfAppsWithAdminGrantedPermissions(String[] permissions,
+            NumberOfAppsCallback callback) {
+        new AllUserAppWithAdminGrantedPermissionsCounter(mContext, permissions, mPm, mPms, mDpm,
+                callback).execute();
+    }
 
-        AllUserInstalledAppCounter(int installReason, NumberOfInstalledAppsCallback callback) {
-            super(mContext, installReason, ApplicationFeatureProviderImpl.this.mPm);
+    @Override
+    public Set<PersistentPreferredActivityInfo> findPersistentPreferredActivities(
+            Intent[] intents) {
+        final Set<PersistentPreferredActivityInfo> activities = new ArraySet<>();
+        final List<UserHandle> users = mUm.getUserProfiles();
+        for (final Intent intent : intents) {
+            for (final UserHandle user : users) {
+                final int userId = user.getIdentifier();
+                try {
+                    final ResolveInfo resolveInfo = mPms.findPersistentPreferredActivity(intent,
+                            userId);
+                    if (resolveInfo != null) {
+                        ComponentInfo componentInfo = null;
+                        if (resolveInfo.activityInfo != null) {
+                            componentInfo = resolveInfo.activityInfo;
+                        } else if (resolveInfo.serviceInfo != null) {
+                            componentInfo = resolveInfo.serviceInfo;
+                        } else if (resolveInfo.providerInfo != null) {
+                            componentInfo = resolveInfo.providerInfo;
+                        }
+                        if (componentInfo != null) {
+                            activities.add(new PersistentPreferredActivityInfo(
+                                    componentInfo.packageName, userId));
+                        }
+                    }
+                } catch (RemoteException exception) {
+                }
+            }
+
+        }
+        return activities;
+    }
+
+    private static class AllUserInstalledAppCounter extends InstalledAppCounter {
+        private NumberOfAppsCallback mCallback;
+
+        AllUserInstalledAppCounter(Context context, int installReason,
+                PackageManagerWrapper packageManager, NumberOfAppsCallback callback) {
+            super(context, installReason, packageManager);
             mCallback = callback;
         }
 
         @Override
         protected void onCountComplete(int num) {
-            mCallback.onNumberOfInstalledAppsResult(num);
+            mCallback.onNumberOfAppsResult(num);
+        }
+
+        @Override
+        protected List<UserInfo> getUsersToCount() {
+            return mUm.getUsers(true /* excludeDying */);
+        }
+    }
+
+    private static class AllUserAppWithAdminGrantedPermissionsCounter extends
+            AppWithAdminGrantedPermissionsCounter {
+        private NumberOfAppsCallback mCallback;
+
+        AllUserAppWithAdminGrantedPermissionsCounter(Context context, String[] permissions,
+                PackageManagerWrapper packageManager, IPackageManagerWrapper packageManagerService,
+                DevicePolicyManagerWrapper devicePolicyManager, NumberOfAppsCallback callback) {
+            super(context, permissions, packageManager, packageManagerService, devicePolicyManager);
+            mCallback = callback;
+        }
+
+        @Override
+        protected void onCountComplete(int num) {
+            mCallback.onNumberOfAppsResult(num);
         }
 
         @Override
diff --git a/src/com/android/settings/applications/DefaultAutoFillPreference.java b/src/com/android/settings/applications/DefaultAutoFillPreference.java
new file mode 100644
index 0000000..9ed2e19
--- /dev/null
+++ b/src/com/android/settings/applications/DefaultAutoFillPreference.java
@@ -0,0 +1,141 @@
+/**
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications;
+
+import android.annotation.Nullable;
+import android.app.ActivityManager;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.content.pm.ServiceInfo;
+import android.os.Parcelable;
+import android.provider.Settings;
+import android.service.autofill.AutoFillService;
+import android.service.autofill.AutoFillServiceInfo;
+import android.util.AttributeSet;
+import android.util.Log;
+
+import com.android.settings.R;
+import com.android.settings.AppListPreferenceWithSettings;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class DefaultAutoFillPreference extends AppListPreferenceWithSettings {
+    private static final String TAG = "DefaultAutoFill";
+
+    private static final String SETTING = Settings.Secure.AUTO_FILL_SERVICE;
+
+    public DefaultAutoFillPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+
+        setSavesState(false);
+        setShowItemNone(true);
+
+        refreshData();
+    }
+
+    @Override
+    protected CharSequence getConfirmationMessage(String value) {
+        if (value == null || value.isEmpty()) {
+            return null;
+        }
+
+        int index = findIndexOfValue(value);
+        CharSequence[] entries = getEntries();
+        if (index < 0 || index >= entries.length) {
+            return null;
+        }
+
+        CharSequence entry = entries[index];
+        return getContext().getString(R.string.autofill_confirmation_message, entry);
+    }
+
+    @Override
+    protected boolean persistString(String value) {
+        Settings.Secure.putString(getContext().getContentResolver(), SETTING, value);
+        refreshData();
+        return true;
+    }
+
+    private void refreshData() {
+        ComponentName selectedComponent = getSelectedComponentName();
+        List<AutoFillServiceInfo> infos = getInfos();
+
+        AutoFillServiceInfo selectedInfo = null;
+        int numberOfComponents = infos.size();
+        ComponentName[] components = new ComponentName[numberOfComponents];
+        for (int i = 0; i < numberOfComponents; ++i) {
+            AutoFillServiceInfo info = infos.get(i);
+            ServiceInfo serviceInfo = info.getServiceInfo();
+            ComponentName component =
+                    new ComponentName(serviceInfo.packageName, serviceInfo.name);
+            components[i] = component;
+
+            if (component.equals(selectedComponent)) {
+                selectedInfo = info;
+            }
+        }
+
+        ComponentName selectedComponentSettings = null;
+        if (selectedInfo != null) {
+            String settingsActivity = selectedInfo.getSettingsActivity();
+            selectedComponentSettings = settingsActivity != null
+                    ? new ComponentName(selectedComponent.getPackageName(), settingsActivity)
+                    : null;
+        } else { // selected component not found
+            Log.w(TAG, "Selected AutoFillService not found " + selectedComponent);
+            selectedComponent = null;
+            selectedComponentSettings = null;
+        }
+
+        setComponentNames(components, selectedComponent);
+        setSettingsComponent(selectedComponentSettings);
+        setSummary(getEntry());
+    }
+
+    @Nullable
+    private ComponentName getSelectedComponentName() {
+        String componentString =
+                Settings.Secure.getString(getContext().getContentResolver(), SETTING);
+        if (componentString == null) {
+            return null;
+        }
+
+        return ComponentName.unflattenFromString(componentString);
+    }
+
+    private List<AutoFillServiceInfo> getInfos() {
+        PackageManager pm = getContext().getPackageManager();
+        List<ResolveInfo> resolveInfos = pm.queryIntentServices(
+                new Intent(AutoFillService.SERVICE_INTERFACE),
+                PackageManager.GET_META_DATA);
+        List<AutoFillServiceInfo> infos = new ArrayList<>(resolveInfos.size());
+        for (ResolveInfo resolveInfo : resolveInfos) {
+            ServiceInfo serviceInfo = resolveInfo.serviceInfo;
+            AutoFillServiceInfo info = new AutoFillServiceInfo(pm, serviceInfo);
+            if (info.getParseError() == null) {
+                infos.add(info);
+            } else {
+                Log.i(TAG, "Invalid AutoFillService " + serviceInfo + ": " + info.getParseError());
+            }
+        }
+        return infos;
+    }
+}
diff --git a/src/com/android/settings/applications/DefaultBrowserPreference.java b/src/com/android/settings/applications/DefaultBrowserPreference.java
deleted file mode 100644
index 9d84e1e..0000000
--- a/src/com/android/settings/applications/DefaultBrowserPreference.java
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.settings.applications;
-
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.net.Uri;
-import android.os.Handler;
-import android.os.UserHandle;
-import android.text.TextUtils;
-import android.util.AttributeSet;
-import android.util.Log;
-
-import com.android.internal.content.PackageMonitor;
-import com.android.settings.AppListPreference;
-import com.android.settings.R;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class DefaultBrowserPreference extends AppListPreference {
-
-    private static final String TAG = "DefaultBrowserPref";
-    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
-
-    private static final long DELAY_UPDATE_BROWSER_MILLIS = 500;
-    private static final Intent BROWSE_PROBE = new Intent()
-            .setAction(Intent.ACTION_VIEW)
-            .addCategory(Intent.CATEGORY_BROWSABLE)
-            .setData(Uri.parse("http:"));
-
-    private final Handler mHandler = new Handler();
-    private final PackageManager mPm;
-
-    public DefaultBrowserPreference(Context context, AttributeSet attrs) {
-        super(context, attrs);
-
-        mPm = context.getPackageManager();
-        refreshBrowserApps();
-    }
-
-    @Override
-    public void onAttached() {
-        super.onAttached();
-        updateDefaultBrowserPreference();
-        mPackageMonitor.register(getContext(), getContext().getMainLooper(), false);
-    }
-
-    @Override
-    public void onDetached() {
-        mPackageMonitor.unregister();
-        super.onDetached();
-    }
-
-    @Override
-    protected boolean persistString(String newValue) {
-        final CharSequence packageName = newValue;
-        if (TextUtils.isEmpty(packageName)) {
-            return false;
-        }
-        boolean result = mPm.setDefaultBrowserPackageNameAsUser(
-                packageName.toString(), mUserId);
-        if (result) {
-            setSummary("%s");
-        }
-        return result && super.persistString(newValue);
-    }
-
-    public void refreshBrowserApps() {
-        List<String> browsers = resolveBrowserApps();
-
-        setPackageNames(browsers.toArray(new String[browsers.size()]), null);
-    }
-
-    private void updateDefaultBrowserPreference() {
-        refreshBrowserApps();
-
-        final PackageManager pm = getContext().getPackageManager();
-
-        String packageName = pm.getDefaultBrowserPackageNameAsUser(mUserId);
-        if (!TextUtils.isEmpty(packageName)) {
-            // Check if the default Browser package is still there
-            final Intent intent = new Intent(BROWSE_PROBE)
-                    .setPackage(packageName);
-
-            final ResolveInfo info = mPm.resolveActivityAsUser(intent, 0, mUserId);
-            if (info != null) {
-                setValue(packageName);
-                setSummary("%s");
-            } else {
-                setSummary(R.string.default_browser_title_none);
-            }
-        } else {
-            if (DEBUG) Log.d(TAG, "No default browser app.");
-            setSoleAppLabelAsSummary();
-        }
-    }
-
-    private List<String> resolveBrowserApps() {
-        List<String> result = new ArrayList<>();
-
-        // Resolve that intent and check that the handleAllWebDataURI boolean is set
-        List<ResolveInfo> list = mPm.queryIntentActivitiesAsUser(BROWSE_PROBE,
-                PackageManager.MATCH_ALL, mUserId);
-
-        final int count = list.size();
-        for (int i = 0; i < count; i++) {
-            ResolveInfo info = list.get(i);
-            if (info.activityInfo == null || result.contains(info.activityInfo.packageName)
-                    || !info.handleAllWebDataURI) {
-                continue;
-            }
-
-            result.add(info.activityInfo.packageName);
-        }
-
-        return result;
-    }
-
-    @Override
-    protected CharSequence getSoleAppLabel() {
-        // Resolve that intent and check that the handleAllWebDataURI boolean is set
-        List<ResolveInfo> list = mPm.queryIntentActivitiesAsUser(BROWSE_PROBE,
-                PackageManager.MATCH_ALL, mUserId);
-        if (list.size() == 1) {
-            return list.get(0).loadLabel(mPm);
-        }
-        return null;
-    }
-
-    private final Runnable mUpdateRunnable = new Runnable() {
-        @Override
-        public void run() {
-            updateDefaultBrowserPreference();
-        }
-    };
-
-    private final PackageMonitor mPackageMonitor = new PackageMonitor() {
-        @Override
-        public void onPackageAdded(String packageName, int uid) {
-            sendUpdate();
-        }
-
-        @Override
-        public void onPackageAppeared(String packageName, int reason) {
-            sendUpdate();
-        }
-
-        @Override
-        public void onPackageDisappeared(String packageName, int reason) {
-            sendUpdate();
-        }
-
-        @Override
-        public void onPackageRemoved(String packageName, int uid) {
-            sendUpdate();
-        }
-
-        private void sendUpdate() {
-            mHandler.postDelayed(mUpdateRunnable, DELAY_UPDATE_BROWSER_MILLIS);
-        }
-    };
-
-    public static boolean hasBrowserPreference(String pkg, Context context) {
-        Intent intent = new Intent();
-        intent.setAction(Intent.ACTION_VIEW);
-        intent.addCategory(Intent.CATEGORY_BROWSABLE);
-        intent.setData(Uri.parse("http:"));
-        intent.setPackage(pkg);
-        final List<ResolveInfo> resolveInfos =
-                context.getPackageManager().queryIntentActivities(intent, 0);
-        return resolveInfos != null && resolveInfos.size() != 0;
-    }
-
-    public static boolean isBrowserDefault(String pkg, Context context) {
-        String defaultPackage = context.getPackageManager()
-                .getDefaultBrowserPackageNameAsUser(UserHandle.myUserId());
-        return defaultPackage != null && defaultPackage.equals(pkg);
-    }
-}
diff --git a/src/com/android/settings/applications/DefaultEmergencyPreference.java b/src/com/android/settings/applications/DefaultEmergencyPreference.java
deleted file mode 100644
index dd4dc2e..0000000
--- a/src/com/android/settings/applications/DefaultEmergencyPreference.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * 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
- */
-
-package com.android.settings.applications;
-
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.os.AsyncTask;
-import android.provider.Settings;
-import android.telephony.TelephonyManager;
-import android.text.TextUtils;
-import android.util.ArraySet;
-import android.util.AttributeSet;
-
-import com.android.settings.AppListPreference;
-import com.android.settings.R;
-import com.android.settings.SelfAvailablePreference;
-import com.android.settings.Utils;
-
-import java.util.List;
-import java.util.Objects;
-import java.util.Set;
-
-/**
- * A preference for choosing the default emergency app
- */
-public class DefaultEmergencyPreference extends AppListPreference
-        implements SelfAvailablePreference {
-
-    private static final boolean DEFAULT_EMERGENCY_APP_IS_CONFIGURABLE = false;
-    private final ContentResolver mContentResolver;
-
-    public static final Intent QUERY_INTENT = new Intent(
-            TelephonyManager.ACTION_EMERGENCY_ASSISTANCE);
-
-    public DefaultEmergencyPreference(Context context, AttributeSet attrs) {
-        super(context, attrs);
-        mContentResolver = context.getContentResolver();
-        load();
-    }
-
-    @Override
-    protected CharSequence getConfirmationMessage(String value) {
-        return Utils.isPackageDirectBootAware(getContext(), value) ? null
-                : getContext().getText(R.string.direct_boot_unaware_dialog_message);
-    }
-
-    @Override
-    protected boolean persistString(String value) {
-        String previousValue = Settings.Secure.getString(mContentResolver,
-                Settings.Secure.EMERGENCY_ASSISTANCE_APPLICATION);
-
-        if (!TextUtils.isEmpty(value) && !Objects.equals(value, previousValue)) {
-            Settings.Secure.putString(mContentResolver,
-                    Settings.Secure.EMERGENCY_ASSISTANCE_APPLICATION,
-                    value);
-        }
-        setSummary(getEntry());
-        return true;
-    }
-
-    private void load() {
-        new AsyncTask<Void, Void, Set<String>>() {
-            @Override
-            protected Set<String> doInBackground(Void[] params) {
-                return resolveAssistPackageAndQueryApps();
-            }
-
-            @Override
-            protected void onPostExecute(Set<String> entries) {
-                String currentPkg = Settings.Secure.getString(mContentResolver,
-                        Settings.Secure.EMERGENCY_ASSISTANCE_APPLICATION);
-                setPackageNames(entries.toArray(new String[entries.size()]), currentPkg);
-            }
-        }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
-    }
-
-    private Set<String> resolveAssistPackageAndQueryApps() {
-        Set<String> packages = new ArraySet<>();
-
-        PackageManager packageManager = getContext().getPackageManager();
-        List<ResolveInfo> infos = packageManager.queryIntentActivities(QUERY_INTENT, 0);
-
-        PackageInfo bestMatch = null;
-        final int size = infos.size();
-        for (int i = 0; i < size; i++) {
-            ResolveInfo info = infos.get(i);
-            if (info == null || info.activityInfo == null
-                    || packages.contains(info.activityInfo.packageName)) {
-                continue;
-            }
-
-            String packageName = info.activityInfo.packageName;
-
-            packages.add(packageName);
-
-            PackageInfo packageInfo;
-            try {
-                packageInfo = packageManager.getPackageInfo(packageName, 0);
-            } catch (PackageManager.NameNotFoundException e) {
-                continue;
-            }
-
-            // Get earliest installed system app.
-            if (isSystemApp(packageInfo) && (bestMatch == null ||
-                    bestMatch.firstInstallTime > packageInfo.firstInstallTime)) {
-                bestMatch = packageInfo;
-            }
-        }
-
-        String defaultPackage = Settings.Secure.getString(mContentResolver,
-                Settings.Secure.EMERGENCY_ASSISTANCE_APPLICATION);
-        boolean defaultMissing = TextUtils.isEmpty(defaultPackage)
-                || !packages.contains(defaultPackage);
-        if (bestMatch != null && defaultMissing) {
-            Settings.Secure.putString(mContentResolver,
-                    Settings.Secure.EMERGENCY_ASSISTANCE_APPLICATION,
-                    bestMatch.packageName);
-        }
-
-        return packages;
-    }
-
-    private static boolean isCapable(Context context) {
-        return TelephonyManager.EMERGENCY_ASSISTANCE_ENABLED
-                && context.getResources().getBoolean(
-                com.android.internal.R.bool.config_voice_capable);
-    }
-
-    private static boolean isSystemApp(PackageInfo info) {
-        return info.applicationInfo != null
-                && (info.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0;
-    }
-
-    public boolean isAvailable(Context context) {
-        return DEFAULT_EMERGENCY_APP_IS_CONFIGURABLE
-                && isCapable(context)
-                && context.getPackageManager().resolveActivity(QUERY_INTENT, 0) != null;
-    }
-
-    public static boolean hasEmergencyPreference(String pkg, Context context) {
-        Intent i = new Intent(QUERY_INTENT);
-        i.setPackage(pkg);
-        final List<ResolveInfo> resolveInfos =
-                context.getPackageManager().queryIntentActivities(i, 0);
-        return resolveInfos != null && resolveInfos.size() != 0;
-    }
-
-    public static boolean isEmergencyDefault(String pkg, Context context) {
-        String defaultPackage = Settings.Secure.getString(context.getContentResolver(),
-                Settings.Secure.EMERGENCY_ASSISTANCE_APPLICATION);
-        return defaultPackage != null && defaultPackage.equals(pkg);
-    }
-}
diff --git a/src/com/android/settings/applications/DefaultHomePreference.java b/src/com/android/settings/applications/DefaultHomePreference.java
deleted file mode 100644
index 46fba66..0000000
--- a/src/com/android/settings/applications/DefaultHomePreference.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the
- * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the specific language governing
- * permissions and limitations under the License.
- */
-
-package com.android.settings.applications;
-
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.pm.ActivityInfo;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.content.pm.UserInfo;
-import android.os.Build;
-import android.os.UserManager;
-import android.util.AttributeSet;
-
-import com.android.settings.AppListPreference;
-import com.android.settings.R;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class DefaultHomePreference extends AppListPreference {
-
-    private final ArrayList<ComponentName> mAllHomeComponents = new ArrayList<>();
-    private final IntentFilter mHomeFilter;
-    private final String mPackageName;
-
-    public DefaultHomePreference(Context context, AttributeSet attrs) {
-        super(context, attrs);
-        mPackageName = getContext().getPackageName();
-        mHomeFilter = new IntentFilter(Intent.ACTION_MAIN);
-        mHomeFilter.addCategory(Intent.CATEGORY_HOME);
-        mHomeFilter.addCategory(Intent.CATEGORY_DEFAULT);
-        refreshHomeOptions();
-    }
-
-    @Override
-    public void performClick() {
-        refreshHomeOptions();
-        super.performClick();
-    }
-
-    @Override
-    protected boolean persistString(String value) {
-        if (value != null) {
-            ComponentName component = ComponentName.unflattenFromString(value);
-            getContext().getPackageManager().replacePreferredActivity(mHomeFilter,
-                    IntentFilter.MATCH_CATEGORY_EMPTY,
-                    mAllHomeComponents.toArray(new ComponentName[0]), component);
-            setSummary(getEntry());
-        } else {
-            // If there is only 1 launcher, use its label as summary text.
-            setSoleAppLabelAsSummary();
-        }
-        return super.persistString(value);
-    }
-
-    @Override
-    protected CharSequence getSoleAppLabel() {
-        final PackageManager pm = getContext().getPackageManager();
-        final List<ResolveInfo> homeActivities = new ArrayList<>();
-        final List<CharSequence> appLabels = new ArrayList<>();
-
-        pm.getHomeActivities(homeActivities);
-        for (ResolveInfo candidate : homeActivities) {
-            final ActivityInfo info = candidate.activityInfo;
-            if (info.packageName.equals(mPackageName)) {
-                continue;
-            }
-            appLabels.add(info.loadLabel(pm));
-        }
-        return appLabels.size() == 1 ? appLabels.get(0) : null;
-    }
-
-    public void refreshHomeOptions() {
-        ArrayList<ResolveInfo> homeActivities = new ArrayList<>();
-        PackageManager pm = getContext().getPackageManager();
-        ComponentName currentDefaultHome = pm.getHomeActivities(homeActivities);
-        ArrayList<ComponentName> components = new ArrayList<>();
-        mAllHomeComponents.clear();
-        List<CharSequence> summaries = new ArrayList<>();
-
-        boolean mustSupportManagedProfile = hasManagedProfile();
-        for (ResolveInfo candidate : homeActivities) {
-            final ActivityInfo info = candidate.activityInfo;
-            ComponentName activityName = new ComponentName(info.packageName, info.name);
-            mAllHomeComponents.add(activityName);
-            if (info.packageName.equals(mPackageName)) {
-                continue;
-            }
-            components.add(activityName);
-            if (mustSupportManagedProfile && !launcherHasManagedProfilesFeature(candidate, pm)) {
-                summaries.add(getContext().getString(R.string.home_work_profile_not_supported));
-            } else {
-                summaries.add(null);
-            }
-        }
-        setComponentNames(components.toArray(new ComponentName[0]), currentDefaultHome,
-                summaries.toArray(new CharSequence[0]));
-    }
-
-    private boolean launcherHasManagedProfilesFeature(ResolveInfo resolveInfo, PackageManager pm) {
-        try {
-            ApplicationInfo appInfo = pm.getApplicationInfo(
-                    resolveInfo.activityInfo.packageName, 0 /* default flags */);
-            return versionNumberAtLeastL(appInfo.targetSdkVersion);
-        } catch (PackageManager.NameNotFoundException e) {
-            return false;
-        }
-    }
-
-    private boolean versionNumberAtLeastL(int versionNumber) {
-        return versionNumber >= Build.VERSION_CODES.LOLLIPOP;
-    }
-
-    private boolean hasManagedProfile() {
-        UserManager userManager = getContext().getSystemService(UserManager.class);
-        List<UserInfo> profiles = userManager.getProfiles(getContext().getUserId());
-        for (UserInfo userInfo : profiles) {
-            if (userInfo.isManagedProfile()) return true;
-        }
-        return false;
-    }
-
-    public static boolean hasHomePreference(String pkg, Context context) {
-        ArrayList<ResolveInfo> homeActivities = new ArrayList<ResolveInfo>();
-        PackageManager pm = context.getPackageManager();
-        pm.getHomeActivities(homeActivities);
-        for (int i = 0; i < homeActivities.size(); i++) {
-            if (homeActivities.get(i).activityInfo.packageName.equals(pkg)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    public static boolean isHomeDefault(String pkg, Context context) {
-        ArrayList<ResolveInfo> homeActivities = new ArrayList<ResolveInfo>();
-        PackageManager pm = context.getPackageManager();
-        ComponentName def = pm.getHomeActivities(homeActivities);
-
-        return def != null && def.getPackageName().equals(pkg);
-    }
-}
diff --git a/src/com/android/settings/applications/DefaultPhonePreference.java b/src/com/android/settings/applications/DefaultPhonePreference.java
deleted file mode 100644
index e151274..0000000
--- a/src/com/android/settings/applications/DefaultPhonePreference.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.settings.applications;
-
-import android.content.Context;
-import android.os.UserHandle;
-import android.os.UserManager;
-import android.telecom.DefaultDialerManager;
-import android.telecom.TelecomManager;
-import android.telephony.TelephonyManager;
-import android.text.TextUtils;
-import android.util.AttributeSet;
-
-import com.android.settings.AppListPreference;
-import com.android.settings.R;
-import com.android.settings.SelfAvailablePreference;
-import com.android.settings.Utils;
-
-import java.util.List;
-import java.util.Objects;
-
-public class DefaultPhonePreference extends AppListPreference implements SelfAvailablePreference {
-    public DefaultPhonePreference(Context context, AttributeSet attrs) {
-        super(context, attrs);
-        loadDialerApps();
-    }
-
-    @Override
-    protected CharSequence getConfirmationMessage(String value) {
-        return Utils.isPackageDirectBootAware(getContext(), value) ? null
-                : getContext().getText(R.string.direct_boot_unaware_dialog_message);
-    }
-
-    @Override
-    protected boolean persistString(String value) {
-        if (!TextUtils.isEmpty(value) && !Objects.equals(value, getDefaultPackage())) {
-            DefaultDialerManager.setDefaultDialerApplication(getContext(), value, mUserId);
-        }
-        setSummary(getEntry());
-        return true;
-    }
-
-    private void loadDialerApps() {
-        List<String> dialerPackages =
-                DefaultDialerManager.getInstalledDialerApplications(getContext(), mUserId);
-
-        final String[] dialers = new String[dialerPackages.size()];
-        for (int i = 0; i < dialerPackages.size(); i++) {
-            dialers[i] = dialerPackages.get(i);
-        }
-        setPackageNames(dialers, getDefaultPackage(), getSystemPackage());
-    }
-
-    private String getDefaultPackage() {
-        return DefaultDialerManager.getDefaultDialerApplication(getContext(), mUserId);
-    }
-
-    private String getSystemPackage() {
-        TelecomManager tm = TelecomManager.from(getContext());
-        return tm.getSystemDialerPackage();
-    }
-
-    @Override
-    public boolean isAvailable(Context context) {
-        final TelephonyManager tm =
-                (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
-        if (!tm.isVoiceCapable()) {
-            return false;
-        }
-
-        final UserManager um = (UserManager) context.getSystemService(Context.USER_SERVICE);
-        final boolean hasUserRestriction =
-                um.hasUserRestriction(UserManager.DISALLOW_OUTGOING_CALLS);
-        final CharSequence[] entries = getEntries();
-        return !hasUserRestriction
-                && entries != null
-                && entries.length > 0;
-    }
-
-    public static boolean hasPhonePreference(String pkg, Context context) {
-        List<String> dialerPackages =
-                DefaultDialerManager.getInstalledDialerApplications(context, UserHandle.myUserId());
-        return dialerPackages.contains(pkg);
-    }
-
-    public static boolean isPhoneDefault(String pkg, Context context) {
-        String def = DefaultDialerManager.getDefaultDialerApplication(context,
-                UserHandle.myUserId());
-        return def != null && def.equals(pkg);
-    }
-}
diff --git a/src/com/android/settings/applications/DefaultSmsPreference.java b/src/com/android/settings/applications/DefaultSmsPreference.java
deleted file mode 100644
index 96ac9a2..0000000
--- a/src/com/android/settings/applications/DefaultSmsPreference.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * 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.
- */
-package com.android.settings.applications;
-
-import android.content.ComponentName;
-import android.content.Context;
-import android.os.UserHandle;
-import android.os.UserManager;
-import android.telephony.TelephonyManager;
-import android.text.TextUtils;
-import android.util.AttributeSet;
-
-import com.android.internal.telephony.SmsApplication;
-import com.android.internal.telephony.SmsApplication.SmsApplicationData;
-import com.android.settings.AppListPreference;
-import com.android.settings.R;
-import com.android.settings.SelfAvailablePreference;
-import com.android.settings.Utils;
-
-import java.util.Collection;
-import java.util.Objects;
-
-public class DefaultSmsPreference extends AppListPreference implements SelfAvailablePreference {
-    public DefaultSmsPreference(Context context, AttributeSet attrs) {
-        super(context, attrs);
-        loadSmsApps();
-    }
-
-    private void loadSmsApps() {
-        Collection<SmsApplicationData> smsApplications =
-                SmsApplication.getApplicationCollection(getContext());
-
-        int count = smsApplications.size();
-        String[] packageNames = new String[count];
-        int i = 0;
-        for (SmsApplicationData smsApplicationData : smsApplications) {
-            packageNames[i++] = smsApplicationData.mPackageName;
-        }
-        setPackageNames(packageNames, getDefaultPackage());
-    }
-
-    private String getDefaultPackage() {
-        ComponentName appName = SmsApplication.getDefaultSmsApplication(getContext(), true);
-        if (appName != null) {
-            return appName.getPackageName();
-        }
-        return null;
-    }
-
-    @Override
-    protected CharSequence getConfirmationMessage(String value) {
-        return Utils.isPackageDirectBootAware(getContext(), value) ? null
-                : getContext().getText(R.string.direct_boot_unaware_dialog_message);
-    }
-
-    @Override
-    protected boolean persistString(String value) {
-        if (!TextUtils.isEmpty(value) && !Objects.equals(value, getDefaultPackage())) {
-            SmsApplication.setDefaultApplication(value, getContext());
-        }
-        setSummary(getEntry());
-        return true;
-    }
-
-    @Override
-    public boolean isAvailable(Context context) {
-        boolean isRestrictedUser =
-                UserManager.get(context)
-                        .getUserInfo(UserHandle.myUserId()).isRestricted();
-        TelephonyManager tm =
-                (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
-        return !isRestrictedUser && tm.isSmsCapable();
-    }
-
-    public static boolean hasSmsPreference(String pkg, Context context) {
-        Collection<SmsApplicationData> smsApplications =
-                SmsApplication.getApplicationCollection(context);
-        for (SmsApplicationData data : smsApplications) {
-            if (data.mPackageName.equals(pkg)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    public static boolean isSmsDefault(String pkg, Context context) {
-        ComponentName appName = SmsApplication.getDefaultSmsApplication(context, true);
-        return appName != null && appName.getPackageName().equals(pkg);
-    }
-}
diff --git a/src/com/android/settings/applications/DrawOverlayDetails.java b/src/com/android/settings/applications/DrawOverlayDetails.java
index dfaa95f..39b8919 100644
--- a/src/com/android/settings/applications/DrawOverlayDetails.java
+++ b/src/com/android/settings/applications/DrawOverlayDetails.java
@@ -31,10 +31,12 @@
 import android.support.v7.preference.Preference.OnPreferenceClickListener;
 import android.util.Log;
 
+import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.settings.R;
 import com.android.settings.applications.AppStateAppOpsBridge.PermissionState;
 import com.android.settings.applications.AppStateOverlayBridge.OverlayState;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.applications.ApplicationsState.AppEntry;
 
 public class DrawOverlayDetails extends AppInfoWithHeader implements OnPreferenceChangeListener,
@@ -121,11 +123,20 @@
     }
 
     private void setCanDrawOverlay(boolean newState) {
+        logSpecialPermissionChange(newState, mPackageName);
         mAppOpsManager.setMode(AppOpsManager.OP_SYSTEM_ALERT_WINDOW,
                 mPackageInfo.applicationInfo.uid, mPackageName, newState
                 ? AppOpsManager.MODE_ALLOWED : AppOpsManager.MODE_ERRORED);
     }
 
+    @VisibleForTesting
+    void logSpecialPermissionChange(boolean newState, String packageName) {
+        int logCategory = newState ? MetricsEvent.APP_SPECIAL_PERMISSION_APPDRAW_ALLOW
+                : MetricsEvent.APP_SPECIAL_PERMISSION_APPDRAW_DENY;
+        FeatureFactory.getFactory(getContext())
+                .getMetricsFeatureProvider().action(getContext(), logCategory, packageName);
+    }
+
     private boolean canDrawOverlay(String pkgName) {
         int result = mAppOpsManager.noteOpNoThrow(AppOpsManager.OP_SYSTEM_ALERT_WINDOW,
                 mPackageInfo.applicationInfo.uid, pkgName);
diff --git a/src/com/android/settings/applications/ExternalSourcesDetails.java b/src/com/android/settings/applications/ExternalSourcesDetails.java
new file mode 100644
index 0000000..fd8221c
--- /dev/null
+++ b/src/com/android/settings/applications/ExternalSourcesDetails.java
@@ -0,0 +1,102 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.settings.applications;
+
+import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+
+import android.app.AlertDialog;
+import android.app.AppOpsManager;
+import android.content.Context;
+import android.os.Bundle;
+import android.support.v14.preference.SwitchPreference;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.Preference.OnPreferenceChangeListener;
+
+import com.android.settings.R;
+import com.android.settings.applications.AppStateInstallAppsBridge.InstallAppsState;
+
+public class ExternalSourcesDetails extends AppInfoWithHeader
+        implements OnPreferenceChangeListener {
+
+    private static final String KEY_EXTERNAL_SOURCES_SETTINGS_SWITCH =
+            "external_sources_settings_switch";
+    private static final String KEY_EXTERNAL_SOURCES_SETTINGS_DESC =
+            "external_sources_settings_description";
+
+    private AppStateInstallAppsBridge mAppBridge;
+    private AppOpsManager mAppOpsManager;
+    private SwitchPreference mSwitchPref;
+    private Preference mExternalSourcesSettingsDesc;
+    private InstallAppsState mInstallAppsState;
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        final Context context = getActivity();
+        mAppBridge = new AppStateInstallAppsBridge(context, mState, null);
+        mAppOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
+
+        addPreferencesFromResource(R.xml.external_sources_details);
+        mSwitchPref = (SwitchPreference) findPreference(KEY_EXTERNAL_SOURCES_SETTINGS_SWITCH);
+        mExternalSourcesSettingsDesc = findPreference(KEY_EXTERNAL_SOURCES_SETTINGS_DESC);
+
+        getPreferenceScreen().setTitle(R.string.install_other_apps);
+        mSwitchPref.setTitle(R.string.external_source_switch_title);
+        mExternalSourcesSettingsDesc.setSummary(R.string.install_all_warning);
+
+        mSwitchPref.setOnPreferenceChangeListener(this);
+    }
+
+    @Override
+    public boolean onPreferenceChange(Preference preference, Object newValue) {
+        final boolean checked = (Boolean) newValue;
+        if (preference == mSwitchPref) {
+            if (mInstallAppsState != null && checked != mInstallAppsState.canInstallApps()) {
+                setCanInstallApps(checked);
+                refreshUi();
+            }
+            return true;
+        }
+        return false;
+    }
+
+    private void setCanInstallApps(boolean newState) {
+        mAppOpsManager.setMode(AppOpsManager.OP_REQUEST_INSTALL_PACKAGES,
+                mPackageInfo.applicationInfo.uid, mPackageName,
+                newState ? AppOpsManager.MODE_ALLOWED : AppOpsManager.MODE_ERRORED);
+    }
+
+    @Override
+    protected boolean refreshUi() {
+        mInstallAppsState = mAppBridge.createInstallAppsStateFor(mPackageName,
+                mPackageInfo.applicationInfo.uid);
+
+        final boolean canWrite = mInstallAppsState.canInstallApps();
+        mSwitchPref.setChecked(canWrite);
+        return true;
+    }
+
+    @Override
+    protected AlertDialog createDialog(int id, int errorCode) {
+        return null;
+    }
+
+    @Override
+    public int getMetricsCategory() {
+        return MetricsEvent.MANAGE_EXTERNAL_SOURCES;
+    }
+}
diff --git a/src/com/android/settings/applications/IPackageManagerWrapper.java b/src/com/android/settings/applications/IPackageManagerWrapper.java
new file mode 100644
index 0000000..f885985
--- /dev/null
+++ b/src/com/android/settings/applications/IPackageManagerWrapper.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications;
+
+import android.content.Intent;
+import android.content.pm.ResolveInfo;
+import android.os.RemoteException;
+
+/**
+ * This interface replicates a subset of the android.content.pm.IPackageManager (PMS). The interface
+ * exists so that we can use a thin wrapper around the PMS in production code and a mock in tests.
+ * We cannot directly mock or shadow the PMS, because some of the methods we rely on are newer than
+ * the API version supported by Robolectric.
+ */
+public interface IPackageManagerWrapper {
+
+    /**
+     * Calls {@code IPackageManager.checkUidPermission()}.
+     *
+     * @see android.content.pm.IPackageManager#checkUidPermission
+     */
+    int checkUidPermission(String permName, int uid) throws RemoteException;
+
+    /**
+     * Calls {@code IPackageManager.findPersistentPreferredActivity()}.
+     *
+     * @see android.content.pm.IPackageManager#findPersistentPreferredActivity
+     */
+    ResolveInfo findPersistentPreferredActivity(Intent intent, int userId) throws RemoteException;
+}
diff --git a/src/com/android/settings/applications/IPackageManagerWrapperImpl.java b/src/com/android/settings/applications/IPackageManagerWrapperImpl.java
new file mode 100644
index 0000000..5ea15b9
--- /dev/null
+++ b/src/com/android/settings/applications/IPackageManagerWrapperImpl.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications;
+
+import android.content.Intent;
+import android.content.pm.IPackageManager;
+import android.content.pm.ResolveInfo;
+import android.os.RemoteException;
+
+public class IPackageManagerWrapperImpl implements IPackageManagerWrapper {
+
+    private final IPackageManager mPms;
+
+    public IPackageManagerWrapperImpl(IPackageManager pms) {
+        mPms = pms;
+    }
+
+    @Override
+    public int checkUidPermission(String permName, int uid) throws RemoteException {
+        return mPms.checkUidPermission(permName, uid);
+    }
+
+    @Override
+    public ResolveInfo findPersistentPreferredActivity(Intent intent, int userId)
+            throws RemoteException {
+        return mPms.findPersistentPreferredActivity(intent, userId);
+    }
+}
diff --git a/src/com/android/settings/applications/InstalledAppDetails.java b/src/com/android/settings/applications/InstalledAppDetails.java
index b5f0e76..873c5fd 100755
--- a/src/com/android/settings/applications/InstalledAppDetails.java
+++ b/src/com/android/settings/applications/InstalledAppDetails.java
@@ -21,8 +21,6 @@
 import android.app.ActivityManager;
 import android.app.AlertDialog;
 import android.app.LoaderManager.LoaderCallbacks;
-import android.app.Notification;
-import android.app.NotificationManager;
 import android.app.admin.DevicePolicyManager;
 import android.content.ActivityNotFoundException;
 import android.content.BroadcastReceiver;
@@ -52,9 +50,8 @@
 import android.os.ServiceManager;
 import android.os.UserHandle;
 import android.os.UserManager;
-import android.provider.Settings;
-import android.service.notification.NotificationListenerService.Ranking;
 import android.support.annotation.VisibleForTesting;
+import android.support.v14.preference.SwitchPreference;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.Preference.OnPreferenceClickListener;
 import android.support.v7.preference.PreferenceCategory;
@@ -78,7 +75,6 @@
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.internal.os.BatterySipper;
 import com.android.internal.os.BatteryStatsHelper;
-import com.android.internal.widget.LockPatternUtils;
 import com.android.settings.AppHeader;
 import com.android.settings.DeviceAdminAdd;
 import com.android.settings.R;
@@ -86,6 +82,11 @@
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.Utils;
 import com.android.settings.applications.PermissionsSummaryHelper.PermissionsResultCallback;
+import com.android.settings.applications.defaultapps.DefaultBrowserPreferenceController;
+import com.android.settings.applications.defaultapps.DefaultEmergencyPreferenceController;
+import com.android.settings.applications.defaultapps.DefaultHomePreferenceController;
+import com.android.settings.applications.defaultapps.DefaultPhonePreferenceController;
+import com.android.settings.applications.defaultapps.DefaultSmsPreferenceController;
 import com.android.settings.dashboard.DashboardFeatureProvider;
 import com.android.settings.datausage.AppDataUsage;
 import com.android.settings.datausage.DataUsageList;
@@ -743,6 +744,8 @@
     }
 
     private void forceStopPackage(String pkgName) {
+        FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider().action(getContext(),
+                MetricsEvent.ACTION_APP_FORCE_STOP, pkgName);
         ActivityManager am = (ActivityManager) getActivity().getSystemService(
                 Context.ACTIVITY_SERVICE);
         am.forceStopPackage(pkgName);
@@ -906,34 +909,49 @@
             return;
         }
         final PreferenceScreen screen = getPreferenceScreen();
-        if (DefaultHomePreference.hasHomePreference(mPackageName, getContext())) {
+        final Context context = getContext();
+        if (DefaultHomePreferenceController.hasHomePreference(mPackageName, context)) {
             screen.addPreference(new ShortcutPreference(getPrefContext(),
                     AdvancedAppSettings.class, "default_home", R.string.home_app,
                     R.string.configure_apps));
         }
-        if (DefaultBrowserPreference.hasBrowserPreference(mPackageName, getContext())) {
+        if (DefaultBrowserPreferenceController.hasBrowserPreference(mPackageName, context)) {
             screen.addPreference(new ShortcutPreference(getPrefContext(),
                     AdvancedAppSettings.class, "default_browser", R.string.default_browser_title,
                     R.string.configure_apps));
         }
-        if (DefaultPhonePreference.hasPhonePreference(mPackageName, getContext())) {
+        if (DefaultPhonePreferenceController.hasPhonePreference(mPackageName, context)) {
             screen.addPreference(new ShortcutPreference(getPrefContext(),
                     AdvancedAppSettings.class, "default_phone_app", R.string.default_phone_title,
                     R.string.configure_apps));
         }
-        if (DefaultEmergencyPreference.hasEmergencyPreference(mPackageName, getContext())) {
+        if (DefaultEmergencyPreferenceController.hasEmergencyPreference(mPackageName, context)) {
             screen.addPreference(new ShortcutPreference(getPrefContext(),
                     AdvancedAppSettings.class, "default_emergency_app",
                     R.string.default_emergency_app, R.string.configure_apps));
         }
-        if (DefaultSmsPreference.hasSmsPreference(mPackageName, getContext())) {
+        if (DefaultSmsPreferenceController.hasSmsPreference(mPackageName, context)) {
             screen.addPreference(new ShortcutPreference(getPrefContext(),
                     AdvancedAppSettings.class, "default_sms_app", R.string.sms_application_title,
                     R.string.configure_apps));
         }
+
+        // Get the package info with the activities
+        PackageInfo packageInfoWithActivities = null;
+        try {
+            packageInfoWithActivities = mPm.getPackageInfoAsUser(mPackageName,
+                    PackageManager.GET_ACTIVITIES, UserHandle.myUserId());
+        } catch (NameNotFoundException e) {
+            Log.e(TAG, "Exception while retrieving the package info of " + mPackageName, e);
+        }
+
         boolean hasDrawOverOtherApps = hasPermission(permission.SYSTEM_ALERT_WINDOW);
         boolean hasWriteSettings = hasPermission(permission.WRITE_SETTINGS);
-        if (hasDrawOverOtherApps || hasWriteSettings) {
+        boolean hasPictureInPictureActivities = (packageInfoWithActivities != null) &&
+                PictureInPictureSettings.checkPackageHasPictureInPictureActivities(
+                        packageInfoWithActivities.packageName,
+                        packageInfoWithActivities.activities);
+        if (hasDrawOverOtherApps || hasWriteSettings || hasPictureInPictureActivities) {
             PreferenceCategory category = new PreferenceCategory(getPrefContext());
             category.setTitle(R.string.advanced_apps);
             screen.addPreference(category);
@@ -966,6 +984,23 @@
                 });
                 category.addPreference(pref);
             }
+            if (hasPictureInPictureActivities) {
+                final SwitchPreference pref = new SwitchPreference(getPrefContext());
+                pref.setPersistent(false);
+                pref.setTitle(R.string.picture_in_picture_app_detail_title);
+                pref.setSummary(R.string.picture_in_picture_app_detail_summary);
+                pref.setChecked(PictureInPictureSettings.getEnterPipOnHideStateForPackage(
+                        getContext(), mPackageInfo.applicationInfo.uid, mPackageName));
+                pref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
+                    @Override
+                    public boolean onPreferenceChange(Preference preference, Object newValue) {
+                        PictureInPictureSettings.setEnterPipOnHideStateForPackage(getContext(),
+                                mPackageInfo.applicationInfo.uid, mPackageName, (Boolean) newValue);
+                        return true;
+                    }
+                });
+                category.addPreference(pref);
+            }
         }
 
         addAppInstallerInfoPref(screen);
@@ -1019,29 +1054,33 @@
     }
 
     private void updateDynamicPrefs() {
+        final Context context = getContext();
         Preference pref = findPreference("default_home");
+
         if (pref != null) {
-            pref.setSummary(DefaultHomePreference.isHomeDefault(mPackageName, getContext())
+            pref.setSummary(DefaultHomePreferenceController.isHomeDefault(mPackageName, context)
                     ? R.string.yes : R.string.no);
         }
         pref = findPreference("default_browser");
         if (pref != null) {
-            pref.setSummary(DefaultBrowserPreference.isBrowserDefault(mPackageName, getContext())
+            pref.setSummary(
+                    DefaultBrowserPreferenceController.isBrowserDefault(mPackageName, context)
                     ? R.string.yes : R.string.no);
         }
         pref = findPreference("default_phone_app");
         if (pref != null) {
-            pref.setSummary(DefaultPhonePreference.isPhoneDefault(mPackageName, getContext())
+            pref.setSummary(
+                    DefaultPhonePreferenceController.isPhoneDefault(mPackageName, context)
                     ? R.string.yes : R.string.no);
         }
         pref = findPreference("default_emergency_app");
         if (pref != null) {
-            pref.setSummary(DefaultEmergencyPreference.isEmergencyDefault(mPackageName,
+            pref.setSummary(DefaultEmergencyPreferenceController.isEmergencyDefault(mPackageName,
                     getContext()) ? R.string.yes : R.string.no);
         }
         pref = findPreference("default_sms_app");
         if (pref != null) {
-            pref.setSummary(DefaultSmsPreference.isSmsDefault(mPackageName, getContext())
+            pref.setSummary(DefaultSmsPreferenceController.isSmsDefault(mPackageName, context)
                     ? R.string.yes : R.string.no);
         }
         pref = findPreference("system_alert_window");
diff --git a/src/com/android/settings/applications/ManageApplications.java b/src/com/android/settings/applications/ManageApplications.java
index 43bb02a..f6b303c 100644
--- a/src/com/android/settings/applications/ManageApplications.java
+++ b/src/com/android/settings/applications/ManageApplications.java
@@ -31,7 +31,6 @@
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.preference.PreferenceFrameLayout;
-import android.support.v7.preference.Preference;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.LayoutInflater;
@@ -57,7 +56,9 @@
 import com.android.settings.AppHeader;
 import com.android.settings.R;
 import com.android.settings.Settings.AllApplicationsActivity;
+import com.android.settings.Settings.GamesStorageActivity;
 import com.android.settings.Settings.HighPowerApplicationsActivity;
+import com.android.settings.Settings.ManageExternalSourcesActivity;
 import com.android.settings.Settings.NotificationAppListActivity;
 import com.android.settings.Settings.OverlaySettingsActivity;
 import com.android.settings.Settings.StorageUseActivity;
@@ -66,6 +67,7 @@
 import com.android.settings.SettingsActivity;
 import com.android.settings.Utils;
 import com.android.settings.applications.AppStateAppOpsBridge.PermissionState;
+import com.android.settings.applications.AppStateInstallAppsBridge.InstallAppsState;
 import com.android.settings.applications.AppStateUsageBridge.UsageState;
 import com.android.settings.core.InstrumentedPreferenceFragment;
 import com.android.settings.dashboard.SummaryLoader;
@@ -136,6 +138,7 @@
     public static final int FILTER_APPS_USAGE_ACCESS = 8;
     public static final int FILTER_APPS_WITH_OVERLAY = 9;
     public static final int FILTER_APPS_WRITE_SETTINGS = 10;
+    public static final int FILTER_APPS_INSTALL_SOURCES = 12;
 
     // This is the string labels for the filter modes above, the order must be kept in sync.
     public static final int[] FILTER_LABELS = new int[]{
@@ -151,6 +154,7 @@
             R.string.filter_all_apps,      // Usage access screen, never displayed
             R.string.filter_overlay_apps,   // Apps with overlay permission
             R.string.filter_write_settings_apps,   // Apps that can write system settings
+            R.string.filter_install_sources_apps, // Apps that are trusted sources of apks
     };
     // This is the actual mapping to filters from FILTER_ constants above, the order must
     // be kept in sync.
@@ -169,6 +173,7 @@
             AppStateUsageBridge.FILTER_APP_USAGE, // Apps with Domain URLs
             AppStateOverlayBridge.FILTER_SYSTEM_ALERT_WINDOW,   // Apps that can draw overlays
             AppStateWriteSettingsBridge.FILTER_WRITE_SETTINGS,  // Apps that can write system settings
+            AppStateInstallAppsBridge.FILTER_APP_SOURCES,
     };
 
     // sort order
@@ -210,6 +215,8 @@
     public static final int LIST_TYPE_HIGH_POWER = 5;
     public static final int LIST_TYPE_OVERLAY = 6;
     public static final int LIST_TYPE_WRITE_SETTINGS = 7;
+    public static final int LIST_TYPE_MANAGE_SOURCES = 8;
+    public static final int LIST_TYPE_GAMES = 9;
 
     private View mRootView;
 
@@ -259,6 +266,11 @@
             mListType = LIST_TYPE_OVERLAY;
         } else if (className.equals(WriteSettingsActivity.class.getName())) {
             mListType = LIST_TYPE_WRITE_SETTINGS;
+        } else if (className.equals(ManageExternalSourcesActivity.class.getName())) {
+            mListType = LIST_TYPE_MANAGE_SOURCES;
+        } else if (className.equals(GamesStorageActivity.class.getName())) {
+            mListType = LIST_TYPE_GAMES;
+            mSortOrder = R.id.sort_order_size;
         } else {
             mListType = LIST_TYPE_MAIN;
         }
@@ -351,6 +363,9 @@
         if (mListType == LIST_TYPE_STORAGE) {
             mApplications.setOverrideFilter(new VolumeFilter(mVolumeUuid));
         }
+        if (mListType == LIST_TYPE_GAMES) {
+            mApplications.setOverrideFilter(ApplicationsState.FILTER_GAMES);
+        }
     }
 
     @Override
@@ -379,6 +394,8 @@
                 return FILTER_APPS_WITH_OVERLAY;
             case LIST_TYPE_WRITE_SETTINGS:
                 return FILTER_APPS_WRITE_SETTINGS;
+            case LIST_TYPE_MANAGE_SOURCES:
+                return FILTER_APPS_INSTALL_SOURCES;
             default:
                 return FILTER_APPS_ALL;
         }
@@ -389,6 +406,7 @@
             case LIST_TYPE_MAIN:
             case LIST_TYPE_NOTIFICATION:
             case LIST_TYPE_STORAGE:
+            case LIST_TYPE_GAMES:
                 return mSortOrder == R.id.sort_order_alpha;
             default:
                 return false;
@@ -403,6 +421,7 @@
             case LIST_TYPE_NOTIFICATION:
                 return MetricsEvent.MANAGE_APPLICATIONS_NOTIFICATIONS;
             case LIST_TYPE_STORAGE:
+            case LIST_TYPE_GAMES:
                 return MetricsEvent.APPLICATIONS_STORAGE_APPS;
             case LIST_TYPE_USAGE_ACCESS:
                 return MetricsEvent.USAGE_ACCESS;
@@ -412,6 +431,8 @@
                 return MetricsEvent.SYSTEM_ALERT_WINDOW_APPS;
             case LIST_TYPE_WRITE_SETTINGS:
                 return MetricsEvent.SYSTEM_ALERT_WINDOW_APPS;
+            case LIST_TYPE_MANAGE_SOURCES:
+                return MetricsEvent.MANAGE_EXTERNAL_SOURCES;
             default:
                 return MetricsEvent.VIEW_UNKNOWN;
         }
@@ -503,6 +524,11 @@
             case LIST_TYPE_WRITE_SETTINGS:
                 startAppInfoFragment(WriteSettingsDetails.class, R.string.write_system_settings);
                 break;
+            case LIST_TYPE_MANAGE_SOURCES:
+                startAppInfoFragment(ExternalSourcesDetails.class, R.string.install_other_apps);
+            case LIST_TYPE_GAMES:
+                startAppInfoFragment(AppStorageSettings.class, R.string.game_storage_settings);
+                break;
             // TODO: Figure out if there is a way where we can spin up the profile's settings
             // process ahead of time, to avoid a long load of data when user clicks on a managed app.
             // Maybe when they load the list of apps that contains managed profile apps.
@@ -796,6 +822,8 @@
                 mExtraInfoBridge = new AppStateOverlayBridge(mContext, mState, this);
             } else if (mManageApplications.mListType == LIST_TYPE_WRITE_SETTINGS) {
                 mExtraInfoBridge = new AppStateWriteSettingsBridge(mContext, mState, this);
+            } else if (mManageApplications.mListType == LIST_TYPE_MANAGE_SOURCES) {
+                mExtraInfoBridge = new AppStateInstallAppsBridge(mContext, mState, this);
             } else {
                 mExtraInfoBridge = null;
             }
@@ -1206,6 +1234,11 @@
                             holder.entry));
                     break;
 
+                case LIST_TYPE_MANAGE_SOURCES:
+                    holder.summary
+                            .setText(((InstallAppsState) holder.entry.extraInfo).getSummary());
+                    break;
+
                 default:
                     holder.updateSizeText(mManageApplications.mInvalidSizeStr, mWhichSize);
                     break;
diff --git a/src/com/android/settings/applications/PackageManagerWrapper.java b/src/com/android/settings/applications/PackageManagerWrapper.java
index 4166ccf..2be92ed 100644
--- a/src/com/android/settings/applications/PackageManagerWrapper.java
+++ b/src/com/android/settings/applications/PackageManagerWrapper.java
@@ -16,7 +16,9 @@
 
 package com.android.settings.applications;
 
+import android.content.ComponentName;
 import android.content.Intent;
+import android.content.IntentFilter;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
@@ -58,11 +60,42 @@
      */
     List<ResolveInfo> queryIntentActivitiesAsUser(Intent intent, int flags, int userId);
 
-
     /**
      * Calls {@code PackageManager.getInstallReason()}.
      *
      * @see android.content.pm.PackageManager#getInstallReason
      */
     int getInstallReason(String packageName, UserHandle user);
+
+    /**
+     * Calls {@code PackageManager.getApplicationInfoAsUser}
+     */
+    ApplicationInfo getApplicationInfoAsUser(String packageName, int i, int userId)
+            throws PackageManager.NameNotFoundException;
+
+    /**
+     * Calls {@code PackageManager.setDefaultBrowserPackageNameAsUser}
+     */
+    boolean setDefaultBrowserPackageNameAsUser(String packageName, int userId);
+
+    /**
+     * Calls {@code PackageManager.getDefaultBrowserPackageNameAsUser}
+     */
+    String getDefaultBrowserPackageNameAsUser(int userId);
+
+    /**
+     * Calls {@code PackageManager.getHomeActivities}
+     */
+    ComponentName getHomeActivities(List<ResolveInfo> homeActivities);
+
+    /**
+     * Calls {@code PackageManager.queryIntentServicesAsUser}
+     */
+    List<ResolveInfo> queryIntentServicesAsUser(Intent intent, int i, int user);
+
+    /**
+     * Calls {@code PackageManager.replacePreferredActivity}
+     */
+    void replacePreferredActivity(IntentFilter homeFilter, int matchCategoryEmpty,
+            ComponentName[] componentNames, ComponentName component);
 }
diff --git a/src/com/android/settings/applications/PackageManagerWrapperImpl.java b/src/com/android/settings/applications/PackageManagerWrapperImpl.java
index 2427cce..698c14c 100644
--- a/src/com/android/settings/applications/PackageManagerWrapperImpl.java
+++ b/src/com/android/settings/applications/PackageManagerWrapperImpl.java
@@ -16,7 +16,9 @@
 
 package com.android.settings.applications;
 
+import android.content.ComponentName;
 import android.content.Intent;
+import android.content.IntentFilter;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
@@ -56,4 +58,36 @@
     public int getInstallReason(String packageName, UserHandle user) {
         return mPm.getInstallReason(packageName, user);
     }
+
+    @Override
+    public ApplicationInfo getApplicationInfoAsUser(String packageName, int i, int userId)
+            throws PackageManager.NameNotFoundException {
+        return mPm.getApplicationInfoAsUser(packageName, i, userId);
+    }
+
+    @Override
+    public boolean setDefaultBrowserPackageNameAsUser(String packageName, int userId) {
+        return mPm.setDefaultBrowserPackageNameAsUser(packageName, userId);
+    }
+
+    @Override
+    public String getDefaultBrowserPackageNameAsUser(int userId) {
+        return mPm.getDefaultBrowserPackageNameAsUser(userId);
+    }
+
+    @Override
+    public ComponentName getHomeActivities(List<ResolveInfo> homeActivities) {
+        return mPm.getHomeActivities(homeActivities);
+    }
+
+    @Override
+    public List<ResolveInfo> queryIntentServicesAsUser(Intent intent, int i, int user) {
+        return mPm.queryIntentServicesAsUser(intent, i, user);
+    }
+
+    @Override
+    public void replacePreferredActivity(IntentFilter homeFilter, int matchCategoryEmpty,
+            ComponentName[] componentNames, ComponentName component) {
+        mPm.replacePreferredActivity(homeFilter, matchCategoryEmpty, componentNames, component);
+    }
 }
diff --git a/src/com/android/settings/applications/PictureInPictureSettings.java b/src/com/android/settings/applications/PictureInPictureSettings.java
new file mode 100644
index 0000000..df73572
--- /dev/null
+++ b/src/com/android/settings/applications/PictureInPictureSettings.java
@@ -0,0 +1,200 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.settings.applications;
+
+import static android.app.AppOpsManager.MODE_ALLOWED;
+import static android.app.AppOpsManager.MODE_ERRORED;
+import static android.app.AppOpsManager.OP_ENTER_PICTURE_IN_PICTURE_ON_HIDE;
+import static android.content.pm.PackageManager.GET_ACTIVITIES;
+
+import android.annotation.Nullable;
+import android.app.AppOpsManager;
+import android.content.Context;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageItemInfo;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
+import android.os.UserHandle;
+import android.support.v14.preference.SwitchPreference;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+import android.util.ArrayMap;
+import android.view.View;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+import com.android.settings.R;
+import com.android.settings.notification.EmptyTextSettings;
+import com.android.settings.overlay.FeatureFactory;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+public class PictureInPictureSettings extends EmptyTextSettings {
+
+    private static final String TAG = PictureInPictureSettings.class.getSimpleName();
+    @VisibleForTesting
+    static final List<String> IGNORE_PACKAGE_LIST = new ArrayList<>();
+    static {
+        IGNORE_PACKAGE_LIST.add("com.android.systemui");
+    }
+
+    private Context mContext;
+    private PackageManager mPackageManager;
+
+    /**
+     * @return true if the package has any activities that declare that they support
+     *         picture-in-picture.
+     */
+    static boolean checkPackageHasPictureInPictureActivities(String packageName,
+            ActivityInfo[] activities) {
+        ActivityInfoWrapper[] wrappedActivities = null;
+        if (activities != null) {
+            wrappedActivities = new ActivityInfoWrapper[activities.length];
+            for (int i = 0; i < activities.length; i++) {
+                wrappedActivities[i] = new ActivityInfoWrapperImpl(activities[i]);
+            }
+        }
+        return checkPackageHasPictureInPictureActivities(packageName, wrappedActivities);
+    }
+
+    /**
+     * @return true if the package has any activities that declare that they support
+     *         picture-in-picture.
+     */
+    @VisibleForTesting
+    static boolean checkPackageHasPictureInPictureActivities(String packageName,
+            ActivityInfoWrapper[] activities) {
+        // Skip if it's in the ignored list
+        if (IGNORE_PACKAGE_LIST.contains(packageName)) {
+            return false;
+        }
+
+        // Iterate through all the activities and check if it is resizeable and supports
+        // picture-in-picture
+        if (activities != null) {
+            for (int i = activities.length - 1; i >= 0; i--) {
+                if (activities[i].supportsPictureInPicture()) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Sets whether the app associated with the given {@param packageName} is allowed to enter
+     * picture-in-picture when it is hidden.
+     */
+    static void setEnterPipOnHideStateForPackage(Context context, int uid, String packageName,
+            boolean value) {
+        final AppOpsManager appOps = context.getSystemService(AppOpsManager.class);
+        final int newMode = value ? MODE_ALLOWED : MODE_ERRORED;
+        appOps.setMode(OP_ENTER_PICTURE_IN_PICTURE_ON_HIDE,
+                uid, packageName, newMode);
+    }
+
+    /**
+     * @return whether the app associated with the given {@param packageName} is allowed to enter
+     *         picture-in-picture when it is hidden.
+     */
+    static boolean getEnterPipOnHideStateForPackage(Context context, int uid, String packageName) {
+        final AppOpsManager appOps = context.getSystemService(AppOpsManager.class);
+        return appOps.checkOpNoThrow(OP_ENTER_PICTURE_IN_PICTURE_ON_HIDE,
+                uid, packageName) == MODE_ALLOWED;
+    }
+
+    @Override
+    public void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+
+        mContext = getActivity();
+        mPackageManager = mContext.getPackageManager();
+        setPreferenceScreen(getPreferenceManager().createPreferenceScreen(mContext));
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+
+        // Clear the prefs
+        final PreferenceScreen screen = getPreferenceScreen();
+        screen.removeAll();
+
+        // Fetch the set of applications which have at least one activity that declare that they
+        // support picture-in-picture
+        final ArrayMap<String, Boolean> packageToState = new ArrayMap<>();
+        final ArrayList<ApplicationInfo> pipApps = new ArrayList<>();
+        final List<PackageInfo> installedPackages = mPackageManager.getInstalledPackagesAsUser(
+                GET_ACTIVITIES, UserHandle.myUserId());
+        for (PackageInfo packageInfo : installedPackages) {
+            if (checkPackageHasPictureInPictureActivities(packageInfo.packageName,
+                    packageInfo.activities)) {
+                final String packageName = packageInfo.applicationInfo.packageName;
+                final boolean state = getEnterPipOnHideStateForPackage(mContext,
+                        packageInfo.applicationInfo.uid, packageName);
+                pipApps.add(packageInfo.applicationInfo);
+                packageToState.put(packageName, state);
+            }
+        }
+        Collections.sort(pipApps, new PackageItemInfo.DisplayNameComparator(mPackageManager));
+
+        // Rebuild the list of prefs
+        final Context prefContext = getPrefContext();
+        for (final ApplicationInfo appInfo : pipApps) {
+            final String packageName = appInfo.packageName;
+            final CharSequence label = appInfo.loadLabel(mPackageManager);
+            final SwitchPreference pref = new SwitchPreference(prefContext);
+            pref.setPersistent(false);
+            pref.setIcon(appInfo.loadIcon(mPackageManager));
+            pref.setTitle(label);
+            pref.setChecked(packageToState.get(packageName));
+            pref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
+                @Override
+                public boolean onPreferenceChange(Preference preference, Object newValue) {
+                    logSpecialPermissionChange((Boolean) newValue, packageName);
+                    setEnterPipOnHideStateForPackage(mContext, appInfo.uid, packageName,
+                            (Boolean) newValue);
+                    return true;
+                }
+            });
+            screen.addPreference(pref);
+        }
+    }
+
+    @Override
+    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+        setEmptyText(R.string.picture_in_picture_empty_text);
+    }
+
+    @Override
+    public int getMetricsCategory() {
+        return MetricsEvent.SETTINGS_MANAGE_PICTURE_IN_PICTURE;
+    }
+
+    @VisibleForTesting
+    void logSpecialPermissionChange(boolean newState, String packageName) {
+        int logCategory = newState
+                ? MetricsEvent.APP_PICTURE_IN_PICTURE_ON_HIDE_ALLOW
+                : MetricsEvent.APP_PICTURE_IN_PICTURE_ON_HIDE_DENY;
+        FeatureFactory.getFactory(getContext())
+                .getMetricsFeatureProvider().action(getContext(), logCategory, packageName);
+    }
+}
diff --git a/src/com/android/settings/applications/PremiumSmsAccess.java b/src/com/android/settings/applications/PremiumSmsAccess.java
index fa97537..2b0942f 100644
--- a/src/com/android/settings/applications/PremiumSmsAccess.java
+++ b/src/com/android/settings/applications/PremiumSmsAccess.java
@@ -24,13 +24,17 @@
 import android.support.v7.preference.PreferenceScreen;
 import android.support.v7.preference.PreferenceViewHolder;
 import android.view.View;
+
+import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.logging.nano.MetricsProto;
 import com.android.internal.telephony.SmsUsageMonitor;
 import com.android.settings.DividerPreference;
 import com.android.settings.R;
 import com.android.settings.applications.AppStateBaseBridge.Callback;
 import com.android.settings.applications.AppStateSmsPremBridge.SmsState;
+import com.android.settings.core.instrumentation.MetricsFeatureProvider;
 import com.android.settings.notification.EmptyTextSettings;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.applications.ApplicationsState;
 import com.android.settingslib.applications.ApplicationsState.AppEntry;
 import com.android.settingslib.applications.ApplicationsState.Callbacks;
@@ -81,11 +85,33 @@
     @Override
     public boolean onPreferenceChange(Preference preference, Object newValue) {
         PremiumSmsPreference pref = (PremiumSmsPreference) preference;
-        mSmsBackend.setSmsState(pref.mAppEntry.info.packageName,
-                Integer.parseInt((String) newValue));
+        int smsState = Integer.parseInt((String) newValue);
+        logSpecialPermissionChange(smsState, pref.mAppEntry.info.packageName);
+        mSmsBackend.setSmsState(pref.mAppEntry.info.packageName, smsState);
         return true;
     }
 
+    @VisibleForTesting
+    void logSpecialPermissionChange(int smsState, String packageName) {
+        int category = SmsUsageMonitor.PREMIUM_SMS_PERMISSION_UNKNOWN;
+        switch (smsState) {
+            case SmsUsageMonitor.PREMIUM_SMS_PERMISSION_ASK_USER:
+                category = MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_PREMIUM_SMS_ASK;
+                break;
+            case SmsUsageMonitor.PREMIUM_SMS_PERMISSION_NEVER_ALLOW:
+                category = MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_PREMIUM_SMS_DENY;
+                break;
+            case SmsUsageMonitor.PREMIUM_SMS_PERMISSION_ALWAYS_ALLOW:
+                category = MetricsProto.MetricsEvent.
+                        APP_SPECIAL_PERMISSION_PREMIUM_SMS_ALWAYS_ALLOW;
+                break;
+        }
+        if (category != SmsUsageMonitor.PREMIUM_SMS_PERMISSION_UNKNOWN) {
+            FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider().action(
+                    getContext(), category, packageName);
+        }
+    }
+
     private void updatePrefs(ArrayList<AppEntry> apps) {
         if (apps == null) return;
         setEmptyText(R.string.premium_sms_none);
diff --git a/src/com/android/settings/applications/UsageAccessDetails.java b/src/com/android/settings/applications/UsageAccessDetails.java
index 2fa0253..e40ae37 100644
--- a/src/com/android/settings/applications/UsageAccessDetails.java
+++ b/src/com/android/settings/applications/UsageAccessDetails.java
@@ -33,9 +33,12 @@
 import android.support.v7.preference.Preference.OnPreferenceClickListener;
 import android.util.Log;
 
+import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.settings.R;
 import com.android.settings.applications.AppStateUsageBridge.UsageState;
+import com.android.settings.core.instrumentation.MetricsFeatureProvider;
+import com.android.settings.overlay.FeatureFactory;
 
 public class UsageAccessDetails extends AppInfoWithHeader implements OnPreferenceChangeListener,
         OnPreferenceClickListener {
@@ -119,10 +122,19 @@
     }
 
     private void setHasAccess(boolean newState) {
+        logSpecialPermissionChange(newState, mPackageName);
         mAppOpsManager.setMode(AppOpsManager.OP_GET_USAGE_STATS, mPackageInfo.applicationInfo.uid,
                 mPackageName, newState ? AppOpsManager.MODE_ALLOWED : AppOpsManager.MODE_IGNORED);
     }
 
+    @VisibleForTesting
+    void logSpecialPermissionChange(boolean newState, String packageName) {
+        int logCategory = newState ? MetricsEvent.APP_SPECIAL_PERMISSION_USAGE_VIEW_ALLOW
+                : MetricsEvent.APP_SPECIAL_PERMISSION_USAGE_VIEW_DENY;
+        FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider().action(getContext(),
+                logCategory, packageName);
+    }
+
     @Override
     protected boolean refreshUi() {
         mUsageState = mUsageBridge.getUsageInfo(mPackageName,
diff --git a/src/com/android/settings/applications/VrListenerSettings.java b/src/com/android/settings/applications/VrListenerSettings.java
index 08d1367..99340b1 100644
--- a/src/com/android/settings/applications/VrListenerSettings.java
+++ b/src/com/android/settings/applications/VrListenerSettings.java
@@ -15,11 +15,14 @@
  */
 package com.android.settings.applications;
 
+import android.content.ComponentName;
 import android.provider.Settings;
 import android.service.vr.VrListenerService;
 
+import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.settings.R;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.utils.ManagedServiceSettings;
 
 public class VrListenerSettings extends ManagedServiceSettings {
@@ -48,4 +51,18 @@
     public int getMetricsCategory() {
         return MetricsEvent.VR_MANAGE_LISTENERS;
     }
+
+    @Override
+    protected boolean setEnabled(ComponentName service, String title, boolean enable) {
+        logSpecialPermissionChange(enable, service.getPackageName());
+        return super.setEnabled(service, title, enable);
+    }
+
+    @VisibleForTesting
+    void logSpecialPermissionChange(boolean enable, String packageName) {
+        int logCategory = enable ? MetricsEvent.APP_SPECIAL_PERMISSION_VRHELPER_ALLOW
+                : MetricsEvent.APP_SPECIAL_PERMISSION_VRHELPER_DENY;
+        FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider().action(getContext(),
+                logCategory, packageName);
+    }
 }
diff --git a/src/com/android/settings/applications/WriteSettingsDetails.java b/src/com/android/settings/applications/WriteSettingsDetails.java
index 9f9016d..aea05b3 100644
--- a/src/com/android/settings/applications/WriteSettingsDetails.java
+++ b/src/com/android/settings/applications/WriteSettingsDetails.java
@@ -35,6 +35,7 @@
 import com.android.settings.R;
 import com.android.settings.applications.AppStateAppOpsBridge.PermissionState;
 import com.android.settings.applications.AppStateWriteSettingsBridge.WriteSettingsState;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.applications.ApplicationsState.AppEntry;
 
 import java.util.List;
@@ -117,11 +118,19 @@
     }
 
     private void setCanWriteSettings(boolean newState) {
+        logSpecialPermissionChange(newState, mPackageName);
         mAppOpsManager.setMode(AppOpsManager.OP_WRITE_SETTINGS,
                 mPackageInfo.applicationInfo.uid, mPackageName, newState
                 ? AppOpsManager.MODE_ALLOWED : AppOpsManager.MODE_ERRORED);
     }
 
+    void logSpecialPermissionChange(boolean newState, String packageName) {
+        int logCategory = newState ? MetricsEvent.APP_SPECIAL_PERMISSION_SETTINGS_CHANGE_ALLOW
+                : MetricsEvent.APP_SPECIAL_PERMISSION_SETTINGS_CHANGE_DENY;
+        FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider().action(getContext(),
+                logCategory, packageName);
+    }
+
     private boolean canWriteSettings(String pkgName) {
         int result = mAppOpsManager.noteOpNoThrow(AppOpsManager.OP_WRITE_SETTINGS,
                 mPackageInfo.applicationInfo.uid, pkgName);
diff --git a/src/com/android/settings/applications/defaultapps/DefaultAppInfo.java b/src/com/android/settings/applications/defaultapps/DefaultAppInfo.java
new file mode 100644
index 0000000..7801591
--- /dev/null
+++ b/src/com/android/settings/applications/defaultapps/DefaultAppInfo.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications.defaultapps;
+
+import android.app.AppGlobals;
+import android.content.ComponentName;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageItemInfo;
+import android.content.pm.PackageManager;
+import android.graphics.drawable.Drawable;
+import android.os.RemoteException;
+import android.os.UserHandle;
+
+/**
+ * Data model representing an app in DefaultAppPicker UI.
+ */
+class DefaultAppInfo {
+
+    public final int userId;
+    public final ComponentName componentName;
+    public final PackageItemInfo packageItemInfo;
+    public final String summary;
+
+    public DefaultAppInfo(int uid, ComponentName cn, String summary) {
+        packageItemInfo = null;
+        userId = uid;
+        componentName = cn;
+        this.summary = summary;
+    }
+
+    public DefaultAppInfo(PackageItemInfo info) {
+        userId = UserHandle.myUserId();
+        packageItemInfo = info;
+        componentName = null;
+        summary = null;
+    }
+
+    public CharSequence loadLabel(PackageManager pm) {
+        if (componentName != null) {
+            try {
+                final ActivityInfo actInfo = AppGlobals.getPackageManager().getActivityInfo(
+                        componentName, 0, userId);
+                if (actInfo != null) {
+                    return actInfo.loadLabel(pm);
+                } else {
+                    final ApplicationInfo appInfo = pm.getApplicationInfoAsUser(
+                            componentName.getPackageName(), 0, userId);
+                    return appInfo.loadLabel(pm);
+                }
+            } catch (RemoteException | PackageManager.NameNotFoundException e) {
+                return null;
+            }
+        } else if (packageItemInfo != null) {
+            return packageItemInfo.loadLabel(pm);
+        } else {
+            return null;
+        }
+
+    }
+
+    public Drawable loadIcon(PackageManager pm) {
+        if (componentName != null) {
+            try {
+                final ActivityInfo actInfo = AppGlobals.getPackageManager().getActivityInfo(
+                        componentName, 0, userId);
+                if (actInfo != null) {
+                    return actInfo.loadIcon(pm);
+                } else {
+                    final ApplicationInfo appInfo = pm.getApplicationInfoAsUser(
+                            componentName.getPackageName(), 0, userId);
+                    return appInfo.loadIcon(pm);
+                }
+            } catch (RemoteException | PackageManager.NameNotFoundException e) {
+                return null;
+            }
+        }
+        if (packageItemInfo != null) {
+            return packageItemInfo.loadIcon(pm);
+        } else {
+            return null;
+        }
+    }
+
+    public String getKey() {
+        if (componentName != null) {
+            return componentName.flattenToString();
+        } else if (packageItemInfo != null) {
+            return packageItemInfo.packageName;
+        } else {
+            return null;
+        }
+    }
+}
diff --git a/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java b/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java
new file mode 100644
index 0000000..b322dab
--- /dev/null
+++ b/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java
@@ -0,0 +1,228 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications.defaultapps;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.DialogFragment;
+import android.app.Fragment;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.support.annotation.VisibleForTesting;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+import android.text.TextUtils;
+import android.util.ArrayMap;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.R;
+import com.android.settings.Utils;
+import com.android.settings.applications.PackageManagerWrapper;
+import com.android.settings.applications.PackageManagerWrapperImpl;
+import com.android.settings.core.InstrumentedPreferenceFragment;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
+import com.android.settings.widget.RadioButtonPreference;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * A generic app picker fragment that shows a list of app as radio button group.
+ */
+public abstract class DefaultAppPickerFragment extends InstrumentedPreferenceFragment implements
+        RadioButtonPreference.OnClickListener {
+
+    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    static final String EXTRA_FOR_WORK = "for_work";
+
+    private final Map<String, DefaultAppInfo> mCandidates = new ArrayMap<>();
+
+    protected PackageManagerWrapper mPm;
+    protected UserManager mUserManager;
+    protected int mUserId;
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        mPm = new PackageManagerWrapperImpl(context.getPackageManager());
+        mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
+        final Bundle arguments = getArguments();
+
+        boolean mForWork = false;
+        if (arguments != null) {
+            mForWork = arguments.getBoolean(EXTRA_FOR_WORK);
+        }
+        final UserHandle managedProfile = Utils.getManagedProfile(mUserManager);
+        mUserId = mForWork && managedProfile != null
+                ? managedProfile.getIdentifier()
+                : UserHandle.myUserId();
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState) {
+        final View view = super.onCreateView(inflater, container, savedInstanceState);
+        setHasOptionsMenu(true);
+        return view;
+    }
+
+    @Override
+    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+        super.onCreatePreferences(savedInstanceState, rootKey);
+        addPreferencesFromResource(R.xml.app_picker_prefs);
+        mCandidates.clear();
+        final List<DefaultAppInfo> candidateList = getCandidates();
+        if (candidateList != null) {
+            for (DefaultAppInfo info : candidateList) {
+                mCandidates.put(info.getKey(), info);
+            }
+        }
+        final String defaultAppKey = getDefaultAppKey();
+        final String systemDefaultAppKey = getSystemDefaultAppKey();
+        final PreferenceScreen screen = getPreferenceScreen();
+        screen.removeAll();
+        if (shouldShowItemNone()) {
+            final RadioButtonPreference nonePref = new RadioButtonPreference(getPrefContext());
+            nonePref.setIcon(R.drawable.ic_remove_circle);
+            nonePref.setTitle(R.string.app_list_preference_none);
+            nonePref.setChecked(TextUtils.isEmpty(defaultAppKey));
+            nonePref.setOnClickListener(this);
+            screen.addPreference(nonePref);
+        }
+        for (Map.Entry<String, DefaultAppInfo> app : mCandidates.entrySet()) {
+            final RadioButtonPreference pref = new RadioButtonPreference(getPrefContext());
+            final String appKey = app.getKey();
+
+            pref.setTitle(app.getValue().loadLabel(mPm.getPackageManager()));
+            pref.setIcon(app.getValue().loadIcon(mPm.getPackageManager()));
+            pref.setKey(appKey);
+            if (TextUtils.equals(defaultAppKey, appKey)) {
+                pref.setChecked(true);
+            }
+            if (TextUtils.equals(systemDefaultAppKey, appKey)) {
+                pref.setSummary(R.string.system_app);
+            }
+            pref.setOnClickListener(this);
+            screen.addPreference(pref);
+        }
+    }
+
+    @Override
+    public void onRadioButtonClicked(RadioButtonPreference selected) {
+        final String selectedKey = selected.getKey();
+        final String confirmationMessage = getConfirmationMessage(mCandidates.get(selectedKey));
+        final Activity activity = getActivity();
+        if (TextUtils.isEmpty(confirmationMessage)) {
+            onRadioButtonConfirmed(selectedKey);
+        } else if (activity != null) {
+            final DialogFragment fragment = ConfirmationDialogFragment.newInstance(
+                    this, selectedKey, confirmationMessage);
+            fragment.show(activity.getFragmentManager(), ConfirmationDialogFragment.TAG);
+        }
+    }
+
+    private void onRadioButtonConfirmed(String selectedKey) {
+        final boolean success = setDefaultAppKey(selectedKey);
+        if (success) {
+            final PreferenceScreen screen = getPreferenceScreen();
+            if (screen != null) {
+                final int count = screen.getPreferenceCount();
+                for (int i = 0; i < count; i++) {
+                    final Preference pref = screen.getPreference(i);
+                    if (pref instanceof RadioButtonPreference) {
+                        final RadioButtonPreference radioPref = (RadioButtonPreference) pref;
+                        final boolean newCheckedState =
+                                TextUtils.equals(pref.getKey(), selectedKey);
+                        if (radioPref.isChecked() != newCheckedState) {
+                            radioPref.setChecked(TextUtils.equals(pref.getKey(), selectedKey));
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    protected boolean shouldShowItemNone() {
+        return false;
+    }
+
+    protected String getSystemDefaultAppKey() {
+        return null;
+    }
+
+    protected abstract List<DefaultAppInfo> getCandidates();
+
+    protected abstract String getDefaultAppKey();
+
+    protected abstract boolean setDefaultAppKey(String key);
+
+    protected String getConfirmationMessage(DefaultAppInfo appInfo) {
+        return null;
+    }
+
+    public static class ConfirmationDialogFragment extends InstrumentedDialogFragment
+            implements DialogInterface.OnClickListener {
+
+        public static final String TAG = "DefaultAppConfirm";
+        public static final String EXTRA_KEY = "extra_key";
+        public static final String EXTRA_MESSAGE = "extra_message";
+
+        @Override
+        public int getMetricsCategory() {
+            return MetricsProto.MetricsEvent.DEFAULT_APP_PICKER_CONFIRMATION_DIALOG;
+        }
+
+        public static ConfirmationDialogFragment newInstance(DefaultAppPickerFragment parent,
+                String key, String message) {
+            final ConfirmationDialogFragment fragment = new ConfirmationDialogFragment();
+            final Bundle argument = new Bundle();
+            argument.putString(EXTRA_KEY, key);
+            argument.putString(EXTRA_MESSAGE, message);
+            fragment.setArguments(argument);
+            fragment.setTargetFragment(parent, 0);
+            return fragment;
+        }
+
+        @Override
+        public Dialog onCreateDialog(Bundle savedInstanceState) {
+            final Bundle bundle = getArguments();
+            final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
+                    .setMessage(bundle.getString(EXTRA_MESSAGE))
+                    .setPositiveButton(android.R.string.ok, this)
+                    .setNegativeButton(android.R.string.cancel, null);
+            return builder.create();
+        }
+
+        @Override
+        public void onClick(DialogInterface dialog, int which) {
+            final Fragment fragment = getTargetFragment();
+            if (fragment instanceof DefaultAppPickerFragment) {
+                final Bundle bundle = getArguments();
+                ((DefaultAppPickerFragment) fragment).onRadioButtonConfirmed(
+                        bundle.getString(EXTRA_KEY));
+            }
+        }
+    }
+
+}
diff --git a/src/com/android/settings/applications/defaultapps/DefaultAppPreferenceController.java b/src/com/android/settings/applications/defaultapps/DefaultAppPreferenceController.java
new file mode 100644
index 0000000..a9433ac
--- /dev/null
+++ b/src/com/android/settings/applications/defaultapps/DefaultAppPreferenceController.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications.defaultapps;
+
+import android.content.Context;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.support.v7.preference.Preference;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.android.settings.applications.PackageManagerWrapper;
+import com.android.settings.applications.PackageManagerWrapperImpl;
+import com.android.settings.core.PreferenceController;
+
+public abstract class DefaultAppPreferenceController extends PreferenceController {
+
+    private static final String TAG = "DefaultAppPrefControl";
+
+    protected final PackageManagerWrapper mPackageManager;
+    protected final UserManager mUserManager;
+
+    protected int mUserId;
+
+    public DefaultAppPreferenceController(Context context) {
+        super(context);
+        mPackageManager = new PackageManagerWrapperImpl(context.getPackageManager());
+        mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
+        mUserId = UserHandle.myUserId();
+    }
+
+    @Override
+    public void updateState(Preference preference) {
+        final DefaultAppInfo app = getDefaultAppInfo();
+        CharSequence defaultAppLabel = null;
+        if (app != null) {
+            defaultAppLabel = app.loadLabel(mPackageManager.getPackageManager());
+        }
+        if (!TextUtils.isEmpty(defaultAppLabel)) {
+            preference.setSummary(defaultAppLabel);
+        } else {
+            Log.d(TAG, "No default app");
+        }
+    }
+
+    protected abstract DefaultAppInfo getDefaultAppInfo();
+}
diff --git a/src/com/android/settings/applications/defaultapps/DefaultBrowserPicker.java b/src/com/android/settings/applications/defaultapps/DefaultBrowserPicker.java
new file mode 100644
index 0000000..70d9415
--- /dev/null
+++ b/src/com/android/settings/applications/defaultapps/DefaultBrowserPicker.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications.defaultapps;
+
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+
+import com.android.internal.logging.nano.MetricsProto;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Fragment for choosing default browser.
+ */
+public class DefaultBrowserPicker extends DefaultAppPickerFragment {
+
+    @Override
+    public int getMetricsCategory() {
+        return MetricsProto.MetricsEvent.DEFAULT_BROWSER_PICKER;
+    }
+
+    @Override
+    protected String getDefaultAppKey() {
+        return mPm.getDefaultBrowserPackageNameAsUser(mUserId);
+    }
+
+    @Override
+    protected boolean setDefaultAppKey(String packageName) {
+        return mPm.setDefaultBrowserPackageNameAsUser(packageName, mUserId);
+    }
+
+    @Override
+    protected List<DefaultAppInfo> getCandidates() {
+        final List<DefaultAppInfo> candidates = new ArrayList<>();
+
+        // Resolve that intent and check that the handleAllWebDataURI boolean is set
+        final List<ResolveInfo> list = mPm.queryIntentActivitiesAsUser(
+                DefaultBrowserPreferenceController.BROWSE_PROBE, PackageManager.MATCH_ALL, mUserId);
+
+        final int count = list.size();
+        for (int i = 0; i < count; i++) {
+            ResolveInfo info = list.get(i);
+            if (info.activityInfo == null || !info.handleAllWebDataURI) {
+                continue;
+            }
+            try {
+                candidates.add(new DefaultAppInfo(
+                        mPm.getApplicationInfoAsUser(info.activityInfo.packageName, 0, mUserId)));
+            } catch (PackageManager.NameNotFoundException e) {
+                // Skip unknown packages.
+            }
+        }
+
+        return candidates;
+    }
+}
diff --git a/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceController.java b/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceController.java
new file mode 100644
index 0000000..dca300b
--- /dev/null
+++ b/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceController.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications.defaultapps;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.net.Uri;
+import android.os.UserHandle;
+import android.support.v7.preference.Preference;
+import android.text.TextUtils;
+
+import java.util.List;
+
+public class DefaultBrowserPreferenceController extends DefaultAppPreferenceController {
+
+    static final Intent BROWSE_PROBE = new Intent()
+            .setAction(Intent.ACTION_VIEW)
+            .addCategory(Intent.CATEGORY_BROWSABLE)
+            .setData(Uri.parse("http:"));
+
+    public DefaultBrowserPreferenceController(Context context) {
+        super(context);
+    }
+
+    @Override
+    public boolean isAvailable() {
+        return true;
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return "default_browser";
+    }
+
+    @Override
+    public void updateState(Preference preference) {
+        super.updateState(preference);
+        final DefaultAppInfo defaultApp = getDefaultAppInfo();
+        final CharSequence defaultAppLabel = defaultApp != null
+                ? defaultApp.loadLabel(mPackageManager.getPackageManager()) : null;
+        if (TextUtils.isEmpty(defaultAppLabel)) {
+            final String onlyAppLabel = getOnlyAppLabel();
+            if (!TextUtils.isEmpty(onlyAppLabel)) {
+                preference.setSummary(onlyAppLabel);
+            }
+        }
+    }
+
+    private String getOnlyAppLabel() {
+        // Resolve that intent and check that the handleAllWebDataURI boolean is set
+        final List<ResolveInfo> list = mPackageManager.queryIntentActivitiesAsUser(BROWSE_PROBE,
+                PackageManager.MATCH_ALL, mUserId);
+        if (list != null && list.size() == 1) {
+            return list.get(0).loadLabel(mPackageManager.getPackageManager()).toString();
+        }
+        return null;
+    }
+
+    @Override
+    protected DefaultAppInfo getDefaultAppInfo() {
+        try {
+            return new DefaultAppInfo(mPackageManager.getPackageManager().getApplicationInfo(
+                    mPackageManager.getDefaultBrowserPackageNameAsUser(mUserId), 0));
+        } catch (PackageManager.NameNotFoundException e) {
+            return null;
+        }
+    }
+
+    /**
+     * Whether or not the pkg contains browser capability
+     */
+    public static boolean hasBrowserPreference(String pkg, Context context) {
+        final Intent intent = new Intent(BROWSE_PROBE);
+        intent.setPackage(pkg);
+        final List<ResolveInfo> resolveInfos =
+                context.getPackageManager().queryIntentActivities(intent, 0);
+        return resolveInfos != null && resolveInfos.size() != 0;
+    }
+
+    /**
+     * Whether or not the pkg is the default browser
+     */
+    public static boolean isBrowserDefault(String pkg, Context context) {
+        String defaultPackage = context.getPackageManager()
+                .getDefaultBrowserPackageNameAsUser(UserHandle.myUserId());
+        return defaultPackage != null && defaultPackage.equals(pkg);
+    }
+}
diff --git a/src/com/android/settings/applications/defaultapps/DefaultEmergencyPicker.java b/src/com/android/settings/applications/defaultapps/DefaultEmergencyPicker.java
new file mode 100644
index 0000000..b3cf882
--- /dev/null
+++ b/src/com/android/settings/applications/defaultapps/DefaultEmergencyPicker.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications.defaultapps;
+
+import android.content.ContentResolver;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.provider.Settings;
+import android.text.TextUtils;
+
+import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.R;
+import com.android.settings.Utils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class DefaultEmergencyPicker extends DefaultAppPickerFragment {
+
+    @Override
+    public int getMetricsCategory() {
+        return MetricsProto.MetricsEvent.DEFAULT_EMERGENCY_APP_PICKER;
+    }
+
+    @Override
+    protected List<DefaultAppInfo> getCandidates() {
+        final List<DefaultAppInfo> candidates = new ArrayList<>();
+        final List<ResolveInfo> infos = mPm.getPackageManager().queryIntentActivities(
+                DefaultEmergencyPreferenceController.QUERY_INTENT, 0);
+        PackageInfo bestMatch = null;
+        for (ResolveInfo info : infos) {
+            try {
+                final PackageInfo packageInfo =
+                        mPm.getPackageManager().getPackageInfo(info.activityInfo.packageName, 0);
+                final ApplicationInfo appInfo = packageInfo.applicationInfo;
+                candidates.add(new DefaultAppInfo(appInfo));
+                // Get earliest installed system app.
+                if (isSystemApp(appInfo) && (bestMatch == null ||
+                        bestMatch.firstInstallTime > packageInfo.firstInstallTime)) {
+                    bestMatch = packageInfo;
+                }
+            } catch (PackageManager.NameNotFoundException e) {
+                // Skip unknown packages.
+            }
+            if (bestMatch != null) {
+                final String defaultKey = getDefaultAppKey();
+                if (TextUtils.isEmpty(defaultKey)) {
+                    setDefaultAppKey(bestMatch.packageName);
+                }
+            }
+        }
+        return candidates;
+    }
+
+    @Override
+    protected String getConfirmationMessage(DefaultAppInfo info) {
+        return Utils.isPackageDirectBootAware(getContext(), info.getKey()) ? null
+                : getContext().getString(R.string.direct_boot_unaware_dialog_message);
+    }
+
+    @Override
+    protected String getDefaultAppKey() {
+        return Settings.Secure.getString(getContext().getContentResolver(),
+                Settings.Secure.EMERGENCY_ASSISTANCE_APPLICATION);
+    }
+
+    @Override
+    protected boolean setDefaultAppKey(String key) {
+        final ContentResolver contentResolver = getContext().getContentResolver();
+        final String previousValue = Settings.Secure.getString(contentResolver,
+                Settings.Secure.EMERGENCY_ASSISTANCE_APPLICATION);
+
+        if (!TextUtils.isEmpty(key) && !TextUtils.equals(key, previousValue)) {
+            Settings.Secure.putString(contentResolver,
+                    Settings.Secure.EMERGENCY_ASSISTANCE_APPLICATION,
+                    key);
+            return true;
+        }
+        return false;
+    }
+
+    private boolean isSystemApp(ApplicationInfo info) {
+        return info != null && (info.flags & ApplicationInfo.FLAG_SYSTEM) != 0;
+    }
+}
diff --git a/src/com/android/settings/applications/defaultapps/DefaultEmergencyPreferenceController.java b/src/com/android/settings/applications/defaultapps/DefaultEmergencyPreferenceController.java
new file mode 100644
index 0000000..7713dbd
--- /dev/null
+++ b/src/com/android/settings/applications/defaultapps/DefaultEmergencyPreferenceController.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications.defaultapps;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ResolveInfo;
+import android.provider.Settings;
+import android.telephony.TelephonyManager;
+
+import java.util.List;
+
+public class DefaultEmergencyPreferenceController extends DefaultAppPreferenceController {
+
+    private static final boolean DEFAULT_EMERGENCY_APP_IS_CONFIGURABLE = false;
+
+    public static final Intent QUERY_INTENT = new Intent(
+            TelephonyManager.ACTION_EMERGENCY_ASSISTANCE);
+
+    public DefaultEmergencyPreferenceController(Context context) {
+        super(context);
+    }
+
+    @Override
+    public boolean isAvailable() {
+        return DEFAULT_EMERGENCY_APP_IS_CONFIGURABLE
+                && isCapable()
+                && mPackageManager.getPackageManager().resolveActivity(QUERY_INTENT, 0) != null;
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return "default_emergency_app";
+    }
+
+    @Override
+    protected DefaultAppInfo getDefaultAppInfo() {
+        return null;
+    }
+
+    private boolean isCapable() {
+        return TelephonyManager.EMERGENCY_ASSISTANCE_ENABLED
+                && mContext.getResources().getBoolean(
+                com.android.internal.R.bool.config_voice_capable);
+    }
+
+    public static boolean hasEmergencyPreference(String pkg, Context context) {
+        Intent i = new Intent(QUERY_INTENT);
+        i.setPackage(pkg);
+        final List<ResolveInfo> resolveInfos =
+                context.getPackageManager().queryIntentActivities(i, 0);
+        return resolveInfos != null && resolveInfos.size() != 0;
+    }
+
+    public static boolean isEmergencyDefault(String pkg, Context context) {
+        String defaultPackage = Settings.Secure.getString(context.getContentResolver(),
+                Settings.Secure.EMERGENCY_ASSISTANCE_APPLICATION);
+        return defaultPackage != null && defaultPackage.equals(pkg);
+    }
+}
diff --git a/src/com/android/settings/applications/defaultapps/DefaultHomePicker.java b/src/com/android/settings/applications/defaultapps/DefaultHomePicker.java
new file mode 100644
index 0000000..5e48bf1
--- /dev/null
+++ b/src/com/android/settings/applications/defaultapps/DefaultHomePicker.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications.defaultapps;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.IntentFilter;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.content.pm.UserInfo;
+import android.os.Build;
+import android.text.TextUtils;
+
+import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class DefaultHomePicker extends DefaultAppPickerFragment {
+
+    private String mPackageName;
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        mPackageName = context.getPackageName();
+    }
+
+    @Override
+    public int getMetricsCategory() {
+        return MetricsProto.MetricsEvent.DEFAULT_HOME_PICKER;
+    }
+
+    @Override
+    protected List<DefaultAppInfo> getCandidates() {
+        final boolean mustSupportManagedProfile = hasManagedProfile();
+        final List<DefaultAppInfo> candidates = new ArrayList<>();
+        final List<ResolveInfo> homeActivities = new ArrayList<>();
+        mPm.getHomeActivities(homeActivities);
+
+        for (ResolveInfo resolveInfo : homeActivities) {
+            final ActivityInfo info = resolveInfo.activityInfo;
+            final ComponentName activityName = new ComponentName(info.packageName, info.name);
+            if (info.packageName.equals(mPackageName)) {
+                continue;
+            }
+
+            final String summary;
+            if (mustSupportManagedProfile && !launcherHasManagedProfilesFeature(resolveInfo)) {
+                summary = getContext().getString(R.string.home_work_profile_not_supported);
+            } else {
+                summary = null;
+            }
+            final DefaultAppInfo candidate = new DefaultAppInfo(mUserId, activityName, summary);
+            candidates.add(candidate);
+        }
+        return candidates;
+    }
+
+    @Override
+    protected String getDefaultAppKey() {
+        final ArrayList<ResolveInfo> homeActivities = new ArrayList<>();
+        final ComponentName currentDefaultHome = mPm.getHomeActivities(homeActivities);
+        if (currentDefaultHome != null) {
+            return currentDefaultHome.flattenToString();
+        }
+        return null;
+    }
+
+    @Override
+    protected boolean setDefaultAppKey(String key) {
+        if (!TextUtils.isEmpty(key)) {
+            final ComponentName component = ComponentName.unflattenFromString(key);
+            final List<ResolveInfo> homeActivities = new ArrayList<>();
+            mPm.getHomeActivities(homeActivities);
+            final List<ComponentName> allComponents = new ArrayList<>();
+            for (ResolveInfo info : homeActivities) {
+                final ActivityInfo appInfo = info.activityInfo;
+                ComponentName activityName = new ComponentName(appInfo.packageName, appInfo.name);
+                allComponents.add(activityName);
+            }
+            mPm.replacePreferredActivity(
+                    DefaultHomePreferenceController.HOME_FILTER,
+                    IntentFilter.MATCH_CATEGORY_EMPTY,
+                    allComponents.toArray(new ComponentName[0]),
+                    component);
+            return true;
+        }
+        return false;
+    }
+
+    private boolean hasManagedProfile() {
+        final Context context = getContext();
+        List<UserInfo> profiles = mUserManager.getProfiles(context.getUserId());
+        for (UserInfo userInfo : profiles) {
+            if (userInfo.isManagedProfile()) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private boolean launcherHasManagedProfilesFeature(ResolveInfo resolveInfo) {
+        try {
+            ApplicationInfo appInfo = mPm.getPackageManager().getApplicationInfo(
+                    resolveInfo.activityInfo.packageName, 0 /* default flags */);
+            return versionNumberAtLeastL(appInfo.targetSdkVersion);
+        } catch (PackageManager.NameNotFoundException e) {
+            return false;
+        }
+    }
+
+    private boolean versionNumberAtLeastL(int versionNumber) {
+        return versionNumber >= Build.VERSION_CODES.LOLLIPOP;
+    }
+}
diff --git a/src/com/android/settings/applications/defaultapps/DefaultHomePreferenceController.java b/src/com/android/settings/applications/defaultapps/DefaultHomePreferenceController.java
new file mode 100644
index 0000000..055c23b
--- /dev/null
+++ b/src/com/android/settings/applications/defaultapps/DefaultHomePreferenceController.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications.defaultapps;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.ActivityInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.support.v7.preference.Preference;
+import android.text.TextUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class DefaultHomePreferenceController extends DefaultAppPreferenceController {
+
+    static final IntentFilter HOME_FILTER;
+
+    private final String mPackageName;
+
+    static {
+        HOME_FILTER = new IntentFilter(Intent.ACTION_MAIN);
+        HOME_FILTER.addCategory(Intent.CATEGORY_HOME);
+        HOME_FILTER.addCategory(Intent.CATEGORY_DEFAULT);
+    }
+
+    public DefaultHomePreferenceController(Context context) {
+        super(context);
+        mPackageName = mContext.getPackageName();
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return "default_home";
+    }
+
+    @Override
+    public boolean isAvailable() {
+        return true;
+    }
+
+    @Override
+    public void updateState(Preference preference) {
+        super.updateState(preference);
+        final DefaultAppInfo defaultApp = getDefaultAppInfo();
+        final CharSequence defaultAppLabel = defaultApp != null
+                ? defaultApp.loadLabel(mPackageManager.getPackageManager()) : null;
+        if (TextUtils.isEmpty(defaultAppLabel)) {
+            final String onlyAppLabel = getOnlyAppLabel();
+            if (!TextUtils.isEmpty(onlyAppLabel)) {
+                preference.setSummary(onlyAppLabel);
+            }
+        }
+    }
+
+    @Override
+    protected DefaultAppInfo getDefaultAppInfo() {
+        final ArrayList<ResolveInfo> homeActivities = new ArrayList<>();
+        final ComponentName currentDefaultHome = mPackageManager.getHomeActivities(homeActivities);
+
+        return new DefaultAppInfo(mUserId, currentDefaultHome, null /* summary */);
+    }
+
+    private String getOnlyAppLabel() {
+        final List<ResolveInfo> homeActivities = new ArrayList<>();
+        final List<ActivityInfo> appLabels = new ArrayList<>();
+
+        mPackageManager.getHomeActivities(homeActivities);
+        for (ResolveInfo candidate : homeActivities) {
+            final ActivityInfo info = candidate.activityInfo;
+            if (info.packageName.equals(mPackageName)) {
+                continue;
+            }
+            appLabels.add(info);
+        }
+        return appLabels.size() == 1
+                ? appLabels.get(0).loadLabel(mPackageManager.getPackageManager()).toString()
+                : null;
+    }
+
+    public static boolean hasHomePreference(String pkg, Context context) {
+        ArrayList<ResolveInfo> homeActivities = new ArrayList<>();
+        PackageManager pm = context.getPackageManager();
+        pm.getHomeActivities(homeActivities);
+        for (int i = 0; i < homeActivities.size(); i++) {
+            if (homeActivities.get(i).activityInfo.packageName.equals(pkg)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    public static boolean isHomeDefault(String pkg, Context context) {
+        ArrayList<ResolveInfo> homeActivities = new ArrayList<>();
+        PackageManager pm = context.getPackageManager();
+        ComponentName def = pm.getHomeActivities(homeActivities);
+
+        return def != null && def.getPackageName().equals(pkg);
+    }
+}
diff --git a/src/com/android/settings/applications/DefaultNotificationAssistantPreference.java b/src/com/android/settings/applications/defaultapps/DefaultNotificationAssistantPicker.java
similarity index 62%
rename from src/com/android/settings/applications/DefaultNotificationAssistantPreference.java
rename to src/com/android/settings/applications/defaultapps/DefaultNotificationAssistantPicker.java
index 91fc0c8..af67917 100644
--- a/src/com/android/settings/applications/DefaultNotificationAssistantPreference.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultNotificationAssistantPicker.java
@@ -1,5 +1,5 @@
-/**
- * Copyright (C) 2016 The Android Open Source Project
+/*
+ * Copyright (C) 2017 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,65 +14,48 @@
  * limitations under the License.
  */
 
-package com.android.settings.applications;
-
-import com.android.settings.AppListPreference;
+package com.android.settings.applications.defaultapps;
 
 import android.app.ActivityManager;
 import android.content.ComponentName;
-import android.content.Context;
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.content.pm.ServiceInfo;
 import android.provider.Settings;
 import android.service.notification.NotificationAssistantService;
-import android.util.AttributeSet;
 import android.util.Slog;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import com.android.settings.R;
 import com.android.settings.utils.ManagedServiceSettings;
 
-public class DefaultNotificationAssistantPreference extends AppListPreference {
+import java.util.ArrayList;
+import java.util.List;
+
+public class DefaultNotificationAssistantPicker extends DefaultAppPickerFragment {
     private static final String TAG = "DefaultNotiAssist";
 
-    private PackageManager mPm;
-    private final ManagedServiceSettings.Config mConfig;
-    private final Context mContext;
+    private final ManagedServiceSettings.Config mConfig = getConfig();
 
-    public DefaultNotificationAssistantPreference(Context context, AttributeSet attrs) {
-        super(context, attrs);
-
-        mContext = context;
-        mPm = context.getPackageManager();
-        mConfig = getConfig();
-        setShowItemNone(true);
-        updateList(getServices());
+    @Override
+    public int getMetricsCategory() {
+        return 0;
     }
 
     @Override
-    protected boolean persistString(String value) {
-        Settings.Secure.putString(mContext.getContentResolver(), mConfig.setting, value);
-        setSummary(getEntry());
+    protected String getDefaultAppKey() {
+        return Settings.Secure.getString(getContext().getContentResolver(), mConfig.setting);
+    }
+
+    @Override
+    protected boolean setDefaultAppKey(String value) {
+        Settings.Secure.putString(getContext().getContentResolver(), mConfig.setting, value);
         return true;
     }
 
-    private void updateList(List<ServiceInfo> services) {
-        final ComponentName[] assistants = new ComponentName[services.size()];
-        for (int i = 0; i < services.size(); i++) {
-            assistants[i] = new ComponentName(services.get(i).packageName, services.get(i).name);
-        }
-        final String assistant =
-                Settings.Secure.getString(mContext.getContentResolver(), mConfig.setting);
-        setComponentNames(assistants, assistant == null ? null
-                : ComponentName.unflattenFromString(assistant));
-    }
-
-    private List<ServiceInfo> getServices() {
-        List<ServiceInfo> services = new ArrayList<>();
+    @Override
+    protected List<DefaultAppInfo> getCandidates() {
+        List<DefaultAppInfo> candidates = new ArrayList<>();
         final int user = ActivityManager.getCurrentUser();
 
         List<ResolveInfo> installedServices = mPm.queryIntentServicesAsUser(
@@ -91,9 +74,16 @@
                         + mConfig.permission);
                 continue;
             }
-            services.add(info);
+
+            candidates.add(new DefaultAppInfo(
+                    mUserId, new ComponentName(info.packageName, info.name), null /* summary */));
         }
-        return services;
+        return candidates;
+    }
+
+    @Override
+    protected boolean shouldShowItemNone() {
+        return true;
     }
 
     private ManagedServiceSettings.Config getConfig() {
@@ -108,4 +98,4 @@
         c.emptyText = R.string.no_notification_listeners;
         return c;
     }
-}
\ No newline at end of file
+}
diff --git a/src/com/android/settings/applications/defaultapps/DefaultPhonePicker.java b/src/com/android/settings/applications/defaultapps/DefaultPhonePicker.java
new file mode 100644
index 0000000..0fa9390
--- /dev/null
+++ b/src/com/android/settings/applications/defaultapps/DefaultPhonePicker.java
@@ -0,0 +1,102 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications.defaultapps;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.telecom.DefaultDialerManager;
+import android.telecom.TelecomManager;
+import android.text.TextUtils;
+
+import com.android.internal.logging.nano.MetricsProto;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class DefaultPhonePicker extends DefaultAppPickerFragment {
+
+    private DefaultKeyUpdater mDefaultKeyUpdater;
+
+    @Override
+    public int getMetricsCategory() {
+        return MetricsProto.MetricsEvent.DEFAULT_PHONE_PICKER;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        mDefaultKeyUpdater = new DefaultKeyUpdater(
+                (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE));
+    }
+
+    @Override
+    protected List<DefaultAppInfo> getCandidates() {
+        final List<DefaultAppInfo> candidates = new ArrayList<>();
+        final List<String> dialerPackages =
+                DefaultDialerManager.getInstalledDialerApplications(getContext(), mUserId);
+        for (String packageName : dialerPackages) {
+            try {
+                candidates.add(new DefaultAppInfo(
+                        mPm.getApplicationInfoAsUser(packageName, 0, mUserId)));
+            } catch (PackageManager.NameNotFoundException e) {
+                // Skip unknown packages.
+            }
+        }
+        return candidates;
+    }
+
+    @Override
+    protected String getDefaultAppKey() {
+        return mDefaultKeyUpdater.getDefaultDialerApplication(getContext(), mUserId);
+    }
+
+    @Override
+    protected String getSystemDefaultAppKey() {
+        return mDefaultKeyUpdater.getSystemDialerPackage();
+    }
+
+    @Override
+    protected boolean setDefaultAppKey(String key) {
+        if (!TextUtils.isEmpty(key) && !TextUtils.equals(key, getDefaultAppKey())) {
+            return mDefaultKeyUpdater.setDefaultDialerApplication(getContext(), key, mUserId);
+        }
+        return false;
+    }
+
+    /**
+     * Wrapper class to handle default phone app update.
+     */
+    static class DefaultKeyUpdater {
+        private final TelecomManager mTelecomManager;
+
+        public DefaultKeyUpdater(TelecomManager telecomManager) {
+            mTelecomManager = telecomManager;
+        }
+
+        public String getSystemDialerPackage() {
+            return mTelecomManager.getSystemDialerPackage();
+        }
+
+        public String getDefaultDialerApplication(Context context, int uid) {
+            return DefaultDialerManager.getDefaultDialerApplication(context, uid);
+        }
+
+        public boolean setDefaultDialerApplication(Context context, String key, int uid) {
+            return DefaultDialerManager.setDefaultDialerApplication(context, key, uid);
+        }
+    }
+}
diff --git a/src/com/android/settings/applications/defaultapps/DefaultPhonePreferenceController.java b/src/com/android/settings/applications/defaultapps/DefaultPhonePreferenceController.java
new file mode 100644
index 0000000..fa0d28f
--- /dev/null
+++ b/src/com/android/settings/applications/defaultapps/DefaultPhonePreferenceController.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications.defaultapps;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.telecom.DefaultDialerManager;
+import android.telephony.TelephonyManager;
+
+import java.util.List;
+
+public class DefaultPhonePreferenceController extends DefaultAppPreferenceController {
+
+    public DefaultPhonePreferenceController(Context context) {
+        super(context);
+    }
+
+    @Override
+    public boolean isAvailable() {
+        final TelephonyManager tm =
+                (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
+        if (!tm.isVoiceCapable()) {
+            return false;
+        }
+        final UserManager um = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
+        final boolean hasUserRestriction =
+                um.hasUserRestriction(UserManager.DISALLOW_OUTGOING_CALLS);
+
+        return !hasUserRestriction;
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return "default_phone_app";
+    }
+
+    @Override
+    protected DefaultAppInfo getDefaultAppInfo() {
+        try {
+            return new DefaultAppInfo(mPackageManager.getPackageManager().getApplicationInfo(
+                    DefaultDialerManager.getDefaultDialerApplication(mContext, mUserId), 0));
+        } catch (PackageManager.NameNotFoundException e) {
+            return null;
+        }
+    }
+
+    public static boolean hasPhonePreference(String pkg, Context context) {
+        List<String> dialerPackages =
+                DefaultDialerManager.getInstalledDialerApplications(context, UserHandle.myUserId());
+        return dialerPackages.contains(pkg);
+    }
+
+    public static boolean isPhoneDefault(String pkg, Context context) {
+        String def = DefaultDialerManager.getDefaultDialerApplication(context,
+                UserHandle.myUserId());
+        return def != null && def.equals(pkg);
+    }
+}
diff --git a/src/com/android/settings/applications/defaultapps/DefaultSmsPicker.java b/src/com/android/settings/applications/defaultapps/DefaultSmsPicker.java
new file mode 100644
index 0000000..31bb6f6
--- /dev/null
+++ b/src/com/android/settings/applications/defaultapps/DefaultSmsPicker.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications.defaultapps;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.text.TextUtils;
+
+import com.android.internal.logging.nano.MetricsProto;
+import com.android.internal.telephony.SmsApplication;
+import com.android.settings.R;
+import com.android.settings.Utils;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+public class DefaultSmsPicker extends DefaultAppPickerFragment {
+
+    private DefaultKeyUpdater mDefaultKeyUpdater = new DefaultKeyUpdater();
+
+    @Override
+    public int getMetricsCategory() {
+        return MetricsProto.MetricsEvent.DEFAULT_SMS_PICKER;
+    }
+
+    @Override
+    protected List<DefaultAppInfo> getCandidates() {
+        final Collection<SmsApplication.SmsApplicationData> smsApplications =
+                SmsApplication.getApplicationCollection(getContext());
+        final List<DefaultAppInfo> candidates = new ArrayList<>(smsApplications.size());
+
+        for (SmsApplication.SmsApplicationData smsApplicationData : smsApplications) {
+            try {
+                candidates.add(new DefaultAppInfo(
+                        mPm.getApplicationInfoAsUser(smsApplicationData.mPackageName, 0, mUserId)));
+            } catch (PackageManager.NameNotFoundException e) {
+                // Skip unknown packages.
+            }
+        }
+
+        return candidates;
+    }
+
+    @Override
+    protected String getDefaultAppKey() {
+        return mDefaultKeyUpdater.getDefaultApplication(getContext());
+    }
+
+    @Override
+    protected boolean setDefaultAppKey(String key) {
+        if (!TextUtils.isEmpty(key) && !TextUtils.equals(key, getDefaultAppKey())) {
+            mDefaultKeyUpdater.setDefaultApplication(getContext(), key);
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    protected String getConfirmationMessage(DefaultAppInfo info) {
+        return Utils.isPackageDirectBootAware(getContext(), info.getKey()) ? null
+                : getContext().getString(R.string.direct_boot_unaware_dialog_message);
+    }
+
+    /**
+     * Wrapper class to handle default phone app update.
+     */
+    static class DefaultKeyUpdater {
+
+        public String getDefaultApplication(Context context) {
+            final ComponentName appName = SmsApplication.getDefaultSmsApplication(context, true);
+            if (appName != null) {
+                return appName.getPackageName();
+            }
+            return null;
+        }
+
+        public void setDefaultApplication(Context context, String key) {
+            SmsApplication.setDefaultApplication(key, context);
+        }
+    }
+}
diff --git a/src/com/android/settings/applications/defaultapps/DefaultSmsPreferenceController.java b/src/com/android/settings/applications/defaultapps/DefaultSmsPreferenceController.java
new file mode 100644
index 0000000..90b9d83
--- /dev/null
+++ b/src/com/android/settings/applications/defaultapps/DefaultSmsPreferenceController.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications.defaultapps;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.telephony.TelephonyManager;
+
+import com.android.internal.telephony.SmsApplication;
+
+import java.util.Collection;
+
+public class DefaultSmsPreferenceController extends DefaultAppPreferenceController {
+
+    public DefaultSmsPreferenceController(Context context) {
+        super(context);
+    }
+
+    @Override
+    public boolean isAvailable() {
+        boolean isRestrictedUser = mUserManager.getUserInfo(mUserId).isRestricted();
+        TelephonyManager tm =
+                (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
+        return !isRestrictedUser && tm.isSmsCapable();
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return "default_sms_app";
+    }
+
+    @Override
+    protected DefaultAppInfo getDefaultAppInfo() {
+        final ComponentName app = SmsApplication.getDefaultSmsApplication(mContext, true);
+        if (app != null) {
+            return new DefaultAppInfo(mUserId, app, null /* summary */);
+        }
+        return null;
+    }
+
+    public static boolean hasSmsPreference(String pkg, Context context) {
+        Collection<SmsApplication.SmsApplicationData> smsApplications =
+                SmsApplication.getApplicationCollection(context);
+        for (SmsApplication.SmsApplicationData data : smsApplications) {
+            if (data.mPackageName.equals(pkg)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    public static boolean isSmsDefault(String pkg, Context context) {
+        ComponentName appName = SmsApplication.getDefaultSmsApplication(context, true);
+        return appName != null && appName.getPackageName().equals(pkg);
+    }
+}
diff --git a/src/com/android/settings/applications/defaultapps/DefaultWorkBrowserPreferenceController.java b/src/com/android/settings/applications/defaultapps/DefaultWorkBrowserPreferenceController.java
new file mode 100644
index 0000000..0cee3c5
--- /dev/null
+++ b/src/com/android/settings/applications/defaultapps/DefaultWorkBrowserPreferenceController.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications.defaultapps;
+
+import android.content.Context;
+import android.os.UserHandle;
+
+import com.android.settings.Utils;
+
+public class DefaultWorkBrowserPreferenceController extends DefaultBrowserPreferenceController {
+
+    public DefaultWorkBrowserPreferenceController(Context context) {
+        super(context);
+        final UserHandle managedProfile = Utils.getManagedProfile(mUserManager);
+        if (managedProfile != null) {
+            mUserId = managedProfile.getIdentifier();
+        }
+    }
+
+    @Override
+    public boolean isAvailable() {
+        return Utils.getManagedProfile(mUserManager) != null;
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return "work_default_browser";
+    }
+}
diff --git a/src/com/android/settings/applications/defaultapps/DefaultWorkPhonePreferenceController.java b/src/com/android/settings/applications/defaultapps/DefaultWorkPhonePreferenceController.java
new file mode 100644
index 0000000..f793fa3
--- /dev/null
+++ b/src/com/android/settings/applications/defaultapps/DefaultWorkPhonePreferenceController.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications.defaultapps;
+
+import android.content.Context;
+
+public class DefaultWorkPhonePreferenceController extends DefaultPhonePreferenceController {
+
+    public DefaultWorkPhonePreferenceController(Context context) {
+        super(context);
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return "work_default_phone_app";
+    }
+}
diff --git a/src/com/android/settings/bluetooth/BluetoothDevicePreference.java b/src/com/android/settings/bluetooth/BluetoothDevicePreference.java
index b956aa5..3fc0abf 100644
--- a/src/com/android/settings/bluetooth/BluetoothDevicePreference.java
+++ b/src/com/android/settings/bluetooth/BluetoothDevicePreference.java
@@ -284,12 +284,12 @@
             }
         }
         if (btClass != null) {
-            if (btClass.doesClassMatch(BluetoothClass.PROFILE_A2DP)) {
-                return new Pair<Integer, String>(R.drawable.ic_bt_headphones_a2dp, HEADPHONE);
-            }
-            if (btClass.doesClassMatch(BluetoothClass.PROFILE_HEADSET)) {
+          if (btClass.doesClassMatch(BluetoothClass.PROFILE_HEADSET)) {
                 return new Pair<Integer, String>(R.drawable.ic_bt_headset_hfp, HEADSET);
             }
+          if (btClass.doesClassMatch(BluetoothClass.PROFILE_A2DP)) {
+                return new Pair<Integer, String>(R.drawable.ic_bt_headphones_a2dp, HEADPHONE);
+            }
         }
         return new Pair<Integer, String>(R.drawable.ic_settings_bluetooth, BLUETOOTH);
     }
diff --git a/src/com/android/settings/bluetooth/BluetoothEnabler.java b/src/com/android/settings/bluetooth/BluetoothEnabler.java
index e3791e9..83c0560 100644
--- a/src/com/android/settings/bluetooth/BluetoothEnabler.java
+++ b/src/com/android/settings/bluetooth/BluetoothEnabler.java
@@ -31,7 +31,7 @@
 import com.android.settings.R;
 import com.android.settings.core.instrumentation.MetricsFeatureProvider;
 import com.android.settings.search.Index;
-import com.android.settings.widget.SwitchBar;
+import com.android.settings.widget.SwitchWidgetController;
 import com.android.settingslib.WirelessUtils;
 import com.android.settingslib.bluetooth.LocalBluetoothAdapter;
 import com.android.settingslib.bluetooth.LocalBluetoothManager;
@@ -41,9 +41,9 @@
  * preference. It turns on/off Bluetooth and ensures the summary of the
  * preference reflects the current state.
  */
-public final class BluetoothEnabler implements SwitchBar.OnSwitchChangeListener {
+public final class BluetoothEnabler implements SwitchWidgetController.OnSwitchChangeListener {
     private final Switch mSwitch;
-    private final SwitchBar mSwitchBar;
+    private final SwitchWidgetController mSwitchWidget;
     private final MetricsFeatureProvider mMetricsFeatureProvider;
     private Context mContext;
     private boolean mValidListener;
@@ -76,36 +76,36 @@
         }
     };
 
-    public BluetoothEnabler(Context context, SwitchBar switchBar,
-            MetricsFeatureProvider metricsFeatureProvider) {
+    public BluetoothEnabler(Context context, SwitchWidgetController switchWidget,
+            MetricsFeatureProvider metricsFeatureProvider, LocalBluetoothManager manager) {
         mContext = context;
         mMetricsFeatureProvider = metricsFeatureProvider;
-        mSwitchBar = switchBar;
-        mSwitch = switchBar.getSwitch();
+        mSwitchWidget = switchWidget;
+        mSwitch = mSwitchWidget.getSwitch();
+        mSwitchWidget.setListener(this);
         mValidListener = false;
 
-        LocalBluetoothManager manager = Utils.getLocalBtManager(context);
         if (manager == null) {
             // Bluetooth is not supported
             mLocalAdapter = null;
-            mSwitch.setEnabled(false);
+            mSwitchWidget.setEnabled(false);
         } else {
             mLocalAdapter = manager.getBluetoothAdapter();
         }
         mIntentFilter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
     }
 
-    public void setupSwitchBar() {
-        mSwitchBar.show();
+    public void setupSwitchController() {
+        mSwitchWidget.setupView();
     }
 
-    public void teardownSwitchBar() {
-        mSwitchBar.hide();
+    public void teardownSwitchController() {
+        mSwitchWidget.teardownView();
     }
 
     public void resume(Context context) {
         if (mLocalAdapter == null) {
-            mSwitch.setEnabled(false);
+            mSwitchWidget.setEnabled(false);
             return;
         }
 
@@ -116,7 +116,7 @@
         // Bluetooth state is not sticky, so set it manually
         handleStateChanged(mLocalAdapter.getBluetoothState());
 
-        mSwitchBar.addOnSwitchChangeListener(this);
+        mSwitchWidget.startListening();
         mContext.registerReceiver(mReceiver, mIntentFilter);
         mValidListener = true;
     }
@@ -125,47 +125,48 @@
         if (mLocalAdapter == null) {
             return;
         }
-
-        mSwitchBar.removeOnSwitchChangeListener(this);
-        mContext.unregisterReceiver(mReceiver);
-        mValidListener = false;
+        if (mValidListener) {
+            mSwitchWidget.stopListening();
+            mContext.unregisterReceiver(mReceiver);
+            mValidListener = false;
+        }
     }
 
     void handleStateChanged(int state) {
         switch (state) {
             case BluetoothAdapter.STATE_TURNING_ON:
-                mSwitch.setEnabled(false);
+                mSwitchWidget.setEnabled(false);
                 break;
             case BluetoothAdapter.STATE_ON:
                 setChecked(true);
-                mSwitch.setEnabled(true);
+                mSwitchWidget.setEnabled(true);
                 updateSearchIndex(true);
                 break;
             case BluetoothAdapter.STATE_TURNING_OFF:
-                mSwitch.setEnabled(false);
+                mSwitchWidget.setEnabled(false);
                 break;
             case BluetoothAdapter.STATE_OFF:
                 setChecked(false);
-                mSwitch.setEnabled(true);
+                mSwitchWidget.setEnabled(true);
                 updateSearchIndex(false);
                 break;
             default:
                 setChecked(false);
-                mSwitch.setEnabled(true);
+                mSwitchWidget.setEnabled(true);
                 updateSearchIndex(false);
         }
     }
 
     private void setChecked(boolean isChecked) {
-        if (isChecked != mSwitch.isChecked()) {
+        if (isChecked != mSwitchWidget.isChecked()) {
             // set listener to null, so onCheckedChanged won't be called
             // if the checked status on Switch isn't changed by user click
             if (mValidListener) {
-                mSwitchBar.removeOnSwitchChangeListener(this);
+                mSwitchWidget.stopListening();
             }
-            mSwitch.setChecked(isChecked);
+            mSwitchWidget.setChecked(isChecked);
             if (mValidListener) {
-                mSwitchBar.addOnSwitchChangeListener(this);
+                mSwitchWidget.startListening();
             }
         }
     }
@@ -180,13 +181,14 @@
     }
 
     @Override
-    public void onSwitchChanged(Switch switchView, boolean isChecked) {
+    public boolean onSwitchToggled(boolean isChecked) {
         // Show toast message if Bluetooth is not allowed in airplane mode
         if (isChecked &&
                 !WirelessUtils.isRadioAllowed(mContext, Settings.Global.RADIO_BLUETOOTH)) {
             Toast.makeText(mContext, R.string.wifi_in_airplane_mode, Toast.LENGTH_SHORT).show();
             // Reset switch to off
-            switchView.setChecked(false);
+            mSwitch.setChecked(false);
+            return false;
         }
 
         mMetricsFeatureProvider.action(mContext, MetricsEvent.ACTION_BLUETOOTH_TOGGLE, isChecked);
@@ -197,12 +199,13 @@
             // a) The switch should be OFF but it should still be togglable (enabled = True)
             // b) The switch bar should have OFF text.
             if (isChecked && !status) {
-                switchView.setChecked(false);
+                mSwitch.setChecked(false);
                 mSwitch.setEnabled(true);
-                mSwitchBar.setTextViewLabel(false);
-                return;
+                mSwitchWidget.updateTitle(false);
+                return false;
             }
         }
-        mSwitch.setEnabled(false);
+        mSwitchWidget.setEnabled(false);
+        return true;
     }
 }
diff --git a/src/com/android/settings/bluetooth/BluetoothMasterSwitchPreferenceController.java b/src/com/android/settings/bluetooth/BluetoothMasterSwitchPreferenceController.java
new file mode 100644
index 0000000..d9b1bea
--- /dev/null
+++ b/src/com/android/settings/bluetooth/BluetoothMasterSwitchPreferenceController.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.settings.bluetooth;
+
+import android.content.Context;
+import android.support.v7.preference.PreferenceScreen;
+
+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.settings.core.lifecycle.events.OnStart;
+import com.android.settings.core.lifecycle.events.OnStop;
+import com.android.settings.overlay.FeatureFactory;
+import com.android.settings.widget.SummaryUpdater.OnSummaryChangeListener;
+import com.android.settings.widget.MasterSwitchPreference;
+import com.android.settings.widget.MasterSwitchController;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+
+public class BluetoothMasterSwitchPreferenceController extends PreferenceController
+        implements OnSummaryChangeListener,
+        LifecycleObserver, OnResume, OnPause, OnStart, OnStop {
+
+    private static final String KEY_TOGGLE_BLUETOOTH = "toggle_bluetooth";
+
+    private LocalBluetoothManager mBluetoothManager;
+    private MasterSwitchPreference mBtPreference;
+    private BluetoothEnabler mBluetoothEnabler;
+    private BluetoothSummaryUpdater mSummaryUpdater;
+
+    public BluetoothMasterSwitchPreferenceController(Context context,
+            LocalBluetoothManager bluetoothManager) {
+        super(context);
+        mBluetoothManager = bluetoothManager;
+        mSummaryUpdater = new BluetoothSummaryUpdater(mContext, this, mBluetoothManager);
+    }
+
+    @Override
+    public void displayPreference(PreferenceScreen screen) {
+        super.displayPreference(screen);
+        mBtPreference = (MasterSwitchPreference) screen.findPreference(KEY_TOGGLE_BLUETOOTH);
+        mBluetoothEnabler = new BluetoothEnabler(mContext,
+            new MasterSwitchController(mBtPreference),
+            FeatureFactory.getFactory(mContext).getMetricsFeatureProvider(), mBluetoothManager);
+    }
+
+    @Override
+    public boolean isAvailable() {
+        return true;
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return KEY_TOGGLE_BLUETOOTH;
+    }
+
+    public void onResume() {
+        mSummaryUpdater.register(true);
+    }
+
+    @Override
+    public void onPause() {
+        mSummaryUpdater.register(false);
+    }
+
+    @Override
+    public void onStart() {
+        if (mBluetoothEnabler != null) {
+            mBluetoothEnabler.resume(mContext);
+        }
+    }
+
+    @Override
+    public void onStop() {
+        if (mBluetoothEnabler != null) {
+            mBluetoothEnabler.pause();
+        }
+    }
+
+    @Override
+    public void onSummaryChanged(String summary) {
+        if (mBtPreference != null) {
+            mBtPreference.setSummary(summary);
+        }
+    }
+
+}
diff --git a/src/com/android/settings/bluetooth/BluetoothSettings.java b/src/com/android/settings/bluetooth/BluetoothSettings.java
index d709726..6e7ae47 100644
--- a/src/com/android/settings/bluetooth/BluetoothSettings.java
+++ b/src/com/android/settings/bluetooth/BluetoothSettings.java
@@ -45,6 +45,7 @@
 import com.android.settings.LinkifyUtils;
 import com.android.settings.R;
 import com.android.settings.SettingsActivity;
+import com.android.settings.widget.SummaryUpdater.OnSummaryChangeListener;
 import com.android.settings.dashboard.SummaryLoader;
 import com.android.settings.location.ScanningSettings;
 import com.android.settings.search.BaseSearchIndexProvider;
@@ -52,13 +53,12 @@
 import com.android.settings.search.SearchIndexableRaw;
 import com.android.settings.widget.FooterPreference;
 import com.android.settings.widget.SwitchBar;
-import com.android.settingslib.bluetooth.BluetoothCallback;
+import com.android.settings.widget.SwitchBarController;
 import com.android.settingslib.bluetooth.BluetoothDeviceFilter;
 import com.android.settingslib.bluetooth.CachedBluetoothDevice;
 import com.android.settingslib.bluetooth.LocalBluetoothManager;
 
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.List;
 import java.util.Locale;
 import java.util.Set;
@@ -148,15 +148,16 @@
         final SettingsActivity activity = (SettingsActivity) getActivity();
         mSwitchBar = activity.getSwitchBar();
 
-        mBluetoothEnabler = new BluetoothEnabler(activity, mSwitchBar, mMetricsFeatureProvider);
-        mBluetoothEnabler.setupSwitchBar();
+        mBluetoothEnabler = new BluetoothEnabler(activity, new SwitchBarController(mSwitchBar),
+            mMetricsFeatureProvider, Utils.getLocalBtManager(activity));
+        mBluetoothEnabler.setupSwitchController();
     }
 
     @Override
     public void onDestroyView() {
         super.onDestroyView();
 
-        mBluetoothEnabler.teardownSwitchBar();
+        mBluetoothEnabler.teardownSwitchController();
     }
 
     @Override
@@ -508,113 +509,34 @@
     }
 
     @VisibleForTesting
-    static class SummaryProvider
-            implements SummaryLoader.SummaryProvider, BluetoothCallback {
+    static class SummaryProvider implements SummaryLoader.SummaryProvider, OnSummaryChangeListener {
 
         private final LocalBluetoothManager mBluetoothManager;
         private final Context mContext;
         private final SummaryLoader mSummaryLoader;
 
-        private boolean mEnabled;
-        private int mConnectionState;
+        @VisibleForTesting
+        BluetoothSummaryUpdater mSummaryUpdater;
 
         public SummaryProvider(Context context, SummaryLoader summaryLoader,
                 LocalBluetoothManager bluetoothManager) {
             mBluetoothManager = bluetoothManager;
             mContext = context;
             mSummaryLoader = summaryLoader;
+            mSummaryUpdater = new BluetoothSummaryUpdater(mContext, this, mBluetoothManager);
         }
 
         @Override
         public void setListening(boolean listening) {
-            BluetoothAdapter defaultAdapter = BluetoothAdapter.getDefaultAdapter();
-            if (defaultAdapter == null) return;
-            if (listening) {
-                mEnabled = defaultAdapter.isEnabled();
-                mConnectionState = defaultAdapter.getConnectionState();
-                mSummaryLoader.setSummary(this, getSummary());
-                mBluetoothManager.getEventManager().registerCallback(this);
-            } else {
-                mBluetoothManager.getEventManager().unregisterCallback(this);
+            mSummaryUpdater.register(listening);
+        }
+
+        @Override
+        public void onSummaryChanged(String summary) {
+            if (mSummaryLoader != null) {
+                mSummaryLoader.setSummary(this, summary);
             }
         }
-
-        private CharSequence getSummary() {
-            if (!mEnabled) {
-                return mContext.getString(R.string.bluetooth_disabled);
-            } else if (mConnectionState == BluetoothAdapter.STATE_CONNECTED) {
-                return mContext.getString(R.string.bluetooth_connected);
-            } else {
-                return mContext.getString(R.string.bluetooth_disconnected);
-            }
-        }
-
-        @Override
-        public void onBluetoothStateChanged(int bluetoothState) {
-            mEnabled = bluetoothState == BluetoothAdapter.STATE_ON
-                    || bluetoothState == BluetoothAdapter.STATE_TURNING_ON;
-            mSummaryLoader.setSummary(this, getSummary());
-        }
-
-        @Override
-        public void onConnectionStateChanged(CachedBluetoothDevice cachedDevice, int state) {
-            mConnectionState = state;
-            updateConnected();
-            mSummaryLoader.setSummary(this, getSummary());
-        }
-
-        @Override
-        public void onScanningStateChanged(boolean started) {
-
-        }
-
-        @Override
-        public void onDeviceAdded(CachedBluetoothDevice cachedDevice) {
-
-        }
-
-        @Override
-        public void onDeviceDeleted(CachedBluetoothDevice cachedDevice) {
-
-        }
-
-        @Override
-        public void onDeviceBondStateChanged(CachedBluetoothDevice cachedDevice, int bondState) {
-
-        }
-
-        private void updateConnected() {
-            // Make sure our connection state is up to date.
-            int state = mBluetoothManager.getBluetoothAdapter().getConnectionState();
-            if (state != mConnectionState) {
-                mConnectionState = state;
-                return;
-            }
-            final Collection<CachedBluetoothDevice> devices = getDevices();
-            if (devices == null) {
-                mConnectionState = BluetoothAdapter.STATE_DISCONNECTED;
-                return;
-            }
-            if (mConnectionState == BluetoothAdapter.STATE_CONNECTED) {
-                CachedBluetoothDevice connectedDevice = null;
-                for (CachedBluetoothDevice device : devices) {
-                    if (device.isConnected()) {
-                        connectedDevice = device;
-                    }
-                }
-                if (connectedDevice == null) {
-                    // If somehow we think we are connected, but have no connected devices, we
-                    // aren't connected.
-                    mConnectionState = BluetoothAdapter.STATE_DISCONNECTED;
-                }
-            }
-        }
-
-        private Collection<CachedBluetoothDevice> getDevices() {
-            return mBluetoothManager != null
-                    ? mBluetoothManager.getCachedDeviceManager().getCachedDevicesCopy()
-                    : null;
-        }
     }
 
     public static final SummaryLoader.SummaryProviderFactory SUMMARY_PROVIDER_FACTORY
diff --git a/src/com/android/settings/bluetooth/BluetoothSummaryUpdater.java b/src/com/android/settings/bluetooth/BluetoothSummaryUpdater.java
new file mode 100644
index 0000000..dc37efc
--- /dev/null
+++ b/src/com/android/settings/bluetooth/BluetoothSummaryUpdater.java
@@ -0,0 +1,148 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.bluetooth;
+
+import android.bluetooth.BluetoothAdapter;
+import android.content.Context;
+import com.android.settings.R;
+import com.android.settings.widget.SummaryUpdater;
+import com.android.settingslib.bluetooth.BluetoothCallback;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.LocalBluetoothAdapter;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+import java.util.Collection;
+
+/**
+ * Helper class that listeners to bluetooth callback and notify client when there is update in
+ * bluetooth summary info.
+ */
+public final class BluetoothSummaryUpdater extends SummaryUpdater implements BluetoothCallback {
+
+    private final LocalBluetoothManager mBluetoothManager;
+    private final LocalBluetoothAdapter mBluetoothAdapter;
+
+    private boolean mEnabled;
+    private int mConnectionState;
+
+    public BluetoothSummaryUpdater(Context context, OnSummaryChangeListener listener,
+            LocalBluetoothManager bluetoothManager) {
+        super(context, listener);
+        mBluetoothManager = bluetoothManager;
+        mBluetoothAdapter = mBluetoothManager != null
+            ? mBluetoothManager.getBluetoothAdapter() : null;
+    }
+
+    @Override
+    public void onBluetoothStateChanged(int bluetoothState) {
+        mEnabled = bluetoothState == BluetoothAdapter.STATE_ON
+            || bluetoothState == BluetoothAdapter.STATE_TURNING_ON;
+        notifyChangeIfNeeded();
+    }
+
+    @Override
+    public void onConnectionStateChanged(CachedBluetoothDevice cachedDevice, int state) {
+        mConnectionState = state;
+        updateConnected();
+        notifyChangeIfNeeded();
+    }
+
+    @Override
+    public void onScanningStateChanged(boolean started) {
+    }
+
+    @Override
+    public void onDeviceAdded(CachedBluetoothDevice cachedDevice) {
+    }
+
+    @Override
+    public void onDeviceDeleted(CachedBluetoothDevice cachedDevice) {
+    }
+
+    @Override
+    public void onDeviceBondStateChanged(CachedBluetoothDevice cachedDevice, int bondState) {
+    }
+
+    @Override
+    public void register(boolean listening) {
+        if (mBluetoothAdapter == null) {
+            return;
+        }
+        if (listening) {
+            mEnabled = mBluetoothAdapter.isEnabled();
+            mConnectionState = mBluetoothAdapter.getConnectionState();
+            notifyChangeIfNeeded();
+            mBluetoothManager.getEventManager().registerCallback(this);
+        } else {
+            mBluetoothManager.getEventManager().unregisterCallback(this);
+        }
+    }
+
+    @Override
+    public String getSummary() {
+        if (!mEnabled) {
+            return mContext.getString(R.string.bluetooth_disabled);
+        }
+        switch (mConnectionState) {
+            case BluetoothAdapter.STATE_CONNECTED:
+                return mContext.getString(R.string.bluetooth_connected);
+            case BluetoothAdapter.STATE_CONNECTING:
+                return mContext.getString(R.string.bluetooth_connecting);
+            case BluetoothAdapter.STATE_DISCONNECTING:
+                return mContext.getString(R.string.bluetooth_disconnecting);
+            default:
+                return mContext.getString(R.string.bluetooth_disconnected);
+        }
+    }
+
+    private void updateConnected() {
+        if (mBluetoothAdapter == null) {
+            return;
+        }
+        // Make sure our connection state is up to date.
+        int state = mBluetoothAdapter.getConnectionState();
+        if (state != mConnectionState) {
+            mConnectionState = state;
+            return;
+        }
+        final Collection<CachedBluetoothDevice> devices = getDevices();
+        if (devices == null) {
+            mConnectionState = BluetoothAdapter.STATE_DISCONNECTED;
+            return;
+        }
+        if (mConnectionState == BluetoothAdapter.STATE_CONNECTED) {
+            CachedBluetoothDevice connectedDevice = null;
+            for (CachedBluetoothDevice device : devices) {
+                if (device.isConnected()) {
+                    connectedDevice = device;
+                    break;
+                }
+            }
+            if (connectedDevice == null) {
+                // If somehow we think we are connected, but have no connected devices, we
+                // aren't connected.
+                mConnectionState = BluetoothAdapter.STATE_DISCONNECTED;
+            }
+        }
+    }
+
+    private Collection<CachedBluetoothDevice> getDevices() {
+        return mBluetoothManager != null
+            ? mBluetoothManager.getCachedDeviceManager().getCachedDevicesCopy()
+            : null;
+    }
+
+}
diff --git a/src/com/android/settings/bluetooth/RequestPermissionHelperActivity.java b/src/com/android/settings/bluetooth/RequestPermissionHelperActivity.java
index bc33cce..9ea8372 100644
--- a/src/com/android/settings/bluetooth/RequestPermissionHelperActivity.java
+++ b/src/com/android/settings/bluetooth/RequestPermissionHelperActivity.java
@@ -17,12 +17,14 @@
 package com.android.settings.bluetooth;
 
 import android.app.Activity;
+import android.app.admin.DevicePolicyManager;
 import android.bluetooth.BluetoothAdapter;
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
 import android.os.Bundle;
+import android.os.UserManager;
 import android.support.annotation.NonNull;
 import android.text.TextUtils;
 import android.util.Log;
@@ -125,8 +127,19 @@
         switch (mRequest) {
             case RequestPermissionActivity.REQUEST_ENABLE:
             case RequestPermissionActivity.REQUEST_ENABLE_DISCOVERABLE: {
-                mLocalAdapter.enable();
-                setResult(Activity.RESULT_OK);
+                UserManager userManager = getSystemService(UserManager.class);
+                if (userManager.hasUserRestriction(UserManager.DISALLOW_BLUETOOTH)) {
+                    // If Bluetooth is disallowed, don't try to enable it, show policy transparency
+                    // message instead.
+                    DevicePolicyManager dpm = getSystemService(DevicePolicyManager.class);
+                    Intent intent = dpm.createAdminSupportIntent(UserManager.DISALLOW_BLUETOOTH);
+                    if (intent != null) {
+                        startActivity(intent);
+                    }
+                } else {
+                    mLocalAdapter.enable();
+                    setResult(Activity.RESULT_OK);
+                }
             } break;
 
             case RequestPermissionActivity.REQUEST_DISABLE: {
diff --git a/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java b/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java
index b8ee1ff..786b9d3 100644
--- a/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java
+++ b/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java
@@ -20,14 +20,16 @@
 
 import com.android.internal.logging.nano.MetricsProto;
 import com.android.settings.R;
+import com.android.settings.bluetooth.BluetoothMasterSwitchPreferenceController;
+import com.android.settings.bluetooth.Utils;
 import com.android.settings.core.PreferenceController;
+import com.android.settings.core.lifecycle.Lifecycle;
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.deviceinfo.UsbBackend;
 import com.android.settings.nfc.NfcPreferenceController;
 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;
@@ -44,11 +46,6 @@
     }
 
     @Override
-    protected String getCategoryKey() {
-        return CategoryKey.CATEGORY_DEVICE;
-    }
-
-    @Override
     protected String getLogTag() {
         return TAG;
     }
@@ -61,13 +58,19 @@
     @Override
     protected List<PreferenceController> getPreferenceControllers(Context context) {
         final List<PreferenceController> controllers = new ArrayList<>();
+        final Lifecycle lifecycle = getLifecycle();
         final NfcPreferenceController nfcPreferenceController =
                 new NfcPreferenceController(context);
-        getLifecycle().addObserver(nfcPreferenceController);
+        lifecycle.addObserver(nfcPreferenceController);
         controllers.add(nfcPreferenceController);
         mUsbPrefController = new UsbModePreferenceController(context, new UsbBackend(context));
-        getLifecycle().addObserver(mUsbPrefController);
+        lifecycle.addObserver(mUsbPrefController);
         controllers.add(mUsbPrefController);
+        final BluetoothMasterSwitchPreferenceController bluetoothPreferenceController =
+            new BluetoothMasterSwitchPreferenceController(
+                context, Utils.getLocalBtManager(context));
+        lifecycle.addObserver(bluetoothPreferenceController);
+        controllers.add(bluetoothPreferenceController);
         return controllers;
     }
 
diff --git a/src/com/android/settings/core/InstrumentedPreferenceFragment.java b/src/com/android/settings/core/InstrumentedPreferenceFragment.java
index 29ba287..ce0daa9 100644
--- a/src/com/android/settings/core/InstrumentedPreferenceFragment.java
+++ b/src/com/android/settings/core/InstrumentedPreferenceFragment.java
@@ -76,4 +76,8 @@
         mDividerDecoration.setDivider(divider);
         super.setDivider(new ColorDrawable(Color.TRANSPARENT));
     }
+
+    protected final Context getPrefContext() {
+        return getPreferenceManager().getContext();
+    }
 }
diff --git a/src/com/android/settings/core/gateway/SettingsGateway.java b/src/com/android/settings/core/gateway/SettingsGateway.java
index 682fa36..1dd83cb 100644
--- a/src/com/android/settings/core/gateway/SettingsGateway.java
+++ b/src/com/android/settings/core/gateway/SettingsGateway.java
@@ -57,6 +57,7 @@
 import com.android.settings.applications.ManageAssist;
 import com.android.settings.applications.ManageDomainUrls;
 import com.android.settings.applications.NotificationApps;
+import com.android.settings.applications.PictureInPictureSettings;
 import com.android.settings.applications.ProcessStatsSummary;
 import com.android.settings.applications.ProcessStatsUi;
 import com.android.settings.applications.UsageAccessDetails;
@@ -100,6 +101,7 @@
 import com.android.settings.nfc.AndroidBeam;
 import com.android.settings.nfc.PaymentSettings;
 import com.android.settings.notification.AppNotificationSettings;
+import com.android.settings.notification.ChannelNotificationSettings;
 import com.android.settings.notification.ConfigureNotificationSettings;
 import com.android.settings.notification.NotificationAccessSettings;
 import com.android.settings.notification.NotificationStation;
@@ -208,6 +210,7 @@
             InstalledAppDetails.class.getName(),
             BatterySaverSettings.class.getName(),
             AppNotificationSettings.class.getName(),
+            ChannelNotificationSettings.class.getName(),
             OtherSoundSettings.class.getName(),
             ApnSettings.class.getName(),
             ApnEditor.class.getName(),
@@ -225,6 +228,7 @@
             AdvancedAppSettings.class.getName(),
             WallpaperTypeSettings.class.getName(),
             VrListenerSettings.class.getName(),
+            PictureInPictureSettings.class.getName(),
             ManagedProfileSettings.class.getName(),
             ChooseAccountActivity.class.getName(),
             IccLockSettings.class.getName(),
@@ -292,7 +296,6 @@
             "com.android.settings.ManageApplicationsDashboardAlias",
             "com.android.settings.PaymentSettingsDashboardAlias",
             // Home page > Network & Internet
-            "com.android.settings.WifiDashboardAlias",
             "com.android.settings.DataUsageDashboardAlias",
             // Home page > Security
             "com.android.settings.LocationDashboardAlias",
@@ -302,5 +305,6 @@
             "com.android.settings.DateTimeDashboardAlias",
             "com.android.settings.AccessibilityDashboardAlias",
             "com.android.settings.AboutDeviceDashboardAlias",
+            "com.android.settings.EnterprisePrivacyDashboardAlias",
     };
 }
diff --git a/src/com/android/settings/dashboard/DashboardAdapter.java b/src/com/android/settings/dashboard/DashboardAdapter.java
index 8b97f04..b2ed592 100644
--- a/src/com/android/settings/dashboard/DashboardAdapter.java
+++ b/src/com/android/settings/dashboard/DashboardAdapter.java
@@ -17,6 +17,7 @@
 
 import android.content.Context;
 import android.content.pm.PackageManager;
+import android.content.res.TypedArray;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.Icon;
 import android.os.Bundle;
@@ -42,6 +43,7 @@
 import com.android.settings.core.instrumentation.MetricsFeatureProvider;
 import com.android.settings.dashboard.conditional.Condition;
 import com.android.settings.dashboard.conditional.ConditionAdapterUtils;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.SuggestionParser;
 import com.android.settingslib.drawer.DashboardCategory;
 import com.android.settingslib.drawer.Tile;
@@ -130,9 +132,11 @@
     public void setCategoriesAndSuggestions(List<DashboardCategory> categories,
             List<Tile> suggestions) {
         // TODO: Better place for tinting?
-        TypedValue tintColor = new TypedValue();
-        mContext.getTheme().resolveAttribute(com.android.internal.R.attr.colorAccent,
-                tintColor, true);
+        final TypedArray a = mContext.obtainStyledAttributes(new int[] {
+            FeatureFactory.getFactory(mContext).getDashboardFeatureProvider(mContext).isEnabled()
+                ? android.R.attr.colorControlNormal : android.R.attr.colorAccent });
+        int tintColor = a.getColor(0, mContext.getColor(android.R.color.white));
+        a.recycle();
         for (int i = 0; i < categories.size(); i++) {
             for (int j = 0; j < categories.get(i).tiles.size(); j++) {
                 final Tile tile = categories.get(i).tiles.get(j);
@@ -141,7 +145,7 @@
                         tile.intent.getComponent().getPackageName())) {
                     // If this drawable is coming from outside Settings, tint it to match the
                     // color.
-                    tile.icon.setTint(tintColor.data);
+                    tile.icon.setTint(tintColor);
                 }
             }
         }
diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java
index 14d1bdd..f8a27e0 100644
--- a/src/com/android/settings/dashboard/DashboardFragment.java
+++ b/src/com/android/settings/dashboard/DashboardFragment.java
@@ -17,6 +17,7 @@
 
 import android.app.Activity;
 import android.content.Context;
+import android.content.res.TypedArray;
 import android.os.Bundle;
 import android.support.annotation.VisibleForTesting;
 import android.support.v7.preference.Preference;
@@ -193,7 +194,10 @@
     /**
      * Returns the CategoryKey for loading {@link DashboardCategory} for this fragment.
      */
-    protected abstract String getCategoryKey();
+    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    public String getCategoryKey() {
+        return DashboardFragmentRegistry.PARENT_TO_CATEGORY_KEY_MAP.get(getClass().getName());
+    }
 
     /**
      * Get the tag string for logging.
@@ -298,8 +302,15 @@
         if (mSummaryLoader != null) {
             mSummaryLoader.release();
         }
+        final Context context = getContext();
         mSummaryLoader = new SummaryLoader(getActivity(), getCategoryKey());
         mSummaryLoader.setSummaryConsumer(this);
+        final TypedArray a = context.obtainStyledAttributes(new int[]{
+                mDashboardFeatureProvider.isEnabled() ? android.R.attr.colorControlNormal
+                        : android.R.attr.colorAccent});
+        final int tintColor = a.getColor(0, context.getColor(android.R.color.white));
+        a.recycle();
+        final String pkgName = context.getPackageName();
         // Install dashboard tiles.
         for (Tile tile : tiles) {
             final String key = mDashboardFeatureProvider.getDashboardKeyForTile(tile);
@@ -310,6 +321,11 @@
             if (!displayTile(tile)) {
                 continue;
             }
+            if (pkgName != null && tile.intent != null
+                    && !pkgName.equals(tile.intent.getComponent().getPackageName())) {
+                // If this drawable is coming from outside Settings, tint it to match the color.
+                tile.icon.setTint(tintColor);
+            }
             if (mDashboardTilePrefKeys.contains(key)) {
                 // Have the key already, will rebind.
                 final Preference preference = mProgressiveDisclosureMixin.findPreference(
diff --git a/src/com/android/settings/dashboard/DashboardFragmentRegistry.java b/src/com/android/settings/dashboard/DashboardFragmentRegistry.java
new file mode 100644
index 0000000..a315836
--- /dev/null
+++ b/src/com/android/settings/dashboard/DashboardFragmentRegistry.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.dashboard;
+
+import android.util.ArrayMap;
+
+import com.android.settings.DevelopmentSettings;
+import com.android.settings.DisplaySettings;
+import com.android.settings.SecuritySettings;
+import com.android.settings.accounts.AccountDetailDashboardFragment;
+import com.android.settings.accounts.UserAndAccountDashboardFragment;
+import com.android.settings.applications.AdvancedAppSettings;
+import com.android.settings.applications.AppAndNotificationDashboardFragment;
+import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
+import com.android.settings.deviceinfo.StorageDashboardFragment;
+import com.android.settings.fuelgauge.PowerUsageSummary;
+import com.android.settings.inputmethod.InputAndGestureSettings;
+import com.android.settings.inputmethod.InputMethodAndLanguageSettings;
+import com.android.settings.language.LanguageAndRegionSettings;
+import com.android.settings.network.NetworkDashboardFragment;
+import com.android.settings.notification.SoundSettings;
+import com.android.settings.system.SystemDashboardFragment;
+import com.android.settingslib.drawer.CategoryKey;
+
+import java.util.Map;
+
+/**
+ * A registry to keep track of which page hosts which category.
+ */
+public class DashboardFragmentRegistry {
+
+    /**
+     * Map from parent fragment to category key. The parent fragment hosts child with
+     * category_key.
+     */
+    public static final Map<String, String> PARENT_TO_CATEGORY_KEY_MAP;
+
+    /**
+     * Map from category_key to parent. This is a helper to look up which fragment hosts the
+     * category_key.
+     */
+    public static final Map<String, String> CATEGORY_KEY_TO_PARENT_MAP;
+
+    static {
+        PARENT_TO_CATEGORY_KEY_MAP = new ArrayMap<>();
+        PARENT_TO_CATEGORY_KEY_MAP.put(
+                NetworkDashboardFragment.class.getName(), CategoryKey.CATEGORY_NETWORK);
+        PARENT_TO_CATEGORY_KEY_MAP.put(ConnectedDeviceDashboardFragment.class.getName(),
+                CategoryKey.CATEGORY_DEVICE);
+        PARENT_TO_CATEGORY_KEY_MAP.put(AppAndNotificationDashboardFragment.class.getName(),
+                CategoryKey.CATEGORY_APPS);
+        PARENT_TO_CATEGORY_KEY_MAP.put(PowerUsageSummary.class.getName(),
+                CategoryKey.CATEGORY_BATTERY);
+        PARENT_TO_CATEGORY_KEY_MAP.put(AdvancedAppSettings.class.getName(),
+                CategoryKey.CATEGORY_APPS_DEFAULT);
+        PARENT_TO_CATEGORY_KEY_MAP.put(DisplaySettings.class.getName(),
+                CategoryKey.CATEGORY_DISPLAY);
+        PARENT_TO_CATEGORY_KEY_MAP.put(SoundSettings.class.getName(),
+                CategoryKey.CATEGORY_SOUND);
+        PARENT_TO_CATEGORY_KEY_MAP.put(StorageDashboardFragment.class.getName(),
+                CategoryKey.CATEGORY_STORAGE);
+        PARENT_TO_CATEGORY_KEY_MAP.put(SecuritySettings.class.getName(),
+                CategoryKey.CATEGORY_SECURITY);
+        PARENT_TO_CATEGORY_KEY_MAP.put(AccountDetailDashboardFragment.class.getName(),
+                CategoryKey.CATEGORY_ACCOUNT);
+        PARENT_TO_CATEGORY_KEY_MAP.put(UserAndAccountDashboardFragment.class.getName(),
+                CategoryKey.CATEGORY_ACCOUNT);
+        PARENT_TO_CATEGORY_KEY_MAP.put(
+                SystemDashboardFragment.class.getName(), CategoryKey.CATEGORY_SYSTEM);
+        PARENT_TO_CATEGORY_KEY_MAP.put(
+                InputAndGestureSettings.class.getName(), CategoryKey.CATEGORY_SYSTEM_INPUT);
+        PARENT_TO_CATEGORY_KEY_MAP.put(InputMethodAndLanguageSettings.class.getName(),
+                CategoryKey.CATEGORY_SYSTEM_LANGUAGE);
+        PARENT_TO_CATEGORY_KEY_MAP.put(LanguageAndRegionSettings.class.getName(),
+                CategoryKey.CATEGORY_SYSTEM_LANGUAGE);
+        PARENT_TO_CATEGORY_KEY_MAP.put(DevelopmentSettings.class.getName(),
+                CategoryKey.CATEGORY_SYSTEM_DEVELOPMENT);
+
+        CATEGORY_KEY_TO_PARENT_MAP = new ArrayMap<>(PARENT_TO_CATEGORY_KEY_MAP.size());
+
+        for (Map.Entry<String, String> parentToKey : PARENT_TO_CATEGORY_KEY_MAP.entrySet()) {
+            CATEGORY_KEY_TO_PARENT_MAP.put(parentToKey.getValue(), parentToKey.getKey());
+        }
+    }
+}
diff --git a/src/com/android/settings/dashboard/SiteMapManager.java b/src/com/android/settings/dashboard/SiteMapManager.java
new file mode 100644
index 0000000..3144398
--- /dev/null
+++ b/src/com/android/settings/dashboard/SiteMapManager.java
@@ -0,0 +1,212 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.dashboard;
+
+import android.content.Context;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+import android.support.annotation.VisibleForTesting;
+import android.support.annotation.WorkerThread;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.android.settings.SettingsActivity;
+import com.android.settings.overlay.FeatureFactory;
+import com.android.settings.search.IndexDatabaseHelper;
+import com.android.settings.search.IndexDatabaseHelper.IndexColumns;
+import com.android.settings.search.IndexDatabaseHelper.SiteMapColumns;
+import com.android.settingslib.drawer.DashboardCategory;
+import com.android.settingslib.drawer.Tile;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static com.android.settings.dashboard.DashboardFragmentRegistry.CATEGORY_KEY_TO_PARENT_MAP;
+
+/**
+ * A manager class that maintains a "site map" and look up breadcrumb for a certain page on demand.
+ * <p/>
+ * The methods on this class can only be called on a background thread.
+ */
+public class SiteMapManager {
+
+    private static final String TAG = "SiteMapManager";
+    private static final boolean DEBUG_TIMING = false;
+
+    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    public static final String[] SITE_MAP_COLUMNS = {
+            SiteMapColumns.PARENT_CLASS,
+            SiteMapColumns.PARENT_TITLE,
+            SiteMapColumns.CHILD_CLASS,
+            SiteMapColumns.CHILD_TITLE
+    };
+
+    private static final String[] CLASS_TO_SCREEN_TITLE_COLUMNS = {
+            IndexColumns.CLASS_NAME,
+            IndexColumns.SCREEN_TITLE,
+    };
+
+    private final List<SiteMapPair> mPairs = new ArrayList<>();
+
+    private boolean mInitialized;
+
+    /**
+     * Given a fragment class name and its screen title, build a breadcrumb from Settings root to
+     * this screen.
+     * <p/>
+     * Not all screens have a full breadcrumb path leading up to root, it's because either some
+     * page in the breadcrumb path is not indexed, or it's only reachable via search.
+     */
+    @WorkerThread
+    public synchronized List<String> buildBreadCrumb(Context context, String clazz,
+            String screenTitle) {
+        init(context);
+        final long startTime = System.currentTimeMillis();
+        final List<String> breadcrumbs = new ArrayList<>();
+        if (!mInitialized) {
+            Log.w(TAG, "SiteMap is not initialized yet, skipping");
+            return breadcrumbs;
+        }
+        breadcrumbs.add(screenTitle);
+        String currentClass = clazz;
+        String currentTitle = screenTitle;
+        // Look up current page's parent, if found add it to breadcrumb string list, and repeat.
+        while (true) {
+            final SiteMapPair pair = lookUpParent(currentClass, currentTitle);
+            if (pair == null) {
+                if (DEBUG_TIMING) {
+                    Log.d(TAG, "BreadCrumb timing: " + (System.currentTimeMillis() - startTime));
+                }
+                return breadcrumbs;
+            }
+            breadcrumbs.add(0, pair.parentTitle);
+            currentClass = pair.parentClass;
+            currentTitle = pair.parentTitle;
+        }
+    }
+
+    /**
+     * Initialize a list of {@link SiteMapPair}s. Each pair knows about a single parent-child
+     * page relationship.
+     *
+     * We get the knowledge of such mPairs from 2 sources:
+     * 1. Static indexing time: we know which page(s) a parent can open by parsing its pref xml.
+     * 2. IA: We know from {@link DashboardFeatureProvider} which page can be dynamically
+     * injected to where.
+     */
+    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    @WorkerThread
+    synchronized void init(Context context) {
+        if (mInitialized) {
+            // Make sure only init once.
+            return;
+        }
+        final long startTime = System.currentTimeMillis();
+        // First load site map from static index table.
+        final Context appContext = context.getApplicationContext();
+        final SQLiteDatabase db = IndexDatabaseHelper.getInstance(appContext).getReadableDatabase();
+        Cursor sitemap = db.query(IndexDatabaseHelper.Tables.TABLE_SITE_MAP, SITE_MAP_COLUMNS, null,
+                null, null, null, null);
+        while (sitemap.moveToNext()) {
+            final SiteMapPair pair = new SiteMapPair(
+                    sitemap.getString(sitemap.getColumnIndex(SiteMapColumns.PARENT_CLASS)),
+                    sitemap.getString(sitemap.getColumnIndex(SiteMapColumns.PARENT_TITLE)),
+                    sitemap.getString(sitemap.getColumnIndex(SiteMapColumns.CHILD_CLASS)),
+                    sitemap.getString(sitemap.getColumnIndex(SiteMapColumns.CHILD_TITLE)));
+            mPairs.add(pair);
+        }
+        sitemap.close();
+
+        // Then prepare a local map that contains class name -> screen title mapping. This is needed
+        // to figure out the display name for any fragment if it's injected dynamically through IA.
+        final Map<String, String> classToTitleMap = new HashMap<>();
+        final Cursor titleQuery = db.query(IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX,
+                CLASS_TO_SCREEN_TITLE_COLUMNS, null, null, null, null, null);
+        while (titleQuery.moveToNext()) {
+            classToTitleMap.put(
+                    titleQuery.getString(titleQuery.getColumnIndex(IndexColumns.CLASS_NAME)),
+                    titleQuery.getString(titleQuery.getColumnIndex(IndexColumns.SCREEN_TITLE)));
+        }
+        titleQuery.close();
+
+        // Loop through all IA categories and pages and build additional SiteMapPairs
+        List<DashboardCategory> categories = FeatureFactory.getFactory(context)
+                .getDashboardFeatureProvider(context).getAllCategories();
+
+        for (DashboardCategory category : categories) {
+            // Find the category key first.
+            final String parentClass = CATEGORY_KEY_TO_PARENT_MAP.get(category.key);
+            if (parentClass == null) {
+                continue;
+            }
+            // Use the key to look up parent (which page hosts this key)
+            final String parentName = classToTitleMap.get(parentClass);
+            if (parentName == null) {
+                continue;
+            }
+            // Build parent-child mPairs for all children listed under this key.
+            for (Tile tile : category.tiles) {
+                final String childTitle = tile.title.toString();
+                String childClass = null;
+                if (tile.metaData != null) {
+                    childClass = tile.metaData.getString(
+                            SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS);
+                }
+                if (childClass == null) {
+                    continue;
+                }
+                mPairs.add(new SiteMapPair(parentClass, parentName, childClass, childTitle));
+            }
+        }
+        // Done.
+        mInitialized = true;
+        if (DEBUG_TIMING) {
+            Log.d(TAG, "Init timing: " + (System.currentTimeMillis() - startTime));
+        }
+    }
+
+    @WorkerThread
+    private SiteMapPair lookUpParent(String clazz, String title) {
+        for (SiteMapPair pair : mPairs) {
+            if (TextUtils.equals(pair.childClass, clazz)
+                    && TextUtils.equals(title, pair.childTitle)) {
+                return pair;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Data model for a parent-child page pair.
+     */
+    private static class SiteMapPair {
+        public final String parentClass;
+        public final String parentTitle;
+        public final String childClass;
+        public final String childTitle;
+
+        public SiteMapPair(String parentClass, String parentTitle, String childClass,
+                String childTitle) {
+            this.parentClass = parentClass;
+            this.parentTitle = parentTitle;
+            this.childClass = childClass;
+            this.childTitle = childTitle;
+        }
+    }
+}
diff --git a/src/com/android/settings/dashboard/SuggestionFeatureProvider.java b/src/com/android/settings/dashboard/SuggestionFeatureProvider.java
new file mode 100644
index 0000000..b20edee
--- /dev/null
+++ b/src/com/android/settings/dashboard/SuggestionFeatureProvider.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.settings.dashboard;
+
+import android.content.Context;
+
+/** Interface should be implemented if you have added new suggestions */
+public interface SuggestionFeatureProvider {
+
+    /**
+     * Returns true if smart suggestion should be used instead of xml based SuggestionParser.
+     */
+    boolean isSmartSuggestionEnabled(Context context);
+
+    /** Return true if className is the name of a class of one of your newly added suggestion. */
+    boolean isPresent(String className);
+
+    /** Return true if the suggestion has already been completed and does not need to be shown */
+    boolean isSuggestionCompleted(Context context);
+
+}
diff --git a/src/com/android/settings/dashboard/SuggestionFeatureProviderImpl.java b/src/com/android/settings/dashboard/SuggestionFeatureProviderImpl.java
new file mode 100644
index 0000000..afaf36e
--- /dev/null
+++ b/src/com/android/settings/dashboard/SuggestionFeatureProviderImpl.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.dashboard;
+
+import android.content.Context;
+
+public class SuggestionFeatureProviderImpl implements SuggestionFeatureProvider {
+
+    @Override
+    public boolean isSmartSuggestionEnabled(Context context) {
+        return false;
+    }
+
+    @Override
+    public boolean isPresent(String className) {
+        return false;
+    }
+
+    @Override
+    public boolean isSuggestionCompleted(Context context) {
+        return false;
+    }
+
+}
diff --git a/src/com/android/settings/dashboard/SuggestionsChecks.java b/src/com/android/settings/dashboard/SuggestionsChecks.java
index 78f21ea..f355f83 100644
--- a/src/com/android/settings/dashboard/SuggestionsChecks.java
+++ b/src/com/android/settings/dashboard/SuggestionsChecks.java
@@ -37,6 +37,7 @@
 import com.android.settings.Settings.ZenModeAutomationSuggestionActivity;
 import com.android.settings.Utils;
 import com.android.settings.WallpaperSuggestionActivity;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.drawer.Tile;
 
 import java.util.Collection;
@@ -67,6 +68,13 @@
         } else if (className.equals(FingerprintEnrollSuggestionActivity.class.getName())) {
             return isDeviceSecured() || !isFingerprintEnabled();
         }
+
+        SuggestionFeatureProvider provider =
+            FeatureFactory.getFactory(mContext).getSuggestionFeatureProvider();
+        if (provider != null && provider.isPresent(className)) {
+            return provider.isSuggestionCompleted(mContext);
+        }
+
         return false;
     }
 
diff --git a/src/com/android/settings/datausage/BillingCycleSettings.java b/src/com/android/settings/datausage/BillingCycleSettings.java
index 9b39840..dda984b 100644
--- a/src/com/android/settings/datausage/BillingCycleSettings.java
+++ b/src/com/android/settings/datausage/BillingCycleSettings.java
@@ -44,14 +44,16 @@
 
 import static android.net.NetworkPolicy.LIMIT_DISABLED;
 import static android.net.NetworkPolicy.WARNING_DISABLED;
-import static android.net.TrafficStats.GB_IN_BYTES;
-import static android.net.TrafficStats.MB_IN_BYTES;
 
 public class BillingCycleSettings extends DataUsageBase implements
         Preference.OnPreferenceChangeListener, DataUsageEditController {
 
     private static final String TAG = "BillingCycleSettings";
     private static final boolean LOGD = false;
+    public static final long KB_IN_BYTES = 1000;
+    public static final long MB_IN_BYTES = KB_IN_BYTES * 1000;
+    public static final long GB_IN_BYTES = MB_IN_BYTES * 1000;
+
     private static final long MAX_DATA_LIMIT_BYTES = 50000 * GB_IN_BYTES;
 
     private static final String TAG_CONFIRM_LIMIT = "confirmLimit";
diff --git a/src/com/android/settings/datausage/UnrestrictedDataAccess.java b/src/com/android/settings/datausage/UnrestrictedDataAccess.java
index 0839114..58a34b9 100644
--- a/src/com/android/settings/datausage/UnrestrictedDataAccess.java
+++ b/src/com/android/settings/datausage/UnrestrictedDataAccess.java
@@ -18,7 +18,6 @@
 import android.content.Context;
 import android.os.Bundle;
 import android.os.UserHandle;
-import android.support.annotation.VisibleForTesting;
 import android.support.v14.preference.SwitchPreference;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceViewHolder;
@@ -27,12 +26,14 @@
 import android.view.MenuItem;
 import android.view.View;
 
+import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.settings.R;
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.applications.AppStateBaseBridge;
 import com.android.settings.applications.InstalledAppDetails;
 import com.android.settings.datausage.AppStateDataUsageBridge.DataUsageState;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.applications.ApplicationsState;
 import com.android.settingslib.applications.ApplicationsState.AppEntry;
 import com.android.settingslib.applications.ApplicationsState.AppFilter;
@@ -215,6 +216,7 @@
         if (preference instanceof AccessPreference) {
             AccessPreference accessPreference = (AccessPreference) preference;
             boolean whitelisted = newValue == Boolean.TRUE;
+            logSpecialPermissionChange(whitelisted, accessPreference.mEntry.info.packageName);
             mDataSaverBackend.setIsWhitelisted(accessPreference.mEntry.info.uid,
                     accessPreference.mEntry.info.packageName, whitelisted);
             accessPreference.mState.isDataSaverWhitelisted = whitelisted;
@@ -224,6 +226,14 @@
     }
 
     @VisibleForTesting
+    void logSpecialPermissionChange(boolean whitelisted, String packageName) {
+        int logCategory = whitelisted ? MetricsEvent.APP_SPECIAL_PERMISSION_UNL_DATA_ALLOW
+                : MetricsEvent.APP_SPECIAL_PERMISSION_UNL_DATA_DENY;
+        FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider().action(getContext(),
+                logCategory, packageName);
+    }
+
+    @VisibleForTesting
     boolean shouldAddPreference(AppEntry app) {
         return app != null && UserHandle.isApp(app.info.uid);
     }
diff --git a/src/com/android/settings/deviceinfo/StorageDashboardFragment.java b/src/com/android/settings/deviceinfo/StorageDashboardFragment.java
index d05d088..61f3e95 100644
--- a/src/com/android/settings/deviceinfo/StorageDashboardFragment.java
+++ b/src/com/android/settings/deviceinfo/StorageDashboardFragment.java
@@ -21,9 +21,7 @@
 import android.os.storage.StorageManager;
 import android.os.storage.VolumeInfo;
 import android.provider.SearchIndexableResource;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
+import android.support.annotation.VisibleForTesting;
 
 import com.android.internal.logging.nano.MetricsProto;
 import com.android.settings.R;
@@ -58,13 +56,11 @@
     @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
-        final Context context = getActivity();
 
         // Initialize the storage sizes that we can quickly calc.
+        final Context context = getActivity();
         StorageManager sm = context.getSystemService(StorageManager.class);
-        String volumeId = getArguments().getString(VolumeInfo.EXTRA_VOLUME_ID);
-        mVolume = sm.findVolumeById(volumeId);
-        if (!isVolumeValid()) {
+        if (!initializeVolume(sm, getArguments())) {
             getActivity().finish();
             return;
         }
@@ -103,11 +99,6 @@
     }
 
     @Override
-    protected String getCategoryKey() {
-        return CategoryKey.CATEGORY_STORAGE;
-    }
-
-    @Override
     protected int getPreferenceScreenResId() {
         return R.xml.storage_dashboard_fragment;
     }
@@ -127,6 +118,17 @@
     }
 
     /**
+     * Initializes the volume with a given bundle and returns if the volume is valid.
+     */
+    @VisibleForTesting
+    boolean initializeVolume(StorageManager sm, Bundle bundle) {
+        String volumeId = bundle.getString(VolumeInfo.EXTRA_VOLUME_ID,
+                VolumeInfo.ID_PRIVATE_INTERNAL);
+        mVolume = sm.findVolumeById(volumeId);
+        return isVolumeValid();
+    }
+
+    /**
      * For Search.
      */
     public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
diff --git a/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java b/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java
index 7e98918..22f9c4c 100644
--- a/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java
@@ -122,7 +122,8 @@
                 intent = getAudioIntent();
                 break;
             case GAME_KEY:
-                // TODO: Once app categorization is added, make this section.
+                intent = getGamesIntent();
+                break;
             case OTHER_APPS_KEY:
                 // Because we are likely constructed with a null volume, this is theoretically
                 // possible.
@@ -259,6 +260,15 @@
                 false);
     }
 
+    private Intent getGamesIntent() {
+            Bundle args = new Bundle(1);
+            args.putString(ManageApplications.EXTRA_CLASSNAME,
+                    Settings.GamesStorageActivity.class.getName());
+            return Utils.onBuildStartFragmentIntent(mContext,
+                    ManageApplications.class.getName(), args, null, R.string.game_storage_settings,
+                    null, false);
+    }
+
     private Intent getFilesIntent() {
         return mSvp.findEmulatedForPrivate(mVolume).buildBrowseIntent();
     }
diff --git a/src/com/android/settings/display/ThemePreferenceController.java b/src/com/android/settings/display/ThemePreferenceController.java
new file mode 100644
index 0000000..da5b84a
--- /dev/null
+++ b/src/com/android/settings/display/ThemePreferenceController.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+package com.android.settings.display;
+
+import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.ACTION_THEME;
+
+import android.app.AlertDialog;
+import android.app.UiModeManager;
+import android.content.Context;
+import android.content.DialogInterface.OnClickListener;
+import android.support.v7.preference.ListPreference;
+import android.support.v7.preference.Preference;
+
+import com.android.settings.R;
+import com.android.settings.core.PreferenceController;
+import com.android.settings.core.instrumentation.MetricsFeatureProvider;
+import com.android.settings.overlay.FeatureFactory;
+
+import libcore.util.Objects;
+
+public class ThemePreferenceController extends PreferenceController implements
+        Preference.OnPreferenceChangeListener {
+
+    private static final String KEY_THEME = "theme";
+
+    private final UiModeManager mUiModeManager;
+    private final MetricsFeatureProvider mMetricsFeatureProvider;
+
+    public ThemePreferenceController(Context context) {
+        super(context);
+        mUiModeManager = context.getSystemService(UiModeManager.class);
+        mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return KEY_THEME;
+    }
+
+    @Override
+    public boolean handlePreferenceTreeClick(Preference preference) {
+        if (KEY_THEME.equals(preference.getKey())) {
+            mMetricsFeatureProvider.action(mContext, ACTION_THEME);
+        }
+        return false;
+    }
+
+    @Override
+    public void updateState(Preference preference) {
+        ListPreference pref = (ListPreference) preference;
+        String[] options = mUiModeManager.getAvailableThemes();
+        for (int i = 0; i < options.length; i++) {
+            options[i] = nullToDefault(options[i]);
+        }
+        pref.setEntries(options);
+        pref.setEntryValues(options);
+        String theme = mUiModeManager.getTheme();
+        if (theme == null) {
+            theme = mContext.getString(R.string.default_theme);
+        }
+        pref.setValue(nullToDefault(theme));
+    }
+
+    @Override
+    public boolean onPreferenceChange(Preference preference, Object newValue) {
+        if (Objects.equal(newValue, mUiModeManager.getTheme())) {
+            return true;
+        }
+        // TODO: STOPSHIP Don't require reboot and remove this prompt.
+        OnClickListener onConfirm = (d, i) -> {
+            mUiModeManager.setTheme(defaultToNull((String) newValue));
+            ((ListPreference) preference).setValue((String) newValue);
+        };
+        new AlertDialog.Builder(mContext)
+                .setTitle(R.string.change_theme_reboot)
+                .setPositiveButton(com.android.internal.R.string.global_action_restart, onConfirm)
+                .setNegativeButton(android.R.string.cancel, null)
+                .show();
+        return false;
+    }
+
+    @Override
+    public boolean isAvailable() {
+        String[] themes = mUiModeManager.getAvailableThemes();
+        return themes != null && themes.length > 1;
+    }
+
+    private String nullToDefault(String input) {
+        if (input == null) {
+            return mContext.getString(R.string.default_theme);
+        }
+        return input;
+    }
+
+    private String defaultToNull(String input) {
+        if (mContext.getString(R.string.default_theme).equals(input)) {
+            return null;
+        }
+        return input;
+    }
+}
diff --git a/src/com/android/settings/enterprise/AdminActionPreferenceControllerBase.java b/src/com/android/settings/enterprise/AdminActionPreferenceControllerBase.java
index 99ff62e..ef03cfb 100644
--- a/src/com/android/settings/enterprise/AdminActionPreferenceControllerBase.java
+++ b/src/com/android/settings/enterprise/AdminActionPreferenceControllerBase.java
@@ -11,6 +11,7 @@
  * KIND, either express or implied. See the License for the specific language governing
  * permissions and limitations under the License.
  */
+
 package com.android.settings.enterprise;
 
 import android.content.Context;
diff --git a/src/com/android/settings/enterprise/AdminGrantedCameraPermissionPreferenceController.java b/src/com/android/settings/enterprise/AdminGrantedCameraPermissionPreferenceController.java
new file mode 100644
index 0000000..a2137ff
--- /dev/null
+++ b/src/com/android/settings/enterprise/AdminGrantedCameraPermissionPreferenceController.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+package com.android.settings.enterprise;
+
+import android.Manifest;
+import android.content.Context;
+
+import com.android.settings.R;
+
+public class AdminGrantedCameraPermissionPreferenceController extends
+        AdminGrantedPermissionsPreferenceControllerBase {
+
+    private static final String KEY_ENTERPRISE_PRIVACY_NUMBER_CAMERA_ACCESS_PACKAGES
+            = "enterprise_privacy_number_camera_access_packages";
+
+    public AdminGrantedCameraPermissionPreferenceController(Context context) {
+        super(context, new String[] {Manifest.permission.CAMERA},
+                R.plurals.enterprise_privacy_number_camera_access_packages);
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return KEY_ENTERPRISE_PRIVACY_NUMBER_CAMERA_ACCESS_PACKAGES;
+    }
+}
diff --git a/src/com/android/settings/enterprise/AdminGrantedLocationPermissionsPreferenceController.java b/src/com/android/settings/enterprise/AdminGrantedLocationPermissionsPreferenceController.java
new file mode 100644
index 0000000..0453b53
--- /dev/null
+++ b/src/com/android/settings/enterprise/AdminGrantedLocationPermissionsPreferenceController.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+package com.android.settings.enterprise;
+
+import android.Manifest;
+import android.content.Context;
+
+import com.android.settings.R;
+
+public class AdminGrantedLocationPermissionsPreferenceController extends
+        AdminGrantedPermissionsPreferenceControllerBase {
+
+    private static final String KEY_ENTERPRISE_PRIVACY_NUMBER_LOCATION_ACCESS_PACKAGES
+            = "enterprise_privacy_number_location_access_packages";
+
+    public AdminGrantedLocationPermissionsPreferenceController(Context context) {
+        super(context, new String[] {Manifest.permission.ACCESS_COARSE_LOCATION,
+                Manifest.permission.ACCESS_FINE_LOCATION},
+                R.plurals.enterprise_privacy_number_location_access_packages);
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return KEY_ENTERPRISE_PRIVACY_NUMBER_LOCATION_ACCESS_PACKAGES;
+    }
+}
diff --git a/src/com/android/settings/enterprise/AdminGrantedMicrophonePermissionPreferenceController.java b/src/com/android/settings/enterprise/AdminGrantedMicrophonePermissionPreferenceController.java
new file mode 100644
index 0000000..3adde92
--- /dev/null
+++ b/src/com/android/settings/enterprise/AdminGrantedMicrophonePermissionPreferenceController.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+package com.android.settings.enterprise;
+
+import android.Manifest;
+import android.content.Context;
+
+import com.android.settings.R;
+
+public class AdminGrantedMicrophonePermissionPreferenceController extends
+        AdminGrantedPermissionsPreferenceControllerBase {
+
+    private static final String KEY_ENTERPRISE_PRIVACY_NUMBER_MICROPHONE_ACCESS_PACKAGES
+            = "enterprise_privacy_number_microphone_access_packages";
+
+    public AdminGrantedMicrophonePermissionPreferenceController(Context context) {
+        super(context, new String[] {Manifest.permission.RECORD_AUDIO},
+                R.plurals.enterprise_privacy_number_microphone_access_packages);
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return KEY_ENTERPRISE_PRIVACY_NUMBER_MICROPHONE_ACCESS_PACKAGES;
+    }
+}
diff --git a/src/com/android/settings/enterprise/AdminGrantedPermissionsPreferenceControllerBase.java b/src/com/android/settings/enterprise/AdminGrantedPermissionsPreferenceControllerBase.java
new file mode 100644
index 0000000..2ca5451
--- /dev/null
+++ b/src/com/android/settings/enterprise/AdminGrantedPermissionsPreferenceControllerBase.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+package com.android.settings.enterprise;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.support.v7.preference.Preference;
+
+import com.android.settings.applications.ApplicationFeatureProvider;
+import com.android.settings.core.PreferenceController;
+import com.android.settings.overlay.FeatureFactory;
+
+public abstract class AdminGrantedPermissionsPreferenceControllerBase extends PreferenceController {
+
+    private final String[] mPermissions;
+    private final int mStringResourceId;
+    private final ApplicationFeatureProvider mFeatureProvider;
+
+    public AdminGrantedPermissionsPreferenceControllerBase(Context context, String[] permissions,
+            int stringResourceId) {
+        super(context);
+        mPermissions = permissions;
+        mStringResourceId = stringResourceId;
+        mFeatureProvider = FeatureFactory.getFactory(context)
+                .getApplicationFeatureProvider(context);
+    }
+
+    @Override
+    public void updateState(Preference preference) {
+        mFeatureProvider.calculateNumberOfAppsWithAdminGrantedPermissions(mPermissions,
+                (num) -> {
+                    if (num == 0) {
+                        preference.setVisible(false);
+                    } else {
+                        preference.setVisible(true);
+                        preference.setTitle(mContext.getResources().getQuantityString(
+                                mStringResourceId, num, num));
+                    }
+                });
+    }
+
+    @Override
+    public boolean isAvailable() {
+        return true;
+    }
+}
diff --git a/src/com/android/settings/enterprise/DevicePolicyManagerWrapper.java b/src/com/android/settings/enterprise/DevicePolicyManagerWrapper.java
index d65292f..5be7884 100644
--- a/src/com/android/settings/enterprise/DevicePolicyManagerWrapper.java
+++ b/src/com/android/settings/enterprise/DevicePolicyManagerWrapper.java
@@ -17,6 +17,7 @@
 package com.android.settings.enterprise;
 
 import android.content.ComponentName;
+import android.support.annotation.Nullable;
 
 /**
  * This interface replicates a subset of the android.app.admin.DevicePolicyManager (DPM). The
@@ -33,6 +34,21 @@
     ComponentName getDeviceOwnerComponentOnAnyUser();
 
     /**
+     * Calls {@code DevicePolicyManager.getDeviceOwnerNameOnAnyUser()}.
+     *
+     * @see android.app.admin.DevicePolicyManager#getDeviceOwnerNameOnAnyUser
+     */
+    public CharSequence getDeviceOwnerOrganizationName();
+
+    /**
+     * Calls {@code DevicePolicyManager.getPermissionGrantState()}.
+     *
+     * @see android.app.admin.DevicePolicyManager#getPermissionGrantState
+     */
+    int getPermissionGrantState(@Nullable ComponentName admin, String packageName,
+            String permission);
+
+    /**
      * Calls {@code DevicePolicyManager.getLastSecurityLogRetrievalTime()}.
      *
      * @see android.app.admin.DevicePolicyManager#getLastSecurityLogRetrievalTime
diff --git a/src/com/android/settings/enterprise/DevicePolicyManagerWrapperImpl.java b/src/com/android/settings/enterprise/DevicePolicyManagerWrapperImpl.java
index 710e5ac..6e162a8 100644
--- a/src/com/android/settings/enterprise/DevicePolicyManagerWrapperImpl.java
+++ b/src/com/android/settings/enterprise/DevicePolicyManagerWrapperImpl.java
@@ -18,6 +18,7 @@
 
 import android.app.admin.DevicePolicyManager;
 import android.content.ComponentName;
+import android.support.annotation.Nullable;
 
 public class DevicePolicyManagerWrapperImpl implements DevicePolicyManagerWrapper {
     private final DevicePolicyManager mDpm;
@@ -32,6 +33,17 @@
     }
 
     @Override
+    public CharSequence getDeviceOwnerOrganizationName() {
+        return mDpm.getDeviceOwnerOrganizationName();
+    }
+
+    @Override
+    public int getPermissionGrantState(@Nullable ComponentName admin, String packageName,
+            String permission) {
+        return mDpm.getPermissionGrantState(admin, packageName, permission);
+    }
+
+    @Override
     public long getLastSecurityLogRetrievalTime() {
         return mDpm.getLastSecurityLogRetrievalTime();
     }
diff --git a/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProvider.java b/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProvider.java
index 43f6903..91ad119 100644
--- a/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProvider.java
+++ b/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProvider.java
@@ -16,6 +16,8 @@
 
 package com.android.settings.enterprise;
 
+import android.content.Context;
+
 import java.util.Date;
 
 public interface EnterprisePrivacyFeatureProvider {
@@ -32,6 +34,15 @@
     boolean isInCompMode();
 
     /**
+     * Returns a message informing the user that the device is managed by a Device Owner app. The
+     * message includes a Learn More link that takes the user to the enterprise privacy section of
+     * Settings. If the device is not managed by a Device Owner app, returns {@code null}.
+     *
+     * @param context The context in which to show the enterprise privacy section of Settings
+     */
+    CharSequence getDeviceOwnerDisclosure(Context context);
+
+    /**
      * Returns the time at which the Device Owner last retrieved security logs, or {@code null} if
      * logs were never retrieved by the Device Owner on this device.
      */
diff --git a/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProviderImpl.java b/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProviderImpl.java
index 9fbb083..bb5412b 100644
--- a/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProviderImpl.java
+++ b/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProviderImpl.java
@@ -16,11 +16,19 @@
 
 package com.android.settings.enterprise;
 
+import android.content.Context;
+import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.content.pm.UserInfo;
+import android.content.res.Resources;
 import android.os.UserHandle;
 import android.os.UserManager;
+import android.provider.Settings;
+import android.text.SpannableStringBuilder;
+import android.text.style.ClickableSpan;
+import android.view.View;
 
+import com.android.settings.R;
 import com.android.settings.applications.PackageManagerWrapper;
 import com.android.settings.vpn2.ConnectivityManagerWrapper;
 import com.android.settings.vpn2.VpnUtils;
@@ -34,15 +42,18 @@
     private final PackageManagerWrapper mPm;
     private final UserManager mUm;
     private final ConnectivityManagerWrapper mCm;
+    private final Resources mResources;
 
     private static final int MY_USER_ID = UserHandle.myUserId();
 
     public EnterprisePrivacyFeatureProviderImpl(DevicePolicyManagerWrapper dpm,
-            PackageManagerWrapper pm, UserManager um, ConnectivityManagerWrapper cm) {
+            PackageManagerWrapper pm, UserManager um, ConnectivityManagerWrapper cm,
+            Resources resources) {
         mDpm = dpm;
         mPm = pm;
         mUm = um;
         mCm = cm;
+        mResources = resources;
     }
 
     @Override
@@ -68,6 +79,26 @@
     }
 
     @Override
+    public CharSequence getDeviceOwnerDisclosure(Context context) {
+        if (!hasDeviceOwner()) {
+            return null;
+        }
+
+        final SpannableStringBuilder disclosure = new SpannableStringBuilder();
+        final CharSequence organizationName = mDpm.getDeviceOwnerOrganizationName();
+        if (organizationName != null) {
+            disclosure.append(mResources.getString(R.string.do_disclosure_with_name,
+                    organizationName));
+        } else {
+            disclosure.append(mResources.getString(R.string.do_disclosure_generic));
+        }
+        disclosure.append(mResources.getString(R.string.do_disclosure_learn_more_separator));
+        disclosure.append(mResources.getString(R.string.do_disclosure_learn_more),
+                new EnterprisePrivacySpan(context), 0);
+        return disclosure;
+    }
+
+    @Override
     public Date getLastSecurityLogRetrievalTime() {
         final long timestamp = mDpm.getLastSecurityLogRetrievalTime();
         return timestamp < 0 ? null : new Date(timestamp);
@@ -101,4 +132,23 @@
     public boolean isGlobalHttpProxySet() {
         return mCm.getGlobalProxy() != null;
     }
+
+    protected static class EnterprisePrivacySpan extends ClickableSpan {
+        private final Context mContext;
+
+        public EnterprisePrivacySpan(Context context) {
+            mContext = context;
+        }
+
+        @Override
+        public void onClick(View widget) {
+            mContext.startActivity(new Intent(Settings.ACTION_ENTERPRISE_PRIVACY_SETTINGS));
+        }
+
+        @Override
+        public boolean equals(Object object) {
+            return object instanceof EnterprisePrivacySpan
+                    && ((EnterprisePrivacySpan) object).mContext == mContext;
+        }
+    }
 }
diff --git a/src/com/android/settings/enterprise/EnterprisePrivacySettings.java b/src/com/android/settings/enterprise/EnterprisePrivacySettings.java
index 2cd2862..75d3b10 100644
--- a/src/com/android/settings/enterprise/EnterprisePrivacySettings.java
+++ b/src/com/android/settings/enterprise/EnterprisePrivacySettings.java
@@ -19,12 +19,11 @@
 import android.content.Context;
 import android.provider.SearchIndexableResource;
 
-import com.android.settings.R;
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+import com.android.settings.R;
 import com.android.settings.core.PreferenceController;
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.search.BaseSearchIndexProvider;
-import com.android.settings.search.Indexable.SearchIndexProvider;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -40,11 +39,6 @@
     }
 
     @Override
-    protected String getCategoryKey() {
-        return null;
-    }
-
-    @Override
     protected String getLogTag() {
         return TAG;
     }
@@ -61,10 +55,14 @@
         controllers.add(new NetworkLogsPreferenceController(context));
         controllers.add(new BugReportsPreferenceController(context));
         controllers.add(new SecurityLogsPreferenceController(context));
+        controllers.add(new EnterpriseInstalledPackagesPreferenceController(context));
+        controllers.add(new AdminGrantedLocationPermissionsPreferenceController(context));
+        controllers.add(new AdminGrantedMicrophonePermissionPreferenceController(context));
+        controllers.add(new AdminGrantedCameraPermissionPreferenceController(context));
+        controllers.add(new EnterpriseSetDefaultAppsPreferenceController(context));
         controllers.add(new AlwaysOnVpnPrimaryUserPreferenceController(context));
         controllers.add(new AlwaysOnVpnManagedProfilePreferenceController(context));
         controllers.add(new GlobalHttpProxyPreferenceController(context));
-        controllers.add(new EnterpriseInstalledPackagesPreferenceController(context));
         return controllers;
     }
 
diff --git a/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsPreferenceController.java b/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsPreferenceController.java
new file mode 100644
index 0000000..23627cd
--- /dev/null
+++ b/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsPreferenceController.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+package com.android.settings.enterprise;
+
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.provider.ContactsContract;
+import android.provider.MediaStore;
+import android.support.v7.preference.Preference;
+
+import com.android.settings.R;
+import com.android.settings.applications.ApplicationFeatureProvider;
+import com.android.settings.core.PreferenceController;
+import com.android.settings.overlay.FeatureFactory;
+
+public class EnterpriseSetDefaultAppsPreferenceController extends PreferenceController {
+
+    private static final String KEY_DEFAULT_APPS = "number_enterprise_set_default_apps";
+    private final ApplicationFeatureProvider mFeatureProvider;
+
+    public EnterpriseSetDefaultAppsPreferenceController(Context context) {
+        super(context);
+        mFeatureProvider = FeatureFactory.getFactory(context)
+                .getApplicationFeatureProvider(context);
+    }
+
+    @Override
+    public void updateState(Preference preference) {
+        // Browser
+        int num = mFeatureProvider.findPersistentPreferredActivities(new Intent[] {
+                buildIntent(Intent.ACTION_VIEW, Intent.CATEGORY_BROWSABLE, "http:", null)}).size();
+        // Camera
+        num += mFeatureProvider.findPersistentPreferredActivities(new Intent[] {
+                new Intent(MediaStore.ACTION_IMAGE_CAPTURE),
+                new Intent(MediaStore.ACTION_VIDEO_CAPTURE)}).size();
+        // Map
+        num += mFeatureProvider.findPersistentPreferredActivities(new Intent[] {
+                buildIntent(Intent.ACTION_VIEW, null, "geo:", null)}).size();
+        // E-mail
+        num += mFeatureProvider.findPersistentPreferredActivities(new Intent[] {
+                new Intent(Intent.ACTION_SENDTO), new Intent(Intent.ACTION_SEND),
+                new Intent(Intent.ACTION_SEND_MULTIPLE)}).size();
+        // Calendar
+        num += mFeatureProvider.findPersistentPreferredActivities(new Intent[] {
+                buildIntent(Intent.ACTION_INSERT, null, null, "vnd.android.cursor.dir/event")})
+                .size();
+        // Contacts
+        num += mFeatureProvider.findPersistentPreferredActivities(new Intent[] {
+                buildIntent(Intent.ACTION_PICK, null, null,
+                        ContactsContract.Contacts.CONTENT_TYPE)}).size();
+        // Dialer
+        num += mFeatureProvider.findPersistentPreferredActivities(new Intent[] {
+                new Intent(Intent.ACTION_DIAL), new Intent(Intent.ACTION_CALL)}).size();
+
+        if (num == 0) {
+            preference.setVisible(false);
+        } else {
+            preference.setVisible(true);
+            preference.setTitle(mContext.getResources().getQuantityString(
+                    R.plurals.enterprise_privacy_number_enterprise_set_default_apps,
+                    num, num));
+        }
+    }
+
+    @Override
+    public boolean isAvailable() {
+        return true;
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return KEY_DEFAULT_APPS;
+    }
+
+    private static Intent buildIntent(String action, String category, String protocol,
+            String type) {
+        final Intent intent = new Intent(action);
+        if (category != null) {
+            intent.addCategory(category);
+        }
+        if (protocol != null) {
+            intent.setData(Uri.parse(protocol));
+        }
+        if (type != null) {
+            intent.setType(type);
+        }
+        return intent;
+    }
+}
diff --git a/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroduction.java b/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroduction.java
index 546fc0e..3951aff 100644
--- a/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroduction.java
+++ b/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroduction.java
@@ -16,6 +16,7 @@
 
 package com.android.settings.fingerprint;
 
+import android.app.KeyguardManager;
 import android.content.Intent;
 import android.content.res.Resources;
 import android.os.UserHandle;
@@ -83,9 +84,17 @@
 
     @Override
     protected void onCancelButtonClick() {
-        SetupSkipDialog dialog = SetupSkipDialog.newInstance(
-                getIntent().getBooleanExtra(SetupSkipDialog.EXTRA_FRP_SUPPORTED, false));
-        dialog.show(getFragmentManager());
+        KeyguardManager keyguardManager = getSystemService(KeyguardManager.class);
+        if (keyguardManager.isKeyguardSecure()) {
+            // If the keyguard is already set up securely (maybe the user added a backup screen
+            // lock and skipped fingerprint), return RESULT_SKIP directly.
+            setResult(RESULT_SKIP);
+            finish();
+        } else {
+            SetupSkipDialog dialog = SetupSkipDialog.newInstance(
+                    getIntent().getBooleanExtra(SetupSkipDialog.EXTRA_FRP_SUPPORTED, false));
+            dialog.show(getFragmentManager());
+        }
     }
 
     @Override
diff --git a/src/com/android/settings/fuelgauge/BatterySaverController.java b/src/com/android/settings/fuelgauge/BatterySaverController.java
new file mode 100644
index 0000000..08d570a
--- /dev/null
+++ b/src/com/android/settings/fuelgauge/BatterySaverController.java
@@ -0,0 +1,176 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.settings.fuelgauge;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.database.ContentObserver;
+import android.os.BatteryManager;
+import android.os.Handler;
+import android.os.PowerManager;
+import android.provider.Settings;
+import android.support.annotation.VisibleForTesting;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+import android.util.Log;
+import com.android.settings.R;
+import com.android.settings.Utils;
+import com.android.settings.core.PreferenceController;
+import com.android.settings.core.lifecycle.Lifecycle;
+import com.android.settings.core.lifecycle.LifecycleObserver;
+import com.android.settings.core.lifecycle.events.OnStart;
+import com.android.settings.core.lifecycle.events.OnStop;
+import com.android.settings.dashboard.conditional.BatterySaverCondition;
+import com.android.settings.dashboard.conditional.ConditionManager;
+import com.android.settings.widget.MasterSwitchPreference;
+
+import static android.os.PowerManager.ACTION_POWER_SAVE_MODE_CHANGING;
+
+public class BatterySaverController extends PreferenceController implements
+        Preference.OnPreferenceChangeListener, LifecycleObserver, OnStart, OnStop {
+    private static final String KEY_BATTERY_SAVER = "battery_saver";
+    private static final String TAG = "BatterySaverController";
+    private static final boolean DEBUG = false;
+
+    private final BatteryStateChangeReceiver mBatteryStateChangeReceiver;
+    private final PowerManager mPowerManager;
+    private MasterSwitchPreference mBatterySaverPref;
+
+    public BatterySaverController(Context context, Lifecycle lifecycle) {
+        super(context);
+
+        lifecycle.addObserver(this);
+        mPowerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
+        mBatteryStateChangeReceiver = new BatteryStateChangeReceiver();
+    }
+
+    @Override
+    public boolean isAvailable() {
+        return true;
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return KEY_BATTERY_SAVER;
+    }
+
+    @Override
+    public void displayPreference(PreferenceScreen screen) {
+        super.displayPreference(screen);
+        mBatterySaverPref = (MasterSwitchPreference) screen.findPreference(KEY_BATTERY_SAVER);
+    }
+
+    @Override
+    public void updateState(Preference preference) {
+        mBatterySaverPref.setChecked(mPowerManager.isPowerSaveMode());
+        updateSummary();
+    }
+
+    @Override
+    public boolean onPreferenceChange(Preference preference, Object newValue) {
+        final boolean saverOn = (Boolean) newValue;
+        if (saverOn != mPowerManager.isPowerSaveMode()
+                && !mPowerManager.setPowerSaveMode(saverOn)) {
+            // Do nothing if power save mode doesn't set correctly
+            return false;
+        }
+
+        refreshConditionManager();
+        updateSummary();
+        return true;
+    }
+
+    @Override
+    public void onStart() {
+        mContext.getContentResolver().registerContentObserver(
+                Settings.Global.getUriFor(Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL)
+                , true, mObserver);
+
+        mBatteryStateChangeReceiver.setListening(true);
+    }
+
+    @Override
+    public void onStop() {
+        mContext.getContentResolver().unregisterContentObserver(mObserver);
+        mBatteryStateChangeReceiver.setListening(false);
+    }
+
+    @VisibleForTesting
+    void refreshConditionManager() {
+        ConditionManager.get(mContext).getCondition(BatterySaverCondition.class).refreshState();
+    }
+
+    private void updateSummary() {
+        final boolean mode = mPowerManager.isPowerSaveMode();
+        final int format = mode ? R.string.battery_saver_on_summary
+                : R.string.battery_saver_off_summary;
+        final int percent = Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0);
+        final int percentFormat = percent > 0 ? R.string.battery_saver_desc_turn_on_auto_pct
+                : R.string.battery_saver_desc_turn_on_auto_never;
+
+        final String summary = mContext.getString(format, mContext.getString(percentFormat,
+                Utils.formatPercentage(percent)));
+
+        mBatterySaverPref.setSummary(summary);
+    }
+
+    private final ContentObserver mObserver = new ContentObserver(new Handler()) {
+        @Override
+        public void onChange(boolean selfChange) {
+            updateSummary();
+        }
+    };
+
+    private final class BatteryStateChangeReceiver extends BroadcastReceiver {
+        private boolean mRegistered;
+
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            if (DEBUG) {
+                Log.d(TAG, "Received " + intent.getAction());
+            }
+            final String action = intent.getAction();
+            if (action.equals(ACTION_POWER_SAVE_MODE_CHANGING)) {
+                mBatterySaverPref.setChecked(mPowerManager.isPowerSaveMode());
+                updateSummary();
+            } else if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
+                final int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
+                // disable BSM switch if phone is plugged in or at 100% while plugged in
+                final boolean enabled = !(status == BatteryManager.BATTERY_STATUS_CHARGING
+                        || status == BatteryManager.BATTERY_STATUS_FULL);
+
+                mBatterySaverPref.setSwitchEnabled(enabled);
+            }
+        }
+
+        public void setListening(boolean listening) {
+            if (listening && !mRegistered) {
+                final IntentFilter ifilter = new IntentFilter();
+                ifilter.addAction(Intent.ACTION_BATTERY_CHANGED);
+                ifilter.addAction(ACTION_POWER_SAVE_MODE_CHANGING);
+                mContext.registerReceiver(this, ifilter);
+                mRegistered = true;
+            } else if (!listening && mRegistered) {
+                mContext.unregisterReceiver(this);
+                mRegistered = false;
+            }
+        }
+
+    }
+}
diff --git a/src/com/android/settings/fuelgauge/BatterySaverPreference.java b/src/com/android/settings/fuelgauge/BatterySaverPreference.java
deleted file mode 100644
index 9e0f39b..0000000
--- a/src/com/android/settings/fuelgauge/BatterySaverPreference.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the
- * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the specific language governing
- * permissions and limitations under the License.
- */
-
-package com.android.settings.fuelgauge;
-
-import android.content.Context;
-import android.database.ContentObserver;
-import android.os.Handler;
-import android.os.PowerManager;
-import android.provider.Settings;
-import android.provider.Settings.Global;
-import android.support.v7.preference.Preference;
-import android.util.AttributeSet;
-import android.view.View;
-import com.android.settings.R;
-import com.android.settings.Utils;
-
-public class BatterySaverPreference extends Preference {
-
-    private PowerManager mPowerManager;
-
-    public BatterySaverPreference(Context context, AttributeSet attrs) {
-        super(context, attrs);
-    }
-
-    @Override
-    protected void performClick(View view) {
-        Utils.startWithFragment(getContext(), getFragment(), null, null, 0, 0, getTitle());
-    }
-
-    @Override
-    public void onAttached() {
-        super.onAttached();
-        mPowerManager = (PowerManager) getContext().getSystemService(Context.POWER_SERVICE);
-        mObserver.onChange(true);
-        getContext().getContentResolver().registerContentObserver(
-                Settings.Global.getUriFor(Global.LOW_POWER_MODE_TRIGGER_LEVEL), true, mObserver);
-        getContext().getContentResolver().registerContentObserver(
-                Settings.Global.getUriFor(Global.LOW_POWER_MODE), true, mObserver);
-    }
-
-    @Override
-    public void onDetached() {
-        super.onDetached();
-        getContext().getContentResolver().unregisterContentObserver(mObserver);
-    }
-
-    private void updateSwitch() {
-        final Context context = getContext();
-        final boolean mode = mPowerManager.isPowerSaveMode();
-        int format = mode ? R.string.battery_saver_on_summary
-                : R.string.battery_saver_off_summary;
-        int percent = Settings.Global.getInt(context.getContentResolver(),
-                Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0);
-        int percentFormat = percent > 0 ? R.string.battery_saver_desc_turn_on_auto_pct
-                : R.string.battery_saver_desc_turn_on_auto_never;
-        setSummary(context.getString(format, context.getString(percentFormat,
-                Utils.formatPercentage(percent))));
-    }
-
-    private final ContentObserver mObserver = new ContentObserver(new Handler()) {
-        @Override
-        public void onChange(boolean selfChange) {
-            updateSwitch();
-        }
-    };
-
-}
diff --git a/src/com/android/settings/fuelgauge/HighPowerDetail.java b/src/com/android/settings/fuelgauge/HighPowerDetail.java
index a59dc78..296f973 100644
--- a/src/com/android/settings/fuelgauge/HighPowerDetail.java
+++ b/src/com/android/settings/fuelgauge/HighPowerDetail.java
@@ -30,10 +30,12 @@
 import android.widget.Checkable;
 import android.widget.TextView;
 
+import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.logging.nano.MetricsProto;
 import com.android.settings.R;
 import com.android.settings.applications.AppInfoBase;
 import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.applications.ApplicationsState.AppEntry;
 
 public class HighPowerDetail extends InstrumentedDialogFragment implements OnClickListener,
@@ -125,6 +127,7 @@
             boolean newValue = mIsEnabled;
             boolean oldValue = mBackend.isWhitelisted(mPackageName);
             if (newValue != oldValue) {
+                logSpecialPermissionChange(newValue, mPackageName, getContext());
                 if (newValue) {
                     mBackend.addApp(mPackageName);
                 } else {
@@ -134,6 +137,14 @@
         }
     }
 
+    @VisibleForTesting
+    static void logSpecialPermissionChange(boolean whitelist, String packageName, Context context) {
+        int logCategory = whitelist ? MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_BATTERY_DENY
+                : MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_BATTERY_ALLOW;
+        FeatureFactory.getFactory(context).getMetricsFeatureProvider().action(context, logCategory,
+                packageName);
+    }
+
     @Override
     public void onDismiss(DialogInterface dialog) {
         super.onDismiss(dialog);
diff --git a/src/com/android/settings/fuelgauge/PowerUsageBase.java b/src/com/android/settings/fuelgauge/PowerUsageBase.java
index 1af9df1..60d1ecd 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageBase.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageBase.java
@@ -32,12 +32,12 @@
 
 import com.android.internal.os.BatteryStatsHelper;
 import com.android.settings.R;
-import com.android.settings.SettingsPreferenceFragment;
+import com.android.settings.dashboard.DashboardFragment;
 
 /**
  * Common base class for things that need to show the battery usage graph.
  */
-public abstract class PowerUsageBase extends SettingsPreferenceFragment {
+public abstract class PowerUsageBase extends DashboardFragment {
 
     // +1 to allow ordering for PowerUsageSummary.
     @VisibleForTesting
diff --git a/src/com/android/settings/fuelgauge/PowerUsageDetail.java b/src/com/android/settings/fuelgauge/PowerUsageDetail.java
index 5f9a305..7acb7ce 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageDetail.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageDetail.java
@@ -34,6 +34,7 @@
 import android.os.Bundle;
 import android.os.Process;
 import android.os.UserHandle;
+import android.provider.SearchIndexableResource;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.Preference.OnPreferenceClickListener;
 import android.support.v7.preference.PreferenceCategory;
@@ -42,7 +43,6 @@
 import android.util.Log;
 import android.view.View;
 import android.widget.Button;
-
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.internal.os.BatterySipper;
 import com.android.internal.os.BatterySipper.DrainType;
@@ -58,13 +58,17 @@
 import com.android.settings.applications.InstalledAppDetails;
 import com.android.settings.applications.LayoutPreference;
 import com.android.settings.bluetooth.BluetoothSettings;
+import com.android.settings.core.PreferenceController;
 import com.android.settings.location.LocationSettings;
 import com.android.settings.overlay.FeatureFactory;
+import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.wifi.WifiSettings;
 
 import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.io.Writer;
+import java.util.Arrays;
+import java.util.List;
 
 public class PowerUsageDetail extends PowerUsageBase implements Button.OnClickListener {
 
@@ -355,7 +359,6 @@
         mPm = activity.getPackageManager();
         mDpm = (DevicePolicyManager) activity.getSystemService(Context.DEVICE_POLICY_SERVICE);
 
-        addPreferencesFromResource(R.xml.power_usage_details);
         mDetailsParent = (PreferenceCategory) findPreference(KEY_DETAILS_PARENT);
         mControlsParent = (PreferenceCategory) findPreference(KEY_CONTROLS_PARENT);
         mMessagesParent = (PreferenceCategory) findPreference(KEY_MESSAGES_PARENT);
@@ -385,6 +388,21 @@
     }
 
     @Override
+    protected String getLogTag() {
+        return TAG;
+    }
+
+    @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.power_usage_details;
+    }
+
+    @Override
+    protected List<PreferenceController> getPreferenceControllers(Context context) {
+        return null;
+    }
+
+    @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);
         if (mHighPower != null) {
@@ -810,4 +828,19 @@
             }
         }
     }
+
+    public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+            new BaseSearchIndexProvider() {
+                @Override
+                public List<SearchIndexableResource> getXmlResourcesToIndex(
+                        Context context, boolean enabled) {
+                    if (!FeatureFactory.getFactory(context).getDashboardFeatureProvider(context)
+                            .isEnabled()) {
+                        return null;
+                    }
+                    final SearchIndexableResource sir = new SearchIndexableResource(context);
+                    sir.xmlResId = R.xml.power_usage_details;
+                    return Arrays.asList(sir);
+                }
+            };
 }
diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
index c4b97d4..a989ee6 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
@@ -26,6 +26,7 @@
 import android.os.Message;
 import android.os.Process;
 import android.os.UserHandle;
+import android.provider.SearchIndexableResource;
 import android.support.annotation.VisibleForTesting;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceGroup;
@@ -36,6 +37,7 @@
 import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
+
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.internal.os.BatterySipper;
 import com.android.internal.os.BatterySipper.DrainType;
@@ -44,11 +46,16 @@
 import com.android.settings.Settings.HighPowerApplicationsActivity;
 import com.android.settings.SettingsActivity;
 import com.android.settings.applications.ManageApplications;
+import com.android.settings.core.PreferenceController;
 import com.android.settings.dashboard.SummaryLoader;
+import com.android.settings.display.AutoBrightnessPreferenceController;
+import com.android.settings.display.TimeoutPreferenceController;
 import com.android.settings.overlay.FeatureFactory;
+import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settingslib.BatteryInfo;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
@@ -89,7 +96,6 @@
         super.onCreate(icicle);
         setAnimationAllowed(true);
 
-        addPreferencesFromResource(R.xml.power_usage_summary);
         mHistPref = (BatteryHistoryPreference) findPreference(KEY_BATTERY_HISTORY);
         mAppListGroup = (PreferenceGroup) findPreference(KEY_APP_LIST);
     }
@@ -133,6 +139,25 @@
     }
 
     @Override
+    protected String getLogTag() {
+        return TAG;
+    }
+
+    @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.power_usage_summary;
+    }
+
+    @Override
+    protected List<PreferenceController> getPreferenceControllers(Context context) {
+        final List<PreferenceController> controllers = new ArrayList<>();
+        controllers.add(new AutoBrightnessPreferenceController(context));
+        controllers.add(new TimeoutPreferenceController(context));
+        controllers.add(new BatterySaverController(context, getLifecycle()));
+        return controllers;
+    }
+
+    @Override
     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
         if (DEBUG) {
             menu.add(Menu.NONE, MENU_STATS_TYPE, Menu.NONE, R.string.menu_stats_total)
@@ -209,6 +234,7 @@
      * We want to coalesce some UIDs. For example, dex2oat runs under a shared gid that
      * exists for all users of the same app. We detect this case and merge the power use
      * for dex2oat to the device OWNER's use of the app.
+     *
      * @return A sorted list of apps using power.
      */
     private static List<BatterySipper> getCoalescedUsageList(final List<BatterySipper> sippers) {
@@ -314,24 +340,33 @@
             final List<BatterySipper> usageList = getCoalescedUsageList(
                     USE_FAKE_DATA ? getFakeStats() : mStatsHelper.getUsageList());
 
+            final double screenPowerMah = removeScreenBatterySipper(usageList);
+
             final int dischargeAmount = USE_FAKE_DATA ? 5000
                     : stats != null ? stats.getDischargeAmount(mStatsType) : 0;
             final int numSippers = usageList.size();
             for (int i = 0; i < numSippers; i++) {
                 final BatterySipper sipper = usageList.get(i);
-                if ((sipper.totalPowerMah * SECONDS_IN_HOUR) < MIN_POWER_THRESHOLD_MILLI_AMP) {
+                if (shouldHideSipper(sipper)) {
                     continue;
                 }
-                double totalPower = USE_FAKE_DATA ? 4000 : mStatsHelper.getTotalPower();
+
+                // Deduct the screen power from total power, used to calculate percentOfTotal
+                double totalPower = USE_FAKE_DATA ?
+                        4000 : mStatsHelper.getTotalPower() - screenPowerMah;
+
+                // With deduction in totalPower, percentOfTotal is higher because it adds the part
+                // used in screen
                 final double percentOfTotal =
                         ((sipper.totalPowerMah / totalPower) * dischargeAmount);
+
                 if (((int) (percentOfTotal + .5)) < 1) {
                     continue;
                 }
                 if (sipper.drainType == BatterySipper.DrainType.OVERCOUNTED) {
                     // Don't show over-counted unless it is at least 2/3 the size of
                     // the largest real entry, and its percent of total is more significant
-                    if (sipper.totalPowerMah < ((mStatsHelper.getMaxRealPower()*2)/3)) {
+                    if (sipper.totalPowerMah < ((mStatsHelper.getMaxRealPower() * 2) / 3)) {
                         continue;
                     }
                     if (percentOfTotal < 10) {
@@ -344,7 +379,7 @@
                 if (sipper.drainType == BatterySipper.DrainType.UNACCOUNTED) {
                     // Don't show over-counted unless it is at least 1/2 the size of
                     // the largest real entry, and its percent of total is more significant
-                    if (sipper.totalPowerMah < (mStatsHelper.getMaxRealPower()/2)) {
+                    if (sipper.totalPowerMah < (mStatsHelper.getMaxRealPower() / 2)) {
                         continue;
                     }
                     if (percentOfTotal < 5) {
@@ -375,8 +410,9 @@
                 pref.setTitle(entry.getLabel());
                 pref.setOrder(i + 1);
                 pref.setPercent(percentOfMax, percentOfTotal);
-                if ((sipper.drainType != DrainType.APP || sipper.uidObj.getUid() == 0)
-                         && sipper.drainType != DrainType.USER) {
+                if ((sipper.drainType != DrainType.APP
+                        || sipper.uidObj.getUid() == Process.ROOT_UID)
+                        && sipper.drainType != DrainType.USER) {
                     pref.setTint(colorControl);
                 }
                 addedSome = true;
@@ -396,6 +432,16 @@
     }
 
     @VisibleForTesting
+    boolean shouldHideSipper(BatterySipper sipper) {
+        final DrainType drainType = sipper.drainType;
+        final int uid = sipper.getUid();
+
+        return drainType == DrainType.IDLE || drainType == DrainType.CELL
+                || uid == Process.ROOT_UID || uid == Process.SYSTEM_UID
+                || (sipper.totalPowerMah * SECONDS_IN_HOUR) < MIN_POWER_THRESHOLD_MILLI_AMP;
+    }
+
+    @VisibleForTesting
     String extractKeyFromSipper(BatterySipper sipper) {
         if (sipper.uidObj != null) {
             return Integer.toString(sipper.getUid());
@@ -409,6 +455,19 @@
         }
     }
 
+    @VisibleForTesting
+    double removeScreenBatterySipper(List<BatterySipper> sippers) {
+        for (int i = 0, size = sippers.size(); i < size; i++) {
+            final BatterySipper sipper = sippers.get(i);
+            if (sipper.drainType == DrainType.SCREEN) {
+                sippers.remove(i);
+                return sipper.totalPowerMah;
+            }
+        }
+
+        return 0;
+    }
+
     private static List<BatterySipper> getFakeStats() {
         ArrayList<BatterySipper> stats = new ArrayList<>();
         float use = 5;
@@ -498,11 +557,26 @@
         }
     }
 
+    public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+            new BaseSearchIndexProvider() {
+                @Override
+                public List<SearchIndexableResource> getXmlResourcesToIndex(
+                        Context context, boolean enabled) {
+                    if (!FeatureFactory.getFactory(context).getDashboardFeatureProvider(context)
+                            .isEnabled()) {
+                        return null;
+                    }
+                    final SearchIndexableResource sir = new SearchIndexableResource(context);
+                    sir.xmlResId = R.xml.power_usage_summary;
+                    return Arrays.asList(sir);
+                }
+            };
+
     public static final SummaryLoader.SummaryProviderFactory SUMMARY_PROVIDER_FACTORY
             = new SummaryLoader.SummaryProviderFactory() {
         @Override
         public SummaryLoader.SummaryProvider createSummaryProvider(Activity activity,
-                                                                   SummaryLoader summaryLoader) {
+                SummaryLoader summaryLoader) {
             return new SummaryProvider(activity, summaryLoader);
         }
     };
diff --git a/src/com/android/settings/gestures/DoubleTapPowerSettings.java b/src/com/android/settings/gestures/DoubleTapPowerSettings.java
index c31e999..9251f0b 100644
--- a/src/com/android/settings/gestures/DoubleTapPowerSettings.java
+++ b/src/com/android/settings/gestures/DoubleTapPowerSettings.java
@@ -40,11 +40,6 @@
     }
 
     @Override
-    protected String getCategoryKey() {
-        return null;
-    }
-
-    @Override
     protected String getLogTag() {
         return TAG;
     }
diff --git a/src/com/android/settings/gestures/DoubleTapScreenSettings.java b/src/com/android/settings/gestures/DoubleTapScreenSettings.java
index d203fbc..f374f9e 100644
--- a/src/com/android/settings/gestures/DoubleTapScreenSettings.java
+++ b/src/com/android/settings/gestures/DoubleTapScreenSettings.java
@@ -42,11 +42,6 @@
     }
 
     @Override
-    protected String getCategoryKey() {
-        return null;
-    }
-
-    @Override
     protected String getLogTag() {
         return TAG;
     }
diff --git a/src/com/android/settings/gestures/DoubleTwistGestureSettings.java b/src/com/android/settings/gestures/DoubleTwistGestureSettings.java
index 1303ca1..5f5b873 100644
--- a/src/com/android/settings/gestures/DoubleTwistGestureSettings.java
+++ b/src/com/android/settings/gestures/DoubleTwistGestureSettings.java
@@ -40,11 +40,6 @@
     }
 
     @Override
-    protected String getCategoryKey() {
-        return null;
-    }
-
-    @Override
     protected String getLogTag() {
         return TAG;
     }
diff --git a/src/com/android/settings/gestures/GestureSettings.java b/src/com/android/settings/gestures/GestureSettings.java
index 9b71b96..db6925e 100644
--- a/src/com/android/settings/gestures/GestureSettings.java
+++ b/src/com/android/settings/gestures/GestureSettings.java
@@ -122,11 +122,6 @@
     }
 
     @Override
-    protected String getCategoryKey() {
-        return null;
-    }
-
-    @Override
     protected String getLogTag() {
         return TAG;
     }
@@ -170,7 +165,7 @@
 
                     List<PreferenceController> preferenceControllers =
                             getPreferenceControllers(context);
-                    for(PreferenceController controller : preferenceControllers) {
+                    for (PreferenceController controller : preferenceControllers) {
                         controller.updateNonIndexableKeys(result);
                     }
                     return result;
diff --git a/src/com/android/settings/gestures/PickupGestureSettings.java b/src/com/android/settings/gestures/PickupGestureSettings.java
index 8c0f74c..08e61fa 100644
--- a/src/com/android/settings/gestures/PickupGestureSettings.java
+++ b/src/com/android/settings/gestures/PickupGestureSettings.java
@@ -42,11 +42,6 @@
     }
 
     @Override
-    protected String getCategoryKey() {
-        return null;
-    }
-
-    @Override
     protected String getLogTag() {
         return TAG;
     }
diff --git a/src/com/android/settings/gestures/SwipeToNotificationSettings.java b/src/com/android/settings/gestures/SwipeToNotificationSettings.java
index fba074e..155412c 100644
--- a/src/com/android/settings/gestures/SwipeToNotificationSettings.java
+++ b/src/com/android/settings/gestures/SwipeToNotificationSettings.java
@@ -40,11 +40,6 @@
     }
 
     @Override
-    protected String getCategoryKey() {
-        return null;
-    }
-
-    @Override
     protected String getLogTag() {
         return TAG;
     }
diff --git a/src/com/android/settings/inputmethod/InputAndGestureSettings.java b/src/com/android/settings/inputmethod/InputAndGestureSettings.java
index 43d8b230b..5b2c51a 100644
--- a/src/com/android/settings/inputmethod/InputAndGestureSettings.java
+++ b/src/com/android/settings/inputmethod/InputAndGestureSettings.java
@@ -18,6 +18,7 @@
 
 import android.content.Context;
 import android.os.UserHandle;
+import android.provider.SearchIndexableResource;
 import android.support.annotation.VisibleForTesting;
 
 import com.android.internal.hardware.AmbientDisplayConfiguration;
@@ -31,9 +32,11 @@
 import com.android.settings.gestures.DoubleTwistPreferenceController;
 import com.android.settings.gestures.PickupGesturePreferenceController;
 import com.android.settings.gestures.SwipeToNotificationPreferenceController;
-import com.android.settingslib.drawer.CategoryKey;
+import com.android.settings.overlay.FeatureFactory;
+import com.android.settings.search.BaseSearchIndexProvider;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 public class InputAndGestureSettings extends DashboardFragment {
@@ -48,11 +51,6 @@
     }
 
     @Override
-    protected String getCategoryKey() {
-        return CategoryKey.CATEGORY_SYSTEM_INPUT;
-    }
-
-    @Override
     protected String getLogTag() {
         return TAG;
     }
@@ -90,4 +88,19 @@
     void setAmbientDisplayConfig(AmbientDisplayConfiguration ambientConfig) {
         mAmbientDisplayConfig = ambientConfig;
     }
+
+    public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+            new BaseSearchIndexProvider() {
+                @Override
+                public List<SearchIndexableResource> getXmlResourcesToIndex(
+                        Context context, boolean enabled) {
+                    if (!FeatureFactory.getFactory(context).getDashboardFeatureProvider(context)
+                            .isEnabled()) {
+                        return null;
+                    }
+                    final SearchIndexableResource sir = new SearchIndexableResource(context);
+                    sir.xmlResId = R.xml.input_and_gesture;
+                    return Arrays.asList(sir);
+                }
+            };
 }
diff --git a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
index 587d039..121af98 100644
--- a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
+++ b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
@@ -38,7 +38,6 @@
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.search.Indexable;
 import com.android.settings.search.SearchIndexableRaw;
-import com.android.settingslib.drawer.CategoryKey;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -61,11 +60,6 @@
     }
 
     @Override
-    protected String getCategoryKey() {
-        return CategoryKey.CATEGORY_SYSTEM_LANGUAGE;
-    }
-
-    @Override
     protected String getLogTag() {
         return TAG;
     }
diff --git a/src/com/android/settings/language/LanguageAndRegionSettings.java b/src/com/android/settings/language/LanguageAndRegionSettings.java
index 7e92e05..649b2ff 100644
--- a/src/com/android/settings/language/LanguageAndRegionSettings.java
+++ b/src/com/android/settings/language/LanguageAndRegionSettings.java
@@ -24,7 +24,6 @@
 import com.android.settings.core.PreferenceController;
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.inputmethod.SpellCheckerPreferenceController;
-import com.android.settingslib.drawer.CategoryKey;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -39,11 +38,6 @@
     }
 
     @Override
-    protected String getCategoryKey() {
-        return CategoryKey.CATEGORY_SYSTEM_LANGUAGE;
-    }
-
-    @Override
     protected String getLogTag() {
         return TAG;
     }
diff --git a/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java b/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java
index 86498af..0b40bbd 100644
--- a/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java
+++ b/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java
@@ -34,6 +34,7 @@
 import com.android.internal.app.LocalePicker;
 import com.android.internal.app.LocaleStore;
 
+import com.android.settings.CreateShortcut;
 import com.android.settings.R;
 
 import java.text.NumberFormat;
@@ -299,6 +300,8 @@
 
                 LocalePicker.updateLocales(mLocalesToSetNext);
                 mLocalesSetLast = mLocalesToSetNext;
+                new CreateShortcut.ShortcutsUpdateTask(mContext).execute();
+
                 mLocalesToSetNext = null;
 
                 mNumberFormatter = NumberFormat.getNumberInstance(Locale.getDefault());
diff --git a/src/com/android/settings/location/AppLocationPermissionPreferenceController.java b/src/com/android/settings/location/AppLocationPermissionPreferenceController.java
new file mode 100644
index 0000000..d91b47b
--- /dev/null
+++ b/src/com/android/settings/location/AppLocationPermissionPreferenceController.java
@@ -0,0 +1,39 @@
+package com.android.settings.location;
+
+import android.content.Context;
+import android.content.Intent;
+import android.provider.Settings;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+
+import com.android.settings.core.PreferenceController;
+
+public class AppLocationPermissionPreferenceController extends PreferenceController {
+
+    private static final String KEY_APP_LEVEL_PERMISSIONS = "app_level_permissions";
+    private Preference mPreference;
+
+    public AppLocationPermissionPreferenceController(Context context) {
+        super(context);
+    }
+
+    @Override
+    public void displayPreference(PreferenceScreen screen) {
+        super.displayPreference(screen);
+        if (isAvailable()) {
+            mPreference = screen.findPreference(KEY_APP_LEVEL_PERMISSIONS);
+        }
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return KEY_APP_LEVEL_PERMISSIONS;
+    }
+
+    @Override
+    public boolean isAvailable() {
+        return Settings.Global.getInt(mContext.getContentResolver(),
+                android.provider.Settings.Global.LOCATION_SETTINGS_LINK_TO_PERMISSIONS_ENABLED, 1)
+                == 1;
+    }
+}
diff --git a/src/com/android/settings/location/LocationSettings.java b/src/com/android/settings/location/LocationSettings.java
index 03aa155..d6ff4dc 100644
--- a/src/com/android/settings/location/LocationSettings.java
+++ b/src/com/android/settings/location/LocationSettings.java
@@ -18,6 +18,7 @@
 
 import android.app.Activity;
 import android.app.admin.DevicePolicyManager;
+import android.content.ActivityNotFoundException;
 import android.content.BroadcastReceiver;
 import android.content.ComponentName;
 import android.content.Context;
@@ -95,11 +96,14 @@
     private static final String KEY_LOCATION_MODE = "location_mode";
     /** Key for preference category "Recent location requests" */
     private static final String KEY_RECENT_LOCATION_REQUESTS = "recent_location_requests";
+    /** Key for preference "App-level permissions" */
+    private static final String KEY_APP_LEVEL_PERMISSIONS = "app_level_permissions";
     /** Key for preference category "Location services" */
     private static final String KEY_LOCATION_SERVICES = "location_services";
 
     private static final int MENU_SCANNING = Menu.FIRST;
 
+    private static final String KEY_LOCATION_PERMISSION = "android.permission-group.LOCATION";
     private SwitchBar mSwitchBar;
     private Switch mSwitch;
     private boolean mValidListener = false;
@@ -201,10 +205,21 @@
                     }
                 });
 
-        mCategoryRecentLocationRequests =
-                (PreferenceCategory) root.findPreference(KEY_RECENT_LOCATION_REQUESTS);
         RecentLocationApps recentApps = new RecentLocationApps(activity);
         List<RecentLocationApps.Request> recentLocationRequests = recentApps.getAppList();
+
+        final AppLocationPermissionPreferenceController preferenceController =
+                new AppLocationPermissionPreferenceController(activity);
+        preferenceController.displayPreference(root);
+        if (preferenceController.isAvailable()) {
+            Preference preferenceAppLevelPermissions =
+                    root.findPreference(KEY_APP_LEVEL_PERMISSIONS);
+            setupAppLevelPermissionsPreference(preferenceAppLevelPermissions);
+        }
+
+        mCategoryRecentLocationRequests =
+                (PreferenceCategory) root.findPreference(KEY_RECENT_LOCATION_REQUESTS);
+
         List<Preference> recentLocationPrefs = new ArrayList<>(recentLocationRequests.size());
         for (final RecentLocationApps.Request request : recentLocationRequests) {
             DimmableIconPreference pref = new DimmableIconPreference(getPrefContext(),
@@ -261,6 +276,23 @@
         }
     }
 
+    private void setupAppLevelPermissionsPreference(Preference preference) {
+        preference.setOnPreferenceClickListener(
+                new Preference.OnPreferenceClickListener() {
+                    @Override
+                    public boolean onPreferenceClick(Preference preference) {
+                        Intent intent = new Intent(Intent.ACTION_MANAGE_PERMISSION_APPS)
+                                .putExtra(Intent.EXTRA_PERMISSION_NAME, KEY_LOCATION_PERMISSION);
+                        try {
+                            getActivity().startActivity(intent);
+                        } catch (ActivityNotFoundException e) {
+                            Log.w("Permission", "No app to handle " + intent);
+                        }
+                        return true;
+                    }
+                });
+    }
+
     private void changeManagedProfileLocationAccessStatus(boolean mainSwitchOn) {
         if (mManagedProfileSwitch == null) {
             return;
diff --git a/src/com/android/settings/network/NetworkDashboardFragment.java b/src/com/android/settings/network/NetworkDashboardFragment.java
index 89dfa02..2d91414 100644
--- a/src/com/android/settings/network/NetworkDashboardFragment.java
+++ b/src/com/android/settings/network/NetworkDashboardFragment.java
@@ -24,10 +24,11 @@
 import com.android.internal.logging.nano.MetricsProto;
 import com.android.settings.R;
 import com.android.settings.core.PreferenceController;
+import com.android.settings.core.lifecycle.Lifecycle;
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.search.BaseSearchIndexProvider;
-import com.android.settingslib.drawer.CategoryKey;
+import com.android.settings.wifi.WifiMasterSwitchPreferenceController;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -47,11 +48,6 @@
     }
 
     @Override
-    protected String getCategoryKey() {
-        return CategoryKey.CATEGORY_NETWORK;
-    }
-
-    @Override
     protected String getLogTag() {
         return TAG;
     }
@@ -67,8 +63,12 @@
                 new AirplaneModePreferenceController(context, this /* fragment */);
         final MobilePlanPreferenceController mobilePlanPreferenceController =
                 new MobilePlanPreferenceController(context, this);
-        getLifecycle().addObserver(airplaneModePreferenceController);
-        getLifecycle().addObserver(mobilePlanPreferenceController);
+        final WifiMasterSwitchPreferenceController wifiPreferenceController =
+            new WifiMasterSwitchPreferenceController(context, mMetricsFeatureProvider);
+        final Lifecycle lifecycle = getLifecycle();
+        lifecycle.addObserver(airplaneModePreferenceController);
+        lifecycle.addObserver(mobilePlanPreferenceController);
+        lifecycle.addObserver(wifiPreferenceController);
 
         final List<PreferenceController> controllers = new ArrayList<>();
         controllers.add(airplaneModePreferenceController);
@@ -79,6 +79,7 @@
         controllers.add(new NetworkResetPreferenceController(context));
         controllers.add(new ProxyPreferenceController(context));
         controllers.add(mobilePlanPreferenceController);
+        controllers.add(wifiPreferenceController);
         return controllers;
     }
 
diff --git a/src/com/android/settings/nfc/NfcPreferenceController.java b/src/com/android/settings/nfc/NfcPreferenceController.java
index 65c2d4c..a5e5c3e 100644
--- a/src/com/android/settings/nfc/NfcPreferenceController.java
+++ b/src/com/android/settings/nfc/NfcPreferenceController.java
@@ -44,7 +44,6 @@
 
     private NfcEnabler mNfcEnabler;
     private NfcAdapter mNfcAdapter;
-    private final Handler mHandler = new Handler();
     private int mAirplaneMode;
     private AirplaneModeObserver mAirplaneModeObserver;
     private SwitchPreference mNfcPreference;
@@ -146,7 +145,7 @@
                 Settings.Global.getUriFor(Settings.Global.AIRPLANE_MODE_ON);
 
         private AirplaneModeObserver() {
-            super(mHandler);
+            super(new Handler());
         }
 
         public void register() {
diff --git a/src/com/android/settings/notification/AppNotificationSettings.java b/src/com/android/settings/notification/AppNotificationSettings.java
index c720bb5..45762c7 100644
--- a/src/com/android/settings/notification/AppNotificationSettings.java
+++ b/src/com/android/settings/notification/AppNotificationSettings.java
@@ -19,14 +19,16 @@
 import android.app.Activity;
 import android.app.Notification;
 import android.app.NotificationChannel;
-import android.app.NotificationManager;
+import android.content.Context;
 import android.content.Intent;
 import android.content.pm.ActivityInfo;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.ResolveInfo;
 import android.os.Bundle;
+import android.provider.Settings;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceCategory;
+import android.text.TextUtils;
 import android.util.ArrayMap;
 import android.util.Log;
 
@@ -36,13 +38,19 @@
 import com.android.settings.Utils;
 import com.android.settings.applications.AppHeaderController;
 import com.android.settings.applications.AppInfoBase;
+import com.android.settings.core.PreferenceController;
 import com.android.settings.dashboard.DashboardFeatureProvider;
 import com.android.settings.notification.NotificationBackend.AppRow;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.RestrictedPreference;
 import com.android.settingslib.RestrictedSwitchPreference;
+import com.android.settingslib.drawer.CategoryKey;
 
+import java.text.Collator;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.List;
+import java.util.Objects;
 
 /** These settings are per app, so should not be returned in global search results. */
 public class AppNotificationSettings extends NotificationSettingsBase {
@@ -78,6 +86,11 @@
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        if (mUid < 0 || TextUtils.isEmpty(mPkg) || mPkgInfo == null) {
+            Log.w(TAG, "Missing package or uid or packageinfo");
+            toastAndFinish();
+            return;
+        }
         final Activity activity = getActivity();
         mDashboardFeatureProvider =
                 FeatureFactory.getFactory(activity).getDashboardFeatureProvider(activity);
@@ -85,15 +98,18 @@
         addPreferencesFromResource(R.xml.app_notification_settings);
 
         mBlock = (RestrictedSwitchPreference) getPreferenceScreen().findPreference(KEY_BLOCK);
+        mBadge = (RestrictedSwitchPreference) getPreferenceScreen().findPreference(KEY_BADGE);
         mChannels = (PreferenceCategory) findPreference(KEY_CHANNELS);
 
         if (mPkgInfo != null) {
-            setupBlock(mAppRow.systemApp, mAppRow.banned);
+            setupBlock();
+            setupBadge();
             // load settings intent
             ArrayMap<String, AppRow> rows = new ArrayMap<String, AppRow>();
             rows.put(mAppRow.pkg, mAppRow);
             collectConfigActivities(rows);
             mChannelList = mBackend.getChannels(mPkg, mUid).getList();
+            Collections.sort(mChannelList, mChannelComparator);
 
             if (mChannelList.isEmpty()) {
                 setVisible(mChannels, false);
@@ -105,16 +121,22 @@
                     channelPref.setDisabledByAdmin(mSuspendedAppsAdmin);
                     channelPref.setKey(channel.getId());
                     channelPref.setTitle(channel.getName());
-                    Bundle channelArgs = new Bundle();
-                    channelArgs.putInt(AppInfoBase.ARG_PACKAGE_UID, mUid);
-                    channelArgs.putBoolean(AppHeader.EXTRA_HIDE_INFO_BUTTON, true);
-                    channelArgs.putString(AppInfoBase.ARG_PACKAGE_NAME, mPkg);
-                    channelArgs.putString(ARG_CHANNEL, channel.getId());
 
-                    Intent topicIntent = Utils.onBuildStartFragmentIntent(getActivity(),
-                            ChannelNotificationSettings.class.getName(),
-                            channelArgs, null, 0, null, false);
-                    channelPref.setIntent(topicIntent);
+                    if (channel.isDeleted()) {
+                        channelPref.setTitle(
+                                getString(R.string.deleted_channel_name, channel.getName()));
+                        channelPref.setEnabled(false);
+                    } else {
+                        Bundle channelArgs = new Bundle();
+                        channelArgs.putInt(AppInfoBase.ARG_PACKAGE_UID, mUid);
+                        channelArgs.putBoolean(AppHeader.EXTRA_HIDE_INFO_BUTTON, true);
+                        channelArgs.putString(AppInfoBase.ARG_PACKAGE_NAME, mPkg);
+                        channelArgs.putString(Settings.EXTRA_CHANNEL_ID, channel.getId());
+                        Intent channelIntent = Utils.onBuildStartFragmentIntent(getActivity(),
+                                ChannelNotificationSettings.class.getName(),
+                                channelArgs, null, 0, null, false);
+                        channelPref.setIntent(channelIntent);
+                    }
                     mChannels.addPreference(channelPref);
                 }
             }
@@ -139,21 +161,32 @@
     @Override
     public void onResume() {
         super.onResume();
-        if ((mUid != -1 && getPackageManager().getPackagesForUid(mUid) == null)) {
-            // App isn't around anymore, must have been removed.
+        if (mUid < 0 || TextUtils.isEmpty(mPkg) || mPkgInfo == null) {
+            Log.w(TAG, "Missing package or uid or packageinfo");
             finish();
             return;
         }
-        if (mBlock != null) {
-            mBlock.setDisabledByAdmin(mSuspendedAppsAdmin);
-        }
     }
 
-    private void setupBlock(boolean notBlockable, boolean banned) {
-        if (notBlockable) {
+    private void setupBadge() {
+        mBadge.setDisabledByAdmin(mSuspendedAppsAdmin);
+        mBadge.setChecked(mAppRow.showBadge);
+        mBadge.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
+            @Override
+            public boolean onPreferenceChange(Preference preference, Object newValue) {
+                final boolean value = (Boolean) newValue;
+                mBackend.setShowBadge(mPkg, mUid, value);
+                return true;
+            }
+        });
+    }
+
+    private void setupBlock() {
+        if (mAppRow.systemApp) {
             setVisible(mBlock, false);
         } else {
-            mBlock.setChecked(banned);
+            mBlock.setDisabledByAdmin(mSuspendedAppsAdmin);
+            mBlock.setChecked(mAppRow.banned);
             mBlock.setOnPreferenceChangeListener(
                     new Preference.OnPreferenceChangeListener() {
                         @Override
@@ -171,6 +204,7 @@
 
     private void updateDependents(boolean banned) {
         setVisible(mChannels, !(mChannelList.isEmpty() || banned));
+        setVisible(mBadge, !banned);
     }
 
     private List<ResolveInfo> queryNotificationConfigActivities() {
@@ -212,4 +246,20 @@
                     .setClassName(activityInfo.packageName, activityInfo.name);
         }
     }
+
+    private Comparator<NotificationChannel> mChannelComparator =
+            new Comparator<NotificationChannel>() {
+        private final Collator sCollator = Collator.getInstance();
+
+        @Override
+        public int compare(NotificationChannel left, NotificationChannel right) {
+            if (left.isDeleted() != right.isDeleted()) {
+                return Boolean.compare(left.isDeleted(), right.isDeleted());
+            }
+            if (!Objects.equals(left.getName(), right.getName())) {
+                return sCollator.compare(left.getName().toString(), right.getName().toString());
+            }
+            return left.getId().compareTo(right.getId());
+        }
+    };
 }
diff --git a/src/com/android/settings/notification/BootSoundPreferenceController.java b/src/com/android/settings/notification/BootSoundPreferenceController.java
new file mode 100644
index 0000000..b644ee9
--- /dev/null
+++ b/src/com/android/settings/notification/BootSoundPreferenceController.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.notification;
+
+import android.content.Context;
+import android.os.SystemProperties;
+import android.support.annotation.VisibleForTesting;
+import android.support.v14.preference.SwitchPreference;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+import com.android.settings.core.PreferenceController;
+
+public class BootSoundPreferenceController extends PreferenceController {
+
+    // Boot Sounds needs to be a system property so it can be accessed during boot.
+    private static final String KEY_BOOT_SOUNDS = "boot_sounds";
+    @VisibleForTesting
+    static final String PROPERTY_BOOT_SOUNDS = "persist.sys.bootanim.play_sound";
+
+    public BootSoundPreferenceController(Context context) {
+        super(context);
+    }
+
+    @Override
+    public void displayPreference(PreferenceScreen screen) {
+        super.displayPreference(screen);
+        if (isAvailable()) {
+            SwitchPreference preference = (SwitchPreference) screen.findPreference(KEY_BOOT_SOUNDS);
+            preference.setChecked(SystemProperties.getBoolean(PROPERTY_BOOT_SOUNDS, true));
+        }
+    }
+
+    @Override
+    public boolean handlePreferenceTreeClick(Preference preference) {
+        if (KEY_BOOT_SOUNDS.equals(preference.getKey())) {
+            SwitchPreference switchPreference = (SwitchPreference) preference;
+            SystemProperties.set(PROPERTY_BOOT_SOUNDS, switchPreference.isChecked() ? "1" : "0");
+        }
+        return false;
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return KEY_BOOT_SOUNDS;
+    }
+
+    @Override
+    public boolean isAvailable() {
+        return mContext.getResources().getBoolean(com.android.settings.R.bool.has_boot_sounds);
+    }
+
+}
\ No newline at end of file
diff --git a/src/com/android/settings/notification/ChannelNotificationSettings.java b/src/com/android/settings/notification/ChannelNotificationSettings.java
index e73feb5..ecce79e 100644
--- a/src/com/android/settings/notification/ChannelNotificationSettings.java
+++ b/src/com/android/settings/notification/ChannelNotificationSettings.java
@@ -34,6 +34,8 @@
 import android.provider.Settings;
 import android.service.notification.NotificationListenerService.Ranking;
 import android.support.v7.preference.Preference;
+import android.text.TextUtils;
+import android.util.Log;
 
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.internal.widget.LockPatternUtils;
@@ -47,15 +49,17 @@
 import com.android.settingslib.RestrictedSwitchPreference;
 
 import java.util.ArrayList;
+import java.util.List;
 
 public class ChannelNotificationSettings extends NotificationSettingsBase {
+    private static final String TAG = "ChannelSettings";
+
     protected static final String KEY_BYPASS_DND = "bypass_dnd";
     protected static final String KEY_VISIBILITY_OVERRIDE = "visibility_override";
     protected static final String KEY_IMPORTANCE = "importance";
     protected static final String KEY_LIGHTS = "lights";
     protected static final String KEY_VIBRATE = "vibrate";
     protected static final String KEY_RINGTONE = "ringtone";
-    protected static final String KEY_BADGE = "badge";
 
     protected RestrictedSwitchPreference mLights;
     protected RestrictedSwitchPreference mVibrate;
@@ -84,6 +88,11 @@
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        if (mUid < 0 || TextUtils.isEmpty(mPkg) || mPkgInfo == null || mChannel == null) {
+            Log.w(TAG, "Missing package or uid or packageinfo or channel");
+            toastAndFinish();
+            return;
+        }
         final Activity activity = getActivity();
         mDashboardFeatureProvider =
                 FeatureFactory.getFactory(activity).getDashboardFeatureProvider(activity);
@@ -100,7 +109,7 @@
         mVibrate = (RestrictedSwitchPreference) findPreference(KEY_VIBRATE);
         mRingtone = (DefaultNotificationTonePreference) findPreference(KEY_RINGTONE);
 
-        if (mPkgInfo != null) {
+        if (mPkgInfo != null && mChannel != null) {
             setupPriorityPref(mChannel.canBypassDnd());
             setupVisOverridePref(mChannel.getLockscreenVisibility());
             setupLights();
@@ -114,8 +123,8 @@
                     .getApplicationFeatureProvider(activity)
                     .newAppHeaderController(this /* fragment */, null /* appHeader */)
                     .setIcon(mAppRow.icon)
-                    .setLabel(mAppRow.label)
-                    .setSummary(mChannel.getName())
+                    .setLabel(mChannel.getName())
+                    .setSummary(mAppRow.label)
                     .setPackageName(mAppRow.pkg)
                     .setUid(mAppRow.uid)
                     .setButtonActions(AppHeaderController.ActionType.ACTION_APP_INFO,
@@ -128,8 +137,8 @@
     @Override
     public void onResume() {
         super.onResume();
-        if ((mUid != -1 && getPackageManager().getPackagesForUid(mUid) == null)) {
-            // App isn't around anymore, must have been removed.
+        if (mUid < 0 || TextUtils.isEmpty(mPkg) || mPkgInfo == null || mChannel == null) {
+            Log.w(TAG, "Missing package or uid or packageinfo or channel");
             finish();
             return;
         }
@@ -138,8 +147,6 @@
         mImportance.setDisabledByAdmin(mSuspendedAppsAdmin);
         mPriority.setDisabledByAdmin(mSuspendedAppsAdmin);
         mVisibilityOverride.setDisabledByAdmin(mSuspendedAppsAdmin);
-        mBlock.setDisabledByAdmin(mSuspendedAppsAdmin);
-        mBadge.setDisabledByAdmin(mSuspendedAppsAdmin);
     }
 
     private void setupLights() {
@@ -204,6 +211,7 @@
             }
         });
         mBadge.setDisabledByAdmin(mSuspendedAppsAdmin);
+        mBadge.setEnabled(mAppRow.showBadge);
         mBadge.setChecked(mChannel.canShowBadge());
         mBadge.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
             @Override
@@ -218,15 +226,20 @@
 
         mImportance.setDisabledByAdmin(mSuspendedAppsAdmin);
         final int numImportances = IMPORTANCE_HIGH - IMPORTANCE_MIN + 1;
-        String[] summaries = new String[numImportances];
-        String[] values = new String[numImportances];
+        List<String> summaries = new ArrayList<>();
+        List<String> values = new ArrayList<>();;
         for (int i = 0; i < numImportances; i++) {
             int importance = i + 1;
-            summaries[i] = getSummary(importance);
-            values[i] = String.valueOf(importance);
+            summaries.add(getSummary(importance));
+            values.add(String.valueOf(importance));
         }
-        mImportance.setEntryValues(values);
-        mImportance.setEntries(summaries);
+        if (NotificationChannel.DEFAULT_CHANNEL_ID.equals(mChannel.getId())) {
+            // Add option to reset to letting the app decide
+            summaries.add(getSummary(NotificationManager.IMPORTANCE_UNSPECIFIED));
+            values.add(String.valueOf(NotificationManager.IMPORTANCE_UNSPECIFIED));
+        }
+        mImportance.setEntryValues(values.toArray(new String[0]));
+        mImportance.setEntries(summaries.toArray(new String[0]));
         mImportance.setValue(String.valueOf(mChannel.getImportance()));
         mImportance.setSummary("%s");
 
@@ -245,6 +258,8 @@
 
     private String getSummary(int importance) {
         switch (importance) {
+            case NotificationManager.IMPORTANCE_UNSPECIFIED:
+                return getContext().getString(R.string.notification_importance_unspecified);
             case NotificationManager.IMPORTANCE_NONE:
                 return getContext().getString(R.string.notification_importance_blocked);
             case NotificationManager.IMPORTANCE_MIN:
diff --git a/src/com/android/settings/notification/ChargingSoundPreferenceController.java b/src/com/android/settings/notification/ChargingSoundPreferenceController.java
new file mode 100644
index 0000000..1114b4a
--- /dev/null
+++ b/src/com/android/settings/notification/ChargingSoundPreferenceController.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.notification;
+
+import static com.android.settings.notification.SettingPref.TYPE_GLOBAL;
+
+import android.content.Context;
+
+import android.provider.Settings.Global;
+import com.android.settings.SettingsPreferenceFragment;
+import com.android.settings.core.lifecycle.Lifecycle;
+
+public class ChargingSoundPreferenceController extends SettingPrefController {
+
+    private static final String KEY_CHARGING_SOUNDS = "charging_sounds";
+
+    public ChargingSoundPreferenceController(Context context, SettingsPreferenceFragment parent,
+            Lifecycle lifecycle) {
+        super(context, parent, lifecycle);
+        mPreference = new SettingPref(
+            TYPE_GLOBAL, KEY_CHARGING_SOUNDS, Global.CHARGING_SOUNDS_ENABLED, DEFAULT_ON);
+
+    }
+
+}
diff --git a/src/com/android/settings/notification/ConfigureNotificationSettings.java b/src/com/android/settings/notification/ConfigureNotificationSettings.java
index fd59c97..2a737d4 100644
--- a/src/com/android/settings/notification/ConfigureNotificationSettings.java
+++ b/src/com/android/settings/notification/ConfigureNotificationSettings.java
@@ -40,11 +40,6 @@
     }
 
     @Override
-    protected String getCategoryKey() {
-        return "";
-    }
-
-    @Override
     protected String getLogTag() {
         return TAG;
     }
diff --git a/src/com/android/settings/notification/DialPadTonePreferenceController.java b/src/com/android/settings/notification/DialPadTonePreferenceController.java
new file mode 100644
index 0000000..08e1a7d
--- /dev/null
+++ b/src/com/android/settings/notification/DialPadTonePreferenceController.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.notification;
+
+import static com.android.settings.notification.SettingPref.TYPE_SYSTEM;
+
+import android.content.Context;
+
+import android.provider.Settings.System;
+import com.android.settings.SettingsPreferenceFragment;
+import com.android.settings.Utils;
+import com.android.settings.core.lifecycle.Lifecycle;
+
+public class DialPadTonePreferenceController extends SettingPrefController {
+
+    private static final String KEY_DIAL_PAD_TONES = "dial_pad_tones";
+
+    public DialPadTonePreferenceController(Context context, SettingsPreferenceFragment parent,
+            Lifecycle lifecycle) {
+        super(context, parent, lifecycle);
+        mPreference = new SettingPref(
+            TYPE_SYSTEM, KEY_DIAL_PAD_TONES, System.DTMF_TONE_WHEN_DIALING, DEFAULT_ON) {
+            @Override
+            public boolean isApplicable(Context context) {
+                return Utils.isVoiceCapable(context);
+            }
+        };
+    }
+
+}
diff --git a/src/com/android/settings/notification/DockAudioMediaPreferenceController.java b/src/com/android/settings/notification/DockAudioMediaPreferenceController.java
new file mode 100644
index 0000000..20c20b4
--- /dev/null
+++ b/src/com/android/settings/notification/DockAudioMediaPreferenceController.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.notification;
+
+import static com.android.settings.notification.SettingPref.TYPE_GLOBAL;
+
+import android.content.Context;
+
+import android.content.res.Resources;
+import android.provider.Settings.Global;
+import android.telephony.TelephonyManager;
+import com.android.settings.SettingsPreferenceFragment;
+import com.android.settings.core.lifecycle.Lifecycle;
+
+public class DockAudioMediaPreferenceController extends SettingPrefController {
+
+    private static final String KEY_DOCK_AUDIO_MEDIA = "dock_audio_media";
+
+    private static final int DOCK_AUDIO_MEDIA_DISABLED = 0;
+    private static final int DOCK_AUDIO_MEDIA_ENABLED = 1;
+    private static final int DEFAULT_DOCK_AUDIO_MEDIA = DOCK_AUDIO_MEDIA_DISABLED;
+
+    public DockAudioMediaPreferenceController(Context context, SettingsPreferenceFragment parent,
+            Lifecycle lifecycle) {
+        super(context, parent, lifecycle);
+        mPreference = new SettingPref(
+            TYPE_GLOBAL, KEY_DOCK_AUDIO_MEDIA, Global.DOCK_AUDIO_MEDIA_ENABLED,
+            DEFAULT_DOCK_AUDIO_MEDIA, DOCK_AUDIO_MEDIA_DISABLED, DOCK_AUDIO_MEDIA_ENABLED) {
+            @Override
+            public boolean isApplicable(Context context) {
+                return context.getResources().getBoolean(
+                    com.android.settings.R.bool.has_dock_settings);
+            }
+
+            @Override
+            protected String getCaption(Resources res, int value) {
+                switch(value) {
+                    case DOCK_AUDIO_MEDIA_DISABLED:
+                        return res.getString(
+                            com.android.settings.R.string.dock_audio_media_disabled);
+                    case DOCK_AUDIO_MEDIA_ENABLED:
+                        return res.getString(
+                            com.android.settings.R.string.dock_audio_media_enabled);
+                    default:
+                        throw new IllegalArgumentException();
+                }
+            }
+        };
+    }
+}
diff --git a/src/com/android/settings/notification/DockingSoundPreferenceController.java b/src/com/android/settings/notification/DockingSoundPreferenceController.java
new file mode 100644
index 0000000..ee277f0
--- /dev/null
+++ b/src/com/android/settings/notification/DockingSoundPreferenceController.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.notification;
+
+import static com.android.settings.notification.SettingPref.TYPE_GLOBAL;
+
+import android.content.Context;
+import android.provider.Settings.Global;
+import com.android.settings.R;
+import com.android.settings.SettingsPreferenceFragment;
+import com.android.settings.core.lifecycle.Lifecycle;
+
+public class DockingSoundPreferenceController extends SettingPrefController {
+
+    private static final String KEY_DOCKING_SOUNDS = "docking_sounds";
+
+    public DockingSoundPreferenceController(Context context, SettingsPreferenceFragment parent,
+            Lifecycle lifecycle) {
+        super(context, parent, lifecycle);
+        mPreference = new SettingPref(
+            TYPE_GLOBAL, KEY_DOCKING_SOUNDS, Global.DOCK_SOUNDS_ENABLED, DEFAULT_ON) {
+            @Override
+            public boolean isApplicable(Context context) {
+                return context.getResources().getBoolean(R.bool.has_dock_settings);
+            }
+        };
+    }
+
+}
diff --git a/src/com/android/settings/notification/EmergencyTonePreferenceController.java b/src/com/android/settings/notification/EmergencyTonePreferenceController.java
new file mode 100644
index 0000000..bc21f44
--- /dev/null
+++ b/src/com/android/settings/notification/EmergencyTonePreferenceController.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.notification;
+
+import static com.android.settings.notification.SettingPref.TYPE_GLOBAL;
+
+import android.content.Context;
+
+import android.content.res.Resources;
+import android.provider.Settings.Global;
+import android.telephony.TelephonyManager;
+import com.android.settings.R;
+import com.android.settings.SettingsPreferenceFragment;
+import com.android.settings.core.lifecycle.Lifecycle;
+
+public class EmergencyTonePreferenceController extends SettingPrefController {
+
+    private static final String KEY_EMERGENCY_TONE = "emergency_tone";
+    private static final int EMERGENCY_TONE_SILENT = 0;
+    private static final int EMERGENCY_TONE_ALERT = 1;
+    private static final int EMERGENCY_TONE_VIBRATE = 2;
+    private static final int DEFAULT_EMERGENCY_TONE = EMERGENCY_TONE_SILENT;
+
+    public EmergencyTonePreferenceController(Context context, SettingsPreferenceFragment parent,
+            Lifecycle lifecycle) {
+        super(context, parent, lifecycle);
+        mPreference = new SettingPref(
+            TYPE_GLOBAL, KEY_EMERGENCY_TONE, Global.EMERGENCY_TONE, DEFAULT_EMERGENCY_TONE,
+            EMERGENCY_TONE_ALERT, EMERGENCY_TONE_VIBRATE, EMERGENCY_TONE_SILENT) {
+
+            @Override
+            public boolean isApplicable(Context context) {
+                final TelephonyManager telephony =
+                    (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
+                return telephony != null
+                    && telephony.getCurrentPhoneType() == TelephonyManager.PHONE_TYPE_CDMA;
+            }
+
+            @Override
+            protected String getCaption(Resources res, int value) {
+                switch(value) {
+                    case EMERGENCY_TONE_SILENT:
+                        return res.getString(R.string.emergency_tone_silent);
+                    case EMERGENCY_TONE_ALERT:
+                        return res.getString(R.string.emergency_tone_alert);
+                    case EMERGENCY_TONE_VIBRATE:
+                        return res.getString(R.string.emergency_tone_vibrate);
+                    default:
+                        throw new IllegalArgumentException();
+                }
+            }
+        };
+    }
+
+}
diff --git a/src/com/android/settings/notification/NotificationAccessSettings.java b/src/com/android/settings/notification/NotificationAccessSettings.java
index b032358..2cd728c 100644
--- a/src/com/android/settings/notification/NotificationAccessSettings.java
+++ b/src/com/android/settings/notification/NotificationAccessSettings.java
@@ -29,9 +29,12 @@
 import android.service.notification.NotificationListenerService;
 import android.util.Log;
 
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.logging.MetricsLogger;
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.settings.R;
 import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.utils.ManagedServiceSettings;
 
 public class NotificationAccessSettings extends ManagedServiceSettings {
@@ -68,6 +71,7 @@
     }
 
     protected boolean setEnabled(ComponentName service, String title, boolean enable) {
+        logSpecialPermissionChange(enable, service.getPackageName());
         if (!enable) {
             if (!mServiceListing.isEnabled(service)) {
                 return true; // already disabled
@@ -82,6 +86,14 @@
         }
     }
 
+    @VisibleForTesting
+    void logSpecialPermissionChange(boolean enable, String packageName) {
+        int logCategory = enable ? MetricsEvent.APP_SPECIAL_PERMISSION_NOTIVIEW_ALLOW
+                : MetricsEvent.APP_SPECIAL_PERMISSION_NOTIVIEW_DENY;
+        FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider().action(getContext(),
+                logCategory, packageName);
+    }
+
     private static void disable(final Context context, final NotificationAccessSettings parent,
             final ComponentName cn) {
         parent.mServiceListing.setEnabled(cn, false);
diff --git a/src/com/android/settings/notification/NotificationBackend.java b/src/com/android/settings/notification/NotificationBackend.java
index 4013971..124579f 100644
--- a/src/com/android/settings/notification/NotificationBackend.java
+++ b/src/com/android/settings/notification/NotificationBackend.java
@@ -26,6 +26,7 @@
 import android.content.pm.ParceledListSlice;
 import android.graphics.drawable.Drawable;
 import android.os.ServiceManager;
+import android.os.UserHandle;
 import android.util.Log;
 
 import com.android.settingslib.Utils;
@@ -48,6 +49,8 @@
         }
         row.icon = app.loadIcon(pm);
         row.banned = getNotificationsBanned(row.pkg, row.uid);
+        row.showBadge = canShowBadge(row.pkg, row.uid);
+        row.userId = UserHandle.getUserId(row.uid);
         return row;
     }
 
@@ -87,12 +90,31 @@
         }
     }
 
+    public boolean canShowBadge(String pkg, int uid) {
+        try {
+            return sINM.canShowBadge(pkg, uid);
+        } catch (Exception e) {
+            Log.w(TAG, "Error calling NoMan", e);
+            return false;
+        }
+    }
+
+    public boolean setShowBadge(String pkg, int uid, boolean showBadge) {
+        try {
+            sINM.setShowBadge(pkg, uid, showBadge);
+            return true;
+        } catch (Exception e) {
+            Log.w(TAG, "Error calling NoMan", e);
+            return false;
+        }
+    }
+
     public NotificationChannel getChannel(String pkg, int uid, String channelId) {
         if (channelId == null) {
             return null;
         }
         try {
-            return sINM.getNotificationChannelForPackage(pkg, uid, channelId);
+            return sINM.getNotificationChannelForPackage(pkg, uid, channelId, true);
         } catch (Exception e) {
             Log.w(TAG, "Error calling NoMan", e);
             return null;
@@ -101,7 +123,7 @@
 
     public ParceledListSlice<NotificationChannel> getChannels(String pkg, int uid) {
         try {
-            return sINM.getNotificationChannelsForPackage(pkg, uid);
+            return sINM.getNotificationChannelsForPackage(pkg, uid, true);
         } catch (Exception e) {
             Log.w(TAG, "Error calling NoMan", e);
             return ParceledListSlice.emptyList();
@@ -129,6 +151,8 @@
         public boolean banned;
         public boolean first;  // first app in section
         public boolean systemApp;
+        public boolean showBadge;
+        public int userId;
     }
 
     public static class ChannelRow extends AppRow {
diff --git a/src/com/android/settings/notification/NotificationSettingsBase.java b/src/com/android/settings/notification/NotificationSettingsBase.java
index f3e4390..f6c6591 100644
--- a/src/com/android/settings/notification/NotificationSettingsBase.java
+++ b/src/com/android/settings/notification/NotificationSettingsBase.java
@@ -16,45 +16,37 @@
 
 package com.android.settings.notification;
 
-import com.android.internal.widget.LockPatternUtils;
 import com.android.settings.R;
 import com.android.settings.SettingsPreferenceFragment;
+import com.android.settings.Utils;
 import com.android.settings.applications.AppInfoBase;
 import com.android.settingslib.RestrictedLockUtils;
 import com.android.settingslib.RestrictedSwitchPreference;
 
-import android.app.Notification;
 import android.app.NotificationChannel;
 import android.app.NotificationManager;
-import android.app.admin.DevicePolicyManager;
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.pm.UserInfo;
 import android.os.Bundle;
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.provider.Settings;
-import android.service.notification.NotificationListenerService.Ranking;
 import android.support.v7.preference.Preference;
 import android.text.TextUtils;
 import android.util.Log;
 import android.widget.Toast;
 
-import java.util.ArrayList;
-
-import static com.android.settings.notification.RestrictedDropDownPreference.RestrictedItem;
 import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
 
 abstract public class NotificationSettingsBase extends SettingsPreferenceFragment {
     private static final String TAG = "NotifiSettingsBase";
     private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
 
-    protected static final String ARG_CHANNEL = "channel";
-
     protected static final String KEY_BLOCK = "block";
+    protected static final String KEY_BADGE = "badge";
 
     protected PackageManager mPm;
     protected UserManager mUm;
@@ -106,26 +98,26 @@
         mUid = args != null && args.containsKey(AppInfoBase.ARG_PACKAGE_UID)
                 ? args.getInt(AppInfoBase.ARG_PACKAGE_UID)
                 : intent.getIntExtra(Settings.EXTRA_APP_UID, -1);
-        if (mUid == -1 || TextUtils.isEmpty(mPkg)) {
-            Log.w(TAG, "Missing extras: " + Settings.EXTRA_APP_PACKAGE + " was " + mPkg + ", "
-                    + Settings.EXTRA_APP_UID + " was " + mUid);
-            toastAndFinish();
-            return;
-        }
-        mUserId = UserHandle.getUserId(mUid);
 
-        if (DEBUG) Log.d(TAG, "Load details for pkg=" + mPkg + " uid=" + mUid);
+        if (mUid < 0) {
+            try {
+                mUid = mPm.getPackageUid(mPkg, 0);
+            } catch (NameNotFoundException e) {
+            }
+        }
+
         mPkgInfo = findPackageInfo(mPkg, mUid);
-        if (mPkgInfo == null) {
-            Log.w(TAG, "Failed to find package info: " + Settings.EXTRA_APP_PACKAGE + " was " + mPkg
-                    + ", " + Settings.EXTRA_APP_UID + " was " + mUid);
+
+        if (mUid < 0 || TextUtils.isEmpty(mPkg) || mPkgInfo == null) {
+            Log.w(TAG, "Missing package or uid or packageinfo");
             toastAndFinish();
             return;
         }
 
+        mUserId = UserHandle.getUserId(mUid);
         mAppRow = mBackend.loadAppRow(mContext, mPm, mPkgInfo);
-        mChannel = (args != null && args.containsKey(ARG_CHANNEL)) ?
-                mBackend.getChannel(mPkg, mUid, args.getString(ARG_CHANNEL)) : null;
+        mChannel = (args != null && args.containsKey(Settings.EXTRA_CHANNEL_ID)) ?
+                mBackend.getChannel(mPkg, mUid, args.getString(Settings.EXTRA_CHANNEL_ID)) : null;
 
         mSuspendedAppsAdmin = RestrictedLockUtils.checkIfApplicationIsSuspended(
                 mContext, mPkg, mUserId);
@@ -137,14 +129,15 @@
     @Override
     public void onResume() {
         super.onResume();
-        if ((mUid != -1 && getPackageManager().getPackagesForUid(mUid) == null)) {
-            // App isn't around anymore, must have been removed.
+        if (mUid < 0 || TextUtils.isEmpty(mPkg) || mPkgInfo == null) {
+            Log.w(TAG, "Missing package or uid or packageinfo");
             finish();
             return;
         }
         mSuspendedAppsAdmin = RestrictedLockUtils.checkIfApplicationIsSuspended(
                 mContext, mPkg, mUserId);
         mBlock.setDisabledByAdmin(mSuspendedAppsAdmin);
+        mBadge.setDisabledByAdmin(mSuspendedAppsAdmin);
     }
 
     protected void setVisible(Preference p, boolean visible) {
@@ -163,6 +156,9 @@
     }
 
     private PackageInfo findPackageInfo(String pkg, int uid) {
+        if (pkg == null || uid < 0) {
+            return null;
+        }
         final String[] packages = mPm.getPackagesForUid(uid);
         if (packages != null && pkg != null) {
             final int N = packages.length;
@@ -179,4 +175,16 @@
         }
         return null;
     }
+
+    private PackageInfo findPackageInfo(String pkg) {
+        if (pkg == null) {
+            return null;
+        }
+        try {
+            return mPm.getPackageInfo(pkg, PackageManager.GET_SIGNATURES);
+        } catch (NameNotFoundException e) {
+            Log.w(TAG, "Failed to load package " + pkg, e);
+        }
+        return null;
+    }
 }
diff --git a/src/com/android/settings/notification/NotificationStation.java b/src/com/android/settings/notification/NotificationStation.java
index 04897e4..50bcd95 100644
--- a/src/com/android/settings/notification/NotificationStation.java
+++ b/src/com/android/settings/notification/NotificationStation.java
@@ -56,7 +56,7 @@
 public class NotificationStation extends SettingsPreferenceFragment {
     private static final String TAG = NotificationStation.class.getSimpleName();
 
-    private static final boolean DEBUG = false;
+    private static final boolean DEBUG = true;
     private static final boolean DUMP_EXTRAS = true;
     private static final boolean DUMP_PARCEL = true;
     private Handler mHandler;
@@ -362,6 +362,11 @@
                                         .append(delim)
                                         .append(rank.getImportanceExplanation());
                             }
+                            sb.append("\n")
+                                    .append(bold(getString(
+                                            R.string.notification_log_details_badge)))
+                                    .append(delim)
+                                    .append(Boolean.toString(rank.canShowBadge()));
                         } else {
                             if (mRanking == null) {
                                 sb.append("\n")
diff --git a/src/com/android/settings/notification/OtherSoundSettings.java b/src/com/android/settings/notification/OtherSoundSettings.java
index cf47cb5..5c409d3 100644
--- a/src/com/android/settings/notification/OtherSoundSettings.java
+++ b/src/com/android/settings/notification/OtherSoundSettings.java
@@ -16,177 +16,26 @@
 
 package com.android.settings.notification;
 
-import android.content.ContentResolver;
 import android.content.Context;
-import android.content.res.Resources;
-import android.database.ContentObserver;
-import android.media.AudioManager;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.SystemProperties;
-import android.os.Vibrator;
 import android.provider.SearchIndexableResource;
-import android.provider.Settings.Global;
-import android.provider.Settings.System;
-import android.support.v14.preference.SwitchPreference;
-import android.support.v7.preference.Preference;
-import android.telephony.TelephonyManager;
 
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.settings.R;
-import com.android.settings.SettingsPreferenceFragment;
-import com.android.settings.Utils;
+import com.android.settings.core.PreferenceController;
+import com.android.settings.core.lifecycle.Lifecycle;
+import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.search.BaseSearchIndexProvider;
-import com.android.settings.search.Indexable;
 
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
-import static com.android.settings.notification.SettingPref.TYPE_GLOBAL;
-import static com.android.settings.notification.SettingPref.TYPE_SYSTEM;
-
-public class OtherSoundSettings extends SettingsPreferenceFragment implements Indexable {
+/* This class has been deprecated  Modifications to Other Sounds settings should be made in
+   {@link SoundSettings } instead. */
+@Deprecated
+public class OtherSoundSettings extends DashboardFragment {
     private static final String TAG = "OtherSoundSettings";
 
-    private static final int DEFAULT_ON = 1;
-
-    private static final int EMERGENCY_TONE_SILENT = 0;
-    private static final int EMERGENCY_TONE_ALERT = 1;
-    private static final int EMERGENCY_TONE_VIBRATE = 2;
-    private static final int DEFAULT_EMERGENCY_TONE = EMERGENCY_TONE_SILENT;
-
-    private static final int DOCK_AUDIO_MEDIA_DISABLED = 0;
-    private static final int DOCK_AUDIO_MEDIA_ENABLED = 1;
-    private static final int DEFAULT_DOCK_AUDIO_MEDIA = DOCK_AUDIO_MEDIA_DISABLED;
-
-    private static final String KEY_DIAL_PAD_TONES = "dial_pad_tones";
-    private static final String KEY_SCREEN_LOCKING_SOUNDS = "screen_locking_sounds";
-    private static final String KEY_CHARGING_SOUNDS = "charging_sounds";
-    private static final String KEY_DOCKING_SOUNDS = "docking_sounds";
-    private static final String KEY_TOUCH_SOUNDS = "touch_sounds";
-    private static final String KEY_VIBRATE_ON_TOUCH = "vibrate_on_touch";
-    private static final String KEY_DOCK_AUDIO_MEDIA = "dock_audio_media";
-    private static final String KEY_EMERGENCY_TONE = "emergency_tone";
-
-    // Boot Sounds needs to be a system property so it can be accessed during boot.
-    private static final String KEY_BOOT_SOUNDS = "boot_sounds";
-    private static final String PROPERTY_BOOT_SOUNDS = "persist.sys.bootanim.play_sound";
-
-    private static final SettingPref PREF_DIAL_PAD_TONES = new SettingPref(
-            TYPE_SYSTEM, KEY_DIAL_PAD_TONES, System.DTMF_TONE_WHEN_DIALING, DEFAULT_ON) {
-        @Override
-        public boolean isApplicable(Context context) {
-            return Utils.isVoiceCapable(context);
-        }
-    };
-
-    private static final SettingPref PREF_SCREEN_LOCKING_SOUNDS = new SettingPref(
-            TYPE_SYSTEM, KEY_SCREEN_LOCKING_SOUNDS, System.LOCKSCREEN_SOUNDS_ENABLED, DEFAULT_ON);
-
-    private static final SettingPref PREF_CHARGING_SOUNDS = new SettingPref(
-            TYPE_GLOBAL, KEY_CHARGING_SOUNDS, Global.CHARGING_SOUNDS_ENABLED, DEFAULT_ON);
-
-    private static final SettingPref PREF_DOCKING_SOUNDS = new SettingPref(
-            TYPE_GLOBAL, KEY_DOCKING_SOUNDS, Global.DOCK_SOUNDS_ENABLED, DEFAULT_ON) {
-        @Override
-        public boolean isApplicable(Context context) {
-            return hasDockSettings(context);
-        }
-    };
-
-    private static final SettingPref PREF_TOUCH_SOUNDS = new SettingPref(
-            TYPE_SYSTEM, KEY_TOUCH_SOUNDS, System.SOUND_EFFECTS_ENABLED, DEFAULT_ON) {
-        @Override
-        protected boolean setSetting(final Context context, final int value) {
-            AsyncTask.execute(new Runnable() {
-                @Override
-                public void run() {
-                    final AudioManager am =
-                            (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
-                    if (value != 0) {
-                        am.loadSoundEffects();
-                    } else {
-                        am.unloadSoundEffects();
-                    }
-                }
-            });
-            return super.setSetting(context, value);
-        }
-    };
-
-    private static final SettingPref PREF_VIBRATE_ON_TOUCH = new SettingPref(
-            TYPE_SYSTEM, KEY_VIBRATE_ON_TOUCH, System.HAPTIC_FEEDBACK_ENABLED, DEFAULT_ON) {
-        @Override
-        public boolean isApplicable(Context context) {
-            return hasHaptic(context);
-        }
-    };
-
-    private static final SettingPref PREF_DOCK_AUDIO_MEDIA = new SettingPref(
-            TYPE_GLOBAL, KEY_DOCK_AUDIO_MEDIA, Global.DOCK_AUDIO_MEDIA_ENABLED,
-            DEFAULT_DOCK_AUDIO_MEDIA, DOCK_AUDIO_MEDIA_DISABLED, DOCK_AUDIO_MEDIA_ENABLED) {
-        @Override
-        public boolean isApplicable(Context context) {
-            return hasDockSettings(context);
-        }
-
-        @Override
-        protected String getCaption(Resources res, int value) {
-            switch(value) {
-                case DOCK_AUDIO_MEDIA_DISABLED:
-                    return res.getString(R.string.dock_audio_media_disabled);
-                case DOCK_AUDIO_MEDIA_ENABLED:
-                    return res.getString(R.string.dock_audio_media_enabled);
-                default:
-                    throw new IllegalArgumentException();
-            }
-        }
-    };
-
-    private static final SettingPref PREF_EMERGENCY_TONE = new SettingPref(
-            TYPE_GLOBAL, KEY_EMERGENCY_TONE, Global.EMERGENCY_TONE, DEFAULT_EMERGENCY_TONE,
-            EMERGENCY_TONE_ALERT, EMERGENCY_TONE_VIBRATE, EMERGENCY_TONE_SILENT) {
-        @Override
-        public boolean isApplicable(Context context) {
-            final int activePhoneType = TelephonyManager.getDefault().getCurrentPhoneType();
-            return activePhoneType == TelephonyManager.PHONE_TYPE_CDMA;
-        }
-
-        @Override
-        protected String getCaption(Resources res, int value) {
-            switch(value) {
-                case EMERGENCY_TONE_SILENT:
-                    return res.getString(R.string.emergency_tone_silent);
-                case EMERGENCY_TONE_ALERT:
-                    return res.getString(R.string.emergency_tone_alert);
-                case EMERGENCY_TONE_VIBRATE:
-                    return res.getString(R.string.emergency_tone_vibrate);
-                default:
-                    throw new IllegalArgumentException();
-            }
-        }
-    };
-
-    private static final SettingPref[] PREFS = {
-        PREF_DIAL_PAD_TONES,
-        PREF_SCREEN_LOCKING_SOUNDS,
-        PREF_CHARGING_SOUNDS,
-        PREF_DOCKING_SOUNDS,
-        PREF_TOUCH_SOUNDS,
-        PREF_VIBRATE_ON_TOUCH,
-        PREF_DOCK_AUDIO_MEDIA,
-        PREF_EMERGENCY_TONE,
-    };
-
-    private SwitchPreference mBootSounds;
-
-    private final SettingsObserver mSettingsObserver = new SettingsObserver();
-
-    private Context mContext;
-
     @Override
     public int getMetricsCategory() {
         return MetricsEvent.NOTIFICATION_OTHER_SOUND;
@@ -198,84 +47,29 @@
     }
 
     @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        addPreferencesFromResource(R.xml.other_sound_settings);
-
-        mContext = getActivity();
-
-        for (SettingPref pref : PREFS) {
-            pref.init(this);
-        }
-
-        if (mContext.getResources().getBoolean(R.bool.has_boot_sounds)) {
-            mBootSounds = (SwitchPreference) findPreference(KEY_BOOT_SOUNDS);
-            mBootSounds.setChecked(SystemProperties.getBoolean(PROPERTY_BOOT_SOUNDS, true));
-        } else {
-            removePreference(KEY_BOOT_SOUNDS);
-        }
+    protected String getLogTag() {
+        return TAG;
     }
 
     @Override
-    public void onResume() {
-        super.onResume();
-        mSettingsObserver.register(true);
+    protected int getPreferenceScreenResId() {
+        return R.xml.other_sound_settings;
     }
 
     @Override
-    public void onPause() {
-        super.onPause();
-        mSettingsObserver.register(false);
-    }
-
-    @Override
-    public boolean onPreferenceTreeClick(Preference preference) {
-        if (mBootSounds != null && preference == mBootSounds) {
-            SystemProperties.set(PROPERTY_BOOT_SOUNDS, mBootSounds.isChecked() ? "1" : "0");
-            return false;
-        } else {
-            return super.onPreferenceTreeClick(preference);
-        }
-    }
-
-    private static boolean hasDockSettings(Context context) {
-        return context.getResources().getBoolean(R.bool.has_dock_settings);
-    }
-
-    private static boolean hasHaptic(Context context) {
-        final Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
-        return vibrator != null && vibrator.hasVibrator();
-    }
-
-    // === Callbacks ===
-
-    private final class SettingsObserver extends ContentObserver {
-        public SettingsObserver() {
-            super(new Handler());
-        }
-
-        public void register(boolean register) {
-            final ContentResolver cr = getContentResolver();
-            if (register) {
-                for (SettingPref pref : PREFS) {
-                    cr.registerContentObserver(pref.getUri(), false, this);
-                }
-            } else {
-                cr.unregisterContentObserver(this);
-            }
-        }
-
-        @Override
-        public void onChange(boolean selfChange, Uri uri) {
-            super.onChange(selfChange, uri);
-            for (SettingPref pref : PREFS) {
-                if (pref.getUri().equals(uri)) {
-                    pref.update(mContext);
-                    return;
-                }
-            }
-        }
+    protected List<PreferenceController> getPreferenceControllers(Context context) {
+        final List<PreferenceController> controllers = new ArrayList<>();
+        Lifecycle lifecycle = getLifecycle();
+        controllers.add(new DialPadTonePreferenceController(context, this, lifecycle));
+        controllers.add(new ScreenLockSoundPreferenceController(context, this, lifecycle));
+        controllers.add(new ChargingSoundPreferenceController(context, this, lifecycle));
+        controllers.add(new DockingSoundPreferenceController(context, this, lifecycle));
+        controllers.add(new TouchSoundPreferenceController(context, this, lifecycle));
+        controllers.add(new VibrateOnTouchPreferenceController(context, this, lifecycle));
+        controllers.add(new DockAudioMediaPreferenceController(context, this, lifecycle));
+        controllers.add(new BootSoundPreferenceController(context));
+        controllers.add(new EmergencyTonePreferenceController(context, this, lifecycle));
+        return controllers;
     }
 
     // === Indexing ===
@@ -292,11 +86,23 @@
 
         public List<String> getNonIndexableKeys(Context context) {
             final ArrayList<String> rt = new ArrayList<String>();
-            for (SettingPref pref : PREFS) {
-                if (!pref.isApplicable(context)) {
-                    rt.add(pref.getKey());
-                }
-            }
+            new DialPadTonePreferenceController(context, null /* SettingsPreferenceFragment */,
+                null /* Lifecycle */).updateNonIndexableKeys(rt);
+            new ScreenLockSoundPreferenceController(context, null /* SettingsPreferenceFragment */,
+                null /* Lifecycle */).updateNonIndexableKeys(rt);
+            new ChargingSoundPreferenceController(context, null /* SettingsPreferenceFragment */,
+                null /* Lifecycle */).updateNonIndexableKeys(rt);
+            new DockingSoundPreferenceController(context, null /* SettingsPreferenceFragment */,
+                null /* Lifecycle */).updateNonIndexableKeys(rt);
+            new TouchSoundPreferenceController(context, null /* SettingsPreferenceFragment */,
+                null /* Lifecycle */).updateNonIndexableKeys(rt);
+            new VibrateOnTouchPreferenceController(context, null /* SettingsPreferenceFragment */,
+                null /* Lifecycle */).updateNonIndexableKeys(rt);
+            new DockAudioMediaPreferenceController(context, null /* SettingsPreferenceFragment */,
+                null /* Lifecycle */).updateNonIndexableKeys(rt);
+            new BootSoundPreferenceController(context).updateNonIndexableKeys(rt);
+            new EmergencyTonePreferenceController(context, null /* SettingsPreferenceFragment */,
+                null /* Lifecycle */).updateNonIndexableKeys(rt);
             return rt;
         }
     };
diff --git a/src/com/android/settings/notification/ScreenLockSoundPreferenceController.java b/src/com/android/settings/notification/ScreenLockSoundPreferenceController.java
new file mode 100644
index 0000000..f9905c0
--- /dev/null
+++ b/src/com/android/settings/notification/ScreenLockSoundPreferenceController.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.notification;
+
+import static com.android.settings.notification.SettingPref.TYPE_SYSTEM;
+
+import android.content.Context;
+
+import android.provider.Settings.System;
+import com.android.settings.SettingsPreferenceFragment;
+import com.android.settings.core.lifecycle.Lifecycle;
+
+public class ScreenLockSoundPreferenceController extends SettingPrefController {
+
+    private static final String KEY_SCREEN_LOCKING_SOUNDS = "screen_locking_sounds";
+
+    public ScreenLockSoundPreferenceController(Context context, SettingsPreferenceFragment parent,
+            Lifecycle lifecycle) {
+        super(context, parent, lifecycle);
+        mPreference = new SettingPref(
+            TYPE_SYSTEM, KEY_SCREEN_LOCKING_SOUNDS, System.LOCKSCREEN_SOUNDS_ENABLED, DEFAULT_ON);
+    }
+
+}
diff --git a/src/com/android/settings/notification/SettingPrefController.java b/src/com/android/settings/notification/SettingPrefController.java
new file mode 100644
index 0000000..d126fc4
--- /dev/null
+++ b/src/com/android/settings/notification/SettingPrefController.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.notification;
+
+import android.content.ContentResolver;
+import android.content.Context;
+
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.os.Handler;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.settings.SettingsPreferenceFragment;
+import com.android.settings.core.PreferenceController;
+import com.android.settings.core.lifecycle.Lifecycle;
+import com.android.settings.core.lifecycle.LifecycleObserver;
+import com.android.settings.core.lifecycle.events.OnPause;
+import com.android.settings.core.lifecycle.events.OnResume;
+import java.util.List;
+
+public abstract class SettingPrefController extends PreferenceController implements
+    LifecycleObserver, OnResume, OnPause {
+
+    protected static final int DEFAULT_ON = 1;
+
+    private SettingsPreferenceFragment mParent;
+    protected SettingsObserver mSettingsObserver;
+    protected SettingPref mPreference;
+
+    public SettingPrefController(Context context, SettingsPreferenceFragment parent,
+            Lifecycle lifecycle) {
+        super(context);
+        mParent = parent;
+        if (lifecycle != null) {
+            lifecycle.addObserver(this);
+        }
+    }
+
+    @Override
+    public void displayPreference(PreferenceScreen screen) {
+        mPreference.init(mParent);
+        if (isAvailable()) {
+            mSettingsObserver = new SettingsObserver();
+        }
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return mPreference.getKey();
+    }
+
+    @Override
+    public boolean isAvailable() {
+        return mPreference.isApplicable(mContext);
+    }
+
+    @Override
+    public void updateNonIndexableKeys(List<String> keys) {
+        if (!mPreference.isApplicable(mContext)) {
+            keys.add(mPreference.getKey());
+        }
+    }
+
+    @Override
+    public void updateState(Preference preference) {
+        mPreference.update(mContext);
+    }
+
+    @Override
+    public void onResume() {
+        if (mSettingsObserver != null) {
+            mSettingsObserver.register(true /* register */);
+        }
+    }
+
+    @Override
+    public void onPause() {
+        if (mSettingsObserver != null) {
+            mSettingsObserver.register(false /* register */);
+        }
+    }
+
+    @VisibleForTesting
+    final class SettingsObserver extends ContentObserver {
+        public SettingsObserver() {
+            super(new Handler());
+        }
+
+        public void register(boolean register) {
+            final ContentResolver cr = mContext.getContentResolver();
+            if (register) {
+                cr.registerContentObserver(mPreference.getUri(), false, this);
+            } else {
+                cr.unregisterContentObserver(this);
+            }
+        }
+
+        @Override
+        public void onChange(boolean selfChange, Uri uri) {
+            super.onChange(selfChange, uri);
+            if (mPreference.getUri().equals(uri)) {
+                mPreference.update(mContext);
+            }
+        }
+    }
+
+}
diff --git a/src/com/android/settings/notification/SoundSettings.java b/src/com/android/settings/notification/SoundSettings.java
index f156a84..1cf0ae6 100644
--- a/src/com/android/settings/notification/SoundSettings.java
+++ b/src/com/android/settings/notification/SoundSettings.java
@@ -20,7 +20,6 @@
 import android.app.NotificationManager;
 import android.content.BroadcastReceiver;
 import android.content.ComponentName;
-import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
@@ -41,8 +40,9 @@
 import com.android.settings.core.lifecycle.Lifecycle;
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.dashboard.SummaryLoader;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.search.BaseSearchIndexProvider;
-import com.android.settingslib.drawer.CategoryKey;
+
 import java.text.NumberFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -102,25 +102,23 @@
     }
 
     @Override
-    protected String getCategoryKey() {
-        return CategoryKey.CATEGORY_SOUND;
-    }
-
-    @Override
     protected String getLogTag() {
         return TAG;
     }
 
     @Override
     protected int getPreferenceScreenResId() {
-        return R.xml.sound_settings;
+        return mDashboardFeatureProvider.isEnabled()
+            ? R.xml.ia_sound_settings : R.xml.sound_settings;
     }
 
     @Override
     protected List<PreferenceController> getPreferenceControllers(Context context) {
         final List<PreferenceController> controllers = new ArrayList<>();
         Lifecycle lifecycle = getLifecycle();
-        controllers.add(new CastPreferenceController(context));
+        if (!mDashboardFeatureProvider.isEnabled()) {
+            controllers.add(new CastPreferenceController(context));
+        }
         controllers.add(new ZenModePreferenceController(context));
         controllers.add(new EmergencyBroadcastPreferenceController(context));
         controllers.add(new VibrateWhenRingPreferenceController(context));
@@ -141,6 +139,19 @@
         mWorkSoundController = new WorkSoundPreferenceController(context, this, getLifecycle());
         controllers.add(mWorkSoundController);
 
+        // === Other Sound Settings ===
+        if (mDashboardFeatureProvider.isEnabled()) {
+            controllers.add(new DialPadTonePreferenceController(context, this, lifecycle));
+            controllers.add(new ScreenLockSoundPreferenceController(context, this, lifecycle));
+            controllers.add(new ChargingSoundPreferenceController(context, this, lifecycle));
+            controllers.add(new DockingSoundPreferenceController(context, this, lifecycle));
+            controllers.add(new TouchSoundPreferenceController(context, this, lifecycle));
+            controllers.add(new VibrateOnTouchPreferenceController(context, this, lifecycle));
+            controllers.add(new DockAudioMediaPreferenceController(context, this, lifecycle));
+            controllers.add(new BootSoundPreferenceController(context));
+            controllers.add(new EmergencyTonePreferenceController(context, this, lifecycle));
+        }
+
         return controllers;
     }
 
@@ -297,10 +308,38 @@
                 context, null /* Callback */, null /* Lifecycle */).updateNonIndexableKeys(rt);
             new RingVolumePreferenceController(
                 context, null /* Callback */, null /* Lifecycle */).updateNonIndexableKeys(rt);
-            new CastPreferenceController(context).updateNonIndexableKeys(rt);
             new PhoneRingtonePreferenceController(context).updateNonIndexableKeys(rt);
             new VibrateWhenRingPreferenceController(context).updateNonIndexableKeys(rt);
             new EmergencyBroadcastPreferenceController(context).updateNonIndexableKeys(rt);
+            if (FeatureFactory.getFactory(context).getDashboardFeatureProvider(context)
+                .isEnabled()) {
+                new DialPadTonePreferenceController(context,
+                    null /* SettingsPreferenceFragment */,
+                    null /* Lifecycle */).updateNonIndexableKeys(rt);
+                new ScreenLockSoundPreferenceController(context,
+                    null /* SettingsPreferenceFragment */,
+                    null /* Lifecycle */).updateNonIndexableKeys(rt);
+                new ChargingSoundPreferenceController(context,
+                    null /* SettingsPreferenceFragment */,
+                    null /* Lifecycle */).updateNonIndexableKeys(rt);
+                new DockingSoundPreferenceController(context,
+                    null /* SettingsPreferenceFragment */,
+                    null /* Lifecycle */).updateNonIndexableKeys(rt);
+                new TouchSoundPreferenceController(context, null /* SettingsPreferenceFragment */,
+                    null /* Lifecycle */).updateNonIndexableKeys(rt);
+                new VibrateOnTouchPreferenceController(context,
+                    null /* SettingsPreferenceFragment */,
+                    null /* Lifecycle */).updateNonIndexableKeys(rt);
+                new DockAudioMediaPreferenceController(context,
+                    null /* SettingsPreferenceFragment */,
+                    null /* Lifecycle */).updateNonIndexableKeys(rt);
+                new BootSoundPreferenceController(context).updateNonIndexableKeys(rt);
+                new EmergencyTonePreferenceController(context,
+                    null /* SettingsPreferenceFragment */,
+                    null /* Lifecycle */).updateNonIndexableKeys(rt);
+            } else {
+                new CastPreferenceController(context).updateNonIndexableKeys(rt);
+            }
 
             return rt;
         }
diff --git a/src/com/android/settings/notification/TouchSoundPreferenceController.java b/src/com/android/settings/notification/TouchSoundPreferenceController.java
new file mode 100644
index 0000000..4ca5ea0
--- /dev/null
+++ b/src/com/android/settings/notification/TouchSoundPreferenceController.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.notification;
+
+import static com.android.settings.notification.SettingPref.TYPE_SYSTEM;
+
+import android.content.Context;
+
+import android.media.AudioManager;
+import android.os.AsyncTask;
+import android.provider.Settings.System;
+import com.android.settings.SettingsPreferenceFragment;
+import com.android.settings.core.lifecycle.Lifecycle;
+
+public class TouchSoundPreferenceController extends SettingPrefController {
+
+    private static final String KEY_TOUCH_SOUNDS = "touch_sounds";
+
+    public TouchSoundPreferenceController(Context context, SettingsPreferenceFragment parent,
+            Lifecycle lifecycle) {
+        super(context, parent, lifecycle);
+        mPreference = new SettingPref(
+            TYPE_SYSTEM, KEY_TOUCH_SOUNDS, System.SOUND_EFFECTS_ENABLED, DEFAULT_ON) {
+            @Override
+            protected boolean setSetting(final Context context, final int value) {
+                AsyncTask.execute(new Runnable() {
+                    @Override
+                    public void run() {
+                        final AudioManager am =
+                            (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+                        if (value != 0) {
+                            am.loadSoundEffects();
+                        } else {
+                            am.unloadSoundEffects();
+                        }
+                    }
+                });
+                return super.setSetting(context, value);
+            }
+        };
+    }
+}
diff --git a/src/com/android/settings/notification/VibrateOnTouchPreferenceController.java b/src/com/android/settings/notification/VibrateOnTouchPreferenceController.java
new file mode 100644
index 0000000..8fd938e
--- /dev/null
+++ b/src/com/android/settings/notification/VibrateOnTouchPreferenceController.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.notification;
+
+import static com.android.settings.notification.SettingPref.TYPE_SYSTEM;
+
+import android.content.Context;
+import android.os.Vibrator;
+import android.provider.Settings.System;
+import com.android.settings.SettingsPreferenceFragment;
+import com.android.settings.core.lifecycle.Lifecycle;
+
+public class VibrateOnTouchPreferenceController extends SettingPrefController {
+
+    private static final String KEY_VIBRATE_ON_TOUCH = "vibrate_on_touch";
+
+    public VibrateOnTouchPreferenceController(Context context, SettingsPreferenceFragment parent,
+            Lifecycle lifecycle) {
+        super(context, parent, lifecycle);
+        mPreference = new SettingPref(
+            TYPE_SYSTEM, KEY_VIBRATE_ON_TOUCH, System.HAPTIC_FEEDBACK_ENABLED, DEFAULT_ON) {
+            @Override
+            public boolean isApplicable(Context context) {
+                return hasHaptic(context);
+            }
+        };
+
+    }
+
+    private static boolean hasHaptic(Context context) {
+        final Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
+        return vibrator != null && vibrator.hasVibrator();
+    }
+
+}
diff --git a/src/com/android/settings/notification/WorkSoundPreferenceController.java b/src/com/android/settings/notification/WorkSoundPreferenceController.java
index 3053f2a..c94991c 100644
--- a/src/com/android/settings/notification/WorkSoundPreferenceController.java
+++ b/src/com/android/settings/notification/WorkSoundPreferenceController.java
@@ -20,8 +20,11 @@
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.app.FragmentManager;
+import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.IntentFilter;
 import android.media.AudioSystem;
 import android.media.Ringtone;
 import android.media.RingtoneManager;
@@ -46,11 +49,11 @@
 import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 import com.android.settings.core.lifecycle.Lifecycle;
 import com.android.settings.core.lifecycle.LifecycleObserver;
+import com.android.settings.core.lifecycle.events.OnPause;
 import com.android.settings.core.lifecycle.events.OnResume;
 
-
 public class WorkSoundPreferenceController extends PreferenceController implements
-    OnPreferenceChangeListener, LifecycleObserver, OnResume {
+    OnPreferenceChangeListener, LifecycleObserver, OnResume, OnPause {
 
     private static final String TAG = "WorkSoundPrefController";
     private static final String KEY_WORK_CATEGORY = "sound_work_settings_section";
@@ -97,18 +100,18 @@
 
     @Override
     public void onResume() {
-        if (isAvailable()) {
-            if ((mWorkPreferenceCategory == null)) {
-                // Work preferences not yet set
-                mParent.addPreferencesFromResource(R.xml.sound_work_settings);
-                initWorkPreferences();
-            }
-            if (!mWorkUsePersonalSounds.isChecked()) {
-                updateWorkRingtoneSummaries();
-            }
-        } else {
-            maybeRemoveWorkPreferences();
-        }
+        IntentFilter managedProfileFilter = new IntentFilter();
+        managedProfileFilter.addAction(Intent.ACTION_MANAGED_PROFILE_ADDED);
+        managedProfileFilter.addAction(Intent.ACTION_MANAGED_PROFILE_REMOVED);
+        mContext.registerReceiver(mManagedProfileReceiver, managedProfileFilter);
+
+        mManagedProfileId = mHelper.getManagedProfileId(mUserManager);
+        initWorkPreferences();
+    }
+
+    @Override
+    public void onPause() {
+        mContext.unregisterReceiver(mManagedProfileReceiver);
     }
 
     @Override
@@ -118,8 +121,8 @@
 
     @Override
     public boolean isAvailable() {
-        mManagedProfileId = mHelper.getManagedProfileId(mUserManager);
-        return mManagedProfileId != UserHandle.USER_NULL && shouldShowRingtoneSettings();
+        return mHelper.getManagedProfileId(mUserManager) != UserHandle.USER_NULL
+                && shouldShowRingtoneSettings();
     }
 
     @Override
@@ -183,17 +186,37 @@
     }
 
     private void initWorkPreferences() {
-        mWorkPreferenceCategory = (PreferenceGroup) mParent.getPreferenceScreen()
-            .findPreference(KEY_WORK_CATEGORY);
-        mWorkUsePersonalSounds = (TwoStatePreference) mParent.getPreferenceScreen()
-            .findPreference(KEY_WORK_USE_PERSONAL_SOUNDS);
-        mWorkPhoneRingtonePreference = initWorkPreference(KEY_WORK_PHONE_RINGTONE);
-        mWorkNotificationRingtonePreference = initWorkPreference(KEY_WORK_NOTIFICATION_RINGTONE);
-        mWorkAlarmRingtonePreference = initWorkPreference(KEY_WORK_ALARM_RINGTONE);
+        if (mManagedProfileId == UserHandle.USER_NULL || !isAvailable()) {
+            maybeRemoveWorkPreferences();
+            return;
+        }
 
-        if (!mVoiceCapable) {
-            mWorkPreferenceCategory.removePreference(mWorkPhoneRingtonePreference);
-            mWorkPhoneRingtonePreference = null;
+        if (mWorkPreferenceCategory == null) {
+            mParent.addPreferencesFromResource(R.xml.sound_work_settings);
+            final PreferenceScreen screen = mParent.getPreferenceScreen();
+
+            mWorkPreferenceCategory = (PreferenceGroup) screen.findPreference(KEY_WORK_CATEGORY);
+            mWorkUsePersonalSounds = (TwoStatePreference)
+                    screen.findPreference(KEY_WORK_USE_PERSONAL_SOUNDS);
+            mWorkPhoneRingtonePreference = initWorkPreference(KEY_WORK_PHONE_RINGTONE);
+            mWorkNotificationRingtonePreference = initWorkPreference(
+                    KEY_WORK_NOTIFICATION_RINGTONE);
+            mWorkAlarmRingtonePreference = initWorkPreference(KEY_WORK_ALARM_RINGTONE);
+
+            mWorkUsePersonalSounds.setOnPreferenceChangeListener((Preference p, Object value) -> {
+                if ((boolean) value) {
+                    UnifyWorkDialogFragment.show(mParent);
+                    return false;
+                } else {
+                    disableWorkSync();
+                    return true;
+                }
+            });
+
+            if (!mVoiceCapable) {
+                mWorkPreferenceCategory.removePreference(mWorkPhoneRingtonePreference);
+                mWorkPhoneRingtonePreference = null;
+            }
         }
 
         Context managedProfileContext = getManagedProfileContext();
@@ -203,19 +226,6 @@
         } else {
             disableWorkSyncSettings();
         }
-
-        mWorkUsePersonalSounds.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
-            @Override
-            public boolean onPreferenceChange(Preference preference, Object newValue) {
-                if ((boolean) newValue) {
-                    UnifyWorkDialogFragment.show(mParent);
-                    return false;
-                } else {
-                    disableWorkSync();
-                    return true;
-                }
-            }
-        });
     }
 
     void enableWorkSync() {
@@ -266,7 +276,6 @@
 
     private void maybeRemoveWorkPreferences() {
         if (mWorkPreferenceCategory == null) {
-            // No work preferences to remove
             return;
         }
         mParent.getPreferenceScreen().removePreference(mWorkPreferenceCategory);
@@ -276,6 +285,37 @@
         mWorkAlarmRingtonePreference = null;
     }
 
+    public void onManagedProfileAdded(@UserIdInt int profileId) {
+        if (mManagedProfileId == UserHandle.USER_NULL) {
+            mManagedProfileId = profileId;
+            initWorkPreferences();
+        }
+    }
+
+    public void onManagedProfileRemoved(@UserIdInt int profileId) {
+        if (mManagedProfileId == profileId) {
+            mManagedProfileId = mHelper.getManagedProfileId(mUserManager);
+            initWorkPreferences();
+        }
+    }
+
+    private final BroadcastReceiver mManagedProfileReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            final int userId = ((UserHandle) intent.getExtra(Intent.EXTRA_USER)).getIdentifier();
+            switch (intent.getAction()) {
+                case Intent.ACTION_MANAGED_PROFILE_ADDED: {
+                    onManagedProfileAdded(userId);
+                    return;
+                }
+                case Intent.ACTION_MANAGED_PROFILE_REMOVED: {
+                    onManagedProfileRemoved(userId);
+                    return;
+                }
+            }
+        }
+    };
+
     public static class UnifyWorkDialogFragment extends InstrumentedDialogFragment
         implements DialogInterface.OnClickListener {
         private static final String TAG = "UnifyWorkDialogFragment";
diff --git a/src/com/android/settings/notification/ZenAccessSettings.java b/src/com/android/settings/notification/ZenAccessSettings.java
index f9b1c12..a41a733 100644
--- a/src/com/android/settings/notification/ZenAccessSettings.java
+++ b/src/com/android/settings/notification/ZenAccessSettings.java
@@ -44,9 +44,11 @@
 import android.view.View;
 import android.widget.Toast;
 
+import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.settings.R;
 import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
+import com.android.settings.overlay.FeatureFactory;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -171,6 +173,7 @@
     }
 
     private static void setAccess(final Context context, final String pkg, final boolean access) {
+        logSpecialPermissionChange(access, pkg, context);
         AsyncTask.execute(new Runnable() {
             @Override
             public void run() {
@@ -180,6 +183,15 @@
         });
     }
 
+    @VisibleForTesting
+    static void logSpecialPermissionChange(boolean enable, String packageName, Context context) {
+        int logCategory = enable ? MetricsEvent.APP_SPECIAL_PERMISSION_DND_ALLOW
+                : MetricsEvent.APP_SPECIAL_PERMISSION_DND_DENY;
+        FeatureFactory.getFactory(context).getMetricsFeatureProvider().action(context,
+                logCategory, packageName);
+    }
+
+
     private static void deleteRules(final Context context, final String pkg) {
         AsyncTask.execute(new Runnable() {
             @Override
diff --git a/src/com/android/settings/overlay/FeatureFactory.java b/src/com/android/settings/overlay/FeatureFactory.java
index 8b6c3b1..5dd202e 100644
--- a/src/com/android/settings/overlay/FeatureFactory.java
+++ b/src/com/android/settings/overlay/FeatureFactory.java
@@ -24,6 +24,7 @@
 import com.android.settings.applications.ApplicationFeatureProvider;
 import com.android.settings.core.instrumentation.MetricsFeatureProvider;
 import com.android.settings.dashboard.DashboardFeatureProvider;
+import com.android.settings.dashboard.SuggestionFeatureProvider;
 import com.android.settings.enterprise.EnterprisePrivacyFeatureProvider;
 import com.android.settings.fuelgauge.PowerUsageFeatureProvider;
 import com.android.settings.localepicker.LocaleFeatureProvider;
@@ -67,6 +68,8 @@
         return sFactory;
     }
 
+    public abstract SuggestionFeatureProvider getSuggestionFeatureProvider();
+
     public abstract SupportFeatureProvider getSupportFeatureProvider(Context context);
 
     public abstract MetricsFeatureProvider getMetricsFeatureProvider();
diff --git a/src/com/android/settings/overlay/FeatureFactoryImpl.java b/src/com/android/settings/overlay/FeatureFactoryImpl.java
index 060b58c..c45bf0e 100644
--- a/src/com/android/settings/overlay/FeatureFactoryImpl.java
+++ b/src/com/android/settings/overlay/FeatureFactoryImpl.java
@@ -16,6 +16,7 @@
 
 package com.android.settings.overlay;
 
+import android.app.AppGlobals;
 import android.app.admin.DevicePolicyManager;
 import android.content.Context;
 import android.net.ConnectivityManager;
@@ -24,21 +25,24 @@
 
 import com.android.settings.applications.ApplicationFeatureProvider;
 import com.android.settings.applications.ApplicationFeatureProviderImpl;
+import com.android.settings.applications.IPackageManagerWrapperImpl;
 import com.android.settings.applications.PackageManagerWrapperImpl;
 import com.android.settings.core.instrumentation.MetricsFeatureProvider;
 import com.android.settings.core.instrumentation.MetricsFeatureProviderImpl;
 import com.android.settings.dashboard.DashboardFeatureProvider;
 import com.android.settings.dashboard.DashboardFeatureProviderImpl;
+import com.android.settings.dashboard.SuggestionFeatureProvider;
+import com.android.settings.dashboard.SuggestionFeatureProviderImpl;
 import com.android.settings.enterprise.DevicePolicyManagerWrapperImpl;
 import com.android.settings.enterprise.EnterprisePrivacyFeatureProvider;
 import com.android.settings.enterprise.EnterprisePrivacyFeatureProviderImpl;
 import com.android.settings.fuelgauge.PowerUsageFeatureProvider;
 import com.android.settings.localepicker.LocaleFeatureProvider;
 import com.android.settings.localepicker.LocaleFeatureProviderImpl;
-import com.android.settings.security.SecurityFeatureProvider;
-import com.android.settings.security.SecurityFeatureProviderImpl;
 import com.android.settings.search2.SearchFeatureProvider;
 import com.android.settings.search2.SearchFeatureProviderImpl;
+import com.android.settings.security.SecurityFeatureProvider;
+import com.android.settings.security.SecurityFeatureProviderImpl;
 import com.android.settings.vpn2.ConnectivityManagerWrapperImpl;
 
 /**
@@ -54,6 +58,7 @@
     private EnterprisePrivacyFeatureProvider mEnterprisePrivacyFeatureProvider;
     private SearchFeatureProvider mSearchFeatureProvider;
     private SecurityFeatureProvider mSecurityFeatureProvider;
+    private SuggestionFeatureProvider mSuggestionFeatureProvider;
 
     @Override
     public SupportFeatureProvider getSupportFeatureProvider(Context context) {
@@ -85,7 +90,10 @@
     public ApplicationFeatureProvider getApplicationFeatureProvider(Context context) {
         if (mApplicationFeatureProvider == null) {
             mApplicationFeatureProvider = new ApplicationFeatureProviderImpl(context,
-                    new PackageManagerWrapperImpl(context.getPackageManager()));
+                    new PackageManagerWrapperImpl(context.getPackageManager()),
+                    new IPackageManagerWrapperImpl(AppGlobals.getPackageManager()),
+                    new DevicePolicyManagerWrapperImpl((DevicePolicyManager) context
+                            .getSystemService(Context.DEVICE_POLICY_SERVICE)));
         }
         return mApplicationFeatureProvider;
     }
@@ -107,7 +115,8 @@
                     new PackageManagerWrapperImpl(context.getPackageManager()),
                     UserManager.get(context),
                     new ConnectivityManagerWrapperImpl((ConnectivityManager) context
-                            .getSystemService(Context.CONNECTIVITY_SERVICE)));
+                            .getSystemService(Context.CONNECTIVITY_SERVICE)),
+                    context.getResources());
         }
         return mEnterprisePrivacyFeatureProvider;
     }
@@ -132,4 +141,12 @@
         }
         return mSecurityFeatureProvider;
     }
+
+    @Override
+    public SuggestionFeatureProvider getSuggestionFeatureProvider() {
+        if (mSuggestionFeatureProvider == null) {
+            mSuggestionFeatureProvider = new SuggestionFeatureProviderImpl();
+        }
+        return mSuggestionFeatureProvider;
+    }
 }
diff --git a/src/com/android/settings/overlay/SurveyFeatureProvider.java b/src/com/android/settings/overlay/SurveyFeatureProvider.java
index 907bed8..416a602 100644
--- a/src/com/android/settings/overlay/SurveyFeatureProvider.java
+++ b/src/com/android/settings/overlay/SurveyFeatureProvider.java
@@ -20,6 +20,7 @@
 import android.content.Context;
 import android.content.IntentFilter;
 import android.support.annotation.Nullable;
+import android.support.v4.content.LocalBroadcastManager;
 
 /**
  * An interface for classes wishing to provide the ability to serve surveys to implement.
@@ -81,5 +82,11 @@
      * after a call to {@link #createAndRegisterReceiver(Activity)}.
      * @param activity The activity that was used to register the BroadcastReceiver.
      */
-    void unregisterReceiver(Activity activity, BroadcastReceiver receiver);
+    static void unregisterReceiver(Activity activity, BroadcastReceiver receiver) {
+        if (activity == null) {
+            throw new IllegalStateException("Cannot unregister receiver if activity is null");
+        }
+
+        LocalBroadcastManager.getInstance(activity).unregisterReceiver(receiver);
+    }
 }
diff --git a/src/com/android/settings/search/Index.java b/src/com/android/settings/search/Index.java
index cd6e562..b79a7f4 100644
--- a/src/com/android/settings/search/Index.java
+++ b/src/com/android/settings/search/Index.java
@@ -266,7 +266,7 @@
         StringBuilder sb = new StringBuilder();
 
         sb.append("SELECT ");
-        sb.append(IndexDatabaseHelper.SavedQueriesColums.QUERY);
+        sb.append(IndexDatabaseHelper.SavedQueriesColumns.QUERY);
         sb.append(" FROM ");
         sb.append(Tables.TABLE_SAVED_QUERIES);
 
@@ -274,7 +274,7 @@
             sb.append(" ORDER BY rowId DESC");
         } else {
             sb.append(" WHERE ");
-            sb.append(IndexDatabaseHelper.SavedQueriesColums.QUERY);
+            sb.append(IndexDatabaseHelper.SavedQueriesColumns.QUERY);
             sb.append(" LIKE ");
             sb.append("'");
             sb.append(query);
@@ -1299,8 +1299,8 @@
             final long now = new Date().getTime();
 
             final ContentValues values = new ContentValues();
-            values.put(IndexDatabaseHelper.SavedQueriesColums.QUERY, params[0]);
-            values.put(IndexDatabaseHelper.SavedQueriesColums.TIME_STAMP, now);
+            values.put(IndexDatabaseHelper.SavedQueriesColumns.QUERY, params[0]);
+            values.put(IndexDatabaseHelper.SavedQueriesColumns.TIME_STAMP, now);
 
             final SQLiteDatabase database = getWritableDatabase();
             if (database == null) {
@@ -1312,7 +1312,7 @@
             try {
                 // First, delete all saved queries that are the same
                 database.delete(Tables.TABLE_SAVED_QUERIES,
-                        IndexDatabaseHelper.SavedQueriesColums.QUERY + " = ?",
+                        IndexDatabaseHelper.SavedQueriesColumns.QUERY + " = ?",
                         new String[] { params[0] });
 
                 // Second, insert the saved query
diff --git a/src/com/android/settings/search/IndexDatabaseHelper.java b/src/com/android/settings/search/IndexDatabaseHelper.java
index fcf5e7c..60378c2 100644
--- a/src/com/android/settings/search/IndexDatabaseHelper.java
+++ b/src/com/android/settings/search/IndexDatabaseHelper.java
@@ -28,12 +28,13 @@
     private static final String TAG = "IndexDatabaseHelper";
 
     private static final String DATABASE_NAME = "search_index.db";
-    private static final int DATABASE_VERSION = 116;
+    private static final int DATABASE_VERSION = 117;
 
     private static final String INDEX = "index";
 
     public interface Tables {
         String TABLE_PREFS_INDEX = "prefs_index";
+        String TABLE_SITE_MAP = "site_map";
         String TABLE_META_INDEX = "meta_index";
         String TABLE_SAVED_QUERIES = "saved_queries";
     }
@@ -67,11 +68,19 @@
         String BUILD = "build";
     }
 
-    public interface SavedQueriesColums {
+    public interface SavedQueriesColumns {
         String QUERY = "query";
         String TIME_STAMP = "timestamp";
     }
 
+    public interface SiteMapColumns {
+        String DOCID = "docid";
+        String PARENT_CLASS = "parent_class";
+        String CHILD_CLASS = "child_class";
+        String PARENT_TITLE = "parent_title";
+        String CHILD_TITLE = "child_title";
+    }
+
     private static final String CREATE_INDEX_TABLE =
             "CREATE VIRTUAL TABLE " + Tables.TABLE_PREFS_INDEX + " USING fts4" +
                     "(" +
@@ -127,11 +136,22 @@
     private static final String CREATE_SAVED_QUERIES_TABLE =
             "CREATE TABLE " + Tables.TABLE_SAVED_QUERIES +
                     "(" +
-                    SavedQueriesColums.QUERY + " VARCHAR(64) NOT NULL" +
+                    SavedQueriesColumns.QUERY + " VARCHAR(64) NOT NULL" +
                     ", " +
-                    SavedQueriesColums.TIME_STAMP + " INTEGER" +
+                    SavedQueriesColumns.TIME_STAMP + " INTEGER" +
                     ")";
 
+    private static final String CREATE_SITE_MAP_TABLE =
+            "CREATE VIRTUAL TABLE " + Tables.TABLE_SITE_MAP + " USING fts4" +
+                    "(" +
+                    SiteMapColumns.PARENT_CLASS +
+                    ", " +
+                    SiteMapColumns.CHILD_CLASS +
+                    ", " +
+                    SiteMapColumns.PARENT_TITLE +
+                    ", " +
+                    SiteMapColumns.CHILD_TITLE +
+                    ")";
     private static final String INSERT_BUILD_VERSION =
             "INSERT INTO " + Tables.TABLE_META_INDEX +
                     " VALUES ('" + Build.VERSION.INCREMENTAL + "');";
@@ -164,6 +184,7 @@
         db.execSQL(CREATE_INDEX_TABLE);
         db.execSQL(CREATE_META_TABLE);
         db.execSQL(CREATE_SAVED_QUERIES_TABLE);
+        db.execSQL(CREATE_SITE_MAP_TABLE);
         db.execSQL(INSERT_BUILD_VERSION);
         Log.i(TAG, "Bootstrapped database");
     }
@@ -201,7 +222,7 @@
         reconstruct(db);
     }
 
-    private void reconstruct(SQLiteDatabase db) {
+    public void reconstruct(SQLiteDatabase db) {
         dropTables(db);
         bootstrapDB(db);
     }
@@ -241,5 +262,6 @@
         db.execSQL("DROP TABLE IF EXISTS " + Tables.TABLE_META_INDEX);
         db.execSQL("DROP TABLE IF EXISTS " + Tables.TABLE_PREFS_INDEX);
         db.execSQL("DROP TABLE IF EXISTS " + Tables.TABLE_SAVED_QUERIES);
+        db.execSQL("DROP TABLE IF EXISTS " + Tables.TABLE_SITE_MAP);
     }
 }
diff --git a/src/com/android/settings/search/SearchIndexableResources.java b/src/com/android/settings/search/SearchIndexableResources.java
index 8a158cd..aa3c257 100644
--- a/src/com/android/settings/search/SearchIndexableResources.java
+++ b/src/com/android/settings/search/SearchIndexableResources.java
@@ -20,7 +20,6 @@
 import android.support.annotation.DrawableRes;
 import android.support.annotation.VisibleForTesting;
 import android.support.annotation.XmlRes;
-
 import com.android.settings.DateTimeSettings;
 import com.android.settings.DevelopmentSettings;
 import com.android.settings.DeviceInfoSettings;
@@ -47,6 +46,7 @@
 import com.android.settings.display.ScreenZoomSettings;
 import com.android.settings.enterprise.EnterprisePrivacySettings;
 import com.android.settings.fuelgauge.BatterySaverSettings;
+import com.android.settings.fuelgauge.PowerUsageDetail;
 import com.android.settings.fuelgauge.PowerUsageSummary;
 import com.android.settings.gestures.DoubleTapPowerSettings;
 import com.android.settings.gestures.DoubleTapScreenSettings;
@@ -55,6 +55,7 @@
 import com.android.settings.gestures.PickupGestureSettings;
 import com.android.settings.gestures.SwipeToNotificationSettings;
 import com.android.settings.inputmethod.AvailableVirtualKeyboardFragment;
+import com.android.settings.inputmethod.InputAndGestureSettings;
 import com.android.settings.inputmethod.InputMethodAndLanguageSettings;
 import com.android.settings.inputmethod.PhysicalKeyboardFragment;
 import com.android.settings.inputmethod.VirtualKeyboardFragment;
@@ -71,6 +72,8 @@
 import com.android.settings.print.PrintSettingsFragment;
 import com.android.settings.sim.SimSettings;
 import com.android.settings.system.SystemDashboardFragment;
+import com.android.settings.tts.TtsEnginePreferenceFragment;
+import com.android.settings.tts.TtsSlidersFragment;
 import com.android.settings.users.UserSettings;
 import com.android.settings.wifi.AdvancedWifiSettings;
 import com.android.settings.wifi.ConfigureWifiSettings;
@@ -85,7 +88,8 @@
     @XmlRes
     public static final int NO_DATA_RES_ID = 0;
 
-    private static final HashMap<String, SearchIndexableResource> sResMap = new HashMap<>();
+    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    static final HashMap<String, SearchIndexableResource> sResMap = new HashMap<>();
 
     @VisibleForTesting
     static void addIndex(Class<?> indexClass, @XmlRes int xmlResId,
@@ -123,6 +127,7 @@
         addIndex(StorageSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_storage);
         addIndex(PowerUsageSummary.class,
                 R.xml.power_usage_summary, R.drawable.ic_settings_battery);
+        addIndex(PowerUsageDetail.class, NO_DATA_RES_ID, R.drawable.ic_settings_battery);
         addIndex(BatterySaverSettings.class,
                 R.xml.battery_saver_settings, R.drawable.ic_settings_battery);
         addIndex(AdvancedAppSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_applications);
@@ -136,6 +141,7 @@
         addIndex(DoubleTwistGestureSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_gestures);
         addIndex(SwipeToNotificationSettings.class, NO_DATA_RES_ID,
                 R.drawable.ic_settings_gestures);
+        addIndex(InputAndGestureSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_language);
         addIndex(LocationSettings.class, R.xml.location_settings, R.drawable.ic_settings_location);
         addIndex(ScanningSettings.class, R.xml.location_scanning, R.drawable.ic_settings_location);
         addIndex(SecuritySettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_security);
@@ -164,6 +170,9 @@
         addIndex(ConnectedDeviceDashboardFragment.class, NO_DATA_RES_ID, R.drawable.ic_bt_laptop);
         addIndex(EnterprisePrivacySettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_about);
         addIndex(PaymentSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_nfc_payment);
+        addIndex(
+                TtsEnginePreferenceFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_language);
+        addIndex(TtsSlidersFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_language);
     }
 
     private SearchIndexableResources() {
diff --git a/src/com/android/settings/search/SettingsSearchIndexablesProvider.java b/src/com/android/settings/search/SettingsSearchIndexablesProvider.java
index b2be146..b83f9fd 100644
--- a/src/com/android/settings/search/SettingsSearchIndexablesProvider.java
+++ b/src/com/android/settings/search/SettingsSearchIndexablesProvider.java
@@ -16,13 +16,20 @@
 
 package com.android.settings.search;
 
+import android.content.Context;
 import android.database.Cursor;
 import android.database.MatrixCursor;
 import android.provider.SearchIndexableResource;
 import android.provider.SearchIndexablesProvider;
+import android.util.Log;
+
+import com.android.settings.search2.DatabaseIndexingUtils;
 
 import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
 
+import static android.provider.SearchIndexablesContract.COLUMN_INDEX_NON_INDEXABLE_KEYS_KEY_VALUE;
 import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_CLASS_NAME;
 import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_ICON_RESID;
 import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_INTENT_ACTION;
@@ -35,7 +42,7 @@
 import static android.provider.SearchIndexablesContract.NON_INDEXABLES_KEYS_COLUMNS;
 
 public class SettingsSearchIndexablesProvider extends SearchIndexablesProvider {
-    private static final String TAG = "SettingsSearchIndexablesProvider";
+    private static final String TAG = "SettingsSearchProvider";
 
     @Override
     public boolean onCreate() {
@@ -47,7 +54,7 @@
         MatrixCursor cursor = new MatrixCursor(INDEXABLES_XML_RES_COLUMNS);
         Collection<SearchIndexableResource> values = SearchIndexableResources.values();
         for (SearchIndexableResource val : values) {
-            Object[] ref = new Object[7];
+            Object[] ref = new Object[INDEXABLES_XML_RES_COLUMNS.length];
             ref[COLUMN_INDEX_XML_RES_RANK] = val.rank;
             ref[COLUMN_INDEX_XML_RES_RESID] = val.xmlResId;
             ref[COLUMN_INDEX_XML_RES_CLASS_NAME] = val.className;
@@ -66,9 +73,45 @@
         return result;
     }
 
+    /**
+     * Gets a combined list non-indexable keys that come from providers inside of settings.
+     * The non-indexable keys are used in Settings search at both index and update time to verify
+     * the validity of results in the database.
+     */
     @Override
     public Cursor queryNonIndexableKeys(String[] projection) {
         MatrixCursor cursor = new MatrixCursor(NON_INDEXABLES_KEYS_COLUMNS);
+        final Collection<String> values = new HashSet<>();
+        final Context context = getContext();
+
+        for (SearchIndexableResource sir : SearchIndexableResources.values()) {
+            final Class<?> clazz = DatabaseIndexingUtils.getIndexableClass(sir.className);
+            if (clazz == null) {
+                Log.d(TAG, "SearchIndexableResource '" + sir.className +
+                        "' should implement the " + Indexable.class.getName() + " interface!");
+                continue;
+            }
+
+            final Indexable.SearchIndexProvider provider =
+                    DatabaseIndexingUtils.getSearchIndexProvider(clazz);
+
+            if (provider == null) {
+                Log.d(TAG, "Unable to get SearchIndexableProvider from " +
+                        Indexable.class.getName());
+                continue;
+            }
+
+            List<String> providerNonIndexableKeys = provider.getNonIndexableKeys(context);
+            if (providerNonIndexableKeys != null && providerNonIndexableKeys.size() > 0) {
+                values.addAll(providerNonIndexableKeys);
+            }
+        }
+
+        for (String nik : values) {
+            final Object[] ref = new Object[NON_INDEXABLES_KEYS_COLUMNS.length];
+            ref[COLUMN_INDEX_NON_INDEXABLE_KEYS_KEY_VALUE] = nik;
+            cursor.addRow(ref);
+        }
         return cursor;
     }
 }
diff --git a/src/com/android/settings/search2/CursorToSearchResultConverter.java b/src/com/android/settings/search2/CursorToSearchResultConverter.java
index 540932c..6549c18 100644
--- a/src/com/android/settings/search2/CursorToSearchResultConverter.java
+++ b/src/com/android/settings/search2/CursorToSearchResultConverter.java
@@ -28,8 +28,10 @@
 import android.os.Bundle;
 import android.text.TextUtils;
 import android.util.Log;
+
 import com.android.settings.SettingsActivity;
 import com.android.settings.Utils;
+import com.android.settings.dashboard.SiteMapManager;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -39,18 +41,20 @@
 import java.util.Map;
 import java.util.Set;
 
-import static com.android.settings.search2.DatabaseResultLoader.COLUMN_INDEX_ID;
-import static com.android.settings.search2.DatabaseResultLoader.COLUMN_INDEX_INTENT_ACTION_TARGET_CLASS;
-import static com.android.settings.search2.DatabaseResultLoader.COLUMN_INDEX_SCREEN_TITLE;
-import static com.android.settings.search2.DatabaseResultLoader.COLUMN_INDEX_TITLE;
-import static com.android.settings.search2.DatabaseResultLoader.COLUMN_INDEX_SUMMARY_ON;
 import static com.android.settings.search2.DatabaseResultLoader.COLUMN_INDEX_CLASS_NAME;
 import static com.android.settings.search2.DatabaseResultLoader.COLUMN_INDEX_ICON;
+import static com.android.settings.search2.DatabaseResultLoader.COLUMN_INDEX_ID;
 import static com.android.settings.search2.DatabaseResultLoader.COLUMN_INDEX_INTENT_ACTION;
-import static com.android.settings.search2.DatabaseResultLoader.COLUMN_INDEX_INTENT_ACTION_TARGET_PACKAGE;
+import static com.android.settings.search2.DatabaseResultLoader
+        .COLUMN_INDEX_INTENT_ACTION_TARGET_CLASS;
+import static com.android.settings.search2.DatabaseResultLoader
+        .COLUMN_INDEX_INTENT_ACTION_TARGET_PACKAGE;
 import static com.android.settings.search2.DatabaseResultLoader.COLUMN_INDEX_KEY;
-import static com.android.settings.search2.DatabaseResultLoader.COLUMN_INDEX_PAYLOAD_TYPE;
 import static com.android.settings.search2.DatabaseResultLoader.COLUMN_INDEX_PAYLOAD;
+import static com.android.settings.search2.DatabaseResultLoader.COLUMN_INDEX_PAYLOAD_TYPE;
+import static com.android.settings.search2.DatabaseResultLoader.COLUMN_INDEX_SCREEN_TITLE;
+import static com.android.settings.search2.DatabaseResultLoader.COLUMN_INDEX_SUMMARY_ON;
+import static com.android.settings.search2.DatabaseResultLoader.COLUMN_INDEX_TITLE;
 
 /**
  * Controller to Build search results from {@link Cursor} Objects.
@@ -78,7 +82,8 @@
         mQueryText = queryText;
     }
 
-    public List<SearchResult> convertCursor(Cursor cursorResults, int baseRank) {
+    public List<SearchResult> convertCursor(SiteMapManager sitemapManager,
+            Cursor cursorResults, int baseRank) {
         if (cursorResults == null) {
             return null;
         }
@@ -86,8 +91,8 @@
         final List<SearchResult> results = new ArrayList<>();
 
         while (cursorResults.moveToNext()) {
-            SearchResult result = buildSingleSearchResultFromCursor(contextMap, cursorResults,
-                    baseRank);
+            SearchResult result = buildSingleSearchResultFromCursor(sitemapManager,
+                    contextMap, cursorResults, baseRank);
             if (result != null) {
                 results.add(result);
             }
@@ -96,8 +101,8 @@
         return results;
     }
 
-    private SearchResult buildSingleSearchResultFromCursor(Map<String, Context> contextMap,
-            Cursor cursor, int baseRank) {
+    private SearchResult buildSingleSearchResultFromCursor(SiteMapManager sitemapManager,
+            Map<String, Context> contextMap, Cursor cursor, int baseRank) {
         final String docId = cursor.getString(COLUMN_INDEX_ID);
         /* Make sure that this result has not yet been added as a result. Checking the docID
            covers the case of multiple queries matching the same row, but we need to also to check
@@ -128,7 +133,7 @@
             return null;
         }
 
-        final List<String> breadcrumbs = getBreadcrumbs(cursor);
+        final List<String> breadcrumbs = getBreadcrumbs(sitemapManager, cursor);
         final int rank = getRank(breadcrumbs, baseRank);
 
         final SearchResult.Builder builder = new SearchResult.Builder();
@@ -210,8 +215,12 @@
         return null;
     }
 
-    private List<String> getBreadcrumbs(Cursor cursor) {
-        return new ArrayList<>();
+    private List<String> getBreadcrumbs(SiteMapManager siteMapManager, Cursor cursor) {
+        final String screenTitle = cursor.getString(COLUMN_INDEX_SCREEN_TITLE);
+        final String screenClass = cursor.getString(COLUMN_INDEX_CLASS_NAME);
+        final List<String> breadcrumbs = siteMapManager.buildBreadCrumb(mContext, screenClass,
+                screenTitle);
+        return breadcrumbs;
     }
 
     /** Uses the breadcrumbs to determine the offset to the base rank.
diff --git a/src/com/android/settings/search2/DatabaseIndexingManager.java b/src/com/android/settings/search2/DatabaseIndexingManager.java
index e29ffeb..d7c8746 100644
--- a/src/com/android/settings/search2/DatabaseIndexingManager.java
+++ b/src/com/android/settings/search2/DatabaseIndexingManager.java
@@ -34,7 +34,6 @@
 import android.provider.SearchIndexableResource;
 import android.provider.SearchIndexablesContract;
 import android.text.TextUtils;
-import android.util.ArrayMap;
 import android.util.AttributeSet;
 import android.util.Log;
 import android.util.Xml;
@@ -56,6 +55,7 @@
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Objects;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 import static android.provider.SearchIndexablesContract.COLUMN_INDEX_NON_INDEXABLE_KEYS_KEY_VALUE;
@@ -152,7 +152,7 @@
         return mIsAvailable.get();
     }
 
-    public void update() {
+    public void indexDatabase() {
         AsyncTask.execute(new Runnable() {
             @Override
             public void run() {
@@ -279,7 +279,7 @@
      * @param className the class name (typically a fragment name).
      * @param rebuild true means that you want to delete the data from the Index first.
      * @param includeInSearchResults true means that you want the bit "enabled" set so that the
-     *                               data will be seen included into the search results
+     * data will be seen included into the search results
      */
     public void updateFromClassNameResource(String className, final boolean rebuild,
             boolean includeInSearchResults) {
@@ -287,7 +287,7 @@
             throw new IllegalArgumentException("class name cannot be null!");
         }
         final SearchIndexableResource res = SearchIndexableResources.getResourceByName(className);
-        if (res == null ) {
+        if (res == null) {
             Log.e(LOG_TAG, "Cannot find SearchIndexableResources for class name: " + className);
             return;
         }
@@ -516,10 +516,7 @@
                 nonIndexableKeys.addAll(resNonIndxableKeys);
             }
 
-            indexFromResource(sir.context, database, localeStr,
-                    sir.xmlResId, sir.className, sir.iconResId, sir.rank,
-                    sir.intentAction, sir.intentTargetPackage, sir.intentTargetClass,
-                    nonIndexableKeys);
+            indexFromResource(database, localeStr, sir, nonIndexableKeys);
         } else {
             if (TextUtils.isEmpty(sir.className)) {
                 Log.w(LOG_TAG, "Cannot index an empty Search Provider name!");
@@ -543,20 +540,17 @@
                     nonIndexableKeys.addAll(providerNonIndexableKeys);
                 }
 
-                indexFromProvider(mContext, database, localeStr, provider, sir.className,
-                        sir.iconResId, sir.rank, sir.enabled, nonIndexableKeys);
+                indexFromProvider(database, localeStr, provider, sir, nonIndexableKeys);
             }
         }
     }
 
-    private void indexFromResource(Context context, SQLiteDatabase database, String localeStr,
-            int xmlResId, String fragmentName, int iconResId, int rank,
-            String intentAction, String intentTargetPackage, String intentTargetClass,
-            List<String> nonIndexableKeys) {
-
+    private void indexFromResource(SQLiteDatabase database, String localeStr,
+            SearchIndexableResource sir, List<String> nonIndexableKeys) {
+        final Context context = sir.context;
         XmlResourceParser parser = null;
         try {
-            parser = context.getResources().getXml(xmlResId);
+            parser = context.getResources().getXml(sir.xmlResId);
 
             int type;
             while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
@@ -581,39 +575,47 @@
             String title;
             String summary;
             String keywords;
+            String childFragment;
             ResultPayload payload;
+            boolean enabled;
+            final String fragmentName = sir.className;
+            final int iconResId = sir.iconResId;
+            final int rank = sir.rank;
+            final String intentAction = sir.intentAction;
+            final String intentTargetPackage = sir.intentTargetPackage;
+            final String intentTargetClass = sir.intentTargetClass;
 
-            ArrayMap<String, PreferenceController> controllerUriMap = null;
+            Map<String, PreferenceController> controllerUriMap = null;
 
             if (fragmentName != null) {
-                controllerUriMap = (ArrayMap) DatabaseIndexingUtils
+                controllerUriMap = DatabaseIndexingUtils
                         .getPreferenceControllerUriMap(fragmentName, context);
             }
 
             // Insert rows for the main PreferenceScreen node. Rewrite the data for removing
             // hyphens.
-            if (!nonIndexableKeys.contains(key)) {
-                title = XmlParserUtils.getDataTitle(context, attrs);
-                summary = XmlParserUtils.getDataSummary(context, attrs);
-                keywords = XmlParserUtils.getDataKeywords(context, attrs);
 
-                DatabaseRow.Builder builder = new DatabaseRow.Builder();
-                builder.setLocale(localeStr)
-                        .setEntries(null)
-                        .setClassName(fragmentName)
-                        .setScreenTitle(screenTitle)
-                        .setIconResId(iconResId)
-                        .setRank(rank)
-                        .setIntentAction(intentAction)
-                        .setIntentTargetPackage(intentTargetPackage)
-                        .setIntentTargetClass(intentTargetClass)
-                        .setEnabled(true)
-                        .setKey(key)
-                        .setUserId(-1 /* default user id */);
+            title = XmlParserUtils.getDataTitle(context, attrs);
+            summary = XmlParserUtils.getDataSummary(context, attrs);
+            keywords = XmlParserUtils.getDataKeywords(context, attrs);
+            enabled = !nonIndexableKeys.contains(key);
 
-                updateOneRowWithFilteredData(database, builder, title, summary,
-                        null /* summary off */, keywords);
-            }
+            DatabaseRow.Builder builder = new DatabaseRow.Builder();
+            builder.setLocale(localeStr)
+                    .setEntries(null)
+                    .setClassName(fragmentName)
+                    .setScreenTitle(screenTitle)
+                    .setIconResId(iconResId)
+                    .setRank(rank)
+                    .setIntentAction(intentAction)
+                    .setIntentTargetPackage(intentTargetPackage)
+                    .setIntentTargetClass(intentTargetClass)
+                    .setEnabled(enabled)
+                    .setKey(key)
+                    .setUserId(-1 /* default user id */);
+
+            updateOneRowWithFilteredData(database, builder, title, summary,
+                    null /* summary off */, keywords);
 
             while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
                     && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) {
@@ -624,14 +626,11 @@
                 nodeName = parser.getName();
 
                 key = XmlParserUtils.getDataKey(context, attrs);
-                if (nonIndexableKeys.contains(key)) {
-                    continue;
-                }
-
+                enabled = ! nonIndexableKeys.contains(key);
                 title = XmlParserUtils.getDataTitle(context, attrs);
                 keywords = XmlParserUtils.getDataKeywords(context, attrs);
 
-                DatabaseRow.Builder builder = new DatabaseRow.Builder();
+                builder = new DatabaseRow.Builder();
                 builder.setLocale(localeStr)
                         .setClassName(fragmentName)
                         .setScreenTitle(screenTitle)
@@ -640,7 +639,7 @@
                         .setIntentAction(intentAction)
                         .setIntentTargetPackage(intentTargetPackage)
                         .setIntentTargetClass(intentTargetClass)
-                        .setEnabled(true)
+                        .setEnabled(enabled)
                         .setKey(key)
                         .setUserId(-1 /* default user id */);
 
@@ -654,8 +653,10 @@
                     }
 
                     payload = DatabaseIndexingUtils.getPayloadFromUriMap(controllerUriMap, key);
+                    childFragment = XmlParserUtils.getDataChildFragment(context, attrs);
 
                     builder.setEntries(entries)
+                            .setChildClassName(childFragment)
                             .setPayload(payload);
 
                     // Insert rows for the child nodes of PreferenceScreen
@@ -682,16 +683,21 @@
         }
     }
 
-    private void indexFromProvider(Context context, SQLiteDatabase database, String localeStr,
-            Indexable.SearchIndexProvider provider, String className, int iconResId, int rank,
-            boolean enabled, List<String> nonIndexableKeys) {
+    private void indexFromProvider(SQLiteDatabase database, String localeStr,
+            Indexable.SearchIndexProvider provider, SearchIndexableResource sir,
+            List<String> nonIndexableKeys) {
+
+        final String className = sir.className;
+        final int iconResId = sir.iconResId;
+        final int rank = sir.rank;
 
         if (provider == null) {
             Log.w(LOG_TAG, "Cannot find provider: " + className);
             return;
         }
 
-        final List<SearchIndexableRaw> rawList = provider.getRawDataToIndex(context, enabled);
+        final List<SearchIndexableRaw> rawList = provider.getRawDataToIndex(mContext,
+                true /* enabled */);
 
         if (rawList != null) {
 
@@ -703,10 +709,7 @@
                 if (!raw.locale.toString().equalsIgnoreCase(localeStr)) {
                     continue;
                 }
-
-                if (nonIndexableKeys.contains(raw.key)) {
-                    continue;
-                }
+                boolean enabled = !nonIndexableKeys.contains(raw.key);
 
                 DatabaseRow.Builder builder = new DatabaseRow.Builder();
                 builder.setLocale(localeStr)
@@ -718,7 +721,7 @@
                         .setIntentAction(raw.intentAction)
                         .setIntentTargetPackage(raw.intentTargetPackage)
                         .setIntentTargetClass(raw.intentTargetClass)
-                        .setEnabled(raw.enabled)
+                        .setEnabled(enabled)
                         .setKey(raw.key)
                         .setUserId(raw.userId);
 
@@ -728,7 +731,7 @@
         }
 
         final List<SearchIndexableResource> resList =
-                provider.getXmlResourcesToIndex(context, enabled);
+                provider.getXmlResourcesToIndex(mContext, true);
         if (resList != null) {
             final int resSize = resList.size();
             for (int i = 0; i < resSize; i++) {
@@ -739,21 +742,16 @@
                     continue;
                 }
 
-                final int itemIconResId = (item.iconResId == 0) ? iconResId : item.iconResId;
-                final int itemRank = (item.rank == 0) ? rank : item.rank;
-                String itemClassName = (TextUtils.isEmpty(item.className))
-                        ? className : item.className;
+                item.iconResId = (item.iconResId == 0) ? iconResId : item.iconResId;
+                item.className = (TextUtils.isEmpty(item.className)) ? className : item.className;
 
-                indexFromResource(context, database, localeStr,
-                        item.xmlResId, itemClassName, itemIconResId, itemRank,
-                        item.intentAction, item.intentTargetPackage,
-                        item.intentTargetClass, nonIndexableKeys);
+                indexFromResource(database, localeStr, item, nonIndexableKeys);
             }
         }
     }
 
     private void updateOneRowWithFilteredData(SQLiteDatabase database, DatabaseRow.Builder builder,
-            String title, String summaryOn, String summaryOff,String keywords) {
+            String title, String summaryOn, String summaryOff, String keywords) {
 
         final String updatedTitle = DatabaseIndexingUtils.normalizeHyphen(title);
         final String updatedSummaryOn = DatabaseIndexingUtils.normalizeHyphen(summaryOn);
@@ -783,14 +781,8 @@
             return;
         }
 
-        // The DocID should contains more than the title string itself (you may have two settings
-        // with the same title). So we need to use a combination of the title and the screenTitle.
-        StringBuilder sb = new StringBuilder(row.updatedTitle);
-        sb.append(row.screenTitle);
-        int docId = sb.toString().hashCode();
-
         ContentValues values = new ContentValues();
-        values.put(IndexDatabaseHelper.IndexColumns.DOCID, docId);
+        values.put(IndexDatabaseHelper.IndexColumns.DOCID, row.getDocId());
         values.put(IndexDatabaseHelper.IndexColumns.LOCALE, row.locale);
         values.put(IndexDatabaseHelper.IndexColumns.DATA_RANK, row.rank);
         values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE, row.updatedTitle);
@@ -816,6 +808,18 @@
         values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD, row.payload);
 
         database.replaceOrThrow(IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX, null, values);
+
+        if (!TextUtils.isEmpty(row.className) && !TextUtils.isEmpty(row.childClassName)) {
+            ContentValues siteMapPair = new ContentValues();
+            final int pairDocId = Objects.hash(row.className, row.childClassName);
+            siteMapPair.put(IndexDatabaseHelper.SiteMapColumns.DOCID, pairDocId);
+            siteMapPair.put(IndexDatabaseHelper.SiteMapColumns.PARENT_CLASS, row.className);
+            siteMapPair.put(IndexDatabaseHelper.SiteMapColumns.PARENT_TITLE, row.screenTitle);
+            siteMapPair.put(IndexDatabaseHelper.SiteMapColumns.CHILD_CLASS, row.childClassName);
+            siteMapPair.put(IndexDatabaseHelper.SiteMapColumns.CHILD_TITLE, row.updatedTitle);
+
+            database.replaceOrThrow(IndexDatabaseHelper.Tables.TABLE_SITE_MAP, null, siteMapPair);
+        }
     }
 
     /**
@@ -919,7 +923,7 @@
                 }
                 if (!TextUtils.isEmpty(data.className)) {
                     delete(database, IndexDatabaseHelper.IndexColumns.CLASS_NAME, data.className);
-                } else  {
+                } else {
                     if (data instanceof SearchIndexableRaw) {
                         final SearchIndexableRaw raw = (SearchIndexableRaw) data;
                         if (!TextUtils.isEmpty(raw.title)) {
@@ -938,7 +942,7 @@
 
         private int delete(SQLiteDatabase database, String columName, String value) {
             final String whereClause = columName + "=?";
-            final String[] whereArgs = new String[] { value };
+            final String[] whereArgs = new String[]{value};
 
             return database.delete(IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX, whereClause,
                     whereArgs);
@@ -955,6 +959,7 @@
         public final String normalizedSummaryOff;
         public final String entries;
         public final String className;
+        public final String childClassName;
         public final String screenTitle;
         public final int iconResId;
         public final int rank;
@@ -978,6 +983,7 @@
             normalizedSummaryOff = builder.mNormalizedSummaryOff;
             entries = builder.mEntries;
             className = builder.mClassName;
+            childClassName = builder.mChildClassName;
             screenTitle = builder.mScreenTitle;
             iconResId = builder.mIconResId;
             rank = builder.mRank;
@@ -993,6 +999,16 @@
                     : null;
         }
 
+        /**
+         * Returns the doc id for this row.
+         */
+        public int getDocId() {
+            // The DocID should contains more than the title string itself (you may have two
+            // settings with the same title). So we need to use a combination of multiple
+            // attributes from this row.
+            return Objects.hash(updatedTitle, screenTitle, key, payloadType);
+        }
+
         public static class Builder {
             private String mLocale;
             private String mUpdatedTitle;
@@ -1003,6 +1019,7 @@
             private String mNormalizedSummaryOff;
             private String mEntries;
             private String mClassName;
+            private String mChildClassName;
             private String mScreenTitle;
             private int mIconResId;
             private int mRank;
@@ -1013,7 +1030,8 @@
             private boolean mEnabled;
             private String mKey;
             private int mUserId;
-            @ResultPayload.PayloadType private int mPayloadType;
+            @ResultPayload.PayloadType
+            private int mPayloadType;
             private ResultPayload mPayload;
 
             public Builder setLocale(String locale) {
@@ -1061,6 +1079,11 @@
                 return this;
             }
 
+            public Builder setChildClassName(String childClassName) {
+                mChildClassName = childClassName;
+                return this;
+            }
+
             public Builder setScreenTitle(String screenTitle) {
                 mScreenTitle = screenTitle;
                 return this;
@@ -1114,7 +1137,7 @@
             public Builder setPayload(ResultPayload payload) {
                 mPayload = payload;
 
-                if(mPayload != null) {
+                if (mPayload != null) {
                     setPayloadType(mPayload.getType());
                 }
                 return this;
@@ -1122,6 +1145,7 @@
 
             /**
              * Payload type is added when a Payload is added to the Builder in {setPayload}
+             *
              * @param payloadType PayloadType
              * @return The Builder
              */
@@ -1135,4 +1159,4 @@
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/src/com/android/settings/search2/DatabaseIndexingUtils.java b/src/com/android/settings/search2/DatabaseIndexingUtils.java
index 9fdf732..bd06ef3 100644
--- a/src/com/android/settings/search2/DatabaseIndexingUtils.java
+++ b/src/com/android/settings/search2/DatabaseIndexingUtils.java
@@ -105,7 +105,7 @@
      * @return The Payload from the {@link PreferenceController} specified by the key, if it exists.
      * Otherwise null.
      */
-    public static ResultPayload getPayloadFromUriMap(ArrayMap<String, PreferenceController> uriMap,
+    public static ResultPayload getPayloadFromUriMap(Map<String, PreferenceController> uriMap,
             String key) {
         if (uriMap == null) {
             return null;
diff --git a/src/com/android/settings/search2/DatabaseResultLoader.java b/src/com/android/settings/search2/DatabaseResultLoader.java
index f7acd25..1f032a0 100644
--- a/src/com/android/settings/search2/DatabaseResultLoader.java
+++ b/src/com/android/settings/search2/DatabaseResultLoader.java
@@ -20,6 +20,9 @@
 import android.database.Cursor;
 import android.database.sqlite.SQLiteDatabase;
 
+import android.text.TextUtils;
+import com.android.settings.dashboard.SiteMapManager;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.search.IndexDatabaseHelper;
 import com.android.settings.utils.AsyncLoader;
 
@@ -35,11 +38,6 @@
  */
 public class DatabaseResultLoader extends AsyncLoader<List<SearchResult>> {
     private static final String LOG = "DatabaseResultLoader";
-    private final String mQueryText;
-
-    protected final SQLiteDatabase mDatabase;
-
-    private final CursorToSearchResultConverter mConverter;
 
     /* These indices are used to match the columns of the this loader's SELECT statement.
      These are not necessarily the same order nor similar coverage as the schema defined in
@@ -99,8 +97,15 @@
      */
     private static final int[] BASE_RANKS = {1, 4, 7};
 
+    private final String mQueryText;
+    private final SQLiteDatabase mDatabase;
+    private final CursorToSearchResultConverter mConverter;
+    private final SiteMapManager mSiteMapManager;
+
     public DatabaseResultLoader(Context context, String queryText) {
         super(context);
+        mSiteMapManager = FeatureFactory.getFactory(context)
+                .getSearchFeatureProvider().getSiteMapManager();
         mDatabase = IndexDatabaseHelper.getInstance(context).getReadableDatabase();
         mQueryText = cleanQuery(queryText);
         mConverter = new CursorToSearchResultConverter(context, mQueryText);
@@ -125,7 +130,6 @@
         secondaryResults = query(MATCH_COLUMNS_SECONDARY, BASE_RANKS[1]);
         tertiaryResults = query(MATCH_COLUMNS_TERTIARY, BASE_RANKS[2]);
 
-
         final List<SearchResult> results = new ArrayList<>(primaryResults.size()
                 + secondaryResults.size()
                 + tertiaryResults.size());
@@ -138,13 +142,11 @@
 
     private List<SearchResult> query(String[] matchColumns, int baseRank) {
         final String whereClause = buildWhereClause(matchColumns);
-        final String[] selection = new String[matchColumns.length];
-        final String query = "%" + mQueryText + "%";
-        Arrays.fill(selection, query);
+        final String[] selection = buildQuerySelection(matchColumns.length * 2);
 
         final Cursor resultCursor = mDatabase.query(TABLE_PREFS_INDEX, SELECT_COLUMNS, whereClause,
                 selection, null, null, null);
-        return mConverter.convertCursor(resultCursor, baseRank);
+        return mConverter.convertCursor(mSiteMapManager, resultCursor, baseRank);
     }
 
     @Override
@@ -155,22 +157,48 @@
 
     /**
      * A generic method to make the query suitable for searching the database.
+     *
      * @return the cleaned query string
      */
     private static String cleanQuery(String query) {
+        if (TextUtils.isEmpty(query)) {
+            return null;
+        }
         return query.trim();
     }
 
     private static String buildWhereClause(String[] matchColumns) {
-        StringBuilder sb = new StringBuilder(" ");
+        StringBuilder sb = new StringBuilder(" (");
         final int count = matchColumns.length;
         for (int n = 0; n < count; n++) {
             sb.append(matchColumns[n]);
+            sb.append(" like ? OR ");
+            sb.append(matchColumns[n]);
             sb.append(" like ?");
             if (n < count - 1) {
                 sb.append(" OR ");
             }
         }
+        sb.append(") AND enabled = 1");
         return sb.toString();
     }
+
+    /**
+     * Fills out the selection array to match the query as the prefix of a word.
+     *
+     * @param size is twice the number of columns to be matched. The first match is for the prefix
+     *             of the first word in the column. The second match is for any subsequent word
+     *             prefix match.
+     */
+    private String[] buildQuerySelection(int size) {
+        String[] selection = new String[size];
+        final String query = mQueryText + "%";
+        final String subStringQuery = "% " + mQueryText + "%";
+
+        for(int i = 0; i < (size - 1); i += 2) {
+            selection[i] = query;
+            selection[i + 1] = subStringQuery;
+        }
+        return selection;
+    }
 }
diff --git a/src/com/android/settings/search2/InlineSwitchViewHolder.java b/src/com/android/settings/search2/InlineSwitchViewHolder.java
index ad99af8..ac49b1c 100644
--- a/src/com/android/settings/search2/InlineSwitchViewHolder.java
+++ b/src/com/android/settings/search2/InlineSwitchViewHolder.java
@@ -21,41 +21,32 @@
 import android.view.View;
 import android.widget.CompoundButton;
 import android.widget.Switch;
-import android.widget.TextView;
 
-import com.android.internal.widget.PreferenceImageView;
 import com.android.settings.R;
 
 /**
  * ViewHolder for Settings represented as SwitchPreferences.
  */
 public class InlineSwitchViewHolder extends SearchViewHolder {
-    public final TextView titleView;
-    public final TextView summaryView;
-    public final PreferenceImageView iconView;
+
     public final Switch switchView;
 
     private final Context mContext;
 
-    private final String TAG = "SwitchViewHolder";
-
     public InlineSwitchViewHolder(View view, Context context) {
         super(view);
         mContext = context;
-        titleView = (TextView) view.findViewById(android.R.id.title);
-        summaryView = (TextView) view.findViewById(android.R.id.summary);
-        iconView = (PreferenceImageView) view.findViewById(android.R.id.icon);
         switchView = (Switch) view.findViewById(R.id.switchView);
     }
 
     @Override
     public void onBind(SearchFragment fragment, SearchResult result) {
+        super.onBind(fragment, result);
         if (mContext == null) {
             return;
         }
         final InlineSwitchPayload payload = (InlineSwitchPayload) result.payload;
         switchView.setChecked(payload.getSwitchValue(mContext));
-
         switchView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
             @Override
             public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
@@ -63,9 +54,5 @@
                 payload.setSwitchValue(mContext, isChecked);
             }
         });
-
-        titleView.setText(result.title);
-        summaryView.setText(result.summary);
-        iconView.setImageDrawable(result.icon);
     }
 }
diff --git a/src/com/android/settings/search2/InstalledAppResultLoader.java b/src/com/android/settings/search2/InstalledAppResultLoader.java
index 449e52c..0b828a3 100644
--- a/src/com/android/settings/search2/InstalledAppResultLoader.java
+++ b/src/com/android/settings/search2/InstalledAppResultLoader.java
@@ -20,6 +20,7 @@
 import android.content.Intent;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
 import android.content.pm.UserInfo;
 import android.net.Uri;
 import android.os.UserHandle;
@@ -27,7 +28,11 @@
 import android.provider.Settings;
 import android.text.TextUtils;
 
+import com.android.settings.R;
+import com.android.settings.applications.ManageApplications;
 import com.android.settings.applications.PackageManagerWrapper;
+import com.android.settings.dashboard.SiteMapManager;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.utils.AsyncLoader;
 
 import java.util.ArrayList;
@@ -41,14 +46,21 @@
 
     private static final int NAME_NO_MATCH = -1;
     private static final int NAME_EXACT_MATCH = 0;
+    private static final Intent LAUNCHER_PROBE = new Intent(Intent.ACTION_MAIN)
+            .addCategory(Intent.CATEGORY_LAUNCHER);
 
+    private List<String> mBreadcrumb;
+    private SiteMapManager mSiteMapManager;
     private final String mQuery;
     private final UserManager mUserManager;
     private final PackageManagerWrapper mPackageManager;
 
+
     public InstalledAppResultLoader(Context context, PackageManagerWrapper pmWrapper,
             String query) {
         super(context);
+        mSiteMapManager = FeatureFactory.getFactory(context)
+                .getSearchFeatureProvider().getSiteMapManager();
         mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
         mPackageManager = pmWrapper;
         mQuery = query;
@@ -67,7 +79,7 @@
                                     | (user.isAdmin() ? PackageManager.MATCH_ANY_USER : 0),
                             user.id);
             for (ApplicationInfo info : apps) {
-                if (info.isSystemApp()) {
+                if (!shouldIncludeAsCandidate(info, user)) {
                     continue;
                 }
                 final CharSequence label = info.loadLabel(pm);
@@ -83,6 +95,7 @@
                 builder.addIcon(info.loadIcon(pm))
                         .addTitle(info.loadLabel(pm))
                         .addRank(wordDiff)
+                        .addBreadcrumbs(getBreadCrumb())
                         .addPayload(new IntentPayload(intent));
                 results.add(builder.build());
             }
@@ -91,6 +104,22 @@
         return results;
     }
 
+    private boolean shouldIncludeAsCandidate(ApplicationInfo info, UserInfo user) {
+        if ((info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0
+                || (info.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
+            return true;
+        }
+        final Intent launchIntent = new Intent(LAUNCHER_PROBE)
+                .setPackage(info.packageName);
+        final List<ResolveInfo> intents = mPackageManager.queryIntentActivitiesAsUser(
+                launchIntent,
+                PackageManager.MATCH_DISABLED_COMPONENTS
+                        | PackageManager.MATCH_DIRECT_BOOT_AWARE
+                        | PackageManager.MATCH_DIRECT_BOOT_UNAWARE,
+                user.id);
+        return intents != null && intents.size() != 0;
+    }
+
     @Override
     protected void onDiscardResult(List<SearchResult> result) {
 
@@ -107,7 +136,7 @@
      * perfectly, and larger values means they are less similar.
      * <p/>
      * Example:
-     * appName: Abcde, query: Abcde, Returns NAME_EXACT_MATCH
+     * appName: Abcde, query: Abcde, Returns {@link #NAME_EXACT_MATCH}
      * appName: Abcde, query: ade, Returns 2
      * appName: Abcde, query: ae, Returns 3
      * appName: Abcde, query: ea, Returns NAME_NO_MATCH
@@ -136,4 +165,14 @@
         // to infinity.
         return valueText.length - queryTokens.length;
     }
+
+    private List<String> getBreadCrumb() {
+        if (mBreadcrumb == null || mBreadcrumb.isEmpty()) {
+            final Context context = getContext();
+            mBreadcrumb = mSiteMapManager.buildBreadCrumb(
+                    context, ManageApplications.class.getName(),
+                    context.getString(R.string.applications_settings));
+        }
+        return mBreadcrumb;
+    }
 }
diff --git a/src/com/android/settings/search2/IntentSearchViewHolder.java b/src/com/android/settings/search2/IntentSearchViewHolder.java
index c9952fa..d02ef1c 100644
--- a/src/com/android/settings/search2/IntentSearchViewHolder.java
+++ b/src/com/android/settings/search2/IntentSearchViewHolder.java
@@ -16,10 +16,6 @@
 package com.android.settings.search2;
 
 import android.view.View;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import com.android.settings.R;
 
 /**
  * ViewHolder for intent based search results.
@@ -27,25 +23,14 @@
  */
 public class IntentSearchViewHolder extends SearchViewHolder {
 
-    public final TextView titleView;
-    public final TextView summaryView;
-    public final ImageView iconView;
-
     public IntentSearchViewHolder(View view) {
         super(view);
-        titleView = (TextView) view.findViewById(android.R.id.title);
-        summaryView = (TextView) view.findViewById(android.R.id.summary);
-        iconView = (ImageView) view.findViewById(android.R.id.icon);
     }
 
     @Override
     public void onBind(final SearchFragment fragment, final SearchResult result) {
-        titleView.setText(result.title);
-        summaryView.setText(result.summary);
-        iconView.setImageDrawable(result.icon);
-        if (result.icon == null) {
-            iconView.setBackgroundResource(R.drawable.empty_icon);
-        }
+        super.onBind(fragment, result);
+
         itemView.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
diff --git a/src/com/android/settings/search2/ResultPayload.java b/src/com/android/settings/search2/ResultPayload.java
index 3842def..4294234 100644
--- a/src/com/android/settings/search2/ResultPayload.java
+++ b/src/com/android/settings/search2/ResultPayload.java
@@ -29,7 +29,7 @@
 public abstract class ResultPayload implements Parcelable {
 
     @IntDef({PayloadType.INLINE_SLIDER, PayloadType.INLINE_SWITCH,
-            PayloadType.INTENT})
+            PayloadType.INTENT, PayloadType.SAVED_QUERY})
     @Retention(RetentionPolicy.SOURCE)
     public @interface PayloadType {
         /**
@@ -46,6 +46,11 @@
          * Result is a inline widget, using a toggle widget as UI.
          */
         int INLINE_SWITCH = 2;
+
+        /**
+         * Result is a recently saved query.
+         */
+        int SAVED_QUERY = 3;
     }
 
     @IntDef({SettingsSource.UNKNOWN, SettingsSource.SYSTEM, SettingsSource.SECURE,
@@ -59,5 +64,6 @@
     }
 
 
-    @ResultPayload.PayloadType public abstract int getType();
+    @ResultPayload.PayloadType
+    public abstract int getType();
 }
diff --git a/src/com/android/settings/search2/SavedQueryLoader.java b/src/com/android/settings/search2/SavedQueryLoader.java
new file mode 100644
index 0000000..b034b44
--- /dev/null
+++ b/src/com/android/settings/search2/SavedQueryLoader.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.search2;
+
+import android.content.Context;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+import android.support.annotation.VisibleForTesting;
+
+import com.android.settings.search.IndexDatabaseHelper;
+import com.android.settings.search.IndexDatabaseHelper.SavedQueriesColumns;
+import com.android.settings.utils.AsyncLoader;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Loader for recently searched queries.
+ */
+public class SavedQueryLoader extends AsyncLoader<List<SearchResult>> {
+
+    // Max number of proposed suggestions
+    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    static final int MAX_PROPOSED_SUGGESTIONS = 5;
+
+    private final SQLiteDatabase mDatabase;
+
+    public SavedQueryLoader(Context context) {
+        super(context);
+        mDatabase = IndexDatabaseHelper.getInstance(context).getReadableDatabase();
+    }
+
+    @Override
+    protected void onDiscardResult(List<SearchResult> result) {
+
+    }
+
+    @Override
+    public List<SearchResult> loadInBackground() {
+        Cursor cursor = mDatabase.query(IndexDatabaseHelper.Tables.TABLE_SAVED_QUERIES /* table */,
+                new String[]{SavedQueriesColumns.QUERY} /* columns */,
+                null /* selection */,
+                null /* selectionArgs */,
+                null /* groupBy */,
+                null /* having */,
+                "rowId DESC" /* orderBy */,
+                String.valueOf(MAX_PROPOSED_SUGGESTIONS) /* limit */);
+        return convertCursorToResult(cursor);
+    }
+
+    private List<SearchResult> convertCursorToResult(Cursor cursor) {
+        final List<SearchResult> results = new ArrayList<>();
+        while (cursor.moveToNext()) {
+            final SavedQueryPayload payload = new SavedQueryPayload(
+                    cursor.getString(cursor.getColumnIndex(SavedQueriesColumns.QUERY)));
+            results.add(new SearchResult.Builder()
+                    .addTitle(payload.query)
+                    .addPayload(payload)
+                    .build());
+        }
+        return results;
+    }
+}
diff --git a/src/com/android/settings/search2/SavedQueryPayload.java b/src/com/android/settings/search2/SavedQueryPayload.java
new file mode 100644
index 0000000..6316894
--- /dev/null
+++ b/src/com/android/settings/search2/SavedQueryPayload.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.search2;
+
+import android.os.Parcel;
+import android.support.annotation.VisibleForTesting;
+
+/**
+ * {@link ResultPayload} for saved query.
+ */
+public class SavedQueryPayload extends ResultPayload {
+
+    public final String query;
+
+    public SavedQueryPayload(String query) {
+        this.query = query;
+    }
+
+    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    SavedQueryPayload(Parcel in) {
+        query = in.readString();
+    }
+
+    @Override
+    public int getType() {
+        return PayloadType.SAVED_QUERY;
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeString(query);
+    }
+
+    public static final Creator<SavedQueryPayload> CREATOR = new Creator<SavedQueryPayload>() {
+        @Override
+        public SavedQueryPayload createFromParcel(Parcel in) {
+            return new SavedQueryPayload(in);
+        }
+
+        @Override
+        public SavedQueryPayload[] newArray(int size) {
+            return new SavedQueryPayload[size];
+        }
+    };
+}
diff --git a/src/com/android/settings/search2/SavedQueryRecorder.java b/src/com/android/settings/search2/SavedQueryRecorder.java
new file mode 100644
index 0000000..e2325e8
--- /dev/null
+++ b/src/com/android/settings/search2/SavedQueryRecorder.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.search2;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteException;
+import android.util.Log;
+
+import com.android.settings.search.IndexDatabaseHelper;
+import com.android.settings.utils.AsyncLoader;
+
+import static com.android.settings.search.IndexDatabaseHelper.Tables.TABLE_SAVED_QUERIES;
+
+/**
+ * A background task to update saved queries.
+ */
+public class SavedQueryRecorder extends AsyncLoader<Void> {
+
+    private static final String LOG_TAG = "SavedQueryRecorder";
+
+    // Max number of saved search queries (who will be used for proposing suggestions)
+    private static long MAX_SAVED_SEARCH_QUERY = 64;
+
+    private final String mQuery;
+
+    public SavedQueryRecorder(Context context, String query) {
+        super(context);
+        mQuery = query;
+    }
+
+    @Override
+    protected void onDiscardResult(Void result) {
+
+    }
+
+    @Override
+    public Void loadInBackground() {
+        final long now = System.currentTimeMillis();
+
+        final ContentValues values = new ContentValues();
+        values.put(IndexDatabaseHelper.SavedQueriesColumns.QUERY, mQuery);
+        values.put(IndexDatabaseHelper.SavedQueriesColumns.TIME_STAMP, now);
+
+        final SQLiteDatabase database = getWritableDatabase();
+        if (database == null) {
+            return null;
+        }
+
+        long lastInsertedRowId;
+        try {
+            // First, delete all saved queries that are the same
+            database.delete(TABLE_SAVED_QUERIES,
+                    IndexDatabaseHelper.SavedQueriesColumns.QUERY + " = ?",
+                    new String[]{mQuery});
+
+            // Second, insert the saved query
+            lastInsertedRowId = database.insertOrThrow(TABLE_SAVED_QUERIES, null, values);
+
+            // Last, remove "old" saved queries
+            final long delta = lastInsertedRowId - MAX_SAVED_SEARCH_QUERY;
+            if (delta > 0) {
+                int count = database.delete(TABLE_SAVED_QUERIES,
+                        "rowId <= ?",
+                        new String[]{Long.toString(delta)});
+                Log.d(LOG_TAG, "Deleted '" + count + "' saved Search query(ies)");
+            }
+        } catch (Exception e) {
+            Log.d(LOG_TAG, "Cannot update saved Search queries", e);
+        }
+        return null;
+    }
+
+    private SQLiteDatabase getWritableDatabase() {
+        try {
+            return IndexDatabaseHelper.getInstance(getContext()).getWritableDatabase();
+        } catch (SQLiteException e) {
+            Log.e(LOG_TAG, "Cannot open writable database", e);
+            return null;
+        }
+    }
+}
diff --git a/src/com/android/settings/search2/SavedQueryViewHolder.java b/src/com/android/settings/search2/SavedQueryViewHolder.java
new file mode 100644
index 0000000..a32ed05
--- /dev/null
+++ b/src/com/android/settings/search2/SavedQueryViewHolder.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.search2;
+
+import android.view.View;
+import android.widget.TextView;
+
+public class SavedQueryViewHolder extends SearchViewHolder {
+
+    public final TextView titleView;
+
+    public SavedQueryViewHolder(View view) {
+        super(view);
+        titleView = (TextView) view.findViewById(android.R.id.title);
+    }
+
+    @Override
+    public void onBind(SearchFragment fragment, SearchResult result) {
+        titleView.setText(result.title);
+        itemView.setOnClickListener(v -> {
+            fragment.onSavedQueryClicked(result.title);
+        });
+    }
+}
diff --git a/src/com/android/settings/search2/SearchFeatureProvider.java b/src/com/android/settings/search2/SearchFeatureProvider.java
index 8a616a7..a9be5a1 100644
--- a/src/com/android/settings/search2/SearchFeatureProvider.java
+++ b/src/com/android/settings/search2/SearchFeatureProvider.java
@@ -19,6 +19,8 @@
 import android.content.Context;
 import android.view.Menu;
 
+import com.android.settings.dashboard.SiteMapManager;
+
 /**
  * FeatureProvider for Settings Search
  */
@@ -48,11 +50,21 @@
     InstalledAppResultLoader getInstalledAppSearchLoader(Context context, String query);
 
     /**
+     * Returns a new loader to get all recently saved queries search terms.
+     */
+    SavedQueryLoader getSavedQueryLoader(Context context);
+
+    /**
      * Returns the manager for indexing Settings data.
      */
     DatabaseIndexingManager getIndexingManager(Context context);
 
     /**
+     * Returns the manager for looking up breadcrumbs.
+     */
+    SiteMapManager getSiteMapManager();
+
+    /**
      * Updates the Settings indexes
      */
     void updateIndex(Context context);
diff --git a/src/com/android/settings/search2/SearchFeatureProviderImpl.java b/src/com/android/settings/search2/SearchFeatureProviderImpl.java
index 97b7bfe..b575b15 100644
--- a/src/com/android/settings/search2/SearchFeatureProviderImpl.java
+++ b/src/com/android/settings/search2/SearchFeatureProviderImpl.java
@@ -25,6 +25,7 @@
 
 import com.android.settings.R;
 import com.android.settings.applications.PackageManagerWrapperImpl;
+import com.android.settings.dashboard.SiteMapManager;
 import com.android.settings.search.Index;
 
 /**
@@ -35,6 +36,7 @@
     private static final String TAG = "SearchFeatureProvider";
 
     private DatabaseIndexingManager mDatabaseIndexingManager;
+    private SiteMapManager mSiteMapManager;
 
     @Override
     public boolean isEnabled(Context context) {
@@ -73,6 +75,11 @@
     }
 
     @Override
+    public SavedQueryLoader getSavedQueryLoader(Context context) {
+        return new SavedQueryLoader(context);
+    }
+
+    @Override
     public DatabaseIndexingManager getIndexingManager(Context context) {
         if (mDatabaseIndexingManager == null) {
             mDatabaseIndexingManager = new DatabaseIndexingManager(context.getApplicationContext(),
@@ -81,14 +88,22 @@
         return mDatabaseIndexingManager;
     }
 
+    public SiteMapManager getSiteMapManager() {
+        if (mSiteMapManager == null) {
+            mSiteMapManager = new SiteMapManager();
+        }
+        return mSiteMapManager;
+    }
+
     @Override
     public void updateIndex(Context context) {
         long indexStartTime = System.currentTimeMillis();
         if (isEnabled(context)) {
-            getIndexingManager(context).update();
+            getIndexingManager(context).indexDatabase();
         } else {
             Index.getInstance(context).update();
         }
-        Log.d(TAG, "Index.update() took " + (System.currentTimeMillis() - indexStartTime) + " ms");
+        Log.d(TAG, "IndexDatabase() took " +
+                (System.currentTimeMillis() - indexStartTime) + " ms");
     }
 }
diff --git a/src/com/android/settings/search2/SearchFragment.java b/src/com/android/settings/search2/SearchFragment.java
index 757a0e2..b688a45 100644
--- a/src/com/android/settings/search2/SearchFragment.java
+++ b/src/com/android/settings/search2/SearchFragment.java
@@ -26,6 +26,7 @@
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.text.TextUtils;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -34,6 +35,7 @@
 
 import com.android.internal.logging.nano.MetricsProto;
 import com.android.settings.R;
+import com.android.settings.Utils;
 import com.android.settings.core.InstrumentedFragment;
 import com.android.settings.core.instrumentation.MetricsFeatureProvider;
 import com.android.settings.overlay.FeatureFactory;
@@ -50,8 +52,9 @@
     private static final String STATE_RESULT_CLICK_COUNT = "state_result_click_count";
 
     // Loader IDs
-    private static final int LOADER_ID_DATABASE = 0;
-    private static final int LOADER_ID_INSTALLED_APPS = 1;
+    private static final int LOADER_ID_RECENTS = 0;
+    private static final int LOADER_ID_DATABASE = 1;
+    private static final int LOADER_ID_INSTALLED_APPS = 2;
 
     // Logging
     @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
@@ -59,6 +62,10 @@
 
     @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
     String mQuery;
+
+    private final SaveQueryRecorderCallback mSaveQueryRecorderCallback =
+            new SaveQueryRecorderCallback();
+
     private boolean mNeverEnteredQuery = true;
     private int mResultClickCount;
     private MetricsFeatureProvider mMetricsFeatureProvider;
@@ -66,6 +73,7 @@
 
     private SearchResultsAdapter mSearchAdapter;
     private RecyclerView mResultsRecyclerView;
+    private SearchView mSearchView;
 
     @Override
     public int getMetricsCategory() {
@@ -84,18 +92,30 @@
         super.onCreate(savedInstanceState);
         setHasOptionsMenu(true);
         mSearchAdapter = new SearchResultsAdapter(this);
+        final LoaderManager loaderManager = getLoaderManager();
         if (savedInstanceState != null) {
             mQuery = savedInstanceState.getString(STATE_QUERY);
             mNeverEnteredQuery = savedInstanceState.getBoolean(STATE_NEVER_ENTERED_QUERY);
             mResultClickCount = savedInstanceState.getInt(STATE_RESULT_CLICK_COUNT);
-            final LoaderManager loaderManager = getLoaderManager();
             loaderManager.initLoader(LOADER_ID_DATABASE, null, this);
             loaderManager.initLoader(LOADER_ID_INSTALLED_APPS, null, this);
+        } else {
+            loaderManager.initLoader(LOADER_ID_RECENTS, null, this);
         }
-        final ActionBar actionBar = getActivity().getActionBar();
-        actionBar.setCustomView(makeSearchView(actionBar, mQuery));
+
+        final Activity activity = getActivity();
+        final ActionBar actionBar = activity.getActionBar();
+        mSearchView = makeSearchView(actionBar, mQuery);
+        actionBar.setCustomView(mSearchView);
         actionBar.setDisplayShowCustomEnabled(true);
         actionBar.setDisplayShowTitleEnabled(false);
+
+        // Run the Index update only if we have some space
+        if (!Utils.isLowStorage(activity)) {
+            mSearchFeatureProvider.updateIndex(activity);
+        } else {
+            Log.w(TAG, "Cannot update the Indexer as we are running low on storage space!");
+        }
     }
 
     @Override
@@ -140,7 +160,10 @@
         mSearchAdapter.clearResults();
 
         if (TextUtils.isEmpty(mQuery)) {
-            getLoaderManager().destroyLoader(LOADER_ID_DATABASE);
+            final LoaderManager loaderManager = getLoaderManager();
+            loaderManager.destroyLoader(LOADER_ID_DATABASE);
+            loaderManager.destroyLoader(LOADER_ID_INSTALLED_APPS);
+            loaderManager.restartLoader(LOADER_ID_RECENTS, null /* args */, this /* callback */);
         } else {
             restartLoaders();
         }
@@ -150,6 +173,10 @@
 
     @Override
     public boolean onQueryTextSubmit(String query) {
+        // Save submitted query.
+        getLoaderManager().restartLoader(SaveQueryRecorderCallback.LOADER_ID_SAVE_QUERY_TASK, null,
+                mSaveQueryRecorderCallback);
+
         return true;
     }
 
@@ -162,6 +189,8 @@
                 return mSearchFeatureProvider.getDatabaseSearchLoader(activity, mQuery);
             case LOADER_ID_INSTALLED_APPS:
                 return mSearchFeatureProvider.getInstalledAppSearchLoader(activity, mQuery);
+            case LOADER_ID_RECENTS:
+                return mSearchFeatureProvider.getSavedQueryLoader(activity);
             default:
                 return null;
         }
@@ -180,6 +209,12 @@
         mResultClickCount++;
     }
 
+    public void onSavedQueryClicked(CharSequence query) {
+        final String queryString = query.toString();
+        mSearchView.setQuery(queryString, false /* submit */);
+        onQueryTextChange(queryString);
+    }
+
     private void restartLoaders() {
         final LoaderManager loaderManager = getLoaderManager();
         loaderManager.restartLoader(LOADER_ID_DATABASE, null /* args */, this /* callback */);
@@ -196,4 +231,25 @@
         searchView.setLayoutParams(lp);
         return searchView;
     }
+
+    private class SaveQueryRecorderCallback implements LoaderManager.LoaderCallbacks<Void> {
+        // TODO: make a generic background task manager to handle one-off tasks like this one.
+
+        private static final int LOADER_ID_SAVE_QUERY_TASK = 0;
+
+        @Override
+        public Loader<Void> onCreateLoader(int id, Bundle args) {
+            return new SavedQueryRecorder(getActivity(), mQuery);
+        }
+
+        @Override
+        public void onLoadFinished(Loader<Void> loader, Void data) {
+
+        }
+
+        @Override
+        public void onLoaderReset(Loader<Void> loader) {
+
+        }
+    }
 }
diff --git a/src/com/android/settings/search2/SearchResultsAdapter.java b/src/com/android/settings/search2/SearchResultsAdapter.java
index c318b41..999a485 100644
--- a/src/com/android/settings/search2/SearchResultsAdapter.java
+++ b/src/com/android/settings/search2/SearchResultsAdapter.java
@@ -49,13 +49,16 @@
         final Context context = parent.getContext();
         final LayoutInflater inflater = LayoutInflater.from(context);
         final View view;
-        switch(viewType) {
+        switch (viewType) {
             case PayloadType.INTENT:
                 view = inflater.inflate(R.layout.search_intent_item, parent, false);
                 return new IntentSearchViewHolder(view);
             case PayloadType.INLINE_SWITCH:
                 view = inflater.inflate(R.layout.search_inline_switch_item, parent, false);
                 return new InlineSwitchViewHolder(view, context);
+            case PayloadType.SAVED_QUERY:
+                view = inflater.inflate(R.layout.search_saved_query_item, parent, false);
+                return new SavedQueryViewHolder(view);
             default:
                 return null;
         }
diff --git a/src/com/android/settings/search2/SearchViewHolder.java b/src/com/android/settings/search2/SearchViewHolder.java
index 315ec65..0b10b06 100644
--- a/src/com/android/settings/search2/SearchViewHolder.java
+++ b/src/com/android/settings/search2/SearchViewHolder.java
@@ -15,8 +15,14 @@
  */
 package com.android.settings.search2;
 
+import android.content.Context;
 import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
 import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.android.settings.R;
 
 /**
  * The ViewHolder for the Search RecyclerView.
@@ -25,9 +31,47 @@
  */
 public abstract class SearchViewHolder extends RecyclerView.ViewHolder {
 
+    public final TextView titleView;
+    public final TextView summaryView;
+    public final TextView breadcrumbView;
+    public final ImageView iconView;
+
     public SearchViewHolder(View view) {
         super(view);
+        titleView = (TextView) view.findViewById(android.R.id.title);
+        summaryView = (TextView) view.findViewById(android.R.id.summary);
+        iconView = (ImageView) view.findViewById(android.R.id.icon);
+        breadcrumbView = (TextView) view.findViewById(R.id.breadcrumb);
     }
 
-    public abstract void onBind(SearchFragment fragment, SearchResult result);
+    public void onBind(SearchFragment fragment, SearchResult result) {
+        titleView.setText(result.title);
+        if (TextUtils.isEmpty(result.summary)) {
+            summaryView.setVisibility(View.GONE);
+        } else {
+            summaryView.setText(result.summary);
+            summaryView.setVisibility(View.VISIBLE);
+        }
+        iconView.setImageDrawable(result.icon);
+        if (result.icon == null) {
+            iconView.setBackgroundResource(R.drawable.empty_icon);
+        }
+        bindBreadcrumbView(result);
+    }
+
+    private void bindBreadcrumbView(SearchResult result) {
+        if (result.breadcrumbs == null || result.breadcrumbs.isEmpty()) {
+            breadcrumbView.setVisibility(View.GONE);
+            return;
+        }
+        final Context context = breadcrumbView.getContext();
+        String breadcrumb = result.breadcrumbs.get(0);
+        final int count = result.breadcrumbs.size();
+        for (int i = 1; i < count; i++) {
+            breadcrumb = context.getString(R.string.search_breadcrumb_connector,
+                    breadcrumb, result.breadcrumbs.get(i));
+        }
+        breadcrumbView.setText(breadcrumb);
+        breadcrumbView.setVisibility(View.VISIBLE);
+    }
 }
\ No newline at end of file
diff --git a/src/com/android/settings/search2/XmlParserUtils.java b/src/com/android/settings/search2/XmlParserUtils.java
index 748d4b0..90b1c1f 100644
--- a/src/com/android/settings/search2/XmlParserUtils.java
+++ b/src/com/android/settings/search2/XmlParserUtils.java
@@ -24,9 +24,6 @@
 
 import com.android.settings.R;
 
-import java.text.Normalizer;
-import java.util.regex.Pattern;
-
 /**
  * Utility class to parse elements of XML preferences
  */
@@ -74,6 +71,14 @@
         return getData(context, attrs, R.styleable.Preference, R.styleable.Preference_keywords);
     }
 
+    /**
+     * Returns the fragment name if this preference launches a child fragment.
+     */
+    public static String getDataChildFragment(Context context, AttributeSet attrs) {
+        return getData(context, attrs, R.styleable.Preference,
+                R.styleable.Preference_android_fragment);
+    }
+
     private static String getData(Context context, AttributeSet set, int[] attrs, int resId) {
         final TypedArray sa = context.obtainStyledAttributes(set, attrs);
         final TypedValue tv = sa.peekValue(resId);
diff --git a/src/com/android/settings/security/SecurityFeatureProvider.java b/src/com/android/settings/security/SecurityFeatureProvider.java
index 5cf6fc9..23b4cf0 100644
--- a/src/com/android/settings/security/SecurityFeatureProvider.java
+++ b/src/com/android/settings/security/SecurityFeatureProvider.java
@@ -19,6 +19,7 @@
 import android.content.Context;
 import android.support.v7.preference.PreferenceScreen;
 
+import com.android.settings.trustagent.TrustAgentManager;
 import com.android.settingslib.drawer.DashboardCategory;
 
 
@@ -28,4 +29,7 @@
     /** Update preferences with data from associated tiles. */
     void updatePreferences(Context context, PreferenceScreen preferenceScreen,
             DashboardCategory dashboardCategory);
+
+    /** Returns the {@link TrustAgentManager} bound to this {@link SecurityFeatureProvider}. */
+    TrustAgentManager getTrustAgentManager();
 }
diff --git a/src/com/android/settings/security/SecurityFeatureProviderImpl.java b/src/com/android/settings/security/SecurityFeatureProviderImpl.java
index 91659fd..72d0f81 100644
--- a/src/com/android/settings/security/SecurityFeatureProviderImpl.java
+++ b/src/com/android/settings/security/SecurityFeatureProviderImpl.java
@@ -22,12 +22,15 @@
 import android.content.pm.PackageManager;
 import android.content.res.Resources;
 import android.graphics.drawable.Drawable;
+import com.android.settings.trustagent.TrustAgentManager;
+import com.android.settings.trustagent.TrustAgentManagerImpl;
 import com.android.settingslib.drawer.DashboardCategory;
 import android.support.v4.content.ContextCompat;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceScreen;
 import android.text.TextUtils;
 import android.util.ArrayMap;
+import android.util.Pair;
 
 import com.android.settingslib.drawer.Tile;
 import com.android.settingslib.drawer.TileUtils;
@@ -37,6 +40,8 @@
 /** Implementation for {@code SecurityFeatureProvider}. */
 public class SecurityFeatureProviderImpl implements SecurityFeatureProvider {
 
+    private TrustAgentManager mTrustAgentManager;
+
     /** Update preferences with data from associated tiles. */
     public void updatePreferences(Context context, PreferenceScreen preferenceScreen,
             DashboardCategory dashboardCategory) {
@@ -64,37 +69,23 @@
             String summaryUri =
                     tile.metaData.getString(TileUtils.META_DATA_PREFERENCE_SUMMARY_URI, null);
             if (!TextUtils.isEmpty(iconUri)) {
-                int icon = TileUtils.getIconFromUri(context, iconUri, providerMap);
-                boolean updateIcon = true;
                 String packageName = null;
-                // Dynamic icon has to come from the same package that the preference launches.
                 if (tile.intent != null) {
-                        Intent intent = tile.intent;
-                        if (!TextUtils.isEmpty(intent.getPackage())) {
-                            packageName = intent.getPackage();
-                        } else if (intent.getComponent() != null) {
-                            packageName = intent.getComponent().getPackageName();
-                        }
-                }
-                if (TextUtils.isEmpty(packageName)) {
-                    updateIcon = false;
-                } else {
-                    if (tile.icon == null) {
-                        // If the tile does not have an icon already, only update if the suggested
-                        // icon is non-zero.
-                        updateIcon = (icon != 0);
-                    } else {
-                        // If the existing icon has the same resource package and resource id, the
-                        // icon does not need to be updated.
-                        updateIcon = !(packageName.equals(tile.icon.getResPackage())
-                                && (icon == tile.icon.getResId()));
+                    Intent intent = tile.intent;
+                    if (!TextUtils.isEmpty(intent.getPackage())) {
+                        packageName = intent.getPackage();
+                    } else if (intent.getComponent() != null) {
+                        packageName = intent.getComponent().getPackageName();
                     }
                 }
-                if (updateIcon) {
+                Pair<String, Integer> icon =
+                        TileUtils.getIconFromUri(context, packageName, iconUri, providerMap);
+                if (icon != null) {
+                    // Icon is only returned if the icon belongs to Settings or the target app.
                     try {
                         matchingPref.setIcon(context.getPackageManager()
-                                .getResourcesForApplication(packageName)
-                                        .getDrawable(icon, context.getTheme()));
+                                .getResourcesForApplication(icon.first /* package name */)
+                                        .getDrawable(icon.second /* res id */, context.getTheme()));
                     } catch (PackageManager.NameNotFoundException | Resources.NotFoundException e) {
                         // Intentionally ignored. If icon resources cannot be found, do not update.
                     }
@@ -114,4 +105,12 @@
             }
         }
     }
+
+    @Override
+    public TrustAgentManager getTrustAgentManager() {
+        if (mTrustAgentManager == null) {
+            mTrustAgentManager = new TrustAgentManagerImpl();
+        }
+        return mTrustAgentManager;
+    }
 }
diff --git a/src/com/android/settings/survey/SurveyMixin.java b/src/com/android/settings/survey/SurveyMixin.java
index 74b7f10..72cd634 100644
--- a/src/com/android/settings/survey/SurveyMixin.java
+++ b/src/com/android/settings/survey/SurveyMixin.java
@@ -74,9 +74,8 @@
     public void onPause() {
         Activity activity = mFragment.getActivity();
         if (mReceiver != null && activity != null) {
-            SurveyFeatureProvider provider =
-                    FeatureFactory.getFactory(activity).getSurveyFeatureProvider(activity);
-            provider.unregisterReceiver(activity, mReceiver);
+            SurveyFeatureProvider.unregisterReceiver(activity, mReceiver);
+            mReceiver = null;
         }
     }
 }
diff --git a/src/com/android/settings/system/SystemDashboardFragment.java b/src/com/android/settings/system/SystemDashboardFragment.java
index b06d403..c46bc6f 100644
--- a/src/com/android/settings/system/SystemDashboardFragment.java
+++ b/src/com/android/settings/system/SystemDashboardFragment.java
@@ -30,7 +30,6 @@
 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;
@@ -57,11 +56,6 @@
     }
 
     @Override
-    protected String getCategoryKey() {
-        return CategoryKey.CATEGORY_SYSTEM;
-    }
-
-    @Override
     protected List<PreferenceController> getPreferenceControllers(Context context) {
         final List<PreferenceController> controllers = new ArrayList<>();
         controllers.add(new SystemUpdatePreferenceController(context, UserManager.get(context)));
diff --git a/src/com/android/settings/trustagent/TrustAgentManager.java b/src/com/android/settings/trustagent/TrustAgentManager.java
new file mode 100644
index 0000000..3335e17
--- /dev/null
+++ b/src/com/android/settings/trustagent/TrustAgentManager.java
@@ -0,0 +1,38 @@
+/*
+ * 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.trustagent;
+
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+
+
+/** A manager for trust agent state. */
+public interface TrustAgentManager {
+
+   String PERMISSION_PROVIDE_AGENT = android.Manifest.permission.PROVIDE_TRUST_AGENT;
+
+  /**
+   * Determines if the service associated with a resolved trust agent intent is allowed to provide
+   * trust on this device.
+   *
+   * @param resolveInfo The entry corresponding to the matched trust agent intent.
+   * @param pm The package manager to be used to check for permissions.
+   * @return {@code true} if the associated service is allowed to provide a trust agent, and
+   * {@code false} if otherwise.
+   */
+   boolean shouldProvideTrust(ResolveInfo resolveInfo, PackageManager pm);
+}
diff --git a/src/com/android/settings/trustagent/TrustAgentManagerImpl.java b/src/com/android/settings/trustagent/TrustAgentManagerImpl.java
new file mode 100644
index 0000000..cabda79
--- /dev/null
+++ b/src/com/android/settings/trustagent/TrustAgentManagerImpl.java
@@ -0,0 +1,39 @@
+/*
+ * 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.trustagent;
+
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.util.Log;
+
+/** Implementation for {@code SecurityFeatureProvider}. */
+public class TrustAgentManagerImpl implements TrustAgentManager {
+
+    private static final String TAG = "TrustAgentFeature";
+
+    @Override
+    public boolean shouldProvideTrust(ResolveInfo resolveInfo, PackageManager pm) {
+        final String packageName = resolveInfo.serviceInfo.packageName;
+        if (pm.checkPermission(PERMISSION_PROVIDE_AGENT, packageName)
+                != PackageManager.PERMISSION_GRANTED) {
+            Log.w(TAG, "Skipping agent because package " + packageName
+                    + " does not have permission " + PERMISSION_PROVIDE_AGENT + ".");
+            return false;
+        }
+        return true;
+    }
+}
diff --git a/src/com/android/settings/tts/TextToSpeechSettings.java b/src/com/android/settings/tts/TextToSpeechSettings.java
index 96a7f4e..fe78d20 100644
--- a/src/com/android/settings/tts/TextToSpeechSettings.java
+++ b/src/com/android/settings/tts/TextToSpeechSettings.java
@@ -16,29 +16,27 @@
 
 package com.android.settings.tts;
 
+import android.support.v7.preference.ListPreference;
 import android.app.AlertDialog;
 import android.content.ActivityNotFoundException;
 import android.content.ContentResolver;
 import android.content.Intent;
 import android.os.Bundle;
-import android.provider.Settings.SettingNotFoundException;
 import android.speech.tts.TextToSpeech;
 import android.speech.tts.TextToSpeech.EngineInfo;
 import android.speech.tts.TtsEngines;
 import android.speech.tts.UtteranceProgressListener;
-import android.support.v14.preference.SwitchPreference;
 import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceCategory;
 import android.text.TextUtils;
 import android.util.Log;
-import android.widget.Checkable;
+import android.util.Pair;
+import java.util.Comparator;
+import java.util.Collections;
 
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.settings.R;
-import com.android.settings.SeekBarPreference;
 import com.android.settings.SettingsActivity;
 import com.android.settings.SettingsPreferenceFragment;
-import com.android.settings.tts.TtsEnginePreference.RadioButtonGroupState;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -48,13 +46,15 @@
 import java.util.Objects;
 import java.util.Set;
 
-import static android.provider.Settings.Secure.TTS_DEFAULT_PITCH;
-import static android.provider.Settings.Secure.TTS_DEFAULT_RATE;
 import static android.provider.Settings.Secure.TTS_DEFAULT_SYNTH;
+import static android.provider.Settings.Secure.TTS_DEFAULT_PITCH;
 
-public class TextToSpeechSettings extends SettingsPreferenceFragment implements
-        Preference.OnPreferenceChangeListener, Preference.OnPreferenceClickListener,
-        RadioButtonGroupState {
+public class TextToSpeechSettings extends SettingsPreferenceFragment
+        implements Preference.OnPreferenceChangeListener, Preference.OnPreferenceClickListener {
+
+    private static final String STATE_KEY_LOCALE_ENTRIES = "locale_entries";
+    private static final String STATE_KEY_LOCALE_ENTRY_VALUES = "locale_entry_values";
+    private static final String STATE_KEY_LOCALE_VALUE = "locale_value";
 
     private static final String TAG = "TextToSpeechSettings";
     private static final boolean DBG = false;
@@ -62,84 +62,37 @@
     /** Preference key for the "play TTS example" preference. */
     private static final String KEY_PLAY_EXAMPLE = "tts_play_example";;
 
-    /** Preference key for the TTS pitch selection slider. */
-    private static final String KEY_DEFAULT_PITCH = "tts_default_pitch";
-
-    /** Preference key for the TTS rate selection slider. */
-    private static final String KEY_DEFAULT_RATE = "tts_default_rate";
-
-    /** Preference key for the TTS reset speech rate preference. */
-    private static final String KEY_RESET_SPEECH_RATE = "reset_speech_rate";
-
-    /** Preference key for the TTS reset speech pitch preference. */
-    private static final String KEY_RESET_SPEECH_PITCH = "reset_speech_pitch";
-
     /** Preference key for the TTS status field. */
     private static final String KEY_STATUS = "tts_status";
 
     /**
-     * Preference key for the engine selection preference.
-     */
-    private static final String KEY_ENGINE_PREFERENCE_SECTION =
-            "tts_engine_preference_section";
-
-    /**
      * These look like birth years, but they aren't mine. I'm much younger than this.
      */
     private static final int GET_SAMPLE_TEXT = 1983;
     private static final int VOICE_DATA_INTEGRITY_CHECK = 1977;
 
-    /**
-     * Speech rate value.
-     * This value should be kept in sync with the max value set in tts_settings xml.
-     */
-    private static final int MAX_SPEECH_RATE = 600;
-    private static final int MIN_SPEECH_RATE = 10;
-
-    /**
-     * Speech pitch value.
-     * TTS pitch value varies from 25 to 400, where 100 is the value
-     * for normal pitch. The max pitch value is set to 400, based on feedback from users
-     * and the GoogleTTS pitch variation range. The range for pitch is not set in stone
-     * and should be readjusted based on user need.
-     * This value should be kept in sync with the max value set in tts_settings xml.
-     */
-    private static final int MAX_SPEECH_PITCH = 400;
-    private static final int MIN_SPEECH_PITCH = 25;
-
-    private PreferenceCategory mEnginePreferenceCategory;
-    private SeekBarPreference mDefaultPitchPref;
-    private SeekBarPreference mDefaultRatePref;
-    private Preference mResetSpeechRate;
-    private Preference mResetSpeechPitch;
     private Preference mPlayExample;
     private Preference mEngineStatus;
 
-    private int mDefaultPitch = TextToSpeech.Engine.DEFAULT_PITCH;
-    private int mDefaultRate = TextToSpeech.Engine.DEFAULT_RATE;
 
-    /**
-     * The currently selected engine.
-     */
+    private static final String KEY_ENGINE_LOCALE = "tts_default_lang";
+    private static final String KEY_ENGINE_SETTINGS = "tts_engine_settings";
+    private static final String KEY_INSTALL_DATA = "tts_install_data";
+
+    private int mSelectedLocaleIndex = -1;
+
+    /** The currently selected engine. */
     private String mCurrentEngine;
 
-    /**
-     * The engine checkbox that is currently checked. Saves us a bit of effort
-     * in deducing the right one from the currently selected engine.
-     */
-    private Checkable mCurrentChecked;
-
-    /**
-     * The previously selected TTS engine. Useful for rollbacks if the users
-     * choice is not loaded or fails a voice integrity check.
-     */
-    private String mPreviousEngine;
-
     private TextToSpeech mTts = null;
     private TtsEngines mEnginesHelper = null;
 
     private String mSampleText = null;
 
+    private ListPreference mLocalePreference;
+    private Preference mEngineSettingsPreference;
+    private Preference mInstallVoicesPreference;
+
     /**
      * Default locale used by selected TTS engine, null if not connected to any engine.
      */
@@ -164,18 +117,6 @@
         }
     };
 
-    /**
-     * The initialization listener used when the user changes his choice of
-     * engine (as opposed to when then screen is being initialized for the first
-     * time).
-     */
-    private final TextToSpeech.OnInitListener mUpdateListener = new TextToSpeech.OnInitListener() {
-        @Override
-        public void onInit(int status) {
-            onUpdateEngine(status);
-        }
-    };
-
     @Override
     public int getMetricsCategory() {
         return MetricsEvent.TTS_TEXT_TO_SPEECH;
@@ -192,21 +133,40 @@
         mPlayExample.setOnPreferenceClickListener(this);
         mPlayExample.setEnabled(false);
 
-        mResetSpeechRate = findPreference(KEY_RESET_SPEECH_RATE);
-        mResetSpeechRate.setOnPreferenceClickListener(this);
-        mResetSpeechPitch = findPreference(KEY_RESET_SPEECH_PITCH);
-        mResetSpeechPitch.setOnPreferenceClickListener(this);
+        mEnginesHelper = new TtsEngines(getActivity().getApplicationContext());
 
-        mEnginePreferenceCategory = (PreferenceCategory) findPreference(
-                KEY_ENGINE_PREFERENCE_SECTION);
-        mDefaultPitchPref = (SeekBarPreference) findPreference(KEY_DEFAULT_PITCH);
-        mDefaultRatePref = (SeekBarPreference) findPreference(KEY_DEFAULT_RATE);
+        mLocalePreference = (ListPreference) findPreference(KEY_ENGINE_LOCALE);
+        mLocalePreference.setOnPreferenceChangeListener(this);
+
+        if (savedInstanceState == null) {
+            mLocalePreference.setEnabled(false);
+            mLocalePreference.setEntries(new CharSequence[0]);
+            mLocalePreference.setEntryValues(new CharSequence[0]);
+        } else {
+            // Repopulate mLocalePreference with saved state. Will be updated later with
+            // up-to-date values when checkTtsData() calls back with results.
+            final CharSequence[] entries =
+                    savedInstanceState.getCharSequenceArray(STATE_KEY_LOCALE_ENTRIES);
+            final CharSequence[] entryValues =
+                    savedInstanceState.getCharSequenceArray(STATE_KEY_LOCALE_ENTRY_VALUES);
+            final CharSequence value = savedInstanceState.getCharSequence(STATE_KEY_LOCALE_VALUE);
+
+            mLocalePreference.setEntries(entries);
+            mLocalePreference.setEntryValues(entryValues);
+            mLocalePreference.setValue(value != null ? value.toString() : null);
+            mLocalePreference.setEnabled(entries.length > 0);
+        }
+
+        mEngineSettingsPreference = findPreference(KEY_ENGINE_SETTINGS);
+        mEngineSettingsPreference.setOnPreferenceClickListener(this);
+        mInstallVoicesPreference = findPreference(KEY_INSTALL_DATA);
+        mInstallVoicesPreference.setOnPreferenceClickListener(this);
+        mInstallVoicesPreference.setEnabled(false);
 
         mEngineStatus = findPreference(KEY_STATUS);
         updateEngineStatus(R.string.tts_status_checking);
 
         mTts = new TextToSpeech(getActivity().getApplicationContext(), mInitListener);
-        mEnginesHelper = new TtsEngines(getActivity().getApplicationContext());
 
         setTtsUtteranceProgressListener();
         initSettings();
@@ -222,6 +182,23 @@
         if (mTts == null || mCurrentDefaultLocale == null) {
             return;
         }
+        if (!mTts.getDefaultEngine().equals(mTts.getCurrentEngine())) {
+            try {
+                mTts.shutdown();
+                mTts = null;
+            } catch (Exception e) {
+                Log.e(TAG, "Error shutting down TTS engine" + e);
+            }
+            mTts = new TextToSpeech(getActivity().getApplicationContext(), mInitListener);
+            setTtsUtteranceProgressListener();
+            initSettings();
+        } else {
+            // Do set pitch correctly after it may have changed, and unlike speed, it doesn't change
+            // immediately.
+            final ContentResolver resolver = getContentResolver();
+            mTts.setPitch(android.provider.Settings.Secure.getInt(resolver, TTS_DEFAULT_PITCH, TextToSpeech.Engine.DEFAULT_PITCH)/100.0f);
+        }
+
         Locale ttsDefaultLocale = mTts.getDefaultLanguage();
         if (mCurrentDefaultLocale != null && !mCurrentDefaultLocale.equals(ttsDefaultLocale)) {
             updateWidgetState(false);
@@ -259,26 +236,9 @@
     private void initSettings() {
         final ContentResolver resolver = getContentResolver();
 
-        // Set up the default rate and pitch.
-        mDefaultRate = android.provider.Settings.Secure.getInt(
-            resolver, TTS_DEFAULT_RATE, TextToSpeech.Engine.DEFAULT_RATE);
-        mDefaultPitch = android.provider.Settings.Secure.getInt(
-            resolver, TTS_DEFAULT_PITCH, TextToSpeech.Engine.DEFAULT_PITCH);
-
-        mDefaultRatePref.setProgress(getSeekBarProgressFromValue(KEY_DEFAULT_RATE, mDefaultRate));
-        mDefaultRatePref.setOnPreferenceChangeListener(this);
-        mDefaultRatePref.setMax(getSeekBarProgressFromValue(KEY_DEFAULT_RATE, MAX_SPEECH_RATE));
-
-        mDefaultPitchPref.setProgress(getSeekBarProgressFromValue(KEY_DEFAULT_PITCH,
-              mDefaultPitch));
-        mDefaultPitchPref.setOnPreferenceChangeListener(this);
-        mDefaultPitchPref.setMax(getSeekBarProgressFromValue(KEY_DEFAULT_PITCH,
-              MAX_SPEECH_PITCH));
-
         if (mTts != null) {
             mCurrentEngine = mTts.getCurrentEngine();
-            mTts.setSpeechRate(mDefaultRate/100.0f);
-            mTts.setPitch(mDefaultPitch/100.0f);
+            mTts.setPitch(android.provider.Settings.Secure.getInt(resolver, TTS_DEFAULT_PITCH, TextToSpeech.Engine.DEFAULT_PITCH)/100.0f);
         }
 
         SettingsActivity activity = null;
@@ -289,53 +249,37 @@
                     "Settings");
         }
 
-        mEnginePreferenceCategory.removeAll();
+        if (mCurrentEngine != null) {
+            EngineInfo info = mEnginesHelper.getEngineInfo(mCurrentEngine);
+            mEngineSettingsPreference.setSummary(info.label);
+            final Intent settingsIntent = mEnginesHelper.getSettingsIntent(info.name);
+            mEngineSettingsPreference.setIntent(settingsIntent);
+            if (settingsIntent == null) {
+                mEngineSettingsPreference.setEnabled(false);
+            }
 
-        List<EngineInfo> engines = mEnginesHelper.getEngines();
-        for (EngineInfo engine : engines) {
-            TtsEnginePreference enginePref = new TtsEnginePreference(getPrefContext(), engine,
-                    this, activity);
-            mEnginePreferenceCategory.addPreference(enginePref);
+            Preference mEnginePreference = findPreference("tts_engine_preference");
+            mEnginePreference.setSummary(info.label);
         }
 
         checkVoiceData(mCurrentEngine);
     }
 
     /**
-     * The minimum speech pitch/rate value should be > 0 but the minimum value of a seekbar in
-     * android is fixed at 0. Therefore, we increment the seekbar progress with MIN_SPEECH_VALUE
-     * so that the minimum seekbar progress value is MIN_SPEECH_PITCH/RATE.
-     *     SPEECH_VALUE = MIN_SPEECH_VALUE + SEEKBAR_PROGRESS
-     */
-    private int getValueFromSeekBarProgress(String preferenceKey, int progress) {
-        if (preferenceKey.equals(KEY_DEFAULT_RATE)) {
-            return MIN_SPEECH_RATE + progress;
-        } else if (preferenceKey.equals(KEY_DEFAULT_PITCH)) {
-            return MIN_SPEECH_PITCH + progress;
-        }
-        return progress;
-    }
-
-    /**
-     * Since we are appending the MIN_SPEECH value to the speech seekbar progress, the
-     * speech seekbar progress should be set to (speechValue - MIN_SPEECH value).
-     */
-    private int getSeekBarProgressFromValue(String preferenceKey, int value) {
-        if (preferenceKey.equals(KEY_DEFAULT_RATE)) {
-            return value - MIN_SPEECH_RATE;
-        } else if (preferenceKey.equals(KEY_DEFAULT_PITCH)) {
-            return value - MIN_SPEECH_PITCH;
-        }
-        return value;
-    }
-
-    /**
      * Called when the TTS engine is initialized.
      */
     public void onInitEngine(int status) {
         if (status == TextToSpeech.SUCCESS) {
             if (DBG) Log.d(TAG, "TTS engine for settings screen initialized.");
             checkDefaultLocale();
+            getActivity()
+                    .runOnUiThread(
+                            new Runnable() {
+                                @Override
+                                public void run() {
+                                    mLocalePreference.setEnabled(true);
+                                }
+                            });
         } else {
             if (DBG) Log.d(TAG, "TTS engine for settings screen failed to initialize successfully.");
             updateWidgetState(false);
@@ -452,9 +396,88 @@
             onSampleTextReceived(resultCode, data);
         } else if (requestCode == VOICE_DATA_INTEGRITY_CHECK) {
             onVoiceDataIntegrityCheckDone(data);
+            if (resultCode != TextToSpeech.Engine.CHECK_VOICE_DATA_FAIL) {
+                updateDefaultLocalePref(data);
+            }
         }
     }
 
+    private void updateDefaultLocalePref(Intent data) {
+        final ArrayList<String> availableLangs =
+                data.getStringArrayListExtra(TextToSpeech.Engine.EXTRA_AVAILABLE_VOICES);
+
+        final ArrayList<String> unavailableLangs =
+                data.getStringArrayListExtra(TextToSpeech.Engine.EXTRA_UNAVAILABLE_VOICES);
+
+        if (availableLangs != null && unavailableLangs.size() > 0) {
+            mInstallVoicesPreference.setEnabled(true);
+        } else {
+            mInstallVoicesPreference.setEnabled(false);
+        }
+
+        if (availableLangs == null || availableLangs.size() == 0) {
+            mLocalePreference.setEnabled(false);
+            return;
+        }
+        Locale currentLocale = null;
+        if (!mEnginesHelper.isLocaleSetToDefaultForEngine(mTts.getCurrentEngine())) {
+            currentLocale = mEnginesHelper.getLocalePrefForEngine(mTts.getCurrentEngine());
+        }
+
+        ArrayList<Pair<String, Locale>> entryPairs =
+                new ArrayList<Pair<String, Locale>>(availableLangs.size());
+        for (int i = 0; i < availableLangs.size(); i++) {
+            Locale locale = mEnginesHelper.parseLocaleString(availableLangs.get(i));
+            if (locale != null) {
+                entryPairs.add(new Pair<String, Locale>(locale.getDisplayName(), locale));
+            }
+        }
+
+        // Sort it
+        Collections.sort(
+                entryPairs,
+                new Comparator<Pair<String, Locale>>() {
+                    @Override
+                    public int compare(Pair<String, Locale> lhs, Pair<String, Locale> rhs) {
+                        return lhs.first.compareToIgnoreCase(rhs.first);
+                    }
+                });
+
+        // Get two arrays out of one of pairs
+        mSelectedLocaleIndex = 0; // Will point to the R.string.tts_lang_use_system value
+        CharSequence[] entries = new CharSequence[availableLangs.size() + 1];
+        CharSequence[] entryValues = new CharSequence[availableLangs.size() + 1];
+
+        entries[0] = getActivity().getString(R.string.tts_lang_use_system);
+        entryValues[0] = "";
+
+        int i = 1;
+        for (Pair<String, Locale> entry : entryPairs) {
+            if (entry.second.equals(currentLocale)) {
+                mSelectedLocaleIndex = i;
+            }
+            entries[i] = entry.first;
+            entryValues[i++] = entry.second.toString();
+        }
+
+        mLocalePreference.setEntries(entries);
+        mLocalePreference.setEntryValues(entryValues);
+        mLocalePreference.setEnabled(true);
+        setLocalePreference(mSelectedLocaleIndex);
+    }
+
+    /** Set entry from entry table in mLocalePreference */
+    private void setLocalePreference(int index) {
+        if (index < 0) {
+            mLocalePreference.setValue("");
+            mLocalePreference.setSummary(R.string.tts_lang_not_selected);
+        } else {
+            mLocalePreference.setValueIndex(index);
+            mLocalePreference.setSummary(mLocalePreference.getEntries()[index]);
+        }
+    }
+
+
     private String getDefaultSampleString() {
         if (mTts != null && mTts.getLanguage() != null) {
             try {
@@ -522,17 +545,59 @@
 
     @Override
     public boolean onPreferenceChange(Preference preference, Object objValue) {
-        if (KEY_DEFAULT_RATE.equals(preference.getKey())) {
-            updateSpeechRate((Integer) objValue);
-        } else if (KEY_DEFAULT_PITCH.equals(preference.getKey())) {
-            updateSpeechPitchValue((Integer) objValue);
+        if (preference == mLocalePreference) {
+            String localeString = (String) objValue;
+            updateLanguageTo(
+                    (!TextUtils.isEmpty(localeString)
+                            ? mEnginesHelper.parseLocaleString(localeString)
+                            : null));
+            checkDefaultLocale();
+            return true;
         }
         return true;
     }
 
+    private void updateLanguageTo(Locale locale) {
+        int selectedLocaleIndex = -1;
+        String localeString = (locale != null) ? locale.toString() : "";
+        for (int i = 0; i < mLocalePreference.getEntryValues().length; i++) {
+            if (localeString.equalsIgnoreCase(mLocalePreference.getEntryValues()[i].toString())) {
+                selectedLocaleIndex = i;
+                break;
+            }
+        }
+
+        if (selectedLocaleIndex == -1) {
+            Log.w(TAG, "updateLanguageTo called with unknown locale argument");
+            return;
+        }
+        mLocalePreference.setSummary(mLocalePreference.getEntries()[selectedLocaleIndex]);
+        mSelectedLocaleIndex = selectedLocaleIndex;
+
+        mEnginesHelper.updateLocalePrefForEngine(mTts.getCurrentEngine(), locale);
+
+        // Null locale means "use system default"
+        mTts.setLanguage((locale != null) ? locale : Locale.getDefault());
+    }
+
     /**
-     * Called when mPlayExample, mResetSpeechRate or mResetSpeechPitch is
-     * clicked.
+     * Ask the current default engine to launch the matching INSTALL_TTS_DATA activity so the
+     * required TTS files are properly installed.
+     */
+    private void installVoiceData() {
+        if (TextUtils.isEmpty(mCurrentEngine)) return;
+        Intent intent = new Intent(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
+        intent.setPackage(mCurrentEngine);
+        try {
+            Log.v(TAG, "Installing voice data: " + intent.toUri(0));
+            startActivity(intent);
+        } catch (ActivityNotFoundException ex) {
+            Log.e(TAG, "Failed to install TTS data, no acitivty found for " + intent + ")");
+        }
+    }
+
+    /**
+     * Called when mPlayExample, mInstallVoicesPreference is clicked.
      */
     @Override
     public boolean onPreferenceClick(Preference preference) {
@@ -541,57 +606,15 @@
             // the actual speaking
             speakSampleText();
             return true;
-        } else if (preference == mResetSpeechRate) {
-          int speechRateSeekbarProgress = getSeekBarProgressFromValue(
-              KEY_DEFAULT_RATE, TextToSpeech.Engine.DEFAULT_RATE);
-          mDefaultRatePref.setProgress(speechRateSeekbarProgress);
-          updateSpeechRate(speechRateSeekbarProgress);
-          return true;
-        } else if (preference == mResetSpeechPitch) {
-          int pitchSeekbarProgress = getSeekBarProgressFromValue(
-              KEY_DEFAULT_PITCH, TextToSpeech.Engine.DEFAULT_PITCH);
-          mDefaultPitchPref.setProgress(pitchSeekbarProgress);
-          updateSpeechPitchValue(pitchSeekbarProgress);
-          return true;
+        } else if (preference == mInstallVoicesPreference) {
+            installVoiceData();
+            return true;
         }
         return false;
     }
 
-    private void updateSpeechRate(int speechRateSeekBarProgress) {
-        mDefaultRate = getValueFromSeekBarProgress(KEY_DEFAULT_RATE,
-            speechRateSeekBarProgress);
-        try {
-            android.provider.Settings.Secure.putInt(getContentResolver(),
-                    TTS_DEFAULT_RATE, mDefaultRate);
-            if (mTts != null) {
-                mTts.setSpeechRate(mDefaultRate / 100.0f);
-            }
-            if (DBG) Log.d(TAG, "TTS default rate changed, now " + mDefaultRate);
-        } catch (NumberFormatException e) {
-            Log.e(TAG, "could not persist default TTS rate setting", e);
-        }
-        return;
-    }
-
-    private void updateSpeechPitchValue(int speechPitchSeekBarProgress) {
-        mDefaultPitch = getValueFromSeekBarProgress(KEY_DEFAULT_PITCH,
-            speechPitchSeekBarProgress);
-        try {
-            android.provider.Settings.Secure.putInt(getContentResolver(),
-                    TTS_DEFAULT_PITCH, mDefaultPitch);
-            if (mTts != null) {
-                mTts.setPitch(mDefaultPitch / 100.0f);
-            }
-            if (DBG) Log.d(TAG, "TTS default pitch changed, now" + mDefaultPitch);
-        } catch (NumberFormatException e) {
-            Log.e(TAG, "could not persist default TTS pitch setting", e);
-        }
-        return;
-    }
-
     private void updateWidgetState(boolean enable) {
         mPlayExample.setEnabled(enable);
-        mDefaultRatePref.setEnabled(enable);
         mEngineStatus.setEnabled(enable);
     }
 
@@ -614,67 +637,7 @@
         dialog.show();
     }
 
-    private void updateDefaultEngine(String engine) {
-        if (DBG) Log.d(TAG, "Updating default synth to : " + engine);
-
-        // Disable the "play sample text" preference and the speech
-        // rate preference while the engine is being swapped.
-        updateWidgetState(false);
-        updateEngineStatus(R.string.tts_status_checking);
-
-        // Keep track of the previous engine that was being used. So that
-        // we can reuse the previous engine.
-        //
-        // Note that if TextToSpeech#getCurrentEngine is not null, it means at
-        // the very least that we successfully bound to the engine service.
-        mPreviousEngine = mTts.getCurrentEngine();
-
-        // Step 1: Shut down the existing TTS engine.
-        if (mTts != null) {
-            try {
-                mTts.shutdown();
-                mTts = null;
-            } catch (Exception e) {
-                Log.e(TAG, "Error shutting down TTS engine" + e);
-            }
-        }
-
-        // Step 2: Connect to the new TTS engine.
-        // Step 3 is continued on #onUpdateEngine (below) which is called when
-        // the app binds successfully to the engine.
-        if (DBG) Log.d(TAG, "Updating engine : Attempting to connect to engine: " + engine);
-        mTts = new TextToSpeech(getActivity().getApplicationContext(), mUpdateListener, engine);
-        setTtsUtteranceProgressListener();
-    }
-
-    /*
-     * Step 3: We have now bound to the TTS engine the user requested. We will
-     * attempt to check voice data for the engine if we successfully bound to it,
-     * or revert to the previous engine if we didn't.
-     */
-    public void onUpdateEngine(int status) {
-        if (status == TextToSpeech.SUCCESS) {
-            if (DBG) {
-                Log.d(TAG, "Updating engine: Successfully bound to the engine: " +
-                        mTts.getCurrentEngine());
-            }
-            checkVoiceData(mTts.getCurrentEngine());
-        } else {
-            if (DBG) Log.d(TAG, "Updating engine: Failed to bind to engine, reverting.");
-            if (mPreviousEngine != null) {
-                // This is guaranteed to at least bind, since mPreviousEngine would be
-                // null if the previous bind to this engine failed.
-                mTts = new TextToSpeech(getActivity().getApplicationContext(), mInitListener,
-                        mPreviousEngine);
-                setTtsUtteranceProgressListener();
-            }
-            mPreviousEngine = null;
-        }
-    }
-
-    /*
-     * Step 4: Check whether the voice data for the engine is ok.
-     */
+    /** Check whether the voice data for the engine is ok. */
     private void checkVoiceData(String engine) {
         Intent intent = new Intent(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
         intent.setPackage(engine);
@@ -686,9 +649,7 @@
         }
     }
 
-    /*
-     * Step 5: The voice data check is complete.
-     */
+    /** The voice data check is complete. */
     private void onVoiceDataIntegrityCheckDone(Intent data) {
         final String engine = mTts.getCurrentEngine();
 
@@ -715,39 +676,5 @@
         if (evaluateDefaultLocale()) {
             getSampleText();
         }
-
-        final int engineCount = mEnginePreferenceCategory.getPreferenceCount();
-        for (int i = 0; i < engineCount; ++i) {
-            final Preference p = mEnginePreferenceCategory.getPreference(i);
-            if (p instanceof TtsEnginePreference) {
-                TtsEnginePreference enginePref = (TtsEnginePreference) p;
-                if (enginePref.getKey().equals(engine)) {
-                    enginePref.setVoiceDataDetails(data);
-                    break;
-                }
-            }
-        }
     }
-
-    @Override
-    public Checkable getCurrentChecked() {
-        return mCurrentChecked;
-    }
-
-    @Override
-    public String getCurrentKey() {
-        return mCurrentEngine;
-    }
-
-    @Override
-    public void setCurrentChecked(Checkable current) {
-        mCurrentChecked = current;
-    }
-
-    @Override
-    public void setCurrentKey(String key) {
-        mCurrentEngine = key;
-        updateDefaultEngine(mCurrentEngine);
-    }
-
 }
diff --git a/src/com/android/settings/tts/TtsEnginePreference.java b/src/com/android/settings/tts/TtsEnginePreference.java
index 385b861..9a84002 100644
--- a/src/com/android/settings/tts/TtsEnginePreference.java
+++ b/src/com/android/settings/tts/TtsEnginePreference.java
@@ -20,19 +20,16 @@
 import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
-import android.os.Bundle;
 import android.speech.tts.TextToSpeech.EngineInfo;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceViewHolder;
 import android.util.Log;
-import android.view.View;
 import android.widget.Checkable;
 import android.widget.CompoundButton;
 import android.widget.RadioButton;
 
 import com.android.settings.R;
 import com.android.settings.SettingsActivity;
-import com.android.settings.Utils;
 
 
 public class TtsEnginePreference extends Preference {
@@ -40,31 +37,6 @@
     private static final String TAG = "TtsEnginePreference";
 
     /**
-     * Key for the name of the TTS engine passed in to the engine
-     * settings fragment {@link TtsEngineSettingsFragment}.
-     */
-    static final String FRAGMENT_ARGS_NAME = "name";
-
-    /**
-     * Key for the label of the TTS engine passed in to the engine
-     * settings fragment. This is used as the title of the fragment
-     * {@link TtsEngineSettingsFragment}.
-     */
-    static final String FRAGMENT_ARGS_LABEL = "label";
-
-    /**
-     * Key for the voice data data passed in to the engine settings
-     * fragmetn {@link TtsEngineSettingsFragment}.
-     */
-    static final String FRAGMENT_ARGS_VOICES = "voices";
-
-    /**
-     * The preference activity that owns this preference. Required
-     * for instantiating the engine specific settings screen.
-     */
-    private final SettingsActivity mSettingsActivity;
-
-    /**
      * The engine information for the engine this preference represents.
      * Contains it's name, label etc. which are used for display.
      */
@@ -81,7 +53,6 @@
      */
     private volatile boolean mPreventRadioButtonCallbacks;
 
-    private View mSettingsIcon;
     private RadioButton mRadioButton;
     private Intent mVoiceCheckData;
 
@@ -99,7 +70,6 @@
         setLayoutResource(R.layout.preference_tts_engine);
 
         mSharedState = state;
-        mSettingsActivity = prefActivity;
         mEngineInfo = info;
         mPreventRadioButtonCallbacks = false;
 
@@ -130,52 +100,10 @@
         mPreventRadioButtonCallbacks = false;
 
         mRadioButton = rb;
-
-        mSettingsIcon = view.findViewById(R.id.tts_engine_settings);
-        // Will be enabled only the engine has passed the voice check, and
-        // is currently enabled.
-        mSettingsIcon.setEnabled(isChecked && mVoiceCheckData != null);
-        if (!isChecked) {
-            mSettingsIcon.setAlpha(Utils.DISABLED_ALPHA);
-        }
-        mSettingsIcon.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                Bundle args = new Bundle();
-                args.putString(FRAGMENT_ARGS_NAME, mEngineInfo.name);
-                args.putString(FRAGMENT_ARGS_LABEL, mEngineInfo.label);
-                if (mVoiceCheckData != null) {
-                    args.putParcelable(FRAGMENT_ARGS_VOICES, mVoiceCheckData);
-                }
-
-                // Note that we use this instead of the (easier to use)
-                // SettingsActivity.startPreferenceFragment because the
-                // title will not be updated correctly in the fragment
-                // breadcrumb since it isn't inflated from the XML layout.
-                mSettingsActivity.startPreferencePanel(
-                        TtsEngineSettingsFragment.class.getName(),
-                        args, 0, mEngineInfo.label, null, 0);
-            }
-        });
-
-        if (mVoiceCheckData != null) {
-            mSettingsIcon.setEnabled(mRadioButton.isChecked());
-        }
     }
 
     public void setVoiceDataDetails(Intent data) {
         mVoiceCheckData = data;
-        // This might end up running before getView aboive, in which
-        // case mSettingsIcon && mRadioButton will be null. In this case
-        // getView will set the right values.
-        if (mSettingsIcon != null && mRadioButton != null) {
-            if (mRadioButton.isChecked()) {
-                mSettingsIcon.setEnabled(true);
-            } else {
-                mSettingsIcon.setEnabled(false);
-                mSettingsIcon.setAlpha(Utils.DISABLED_ALPHA);
-            }
-        }
     }
 
     private boolean shouldDisplayDataAlert() {
@@ -227,8 +155,6 @@
                 // Privileged engine, set it current
                 makeCurrentEngine(buttonView);
             }
-        } else {
-            mSettingsIcon.setEnabled(false);
         }
     }
 
@@ -239,7 +165,6 @@
         mSharedState.setCurrentChecked(current);
         mSharedState.setCurrentKey(getKey());
         callChangeListener(mSharedState.getCurrentKey());
-        mSettingsIcon.setEnabled(true);
     }
 
 
diff --git a/src/com/android/settings/tts/TtsEnginePreferenceFragment.java b/src/com/android/settings/tts/TtsEnginePreferenceFragment.java
new file mode 100644
index 0000000..e0ed8b7
--- /dev/null
+++ b/src/com/android/settings/tts/TtsEnginePreferenceFragment.java
@@ -0,0 +1,194 @@
+package com.android.settings.tts;
+
+import android.speech.tts.TextToSpeech;
+import com.android.settings.R;
+import android.os.Bundle;
+import com.android.settings.SettingsPreferenceFragment;
+import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+import android.support.v7.preference.PreferenceCategory;
+import android.speech.tts.TtsEngines;
+import android.speech.tts.TextToSpeech.EngineInfo;
+import com.android.settings.SettingsActivity;
+import com.android.settings.tts.TtsEnginePreference.RadioButtonGroupState;
+import android.widget.Checkable;
+import android.util.Log;
+import static android.provider.Settings.Secure.TTS_DEFAULT_SYNTH;
+import com.android.settings.search.Indexable;
+import com.android.settings.search.BaseSearchIndexProvider;
+import android.content.Context;
+import android.provider.SearchIndexableResource;
+
+import java.util.List;
+import java.util.Arrays;
+
+public class TtsEnginePreferenceFragment extends SettingsPreferenceFragment //implements
+        implements RadioButtonGroupState, Indexable {
+    private static final String TAG = "TtsEnginePreferenceFragment";
+
+    private static final int VOICE_DATA_INTEGRITY_CHECK = 1977;
+
+    /** The currently selected engine. */
+    private String mCurrentEngine;
+
+    /**
+     * The engine checkbox that is currently checked. Saves us a bit of effort in deducing the right
+     * one from the currently selected engine.
+     */
+    private Checkable mCurrentChecked;
+
+    /**
+     * The previously selected TTS engine. Useful for rollbacks if the users choice is not loaded or
+     * fails a voice integrity check.
+     */
+    private String mPreviousEngine;
+
+    private PreferenceCategory mEnginePreferenceCategory;
+
+    private TextToSpeech mTts = null;
+    private TtsEngines mEnginesHelper = null;
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        addPreferencesFromResource(R.xml.tts_engine_picker);
+
+        mEnginePreferenceCategory =
+                (PreferenceCategory) findPreference("tts_engine_preference_category");
+        mEnginesHelper = new TtsEngines(getActivity().getApplicationContext());
+
+        mTts = new TextToSpeech(getActivity().getApplicationContext(), null);
+
+        initSettings();
+    }
+
+    @Override
+    public int getMetricsCategory() {
+        return MetricsEvent.TTS_ENGINE_SETTINGS;
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        if (mTts != null) {
+            mTts.shutdown();
+            mTts = null;
+        }
+    }
+
+    private void initSettings() {
+        if (mTts != null) {
+            mCurrentEngine = mTts.getCurrentEngine();
+        }
+
+        mEnginePreferenceCategory.removeAll();
+
+        SettingsActivity activity = (SettingsActivity) getActivity();
+
+        List<EngineInfo> engines = mEnginesHelper.getEngines();
+        for (EngineInfo engine : engines) {
+            TtsEnginePreference enginePref =
+                    new TtsEnginePreference(getPrefContext(), engine, this, activity);
+            mEnginePreferenceCategory.addPreference(enginePref);
+        }
+    }
+
+    @Override
+    public Checkable getCurrentChecked() {
+        return mCurrentChecked;
+    }
+
+    @Override
+    public String getCurrentKey() {
+        return mCurrentEngine;
+    }
+
+    @Override
+    public void setCurrentChecked(Checkable current) {
+        mCurrentChecked = current;
+    }
+
+    /**
+     * The initialization listener used when the user changes his choice of engine (as opposed to
+     * when then screen is being initialized for the first time).
+     */
+    private final TextToSpeech.OnInitListener mUpdateListener =
+            new TextToSpeech.OnInitListener() {
+                @Override
+                public void onInit(int status) {
+                    onUpdateEngine(status);
+                }
+            };
+
+    private void updateDefaultEngine(String engine) {
+        Log.d(TAG, "Updating default synth to : " + engine);
+
+        // Keep track of the previous engine that was being used. So that
+        // we can reuse the previous engine.
+        //
+        // Note that if TextToSpeech#getCurrentEngine is not null, it means at
+        // the very least that we successfully bound to the engine service.
+        mPreviousEngine = mTts.getCurrentEngine();
+
+        // Step 1: Shut down the existing TTS engine.
+        Log.i(TAG, "Shutting down current tts engine");
+        if (mTts != null) {
+            try {
+                mTts.shutdown();
+                mTts = null;
+            } catch (Exception e) {
+                Log.e(TAG, "Error shutting down TTS engine" + e);
+            }
+        }
+
+        // Step 2: Connect to the new TTS engine.
+        // Step 3 is continued on #onUpdateEngine (below) which is called when
+        // the app binds successfully to the engine.
+        Log.i(TAG, "Updating engine : Attempting to connect to engine: " + engine);
+        mTts = new TextToSpeech(getActivity().getApplicationContext(), mUpdateListener, engine);
+        Log.i(TAG, "Success");
+    }
+
+    /**
+     * Step 3: We have now bound to the TTS engine the user requested. We will attempt to check
+     * voice data for the engine if we successfully bound to it, or revert to the previous engine if
+     * we didn't.
+     */
+    public void onUpdateEngine(int status) {
+        if (status == TextToSpeech.SUCCESS) {
+            Log.d(
+                    TAG,
+                    "Updating engine: Successfully bound to the engine: "
+                            + mTts.getCurrentEngine());
+            android.provider.Settings.Secure.putString(
+                    getContentResolver(), TTS_DEFAULT_SYNTH, mTts.getCurrentEngine());
+        } else {
+            Log.d(TAG, "Updating engine: Failed to bind to engine, reverting.");
+            if (mPreviousEngine != null) {
+                // This is guaranteed to at least bind, since mPreviousEngine would be
+                // null if the previous bind to this engine failed.
+                mTts =
+                        new TextToSpeech(
+                                getActivity().getApplicationContext(), null, mPreviousEngine);
+            }
+            mPreviousEngine = null;
+        }
+    }
+
+    @Override
+    public void setCurrentKey(String key) {
+        mCurrentEngine = key;
+        updateDefaultEngine(mCurrentEngine);
+    }
+
+    public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+            new BaseSearchIndexProvider() {
+                @Override
+                public List<SearchIndexableResource> getXmlResourcesToIndex(
+                        Context context, boolean enabled) {
+                    Log.i(TAG, "Indexing");
+                    final SearchIndexableResource sir = new SearchIndexableResource(context);
+                    sir.xmlResId = R.xml.tts_engine_picker;
+                    return Arrays.asList(sir);
+                }
+            };
+}
diff --git a/src/com/android/settings/tts/TtsEngineSettingsFragment.java b/src/com/android/settings/tts/TtsEngineSettingsFragment.java
deleted file mode 100644
index 42222df..0000000
--- a/src/com/android/settings/tts/TtsEngineSettingsFragment.java
+++ /dev/null
@@ -1,370 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS 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.tts;
-
-import android.content.ActivityNotFoundException;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.os.Bundle;
-import android.speech.tts.TextToSpeech;
-import android.speech.tts.TtsEngines;
-import android.support.v7.preference.ListPreference;
-import android.support.v7.preference.Preference;
-import android.support.v7.preference.Preference.OnPreferenceChangeListener;
-import android.support.v7.preference.Preference.OnPreferenceClickListener;
-import android.support.v7.preference.PreferenceScreen;
-import android.text.TextUtils;
-import android.util.Log;
-import android.util.Pair;
-
-import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
-import com.android.settings.R;
-import com.android.settings.SettingsPreferenceFragment;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Locale;
-
-
-public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implements
-        OnPreferenceClickListener, OnPreferenceChangeListener {
-    private static final String TAG = "TtsEngineSettings";
-    private static final boolean DBG = false;
-
-    private static final String KEY_ENGINE_LOCALE = "tts_default_lang";
-    private static final String KEY_ENGINE_SETTINGS = "tts_engine_settings";
-    private static final String KEY_INSTALL_DATA = "tts_install_data";
-
-    private static final String STATE_KEY_LOCALE_ENTRIES = "locale_entries";
-    private static final String STATE_KEY_LOCALE_ENTRY_VALUES= "locale_entry_values";
-    private static final String STATE_KEY_LOCALE_VALUE = "locale_value";
-
-    private static final int VOICE_DATA_INTEGRITY_CHECK = 1977;
-
-    private TtsEngines mEnginesHelper;
-    private ListPreference mLocalePreference;
-    private Preference mEngineSettingsPreference;
-    private Preference mInstallVoicesPreference;
-    private Intent mEngineSettingsIntent;
-    private Intent mVoiceDataDetails;
-
-    private TextToSpeech mTts;
-
-    private int mSelectedLocaleIndex = -1;
-
-    private final TextToSpeech.OnInitListener mTtsInitListener = new TextToSpeech.OnInitListener() {
-        @Override
-        public void onInit(int status) {
-            if (status != TextToSpeech.SUCCESS) {
-                finishFragment();
-            } else {
-                getActivity().runOnUiThread(new Runnable() {
-                    @Override
-                    public void run() {
-                        mLocalePreference.setEnabled(true);
-                    }
-                });
-            }
-        }
-    };
-
-    private final BroadcastReceiver mLanguagesChangedReceiver = new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            // Installed or uninstalled some data packs
-            if (TextToSpeech.Engine.ACTION_TTS_DATA_INSTALLED.equals(intent.getAction())) {
-                checkTtsData();
-            }
-        }
-    };
-
-    public TtsEngineSettingsFragment() {
-        super();
-    }
-
-    @Override
-    public int getMetricsCategory() {
-        return MetricsEvent.TTS_ENGINE_SETTINGS;
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        addPreferencesFromResource(R.xml.tts_engine_settings);
-        mEnginesHelper = new TtsEngines(getActivity());
-
-        final PreferenceScreen root = getPreferenceScreen();
-        mLocalePreference = (ListPreference) root.findPreference(KEY_ENGINE_LOCALE);
-        mLocalePreference.setOnPreferenceChangeListener(this);
-        mEngineSettingsPreference = root.findPreference(KEY_ENGINE_SETTINGS);
-        mEngineSettingsPreference.setOnPreferenceClickListener(this);
-        mInstallVoicesPreference = root.findPreference(KEY_INSTALL_DATA);
-        mInstallVoicesPreference.setOnPreferenceClickListener(this);
-
-        root.setTitle(getEngineLabel());
-        root.setKey(getEngineName());
-        mEngineSettingsPreference.setTitle(getResources().getString(
-                R.string.tts_engine_settings_title, getEngineLabel()));
-
-        mEngineSettingsIntent = mEnginesHelper.getSettingsIntent(getEngineName());
-        if (mEngineSettingsIntent == null) {
-            mEngineSettingsPreference.setEnabled(false);
-        }
-        mInstallVoicesPreference.setEnabled(false);
-
-        if (savedInstanceState == null) {
-            mLocalePreference.setEnabled(false);
-            mLocalePreference.setEntries(new CharSequence[0]);
-            mLocalePreference.setEntryValues(new CharSequence[0]);
-        } else {
-            // Repopulate mLocalePreference with saved state. Will be updated later with
-            // up-to-date values when checkTtsData() calls back with results.
-            final CharSequence[] entries =
-                    savedInstanceState.getCharSequenceArray(STATE_KEY_LOCALE_ENTRIES);
-            final CharSequence[] entryValues =
-                    savedInstanceState.getCharSequenceArray(STATE_KEY_LOCALE_ENTRY_VALUES);
-            final CharSequence value =
-                    savedInstanceState.getCharSequence(STATE_KEY_LOCALE_VALUE);
-
-            mLocalePreference.setEntries(entries);
-            mLocalePreference.setEntryValues(entryValues);
-            mLocalePreference.setValue(value != null ? value.toString() : null);
-            mLocalePreference.setEnabled(entries.length > 0);
-        }
-
-        mVoiceDataDetails = getArguments().getParcelable(TtsEnginePreference.FRAGMENT_ARGS_VOICES);
-
-        mTts = new TextToSpeech(getActivity().getApplicationContext(), mTtsInitListener,
-                getEngineName());
-
-        // Check if data packs changed
-        checkTtsData();
-
-        getActivity().registerReceiver(mLanguagesChangedReceiver,
-                new IntentFilter(TextToSpeech.Engine.ACTION_TTS_DATA_INSTALLED));
-    }
-
-    @Override
-    public void onDestroy() {
-        getActivity().unregisterReceiver(mLanguagesChangedReceiver);
-        mTts.shutdown();
-        super.onDestroy();
-    }
-
-    @Override
-    public void onSaveInstanceState(Bundle outState) {
-        super.onSaveInstanceState(outState);
-
-        // Save the mLocalePreference values, so we can repopulate it with entries.
-        outState.putCharSequenceArray(STATE_KEY_LOCALE_ENTRIES,
-                mLocalePreference.getEntries());
-        outState.putCharSequenceArray(STATE_KEY_LOCALE_ENTRY_VALUES,
-                mLocalePreference.getEntryValues());
-        outState.putCharSequence(STATE_KEY_LOCALE_VALUE,
-                mLocalePreference.getValue());
-    }
-
-    private final void checkTtsData() {
-        Intent intent = new Intent(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
-        intent.setPackage(getEngineName());
-        try {
-            if (DBG) Log.d(TAG, "Updating engine: Checking voice data: " + intent.toUri(0));
-            startActivityForResult(intent, VOICE_DATA_INTEGRITY_CHECK);
-        } catch (ActivityNotFoundException ex) {
-            Log.e(TAG, "Failed to check TTS data, no activity found for " + intent + ")");
-        }
-    }
-
-    @Override
-    public void onActivityResult(int requestCode, int resultCode, Intent data) {
-        if (requestCode == VOICE_DATA_INTEGRITY_CHECK) {
-            if (resultCode != TextToSpeech.Engine.CHECK_VOICE_DATA_FAIL) {
-                updateVoiceDetails(data);
-            } else {
-                Log.e(TAG, "CheckVoiceData activity failed");
-            }
-        }
-    }
-
-    private void updateVoiceDetails(Intent data) {
-        if (data == null){
-            Log.e(TAG, "Engine failed voice data integrity check (null return)" +
-                    mTts.getCurrentEngine());
-            return;
-        }
-        mVoiceDataDetails = data;
-
-        if (DBG) Log.d(TAG, "Parsing voice data details, data: " + mVoiceDataDetails.toUri(0));
-
-        final ArrayList<String> available = mVoiceDataDetails.getStringArrayListExtra(
-                TextToSpeech.Engine.EXTRA_AVAILABLE_VOICES);
-        final ArrayList<String> unavailable = mVoiceDataDetails.getStringArrayListExtra(
-                TextToSpeech.Engine.EXTRA_UNAVAILABLE_VOICES);
-
-        if (unavailable != null && unavailable.size() > 0) {
-            mInstallVoicesPreference.setEnabled(true);
-        } else {
-            mInstallVoicesPreference.setEnabled(false);
-        }
-
-        if (available == null){
-            Log.e(TAG, "TTS data check failed (available == null).");
-            mLocalePreference.setEnabled(false);
-            return;
-        } else {
-            updateDefaultLocalePref(available);
-        }
-    }
-
-    private void updateDefaultLocalePref(ArrayList<String> availableLangs) {
-        if (availableLangs == null || availableLangs.size() == 0) {
-            mLocalePreference.setEnabled(false);
-            return;
-        }
-        Locale currentLocale = null;
-        if (!mEnginesHelper.isLocaleSetToDefaultForEngine(getEngineName())) {
-            currentLocale = mEnginesHelper.getLocalePrefForEngine(getEngineName());
-        }
-
-        ArrayList<Pair<String, Locale>> entryPairs =
-                new ArrayList<Pair<String, Locale>>(availableLangs.size());
-        for (int i = 0; i < availableLangs.size(); i++) {
-            Locale locale = mEnginesHelper.parseLocaleString(availableLangs.get(i));
-            if (locale != null){
-                entryPairs.add(new Pair<String, Locale>(
-                        locale.getDisplayName(), locale));
-            }
-        }
-
-        // Sort it
-        Collections.sort(entryPairs, new Comparator<Pair<String, Locale>>() {
-            @Override
-            public int compare(Pair<String, Locale> lhs, Pair<String, Locale> rhs) {
-                return lhs.first.compareToIgnoreCase(rhs.first);
-            }
-        });
-
-        // Get two arrays out of one of pairs
-        mSelectedLocaleIndex = 0; // Will point to the R.string.tts_lang_use_system value
-        CharSequence[] entries = new CharSequence[availableLangs.size()+1];
-        CharSequence[] entryValues = new CharSequence[availableLangs.size()+1];
-
-        entries[0] = getActivity().getString(R.string.tts_lang_use_system);
-        entryValues[0] = "";
-
-        int i = 1;
-        for (Pair<String, Locale> entry : entryPairs) {
-            if (entry.second.equals(currentLocale)) {
-                mSelectedLocaleIndex = i;
-            }
-            entries[i] = entry.first;
-            entryValues[i++] = entry.second.toString();
-        }
-
-        mLocalePreference.setEntries(entries);
-        mLocalePreference.setEntryValues(entryValues);
-        mLocalePreference.setEnabled(true);
-        setLocalePreference(mSelectedLocaleIndex);
-    }
-
-    /** Set entry from entry table in mLocalePreference */
-    private void setLocalePreference(int index) {
-        if (index < 0) {
-            mLocalePreference.setValue("");
-            mLocalePreference.setSummary(R.string.tts_lang_not_selected);
-        } else {
-            mLocalePreference.setValueIndex(index);
-            mLocalePreference.setSummary(mLocalePreference.getEntries()[index]);
-        }
-    }
-
-    /**
-     * Ask the current default engine to launch the matching INSTALL_TTS_DATA activity
-     * so the required TTS files are properly installed.
-     */
-    private void installVoiceData() {
-        if (TextUtils.isEmpty(getEngineName())) return;
-        Intent intent = new Intent(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
-        intent.setPackage(getEngineName());
-        try {
-            Log.v(TAG, "Installing voice data: " + intent.toUri(0));
-            startActivity(intent);
-        } catch (ActivityNotFoundException ex) {
-            Log.e(TAG, "Failed to install TTS data, no acitivty found for " + intent + ")");
-        }
-    }
-
-    @Override
-    public boolean onPreferenceClick(Preference preference) {
-        if (preference == mInstallVoicesPreference) {
-            installVoiceData();
-            return true;
-        } else if (preference == mEngineSettingsPreference) {
-            startActivity(mEngineSettingsIntent);
-            return true;
-        }
-
-        return false;
-    }
-
-    @Override
-    public boolean onPreferenceChange(Preference preference, Object newValue) {
-        if (preference == mLocalePreference) {
-            String localeString = (String) newValue;
-            updateLanguageTo((!TextUtils.isEmpty(localeString) ?
-                    mEnginesHelper.parseLocaleString(localeString) : null));
-            return true;
-        }
-        return false;
-    }
-
-    private void updateLanguageTo(Locale locale) {
-        int selectedLocaleIndex = -1;
-        String localeString = (locale != null) ? locale.toString() : "";
-        for (int i=0; i < mLocalePreference.getEntryValues().length; i++) {
-            if (localeString.equalsIgnoreCase(mLocalePreference.getEntryValues()[i].toString())) {
-                selectedLocaleIndex = i;
-                break;
-            }
-        }
-
-        if (selectedLocaleIndex == -1) {
-            Log.w(TAG, "updateLanguageTo called with unknown locale argument");
-            return;
-        }
-        mLocalePreference.setSummary(mLocalePreference.getEntries()[selectedLocaleIndex]);
-        mSelectedLocaleIndex = selectedLocaleIndex;
-
-        mEnginesHelper.updateLocalePrefForEngine(getEngineName(), locale);
-
-        if (getEngineName().equals(mTts.getCurrentEngine())) {
-            // Null locale means "use system default"
-            mTts.setLanguage((locale != null) ? locale : Locale.getDefault());
-        }
-    }
-
-    private String getEngineName() {
-        return getArguments().getString(TtsEnginePreference.FRAGMENT_ARGS_NAME);
-    }
-
-    private String getEngineLabel() {
-        return getArguments().getString(TtsEnginePreference.FRAGMENT_ARGS_LABEL);
-    }
-}
diff --git a/src/com/android/settings/tts/TtsSlidersFragment.java b/src/com/android/settings/tts/TtsSlidersFragment.java
new file mode 100644
index 0000000..7fdbd62
--- /dev/null
+++ b/src/com/android/settings/tts/TtsSlidersFragment.java
@@ -0,0 +1,207 @@
+package com.android.settings.tts;
+
+import android.speech.tts.TextToSpeech;
+import com.android.settings.R;
+import android.os.Bundle;
+import com.android.settings.SettingsPreferenceFragment;
+import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+import android.util.Log;
+import com.android.settings.SeekBarPreference;
+import android.support.v7.preference.Preference;
+import android.content.ContentResolver;
+import com.android.settings.search.Indexable;
+import com.android.settings.search.BaseSearchIndexProvider;
+import android.content.Context;
+import android.provider.SearchIndexableResource;
+
+import java.util.List;
+import java.util.Arrays;
+
+import static android.provider.Settings.Secure.TTS_DEFAULT_PITCH;
+import static android.provider.Settings.Secure.TTS_DEFAULT_RATE;
+
+public class TtsSlidersFragment extends SettingsPreferenceFragment
+        implements Preference.OnPreferenceChangeListener,
+                Preference.OnPreferenceClickListener,
+                Indexable {
+    private static final String TAG = TtsSlidersFragment.class.getSimpleName();
+    private static final boolean DBG = false;
+
+    /** Preference key for the TTS pitch selection slider. */
+    private static final String KEY_DEFAULT_PITCH = "tts_default_pitch";
+
+    /** Preference key for the TTS rate selection slider. */
+    private static final String KEY_DEFAULT_RATE = "tts_default_rate";
+
+    /** Preference key for the TTS reset speech rate preference. */
+    private static final String KEY_RESET_SPEECH_RATE = "reset_speech_rate";
+
+    /** Preference key for the TTS reset speech pitch preference. */
+    private static final String KEY_RESET_SPEECH_PITCH = "reset_speech_pitch";
+
+    /**
+     * Speech rate value. This value should be kept in sync with the max value set in tts_settings
+     * xml.
+     */
+    private static final int MAX_SPEECH_RATE = 600;
+
+    private static final int MIN_SPEECH_RATE = 10;
+
+    /**
+     * Speech pitch value. TTS pitch value varies from 25 to 400, where 100 is the value for normal
+     * pitch. The max pitch value is set to 400, based on feedback from users and the GoogleTTS
+     * pitch variation range. The range for pitch is not set in stone and should be readjusted based
+     * on user need. This value should be kept in sync with the max value set in tts_settings xml.
+     */
+    private static final int MAX_SPEECH_PITCH = 400;
+
+    private static final int MIN_SPEECH_PITCH = 25;
+
+    private int mDefaultPitch = TextToSpeech.Engine.DEFAULT_PITCH;
+    private int mDefaultRate = TextToSpeech.Engine.DEFAULT_RATE;
+
+    private SeekBarPreference mDefaultPitchPref;
+    private SeekBarPreference mDefaultRatePref;
+    private Preference mResetSpeechRate;
+    private Preference mResetSpeechPitch;
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        addPreferencesFromResource(R.xml.tts_sliders);
+
+        mResetSpeechRate = findPreference(KEY_RESET_SPEECH_RATE);
+        mResetSpeechRate.setOnPreferenceClickListener(this);
+        mResetSpeechPitch = findPreference(KEY_RESET_SPEECH_PITCH);
+        mResetSpeechPitch.setOnPreferenceClickListener(this);
+
+        mDefaultPitchPref = (SeekBarPreference) findPreference(KEY_DEFAULT_PITCH);
+        mDefaultRatePref = (SeekBarPreference) findPreference(KEY_DEFAULT_RATE);
+
+        initSettings();
+    }
+
+    private void initSettings() {
+        final ContentResolver resolver = getContentResolver();
+        // Set up the default rate and pitch.
+        mDefaultRate =
+                android.provider.Settings.Secure.getInt(
+                        resolver, TTS_DEFAULT_RATE, TextToSpeech.Engine.DEFAULT_RATE);
+        mDefaultPitch =
+                android.provider.Settings.Secure.getInt(
+                        resolver, TTS_DEFAULT_PITCH, TextToSpeech.Engine.DEFAULT_PITCH);
+
+        mDefaultRatePref.setProgress(getSeekBarProgressFromValue(KEY_DEFAULT_RATE, mDefaultRate));
+        mDefaultRatePref.setOnPreferenceChangeListener(this);
+        mDefaultRatePref.setMax(getSeekBarProgressFromValue(KEY_DEFAULT_RATE, MAX_SPEECH_RATE));
+
+        mDefaultPitchPref.setProgress(
+                getSeekBarProgressFromValue(KEY_DEFAULT_PITCH, mDefaultPitch));
+        mDefaultPitchPref.setOnPreferenceChangeListener(this);
+        mDefaultPitchPref.setMax(getSeekBarProgressFromValue(KEY_DEFAULT_PITCH, MAX_SPEECH_PITCH));
+    }
+
+    /**
+     * The minimum speech pitch/rate value should be > 0 but the minimum value of a seekbar in
+     * android is fixed at 0. Therefore, we increment the seekbar progress with MIN_SPEECH_VALUE so
+     * that the minimum seekbar progress value is MIN_SPEECH_PITCH/RATE. SPEECH_VALUE =
+     * MIN_SPEECH_VALUE + SEEKBAR_PROGRESS
+     */
+    private int getValueFromSeekBarProgress(String preferenceKey, int progress) {
+        if (preferenceKey.equals(KEY_DEFAULT_RATE)) {
+            return MIN_SPEECH_RATE + progress;
+        } else if (preferenceKey.equals(KEY_DEFAULT_PITCH)) {
+            return MIN_SPEECH_PITCH + progress;
+        }
+        return progress;
+    }
+
+    /**
+     * Since we are appending the MIN_SPEECH value to the speech seekbar progress, the speech
+     * seekbar progress should be set to (speechValue - MIN_SPEECH value).
+     */
+    private int getSeekBarProgressFromValue(String preferenceKey, int value) {
+        if (preferenceKey.equals(KEY_DEFAULT_RATE)) {
+            return value - MIN_SPEECH_RATE;
+        } else if (preferenceKey.equals(KEY_DEFAULT_PITCH)) {
+            return value - MIN_SPEECH_PITCH;
+        }
+        return value;
+    }
+
+    @Override
+    public boolean onPreferenceChange(Preference preference, Object objValue) {
+        if (KEY_DEFAULT_RATE.equals(preference.getKey())) {
+            updateSpeechRate((Integer) objValue);
+        } else if (KEY_DEFAULT_PITCH.equals(preference.getKey())) {
+            updateSpeechPitchValue((Integer) objValue);
+        }
+        return true;
+    }
+
+    /** Called when mPlayExample, mResetSpeechRate or mResetSpeechPitch is clicked. */
+    @Override
+    public boolean onPreferenceClick(Preference preference) {
+        if (preference == mResetSpeechRate) {
+            int speechRateSeekbarProgress =
+                    getSeekBarProgressFromValue(KEY_DEFAULT_RATE, TextToSpeech.Engine.DEFAULT_RATE);
+            mDefaultRatePref.setProgress(speechRateSeekbarProgress);
+            updateSpeechRate(speechRateSeekbarProgress);
+            return true;
+        } else if (preference == mResetSpeechPitch) {
+            int pitchSeekbarProgress =
+                    getSeekBarProgressFromValue(
+                            KEY_DEFAULT_PITCH, TextToSpeech.Engine.DEFAULT_PITCH);
+            mDefaultPitchPref.setProgress(pitchSeekbarProgress);
+            updateSpeechPitchValue(pitchSeekbarProgress);
+            return true;
+        }
+        return false;
+    }
+
+    private void updateSpeechRate(int speechRateSeekBarProgress) {
+        mDefaultRate = getValueFromSeekBarProgress(KEY_DEFAULT_RATE, speechRateSeekBarProgress);
+        try {
+            android.provider.Settings.Secure.putInt(
+                    getContentResolver(), TTS_DEFAULT_RATE, mDefaultRate);
+            if (DBG) Log.d(TAG, "TTS default rate changed, now " + mDefaultRate);
+        } catch (NumberFormatException e) {
+            Log.e(TAG, "could not persist default TTS rate setting", e);
+        }
+        return;
+    }
+
+    private void updateSpeechPitchValue(int speechPitchSeekBarProgress) {
+        mDefaultPitch = getValueFromSeekBarProgress(KEY_DEFAULT_PITCH, speechPitchSeekBarProgress);
+        try {
+            android.provider.Settings.Secure.putInt(
+                    getContentResolver(), TTS_DEFAULT_PITCH, mDefaultPitch);
+            if (DBG) Log.d(TAG, "TTS default pitch changed, now" + mDefaultPitch);
+        } catch (NumberFormatException e) {
+            Log.e(TAG, "could not persist default TTS pitch setting", e);
+        }
+        return;
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+    }
+
+    @Override
+    public int getMetricsCategory() {
+        return MetricsEvent.TTS_SLIDERS;
+    }
+
+    public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+            new BaseSearchIndexProvider() {
+                @Override
+                public List<SearchIndexableResource> getXmlResourcesToIndex(
+                        Context context, boolean enabled) {
+                    Log.i(TAG, "Indexing");
+                    final SearchIndexableResource sir = new SearchIndexableResource(context);
+                    sir.xmlResId = R.xml.tts_sliders;
+                    return Arrays.asList(sir);
+                }
+            };
+}
diff --git a/src/com/android/settings/vpn2/ConfigDialogFragment.java b/src/com/android/settings/vpn2/ConfigDialogFragment.java
index cf748e4..5aa10b9 100644
--- a/src/com/android/settings/vpn2/ConfigDialogFragment.java
+++ b/src/com/android/settings/vpn2/ConfigDialogFragment.java
@@ -249,8 +249,7 @@
             if (!isConnected(profile)) {
                 return true;
             }
-            VpnUtils.clearLockdownVpn(mContext);
-            return mService.prepareVpn(null, VpnConfig.LEGACY_VPN, UserHandle.myUserId());
+            return VpnUtils.disconnectLegacyVpn(getContext());
         } catch (RemoteException e) {
             Log.e(TAG, "Failed to disconnect", e);
             return false;
diff --git a/src/com/android/settings/vpn2/VpnUtils.java b/src/com/android/settings/vpn2/VpnUtils.java
index c9f971d..a36cce8 100644
--- a/src/com/android/settings/vpn2/VpnUtils.java
+++ b/src/com/android/settings/vpn2/VpnUtils.java
@@ -23,7 +23,9 @@
 import android.provider.Settings;
 import android.security.Credentials;
 import android.security.KeyStore;
+import android.util.Log;
 
+import com.android.internal.net.LegacyVpnInfo;
 import com.android.internal.net.VpnConfig;
 
 /**
@@ -32,6 +34,9 @@
  * Keystore methods should only be called in system user
  */
 public class VpnUtils {
+
+    private static final String TAG = "VpnUtils";
+
     public static String getLockdownVpn() {
         final byte[] value = KeyStore.getInstance().get(Credentials.LOCKDOWN_VPN);
         return value == null ? null : new String(value);
@@ -86,4 +91,20 @@
     public static boolean isAlwaysOnVpnSet(ConnectivityManagerWrapper cm, final int userId) {
         return cm.getAlwaysOnVpnPackageForUser(userId) != null;
     }
+
+    public static boolean disconnectLegacyVpn(Context context) {
+        try {
+            int userId = context.getUserId();
+            IConnectivityManager connectivityService = getIConnectivityManager();
+            LegacyVpnInfo currentLegacyVpn = connectivityService.getLegacyVpnInfo(userId);
+            if (currentLegacyVpn != null) {
+                clearLockdownVpn(context);
+                connectivityService.prepareVpn(null, VpnConfig.LEGACY_VPN, userId);
+                return true;
+            }
+        } catch (RemoteException e) {
+            Log.e(TAG, "Legacy VPN could not be disconnected", e);
+        }
+        return false;
+    }
 }
diff --git a/src/com/android/settings/webview/UserPackageWrapper.java b/src/com/android/settings/webview/UserPackageWrapper.java
new file mode 100644
index 0000000..8fbb10c
--- /dev/null
+++ b/src/com/android/settings/webview/UserPackageWrapper.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+package com.android.settings.webview;
+
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.UserInfo;
+import android.webkit.UserPackage;
+
+import java.util.List;
+
+/**
+ * Wrapper class around android.webkit.UserPackage - to be able to use UserPackage in Robolectric
+ * tests (such tests currently don't support mocking hidden classes).
+ */
+interface UserPackageWrapper {
+    UserInfo getUserInfo();
+    PackageInfo getPackageInfo();
+    boolean isEnabledPackage();
+    boolean isInstalledPackage();
+}
diff --git a/src/com/android/settings/webview/UserPackageWrapperImpl.java b/src/com/android/settings/webview/UserPackageWrapperImpl.java
new file mode 100644
index 0000000..1ea7c2e
--- /dev/null
+++ b/src/com/android/settings/webview/UserPackageWrapperImpl.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+package com.android.settings.webview;
+
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.UserInfo;
+import android.webkit.UserPackage;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Default implementation of UserPackageWrapper.
+ */
+class UserPackageWrapperImpl implements UserPackageWrapper {
+    private final UserPackage mUserPackage;
+
+    UserPackageWrapperImpl(UserPackage userPackage) {
+        mUserPackage = userPackage;
+    }
+
+    public UserInfo getUserInfo() {
+        return mUserPackage.getUserInfo();
+    }
+
+    public PackageInfo getPackageInfo() {
+        return mUserPackage.getPackageInfo();
+    }
+
+    public boolean isEnabledPackage() {
+        return mUserPackage.isEnabledPackage();
+    }
+
+    public boolean isInstalledPackage() {
+        return mUserPackage.isInstalledPackage();
+    }
+}
diff --git a/src/com/android/settings/webview/WebViewAppListAdapter.java b/src/com/android/settings/webview/WebViewAppListAdapter.java
new file mode 100644
index 0000000..4c36a47
--- /dev/null
+++ b/src/com/android/settings/webview/WebViewAppListAdapter.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+package com.android.settings.webview;
+
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.os.RemoteException;
+import android.graphics.Color;
+import android.support.annotation.VisibleForTesting;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+
+import com.android.settings.applications.AppViewHolder;
+import com.android.settings.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Custom list adapter for Settings to choose WebView package.
+ * Note: parts of this class are copied from AppPicker.java.
+ */
+class WebViewAppListAdapter extends ArrayAdapter<WebViewApplicationInfo> {
+    private final LayoutInflater mInflater;
+    private final String mCurrentWebViewPackageName;
+
+    public WebViewAppListAdapter(Context context,
+            WebViewUpdateServiceWrapper webviewUpdateServiceWrapper) {
+        super(context, 0);
+        mInflater = LayoutInflater.from(context);
+
+        final List<WebViewApplicationInfo> packageInfoList =
+                new ArrayList<WebViewApplicationInfo>();
+        List<ApplicationInfo> pkgs =
+                webviewUpdateServiceWrapper.getValidWebViewApplicationInfos(getContext());
+        for (ApplicationInfo ai : pkgs) {
+            WebViewApplicationInfo info = new WebViewApplicationInfo(ai,
+                    ai.loadLabel(context.getPackageManager()).toString(),
+                    getDisabledReason(webviewUpdateServiceWrapper, context, ai.packageName));
+            packageInfoList.add(info);
+        }
+        addAll(packageInfoList);
+
+        PackageInfo currentWebViewPackage = webviewUpdateServiceWrapper.getCurrentWebViewPackage();
+        mCurrentWebViewPackageName =
+                currentWebViewPackage == null ? null : currentWebViewPackage.packageName;
+    }
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+        // A ViewHolder keeps references to children views to avoid unnecessary calls
+        // to findViewById() on each row.
+        AppViewHolder holder = AppViewHolder.createOrRecycle(mInflater, convertView);
+        convertView = holder.rootView;
+        WebViewApplicationInfo info = getItem(position);
+        holder.appName.setText(info.label);
+        if (info.info != null) {
+            holder.appIcon.setImageDrawable(info.info.loadIcon(getContext().getPackageManager()));
+            // Allow disable-description to wrap - to be able to show several lines of text in case
+            // a package is disabled/uninstalled for several users.
+            holder.summary.setSingleLine(false);
+            if (!isEnabled(position)) {
+                holder.summary.setText(info.disabledReason);
+            } else {
+                holder.summary.setText("");
+            }
+        } else {
+            holder.appIcon.setImageDrawable(null);
+            holder.summary.setText("");
+        }
+        holder.disabled.setVisibility(View.GONE);
+        // Only allow a package to be chosen if it is enabled and installed for all users.
+        convertView.setEnabled(isEnabled(position));
+        if (info.info.packageName.equals(mCurrentWebViewPackageName)) {
+            convertView.setBackgroundColor(Color.GRAY);
+        } else {
+            convertView.setBackgroundColor(Color.WHITE);
+        }
+        return convertView;
+    }
+
+    @Override
+    public boolean isEnabled (int position) {
+        WebViewApplicationInfo info = getItem(position);
+        return info.disabledReason == null;
+    }
+
+    @Override
+    public boolean areAllItemsEnabled() {
+        int numItems = getCount();
+        for (int n = 0; n < numItems; n++) {
+            if (!isEnabled(n)) return false;
+        }
+        return true;
+    }
+
+    /**
+     * Returns the reason why a package cannot be used as WebView implementation.
+     * This is either because of it being disabled, uninstalled, or hidden for any user.
+     */
+    @VisibleForTesting
+    static String getDisabledReason(WebViewUpdateServiceWrapper webviewUpdateServiceWrapper,
+            Context context, String packageName) {
+        StringBuilder disabledReason = new StringBuilder();
+        List<UserPackageWrapper> userPackages =
+                webviewUpdateServiceWrapper.getPackageInfosAllUsers(context, packageName);
+        for (UserPackageWrapper userPackage : userPackages) {
+            if (!userPackage.isInstalledPackage()) {
+                // Package uninstalled/hidden
+                disabledReason.append(context.getString(
+                        R.string.webview_uninstalled_for_user, userPackage.getUserInfo().name));
+            } else if (!userPackage.isEnabledPackage()) {
+                // Package disabled
+                disabledReason.append(context.getString(
+                    R.string.webview_disabled_for_user, userPackage.getUserInfo().name));
+            }
+        }
+        if (disabledReason.length() == 0) return null;
+        return disabledReason.toString();
+    }
+}
+
diff --git a/src/com/android/settings/webview/WebViewAppPicker.java b/src/com/android/settings/webview/WebViewAppPicker.java
new file mode 100644
index 0000000..2417b00
--- /dev/null
+++ b/src/com/android/settings/webview/WebViewAppPicker.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.webview;
+
+import android.app.ListActivity;
+import android.content.pm.PackageInfo;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.RemoteException;
+import android.support.annotation.VisibleForTesting;
+import android.util.Log;
+import android.view.View;
+import android.webkit.WebViewFactory;
+import android.widget.ListView;
+
+import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+import com.android.settings.core.instrumentation.Instrumentable;
+import com.android.settings.core.instrumentation.VisibilityLoggerMixin;
+
+public class WebViewAppPicker extends ListActivity implements Instrumentable {
+    private static final String TAG = WebViewAppPicker.class.getSimpleName();
+    private WebViewAppListAdapter mAdapter;
+    private WebViewUpdateServiceWrapper mWebViewUpdateServiceWrapper;
+
+    private final VisibilityLoggerMixin mVisibilityLoggerMixin =
+            new VisibilityLoggerMixin(getMetricsCategory());
+
+    @Override
+    protected void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+
+        if (mWebViewUpdateServiceWrapper == null) {
+            setWebViewUpdateServiceWrapper(createDefaultWebViewUpdateServiceWrapper());
+        }
+        mAdapter = new WebViewAppListAdapter(this, mWebViewUpdateServiceWrapper);
+        setListAdapter(mAdapter);
+
+        mVisibilityLoggerMixin.onAttach(this);
+    }
+
+    @Override
+    protected void onListItemClick(ListView l, View v, int position, long id) {
+        WebViewApplicationInfo app = mAdapter.getItem(position);
+
+        if (mWebViewUpdateServiceWrapper.setWebViewProvider(app.info.packageName)) {
+            Intent intent = new Intent();
+            intent.setAction(app.info.packageName);
+            setResult(RESULT_OK, intent);
+        } else {
+            mWebViewUpdateServiceWrapper.showInvalidChoiceToast(this);
+        }
+        finish();
+    }
+
+    private WebViewUpdateServiceWrapper createDefaultWebViewUpdateServiceWrapper() {
+        return new WebViewUpdateServiceWrapper();
+    }
+
+    @VisibleForTesting
+    void setWebViewUpdateServiceWrapper(WebViewUpdateServiceWrapper wvusWrapper) {
+        mWebViewUpdateServiceWrapper = wvusWrapper;
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        mVisibilityLoggerMixin.onResume();
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        mVisibilityLoggerMixin.onPause();
+    }
+
+    @Override
+    public int getMetricsCategory() {
+        return MetricsEvent.WEBVIEW_IMPLEMENTATION;
+    }
+}
diff --git a/src/com/android/settings/webview/WebViewAppPreferenceController.java b/src/com/android/settings/webview/WebViewAppPreferenceController.java
new file mode 100644
index 0000000..cfb358e
--- /dev/null
+++ b/src/com/android/settings/webview/WebViewAppPreferenceController.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+package com.android.settings.webview;
+
+import android.app.Activity;
+import android.content.pm.PackageInfo;
+import android.content.Context;
+import android.content.Intent;
+import android.support.annotation.VisibleForTesting;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+
+import com.android.settings.DevelopmentSettings;
+import com.android.settings.core.PreferenceController;
+
+public class WebViewAppPreferenceController extends PreferenceController {
+
+    private static final String WEBVIEW_APP_KEY = "select_webview_provider";
+
+    private Context mContext;
+    private Preference mPreference;
+    private final WebViewUpdateServiceWrapper mWebViewUpdateServiceWrapper;
+
+    public WebViewAppPreferenceController(Context context) {
+        this(context, new WebViewUpdateServiceWrapper());
+    }
+
+    public WebViewAppPreferenceController(Context context,
+            WebViewUpdateServiceWrapper webviewUpdateServiceWrapper) {
+        super(context);
+        mContext = context;
+        mWebViewUpdateServiceWrapper = webviewUpdateServiceWrapper;
+    }
+
+    @Override
+    public boolean handlePreferenceTreeClick(Preference preference) {
+        if (getPreferenceKey().equals(preference.getKey())) {
+            return true;
+        }
+        return false;
+    }
+
+    public Intent getActivityIntent() {
+        return new Intent(mContext, WebViewAppPicker.class);
+    }
+
+    @Override
+    public void updateState(Preference preference) {
+        mPreference.setSummary(getCurrentWebViewPackageLabel(mContext));
+    }
+
+    @Override
+    public void displayPreference(PreferenceScreen screen) {
+        super.displayPreference(screen);
+        if (isAvailable()) {
+            mPreference = screen.findPreference(WEBVIEW_APP_KEY);
+        }
+    }
+
+    /**
+     * Handle the return-value from the WebViewAppPicker Activity.
+     */
+    public void onActivityResult(int resultCode, Intent data) {
+        // Update the preference summary no matter whether we succeeded to change the webview
+        // implementation correctly - we might have changed implementation to one the user did not
+        // choose.
+        updateState(null);
+    }
+
+    private String getCurrentWebViewPackageLabel(Context context) {
+        PackageInfo webViewPackage = mWebViewUpdateServiceWrapper.getCurrentWebViewPackage();
+        if (webViewPackage == null) return "";
+        return webViewPackage.applicationInfo.loadLabel(context.getPackageManager()).toString();
+    }
+
+
+    @Override
+    public String getPreferenceKey() {
+        return WEBVIEW_APP_KEY;
+    }
+
+    @Override
+    public boolean isAvailable() {
+        return true;
+    }
+
+    public void enablePreference(boolean enabled) {
+        if (isAvailable()) {
+            mPreference.setEnabled(enabled);
+        }
+    }
+}
diff --git a/src/com/android/settings/webview/WebViewApplicationInfo.java b/src/com/android/settings/webview/WebViewApplicationInfo.java
new file mode 100644
index 0000000..6879c59
--- /dev/null
+++ b/src/com/android/settings/webview/WebViewApplicationInfo.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+package com.android.settings.webview;
+
+import android.content.pm.ApplicationInfo;
+
+final class WebViewApplicationInfo {
+    final ApplicationInfo info;
+    final String label;
+    final String disabledReason;
+
+    public WebViewApplicationInfo(ApplicationInfo info, String label, String disabledReason) {
+        this.info = info;
+        this.label = label;
+        this.disabledReason = disabledReason;
+    }
+}
diff --git a/src/com/android/settings/webview/WebViewUpdateServiceWrapper.java b/src/com/android/settings/webview/WebViewUpdateServiceWrapper.java
new file mode 100644
index 0000000..b40be19
--- /dev/null
+++ b/src/com/android/settings/webview/WebViewUpdateServiceWrapper.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.webview;
+
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.os.RemoteException;
+import android.util.Log;
+import android.webkit.UserPackage;
+import android.webkit.WebViewFactory;
+import android.webkit.WebViewProviderInfo;
+import android.widget.Toast;
+
+import com.android.settings.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+class WebViewUpdateServiceWrapper {
+    private static final String TAG = "WVUSWrapper";
+
+    public WebViewUpdateServiceWrapper() {}
+
+    /**
+     * Fetch the package currently used as WebView implementation.
+     */
+    public PackageInfo getCurrentWebViewPackage() {
+        try {
+            return WebViewFactory.getUpdateService().getCurrentWebViewPackage();
+        } catch (RemoteException e) {
+            Log.e(TAG, e.toString());
+        }
+        return null;
+    }
+
+    /**
+     * Fetches ApplicationInfo objects for all currently valid WebView packages.
+     * A WebView package is considered valid if it can be used as a WebView implementation. The
+     * validity of a package is not dependent on whether the package is installed/enabled.
+     */
+    public List<ApplicationInfo> getValidWebViewApplicationInfos(Context context) {
+        WebViewProviderInfo[] providers = null;
+        try {
+            providers = WebViewFactory.getUpdateService().getValidWebViewPackages();
+        } catch (RemoteException e) {
+        }
+        List<ApplicationInfo> pkgs = new ArrayList<>();
+        for (WebViewProviderInfo provider : providers) {
+            try {
+                pkgs.add(context.getPackageManager().getApplicationInfo(
+                        provider.packageName, PACKAGE_FLAGS));
+            } catch (PackageManager.NameNotFoundException e) {
+            }
+        }
+        return pkgs;
+    }
+
+    /**
+     * Change WebView provider to {@param packageName}.
+     * @return whether the change succeeded.
+     */
+    public boolean setWebViewProvider(String packageName) {
+        try {
+            return packageName.equals(
+                    WebViewFactory.getUpdateService().changeProviderAndSetting(packageName));
+        } catch (RemoteException e) {
+            Log.e(TAG, "RemoteException when trying to change provider to " + packageName, e);
+        }
+        return false;
+    }
+
+    /**
+     * Fetch PackageInfos for the package named {@param packageName} for all users on the device.
+     */
+    public List<UserPackageWrapper> getPackageInfosAllUsers(Context context, String packageName) {
+        List<UserPackageWrapper> userPackageWrappers = new ArrayList<>();
+        List<UserPackage> userPackages =
+                UserPackage.getPackageInfosAllUsers(context, packageName, PACKAGE_FLAGS);
+        for (UserPackage userPackage : userPackages) {
+            userPackageWrappers.add(new UserPackageWrapperImpl(userPackage));
+        }
+        return userPackageWrappers;
+    }
+
+    /**
+     * Show a toast to explain the chosen package can no longer be chosen.
+     */
+    public void showInvalidChoiceToast(Context context) {
+        // The user chose a package that became invalid since the list was last updated,
+        // show a Toast to explain the situation.
+        Toast toast = Toast.makeText(context,
+                R.string.select_webview_provider_toast_text, Toast.LENGTH_SHORT);
+        toast.show();
+    }
+
+    static final int PACKAGE_FLAGS = PackageManager.MATCH_ANY_USER;
+}
diff --git a/src/com/android/settings/widget/MasterSwitchController.java b/src/com/android/settings/widget/MasterSwitchController.java
new file mode 100644
index 0000000..f7253fd
--- /dev/null
+++ b/src/com/android/settings/widget/MasterSwitchController.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.widget;
+
+import android.support.v7.preference.Preference;
+import android.widget.Switch;
+import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
+
+/*
+ * The switch controller that is used to update the switch widget in the MasterSwitchPreference
+ * layout.
+ */
+public class MasterSwitchController extends SwitchWidgetController implements
+    Preference.OnPreferenceChangeListener {
+
+    private final MasterSwitchPreference mPreference;
+
+    public MasterSwitchController(MasterSwitchPreference preference) {
+        mPreference = preference;
+    }
+
+    @Override
+    public void updateTitle(boolean isChecked) {
+    }
+
+    @Override
+    public void startListening() {
+        mPreference.setOnPreferenceChangeListener(this);
+    }
+
+    @Override
+    public void stopListening() {
+        mPreference.setOnPreferenceChangeListener(null);
+    }
+
+    @Override
+    public void setChecked(boolean checked) {
+        mPreference.setChecked(checked);
+    }
+
+    @Override
+    public boolean isChecked() {
+        return mPreference.isChecked();
+    }
+
+    @Override
+    public void setEnabled(boolean enabled) {
+        mPreference.setSwitchEnabled(enabled);
+    }
+
+    @Override
+    public boolean onPreferenceChange(Preference preference, Object newValue) {
+        if (mListener != null) {
+            return mListener.onSwitchToggled((Boolean) newValue);
+        }
+        return false;
+    }
+
+    @Override
+    public void setDisabledByAdmin(EnforcedAdmin admin) {
+        mPreference.setDisabledByAdmin(admin);
+    }
+
+    @Override
+    public Switch getSwitch() {
+        return mPreference.getSwitch();
+    }
+}
diff --git a/src/com/android/settings/widget/MasterSwitchPreference.java b/src/com/android/settings/widget/MasterSwitchPreference.java
new file mode 100644
index 0000000..4650730
--- /dev/null
+++ b/src/com/android/settings/widget/MasterSwitchPreference.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.widget;
+
+import android.content.Context;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceViewHolder;
+import android.util.AttributeSet;
+import android.widget.CompoundButton;
+import android.widget.Switch;
+
+import com.android.settings.R;
+import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
+
+/**
+ * A custom preference that provides inline switch toggle. It has a mandatory field for title, and
+ * optional fields for icon and sub-text.
+ */
+public class MasterSwitchPreference extends Preference {
+
+    private Switch mSwitch;
+    private boolean mChecked;
+
+    public MasterSwitchPreference(Context context, AttributeSet attrs,
+            int defStyleAttr, int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+        init();
+    }
+
+    public MasterSwitchPreference(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+        init();
+    }
+
+    public MasterSwitchPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        init();
+    }
+
+    public MasterSwitchPreference(Context context) {
+        super(context);
+        init();
+    }
+
+    @Override
+    public void onBindViewHolder(PreferenceViewHolder holder) {
+        super.onBindViewHolder(holder);
+        mSwitch = (Switch) holder.itemView.findViewById(R.id.switchWidget);
+        if (mSwitch != null) {
+            mSwitch.setChecked(mChecked);
+            mSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+                @Override
+                public void onCheckedChanged(CompoundButton button, boolean isChecked) {
+                    if (!callChangeListener(isChecked)) {
+                        button.setChecked(!isChecked);
+                    } else {
+                        persistBoolean(isChecked);
+                        mChecked = isChecked;
+                    }
+                }
+            });
+        }
+    }
+
+    public boolean isChecked() {
+        return mSwitch != null && mSwitch.isEnabled() && mChecked;
+    }
+
+    public void setChecked(boolean checked) {
+        mChecked = checked;
+        if (mSwitch != null) {
+            mSwitch.setChecked(checked);
+        }
+    }
+
+    public boolean isSwitchEnabled() {
+        return mSwitch != null && mSwitch.isEnabled();
+    }
+
+    public void setSwitchEnabled(boolean enabled) {
+        if (mSwitch != null) {
+            mSwitch.setEnabled(enabled);
+        }
+    }
+
+    /**
+     * If admin is not null, disables the switch.
+     * Otherwise, keep it enabled.
+     */
+    public void setDisabledByAdmin(EnforcedAdmin admin) {
+        setSwitchEnabled(admin == null);
+    }
+
+    public Switch getSwitch() {
+        return mSwitch;
+    }
+
+    private void init() {
+        setWidgetLayoutResource(R.layout.preference_widget_master_switch);
+    }
+}
diff --git a/src/com/android/settings/widget/SummaryUpdater.java b/src/com/android/settings/widget/SummaryUpdater.java
new file mode 100644
index 0000000..89752b9
--- /dev/null
+++ b/src/com/android/settings/widget/SummaryUpdater.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.widget;
+
+import android.content.Context;
+import android.text.TextUtils;
+
+/**
+ * Helper class that listens to settings changes and notifies client when there is update in
+ * corresponding summary info.
+ */
+public abstract class SummaryUpdater {
+
+    protected final Context mContext;
+
+    private final OnSummaryChangeListener mListener;
+    private String mSummary;
+
+    /**
+     * Interface definition for a callback to be invoked when the summary has been changed.
+     */
+    public interface OnSummaryChangeListener {
+        /**
+         * Called when summary has changed.
+         *
+         * @param summary The new summary .
+         */
+        void onSummaryChanged(String summary);
+    }
+
+    /**
+     * Constructor
+     *
+     * @param context The Context the updater is running in, through which it can register broadcast
+     * receiver etc.
+     * @param listener The listener that would like to receive summary change notification.
+     *
+     */
+    public SummaryUpdater(Context context, OnSummaryChangeListener listener) {
+        mContext = context;
+        mListener = listener;
+    }
+
+    /**
+     * Notifies the listener when there is update in summary
+     */
+    protected void notifyChangeIfNeeded() {
+        String summary = getSummary();
+        if (!TextUtils.equals(mSummary, summary)) {
+            mSummary = summary;
+            if (mListener != null) {
+                mListener.onSummaryChanged(summary);
+            }
+        }
+    }
+
+    /**
+     * Starts/stops receiving updates on the summary.
+     *
+     * @param register true if we want to receive updates, false otherwise
+     */
+    public abstract void register(boolean register);
+
+    /**
+     * Gets the summary. Subclass should checks latest conditions and update the summary
+     * accordingly.
+     *
+     * @return  the latest summary text
+     */
+    protected abstract String getSummary();
+
+}
diff --git a/src/com/android/settings/widget/SwitchBarController.java b/src/com/android/settings/widget/SwitchBarController.java
new file mode 100644
index 0000000..624db2a
--- /dev/null
+++ b/src/com/android/settings/widget/SwitchBarController.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.widget;
+
+import android.widget.Switch;
+import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
+
+/*
+ * The switch controller that is used to update the switch widget in the SwitchBar layout.
+ */
+public class SwitchBarController extends SwitchWidgetController implements
+    SwitchBar.OnSwitchChangeListener {
+
+    private final SwitchBar mSwitchBar;
+
+    public SwitchBarController(SwitchBar switchBar) {
+        mSwitchBar = switchBar;
+    }
+
+    @Override
+    public void setupView() {
+        mSwitchBar.show();
+    }
+
+    @Override
+    public void teardownView() {
+        mSwitchBar.hide();
+    }
+
+    @Override
+    public void updateTitle(boolean isChecked) {
+        mSwitchBar.setTextViewLabel(isChecked);
+    }
+
+    @Override
+    public void startListening() {
+        mSwitchBar.addOnSwitchChangeListener(this);
+    }
+
+    @Override
+    public void stopListening() {
+        mSwitchBar.removeOnSwitchChangeListener(this);
+    }
+
+    @Override
+    public void setChecked(boolean checked) {
+        mSwitchBar.setChecked(checked);
+    }
+
+    @Override
+    public boolean isChecked() {
+        return mSwitchBar.isChecked();
+    }
+
+    @Override
+    public void setEnabled(boolean enabled) {
+        mSwitchBar.setEnabled(enabled);
+    }
+
+    @Override
+    public void onSwitchChanged(Switch switchView, boolean isChecked) {
+        if (mListener != null) {
+            mListener.onSwitchToggled(isChecked);
+        }
+    }
+
+    @Override
+    public void setDisabledByAdmin(EnforcedAdmin admin) {
+        mSwitchBar.setDisabledByAdmin(admin);
+    }
+
+    @Override
+    public Switch getSwitch() {
+        return mSwitchBar.getSwitch();
+    }
+
+}
diff --git a/src/com/android/settings/widget/SwitchWidgetController.java b/src/com/android/settings/widget/SwitchWidgetController.java
new file mode 100644
index 0000000..325a093
--- /dev/null
+++ b/src/com/android/settings/widget/SwitchWidgetController.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.widget;
+
+import android.widget.Switch;
+import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
+
+/*
+ * A controller class for general switch widget handling. We have different containers that provide
+ * different forms of switch layout. Provide a centralized control for updating the switch widget.
+ */
+public abstract class SwitchWidgetController {
+
+    protected OnSwitchChangeListener mListener;
+
+    /**
+     * Interface definition for a callback to be invoked when the switch has been toggled.
+     */
+    public interface OnSwitchChangeListener {
+        /**
+         * Called when the checked state of the Switch has changed.
+         *
+         * @param isChecked The new checked state of switchView.
+         *
+         * @return true to update the state of the switch with the new value.
+         */
+        boolean onSwitchToggled(boolean isChecked);
+    }
+
+    /**
+     * Perform any view setup.
+     */
+    public void setupView() {
+    }
+
+    /**
+     * Perform any view teardown.
+     */
+    public void teardownView() {
+    }
+
+    /**
+     * Set the callback to be invoked when the switch is toggled by the user (but before the
+     * internal state has been updated).
+     *
+     * @param listener the callback to be invoked
+     */
+    public void setListener(OnSwitchChangeListener listener) {
+        mListener = listener;
+    }
+
+    /**
+     * Update the preference title associated with the switch.
+     *
+     * @param isChecked whether the switch is currently checked
+     */
+    public abstract void updateTitle(boolean isChecked);
+
+    /**
+     * Start listening to switch toggling.
+     */
+    public abstract void startListening();
+
+    /**
+     * Stop listening to switch toggling.
+     */
+    public abstract void stopListening();
+
+    /**
+     * Set the checked state for the switch.
+     *
+     * @param checked whether the switch should be checked or not.
+     */
+    public abstract void setChecked(boolean checked);
+
+    /**
+     * Get the checked state for the switch.
+     *
+     * @return true if the switch is currently checked, false otherwise.
+     */
+    public abstract boolean isChecked();
+
+    /**
+     * Set the enabled state for the switch.
+     *
+     * @param enabled whether the switch should be enabled or not.
+     */
+    public abstract void setEnabled(boolean enabled);
+
+    /**
+     * Disable the switch based on the enforce admin.
+     *
+     * @param admin Details of the admin who enforced the restriction. If it
+     * is {@code null}, then this preference will be enabled. Otherwise, it will be disabled.
+     */
+    public abstract void setDisabledByAdmin(EnforcedAdmin admin);
+
+    /**
+     * Get the underlying switch widget.
+     *
+     * @return the switch widget.
+     */
+    public abstract Switch getSwitch();
+
+}
\ No newline at end of file
diff --git a/src/com/android/settings/wifi/ConfigureWifiSettings.java b/src/com/android/settings/wifi/ConfigureWifiSettings.java
index 6cbdb29..682662a 100644
--- a/src/com/android/settings/wifi/ConfigureWifiSettings.java
+++ b/src/com/android/settings/wifi/ConfigureWifiSettings.java
@@ -15,8 +15,6 @@
  */
 package com.android.settings.wifi;
 
-import static android.content.Context.WIFI_SERVICE;
-
 import android.content.Context;
 import android.net.wifi.WifiManager;
 import android.provider.SearchIndexableResource;
@@ -32,6 +30,8 @@
 import java.util.Arrays;
 import java.util.List;
 
+import static android.content.Context.WIFI_SERVICE;
+
 public class ConfigureWifiSettings extends DashboardFragment {
 
     private static final String TAG = "ConfigureWifiSettings";
@@ -44,12 +44,6 @@
     }
 
     @Override
-    protected String getCategoryKey() {
-        // We don't want to inject any external settings into this screen.
-        return null;
-    }
-
-    @Override
     protected String getLogTag() {
         return TAG;
     }
@@ -64,7 +58,6 @@
         mWifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
         final List<PreferenceController> controllers = new ArrayList<>();
         controllers.add(new WifiInfoPreferenceController(context, getLifecycle(), mWifiManager));
-        controllers.add(new SavedNetworkPreferenceController(context, mWifiManager));
         controllers.add(new CellularFallbackPreferenceController(context));
         controllers.add(new AllowRecommendationPreferenceController(context));
         controllers.add(new NotifyOpenNetworksPreferenceController(context, getLifecycle()));
diff --git a/src/com/android/settings/wifi/LinkablePreference.java b/src/com/android/settings/wifi/LinkablePreference.java
new file mode 100644
index 0000000..6b1b87d
--- /dev/null
+++ b/src/com/android/settings/wifi/LinkablePreference.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.wifi;
+
+import android.content.Context;
+import android.support.annotation.Nullable;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceViewHolder;
+import android.text.Spannable;
+import android.text.style.TextAppearanceSpan;
+import android.util.AttributeSet;
+import android.widget.TextView;
+import com.android.settings.LinkifyUtils;
+
+/**
+ * A preference with a title that can have linkable content on click.
+ */
+public class LinkablePreference extends Preference {
+
+    private LinkifyUtils.OnClickListener mClickListener;
+    private CharSequence mContentTitle;
+    private CharSequence mContentDescription;
+
+    public LinkablePreference(Context ctx, AttributeSet attrs, int defStyle) {
+        super(ctx, attrs, defStyle);
+        setSelectable(false);
+    }
+
+    public LinkablePreference(Context ctx, AttributeSet attrs) {
+        super(ctx, attrs);
+        setSelectable(false);
+    }
+
+    public LinkablePreference(Context ctx) {
+        super(ctx);
+        setSelectable(false);
+    }
+
+    @Override
+    public void onBindViewHolder(PreferenceViewHolder view) {
+        super.onBindViewHolder(view);
+
+        TextView textView = (TextView) view.findViewById(android.R.id.title);
+        if (textView == null || mContentTitle == null || mClickListener == null) {
+            return;
+        }
+
+        textView.setSingleLine(false);
+        StringBuilder contentBuilder = new StringBuilder().append(mContentTitle);
+        if (mContentDescription != null) {
+            contentBuilder.append("\n\n");
+            contentBuilder.append(mContentDescription);
+        }
+
+        boolean linked = LinkifyUtils.linkify(textView, contentBuilder, mClickListener);
+        if (linked && mContentTitle != null) {
+            // Embolden and enlarge the title.
+            Spannable boldSpan = (Spannable) textView.getText();
+            boldSpan.setSpan(
+                    new TextAppearanceSpan(
+                            getContext(), android.R.style.TextAppearance_Medium),
+                    0,
+                    mContentTitle.length(),
+                    Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
+            textView.setText(boldSpan);
+        }
+    }
+
+    /**
+     * Sets the linkable text for the Preference title.
+     * @param contentTitle text to set the Preference title.
+     * @param contentDescription description text to append underneath title, can be null.
+     * @param clickListener OnClickListener for the link portion of the text.
+     */
+    public void setText(
+            CharSequence contentTitle,
+            @Nullable CharSequence contentDescription,
+            LinkifyUtils.OnClickListener clickListener) {
+        mContentTitle = contentTitle;
+        mContentDescription = contentDescription;
+        mClickListener = clickListener;
+        // sets the title so that the title TextView is not hidden in super.onBindViewHolder()
+        super.setTitle(contentTitle);
+    }
+
+    /**
+     * Sets the title of the LinkablePreference. resets linkable text for reusability.
+     */
+    @Override
+    public void setTitle(int titleResId) {
+        mContentTitle = null;
+        mContentDescription = null;
+        super.setTitle(titleResId);
+    }
+
+    /**
+     * Sets the title of the LinkablePreference. resets linkable text for reusability.
+     */
+    @Override
+    public void setTitle(CharSequence title) {
+        mContentTitle = null;
+        mContentDescription = null;
+        super.setTitle(title);
+    }
+}
diff --git a/src/com/android/settings/wifi/SavedNetworkPreferenceController.java b/src/com/android/settings/wifi/SavedNetworkPreferenceController.java
deleted file mode 100644
index c3ad355..0000000
--- a/src/com/android/settings/wifi/SavedNetworkPreferenceController.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.wifi;
-
-import android.content.Context;
-import android.net.wifi.WifiConfiguration;
-import android.net.wifi.WifiManager;
-
-import com.android.settings.core.PreferenceController;
-
-import java.util.List;
-
-/**
- * {@link PreferenceController} that opens saved network subsetting.
- */
-public class SavedNetworkPreferenceController extends PreferenceController {
-
-    private static final String KEY_SAVED_NETWORKS = "saved_networks";
-
-    private final WifiManager mWifiManager;
-
-    public SavedNetworkPreferenceController(Context context, WifiManager wifiManager) {
-        super(context);
-        mWifiManager = wifiManager;
-    }
-
-    @Override
-    public boolean isAvailable() {
-        final List<WifiConfiguration> config = mWifiManager.getConfiguredNetworks();
-        return config != null && !config.isEmpty();
-    }
-
-    @Override
-    public String getPreferenceKey() {
-        return KEY_SAVED_NETWORKS;
-    }
-}
diff --git a/src/com/android/settings/wifi/WifiEnabler.java b/src/com/android/settings/wifi/WifiEnabler.java
index a05e498..1ac94ea 100644
--- a/src/com/android/settings/wifi/WifiEnabler.java
+++ b/src/com/android/settings/wifi/WifiEnabler.java
@@ -29,23 +29,22 @@
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.provider.Settings;
-import android.widget.Switch;
 import android.widget.Toast;
 
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.settings.R;
 import com.android.settings.core.instrumentation.MetricsFeatureProvider;
 import com.android.settings.search.Index;
-import com.android.settings.widget.SwitchBar;
+import com.android.settings.widget.SwitchWidgetController;
 import com.android.settingslib.RestrictedLockUtils;
 import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
 import com.android.settingslib.WirelessUtils;
 
 import java.util.concurrent.atomic.AtomicBoolean;
 
-public class WifiEnabler implements SwitchBar.OnSwitchChangeListener  {
+public class WifiEnabler implements SwitchWidgetController.OnSwitchChangeListener  {
 
-    private final SwitchBar mSwitchBar;
+    private final SwitchWidgetController mSwitchWidget;
     private final WifiManager mWifiManager;
     private final MetricsFeatureProvider mMetricsFeatureProvider;
 
@@ -93,10 +92,11 @@
         }
     };
 
-    public WifiEnabler(Context context, SwitchBar switchBar,
+    public WifiEnabler(Context context, SwitchWidgetController switchWidget,
             MetricsFeatureProvider metricsFeatureProvider) {
         mContext = context;
-        mSwitchBar = switchBar;
+        mSwitchWidget = switchWidget;
+        mSwitchWidget.setListener(this);
         mMetricsFeatureProvider = metricsFeatureProvider;
         mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
 
@@ -105,25 +105,25 @@
         mIntentFilter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION);
         mIntentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
 
-        setupSwitchBar();
+        setupSwitchController();
     }
 
-    public void setupSwitchBar() {
+    public void setupSwitchController() {
         final int state = mWifiManager.getWifiState();
         handleWifiStateChanged(state);
         if (!mListeningToOnSwitchChange) {
-            mSwitchBar.addOnSwitchChangeListener(this);
+            mSwitchWidget.startListening();
             mListeningToOnSwitchChange = true;
         }
-        mSwitchBar.show();
+        mSwitchWidget.setupView();
     }
 
-    public void teardownSwitchBar() {
+    public void teardownSwitchController() {
         if (mListeningToOnSwitchChange) {
-            mSwitchBar.removeOnSwitchChangeListener(this);
+            mSwitchWidget.stopListening();
             mListeningToOnSwitchChange = false;
         }
-        mSwitchBar.hide();
+        mSwitchWidget.teardownView();
     }
 
     public void resume(Context context) {
@@ -131,7 +131,7 @@
         // Wi-Fi state is sticky, so just let the receiver update UI
         mContext.registerReceiver(mReceiver, mIntentFilter);
         if (!mListeningToOnSwitchChange) {
-            mSwitchBar.addOnSwitchChangeListener(this);
+            mSwitchWidget.startListening();
             mListeningToOnSwitchChange = true;
         }
     }
@@ -139,45 +139,45 @@
     public void pause() {
         mContext.unregisterReceiver(mReceiver);
         if (mListeningToOnSwitchChange) {
-            mSwitchBar.removeOnSwitchChangeListener(this);
+            mSwitchWidget.stopListening();
             mListeningToOnSwitchChange = false;
         }
     }
 
     private void handleWifiStateChanged(int state) {
         // Clear any previous state
-        mSwitchBar.setDisabledByAdmin(null);
+        mSwitchWidget.setDisabledByAdmin(null);
 
         switch (state) {
             case WifiManager.WIFI_STATE_ENABLING:
-                mSwitchBar.setEnabled(false);
+                mSwitchWidget.setEnabled(false);
                 break;
             case WifiManager.WIFI_STATE_ENABLED:
                 setSwitchBarChecked(true);
-                mSwitchBar.setEnabled(true);
+                mSwitchWidget.setEnabled(true);
                 updateSearchIndex(true);
                 break;
             case WifiManager.WIFI_STATE_DISABLING:
-                mSwitchBar.setEnabled(false);
+                mSwitchWidget.setEnabled(false);
                 break;
             case WifiManager.WIFI_STATE_DISABLED:
                 setSwitchBarChecked(false);
-                mSwitchBar.setEnabled(true);
+                mSwitchWidget.setEnabled(true);
                 updateSearchIndex(false);
                 break;
             default:
                 setSwitchBarChecked(false);
-                mSwitchBar.setEnabled(true);
+                mSwitchWidget.setEnabled(true);
                 updateSearchIndex(false);
         }
-        if (mayDisableTethering(!mSwitchBar.isChecked())) {
+        if (mayDisableTethering(!mSwitchWidget.isChecked())) {
             if (RestrictedLockUtils.hasBaseUserRestriction(mContext,
                     UserManager.DISALLOW_CONFIG_TETHERING, UserHandle.myUserId())) {
-                mSwitchBar.setEnabled(false);
+                mSwitchWidget.setEnabled(false);
             } else {
                 final EnforcedAdmin admin = RestrictedLockUtils.checkIfRestrictionEnforced(mContext,
                     UserManager.DISALLOW_CONFIG_TETHERING, UserHandle.myUserId());
-                mSwitchBar.setDisabledByAdmin(admin);
+                mSwitchWidget.setDisabledByAdmin(admin);
             }
         }
     }
@@ -193,7 +193,7 @@
 
     private void setSwitchBarChecked(boolean checked) {
         mStateMachineEvent = true;
-        mSwitchBar.setChecked(checked);
+        mSwitchWidget.setChecked(checked);
         mStateMachineEvent = false;
     }
 
@@ -214,17 +214,17 @@
     }
 
     @Override
-    public void onSwitchChanged(Switch switchView, boolean isChecked) {
+    public boolean onSwitchToggled(boolean isChecked) {
         //Do nothing if called as a result of a state machine event
         if (mStateMachineEvent) {
-            return;
+            return true;
         }
         // Show toast message if Wi-Fi is not allowed in airplane mode
         if (isChecked && !WirelessUtils.isRadioAllowed(mContext, Settings.Global.RADIO_WIFI)) {
             Toast.makeText(mContext, R.string.wifi_in_airplane_mode, Toast.LENGTH_SHORT).show();
             // Reset switch to off. No infinite check/listenenr loop.
-            mSwitchBar.setChecked(false);
-            return;
+            mSwitchWidget.setChecked(false);
+            return false;
         }
 
         // Disable tethering if enabling Wifi
@@ -240,9 +240,10 @@
         }
         if (!mWifiManager.setWifiEnabled(isChecked)) {
             // Error
-            mSwitchBar.setEnabled(true);
+            mSwitchWidget.setEnabled(true);
             Toast.makeText(mContext, R.string.wifi_error, Toast.LENGTH_SHORT).show();
         }
+        return true;
     }
 
     private boolean mayDisableTethering(boolean isChecked) {
diff --git a/src/com/android/settings/wifi/WifiMasterSwitchPreferenceController.java b/src/com/android/settings/wifi/WifiMasterSwitchPreferenceController.java
new file mode 100644
index 0000000..d72bb3e
--- /dev/null
+++ b/src/com/android/settings/wifi/WifiMasterSwitchPreferenceController.java
@@ -0,0 +1,102 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.settings.wifi;
+
+import android.content.Context;
+import android.support.v7.preference.PreferenceScreen;
+
+import com.android.settings.core.PreferenceController;
+import com.android.settings.core.instrumentation.MetricsFeatureProvider;
+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.settings.core.lifecycle.events.OnStart;
+import com.android.settings.core.lifecycle.events.OnStop;
+import com.android.settings.widget.SummaryUpdater;
+import com.android.settings.widget.MasterSwitchPreference;
+import com.android.settings.widget.MasterSwitchController;
+
+public class WifiMasterSwitchPreferenceController extends PreferenceController
+        implements SummaryUpdater.OnSummaryChangeListener,
+        LifecycleObserver, OnResume, OnPause, OnStart, OnStop {
+
+    private static final String KEY_TOGGLE_WIFI = "toggle_wifi";
+
+    private MasterSwitchPreference mWifiPreference;
+    private WifiEnabler mWifiEnabler;
+    private final WifiSummaryUpdater mSummaryHelper;
+    private final MetricsFeatureProvider mMetricsFeatureProvider;
+
+    public WifiMasterSwitchPreferenceController(Context context,
+            MetricsFeatureProvider metricsFeatureProvider) {
+        super(context);
+        mMetricsFeatureProvider = metricsFeatureProvider;
+        mSummaryHelper = new WifiSummaryUpdater(mContext, this);
+    }
+
+    @Override
+    public void displayPreference(PreferenceScreen screen) {
+        super.displayPreference(screen);
+        mWifiPreference = (MasterSwitchPreference) screen.findPreference(KEY_TOGGLE_WIFI);
+    }
+
+    @Override
+    public boolean isAvailable() {
+        return true;
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return KEY_TOGGLE_WIFI;
+    }
+
+    @Override
+    public void onResume() {
+        mSummaryHelper.register(true);
+        if (mWifiEnabler != null) {
+            mWifiEnabler.resume(mContext);
+        }
+    }
+
+    @Override
+    public void onPause() {
+        if (mWifiEnabler != null) {
+            mWifiEnabler.pause();
+        }
+        mSummaryHelper.register(false);
+    }
+
+    @Override
+    public void onStart() {
+        mWifiEnabler = new WifiEnabler(mContext, new MasterSwitchController(mWifiPreference),
+            mMetricsFeatureProvider);
+    }
+
+    @Override
+    public void onStop() {
+        if (mWifiEnabler != null) {
+            mWifiEnabler.teardownSwitchController();
+        }
+    }
+
+    @Override
+    public void onSummaryChanged(String summary) {
+        if (mWifiPreference != null) {
+            mWifiPreference.setSummary(summary);
+        }
+    }
+
+}
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index 1dd18bd..fd31761 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -19,12 +19,10 @@
 import android.app.Activity;
 import android.app.Dialog;
 import android.app.admin.DevicePolicyManager;
-import android.content.BroadcastReceiver;
 import android.content.ComponentName;
 import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Intent;
-import android.content.IntentFilter;
 import android.content.pm.PackageManager;
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.content.res.Resources;
@@ -39,12 +37,12 @@
 import android.os.HandlerThread;
 import android.os.Process;
 import android.provider.Settings;
+import android.support.annotation.VisibleForTesting;
 import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceCategory;
 import android.support.v7.preference.PreferenceManager;
 import android.support.v7.preference.PreferenceViewHolder;
-import android.text.Spannable;
 import android.text.TextUtils;
-import android.text.style.TextAppearanceSpan;
 import android.util.Log;
 import android.view.ContextMenu;
 import android.view.ContextMenu.ContextMenuInfo;
@@ -53,8 +51,6 @@
 import android.view.MenuItem;
 import android.view.View;
 import android.widget.ProgressBar;
-import android.widget.TextView;
-import android.widget.TextView.BufferType;
 import android.widget.Toast;
 
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
@@ -67,11 +63,12 @@
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.search.Indexable;
 import com.android.settings.search.SearchIndexableRaw;
+import com.android.settings.widget.SummaryUpdater.OnSummaryChangeListener;
+import com.android.settings.widget.SwitchBarController;
 import com.android.settingslib.RestrictedLockUtils;
 import com.android.settingslib.wifi.AccessPoint;
 import com.android.settingslib.wifi.AccessPoint.AccessPointListener;
 import com.android.settingslib.wifi.AccessPointPreference;
-import com.android.settingslib.wifi.WifiStatusTracker;
 import com.android.settingslib.wifi.WifiTracker;
 
 import java.util.ArrayList;
@@ -102,7 +99,6 @@
     private static final int MENU_ID_FORGET = Menu.FIRST + 7;
     private static final int MENU_ID_MODIFY = Menu.FIRST + 8;
     private static final int MENU_ID_WRITE_NFC = Menu.FIRST + 9;
-    private static final int MENU_ID_CONFIGURE = Menu.FIRST + 10;
 
     public static final int WIFI_DIALOG_ID = 1;
     /* package */ static final int WPS_PBC_DIALOG_ID = 2;
@@ -115,6 +111,9 @@
     private static final String SAVED_WIFI_NFC_DIALOG_STATE = "wifi_nfc_dlg_state";
 
     private static final String PREF_KEY_EMPTY_WIFI_LIST = "wifi_empty_list";
+    private static final String PREF_KEY_ACCESS_POINTS = "access_points";
+    private static final String PREF_KEY_ADDITIONAL_SETTINGS = "additional_settings";
+    private static final String PREF_KEY_SAVED_NETWORKS = "saved_networks";
 
     protected WifiManager mWifiManager;
     private WifiManager.ActionListener mConnectListener;
@@ -152,7 +151,12 @@
     private HandlerThread mBgThread;
 
     private AccessPointPreference.UserBadgeCache mUserBadgeCache;
+
+    private PreferenceCategory mAccessPointsPreferenceCategory;
+    private PreferenceCategory mAdditionalSettingsPreferenceCategory;
     private Preference mAddPreference;
+    private Preference mSavedNetworksPreference;
+    private LinkablePreference mStatusMessagePreference;
 
     private MenuItem mScanMenuItem;
 
@@ -177,9 +181,18 @@
         getPreferenceManager().setPreferenceComparisonCallback(
                 new PreferenceManager.SimplePreferenceComparisonCallback());
         addPreferencesFromResource(R.xml.wifi_settings);
-        mAddPreference = new Preference(getContext());
+
+        mAccessPointsPreferenceCategory =
+                (PreferenceCategory) findPreference(PREF_KEY_ACCESS_POINTS);
+        mAdditionalSettingsPreferenceCategory =
+                (PreferenceCategory) findPreference(PREF_KEY_ADDITIONAL_SETTINGS);
+        mSavedNetworksPreference = findPreference(PREF_KEY_SAVED_NETWORKS);
+
+        Context prefContext = getPrefContext();
+        mAddPreference = new Preference(prefContext);
         mAddPreference.setIcon(R.drawable.ic_menu_add_inset);
         mAddPreference.setTitle(R.string.wifi_add_network);
+        mStatusMessagePreference = new LinkablePreference(prefContext);
 
         mUserBadgeCache = new AccessPointPreference.UserBadgeCache(getPackageManager());
 
@@ -290,7 +303,7 @@
         super.onDestroyView();
 
         if (mWifiEnabler != null) {
-            mWifiEnabler.teardownSwitchBar();
+            mWifiEnabler.teardownSwitchController();
         }
     }
 
@@ -305,16 +318,16 @@
     /**
      * @return new WifiEnabler or null (as overridden by WifiSettingsForSetupWizard)
      */
-    /* package */ WifiEnabler createWifiEnabler() {
+    private WifiEnabler createWifiEnabler() {
         final SettingsActivity activity = (SettingsActivity) getActivity();
-        return new WifiEnabler(activity, activity.getSwitchBar(), mMetricsFeatureProvider);
+        return new WifiEnabler(activity, new SwitchBarController(activity.getSwitchBar()),
+            mMetricsFeatureProvider);
     }
 
     @Override
     public void onResume() {
         final Activity activity = getActivity();
         super.onResume();
-        removePreference("dummy");
         if (mWifiEnabler != null) {
             mWifiEnabler.resume(activity);
         }
@@ -346,14 +359,13 @@
      * @param menu
      */
     void addOptionsMenuItems(Menu menu) {
-        final boolean wifiIsEnabled = mWifiTracker.isWifiEnabled();
-        mScanMenuItem = menu.add(Menu.NONE, MENU_ID_SCAN, 0, R.string.menu_stats_refresh);
-        mScanMenuItem.setEnabled(wifiIsEnabled)
-               .setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
         menu.add(Menu.NONE, MENU_ID_ADVANCED, 0, R.string.wifi_menu_advanced)
                 .setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
-        menu.add(Menu.NONE, MENU_ID_CONFIGURE, 0, R.string.wifi_menu_configure)
-                .setIcon(R.drawable.ic_settings_24dp)
+
+        final boolean wifiIsEnabled = mWifiTracker.isWifiEnabled();
+        mScanMenuItem = menu.add(Menu.NONE, MENU_ID_SCAN, 0, R.string.menu_stats_refresh)
+                .setIcon(com.android.internal.R.drawable.ic_menu_refresh);
+        mScanMenuItem.setEnabled(wifiIsEnabled)
                 .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
     }
 
@@ -424,18 +436,6 @@
                             null);
                 }
                 return true;
-            case MENU_ID_CONFIGURE:
-                if (getActivity() instanceof SettingsActivity) {
-                    ((SettingsActivity) getActivity()).startPreferencePanel(
-                            ConfigureWifiSettings.class.getCanonicalName(), null,
-                            R.string.wifi_configure_titlebar, null, this, 0);
-                } else {
-                    startFragment(this, ConfigureWifiSettings.class.getCanonicalName(),
-                            R.string.wifi_configure_titlebar, -1 /* Do not request a results */,
-                            null);
-                }
-                return true;
-
         }
         return super.onOptionsItemSelected(item);
     }
@@ -622,10 +622,10 @@
         // Safeguard from some delayed event handling
         if (getActivity() == null) return;
         if (isUiRestricted()) {
+            mAccessPointsPreferenceCategory.removeAll();
             if (!isUiRestrictedByOnlyAdmin()) {
                 addMessagePreference(R.string.wifi_empty_list_user_restricted);
             }
-            getPreferenceScreen().removeAll();
             return;
         }
         final int wifiState = mWifiManager.getWifiState();
@@ -638,7 +638,8 @@
 
                 boolean hasAvailableAccessPoints = false;
                 int index = 0;
-                cacheRemoveAllPrefs(getPreferenceScreen());
+                mAccessPointsPreferenceCategory.removePreference(mStatusMessagePreference);
+                cacheRemoveAllPrefs(mAccessPointsPreferenceCategory);
                 for (AccessPoint accessPoint : accessPoints) {
                     // Ignore access points that are out of range.
                     if (accessPoint.getLevel() != -1) {
@@ -665,12 +666,12 @@
                             onPreferenceTreeClick(preference);
                             mOpenSsid = null;
                         }
-                        getPreferenceScreen().addPreference(preference);
+                        mAccessPointsPreferenceCategory.addPreference(preference);
                         accessPoint.setListener(this);
                         preference.refresh();
                     }
                 }
-                removeCachedPrefs(getPreferenceScreen());
+                removeCachedPrefs(mAccessPointsPreferenceCategory);
                 if (!hasAvailableAccessPoints) {
                     setProgressBarVisible(true);
                     Preference pref = new Preference(getContext()) {
@@ -683,14 +684,16 @@
                     };
                     pref.setSelectable(false);
                     pref.setSummary(R.string.wifi_empty_list_wifi_on);
-                    pref.setOrder(0);
+                    pref.setOrder(index++);
                     pref.setKey(PREF_KEY_EMPTY_WIFI_LIST);
-                    getPreferenceScreen().addPreference(pref);
-                    mAddPreference.setOrder(1);
-                    getPreferenceScreen().addPreference(mAddPreference);
+                    mAccessPointsPreferenceCategory.addPreference(pref);
+                    mAddPreference.setOrder(index++);
+                    mAccessPointsPreferenceCategory.addPreference(mAddPreference);
+                    setSavedNetworkPreferenceVisibility();
                 } else {
                     mAddPreference.setOrder(index++);
-                    getPreferenceScreen().addPreference(mAddPreference);
+                    mAccessPointsPreferenceCategory.addPreference(mAddPreference);
+                    setSavedNetworkPreferenceVisibility();
                     setProgressBarVisible(false);
                 }
                 if (mScanMenuItem != null) {
@@ -699,7 +702,7 @@
                 break;
 
             case WifiManager.WIFI_STATE_ENABLING:
-                getPreferenceScreen().removeAll();
+                mAccessPointsPreferenceCategory.removeAll();
                 setProgressBarVisible(true);
                 break;
 
@@ -710,6 +713,7 @@
 
             case WifiManager.WIFI_STATE_DISABLED:
                 setOffMessage();
+                setSavedNetworkPreferenceVisibility();
                 setProgressBarVisible(false);
                 if (mScanMenuItem != null) {
                     mScanMenuItem.setEnabled(false);
@@ -718,17 +722,20 @@
         }
     }
 
+    private void setSavedNetworkPreferenceVisibility() {
+        if (mWifiTracker.doSavedNetworksExist()) {
+            mAdditionalSettingsPreferenceCategory.addPreference(mSavedNetworksPreference);
+        } else {
+            mAdditionalSettingsPreferenceCategory.removePreference(mSavedNetworksPreference);
+        }
+    }
+
     private void setOffMessage() {
         if (isUiRestricted()) {
             if (!isUiRestrictedByOnlyAdmin()) {
                 addMessagePreference(R.string.wifi_empty_list_user_restricted);
             }
-            getPreferenceScreen().removeAll();
-            return;
-        }
-
-        TextView emptyTextView = getEmptyTextView();
-        if (emptyTextView == null) {
+            mAccessPointsPreferenceCategory.removeAll();
             return;
         }
 
@@ -744,35 +751,27 @@
         if (!wifiScanningMode) {
             // Show only the brief text if the user is not allowed to configure scanning settings,
             // or the scanning mode has been turned off.
-            emptyTextView.setText(briefText, BufferType.SPANNABLE);
+            mStatusMessagePreference.setTitle(briefText);
         } else {
-            // Append the description of scanning settings with link.
-            final StringBuilder contentBuilder = new StringBuilder();
-            contentBuilder.append(briefText);
-            contentBuilder.append("\n\n");
-            contentBuilder.append(getText(R.string.wifi_scan_notify_text));
-            LinkifyUtils.linkify(emptyTextView, contentBuilder, new LinkifyUtils.OnClickListener() {
+            LinkifyUtils.OnClickListener clickListener = new LinkifyUtils.OnClickListener() {
                 @Override
                 public void onClick() {
-                    final SettingsActivity activity =
-                            (SettingsActivity) WifiSettings.this.getActivity();
+                    final SettingsActivity activity = (SettingsActivity) getActivity();
                     activity.startPreferencePanel(ScanningSettings.class.getName(), null,
                             R.string.location_scanning_screen_title, null, null, 0);
                 }
-            });
+            };
+            mStatusMessagePreference.setText(
+                    briefText, getText(R.string.wifi_scan_notify_text), clickListener);
         }
-        // Embolden and enlarge the brief description anyway.
-        Spannable boldSpan = (Spannable) emptyTextView.getText();
-        boldSpan.setSpan(
-                new TextAppearanceSpan(getActivity(), android.R.style.TextAppearance_Medium), 0,
-                briefText.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
-        getPreferenceScreen().removeAll();
+        mAccessPointsPreferenceCategory.removeAll();
+        mAccessPointsPreferenceCategory.addPreference(mStatusMessagePreference);
     }
 
     private void addMessagePreference(int messageId) {
-        TextView emptyTextView = getEmptyTextView();
-        if (emptyTextView != null) emptyTextView.setText(messageId);
-        getPreferenceScreen().removeAll();
+        mStatusMessagePreference.setTitle(messageId);
+        mAccessPointsPreferenceCategory.removeAll();
+        mAccessPointsPreferenceCategory.addPreference(mStatusMessagePreference);
     }
 
     protected void setProgressBarVisible(boolean visible) {
@@ -1004,46 +1003,30 @@
         return !isLockdownFeatureEnabled;
     }
 
-    private static class SummaryProvider extends BroadcastReceiver
-            implements SummaryLoader.SummaryProvider {
+    private static class SummaryProvider
+            implements SummaryLoader.SummaryProvider, OnSummaryChangeListener {
 
         private final Context mContext;
-        private final WifiManager mWifiManager;
-        private final WifiStatusTracker mWifiTracker;
         private final SummaryLoader mSummaryLoader;
 
+        @VisibleForTesting
+        WifiSummaryUpdater mSummaryHelper;
+
         public SummaryProvider(Context context, SummaryLoader summaryLoader) {
             mContext = context;
             mSummaryLoader = summaryLoader;
-            mWifiManager = context.getSystemService(WifiManager.class);
-            mWifiTracker = new WifiStatusTracker(mWifiManager);
+            mSummaryHelper = new WifiSummaryUpdater(mContext, this);
         }
 
-        private CharSequence getSummary() {
-            if (!mWifiTracker.enabled) {
-                return mContext.getString(R.string.wifi_disabled_generic);
-            }
-            if (!mWifiTracker.connected) {
-                return mContext.getString(R.string.disconnected);
-            }
-            return mWifiTracker.ssid;
-        }
 
         @Override
         public void setListening(boolean listening) {
-            if (listening) {
-                IntentFilter filter = new IntentFilter();
-                filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
-                filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
-                filter.addAction(WifiManager.RSSI_CHANGED_ACTION);
-                mSummaryLoader.registerReceiver(this, filter);
-            }
+            mSummaryHelper.register(listening);
         }
 
         @Override
-        public void onReceive(Context context, Intent intent) {
-            mWifiTracker.handleBroadcast(intent);
-            mSummaryLoader.setSummary(this, getSummary());
+        public void onSummaryChanged(String summary) {
+            mSummaryLoader.setSummary(this, summary);
         }
     }
 
diff --git a/src/com/android/settings/wifi/WifiSummaryUpdater.java b/src/com/android/settings/wifi/WifiSummaryUpdater.java
new file mode 100644
index 0000000..533ee07
--- /dev/null
+++ b/src/com/android/settings/wifi/WifiSummaryUpdater.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.wifi;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.net.wifi.WifiManager;
+import android.support.annotation.VisibleForTesting;
+import com.android.settings.R;
+import com.android.settings.widget.SummaryUpdater;
+import com.android.settingslib.wifi.WifiStatusTracker;
+
+/**
+ * Helper class that listeners to wifi callback and notify client when there is update in
+ * wifi summary info.
+ */
+public final class WifiSummaryUpdater extends SummaryUpdater {
+
+    private final WifiStatusTracker mWifiTracker;
+    private final BroadcastReceiver mReceiver;
+
+    private static final IntentFilter INTENT_FILTER;
+    static {
+        INTENT_FILTER = new IntentFilter();
+        INTENT_FILTER.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
+        INTENT_FILTER.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
+        INTENT_FILTER.addAction(WifiManager.RSSI_CHANGED_ACTION);
+    }
+
+    public WifiSummaryUpdater(Context context, OnSummaryChangeListener listener) {
+        this(context, listener, new WifiStatusTracker(context.getSystemService(WifiManager.class)));
+    }
+
+    @VisibleForTesting
+    public WifiSummaryUpdater(Context context, OnSummaryChangeListener listener,
+        WifiStatusTracker wifiTracker) {
+        super(context, listener);
+        mWifiTracker = wifiTracker;
+        mReceiver = new BroadcastReceiver() {
+            @Override
+            public void onReceive(Context context, Intent intent) {
+                mWifiTracker.handleBroadcast(intent);
+                notifyChangeIfNeeded();
+            }
+        };
+    }
+
+    @Override
+    public void register(boolean register) {
+        if (register) {
+            mContext.registerReceiver(mReceiver, INTENT_FILTER);
+        } else {
+            mContext.unregisterReceiver(mReceiver);
+        }
+    }
+
+    @Override
+    public String getSummary() {
+        if (!mWifiTracker.enabled) {
+            return mContext.getString(R.string.wifi_disabled_generic);
+        }
+        if (!mWifiTracker.connected) {
+            return mContext.getString(R.string.disconnected);
+        }
+        return mWifiTracker.ssid;
+    }
+
+}
diff --git a/tests/app/Android.mk b/tests/app/Android.mk
index 979c27d..381006a 100644
--- a/tests/app/Android.mk
+++ b/tests/app/Android.mk
@@ -13,7 +13,8 @@
     espresso-core \
     espresso-contrib-nodep \
     espresso-intents-nodep \
-    ub-uiautomator
+    ub-uiautomator \
+    legacy-android-test
 
 # Include all test java files.
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
diff --git a/tests/app/src/com/android/settings/CreateShortcutTest.java b/tests/app/src/com/android/settings/CreateShortcutTest.java
index 9481a64..4ae9bd7 100644
--- a/tests/app/src/com/android/settings/CreateShortcutTest.java
+++ b/tests/app/src/com/android/settings/CreateShortcutTest.java
@@ -16,29 +16,130 @@
 
 package com.android.settings;
 
-import android.app.Instrumentation;
-import android.content.Intent;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
 import static android.support.test.espresso.Espresso.onView;
 import static android.support.test.espresso.assertion.ViewAssertions.doesNotExist;
 import static android.support.test.espresso.matcher.ViewMatchers.withText;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.eq;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.Instrumentation;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.ContextWrapper;
+import android.content.Intent;
+import android.content.pm.ResolveInfo;
+import android.content.pm.ShortcutInfo;
+import android.content.pm.ShortcutManager;
+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 org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Tests for {@link CreateShortcutTest}
+ *
+ m SettingsTests &&
+ adb install \
+ -r -g  ${ANDROID_PRODUCT_OUT}/data/app/SettingsTests/SettingsTests.apk &&
+ adb shell am instrument -e class com.android.settings.CreateShortcutTest \
+ -w com.android.settings.tests/android.support.test.runner.AndroidJUnitRunner
+ */
 @RunWith(AndroidJUnit4.class)
 @SmallTest
 public class CreateShortcutTest {
 
+    private static final String SHORTCUT_ID_PREFIX = CreateShortcut.SHORTCUT_ID_PREFIX;
+
+    private Instrumentation mInstrumentation;
+    private Context mContext;
+
+    @Mock ShortcutManager mShortcutManager;
+    @Captor ArgumentCaptor<List<ShortcutInfo>> mListCaptor;
+
+    @Before
+    public void setup() {
+        MockitoAnnotations.initMocks(this);
+        mInstrumentation = InstrumentationRegistry.getInstrumentation();
+        mContext = mInstrumentation.getTargetContext();
+    }
+
     @Test
     public void test_layoutDoesNotHaveCancelButton() {
-        Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
-        instrumentation.startActivitySync(new Intent(Intent.ACTION_CREATE_SHORTCUT)
-                .setClassName(instrumentation.getTargetContext(),
-                        CreateShortcut.class.getName()));
+        mInstrumentation.startActivitySync(new Intent(Intent.ACTION_CREATE_SHORTCUT)
+                .setClassName(mContext, CreateShortcut.class.getName()));
         onView(withText(R.string.cancel)).check(doesNotExist());
     }
+
+    @Test
+    public void createResultIntent() {
+        CreateShortcut orgActivity = (CreateShortcut) mInstrumentation.startActivitySync(
+                new Intent(Intent.ACTION_CREATE_SHORTCUT)
+                        .setClassName(mContext, CreateShortcut.class.getName()));
+        CreateShortcut activity = spy(orgActivity);
+        doReturn(mShortcutManager).when(activity).getSystemService(eq(Context.SHORTCUT_SERVICE));
+
+        when(mShortcutManager.createShortcutResultIntent(any(ShortcutInfo.class)))
+                .thenReturn(new Intent().putExtra("d1", "d2"));
+
+        Intent intent = CreateShortcut.getBaseIntent()
+                .setClass(activity, Settings.ManageApplicationsActivity.class);
+        ResolveInfo ri = activity.getPackageManager().resolveActivity(intent, 0);
+        Intent result = activity.createResultIntent(intent, ri, "dummy");
+        assertEquals("d2", result.getStringExtra("d1"));
+        assertNotNull(result.getParcelableExtra(Intent.EXTRA_SHORTCUT_INTENT));
+
+        ArgumentCaptor<ShortcutInfo> infoCaptor = ArgumentCaptor.forClass(ShortcutInfo.class);
+        verify(mShortcutManager, times(1))
+                .createShortcutResultIntent(infoCaptor.capture());
+        String expectedId = SHORTCUT_ID_PREFIX + intent.getComponent().flattenToShortString();
+        assertEquals(expectedId, infoCaptor.getValue().getId());
+    }
+
+    @Test
+    public void shortcutsUpdateTask() {
+        mContext = spy(new ContextWrapper(mInstrumentation.getTargetContext()));
+        doReturn(mShortcutManager).when(mContext).getSystemService(eq(Context.SHORTCUT_SERVICE));
+
+        List<ShortcutInfo> pinnedShortcuts = Arrays.asList(
+                makeShortcut("d1"), makeShortcut("d2"),
+                makeShortcut(Settings.ManageApplicationsActivity.class),
+                makeShortcut("d3"),
+                makeShortcut(Settings.SoundSettingsActivity.class));
+        when(mShortcutManager.getPinnedShortcuts()).thenReturn(pinnedShortcuts);
+        new CreateShortcut.ShortcutsUpdateTask(mContext).doInBackground();
+
+        verify(mShortcutManager, times(1)).updateShortcuts(mListCaptor.capture());
+
+        List<ShortcutInfo> updates = mListCaptor.getValue();
+        assertEquals(2, updates.size());
+        assertEquals(pinnedShortcuts.get(2).getId(), updates.get(0).getId());
+        assertEquals(pinnedShortcuts.get(4).getId(), updates.get(1).getId());
+    }
+
+    private ShortcutInfo makeShortcut(Class<?> className) {
+        ComponentName cn = new ComponentName(mContext, className);
+        return makeShortcut(SHORTCUT_ID_PREFIX + cn.flattenToShortString());
+    }
+
+    private ShortcutInfo makeShortcut(String id) {
+        return new ShortcutInfo.Builder(mContext, id).build();
+    }
 }
diff --git a/tests/robotests/Android.mk b/tests/robotests/Android.mk
index 0a49be2..3fc034d 100644
--- a/tests/robotests/Android.mk
+++ b/tests/robotests/Android.mk
@@ -14,7 +14,8 @@
 LOCAL_JAVA_LIBRARIES := \
     junit \
     platform-robolectric-prebuilt \
-    sdk_vcurrent
+    sdk_vcurrent \
+    telephony-common
 
 LOCAL_INSTRUMENTATION_FOR := Settings
 LOCAL_MODULE := SettingsRoboTests
diff --git a/tests/robotests/assets/grandfather_not_implementing_indexable b/tests/robotests/assets/grandfather_not_implementing_indexable
index 81adf8b..33484d1 100644
--- a/tests/robotests/assets/grandfather_not_implementing_indexable
+++ b/tests/robotests/assets/grandfather_not_implementing_indexable
@@ -50,6 +50,7 @@
 com.android.settings.print.PrintJobSettingsFragment
 com.android.settings.applications.SpecialAccessSettings
 com.android.settings.accessibility.ToggleScreenReaderPreferenceFragmentForSetupWizard
+com.android.settings.accessibility.ToggleSelectToSpeakPreferenceFragmentForSetupWizard
 com.android.settings.accounts.AccountSyncSettings
 com.android.settings.notification.RedactionInterstitial$RedactionInterstitialFragment
 com.android.settings.inputmethod.InputMethodAndSubtypeEnabler
@@ -89,4 +90,6 @@
 com.android.settings.accessibility.ToggleDaltonizerPreferenceFragment
 com.android.settings.applications.ConvertToFbe
 com.android.settings.localepicker.LocaleListEditor
-com.android.settings.qstile.DevelopmentTileConfigActivity$DevelopmentTileConfigFragment
\ No newline at end of file
+com.android.settings.qstile.DevelopmentTileConfigActivity$DevelopmentTileConfigFragment
+com.android.settings.applications.ExternalSourcesDetails
+com.android.settings.applications.PictureInPictureSettings
diff --git a/tests/robotests/src/com/android/settings/DeviceAdminAddTest.java b/tests/robotests/src/com/android/settings/DeviceAdminAddTest.java
new file mode 100644
index 0000000..42aed2b
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/DeviceAdminAddTest.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.settings;
+
+import android.content.Context;
+
+import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.testutils.FakeFeatureFactory;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Answers;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.Robolectric;
+import org.robolectric.annotation.Config;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.verify;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class DeviceAdminAddTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+    private FakeFeatureFactory mFeatureFactory;
+    private DeviceAdminAdd mDeviceAdminAdd;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        FakeFeatureFactory.setupForTest(mContext);
+        mFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext);
+        mDeviceAdminAdd = Robolectric.buildActivity(DeviceAdminAdd.class).get();
+    }
+
+    @Test
+    public void logSpecialPermissionChange() {
+        mDeviceAdminAdd.logSpecialPermissionChange(true, "app");
+        verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class),
+                eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_ADMIN_ALLOW), eq("app"));
+
+        mDeviceAdminAdd.logSpecialPermissionChange(false, "app");
+        verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class),
+                eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_ADMIN_DENY), eq("app"));
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/SecuritySettingsTest.java b/tests/robotests/src/com/android/settings/SecuritySettingsTest.java
new file mode 100644
index 0000000..92214e3
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/SecuritySettingsTest.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings;
+
+import android.content.Context;
+import android.content.ContentResolver;
+import android.content.IContentProvider;
+import android.provider.Settings;
+import android.os.Bundle;
+
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settings.dashboard.SummaryLoader;
+import com.android.settings.testutils.FakeFeatureFactory;
+import com.android.settingslib.drawer.DashboardCategory;
+import com.android.settingslib.drawer.Tile;
+import com.android.settingslib.drawer.TileUtils;
+
+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.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.isNull;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.mockito.Mockito.when;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class SecuritySettingsTest {
+
+    private static final String MOCK_SUMMARY = "summary";
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+    @Mock
+    private DashboardCategory mDashboardCategory;
+    @Mock
+    private SummaryLoader mSummaryLoader;
+
+    private SecuritySettings.SummaryProvider mSummaryProvider;
+
+    @Implements(Settings.Secure.class)
+    public static class ShadowSecureSettings {
+
+        private static final Map<String, Object> mValueMap = new HashMap<>();
+
+        @Implementation
+        public static boolean putInt(ContentResolver resolver, String name, int value) {
+            mValueMap.put(name, value);
+            return true;
+        }
+
+        @Implementation
+        public static int getInt(ContentResolver resolver, String name, int defaultValue) {
+            Integer value = (Integer) mValueMap.get(name);
+            return value == null ? defaultValue : value;
+        }
+    }
+
+    @Implements(com.android.settingslib.drawer.TileUtils.class)
+    public static class ShadowTileUtils {
+        @Implementation
+        public static String getTextFromUri(Context context, String uriString,
+                Map<String, IContentProvider> providerMap, String key) {
+            return MOCK_SUMMARY;
+        }
+    }
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        FakeFeatureFactory.setupForTest(mContext);
+        mSummaryProvider = new SecuritySettings.SummaryProvider(mContext, mSummaryLoader);
+    }
+
+    @Test
+    public void testSummaryProvider_notListening() {
+        mSummaryProvider.setListening(false);
+
+        verifyNoMoreInteractions(mSummaryLoader);
+    }
+
+    @Test
+    @Config(shadows = {
+            ShadowSecureSettings.class,
+    })
+    public void testSummaryProvider_packageVerifierDisabled() {
+        // Package verifier state is set to disabled.
+        ShadowSecureSettings.putInt(null, Settings.Secure.PACKAGE_VERIFIER_STATE, -1);
+        mSummaryProvider.setListening(true);
+
+        verify(mSummaryLoader, times(1)).setSummary(any(), isNull(String.class));
+    }
+
+    @Test
+    public void testGetPackageVerifierSummary_nullInput() {
+        assertThat(mSummaryProvider.getPackageVerifierSummary(null)).isNull();
+
+        when(mDashboardCategory.getTilesCount()).thenReturn(0);
+
+        assertThat(mSummaryProvider.getPackageVerifierSummary(mDashboardCategory)).isNull();
+    }
+
+    @Test
+    public void testGetPackageVerifierSummary_noMatchingTile() {
+        when(mDashboardCategory.getTilesCount()).thenReturn(1);
+        when(mDashboardCategory.getTile(0)).thenReturn(new Tile());
+
+        assertThat(mSummaryProvider.getPackageVerifierSummary(mDashboardCategory)).isNull();
+    }
+
+    @Test
+    @Config(shadows = {
+            ShadowTileUtils.class,
+    })
+    public void testGetPackageVerifierSummary_matchingTile() {
+        when(mDashboardCategory.getTilesCount()).thenReturn(1);
+        Tile tile = new Tile();
+        tile.key = SecuritySettings.KEY_PACKAGE_VERIFIER_STATUS;
+        Bundle bundle = new Bundle();
+        bundle.putString(TileUtils.META_DATA_PREFERENCE_SUMMARY_URI, "content://host/path");
+        tile.metaData = bundle;
+        when(mDashboardCategory.getTile(0)).thenReturn(tile);
+
+        assertThat(mSummaryProvider.getPackageVerifierSummary(mDashboardCategory))
+                .isEqualTo(MOCK_SUMMARY);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/accounts/AccountDetailDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/accounts/AccountDetailDashboardFragmentTest.java
index 3ba4d02..31090be 100644
--- a/tests/robotests/src/com/android/settings/accounts/AccountDetailDashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/accounts/AccountDetailDashboardFragmentTest.java
@@ -82,7 +82,8 @@
 
     @Test
     public void testCategory_isAccount() {
-        assertThat(mFragment.getCategoryKey()).isEqualTo(CategoryKey.CATEGORY_ACCOUNT);
+        assertThat(new AccountDetailDashboardFragment().getCategoryKey())
+                .isEqualTo(CategoryKey.CATEGORY_ACCOUNT);
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/applications/AdvancedAppSettingsTest.java b/tests/robotests/src/com/android/settings/applications/AdvancedAppSettingsTest.java
index 7da30ed..b8f3fc4 100644
--- a/tests/robotests/src/com/android/settings/applications/AdvancedAppSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/applications/AdvancedAppSettingsTest.java
@@ -21,7 +21,6 @@
 import com.android.settings.R;
 import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
-import com.android.settings.testutils.FakeFeatureFactory;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -33,7 +32,6 @@
 import org.robolectric.shadows.ShadowApplication;
 
 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)
@@ -42,27 +40,20 @@
     @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);
+    public void getPreferenceScreenResId_shouldUseAppDefaultSettingPrefLayout() {
         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/applications/AppWithAdminGrantedPermissionsCounterTest.java b/tests/robotests/src/com/android/settings/applications/AppWithAdminGrantedPermissionsCounterTest.java
new file mode 100644
index 0000000..3dd3a65
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/applications/AppWithAdminGrantedPermissionsCounterTest.java
@@ -0,0 +1,217 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications;
+
+import android.app.admin.DevicePolicyManager;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.content.pm.UserInfo;
+import android.os.Build;
+import android.os.UserHandle;
+
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settings.enterprise.DevicePolicyManagerWrapper;
+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.shadows.ShadowApplication;
+
+import java.util.Arrays;
+import java.util.List;
+
+import static com.android.settings.testutils.ApplicationTestUtils.buildInfo;
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Matchers.anyObject;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.atLeast;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.mockito.Mockito.when;
+
+/**
+ * Tests for {@link InstalledAppCounter}.
+ */
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public final class AppWithAdminGrantedPermissionsCounterTest {
+
+    private final String APP_1 = "app1";
+    private final String APP_2 = "app2";
+    private final String APP_3 = "app3";
+    private final String APP_4 = "app4";
+    private final String APP_5 = "app5";
+    private final String APP_6 = "app6";
+
+    private final int MAIN_USER_ID = 0;
+    private final int MANAGED_PROFILE_ID = 10;
+
+    private final int PER_USER_UID_RANGE = 100000;
+    private final int APP_1_UID = MAIN_USER_ID * PER_USER_UID_RANGE + 1;
+    private final int APP_2_UID = MAIN_USER_ID * PER_USER_UID_RANGE + 2;
+    private final int APP_3_UID = MAIN_USER_ID * PER_USER_UID_RANGE + 3;
+    private final int APP_4_UID = MAIN_USER_ID * PER_USER_UID_RANGE + 4;
+    private final int APP_5_UID = MAIN_USER_ID * PER_USER_UID_RANGE + 5;
+    private final int APP_6_UID = MANAGED_PROFILE_ID * PER_USER_UID_RANGE + 1;
+
+    private final String PERMISSION_1 = "some.permission.1";
+    private final String PERMISSION_2 = "some.permission.2";
+    private final String[] PERMISSIONS = {PERMISSION_1, PERMISSION_2};
+
+    @Mock private Context mContext;
+    @Mock private PackageManagerWrapper mPackageManager;
+    @Mock private IPackageManagerWrapper mPackageManagerService;
+    @Mock private DevicePolicyManagerWrapper mDevicePolicyManager;
+    private List<UserInfo> mUsersToCount;
+
+    private int mAppCount = -1;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+    }
+
+    @Test
+    public void testCountInstalledAppsAcrossAllUsers() throws Exception {
+        // There are two users.
+        mUsersToCount = Arrays.asList(
+                new UserInfo(MAIN_USER_ID, "main", UserInfo.FLAG_ADMIN),
+                new UserInfo(MANAGED_PROFILE_ID, "managed profile", 0));
+
+        // The first user has five apps installed:
+        // * app1 uses run-time permissions. It has been granted one of the permissions by the
+        //        admin. It should be counted.
+        // * app2 uses run-time permissions. It has not been granted any of the permissions by the
+        //        admin. It should not be counted.
+        // * app3 uses install-time permissions. It was installed by the admin and requested one of
+        //        the permissions. It should be counted.
+        // * app4 uses install-time permissions. It was not installed by the admin but did request
+        //        one of the permissions. It should not be counted.
+        // * app5 uses install-time permissions. It was installed by the admin but did not request
+        //        any of the permissions. It should not be counted.
+        when(mPackageManager.getInstalledApplicationsAsUser(PackageManager.GET_DISABLED_COMPONENTS
+                | PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS
+                | PackageManager.MATCH_ANY_USER,
+                MAIN_USER_ID)).thenReturn(Arrays.asList(
+                        buildInfo(APP_1_UID, APP_1, 0 /* flags */, Build.VERSION_CODES.M),
+                        buildInfo(APP_2_UID, APP_2, 0 /* flags */, Build.VERSION_CODES.M),
+                        buildInfo(APP_3_UID, APP_3, 0 /* flags */, Build.VERSION_CODES.LOLLIPOP),
+                        buildInfo(APP_4_UID, APP_4, 0 /* flags */, Build.VERSION_CODES.LOLLIPOP),
+                        buildInfo(APP_5_UID, APP_5, 0 /* flags */, Build.VERSION_CODES.LOLLIPOP)));
+
+        // Grant run-time permissions as appropriate.
+        when(mDevicePolicyManager.getPermissionGrantState(null, APP_1, PERMISSION_1))
+                .thenReturn(DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED);
+        when(mDevicePolicyManager.getPermissionGrantState(null, APP_1, PERMISSION_2))
+                .thenReturn(DevicePolicyManager.PERMISSION_GRANT_STATE_DENIED);
+        when(mDevicePolicyManager.getPermissionGrantState(eq(null), eq(APP_2), anyObject()))
+                .thenReturn(DevicePolicyManager.PERMISSION_GRANT_STATE_DENIED);
+        when(mDevicePolicyManager.getPermissionGrantState(eq(null), eq(APP_3), anyObject()))
+                .thenReturn(DevicePolicyManager.PERMISSION_GRANT_STATE_DENIED);
+        when(mDevicePolicyManager.getPermissionGrantState(eq(null), eq(APP_4), anyObject()))
+                .thenReturn(DevicePolicyManager.PERMISSION_GRANT_STATE_DENIED);
+        when(mDevicePolicyManager.getPermissionGrantState(eq(null), eq(APP_5), anyObject()))
+                .thenReturn(DevicePolicyManager.PERMISSION_GRANT_STATE_DENIED);
+
+        // Grant install-time permissions as appropriate.
+        when(mPackageManagerService.checkUidPermission(anyObject(), eq(APP_1_UID)))
+                .thenReturn(PackageManager.PERMISSION_DENIED);
+        when(mPackageManagerService.checkUidPermission(anyObject(), eq(APP_2_UID)))
+                .thenReturn(PackageManager.PERMISSION_DENIED);
+        when(mPackageManagerService.checkUidPermission(PERMISSION_1, APP_3_UID))
+                .thenReturn(PackageManager.PERMISSION_DENIED);
+        when(mPackageManagerService.checkUidPermission(PERMISSION_2, APP_3_UID))
+                .thenReturn(PackageManager.PERMISSION_GRANTED);
+        when(mPackageManagerService.checkUidPermission(PERMISSION_1, APP_4_UID))
+                .thenReturn(PackageManager.PERMISSION_DENIED);
+        when(mPackageManagerService.checkUidPermission(PERMISSION_2, APP_4_UID))
+                .thenReturn(PackageManager.PERMISSION_GRANTED);
+        when(mPackageManagerService.checkUidPermission(anyObject(), eq(APP_5_UID)))
+                .thenReturn(PackageManager.PERMISSION_DENIED);
+
+        // app3 and app5 were installed by enterprise policy.
+        final UserHandle mainUser = new UserHandle(MAIN_USER_ID);
+        when(mPackageManager.getInstallReason(APP_1, mainUser))
+                .thenReturn(PackageManager.INSTALL_REASON_UNKNOWN);
+        when(mPackageManager.getInstallReason(APP_2, mainUser))
+                .thenReturn(PackageManager.INSTALL_REASON_UNKNOWN);
+        when(mPackageManager.getInstallReason(APP_3, mainUser))
+                .thenReturn(PackageManager.INSTALL_REASON_POLICY);
+        when(mPackageManager.getInstallReason(APP_4, mainUser))
+                .thenReturn(PackageManager.INSTALL_REASON_UNKNOWN);
+        when(mPackageManager.getInstallReason(APP_5, mainUser))
+                .thenReturn(PackageManager.INSTALL_REASON_POLICY);
+
+        // The second user has one app installed. This app uses run-time permissions. It has been
+        // granted both permissions by the admin. It should be counted.
+        when(mPackageManager.getInstalledApplicationsAsUser(PackageManager.GET_DISABLED_COMPONENTS
+                | PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS,
+                MANAGED_PROFILE_ID)).thenReturn(Arrays.asList(
+                        buildInfo(APP_6_UID, APP_6, 0 /* flags */, Build.VERSION_CODES.M)));
+
+        // Grant run-time permissions as appropriate.
+        when(mDevicePolicyManager.getPermissionGrantState(eq(null), eq(APP_6), anyObject()))
+                .thenReturn(DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED);
+
+        // Grant install-time permissions as appropriate.
+        when(mPackageManagerService.checkUidPermission(anyObject(), eq(APP_6_UID)))
+                .thenReturn(PackageManager.PERMISSION_DENIED);
+
+        // app6 was not installed by enterprise policy.
+        final UserHandle managedProfileUser = new UserHandle(MANAGED_PROFILE_ID);
+        when(mPackageManager.getInstallReason(APP_6, managedProfileUser))
+                .thenReturn(PackageManager.INSTALL_REASON_UNKNOWN);
+
+        // Count the number of all apps installed that were granted on or more permissions by the
+        // admin.  Wait for the background task to finish.
+        (new AppWithAdminGrantedPermissionsCounterTestable(PERMISSIONS)).execute();
+        ShadowApplication.runBackgroundTasks();
+
+        assertThat(mAppCount).isEqualTo(3);
+
+        // Verify that installed packages were retrieved for the users returned by
+        // InstalledAppCounterTestable.getUsersToCount() only.
+        verify(mPackageManager).getInstalledApplicationsAsUser(anyInt(), eq(MAIN_USER_ID));
+        verify(mPackageManager).getInstalledApplicationsAsUser(anyInt(),
+                eq(MANAGED_PROFILE_ID));
+        verify(mPackageManager, atLeast(0)).getInstallReason(anyObject(), anyObject());
+        verifyNoMoreInteractions(mPackageManager);
+
+    }
+
+    private class AppWithAdminGrantedPermissionsCounterTestable extends
+            AppWithAdminGrantedPermissionsCounter {
+        public AppWithAdminGrantedPermissionsCounterTestable(String[] permissions) {
+            super(mContext, permissions, mPackageManager, mPackageManagerService,
+                    mDevicePolicyManager);
+        }
+
+        @Override
+        protected void onCountComplete(int num) {
+            mAppCount = num;
+        }
+
+        @Override
+        protected List<UserInfo> getUsersToCount() {
+            return mUsersToCount;
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/applications/ApplicationFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/applications/ApplicationFeatureProviderImplTest.java
index 615d9ad..2f344dc 100644
--- a/tests/robotests/src/com/android/settings/applications/ApplicationFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/applications/ApplicationFeatureProviderImplTest.java
@@ -16,14 +16,21 @@
 
 package com.android.settings.applications;
 
+import android.app.admin.DevicePolicyManager;
 import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
 import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
 import android.content.pm.UserInfo;
+import android.os.Build;
 import android.os.UserHandle;
 import android.os.UserManager;
+import android.util.ArraySet;
 
 import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
+import com.android.settings.enterprise.DevicePolicyManagerWrapper;
 import com.android.settings.testutils.ApplicationTestUtils;
 import com.android.settings.testutils.shadow.ShadowUserManager;
 import org.junit.Before;
@@ -35,10 +42,11 @@
 import org.robolectric.shadows.ShadowApplication;
 
 import java.util.Arrays;
+import java.util.Set;
 
 import static com.google.common.truth.Truth.assertThat;
 import static org.mockito.Mockito.when;
-import org.robolectric.shadows.ShadowApplication;
+
 /**
  * Tests for {@link ApplicationFeatureProviderImpl}.
  */
@@ -50,15 +58,25 @@
     private final int MAIN_USER_ID = 0;
     private final int MANAGED_PROFILE_ID = 10;
 
+    private final int PER_USER_UID_RANGE = 100000;
+    private final int APP_1_UID = MAIN_USER_ID * PER_USER_UID_RANGE + 1;
+    private final int APP_2_UID = MANAGED_PROFILE_ID * PER_USER_UID_RANGE + 1;
+
     private final String APP_1 = "app1";
     private final String APP_2 = "app2";
 
+    private final String PERMISSION = "some.permission";
+
     private @Mock UserManager mUserManager;
     private @Mock Context mContext;
     private @Mock PackageManagerWrapper mPackageManager;
+    @Mock private IPackageManagerWrapper mPackageManagerService;
+    @Mock private DevicePolicyManagerWrapper mDevicePolicyManager;
 
     private ApplicationFeatureProvider mProvider;
 
+    private int mAppCount = -1;
+
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
@@ -66,14 +84,103 @@
         when(mContext.getApplicationContext()).thenReturn(mContext);
         when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
 
-        mProvider = new ApplicationFeatureProviderImpl(mContext, mPackageManager);
+        mProvider = new ApplicationFeatureProviderImpl(mContext, mPackageManager,
+                mPackageManagerService, mDevicePolicyManager);
     }
 
     @Test
     public void testCalculateNumberOfInstalledApps() {
-        final Integer[] numberOfInstalledApps = new Integer[1];
-        numberOfInstalledApps[0] = null;
+        setUpUsersAndInstalledApps();
 
+        when(mPackageManager.getInstallReason(APP_1, new UserHandle(MAIN_USER_ID)))
+                .thenReturn(PackageManager.INSTALL_REASON_UNKNOWN);
+        when(mPackageManager.getInstallReason(APP_2, new UserHandle(MANAGED_PROFILE_ID)))
+                .thenReturn(PackageManager.INSTALL_REASON_POLICY);
+
+        // Count all installed apps.
+        mAppCount = -1;
+        mProvider.calculateNumberOfInstalledApps(ApplicationFeatureProvider.IGNORE_INSTALL_REASON,
+                (num) -> {
+                    mAppCount = num;
+                });
+        ShadowApplication.runBackgroundTasks();
+        assertThat(mAppCount).isEqualTo(2);
+
+        // Count apps with specific install reason only.
+        mAppCount = -1;
+        mProvider.calculateNumberOfInstalledApps(PackageManager.INSTALL_REASON_POLICY,
+                (num) -> {
+                    mAppCount = num;
+                });
+        ShadowApplication.runBackgroundTasks();
+        assertThat(mAppCount).isEqualTo(1);
+    }
+
+    @Test
+    public void testCalculateNumberOfAppsWithAdminGrantedPermissions() throws Exception {
+        setUpUsersAndInstalledApps();
+
+        when(mDevicePolicyManager.getPermissionGrantState(null, APP_1, PERMISSION))
+                .thenReturn(DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED);
+        when(mDevicePolicyManager.getPermissionGrantState(null, APP_2, PERMISSION))
+                .thenReturn(DevicePolicyManager.PERMISSION_GRANT_STATE_DENIED);
+        when(mPackageManagerService.checkUidPermission(PERMISSION, APP_1_UID))
+                .thenReturn(PackageManager.PERMISSION_DENIED);
+        when(mPackageManagerService.checkUidPermission(PERMISSION, APP_2_UID))
+                .thenReturn(PackageManager.PERMISSION_GRANTED);
+        when(mPackageManager.getInstallReason(APP_1, new UserHandle(MAIN_USER_ID)))
+                .thenReturn(PackageManager.INSTALL_REASON_UNKNOWN);
+        when(mPackageManager.getInstallReason(APP_2, new UserHandle(MANAGED_PROFILE_ID)))
+                .thenReturn(PackageManager.INSTALL_REASON_POLICY);
+
+        mAppCount = -1;
+        mProvider.calculateNumberOfAppsWithAdminGrantedPermissions(new String[] {PERMISSION},
+                (num) -> {
+                    mAppCount = num;
+                });
+        ShadowApplication.runBackgroundTasks();
+        assertThat(mAppCount).isEqualTo(2);
+
+    }
+
+    @Test
+    public void testFindPersistentPreferredActivities() throws Exception {
+        when(mUserManager.getUserProfiles()).thenReturn(Arrays.asList(new UserHandle(MAIN_USER_ID),
+                new UserHandle(MANAGED_PROFILE_ID)));
+
+        final Intent viewIntent = new Intent(Intent.ACTION_VIEW);
+        final Intent editIntent = new Intent(Intent.ACTION_EDIT);
+        final Intent sendIntent = new Intent(Intent.ACTION_SEND);
+
+        final ResolveInfo app1 = createResolveInfo(APP_1);
+        final ResolveInfo app2 = createResolveInfo(APP_2);
+        when(mPackageManagerService.findPersistentPreferredActivity(viewIntent, MAIN_USER_ID))
+                .thenReturn(app1);
+        when(mPackageManagerService.findPersistentPreferredActivity(viewIntent, MANAGED_PROFILE_ID))
+                .thenReturn(app1);
+        when(mPackageManagerService.findPersistentPreferredActivity(editIntent, MAIN_USER_ID))
+                .thenReturn(null);
+        when(mPackageManagerService.findPersistentPreferredActivity(editIntent, MANAGED_PROFILE_ID))
+                .thenReturn(app2);
+        when(mPackageManagerService.findPersistentPreferredActivity(sendIntent, MAIN_USER_ID))
+                .thenReturn(app1);
+        when(mPackageManagerService.findPersistentPreferredActivity(sendIntent, MANAGED_PROFILE_ID))
+                .thenReturn(null);
+
+        final Set<ApplicationFeatureProvider.PersistentPreferredActivityInfo> expectedActivities
+                = new ArraySet<>();
+        expectedActivities.add(new ApplicationFeatureProvider.PersistentPreferredActivityInfo(APP_1,
+                MAIN_USER_ID));
+        expectedActivities.add(new ApplicationFeatureProvider.PersistentPreferredActivityInfo(APP_1,
+                MANAGED_PROFILE_ID));
+        expectedActivities.add(new ApplicationFeatureProvider.PersistentPreferredActivityInfo(APP_2,
+                MANAGED_PROFILE_ID));
+
+        assertThat(mProvider.findPersistentPreferredActivities(
+                new Intent[] {viewIntent, editIntent, sendIntent})).isEqualTo(expectedActivities);
+    }
+
+    private void setUpUsersAndInstalledApps() {
         when(mUserManager.getUsers(true)).thenReturn(Arrays.asList(
                 new UserInfo(MAIN_USER_ID, "main", UserInfo.FLAG_ADMIN),
                 new UserInfo(MANAGED_PROFILE_ID, "managed profile", 0)));
@@ -82,32 +189,20 @@
                 | PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS
                 | PackageManager.MATCH_ANY_USER,
                 MAIN_USER_ID)).thenReturn(Arrays.asList(
-                        ApplicationTestUtils.buildInfo(MAIN_USER_ID, APP_1, 0 /* flags */)));
-        when(mPackageManager.getInstallReason(APP_1, new UserHandle(MAIN_USER_ID)))
-                .thenReturn(PackageManager.INSTALL_REASON_UNKNOWN);
-
+                        ApplicationTestUtils.buildInfo(APP_1_UID, APP_1, 0 /* flags */,
+                                Build.VERSION_CODES.M)));
         when(mPackageManager.getInstalledApplicationsAsUser(PackageManager.GET_DISABLED_COMPONENTS
                 | PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS,
                 MANAGED_PROFILE_ID)).thenReturn(Arrays.asList(
-                        ApplicationTestUtils.buildInfo(MANAGED_PROFILE_ID, APP_2, 0 /* flags */)));
-        when(mPackageManager.getInstallReason(APP_2, new UserHandle(MANAGED_PROFILE_ID)))
-                .thenReturn(PackageManager.INSTALL_REASON_POLICY);
+                        ApplicationTestUtils.buildInfo(APP_2_UID, APP_2, 0 /* flags */,
+                                Build.VERSION_CODES.LOLLIPOP)));
+    }
 
-        // Count all installed apps.
-        mProvider.calculateNumberOfInstalledApps(ApplicationFeatureProvider.IGNORE_INSTALL_REASON,
-                (num) -> {
-                    numberOfInstalledApps[0] = num;
-                });
-        ShadowApplication.runBackgroundTasks();
-        assertThat(numberOfInstalledApps[0]).isEqualTo(2);
-
-        // Count apps with specific install reason only.
-        numberOfInstalledApps[0] = null;
-        mProvider.calculateNumberOfInstalledApps(PackageManager.INSTALL_REASON_POLICY,
-                (num) -> {
-                    numberOfInstalledApps[0] = num;
-                });
-        ShadowApplication.runBackgroundTasks();
-        assertThat(numberOfInstalledApps[0]).isEqualTo(1);
+    private ResolveInfo createResolveInfo(String packageName) {
+        final ActivityInfo activityInfo = new ActivityInfo();
+        activityInfo.packageName = packageName;
+        final ResolveInfo resolveInfo = new ResolveInfo();
+        resolveInfo.activityInfo = activityInfo;
+        return resolveInfo;
     }
 }
diff --git a/tests/robotests/src/com/android/settings/applications/DrawOverlayDetailsTest.java b/tests/robotests/src/com/android/settings/applications/DrawOverlayDetailsTest.java
new file mode 100644
index 0000000..a5306a2
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/applications/DrawOverlayDetailsTest.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.settings.applications;
+
+import android.content.Context;
+
+import com.android.internal.logging.nano.MetricsProto;
+import com.android.internal.telephony.SmsUsageMonitor;
+import com.android.settings.SettingsRobolectricTestRunner;
+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.annotation.Config;
+import org.robolectric.shadows.ShadowApplication;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.verify;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class DrawOverlayDetailsTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+
+    private FakeFeatureFactory mFeatureFactory;
+    private DrawOverlayDetails mFragment;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        FakeFeatureFactory.setupForTest(mContext);
+        mFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext);
+        mFragment = new DrawOverlayDetails();
+        mFragment.onAttach(ShadowApplication.getInstance().getApplicationContext());
+    }
+
+    @Test
+    public void logSpecialPermissionChange() {
+        mFragment.logSpecialPermissionChange(true, "app");
+        verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class),
+                eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_APPDRAW_ALLOW), eq("app"));
+
+        mFragment.logSpecialPermissionChange(false, "app");
+        verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class),
+                eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_APPDRAW_DENY), eq("app"));
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/applications/InstalledAppCounterTest.java b/tests/robotests/src/com/android/settings/applications/InstalledAppCounterTest.java
index 3dc2e9b..458959c 100644
--- a/tests/robotests/src/com/android/settings/applications/InstalledAppCounterTest.java
+++ b/tests/robotests/src/com/android/settings/applications/InstalledAppCounterTest.java
@@ -71,6 +71,10 @@
     private final int MAIN_USER_ID = 0;
     private final int MANAGED_PROFILE_ID = 10;
 
+    private final int PER_USER_UID_RANGE = 100000;
+    private final int MAIN_USER_APP_UID = MAIN_USER_ID * PER_USER_UID_RANGE;
+    private final int MANAGED_PROFILE_APP_UID = MANAGED_PROFILE_ID * PER_USER_UID_RANGE;
+
     @Mock private UserManager mUserManager;
     @Mock private Context mContext;
     @Mock private PackageManagerWrapper mPackageManager;
@@ -109,10 +113,14 @@
                 | PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS
                 | PackageManager.MATCH_ANY_USER,
                 MAIN_USER_ID)).thenReturn(Arrays.asList(
-                        buildInfo(MAIN_USER_ID, APP_1, ApplicationInfo.FLAG_UPDATED_SYSTEM_APP),
-                        buildInfo(MAIN_USER_ID, APP_2, 0 /* flags */),
-                        buildInfo(MAIN_USER_ID, APP_3, ApplicationInfo.FLAG_SYSTEM),
-                        buildInfo(MAIN_USER_ID, APP_4, ApplicationInfo.FLAG_SYSTEM)));
+                        buildInfo(MAIN_USER_APP_UID, APP_1,
+                                ApplicationInfo.FLAG_UPDATED_SYSTEM_APP, 0 /* targetSdkVersion */),
+                        buildInfo(MAIN_USER_APP_UID, APP_2, 0 /* flags */,
+                                0 /* targetSdkVersion */),
+                        buildInfo(MAIN_USER_APP_UID, APP_3, ApplicationInfo.FLAG_SYSTEM,
+                                0 /* targetSdkVersion */),
+                        buildInfo(MAIN_USER_APP_UID, APP_4, ApplicationInfo.FLAG_SYSTEM,
+                                0 /* targetSdkVersion */)));
         // For system apps, InstalledAppCounter checks whether they handle the default launcher
         // intent to decide whether to include them in the count of installed apps or not.
         expectQueryIntentActivities(MAIN_USER_ID, APP_3, true /* launchable */);
@@ -129,14 +137,16 @@
         when(mPackageManager.getInstallReason(APP_4, mainUser))
                 .thenReturn(PackageManager.INSTALL_REASON_POLICY);
 
-        // The second user has four apps installed:
+        // The second user has two apps installed:
         // * app5 is a user-installed app. It should be counted.
         // * app6 is a system app that provides a launcher icon. It should be counted.
         when(mPackageManager.getInstalledApplicationsAsUser(PackageManager.GET_DISABLED_COMPONENTS
                 | PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS,
                 MANAGED_PROFILE_ID)).thenReturn(Arrays.asList(
-                        buildInfo(MANAGED_PROFILE_ID, APP_5, 0 /* flags */),
-                        buildInfo(MANAGED_PROFILE_ID, APP_6, ApplicationInfo.FLAG_SYSTEM)));
+                        buildInfo(MANAGED_PROFILE_APP_UID, APP_5, 0 /* flags */,
+                                0 /* targetSdkVersion */),
+                        buildInfo(MANAGED_PROFILE_APP_UID, APP_6, ApplicationInfo.FLAG_SYSTEM,
+                                0 /* targetSdkVersion */)));
         expectQueryIntentActivities(MANAGED_PROFILE_ID, APP_6, true /* launchable */);
 
         // app5 is installed by enterprise policy.
@@ -165,7 +175,7 @@
 
         // Count once more, considering apps installed by enterprise policy only. Wait for the
         // background task to finish.
-        mInstalledAppCount = 0;
+        mInstalledAppCount = -1;
         (new InstalledAppCounterTestable(PackageManager.INSTALL_REASON_POLICY)).execute();
         ShadowApplication.runBackgroundTasks();
 
@@ -188,7 +198,7 @@
         }
     }
 
-    private class IsLaunchIntentFor extends ArgumentMatcher<Intent> {
+    private static class IsLaunchIntentFor extends ArgumentMatcher<Intent> {
         private final String mPackageName;
 
         IsLaunchIntentFor(String packageName) {
@@ -201,7 +211,7 @@
             if (intent == null) {
                 return false;
             }
-            if (intent.getAction() != Intent.ACTION_MAIN) {
+            if (!Intent.ACTION_MAIN.equals(intent.getAction())) {
                 return false;
             }
             final Set<String> categories = intent.getCategories();
diff --git a/tests/robotests/src/com/android/settings/applications/PictureInPictureSettingsTest.java b/tests/robotests/src/com/android/settings/applications/PictureInPictureSettingsTest.java
new file mode 100644
index 0000000..262c9e0
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/applications/PictureInPictureSettingsTest.java
@@ -0,0 +1,130 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.settings.applications;
+
+import android.content.Context;
+import android.content.pm.ActivityInfo;
+import android.content.pm.PackageInfo;
+
+import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.SettingsRobolectricTestRunner;
+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.annotation.Config;
+import org.robolectric.util.ReflectionHelpers;
+
+import java.lang.reflect.Field;
+
+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.argThat;
+import static org.mockito.Matchers.anyObject;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.atLeast;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.mockito.Mockito.when;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class PictureInPictureSettingsTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+
+    private FakeFeatureFactory mFeatureFactory;
+    private PictureInPictureSettings mFragment;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        FakeFeatureFactory.setupForTest(mContext);
+        mFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext);
+        mFragment = new PictureInPictureSettings();
+    }
+
+    @Test
+    public void testIgnoredApp() {
+        for (String ignoredPackage : mFragment.IGNORE_PACKAGE_LIST) {
+            assertThat(checkPackageHasPictureInPictureActivities(ignoredPackage, true))
+                            .isFalse();
+        }
+    }
+
+    @Test
+    public void testNonPippableApp() {
+        assertThat(checkPackageHasPictureInPictureActivities("com.android.dummypackage")).isFalse();
+        assertThat(checkPackageHasPictureInPictureActivities("com.android.dummypackage",
+                false, false, false)).isFalse();
+    }
+
+    @Test
+    public void testPippableApp() {
+        assertThat(checkPackageHasPictureInPictureActivities("com.android.dummypackage",
+                true)).isTrue();
+        assertThat(checkPackageHasPictureInPictureActivities("com.android.dummypackage",
+                false, true)).isTrue();
+        assertThat(checkPackageHasPictureInPictureActivities("com.android.dummypackage",
+                true, false)).isTrue();
+    }
+
+    @Test
+    public void logSpecialPermissionChange() {
+        mFragment.logSpecialPermissionChange(true, "app");
+        verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class),
+                eq(MetricsProto.MetricsEvent.APP_PICTURE_IN_PICTURE_ON_HIDE_ALLOW), eq("app"));
+
+        mFragment.logSpecialPermissionChange(false, "app");
+        verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class),
+                eq(MetricsProto.MetricsEvent.APP_PICTURE_IN_PICTURE_ON_HIDE_DENY), eq("app"));
+    }
+
+    private boolean checkPackageHasPictureInPictureActivities(String packageName,
+            boolean... resizeableActivityState) {
+        ActivityInfoWrapper[] activities = null;
+        if (resizeableActivityState.length > 0) {
+            activities = new ActivityInfoWrapper[resizeableActivityState.length];
+            for (int i = 0; i < activities.length; i++) {
+                activities[i] = new MockActivityInfo(resizeableActivityState[i]);
+            }
+        }
+        return PictureInPictureSettings.checkPackageHasPictureInPictureActivities(packageName,
+                activities);
+    }
+
+    private class MockActivityInfo implements ActivityInfoWrapper {
+
+        private boolean mSupportsPictureInPicture;
+
+        public MockActivityInfo(boolean supportsPictureInPicture) {
+            mSupportsPictureInPicture = supportsPictureInPicture;
+        }
+
+        @Override
+        public boolean supportsPictureInPicture() {
+            return mSupportsPictureInPicture;
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/applications/PremiumSmsAccessTest.java b/tests/robotests/src/com/android/settings/applications/PremiumSmsAccessTest.java
new file mode 100644
index 0000000..d9c88ff
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/applications/PremiumSmsAccessTest.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.settings.applications;
+
+import android.content.Context;
+
+import com.android.internal.logging.nano.MetricsProto;
+import com.android.internal.telephony.SmsUsageMonitor;
+import com.android.settings.SettingsRobolectricTestRunner;
+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.annotation.Config;
+import org.robolectric.shadows.ShadowApplication;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.verify;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class PremiumSmsAccessTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+
+    private FakeFeatureFactory mFeatureFactory;
+    private PremiumSmsAccess mFragment;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        FakeFeatureFactory.setupForTest(mContext);
+        mFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext);
+        mFragment = new PremiumSmsAccess();
+        mFragment.onAttach(ShadowApplication.getInstance().getApplicationContext());
+    }
+
+    @Test
+    public void logSpecialPermissionChange() {
+        mFragment.logSpecialPermissionChange(SmsUsageMonitor.PREMIUM_SMS_PERMISSION_ASK_USER,
+                "app");
+        verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class),
+                eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_PREMIUM_SMS_ASK), eq("app"));
+
+        mFragment.logSpecialPermissionChange(SmsUsageMonitor.PREMIUM_SMS_PERMISSION_NEVER_ALLOW,
+                "app");
+        verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class),
+                eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_PREMIUM_SMS_DENY), eq("app"));
+
+        mFragment.logSpecialPermissionChange(SmsUsageMonitor.PREMIUM_SMS_PERMISSION_ALWAYS_ALLOW,
+                "app");
+        verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class),
+                eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_PREMIUM_SMS_ALWAYS_ALLOW),
+                eq("app"));
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/applications/UsageAccessDetailsTest.java b/tests/robotests/src/com/android/settings/applications/UsageAccessDetailsTest.java
new file mode 100644
index 0000000..532a923
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/applications/UsageAccessDetailsTest.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.settings.applications;
+
+import android.content.Context;
+
+import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.SettingsRobolectricTestRunner;
+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.annotation.Config;
+import org.robolectric.shadows.ShadowApplication;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.verify;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class UsageAccessDetailsTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+
+    private FakeFeatureFactory mFeatureFactory;
+    private UsageAccessDetails mFragment;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        FakeFeatureFactory.setupForTest(mContext);
+        mFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext);
+        mFragment = new UsageAccessDetails();
+        mFragment.onAttach(ShadowApplication.getInstance().getApplicationContext());
+    }
+
+    @Test
+    public void logSpecialPermissionChange() {
+        mFragment.logSpecialPermissionChange(true, "app");
+        verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class),
+                eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_USAGE_VIEW_ALLOW), eq("app"));
+
+        mFragment.logSpecialPermissionChange(false, "app");
+        verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class),
+                eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_USAGE_VIEW_DENY), eq("app"));
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/applications/VrListenerSettingsTest.java b/tests/robotests/src/com/android/settings/applications/VrListenerSettingsTest.java
new file mode 100644
index 0000000..3abe3f4
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/applications/VrListenerSettingsTest.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.settings.applications;
+
+import android.content.Context;
+
+import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.SettingsRobolectricTestRunner;
+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.annotation.Config;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.verify;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class VrListenerSettingsTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+
+    private FakeFeatureFactory mFeatureFactory;
+    private VrListenerSettings mFragment;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        FakeFeatureFactory.setupForTest(mContext);
+        mFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext);
+        mFragment = new VrListenerSettings();
+    }
+
+    @Test
+    public void logSpecialPermissionChange() {
+        mFragment.logSpecialPermissionChange(true, "app");
+        verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class),
+                eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_VRHELPER_ALLOW), eq("app"));
+
+        mFragment.logSpecialPermissionChange(false, "app");
+        verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class),
+                eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_VRHELPER_DENY), eq("app"));
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/applications/WriteSettingsDetailsTest.java b/tests/robotests/src/com/android/settings/applications/WriteSettingsDetailsTest.java
new file mode 100644
index 0000000..a632118
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/applications/WriteSettingsDetailsTest.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.settings.applications;
+
+import android.content.Context;
+
+import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.SettingsRobolectricTestRunner;
+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.annotation.Config;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.verify;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class WriteSettingsDetailsTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+
+    private FakeFeatureFactory mFeatureFactory;
+    private WriteSettingsDetails mFragment;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        FakeFeatureFactory.setupForTest(mContext);
+        mFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext);
+        mFragment = new WriteSettingsDetails();
+    }
+
+    @Test
+    public void logSpecialPermissionChange() {
+        mFragment.logSpecialPermissionChange(true, "app");
+        verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class),
+                eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_SETTINGS_CHANGE_ALLOW),
+                eq("app"));
+
+        mFragment.logSpecialPermissionChange(false, "app");
+        verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class),
+                eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_SETTINGS_CHANGE_DENY),
+                eq("app"));
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAppInfoTest.java b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAppInfoTest.java
new file mode 100644
index 0000000..6c31927
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAppInfoTest.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications.defaultapps;
+
+
+import android.content.ComponentName;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+
+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 static com.google.common.truth.Truth.assertThat;
+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 DefaultAppInfoTest {
+
+    @Mock
+    private ActivityInfo mActivityInfo;
+    @Mock
+    private ApplicationInfo mApplicationInfo;
+    @Mock
+    private ComponentName mComponentName;
+    @Mock
+    private PackageManager mPackageManager;
+
+    private DefaultAppInfo mInfo;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+    }
+
+    @Test
+    public void initInfoWithActivityInfo_shouldLoadInfo() {
+        mActivityInfo.packageName = "test";
+        mInfo = new DefaultAppInfo(mActivityInfo);
+        mInfo.loadLabel(mPackageManager);
+        mInfo.loadIcon(mPackageManager);
+
+        assertThat(mInfo.getKey()).isEqualTo(mActivityInfo.packageName);
+        verify(mActivityInfo).loadLabel(mPackageManager);
+        verify(mActivityInfo).loadIcon(mPackageManager);
+    }
+
+    @Test
+    public void initInfoWithApplicationInfo_shouldLoadInfo() {
+        mApplicationInfo.packageName = "test";
+
+        mInfo = new DefaultAppInfo(mApplicationInfo);
+        mInfo.loadLabel(mPackageManager);
+        mInfo.loadIcon(mPackageManager);
+
+        assertThat(mInfo.getKey()).isEqualTo(mApplicationInfo.packageName);
+        verify(mApplicationInfo).loadLabel(mPackageManager);
+        verify(mApplicationInfo).loadIcon(mPackageManager);
+    }
+
+    @Test
+    public void initInfoWithComponent_shouldLoadInfo() {
+        when(mComponentName.getPackageName()).thenReturn("com.android.settings");
+
+        mInfo = new DefaultAppInfo(0 /* uid */, mComponentName, null /*summary */);
+        mInfo.getKey();
+
+        verify(mComponentName).flattenToString();
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragmentTest.java b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragmentTest.java
new file mode 100644
index 0000000..4f560c9
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragmentTest.java
@@ -0,0 +1,139 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications.defaultapps;
+
+
+import android.app.Activity;
+import android.content.Context;
+import android.os.Bundle;
+import android.os.UserManager;
+import android.support.v4.app.FragmentManager;
+import android.support.v7.preference.PreferenceScreen;
+
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settings.widget.RadioButtonPreference;
+
+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.RuntimeEnvironment;
+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.Matchers.any;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+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 DefaultAppPickerFragmentTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Activity mActivity;
+    @Mock
+    private PreferenceScreen mScreen;
+    @Mock
+    private UserManager mUserManager;
+    @Mock
+    private FragmentManager mFragmentManager;
+
+    private TestFragment mFragment;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mFragment = spy(new TestFragment());
+        final Bundle bundle = new Bundle();
+        bundle.putBoolean(DefaultAppPickerFragment.EXTRA_FOR_WORK, false);
+        mFragment.setArguments(bundle);
+
+        when(mActivity.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
+        doReturn(mActivity).when(mFragment).getContext();
+        doReturn(mScreen).when(mFragment).getPreferenceScreen();
+    }
+
+    @Test
+    public void onAttach_userIsInitialized() {
+        mFragment.onAttach((Context) mActivity);
+
+        verify(mActivity).getPackageManager();
+        verify(mActivity).getSystemService(Context.USER_SERVICE);
+    }
+
+    @Test
+    public void clickPreference_noCofirmation_shouldDirectlyConfirm() {
+        final RadioButtonPreference pref =
+                new RadioButtonPreference(RuntimeEnvironment.application);
+        pref.setKey("TEST");
+
+        mFragment.onRadioButtonClicked(pref);
+
+        assertThat(mFragment.setDefaultAppKeyCalled).isTrue();
+    }
+
+    @Test
+    public void clickPreference_hasCofirmation_shouldShowConfirmation() {
+        final RadioButtonPreference pref =
+                new RadioButtonPreference(RuntimeEnvironment.application);
+        pref.setKey("TEST");
+        doReturn("confirmation_text").when(mFragment)
+                .getConfirmationMessage(any(DefaultAppInfo.class));
+        doReturn(mActivity).when(mFragment).getActivity();
+
+        mFragment.onRadioButtonClicked(pref);
+    }
+
+    public static class TestFragment extends DefaultAppPickerFragment {
+
+        boolean setDefaultAppKeyCalled;
+
+        @Override
+        public int getMetricsCategory() {
+            return 0;
+        }
+
+        @Override
+        protected List<DefaultAppInfo> getCandidates() {
+            return new ArrayList<>();
+        }
+
+        @Override
+        protected String getDefaultAppKey() {
+            return null;
+        }
+
+        @Override
+        protected boolean setDefaultAppKey(String key) {
+            setDefaultAppKeyCalled = true;
+            return true;
+        }
+
+        @Override
+        public Context getContext() {
+            return RuntimeEnvironment.application;
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAppPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAppPreferenceControllerTest.java
new file mode 100644
index 0000000..f8d4d12
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAppPreferenceControllerTest.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications.defaultapps;
+
+
+import android.content.Context;
+import android.os.UserManager;
+import android.support.v7.preference.Preference;
+
+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.annotation.Config;
+
+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(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class DefaultAppPreferenceControllerTest {
+
+    private static final String TEST_APP_NAME = "test";
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+    @Mock
+    private UserManager mUserManager;
+    @Mock
+    private Preference mPreference;
+
+    private TestPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
+    }
+
+    @Test
+    public void updateState_hasDefaultApp_shouldUpdateAppName() {
+        mController = new TestPreferenceController(mContext);
+
+        when(mController.mAppInfo.loadLabel(mContext.getPackageManager()))
+                .thenReturn(TEST_APP_NAME);
+
+        mController.updateState(mPreference);
+
+        verify(mPreference).setSummary(TEST_APP_NAME);
+    }
+
+    @Test
+    public void updateState_hasNoApp_shouldNotUpdateAppName() {
+        mController = new TestPreferenceController(mContext);
+
+        mController.updateState(mPreference);
+
+        verify(mPreference, never()).setSummary(any(CharSequence.class));
+    }
+
+    private static class TestPreferenceController extends DefaultAppPreferenceController {
+
+        private DefaultAppInfo mAppInfo;
+
+        public TestPreferenceController(Context context) {
+            super(context);
+            mAppInfo = mock(DefaultAppInfo.class);
+        }
+
+        @Override
+        public boolean isAvailable() {
+            return true;
+        }
+
+        @Override
+        public String getPreferenceKey() {
+            return "test";
+        }
+
+        @Override
+        protected DefaultAppInfo getDefaultAppInfo() {
+            return mAppInfo;
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultBrowserPickerTest.java b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultBrowserPickerTest.java
new file mode 100644
index 0000000..e7b11d9
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultBrowserPickerTest.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications.defaultapps;
+
+
+import android.app.Activity;
+import android.content.Context;
+import android.os.UserManager;
+import android.provider.Settings;
+
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settings.applications.PackageManagerWrapper;
+
+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.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.util.ReflectionHelpers;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Matchers.eq;
+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 DefaultBrowserPickerTest {
+
+    private static final String TEST_APP_KEY = "";
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Activity mActivity;
+    @Mock
+    private UserManager mUserManager;
+    @Mock
+    private PackageManagerWrapper mPackageManager;
+
+    private DefaultBrowserPicker mPicker;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        when(mActivity.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
+
+        mPicker = new DefaultBrowserPicker();
+        mPicker.onAttach((Context) mActivity);
+
+        ReflectionHelpers.setField(mPicker, "mPm", mPackageManager);
+    }
+
+    @Test
+    public void setDefaultAppKey_shouldUpdateDefaultBrowser() {
+        mPicker.setDefaultAppKey(TEST_APP_KEY);
+        verify(mPackageManager)
+                .setDefaultBrowserPackageNameAsUser(eq(TEST_APP_KEY), anyInt());
+    }
+
+    @Test
+    public void getDefaultAppKey_shouldReturnDefaultBrowser() {
+        mPicker.getDefaultAppKey();
+        verify(mPackageManager)
+                .getDefaultBrowserPackageNameAsUser(anyInt());
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceControllerTest.java
new file mode 100644
index 0000000..e06dfee
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceControllerTest.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications.defaultapps;
+
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.UserManager;
+import android.support.v7.preference.Preference;
+
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settings.applications.PackageManagerWrapper;
+
+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.util.ReflectionHelpers;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyInt;
+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(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class DefaultBrowserPreferenceControllerTest {
+
+    @Mock
+    private Context mContext;
+    @Mock
+    private UserManager mUserManager;
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private PackageManagerWrapper mPackageManager;
+
+    private DefaultBrowserPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
+
+        mController = new DefaultBrowserPreferenceController(mContext);
+        ReflectionHelpers.setField(mController, "mPackageManager", mPackageManager);
+    }
+
+    @Test
+    public void isAlwaysAvailable() {
+        assertThat(mController.isAvailable()).isTrue();
+    }
+
+    @Test
+    public void getSoleAppLabel_hasNoApp_shouldNotReturnLabel() {
+        when(mPackageManager.queryIntentActivitiesAsUser(any(Intent.class), anyInt(), anyInt()))
+                .thenReturn(null);
+        final Preference pref = mock(Preference.class);
+
+        mController.updateState(pref);
+        verify(pref, never()).setSummary(any(String.class));
+    }
+
+    @Test
+    public void getDefaultApp_shouldGetDefaultBrowserPackage() {
+        mController.getDefaultAppInfo();
+
+        verify(mPackageManager).getDefaultBrowserPackageNameAsUser(anyInt());
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultEmergencyPickerTest.java b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultEmergencyPickerTest.java
new file mode 100644
index 0000000..ceccba1
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultEmergencyPickerTest.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications.defaultapps;
+
+import android.app.Activity;
+import android.content.Context;
+import android.os.UserManager;
+import android.provider.Settings;
+
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settings.applications.PackageManagerWrapper;
+
+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.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.util.ReflectionHelpers;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class DefaultEmergencyPickerTest {
+
+    private static final String TEST_APP_KEY = "test_app";
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Activity mActivity;
+    @Mock
+    private UserManager mUserManager;
+    @Mock
+    private PackageManagerWrapper mPackageManager;
+
+    private DefaultEmergencyPicker mPicker;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        when(mActivity.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
+
+        mPicker = spy(new DefaultEmergencyPicker());
+        mPicker.onAttach((Context) mActivity);
+
+        ReflectionHelpers.setField(mPicker, "mPm", mPackageManager);
+
+        doReturn(RuntimeEnvironment.application).when(mPicker).getContext();
+    }
+
+    @Test
+    public void setDefaultAppKey_shouldUpdateDefault() {
+        assertThat(mPicker.setDefaultAppKey(TEST_APP_KEY)).isTrue();
+        assertThat(mPicker.getDefaultAppKey()).isEqualTo(TEST_APP_KEY);
+    }
+
+    @Test
+    public void getDefaultAppKey_shouldReturnDefault() {
+        Settings.Secure.putString(RuntimeEnvironment.application.getContentResolver(),
+                Settings.Secure.EMERGENCY_ASSISTANCE_APPLICATION,
+                TEST_APP_KEY);
+
+        assertThat(mPicker.getDefaultAppKey()).isEqualTo(TEST_APP_KEY);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultHomePickerTest.java b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultHomePickerTest.java
new file mode 100644
index 0000000..d63ae6d
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultHomePickerTest.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications.defaultapps;
+
+
+import android.app.Activity;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.IntentFilter;
+import android.os.UserManager;
+
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settings.applications.PackageManagerWrapper;
+
+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.util.ReflectionHelpers;
+
+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.anyList;
+import static org.mockito.Mockito.mock;
+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 DefaultHomePickerTest {
+
+    private static final String TEST_APP_KEY = "com.android.settings/DefaultEmergencyPickerTest";
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Activity mActivity;
+    @Mock
+    private UserManager mUserManager;
+    @Mock
+    private PackageManagerWrapper mPackageManager;
+
+    private DefaultHomePicker mPicker;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        when(mActivity.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
+
+        mPicker = new DefaultHomePicker();
+        mPicker.onAttach((Context) mActivity);
+
+        ReflectionHelpers.setField(mPicker, "mPm", mPackageManager);
+    }
+
+    @Test
+    public void setDefaultAppKey_shouldUpdateDefault() {
+        assertThat(mPicker.setDefaultAppKey(TEST_APP_KEY)).isTrue();
+
+        verify(mPackageManager).replacePreferredActivity(any(IntentFilter.class),
+                anyInt(), any(ComponentName[].class), any(ComponentName.class));
+    }
+
+    @Test
+    public void getDefaultAppKey_shouldReturnDefault() {
+        final ComponentName cn = mock(ComponentName.class);
+        when(mPackageManager.getHomeActivities(anyList()))
+                .thenReturn(cn);
+        mPicker.getDefaultAppKey();
+        verify(cn).flattenToString();
+    }
+
+}
diff --git a/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultHomePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultHomePreferenceControllerTest.java
new file mode 100644
index 0000000..6d6e2f8
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultHomePreferenceControllerTest.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications.defaultapps;
+
+
+import android.content.Context;
+import android.os.UserManager;
+import android.support.v7.preference.Preference;
+
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settings.applications.PackageManagerWrapper;
+
+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.util.ReflectionHelpers;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Matchers.anyList;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class DefaultHomePreferenceControllerTest {
+
+    @Mock
+    private Context mContext;
+    @Mock
+    private UserManager mUserManager;
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private PackageManagerWrapper mPackageManager;
+
+    private DefaultHomePreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
+
+        mController = spy(new DefaultHomePreferenceController(mContext));
+        ReflectionHelpers.setField(mController, "mPackageManager", mPackageManager);
+    }
+
+    @Test
+    public void isAlwaysAvailable() {
+        assertThat(mController.isAvailable()).isTrue();
+    }
+
+    @Test
+    public void getDefaultApp_shouldGetDefaultBrowserPackage() {
+        assertThat(mController.getDefaultAppInfo()).isNotNull();
+
+        verify(mPackageManager).getHomeActivities(anyList());
+    }
+
+    @Test
+    public void updateState_noDefaultApp_shouldAskPackageManagerForOnlyApp() {
+        doReturn(null).when(mController).getDefaultAppInfo();
+
+        mController.updateState(mock(Preference.class));
+
+        verify(mPackageManager).getHomeActivities(anyList());
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultNotificationAssistantPickerTest.java b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultNotificationAssistantPickerTest.java
new file mode 100644
index 0000000..322830c
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultNotificationAssistantPickerTest.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications.defaultapps;
+
+
+import android.app.Activity;
+import android.content.Context;
+import android.os.UserManager;
+import android.provider.Settings;
+
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settings.applications.PackageManagerWrapper;
+
+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.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.util.ReflectionHelpers;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class DefaultNotificationAssistantPickerTest {
+
+    private static final String TEST_APP_KEY = "com.android.settings/PickerTest";
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Activity mActivity;
+    @Mock
+    private UserManager mUserManager;
+    @Mock
+    private PackageManagerWrapper mPackageManager;
+
+    private DefaultNotificationAssistantPicker mPicker;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        when(mActivity.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
+
+        mPicker = spy(new DefaultNotificationAssistantPicker());
+        mPicker.onAttach((Context) mActivity);
+
+        ReflectionHelpers.setField(mPicker, "mPm", mPackageManager);
+        doReturn(RuntimeEnvironment.application).when(mPicker).getContext();
+    }
+
+    @Test
+    public void setDefaultAppKey_shouldUpdateDefault() {
+        mPicker.setDefaultAppKey(TEST_APP_KEY);
+
+        assertThat(mPicker.getDefaultAppKey()).isEqualTo(TEST_APP_KEY);
+    }
+
+    @Test
+    public void getDefaultAppKey_shouldReturnDefault() {
+        Settings.Secure.putString(RuntimeEnvironment.application.getContentResolver(),
+                Settings.Secure.ENABLED_NOTIFICATION_ASSISTANT,
+                TEST_APP_KEY);
+
+        assertThat(mPicker.getDefaultAppKey()).isEqualTo(TEST_APP_KEY);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultPhonePickerTest.java b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultPhonePickerTest.java
new file mode 100644
index 0000000..0c5d5f1
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultPhonePickerTest.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications.defaultapps;
+
+
+import android.app.Activity;
+import android.content.Context;
+import android.os.UserManager;
+
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settings.applications.PackageManagerWrapper;
+
+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.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.util.ReflectionHelpers;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+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 DefaultPhonePickerTest {
+
+    private static final String TEST_APP_KEY = "com.android.settings/PickerTest";
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Activity mActivity;
+    @Mock
+    private UserManager mUserManager;
+    @Mock
+    private DefaultPhonePicker.DefaultKeyUpdater mDefaultKeyUpdater;
+    @Mock
+    private PackageManagerWrapper mPackageManager;
+
+    private DefaultPhonePicker mPicker;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        when(mActivity.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
+        when(mActivity.getSystemService(Context.TELECOM_SERVICE)).thenReturn(null);
+        mPicker = spy(new DefaultPhonePicker());
+        mPicker.onAttach((Context) mActivity);
+
+        ReflectionHelpers.setField(mPicker, "mPm", mPackageManager);
+        ReflectionHelpers.setField(mPicker, "mDefaultKeyUpdater", mDefaultKeyUpdater);
+        doReturn(RuntimeEnvironment.application).when(mPicker).getContext();
+    }
+
+    @Test
+    public void getSystemDefaultPackage_shouldAskDefaultKeyUpdater() {
+        mPicker.getSystemDefaultAppKey();
+
+        verify(mDefaultKeyUpdater).getSystemDialerPackage();
+    }
+
+    @Test
+    public void setDefaultAppKey_shouldUpdateDefault() {
+        mPicker.setDefaultAppKey(TEST_APP_KEY);
+
+        verify(mDefaultKeyUpdater).setDefaultDialerApplication(
+                any(Context.class), eq(TEST_APP_KEY), anyInt());
+    }
+
+    @Test
+    public void getDefaultAppKey_shouldReturnDefault() {
+        mPicker.getDefaultAppKey();
+        verify(mDefaultKeyUpdater).getDefaultDialerApplication(any(Context.class), anyInt());
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultSmsPickerTest.java b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultSmsPickerTest.java
new file mode 100644
index 0000000..3da6fec
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultSmsPickerTest.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications.defaultapps;
+
+
+import android.app.Activity;
+import android.content.Context;
+import android.os.UserManager;
+
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settings.applications.PackageManagerWrapper;
+
+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.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.util.ReflectionHelpers;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+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 DefaultSmsPickerTest {
+
+    private static final String TEST_APP_KEY = "com.android.settings/PickerTest";
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Activity mActivity;
+    @Mock
+    private UserManager mUserManager;
+    @Mock
+    private DefaultSmsPicker.DefaultKeyUpdater mDefaultKeyUpdater;
+    @Mock
+    private PackageManagerWrapper mPackageManager;
+
+    private DefaultSmsPicker mPicker;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        when(mActivity.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
+        mPicker = spy(new DefaultSmsPicker());
+        mPicker.onAttach((Context) mActivity);
+
+        ReflectionHelpers.setField(mPicker, "mPm", mPackageManager);
+        ReflectionHelpers.setField(mPicker, "mDefaultKeyUpdater", mDefaultKeyUpdater);
+        doReturn(RuntimeEnvironment.application).when(mPicker).getContext();
+    }
+
+    @Test
+    public void setDefaultAppKey_shouldUpdateDefault() {
+        mPicker.setDefaultAppKey(TEST_APP_KEY);
+
+        verify(mDefaultKeyUpdater).setDefaultApplication(any(Context.class), eq(TEST_APP_KEY));
+    }
+
+    @Test
+    public void getDefaultAppKey_shouldReturnDefault() {
+        mPicker.getDefaultAppKey();
+
+        verify(mDefaultKeyUpdater).getDefaultApplication(any(Context.class));
+    }
+
+}
diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothMasterSwitchPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothMasterSwitchPreferenceControllerTest.java
new file mode 100644
index 0000000..0e39c5d
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothMasterSwitchPreferenceControllerTest.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.bluetooth;
+
+import android.content.Context;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.Preference.OnPreferenceChangeListener;
+import android.support.v7.preference.PreferenceScreen;
+
+import com.android.settings.R;
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settings.widget.MasterSwitchPreference;
+import com.android.settingslib.bluetooth.BluetoothCallback;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+
+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.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Matchers.any;
+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 BluetoothMasterSwitchPreferenceControllerTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private LocalBluetoothManager mBluetoothManager;
+    @Mock
+    private PreferenceScreen mScreen;
+    @Mock
+    private MasterSwitchPreference mPreference;
+
+    private Context mContext;
+    private BluetoothMasterSwitchPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application.getApplicationContext();
+        mController = new BluetoothMasterSwitchPreferenceController(mContext, mBluetoothManager);
+        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
+    }
+
+    @Test
+    public void isAvailable_shouldAlwaysReturnTrue() {
+        assertThat(mController.isAvailable()).isTrue();
+    }
+
+    @Test
+    public void onResume_shouldRegisterCallback() {
+        mController.onResume();
+
+        verify(mBluetoothManager.getEventManager()).registerCallback(any(BluetoothCallback.class));
+    }
+
+    @Test
+    public void onPause_shouldUnregisterCallback() {
+        mController.onPause();
+
+        verify(mBluetoothManager.getEventManager()).unregisterCallback(
+            any(BluetoothCallback.class));
+    }
+
+    @Test
+    public void onStart_shouldRegisterPreferenceChangeListener() {
+        mController.displayPreference(mScreen);
+        mController.onStart();
+
+        verify(mPreference).setOnPreferenceChangeListener(any(OnPreferenceChangeListener.class));
+    }
+
+    @Test
+    public void onStop_shouldRegisterPreferenceChangeListener() {
+        mController.displayPreference(mScreen);
+        mController.onStart();
+
+        mController.onStop();
+
+        verify(mPreference).setOnPreferenceChangeListener(null);
+    }
+
+    @Test
+    public void onSummaryUpdated_shouldUpdatePreferenceSummary() {
+        mController.displayPreference(mScreen);
+
+        mController.onSummaryChanged("test summary");
+
+        verify(mPreference).setSummary("test summary");
+    }
+
+}
diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothSettingsSummaryProviderTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothSettingsSummaryProviderTest.java
index 7ac7cb1..8272dbf 100644
--- a/tests/robotests/src/com/android/settings/bluetooth/BluetoothSettingsSummaryProviderTest.java
+++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothSettingsSummaryProviderTest.java
@@ -16,14 +16,11 @@
 
 package com.android.settings.bluetooth;
 
-import android.bluetooth.BluetoothAdapter;
 import android.content.Context;
 
-import com.android.settings.R;
 import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settings.dashboard.SummaryLoader;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
 import com.android.settingslib.bluetooth.LocalBluetoothManager;
 
 import org.junit.Before;
@@ -34,15 +31,10 @@
 import org.mockito.MockitoAnnotations;
 import org.robolectric.RuntimeEnvironment;
 import org.robolectric.annotation.Config;
-import org.robolectric.shadows.ShadowBluetoothAdapter;
 
 import java.util.ArrayList;
 import java.util.List;
 
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
@@ -67,102 +59,27 @@
     }
 
     @Test
-    public void setListening_shouldUpdateSummary() {
+    public void setListening_shouldRegister() {
         mSummaryProvider.setListening(true);
 
-        verify(mBluetoothManager.getEventManager()).registerCallback(mSummaryProvider);
-        verify(mSummaryLoader).setSummary(eq(mSummaryProvider), anyString());
+        verify(mBluetoothManager.getEventManager()).registerCallback(
+            mSummaryProvider.mSummaryUpdater);
     }
 
     @Test
     public void setNotListening_shouldUnregister() {
         mSummaryProvider.setListening(false);
 
-        verify(mBluetoothManager.getEventManager()).unregisterCallback(mSummaryProvider);
+        verify(mBluetoothManager.getEventManager()).unregisterCallback(
+            mSummaryProvider.mSummaryUpdater);
     }
 
     @Test
-    public void updateSummary_btDisabled_shouldShowDisabledMessage() {
-        ShadowBluetoothAdapter.getDefaultAdapter().disable();
-        mSummaryProvider.setListening(true);
+    public void onSummaryChanged_shouldSetSummary() {
+        final String summary = "Bluetooth summary";
+        mSummaryProvider.onSummaryChanged(summary);
 
-        verify(mSummaryLoader).setSummary(mSummaryProvider,
-                mContext.getString(R.string.bluetooth_disabled));
-    }
-
-    @Test
-    public void updateSummary_btEnabled_noDevice_shouldShowDisconnectedMessage() {
-        ShadowBluetoothAdapter.getDefaultAdapter().enable();
-        mSummaryProvider.setListening(true);
-
-        verify(mSummaryLoader).setSummary(mSummaryProvider,
-                mContext.getString(R.string.bluetooth_disconnected));
-    }
-
-    @Test
-    public void updateState_btEnabled_noDevice_shouldShowDisconnectedMessage() {
-        ShadowBluetoothAdapter.getDefaultAdapter().enable();
-        mSummaryProvider.onBluetoothStateChanged(BluetoothAdapter.STATE_TURNING_ON);
-
-        verify(mSummaryLoader).setSummary(mSummaryProvider,
-                mContext.getString(R.string.bluetooth_disconnected));
-    }
-
-    @Test
-    public void updateState_btDisabled_shouldShowDisabledMessage() {
-        ShadowBluetoothAdapter.getDefaultAdapter().enable();
-        mSummaryProvider.onBluetoothStateChanged(BluetoothAdapter.STATE_TURNING_OFF);
-
-        verify(mSummaryLoader).setSummary(mSummaryProvider,
-                mContext.getString(R.string.bluetooth_disabled));
-    }
-
-    @Test
-    public void updateConnectionState_disconnected_shouldShowDisconnectedMessage() {
-        ShadowBluetoothAdapter.getDefaultAdapter().enable();
-        when(mBluetoothManager.getBluetoothAdapter().getConnectionState())
-                .thenReturn(BluetoothAdapter.STATE_DISCONNECTED);
-
-        mSummaryProvider.setListening(true);
-        mSummaryProvider.onConnectionStateChanged(null /* device */,
-                BluetoothAdapter.STATE_DISCONNECTED);
-
-        verify(mSummaryLoader, times(2)).setSummary(mSummaryProvider,
-                mContext.getString(R.string.bluetooth_disconnected));
-    }
-
-
-    @Test
-    public void updateConnectionState_connected_shouldShowConnectedMessage() {
-        ShadowBluetoothAdapter.getDefaultAdapter().enable();
-        when(mBluetoothManager.getBluetoothAdapter().getConnectionState())
-                .thenReturn(BluetoothAdapter.STATE_CONNECTED);
-        final List<CachedBluetoothDevice> devices = new ArrayList<>();
-        devices.add(mock(CachedBluetoothDevice.class));
-        when(devices.get(0).isConnected()).thenReturn(true);
-        when(mBluetoothManager.getCachedDeviceManager().getCachedDevicesCopy())
-                .thenReturn(devices);
-
-        mSummaryProvider.setListening(true);
-        mSummaryProvider.onConnectionStateChanged(null /* device */,
-                BluetoothAdapter.STATE_CONNECTED);
-
-        verify(mSummaryLoader).setSummary(mSummaryProvider,
-                mContext.getString(R.string.bluetooth_connected));
-    }
-
-    @Test
-    public void updateConnectionState_inconsistentState_shouldShowDisconnectedMessage() {
-        ShadowBluetoothAdapter.getDefaultAdapter().enable();
-        when(mBluetoothManager.getBluetoothAdapter().getConnectionState())
-                .thenReturn(BluetoothAdapter.STATE_CONNECTED);
-
-        mSummaryProvider.setListening(true);
-        mSummaryProvider.onConnectionStateChanged(null /* device */,
-                BluetoothAdapter.STATE_CONNECTED);
-
-        verify(mSummaryLoader, times(2)).setSummary(mSummaryProvider,
-                mContext.getString(R.string.bluetooth_disconnected));
+        verify(mSummaryLoader).setSummary(mSummaryProvider, summary);
     }
 
 }
diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothSummaryUpdaterTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothSummaryUpdaterTest.java
new file mode 100644
index 0000000..a2770a0
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothSummaryUpdaterTest.java
@@ -0,0 +1,172 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.bluetooth;
+
+import android.bluetooth.BluetoothAdapter;
+import android.content.Context;
+
+import com.android.settings.R;
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settings.widget.SummaryUpdater.OnSummaryChangeListener;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+import com.android.settingslib.bluetooth.LocalBluetoothAdapter;
+
+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.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowBluetoothAdapter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.mockito.Mockito.mock;
+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 BluetoothSummaryUpdaterTest {
+
+    private Context mContext;
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private LocalBluetoothManager mBluetoothManager;
+    @Mock
+    private LocalBluetoothAdapter mBtAdapter;
+
+    private BluetoothSummaryUpdater mSummaryUpdater;
+    @Mock
+    private SummaryListener mListener;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        when(mBluetoothManager.getBluetoothAdapter()).thenReturn(mBtAdapter);
+        when(mBtAdapter.isEnabled()).thenReturn(true);
+        when(mBtAdapter.getConnectionState()).thenReturn(BluetoothAdapter.STATE_CONNECTED);
+        mContext = RuntimeEnvironment.application.getApplicationContext();
+        mSummaryUpdater = new BluetoothSummaryUpdater(mContext, mListener, mBluetoothManager);
+    }
+
+    @Test
+    public void register_true_shouldRegisterListener() {
+        mSummaryUpdater.register(true);
+
+        verify(mBluetoothManager.getEventManager()).registerCallback(mSummaryUpdater);
+    }
+
+    @Test
+    public void register_false_shouldUnregisterListener() {
+        mSummaryUpdater.register(false);
+
+        verify(mBluetoothManager.getEventManager()).unregisterCallback(mSummaryUpdater);
+    }
+
+    @Test
+    public void register_true_shouldSendSummaryChange() {
+        mSummaryUpdater.register(true);
+
+        verify(mListener).onSummaryChanged(mContext.getString(R.string.bluetooth_connected));
+    }
+
+    @Test
+    public void onBluetoothStateChanged_btDisabled_shouldSendDisabledSummary() {
+        mSummaryUpdater.register(true);
+        mSummaryUpdater.onBluetoothStateChanged(BluetoothAdapter.STATE_OFF);
+
+        verify(mListener).onSummaryChanged(mContext.getString(R.string.bluetooth_disabled));
+    }
+
+    @Test
+    public void onBluetoothStateChanged_btEnabled_connected_shouldSendConnectedSummary() {
+        mSummaryUpdater.register(true);
+        mSummaryUpdater.onBluetoothStateChanged(BluetoothAdapter.STATE_ON);
+
+        verify(mListener).onSummaryChanged(mContext.getString(R.string.bluetooth_connected));
+    }
+
+    @Test
+    public void onBluetoothStateChanged_btEnabled_notConnected_shouldSendDisconnectedMessage() {
+        when(mBtAdapter.getConnectionState()).thenReturn(BluetoothAdapter.STATE_DISCONNECTED);
+        mSummaryUpdater.register(true);
+        mSummaryUpdater.onBluetoothStateChanged(BluetoothAdapter.STATE_TURNING_ON);
+
+        verify(mListener).onSummaryChanged(mContext.getString(R.string.bluetooth_disconnected));
+    }
+
+    @Test
+    public void onConnectionStateChanged_connected_shouldSendConnectedMessage() {
+        final List<CachedBluetoothDevice> devices = new ArrayList<>();
+        devices.add(mock(CachedBluetoothDevice.class));
+        when(devices.get(0).isConnected()).thenReturn(true);
+        when(mBluetoothManager.getCachedDeviceManager().getCachedDevicesCopy())
+            .thenReturn(devices);
+        when(mBtAdapter.getConnectionState()).thenReturn(BluetoothAdapter.STATE_DISCONNECTED);
+        mSummaryUpdater.register(true);
+
+        when(mBtAdapter.getConnectionState()).thenReturn(BluetoothAdapter.STATE_CONNECTED);
+        mSummaryUpdater.onConnectionStateChanged(null /* device */,
+            BluetoothAdapter.STATE_CONNECTED);
+
+        verify(mListener).onSummaryChanged(mContext.getString(R.string.bluetooth_connected));
+    }
+
+    @Test
+    public void onConnectionStateChanged_inconsistentState_shouldSendDisconnectedMessage() {
+        mSummaryUpdater.register(true);
+        mSummaryUpdater.onConnectionStateChanged(null /* device */,
+            BluetoothAdapter.STATE_CONNECTED);
+
+        verify(mListener).onSummaryChanged(mContext.getString(R.string.bluetooth_disconnected));
+    }
+
+    @Test
+    public void onConnectionStateChanged_connecting_shouldSendConnectingMessage() {
+        mSummaryUpdater.register(true);
+        when(mBtAdapter.getConnectionState()).thenReturn(BluetoothAdapter.STATE_CONNECTING);
+        mSummaryUpdater.onConnectionStateChanged(null /* device */,
+            BluetoothAdapter.STATE_CONNECTING);
+
+        verify(mListener).onSummaryChanged(mContext.getString(R.string.bluetooth_connecting));
+    }
+
+    @Test
+    public void onConnectionStateChanged_disconnecting_shouldSendDisconnectingMessage() {
+        mSummaryUpdater.register(true);
+        when(mBtAdapter.getConnectionState()).thenReturn(BluetoothAdapter.STATE_DISCONNECTING);
+        mSummaryUpdater.onConnectionStateChanged(null /* device */,
+            BluetoothAdapter.STATE_DISCONNECTING);
+
+        verify(mListener).onSummaryChanged(mContext.getString(R.string.bluetooth_disconnecting));
+    }
+
+    private class SummaryListener implements OnSummaryChangeListener {
+        String summary;
+
+        @Override
+        public void onSummaryChanged(String summary) {
+            this.summary = summary;
+        }
+    }
+
+}
diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java
index f477202..327575e 100644
--- a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java
@@ -26,7 +26,6 @@
 import com.android.settings.core.PreferenceController;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.testutils.FakeFeatureFactory;
-import com.android.settingslib.drawer.CategoryKey;
 import com.android.settingslib.drawer.DashboardCategory;
 import com.android.settingslib.drawer.Tile;
 
@@ -79,6 +78,7 @@
         when(mFakeFeatureFactory.dashboardFeatureProvider.getTilesForCategory(anyString()))
                 .thenReturn(mDashboardCategory);
         mTestFragment.onAttach(ShadowApplication.getInstance().getApplicationContext());
+        when(mContext.getPackageName()).thenReturn("TestPackage");
     }
 
     @Test
@@ -199,11 +199,6 @@
         }
 
         @Override
-        protected String getCategoryKey() {
-            return CategoryKey.CATEGORY_HOMEPAGE;
-        }
-
-        @Override
         public PreferenceScreen getPreferenceScreen() {
             return mScreen;
         }
diff --git a/tests/robotests/src/com/android/settings/datausage/UnrestrictedDataAccessTest.java b/tests/robotests/src/com/android/settings/datausage/UnrestrictedDataAccessTest.java
index c7b8dee..d674c77 100644
--- a/tests/robotests/src/com/android/settings/datausage/UnrestrictedDataAccessTest.java
+++ b/tests/robotests/src/com/android/settings/datausage/UnrestrictedDataAccessTest.java
@@ -15,31 +15,44 @@
  */
 package com.android.settings.datausage;
 
+import com.android.internal.logging.nano.MetricsProto;
+import android.content.Context;
 import android.content.pm.ApplicationInfo;
 import android.os.Process;
 import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
+import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settingslib.applications.ApplicationsState;
 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 static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.verify;
 
 @RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class UnrestrictedDataAccessTest {
 
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+
     @Mock
     private ApplicationsState.AppEntry mAppEntry;
     private UnrestrictedDataAccess mFragment;
+    private FakeFeatureFactory mFeatureFactory;
 
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
+        FakeFeatureFactory.setupForTest(mContext);
+        mFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext);
         mFragment = new UnrestrictedDataAccess();
     }
 
@@ -59,4 +72,15 @@
         assertThat(mFragment.shouldAddPreference(mAppEntry)).isFalse();
     }
 
+    @Test
+    public void logSpecialPermissionChange() {
+        mFragment.logSpecialPermissionChange(true, "app");
+        verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class),
+                eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_UNL_DATA_ALLOW), eq("app"));
+
+        mFragment.logSpecialPermissionChange(false, "app");
+        verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class),
+                eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_UNL_DATA_DENY), eq("app"));
+    }
+
 }
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/StorageDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/deviceinfo/StorageDashboardFragmentTest.java
index 5775aeb..f16304e 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/StorageDashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/StorageDashboardFragmentTest.java
@@ -16,6 +16,10 @@
 package com.android.settings.deviceinfo;
 
 import android.content.Context;
+import android.os.Bundle;
+import android.os.storage.DiskInfo;
+import android.os.storage.StorageManager;
+import android.os.storage.VolumeInfo;
 import android.provider.SearchIndexableResource;
 
 import com.android.settings.SettingsRobolectricTestRunner;
@@ -35,15 +39,19 @@
 import java.util.List;
 
 import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Matchers.anyString;
 import static org.mockito.Mockito.when;
 
 @RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class StorageDashboardFragmentTest {
-
     @Mock(answer = Answers.RETURNS_DEEP_STUBS)
     private Context mContext;
 
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private StorageManager mStorageManager;
+
     private StorageDashboardFragment mFragment;
 
     @Before
@@ -71,4 +79,11 @@
         assertThat(indexRes).isNotNull();
         assertThat(indexRes.get(0).xmlResId).isEqualTo(mFragment.getPreferenceScreenResId());
     }
+
+    @Test
+    public void testInitializeVolumeDoesntBreakOnNullVolume() {
+        VolumeInfo info = new VolumeInfo("id", 0, new DiskInfo("id", 0), "");
+        when(mStorageManager.findVolumeById(anyString())).thenReturn(info);
+        mFragment.initializeVolume(mStorageManager, new Bundle());
+    }
 }
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java
index 7776633..a377505 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java
@@ -140,6 +140,8 @@
         assertThat(intent.getComponent().getClassName()).isEqualTo(SubSettings.class.getName());
         assertThat(intent.getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT)).isEqualTo(
                 ManageApplications.class.getName());
+        assertThat(intent.getIntExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID, 0))
+                .isEqualTo(R.string.apps_storage);
     }
 
     @Test
@@ -159,6 +161,24 @@
     }
 
     @Test
+    public void testClickGames() {
+        mPreference.setKey("pref_games");
+        mController.handlePreferenceTreeClick(mPreference);
+
+        final ArgumentCaptor<Intent> argumentCaptor = ArgumentCaptor.forClass(Intent.class);
+        verify(mFragment.getActivity()).startActivityAsUser(argumentCaptor.capture(),
+                any(UserHandle.class));
+
+        Intent intent = argumentCaptor.getValue();
+        assertThat(intent.getAction()).isEqualTo(Intent.ACTION_MAIN);
+        assertThat(intent.getComponent().getClassName()).isEqualTo(SubSettings.class.getName());
+        assertThat(intent.getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT)).isEqualTo(
+                ManageApplications.class.getName());
+        assertThat(intent.getIntExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID, 0))
+                .isEqualTo(R.string.game_storage_settings);
+    }
+
+    @Test
     public void testMeasurementCompletedUpdatesPreferences() {
         StorageItemPreferenceAlternate audio = new StorageItemPreferenceAlternate(mContext);
         StorageItemPreferenceAlternate image = new StorageItemPreferenceAlternate(mContext);
diff --git a/tests/robotests/src/com/android/settings/display/AutoBrightnessPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/AutoBrightnessPreferenceControllerTest.java
new file mode 100644
index 0000000..10a8b0b
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/display/AutoBrightnessPreferenceControllerTest.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.display;
+
+import android.content.Context;
+import android.provider.Settings;
+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.annotation.Config;
+
+import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE;
+import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
+import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL;
+import static com.google.common.truth.Truth.assertThat;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class AutoBrightnessPreferenceControllerTest {
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+    private AutoBrightnessPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mController = new AutoBrightnessPreferenceController(mContext);
+    }
+
+    @Test
+    public void testOnPreferenceChange_TurnOnAuto_ReturnAuto() {
+        mController.onPreferenceChange(null, true);
+
+        final int mode = Settings.System.getInt(mContext.getContentResolver(),
+                SCREEN_BRIGHTNESS_MODE, SCREEN_BRIGHTNESS_MODE_MANUAL);
+        assertThat(mode).isEqualTo(SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
+    }
+
+    @Test
+    public void testOnPreferenceChange_TurnOffAuto_ReturnManual() {
+        mController.onPreferenceChange(null, false);
+
+        final int mode = Settings.System.getInt(mContext.getContentResolver(),
+                SCREEN_BRIGHTNESS_MODE, SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
+        assertThat(mode).isEqualTo(SCREEN_BRIGHTNESS_MODE_MANUAL);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/display/TimeoutPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/TimeoutPreferenceControllerTest.java
new file mode 100644
index 0000000..ec142c2
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/display/TimeoutPreferenceControllerTest.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.display;
+
+import android.content.Context;
+import android.provider.Settings;
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settings.TimeoutListPreference;
+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 static android.provider.Settings.System.SCREEN_OFF_TIMEOUT;
+import static com.google.common.truth.Truth.assertThat;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class TimeoutPreferenceControllerTest {
+    private static final int TIMEOUT = 30;
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+    @Mock
+    private TimeoutListPreference mPreference;
+    private TimeoutPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mController = new TimeoutPreferenceController(mContext);
+    }
+
+    @Test
+    public void testOnPreferenceChange_SetTimeout_ReturnCorrectTimeout() {
+        mController.onPreferenceChange(mPreference, Integer.toString(TIMEOUT));
+
+        final int mode = Settings.System.getInt(mContext.getContentResolver(),
+                SCREEN_OFF_TIMEOUT, 0);
+        assertThat(mode).isEqualTo(TIMEOUT);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/enterprise/AdminGrantedCameraPermissionPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/enterprise/AdminGrantedCameraPermissionPreferenceControllerTest.java
new file mode 100644
index 0000000..de24885
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/enterprise/AdminGrantedCameraPermissionPreferenceControllerTest.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.enterprise;
+
+import android.Manifest;
+
+import com.android.settings.R;
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import org.junit.runner.RunWith;
+import org.robolectric.annotation.Config;
+
+/**
+ * Tests for {@link AdminGrantedCameraPermissionPreferenceController}.
+ */
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public final class AdminGrantedCameraPermissionPreferenceControllerTest extends
+        AdminGrantedPermissionsPreferenceControllerTestBase {
+
+    public AdminGrantedCameraPermissionPreferenceControllerTest() {
+        super("enterprise_privacy_number_camera_access_packages",
+                new String[] {Manifest.permission.CAMERA},
+                R.plurals.enterprise_privacy_number_camera_access_packages);
+    }
+
+    @Override
+    public void setUp() {
+        super.setUp();
+        mController = new AdminGrantedCameraPermissionPreferenceController(mContext);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/enterprise/AdminGrantedLocationPermissionsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/enterprise/AdminGrantedLocationPermissionsPreferenceControllerTest.java
new file mode 100644
index 0000000..1c6f91d
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/enterprise/AdminGrantedLocationPermissionsPreferenceControllerTest.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.enterprise;
+
+import android.Manifest;
+
+import com.android.settings.R;
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import org.junit.runner.RunWith;
+import org.robolectric.annotation.Config;
+
+/**
+ * Tests for {@link AdminGrantedLocationPermissionsPreferenceController}.
+ */
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public final class AdminGrantedLocationPermissionsPreferenceControllerTest extends
+        AdminGrantedPermissionsPreferenceControllerTestBase {
+
+    public AdminGrantedLocationPermissionsPreferenceControllerTest() {
+        super("enterprise_privacy_number_location_access_packages",
+                new String[] {Manifest.permission.ACCESS_COARSE_LOCATION,
+                        Manifest.permission.ACCESS_FINE_LOCATION},
+                R.plurals.enterprise_privacy_number_location_access_packages);
+    }
+
+    @Override
+    public void setUp() {
+        super.setUp();
+        mController = new AdminGrantedLocationPermissionsPreferenceController(mContext);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/enterprise/AdminGrantedMicrophonePermissionPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/enterprise/AdminGrantedMicrophonePermissionPreferenceControllerTest.java
new file mode 100644
index 0000000..bcaf63f
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/enterprise/AdminGrantedMicrophonePermissionPreferenceControllerTest.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.enterprise;
+
+import android.Manifest;
+
+import com.android.settings.R;
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import org.junit.runner.RunWith;
+import org.robolectric.annotation.Config;
+
+/**
+ * Tests for {@link AdminGrantedMicrophonePermissionPreferenceController}.
+ */
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public final class AdminGrantedMicrophonePermissionPreferenceControllerTest extends
+        AdminGrantedPermissionsPreferenceControllerTestBase {
+
+    public AdminGrantedMicrophonePermissionPreferenceControllerTest() {
+        super("enterprise_privacy_number_microphone_access_packages",
+                new String[] {Manifest.permission.RECORD_AUDIO},
+                R.plurals.enterprise_privacy_number_microphone_access_packages);
+    }
+
+    @Override
+    public void setUp() {
+        super.setUp();
+        mController = new AdminGrantedMicrophonePermissionPreferenceController(mContext);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/enterprise/AdminGrantedPermissionsPreferenceControllerBaseTest.java b/tests/robotests/src/com/android/settings/enterprise/AdminGrantedPermissionsPreferenceControllerBaseTest.java
new file mode 100644
index 0000000..2bebbf0
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/enterprise/AdminGrantedPermissionsPreferenceControllerBaseTest.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.enterprise;
+
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import org.junit.runner.RunWith;
+import org.robolectric.annotation.Config;
+
+/**
+ * Tests for {@link AdminGrantedPermissionsPreferenceControllerBase}.
+ */
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public final class AdminGrantedPermissionsPreferenceControllerBaseTest extends
+        AdminGrantedPermissionsPreferenceControllerTestBase {
+
+    public AdminGrantedPermissionsPreferenceControllerBaseTest() {
+        super(null, new String[] {"some.permission"}, 123 /* resourceStringId */);
+    }
+
+    @Override
+    public void setUp() {
+        super.setUp();
+        mController = new AdminGrantedPermissionsPreferenceControllerBaseTestable();
+    }
+
+    private class AdminGrantedPermissionsPreferenceControllerBaseTestable extends
+            AdminGrantedPermissionsPreferenceControllerBase {
+
+        AdminGrantedPermissionsPreferenceControllerBaseTestable() {
+            super(AdminGrantedPermissionsPreferenceControllerBaseTest.this.mContext, mPermissions,
+                    mStringResourceId);
+        }
+
+        @Override
+        public String getPreferenceKey() {
+            return null;
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/enterprise/AdminGrantedPermissionsPreferenceControllerTestBase.java b/tests/robotests/src/com/android/settings/enterprise/AdminGrantedPermissionsPreferenceControllerTestBase.java
new file mode 100644
index 0000000..610692d
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/enterprise/AdminGrantedPermissionsPreferenceControllerTestBase.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.enterprise;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.support.v7.preference.Preference;
+
+import com.android.settings.applications.ApplicationFeatureProvider;
+import com.android.settings.testutils.FakeFeatureFactory;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Answers;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.anyObject;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.eq;
+import static org.mockito.Mockito.when;
+
+/**
+ * Common base for testing subclasses of {@link AdminGrantedPermissionsPreferenceControllerBase}.
+ */
+public abstract class AdminGrantedPermissionsPreferenceControllerTestBase {
+
+    protected final String mKey;
+    protected final String[] mPermissions;
+    protected final int mStringResourceId;
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    protected Context mContext;
+    private FakeFeatureFactory mFeatureFactory;
+
+    protected AdminGrantedPermissionsPreferenceControllerBase mController;
+
+    public AdminGrantedPermissionsPreferenceControllerTestBase(String key, String[] permissions,
+            int stringResourceId) {
+        mKey = key;
+        mPermissions = permissions;
+        mStringResourceId = stringResourceId;
+    }
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        FakeFeatureFactory.setupForTest(mContext);
+        mFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext);
+    }
+
+    private void setNumberOfPackagesWithAdminGrantedPermissions(int number) {
+        doAnswer(new Answer() {
+            public Object answer(InvocationOnMock invocation) {
+                ((ApplicationFeatureProvider.NumberOfAppsCallback)
+                        invocation.getArguments()[1]).onNumberOfAppsResult(number);
+                return null;
+            }}).when(mFeatureFactory.applicationFeatureProvider)
+                    .calculateNumberOfAppsWithAdminGrantedPermissions(eq(mPermissions),
+                            anyObject());
+    }
+
+    @Test
+    public void testUpdateState() {
+        final Preference preference = new Preference(mContext, null, 0, 0);
+        preference.setVisible(true);
+
+        setNumberOfPackagesWithAdminGrantedPermissions(20);
+        when(mContext.getResources().getQuantityString(mStringResourceId, 20, 20))
+                .thenReturn("20 packages");
+        mController.updateState(preference);
+        assertThat(preference.getTitle()).isEqualTo("20 packages");
+        assertThat(preference.isVisible()).isTrue();
+
+        setNumberOfPackagesWithAdminGrantedPermissions(0);
+        mController.updateState(preference);
+        assertThat(preference.isVisible()).isFalse();
+    }
+
+    @Test
+    public void testIsAvailable() {
+        assertThat(mController.isAvailable()).isTrue();
+    }
+
+    @Test
+    public void testHandlePreferenceTreeClick() {
+        assertThat(mController.handlePreferenceTreeClick(new Preference(mContext, null, 0, 0)))
+                .isFalse();
+    }
+
+    @Test
+    public void testGetPreferenceKey() {
+        assertThat(mController.getPreferenceKey()).isEqualTo(mKey);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/enterprise/EnterpriseInstalledPackagesPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/enterprise/EnterpriseInstalledPackagesPreferenceControllerTest.java
index 9a46e14..b55b512 100644
--- a/tests/robotests/src/com/android/settings/enterprise/EnterpriseInstalledPackagesPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/enterprise/EnterpriseInstalledPackagesPreferenceControllerTest.java
@@ -68,8 +68,8 @@
     private void setNumberOfEnterpriseInstalledPackages(int number) {
         doAnswer(new Answer() {
             public Object answer(InvocationOnMock invocation) {
-                ((ApplicationFeatureProvider.NumberOfInstalledAppsCallback)
-                        invocation.getArguments()[1]).onNumberOfInstalledAppsResult(number);
+                ((ApplicationFeatureProvider.NumberOfAppsCallback)
+                        invocation.getArguments()[1]).onNumberOfAppsResult(number);
                 return null;
             }}).when(mFeatureFactory.applicationFeatureProvider)
                     .calculateNumberOfInstalledApps(eq(PackageManager.INSTALL_REASON_POLICY),
@@ -81,6 +81,10 @@
         final Preference preference = new Preference(mContext, null, 0, 0);
         preference.setVisible(true);
 
+        setNumberOfEnterpriseInstalledPackages(0);
+        mController.updateState(preference);
+        assertThat(preference.isVisible()).isFalse();
+
         setNumberOfEnterpriseInstalledPackages(20);
         when(mContext.getResources().getQuantityString(
                 R.plurals.enterprise_privacy_number_enterprise_installed_packages, 20, 20))
@@ -88,10 +92,6 @@
         mController.updateState(preference);
         assertThat(preference.getTitle()).isEqualTo("20 packages");
         assertThat(preference.isVisible()).isTrue();
-
-        setNumberOfEnterpriseInstalledPackages(0);
-        mController.updateState(preference);
-        assertThat(preference.isVisible()).isFalse();
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProviderImplTest.java
index be1296c..7724db8 100644
--- a/tests/robotests/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProviderImplTest.java
@@ -17,12 +17,16 @@
 package com.android.settings.enterprise;
 
 import android.content.ComponentName;
+import android.content.Context;
 import android.content.pm.PackageManager;
 import android.content.pm.UserInfo;
+import android.content.res.Resources;
 import android.net.ProxyInfo;
 import android.os.UserHandle;
 import android.os.UserManager;
+import android.text.SpannableStringBuilder;
 
+import com.android.settings.R;
 import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settings.applications.PackageManagerWrapper;
@@ -34,12 +38,14 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowApplication;
 
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
 import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 /**
@@ -50,6 +56,7 @@
 public final class EnterprisePrivacyFeatureProviderImplTest {
 
     private final ComponentName DEVICE_OWNER = new ComponentName("dummy", "component");
+    private final String DEVICE_OWNER_ORGANIZATION = new String("ACME");
     private final Date TIMESTAMP = new Date(2011, 11, 11);
     private final int MY_USER_ID = UserHandle.myUserId();
     private final int MANAGED_PROFILE_USER_ID = MY_USER_ID + 1;
@@ -61,6 +68,7 @@
     private @Mock PackageManagerWrapper mPackageManager;
     private @Mock UserManager mUserManager;
     private @Mock ConnectivityManagerWrapper mConnectivityManger;
+    private Resources mResources;
 
     private EnterprisePrivacyFeatureProvider mProvider;
 
@@ -72,9 +80,10 @@
                 .thenReturn(true);
         when(mUserManager.getProfiles(MY_USER_ID)).thenReturn(mProfiles);
         mProfiles.add(new UserInfo(MY_USER_ID, "", "", 0 /* flags */));
+        mResources = ShadowApplication.getInstance().getApplicationContext().getResources();
 
         mProvider = new EnterprisePrivacyFeatureProviderImpl(mDevicePolicyManager, mPackageManager,
-                mUserManager, mConnectivityManger);
+                mUserManager, mConnectivityManger, mResources);
     }
 
     @Test
@@ -96,6 +105,33 @@
     }
 
     @Test
+    public void testGetDeviceOwnerDisclosure() {
+        final Context context = mock(Context.class);
+
+        when(mDevicePolicyManager.getDeviceOwnerComponentOnAnyUser()).thenReturn(null);
+        assertThat(mProvider.getDeviceOwnerDisclosure(context)).isNull();
+
+        SpannableStringBuilder disclosure = new SpannableStringBuilder();
+        disclosure.append(mResources.getString(R.string.do_disclosure_generic));
+        disclosure.append(mResources.getString(R.string.do_disclosure_learn_more_separator));
+        disclosure.append(mResources.getString(R.string.do_disclosure_learn_more),
+                new EnterprisePrivacyFeatureProviderImpl.EnterprisePrivacySpan(context), 0);
+        when(mDevicePolicyManager.getDeviceOwnerComponentOnAnyUser()).thenReturn(DEVICE_OWNER);
+        when(mDevicePolicyManager.getDeviceOwnerOrganizationName()).thenReturn(null);
+        assertThat(mProvider.getDeviceOwnerDisclosure(context)).isEqualTo(disclosure);
+
+        disclosure = new SpannableStringBuilder();
+        disclosure.append(mResources.getString(R.string.do_disclosure_with_name,
+                DEVICE_OWNER_ORGANIZATION));
+        disclosure.append(mResources.getString(R.string.do_disclosure_learn_more_separator));
+        disclosure.append(mResources.getString(R.string.do_disclosure_learn_more),
+                new EnterprisePrivacyFeatureProviderImpl.EnterprisePrivacySpan(context), 0);
+        when(mDevicePolicyManager.getDeviceOwnerOrganizationName())
+                .thenReturn(DEVICE_OWNER_ORGANIZATION);
+        assertThat(mProvider.getDeviceOwnerDisclosure(context)).isEqualTo(disclosure);
+    }
+
+    @Test
     public void testGetLastSecurityLogRetrievalTime() {
         when(mDevicePolicyManager.getLastSecurityLogRetrievalTime()).thenReturn(-1L);
         assertThat(mProvider.getLastSecurityLogRetrievalTime()).isNull();
diff --git a/tests/robotests/src/com/android/settings/enterprise/EnterprisePrivacySettingsTest.java b/tests/robotests/src/com/android/settings/enterprise/EnterprisePrivacySettingsTest.java
index 5e4e08f..2559769 100644
--- a/tests/robotests/src/com/android/settings/enterprise/EnterprisePrivacySettingsTest.java
+++ b/tests/robotests/src/com/android/settings/enterprise/EnterprisePrivacySettingsTest.java
@@ -73,17 +73,25 @@
         final List<PreferenceController> controllers = mSettings.getPreferenceControllers(
                 ShadowApplication.getInstance().getApplicationContext());
         assertThat(controllers).isNotNull();
-        assertThat(controllers.size()).isEqualTo(8);
+        assertThat(controllers.size()).isEqualTo(12);
         assertThat(controllers.get(0)).isInstanceOf(InstalledPackagesPreferenceController.class);
         assertThat(controllers.get(1)).isInstanceOf(NetworkLogsPreferenceController.class);
         assertThat(controllers.get(2)).isInstanceOf(BugReportsPreferenceController.class);
         assertThat(controllers.get(3)).isInstanceOf(SecurityLogsPreferenceController.class);
         assertThat(controllers.get(4)).isInstanceOf(
-                AlwaysOnVpnPrimaryUserPreferenceController.class);
-        assertThat(controllers.get(5)).isInstanceOf(
-                AlwaysOnVpnManagedProfilePreferenceController.class);
-        assertThat(controllers.get(6)).isInstanceOf(GlobalHttpProxyPreferenceController.class);
-        assertThat(controllers.get(7)).isInstanceOf(
                 EnterpriseInstalledPackagesPreferenceController.class);
+        assertThat(controllers.get(5)).isInstanceOf(
+                AdminGrantedLocationPermissionsPreferenceController.class);
+        assertThat(controllers.get(6)).isInstanceOf(
+                AdminGrantedMicrophonePermissionPreferenceController.class);
+        assertThat(controllers.get(7)).isInstanceOf(
+                AdminGrantedCameraPermissionPreferenceController.class);
+        assertThat(controllers.get(8)).isInstanceOf(
+                EnterpriseSetDefaultAppsPreferenceController.class);
+        assertThat(controllers.get(9)).isInstanceOf(
+                AlwaysOnVpnPrimaryUserPreferenceController.class);
+        assertThat(controllers.get(10)).isInstanceOf(
+                AlwaysOnVpnManagedProfilePreferenceController.class);
+        assertThat(controllers.get(11)).isInstanceOf(GlobalHttpProxyPreferenceController.class);
     }
 }
diff --git a/tests/robotests/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsPreferenceControllerTest.java
new file mode 100644
index 0000000..84520a5
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsPreferenceControllerTest.java
@@ -0,0 +1,170 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.enterprise;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.net.Uri;
+import android.provider.ContactsContract;
+import android.provider.MediaStore;
+import android.support.v7.preference.Preference;
+import android.util.ArraySet;
+
+import com.android.settings.R;
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settings.applications.ApplicationFeatureProvider;
+import com.android.settings.testutils.FakeFeatureFactory;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentMatcher;
+import org.mockito.Answers;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.annotation.Config;
+
+import java.util.Set;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Matchers.argThat;
+import static org.mockito.Mockito.anyObject;
+import static org.mockito.Mockito.when;
+
+/**
+ * Tests for {@link EnterpriseSetDefaultAppsPreferenceController}.
+ */
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public final class EnterpriseSetDefaultAppsPreferenceControllerTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+    private FakeFeatureFactory mFeatureFactory;
+
+    private EnterpriseSetDefaultAppsPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        FakeFeatureFactory.setupForTest(mContext);
+        mFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext);
+        mController = new EnterpriseSetDefaultAppsPreferenceController(mContext);
+    }
+
+    private static Intent buildIntent(String action, String category, String protocol,
+            String type) {
+        final Intent intent = new Intent(action);
+        if (category != null) {
+            intent.addCategory(category);
+        }
+        if (protocol != null) {
+            intent.setData(Uri.parse(protocol));
+        }
+        if (type != null) {
+            intent.setType(type);
+        }
+        return intent;
+    }
+
+    private void setEnterpriseSetDefaultApps(Intent[] intents, int number) {
+        final Set<ApplicationFeatureProvider.PersistentPreferredActivityInfo> apps
+                = new ArraySet<>(number);
+        for (int i = 0; i < number; i++) {
+            apps.add(new ApplicationFeatureProvider.PersistentPreferredActivityInfo("app", i));
+        }
+        when(mFeatureFactory.applicationFeatureProvider.findPersistentPreferredActivities(
+                argThat(new MatchesIntents(intents)))).thenReturn(apps);
+    }
+
+    @Test
+    public void testUpdateState() {
+        final Preference preference = new Preference(mContext, null, 0, 0);
+        preference.setVisible(true);
+
+        when(mFeatureFactory.applicationFeatureProvider.findPersistentPreferredActivities(
+                anyObject())).thenReturn(
+                        new ArraySet<ApplicationFeatureProvider.PersistentPreferredActivityInfo>());
+        mController.updateState(preference);
+        assertThat(preference.isVisible()).isFalse();
+
+        setEnterpriseSetDefaultApps(new Intent[] {buildIntent(Intent.ACTION_VIEW,
+                Intent.CATEGORY_BROWSABLE, "http:", null)}, 1);
+        setEnterpriseSetDefaultApps(new Intent[] {new Intent(MediaStore.ACTION_IMAGE_CAPTURE),
+                new Intent(MediaStore.ACTION_VIDEO_CAPTURE)}, 2);
+        setEnterpriseSetDefaultApps(new Intent[] {buildIntent(Intent.ACTION_VIEW, null, "geo:",
+                null)}, 4);
+        setEnterpriseSetDefaultApps(new Intent[] {new Intent(Intent.ACTION_SENDTO),
+                new Intent(Intent.ACTION_SEND), new Intent(Intent.ACTION_SEND_MULTIPLE)}, 8);
+        setEnterpriseSetDefaultApps(new Intent[] {buildIntent(Intent.ACTION_INSERT, null, null,
+                "vnd.android.cursor.dir/event")}, 16);
+        setEnterpriseSetDefaultApps(new Intent[] {buildIntent(Intent.ACTION_PICK, null, null,
+                ContactsContract.Contacts.CONTENT_TYPE)}, 32);
+        setEnterpriseSetDefaultApps(new Intent[] {new Intent(Intent.ACTION_DIAL),
+                new Intent(Intent.ACTION_CALL)}, 64);
+        when(mContext.getResources().getQuantityString(
+                R.plurals.enterprise_privacy_number_enterprise_set_default_apps, 127, 127))
+                .thenReturn("127 apps");
+        mController.updateState(preference);
+        assertThat(preference.getTitle()).isEqualTo("127 apps");
+        assertThat(preference.isVisible()).isTrue();
+    }
+
+    @Test
+    public void testIsAvailable() {
+        assertThat(mController.isAvailable()).isTrue();
+    }
+
+    @Test
+    public void testHandlePreferenceTreeClick() {
+        assertThat(mController.handlePreferenceTreeClick(new Preference(mContext, null, 0, 0)))
+                .isFalse();
+    }
+
+    @Test
+    public void testGetPreferenceKey() {
+        assertThat(mController.getPreferenceKey())
+                .isEqualTo("number_enterprise_set_default_apps");
+    }
+
+    private static class MatchesIntents extends ArgumentMatcher<Intent[]> {
+        private final Intent[] mExpectedIntents;
+
+        MatchesIntents(Intent[] intents) {
+            mExpectedIntents = intents;
+        }
+
+        @Override
+        public boolean matches(Object object) {
+            final Intent[] actualIntents = (Intent[]) object;
+            if (actualIntents == null) {
+                return false;
+            }
+            if (actualIntents.length != mExpectedIntents.length) {
+                return false;
+            }
+            for (int i = 0; i < mExpectedIntents.length; i++) {
+                if (!mExpectedIntents[i].filterEquals(actualIntents[i])) {
+                    return false;
+                }
+            }
+            return true;
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/enterprise/InstalledPackagesPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/enterprise/InstalledPackagesPreferenceControllerTest.java
index 5a0da66..bf2c4ca 100644
--- a/tests/robotests/src/com/android/settings/enterprise/InstalledPackagesPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/enterprise/InstalledPackagesPreferenceControllerTest.java
@@ -69,8 +69,8 @@
         final Preference preference = new Preference(mContext, null, 0, 0);
         doAnswer(new Answer() {
             public Object answer(InvocationOnMock invocation) {
-                ((ApplicationFeatureProvider.NumberOfInstalledAppsCallback)
-                        invocation.getArguments()[1]).onNumberOfInstalledAppsResult(20);
+                ((ApplicationFeatureProvider.NumberOfAppsCallback)
+                        invocation.getArguments()[1]).onNumberOfAppsResult(20);
                 return null;
             }}).when(mFeatureFactory.applicationFeatureProvider)
                     .calculateNumberOfInstalledApps(
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatterySaverControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatterySaverControllerTest.java
new file mode 100644
index 0000000..9656381
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatterySaverControllerTest.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.settings.fuelgauge;
+
+import android.content.Context;
+import android.os.PowerManager;
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settings.core.lifecycle.Lifecycle;
+import com.android.settings.widget.MasterSwitchPreference;
+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.ReflectionHelpers;
+
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.spy;
+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 BatterySaverControllerTest {
+    @Mock
+    private MasterSwitchPreference mBatterySaverPref;
+    @Mock
+    private PowerManager mPowerManager;
+    @Mock
+    private Context mContext;
+    @Mock
+    private Lifecycle mLifecycle;
+    private BatterySaverController mBatterySaverController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mBatterySaverController = spy(new BatterySaverController(mContext, mLifecycle));
+        ReflectionHelpers.setField(mBatterySaverController, "mPowerManager", mPowerManager);
+        ReflectionHelpers.setField(mBatterySaverController, "mBatterySaverPref", mBatterySaverPref);
+        doNothing().when(mBatterySaverController).refreshConditionManager();
+    }
+
+    @Test
+    public void testOnPreferenceChange_TurnOnBatterySaver_BatterySaverOn() {
+        testOnPreferenceChangeInner(true);
+    }
+
+    @Test
+    public void testOnPreferenceChange_TurnOffBatterySaver_BatterySaverOff() {
+        testOnPreferenceChangeInner(false);
+    }
+
+    @Test
+    public void testUpdateState_SaverModeOn_PreferenceChecked() {
+        testUpdateStateInner(true);
+    }
+
+    @Test
+    public void testUpdateState_SaverModeOff_PreferenceUnChecked() {
+        testUpdateStateInner(false);
+    }
+
+    private void testOnPreferenceChangeInner(final boolean saverOn) {
+        when(mPowerManager.setPowerSaveMode(saverOn)).thenReturn(true);
+        when(mPowerManager.isPowerSaveMode()).thenReturn(!saverOn);
+
+        mBatterySaverController.onPreferenceChange(mBatterySaverPref, saverOn);
+        verify(mPowerManager).setPowerSaveMode(saverOn);
+    }
+
+    private void testUpdateStateInner(final boolean saverOn) {
+        when(mPowerManager.isPowerSaveMode()).thenReturn(saverOn);
+
+        mBatterySaverController.updateState(mBatterySaverPref);
+        verify(mBatterySaverPref).setChecked(saverOn);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/HighPowerDetailTest.java b/tests/robotests/src/com/android/settings/fuelgauge/HighPowerDetailTest.java
new file mode 100644
index 0000000..a60bc65
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/fuelgauge/HighPowerDetailTest.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.settings.fuelgauge;
+
+import android.content.Context;
+
+import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.SettingsRobolectricTestRunner;
+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.annotation.Config;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.verify;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class HighPowerDetailTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+
+    private FakeFeatureFactory mFeatureFactory;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        FakeFeatureFactory.setupForTest(mContext);
+        mFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext);
+    }
+
+    @Test
+    public void logSpecialPermissionChange() {
+        // Deny means app is whitelisted to opt out of power save restrictions
+        HighPowerDetail.logSpecialPermissionChange(true, "app", mContext);
+        verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class),
+                eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_BATTERY_DENY), eq("app"));
+
+        // Allow means app is NOT whitelisted to opt out of power save restrictions
+        HighPowerDetail.logSpecialPermissionChange(false, "app", mContext);
+        verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class),
+                eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_BATTERY_ALLOW), eq("app"));
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
index 1cf83f1..ea678b6 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
@@ -17,6 +17,7 @@
 
 import android.content.Context;
 import android.content.Intent;
+import android.os.Process;
 import android.text.TextUtils;
 import android.view.Menu;
 import android.view.MenuInflater;
@@ -28,7 +29,6 @@
 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;
@@ -36,6 +36,9 @@
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import static com.android.settings.fuelgauge.PowerUsageBase.MENU_STATS_REFRESH;
 import static com.android.settings.fuelgauge.PowerUsageSummary.MENU_ADDITIONAL_BATTERY_INFO;
 import static com.google.common.truth.Truth.assertThat;
@@ -52,7 +55,9 @@
 public class PowerUsageSummaryTest {
     private static final String[] PACKAGE_NAMES = {"com.app1", "com.app2"};
     private static final int UID = 123;
-
+    private static final int POWER_MAH = 100;
+    private static final double BATTERY_SCREEN_USAGE = 300;
+    private static final double PRECISION = 0.001;
     private static final Intent ADDITIONAL_BATTERY_INFO_INTENT =
             new Intent("com.example.app.ADDITIONAL_BATTERY_INFO");
 
@@ -67,7 +72,9 @@
     @Mock
     private MenuInflater mMenuInflater;
     @Mock
-    private BatterySipper mBatterySipper;
+    private BatterySipper mNormalBatterySipper;
+    @Mock
+    private BatterySipper mScreenBatterySipper;
 
     private TestFragment mFragment;
     private FakeFeatureFactory mFeatureFactory;
@@ -94,8 +101,12 @@
 
         mPowerUsageSummary = new PowerUsageSummary();
 
-        when(mBatterySipper.getPackages()).thenReturn(PACKAGE_NAMES);
-        when(mBatterySipper.getUid()).thenReturn(UID);
+        when(mNormalBatterySipper.getPackages()).thenReturn(PACKAGE_NAMES);
+        when(mNormalBatterySipper.getUid()).thenReturn(UID);
+        mNormalBatterySipper.totalPowerMah = POWER_MAH;
+
+        mScreenBatterySipper.drainType = BatterySipper.DrainType.SCREEN;
+        mScreenBatterySipper.totalPowerMah = BATTERY_SCREEN_USAGE;
     }
 
     @Test
@@ -127,29 +138,73 @@
 
     @Test
     public void testExtractKeyFromSipper_TypeAPPUidObjectNull_ReturnPackageNames() {
-        mBatterySipper.uidObj = null;
-        mBatterySipper.drainType = BatterySipper.DrainType.APP;
+        mNormalBatterySipper.uidObj = null;
+        mNormalBatterySipper.drainType = BatterySipper.DrainType.APP;
 
-        final String key = mPowerUsageSummary.extractKeyFromSipper(mBatterySipper);
-        assertThat(key).isEqualTo(TextUtils.concat(mBatterySipper.getPackages()).toString());
+        final String key = mPowerUsageSummary.extractKeyFromSipper(mNormalBatterySipper);
+        assertThat(key).isEqualTo(TextUtils.concat(mNormalBatterySipper.getPackages()).toString());
     }
 
     @Test
     public void testExtractKeyFromSipper_TypeOther_ReturnDrainType() {
-        mBatterySipper.uidObj = null;
-        mBatterySipper.drainType = BatterySipper.DrainType.BLUETOOTH;
+        mNormalBatterySipper.uidObj = null;
+        mNormalBatterySipper.drainType = BatterySipper.DrainType.BLUETOOTH;
 
-        final String key = mPowerUsageSummary.extractKeyFromSipper(mBatterySipper);
-        assertThat(key).isEqualTo(mBatterySipper.drainType.toString());
+        final String key = mPowerUsageSummary.extractKeyFromSipper(mNormalBatterySipper);
+        assertThat(key).isEqualTo(mNormalBatterySipper.drainType.toString());
+    }
+
+    @Test
+    public void testRemoveScreenBatterySipper_ContainsScreenSipper_RemoveAndReturnValue() {
+        final List<BatterySipper> sippers = new ArrayList<>();
+        sippers.add(mNormalBatterySipper);
+        sippers.add(mScreenBatterySipper);
+
+        final double screenUsage = mPowerUsageSummary.removeScreenBatterySipper(sippers);
+        assertThat(sippers).containsExactly(mNormalBatterySipper);
+        assertThat(screenUsage).isWithin(PRECISION).of(BATTERY_SCREEN_USAGE);
     }
 
     @Test
     public void testExtractKeyFromSipper_TypeAPPUidObjectNotNull_ReturnUid() {
-        mBatterySipper.uidObj = new BatteryStatsImpl.Uid(new BatteryStatsImpl(), UID);
-        mBatterySipper.drainType = BatterySipper.DrainType.APP;
+        mNormalBatterySipper.uidObj = new BatteryStatsImpl.Uid(new BatteryStatsImpl(), UID);
+        mNormalBatterySipper.drainType = BatterySipper.DrainType.APP;
 
-        final String key = mPowerUsageSummary.extractKeyFromSipper(mBatterySipper);
-        assertThat(key).isEqualTo(Integer.toString(mBatterySipper.getUid()));
+        final String key = mPowerUsageSummary.extractKeyFromSipper(mNormalBatterySipper);
+        assertThat(key).isEqualTo(Integer.toString(mNormalBatterySipper.getUid()));
+    }
+
+    @Test
+    public void testShouldHideSipper_TypeIdle_ReturnTrue() {
+        mNormalBatterySipper.drainType = BatterySipper.DrainType.IDLE;
+        assertThat(mPowerUsageSummary.shouldHideSipper(mNormalBatterySipper)).isTrue();
+    }
+
+    @Test
+    public void testShouldHideSipper_TypeCell_ReturnTrue() {
+        mNormalBatterySipper.drainType = BatterySipper.DrainType.CELL;
+        assertThat(mPowerUsageSummary.shouldHideSipper(mNormalBatterySipper)).isTrue();
+    }
+
+    @Test
+    public void testShouldHideSipper_UidRoot_ReturnTrue() {
+        mNormalBatterySipper.drainType = BatterySipper.DrainType.APP;
+        when(mNormalBatterySipper.getUid()).thenReturn(Process.ROOT_UID);
+        assertThat(mPowerUsageSummary.shouldHideSipper(mNormalBatterySipper)).isTrue();
+    }
+
+    @Test
+    public void testShouldHideSipper_UidSystem_ReturnTrue() {
+        mNormalBatterySipper.drainType = BatterySipper.DrainType.APP;
+        when(mNormalBatterySipper.getUid()).thenReturn(Process.SYSTEM_UID);
+        assertThat(mPowerUsageSummary.shouldHideSipper(mNormalBatterySipper)).isTrue();
+    }
+
+    @Test
+    public void testShouldHideSipper_UidNormal_ReturnFalse() {
+        mNormalBatterySipper.drainType = BatterySipper.DrainType.APP;
+        when(mNormalBatterySipper.getUid()).thenReturn(UID);
+        assertThat(mPowerUsageSummary.shouldHideSipper(mNormalBatterySipper)).isFalse();
     }
 
     public static class TestFragment extends PowerUsageSummary {
diff --git a/tests/robotests/src/com/android/settings/location/AppLocationPermissionPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/location/AppLocationPermissionPreferenceControllerTest.java
new file mode 100644
index 0000000..8a035e5
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/location/AppLocationPermissionPreferenceControllerTest.java
@@ -0,0 +1,69 @@
+package com.android.settings.location;
+
+import android.content.Context;
+import android.os.UserManager;
+import android.provider.Settings;
+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.Answers;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowApplication;
+
+import static org.mockito.Answers.RETURNS_DEEP_STUBS;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Mockito.never;
+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 AppLocationPermissionPreferenceControllerTest {
+    @Mock
+    private Preference mPreference;
+    @Mock(answer = RETURNS_DEEP_STUBS)
+    private PreferenceScreen mScreen;
+
+    private AppLocationPermissionPreferenceController mController;
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        when(mScreen.findPreference(anyString())).thenReturn(mPreference);
+        mController = new AppLocationPermissionPreferenceController(mContext);
+    }
+
+    @Test
+    public void displayPreference_shouldRemovePreference() {
+        Settings.System.putInt(mContext.getContentResolver(),
+                android.provider.Settings.Global.LOCATION_SETTINGS_LINK_TO_PERMISSIONS_ENABLED,
+                0);
+
+        mController.displayPreference(mScreen);
+
+        verify(mScreen).removePreference(any(Preference.class));
+    }
+
+    @Test
+    public void displayPreference_shouldNotRemovePreference() {
+        Settings.System.putInt(mContext.getContentResolver(),
+                android.provider.Settings.Global.LOCATION_SETTINGS_LINK_TO_PERMISSIONS_ENABLED,
+                1);
+        mController.displayPreference(mScreen);
+
+        verify(mScreen, never()).removePreference(any(Preference.class));
+    }
+
+}
diff --git a/tests/robotests/src/com/android/settings/network/NetworkDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/network/NetworkDashboardFragmentTest.java
index b30e3ff..dc96ed6 100644
--- a/tests/robotests/src/com/android/settings/network/NetworkDashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/network/NetworkDashboardFragmentTest.java
@@ -21,6 +21,7 @@
 import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settings.accounts.UserAndAccountDashboardFragment;
+import com.android.settings.dashboard.DashboardFragmentRegistry;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settingslib.drawer.CategoryKey;
 import org.junit.Before;
diff --git a/tests/robotests/src/com/android/settings/notification/BootSoundPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/BootSoundPreferenceControllerTest.java
new file mode 100644
index 0000000..c547c63
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/BootSoundPreferenceControllerTest.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.notification;
+
+import android.content.Context;
+import android.os.SystemProperties;
+import android.support.v14.preference.SwitchPreference;
+import android.support.v7.preference.PreferenceScreen;
+
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settings.testutils.shadow.SettingsShadowSystemProperties;
+
+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.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class BootSoundPreferenceControllerTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+    @Mock
+    private PreferenceScreen mScreen;
+    @Mock
+    private SwitchPreference mPreference;
+
+    private BootSoundPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        SettingsShadowSystemProperties.clear();
+        when(mContext.getResources().getBoolean(com.android.settings.R.bool.has_boot_sounds))
+            .thenReturn(true);
+        mController = new BootSoundPreferenceController(mContext);
+        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
+        when(mPreference.getKey()).thenReturn(mController.getPreferenceKey());
+    }
+
+    @Test
+    public void isAvailable_hasBootSounds_shouldReturnTrue() {
+        when(mContext.getResources().getBoolean(
+            com.android.settings.R.bool.has_boot_sounds)).thenReturn(true);
+
+        assertThat(mController.isAvailable()).isTrue();
+    }
+
+    @Test
+    public void isAvailable_noBootSounds_shouldReturnFale() {
+        when(mContext.getResources().getBoolean(
+            com.android.settings.R.bool.has_boot_sounds)).thenReturn(false);
+
+        assertThat(mController.isAvailable()).isFalse();
+    }
+
+    @Config(shadows = {SettingsShadowSystemProperties.class})
+    @Test
+    public void displayPreference_bootSoundEnabled_shouldCheckedPreference() {
+        SettingsShadowSystemProperties.set(BootSoundPreferenceController.PROPERTY_BOOT_SOUNDS, "1");
+
+        mController.displayPreference(mScreen);
+
+        verify(mPreference).setChecked(true);
+    }
+
+    @Config(shadows = {SettingsShadowSystemProperties.class})
+    @Test
+    public void displayPreference_bootSoundDisabled_shouldUncheckedPreference() {
+        SettingsShadowSystemProperties.set(BootSoundPreferenceController.PROPERTY_BOOT_SOUNDS, "0");
+
+        mController.displayPreference(mScreen);
+
+        verify(mPreference).setChecked(false);
+    }
+
+    @Config(shadows = {SettingsShadowSystemProperties.class})
+    @Test
+    public void handlePreferenceTreeClick_preferenceChecked_shouldEnableBootSound() {
+        when(mPreference.isChecked()).thenReturn(true);
+
+        mController.handlePreferenceTreeClick(mPreference);
+
+        assertThat(SystemProperties.getBoolean(
+            BootSoundPreferenceController.PROPERTY_BOOT_SOUNDS, true)).isTrue();
+    }
+
+    @Config(shadows = {SettingsShadowSystemProperties.class})
+    @Test
+    public void handlePreferenceTreeClick_preferenceUnchecked_shouldDisableBootSound() {
+        when(mPreference.isChecked()).thenReturn(false);
+
+        mController.handlePreferenceTreeClick(mPreference);
+
+        assertThat(SystemProperties.getBoolean(
+            BootSoundPreferenceController.PROPERTY_BOOT_SOUNDS, true)).isFalse();
+    }
+
+}
diff --git a/tests/robotests/src/com/android/settings/notification/ChargingSoundPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/ChargingSoundPreferenceControllerTest.java
new file mode 100644
index 0000000..4cdf7c7
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/ChargingSoundPreferenceControllerTest.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.notification;
+
+import android.app.Activity;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.support.v14.preference.SwitchPreference;
+import android.support.v7.preference.PreferenceScreen;
+import android.provider.Settings.Global;
+
+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.shadows.ShadowApplication;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.when;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class ChargingSoundPreferenceControllerTest {
+
+    @Mock
+    private PreferenceScreen mScreen;
+    @Mock
+    private Activity mActivity;
+    @Mock
+    private ContentResolver mContentResolver;
+    @Mock
+    private SoundSettings mSetting;
+    @Mock
+    private Context mContext;
+
+    private ChargingSoundPreferenceController mController;
+    private SwitchPreference mPreference;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        when(mSetting.getActivity()).thenReturn(mActivity);
+        when(mActivity.getContentResolver()).thenReturn(mContentResolver);
+        mPreference = new SwitchPreference(ShadowApplication.getInstance().getApplicationContext());
+        mController = new ChargingSoundPreferenceController(mContext, mSetting, null);
+        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
+        doReturn(mScreen).when(mSetting).getPreferenceScreen();
+    }
+
+    @Test
+    public void isAvailable_isAlwaysTrue() {
+        assertThat(mController.isAvailable()).isTrue();
+    }
+
+    @Test
+    public void displayPreference_chargingSoundEnabled_shouldCheckedPreference() {
+        Global.putInt(mContentResolver, Global.CHARGING_SOUNDS_ENABLED, 1);
+
+        mController.displayPreference(mScreen);
+
+        assertThat(mPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void displayPreference_chargingSoundDisabled_shouldUncheckedPreference() {
+        Global.putInt(mContentResolver, Global.CHARGING_SOUNDS_ENABLED, 0);
+
+        mController.displayPreference(mScreen);
+
+        assertThat(mPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void onPreferenceChanged_preferenceChecked_shouldEnabledChargingSound() {
+        mController.displayPreference(mScreen);
+
+        mPreference.getOnPreferenceChangeListener().onPreferenceChange(mPreference, true);
+
+        assertThat(Global.getInt(mContentResolver, Global.CHARGING_SOUNDS_ENABLED, 1))
+            .isEqualTo(1);
+    }
+
+    @Test
+    public void onPreferenceChanged_preferenceUnchecked_shouldDisabledChargingSound() {
+        mController.displayPreference(mScreen);
+
+        mPreference.getOnPreferenceChangeListener().onPreferenceChange(mPreference, false);
+
+        assertThat(Global.getInt(mContentResolver, Global.CHARGING_SOUNDS_ENABLED, 1))
+            .isEqualTo(0);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/notification/DialPadTonePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/DialPadTonePreferenceControllerTest.java
new file mode 100644
index 0000000..e9410e6
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/DialPadTonePreferenceControllerTest.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.notification;
+
+import android.app.Activity;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.support.v14.preference.SwitchPreference;
+import android.support.v7.preference.PreferenceScreen;
+import android.provider.Settings.System;
+import android.telephony.TelephonyManager;
+
+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.shadows.ShadowApplication;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.when;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class DialPadTonePreferenceControllerTest {
+
+    @Mock
+    private TelephonyManager mTelephonyManager;
+    @Mock
+    private PreferenceScreen mScreen;
+    @Mock
+    private Activity mActivity;
+    @Mock
+    private ContentResolver mContentResolver;
+    @Mock
+    private SoundSettings mSetting;
+    @Mock
+    private Context mContext;
+
+    private DialPadTonePreferenceController mController;
+    private SwitchPreference mPreference;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        when(mContext.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mTelephonyManager);
+        when(mTelephonyManager.isVoiceCapable()).thenReturn(true);
+        when(mSetting.getActivity()).thenReturn(mActivity);
+        when(mActivity.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mTelephonyManager);
+        when(mActivity.getContentResolver()).thenReturn(mContentResolver);
+        mPreference = new SwitchPreference(ShadowApplication.getInstance().getApplicationContext());
+        mController = new DialPadTonePreferenceController(mContext, mSetting, null);
+        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
+        doReturn(mScreen).when(mSetting).getPreferenceScreen();
+    }
+
+    @Test
+    public void isAvailable_voiceCapable_shouldReturnTrue() {
+        assertThat(mController.isAvailable()).isTrue();
+    }
+
+    @Test
+    public void isAvailable_notVoiceCapable_shouldReturnFalse() {
+        when(mTelephonyManager.isVoiceCapable()).thenReturn(false);
+
+        assertThat(mController.isAvailable()).isFalse();
+    }
+
+    @Test
+    public void displayPreference_dialToneEnabled_shouldCheckedPreference() {
+        System.putInt(mContentResolver, System.DTMF_TONE_WHEN_DIALING, 1);
+
+        mController.displayPreference(mScreen);
+
+        assertThat(mPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void displayPreference_dialToneDisabled_shouldUncheckedPreference() {
+        System.putInt(mContentResolver, System.DTMF_TONE_WHEN_DIALING, 0);
+
+        mController.displayPreference(mScreen);
+
+        assertThat(mPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void onPreferenceChanged_preferenceChecked_shouldEnabledDialTone() {
+        mController.displayPreference(mScreen);
+
+        mPreference.getOnPreferenceChangeListener().onPreferenceChange(mPreference, true);
+
+        assertThat(System.getInt(mContentResolver, System.DTMF_TONE_WHEN_DIALING, 1)).isEqualTo(1);
+    }
+
+    @Test
+    public void onPreferenceChanged_preferenceUnchecked_shouldDisabledDialTone() {
+        mController.displayPreference(mScreen);
+
+        mPreference.getOnPreferenceChangeListener().onPreferenceChange(mPreference, false);
+
+        assertThat(System.getInt(mContentResolver, System.DTMF_TONE_WHEN_DIALING, 1)).isEqualTo(0);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/notification/DockAudioMediaPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/DockAudioMediaPreferenceControllerTest.java
new file mode 100644
index 0000000..bc6eb3a
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/DockAudioMediaPreferenceControllerTest.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.notification;
+
+import android.app.Activity;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.support.v7.preference.DropDownPreference;
+import android.support.v7.preference.PreferenceScreen;
+import android.provider.Settings.Global;
+
+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.shadows.ShadowApplication;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Answers.RETURNS_DEEP_STUBS;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.when;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class DockAudioMediaPreferenceControllerTest {
+
+    @Mock
+    private PreferenceScreen mScreen;
+    @Mock(answer = RETURNS_DEEP_STUBS)
+    private Activity mActivity;
+    @Mock
+    private ContentResolver mContentResolver;
+    @Mock
+    private SoundSettings mSetting;
+    @Mock(answer = RETURNS_DEEP_STUBS)
+    private Context mContext;
+
+    private DockAudioMediaPreferenceController mController;
+    private DropDownPreference mPreference;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        final Context appContext = ShadowApplication.getInstance().getApplicationContext();
+        when(mSetting.getActivity()).thenReturn(mActivity);
+        when(mActivity.getContentResolver()).thenReturn(mContentResolver);
+        when(mActivity.getResources().getBoolean(com.android.settings.R.bool.has_dock_settings))
+            .thenReturn(true);
+        when(mActivity.getResources().getString(anyInt())).thenReturn("test string");
+        mPreference = new DropDownPreference(appContext);
+        mController = new DockAudioMediaPreferenceController(mContext, mSetting, null);
+        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
+        doReturn(mScreen).when(mSetting).getPreferenceScreen();
+    }
+
+    @Test
+    public void isAvailable_hasDockSettings_shouldReturnTrue() {
+        when(mContext.getResources().getBoolean(com.android.settings.R.bool.has_dock_settings))
+            .thenReturn(true);
+
+        assertThat(mController.isAvailable()).isTrue();
+    }
+
+    @Test
+    public void isAvailable_noDockSettings_shouldReturnFalse() {
+        when(mContext.getResources().getBoolean(com.android.settings.R.bool.has_dock_settings))
+            .thenReturn(false);
+
+        assertThat(mController.isAvailable()).isFalse();
+    }
+
+    @Test
+    public void displayPreference_dockAudioDisabled_shouldSelectFirstItem() {
+        Global.putInt(mContentResolver, Global.DOCK_AUDIO_MEDIA_ENABLED, 0);
+
+        mController.displayPreference(mScreen);
+
+        assertThat(mPreference.getValue()).isEqualTo("0");
+    }
+
+    @Test
+    public void displayPreference_dockAudioEnabled_shouldSelectSecondItem() {
+        Global.putInt(mContentResolver, Global.DOCK_AUDIO_MEDIA_ENABLED, 1);
+
+        mController.displayPreference(mScreen);
+
+        assertThat(mPreference.getValue()).isEqualTo("1");
+    }
+
+    @Test
+    public void onPreferenceChanged_firstItemSelected_shouldDisableDockAudio() {
+        mController.displayPreference(mScreen);
+
+        mPreference.getOnPreferenceChangeListener().onPreferenceChange(mPreference, "0");
+
+        assertThat(Global.getInt(mContentResolver, Global.DOCK_AUDIO_MEDIA_ENABLED, 0))
+            .isEqualTo(0);
+    }
+
+    @Test
+    public void onPreferenceChanged_secondItemSelected_shouldEnableDockAudio() {
+        mController.displayPreference(mScreen);
+
+        mPreference.getOnPreferenceChangeListener().onPreferenceChange(mPreference, "1");
+
+        assertThat(Global.getInt(mContentResolver, Global.DOCK_AUDIO_MEDIA_ENABLED, 0))
+            .isEqualTo(1);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/notification/DockingSoundPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/DockingSoundPreferenceControllerTest.java
new file mode 100644
index 0000000..3350fb9
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/DockingSoundPreferenceControllerTest.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.notification;
+
+import android.app.Activity;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.support.v14.preference.SwitchPreference;
+import android.support.v7.preference.PreferenceScreen;
+import android.provider.Settings.Global;
+
+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.shadows.ShadowApplication;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Answers.RETURNS_DEEP_STUBS;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.when;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class DockingSoundPreferenceControllerTest {
+
+    @Mock
+    private PreferenceScreen mScreen;
+    @Mock(answer = RETURNS_DEEP_STUBS)
+    private Activity mActivity;
+    @Mock
+    private ContentResolver mContentResolver;
+    @Mock
+    private SoundSettings mSetting;
+    @Mock(answer = RETURNS_DEEP_STUBS)
+    private Context mContext;
+
+    private DockingSoundPreferenceController mController;
+    private SwitchPreference mPreference;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        when(mSetting.getActivity()).thenReturn(mActivity);
+        when(mActivity.getContentResolver()).thenReturn(mContentResolver);
+        mPreference = new SwitchPreference(ShadowApplication.getInstance().getApplicationContext());
+        when(mActivity.getResources().getBoolean(com.android.settings.R.bool.has_dock_settings))
+            .thenReturn(true);
+        mController = new DockingSoundPreferenceController(mContext, mSetting, null);
+        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
+        doReturn(mScreen).when(mSetting).getPreferenceScreen();
+    }
+
+    @Test
+    public void isAvailable_hasDockSettings_shouldReturnTrue() {
+        when(mContext.getResources().getBoolean(com.android.settings.R.bool.has_dock_settings))
+            .thenReturn(true);
+
+        assertThat(mController.isAvailable()).isTrue();
+    }
+
+    @Test
+    public void isAvailable_noDockSettings_shouldReturnFalse() {
+        when(mContext.getResources().getBoolean(com.android.settings.R.bool.has_dock_settings))
+            .thenReturn(false);
+
+        assertThat(mController.isAvailable()).isFalse();
+    }
+
+    @Test
+    public void displayPreference_dockingSoundEnabled_shouldCheckedPreference() {
+        Global.putInt(mContentResolver, Global.DOCK_SOUNDS_ENABLED, 1);
+
+        mController.displayPreference(mScreen);
+
+        assertThat(mPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void displayPreference_dockingSoundDisabled_shouldUncheckedPreference() {
+        Global.putInt(mContentResolver, Global.DOCK_SOUNDS_ENABLED, 0);
+
+        mController.displayPreference(mScreen);
+
+        assertThat(mPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void onPreferenceChanged_preferenceChecked_shouldEnabledDockingSound() {
+        mController.displayPreference(mScreen);
+
+        mPreference.getOnPreferenceChangeListener().onPreferenceChange(mPreference, true);
+
+        assertThat(Global.getInt(mContentResolver, Global.DOCK_SOUNDS_ENABLED, 1)).isEqualTo(1);
+    }
+
+    @Test
+    public void onPreferenceChanged_preferenceUnchecked_shouldDisabledDockingSound() {
+        mController.displayPreference(mScreen);
+
+        mPreference.getOnPreferenceChangeListener().onPreferenceChange(mPreference, false);
+
+        assertThat(Global.getInt(mContentResolver, Global.DOCK_SOUNDS_ENABLED, 1)).isEqualTo(0);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/notification/EmergencyTonePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/EmergencyTonePreferenceControllerTest.java
new file mode 100644
index 0000000..0124566
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/EmergencyTonePreferenceControllerTest.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.notification;
+
+import android.app.Activity;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.support.v7.preference.DropDownPreference;
+import android.support.v7.preference.PreferenceScreen;
+import android.provider.Settings.Global;
+import android.telephony.TelephonyManager;
+
+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.shadows.ShadowApplication;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.when;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class EmergencyTonePreferenceControllerTest {
+
+    @Mock
+    private TelephonyManager mTelephonyManager;
+    @Mock
+    private PreferenceScreen mScreen;
+    @Mock
+    private Activity mActivity;
+    @Mock
+    private ContentResolver mContentResolver;
+    @Mock
+    private SoundSettings mSetting;
+    @Mock
+    private Context mContext;
+
+    private EmergencyTonePreferenceController mController;
+    private DropDownPreference mPreference;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        final Context appContext = ShadowApplication.getInstance().getApplicationContext();
+        when(mContext.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mTelephonyManager);
+        when(mTelephonyManager.getCurrentPhoneType()).thenReturn(TelephonyManager.PHONE_TYPE_CDMA);
+        when(mSetting.getActivity()).thenReturn(mActivity);
+        when(mActivity.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mTelephonyManager);
+        when(mActivity.getContentResolver()).thenReturn(mContentResolver);
+        when(mActivity.getResources()).thenReturn(appContext.getResources());
+        mPreference = new DropDownPreference(appContext);
+        mController = new EmergencyTonePreferenceController(mContext, mSetting, null);
+        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
+        doReturn(mScreen).when(mSetting).getPreferenceScreen();
+    }
+
+    @Test
+    public void isAvailable_cdma_shouldReturnTrue() {
+        assertThat(mController.isAvailable()).isTrue();
+    }
+
+    @Test
+    public void isAvailable_notCdma_shouldReturnFalse() {
+        when(mTelephonyManager.getCurrentPhoneType()).thenReturn(TelephonyManager.PHONE_TYPE_GSM);
+
+        assertThat(mController.isAvailable()).isFalse();
+    }
+
+    @Test
+    public void displayPreference_emergencyToneOff_shouldSelectFirstItem() {
+        Global.putInt(mContentResolver, Global.EMERGENCY_TONE, 0);
+
+        mController.displayPreference(mScreen);
+
+        assertThat(mPreference.getValue()).isEqualTo("0");
+    }
+
+    @Test
+    public void displayPreference_emergencyToneAlert_shouldSelectSecondItem() {
+        Global.putInt(mContentResolver, Global.EMERGENCY_TONE, 1);
+
+        mController.displayPreference(mScreen);
+
+        assertThat(mPreference.getValue()).isEqualTo("1");
+    }
+
+    @Test
+    public void displayPreference_emergencyToneVibrate_shouldSelectThirdItem() {
+        Global.putInt(mContentResolver, Global.EMERGENCY_TONE, 2);
+
+        mController.displayPreference(mScreen);
+
+        assertThat(mPreference.getValue()).isEqualTo("2");
+    }
+
+    @Test
+    public void onPreferenceChanged_firstItemSelected_shouldSetEmergencyToneToOff() {
+        mController.displayPreference(mScreen);
+
+        mPreference.getOnPreferenceChangeListener().onPreferenceChange(mPreference, "0");
+
+        assertThat(Global.getInt(mContentResolver, Global.EMERGENCY_TONE, 0)).isEqualTo(0);
+    }
+
+    @Test
+    public void onPreferenceChanged_secondItemSelected_shouldSetEmergencyToneToAlert() {
+        mController.displayPreference(mScreen);
+
+        mPreference.getOnPreferenceChangeListener().onPreferenceChange(mPreference, "1");
+
+        assertThat(Global.getInt(mContentResolver, Global.EMERGENCY_TONE, 0)).isEqualTo(1);
+    }
+
+    @Test
+    public void onPreferenceChanged_thirdItemSelected_shouldSetEmergencyToneToVibrate() {
+        mController.displayPreference(mScreen);
+
+        mPreference.getOnPreferenceChangeListener().onPreferenceChange(mPreference, "2");
+
+        assertThat(Global.getInt(mContentResolver, Global.EMERGENCY_TONE, 0)).isEqualTo(2);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/notification/NotificationAccessSettingsTest.java b/tests/robotests/src/com/android/settings/notification/NotificationAccessSettingsTest.java
new file mode 100644
index 0000000..b0aa856
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/NotificationAccessSettingsTest.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.settings.notification;
+
+import android.content.Context;
+
+import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.SettingsRobolectricTestRunner;
+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.annotation.Config;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.verify;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class NotificationAccessSettingsTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+
+    private FakeFeatureFactory mFeatureFactory;
+    private NotificationAccessSettings mFragment;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        FakeFeatureFactory.setupForTest(mContext);
+        mFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext);
+        mFragment = new NotificationAccessSettings();
+    }
+
+    @Test
+    public void logSpecialPermissionChange() {
+        mFragment.logSpecialPermissionChange(true, "app");
+        verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class),
+                eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_NOTIVIEW_ALLOW),
+                eq("app"));
+
+        mFragment.logSpecialPermissionChange(false, "app");
+        verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class),
+                eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_NOTIVIEW_DENY),
+                eq("app"));
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/notification/ScreenLockSoundPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/ScreenLockSoundPreferenceControllerTest.java
new file mode 100644
index 0000000..8963a5d
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/ScreenLockSoundPreferenceControllerTest.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.notification;
+
+import android.app.Activity;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.support.v14.preference.SwitchPreference;
+import android.support.v7.preference.PreferenceScreen;
+import android.provider.Settings.System;
+
+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.shadows.ShadowApplication;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.when;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class ScreenLockSoundPreferenceControllerTest {
+
+    @Mock
+    private PreferenceScreen mScreen;
+    @Mock
+    private Activity mActivity;
+    @Mock
+    private ContentResolver mContentResolver;
+    @Mock
+    private SoundSettings mSetting;
+    @Mock
+    private Context mContext;
+
+    private ScreenLockSoundPreferenceController mController;
+    private SwitchPreference mPreference;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        when(mSetting.getActivity()).thenReturn(mActivity);
+        when(mActivity.getContentResolver()).thenReturn(mContentResolver);
+        mPreference = new SwitchPreference(ShadowApplication.getInstance().getApplicationContext());
+        mController = new ScreenLockSoundPreferenceController(mContext, mSetting, null);
+        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
+        doReturn(mScreen).when(mSetting).getPreferenceScreen();
+    }
+
+    @Test
+    public void isAvailable_isAlwaysTrue() {
+        assertThat(mController.isAvailable()).isTrue();
+    }
+
+    @Test
+    public void displayPreference_lockScreenSoundEnabled_shouldCheckedPreference() {
+        System.putInt(mContentResolver, System.LOCKSCREEN_SOUNDS_ENABLED, 1);
+
+        mController.displayPreference(mScreen);
+
+        assertThat(mPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void displayPreference_lockScreenSoundDisabled_shouldUncheckedPreference() {
+        System.putInt(mContentResolver, System.LOCKSCREEN_SOUNDS_ENABLED, 0);
+
+        mController.displayPreference(mScreen);
+
+        assertThat(mPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void onPreferenceChanged_preferenceChecked_shouldEnabledLockScreenSound() {
+        mController.displayPreference(mScreen);
+
+        mPreference.getOnPreferenceChangeListener().onPreferenceChange(mPreference, true);
+
+        assertThat(System.getInt(mContentResolver, System.LOCKSCREEN_SOUNDS_ENABLED, 1))
+            .isEqualTo(1);
+    }
+
+    @Test
+    public void onPreferenceChanged_preferenceUnchecked_shouldDisabledLockScreenSound() {
+        mController.displayPreference(mScreen);
+
+        mPreference.getOnPreferenceChangeListener().onPreferenceChange(mPreference, false);
+
+        assertThat(System.getInt(mContentResolver, System.LOCKSCREEN_SOUNDS_ENABLED, 1))
+            .isEqualTo(0);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/notification/SettingPrefControllerTest.java b/tests/robotests/src/com/android/settings/notification/SettingPrefControllerTest.java
new file mode 100644
index 0000000..b36b19b
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/SettingPrefControllerTest.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.notification;
+
+import android.app.Activity;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.provider.Settings.Global;
+import android.support.v7.preference.PreferenceScreen;
+
+import com.android.settings.SettingsPreferenceFragment;
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settings.core.lifecycle.Lifecycle;
+
+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.annotation.Config;
+import org.robolectric.shadows.ShadowApplication;
+
+import static com.android.settings.notification.SettingPref.TYPE_GLOBAL;
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Answers.RETURNS_DEEP_STUBS;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+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 SettingPrefControllerTest {
+
+    @Mock
+    private PreferenceScreen mScreen;
+    @Mock
+    private OtherSoundSettings mSetting;
+    @Mock
+    private Activity mActivity;
+    @Mock
+    private ContentResolver mContentResolver;
+
+    private Context mContext;
+    private PreferenceControllerTestable mController;
+    private SettingPref mPreference;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = spy(ShadowApplication.getInstance().getApplicationContext());
+        when(mContext.getContentResolver()).thenReturn(mContentResolver);
+        when(mSetting.getActivity()).thenReturn(mActivity);
+        doReturn(mScreen).when(mSetting).getPreferenceScreen();
+        mController = new PreferenceControllerTestable(mContext, mSetting, null);
+        mPreference = mController.getPref();
+    }
+
+    @Test
+    public void displayPreference_shouldInitPreference() {
+        mController.displayPreference(mScreen);
+
+        verify(mPreference).init(mSetting);
+    }
+
+    @Test
+    public void isAvailable_shouldCallisApplicable() {
+        mController.isAvailable();
+
+        verify(mPreference).isApplicable(mContext);
+    }
+
+    @Test
+    public void getPreferenceKey_shouldReturnPrefKey() {
+        assertThat(mController.getPreferenceKey()).isEqualTo(mController.KEY_TEST);
+    }
+
+    @Test
+    public void updateState_shouldUpdatePreference() {
+        mController.updateState(null);
+
+        verify(mPreference).update(mContext);
+    }
+
+    @Test
+    public void onResume_shouldRegisterContentObserver() {
+        mController.displayPreference(mScreen);
+        mController.onResume();
+
+        verify(mContentResolver).registerContentObserver(
+            Global.getUriFor("Setting1"), false, mController.getObserver());
+    }
+
+    @Test
+    public void onPause_shouldUnregisterContentObserver() {
+        mController.displayPreference(mScreen);
+        mController.onPause();
+
+        verify(mContentResolver).unregisterContentObserver(mController.getObserver());
+    }
+
+    @Test
+    public void onContentChange_shouldUpdatePreference() {
+        mController.displayPreference(mScreen);
+        mController.onResume();
+        mController.getObserver().onChange(false, Global.getUriFor("Setting1"));
+
+        verify(mPreference).update(mContext);
+    }
+
+    @Test
+    public void updateNonIndexableKeys_applicable_shouldNotUpdate() {
+        final List<String> keys = new ArrayList<>();
+
+        mController.updateNonIndexableKeys(keys);
+
+        assertThat(keys).isEmpty();
+    }
+
+    @Test
+    public void updateNonIndexableKeys_notApplicable_shouldUpdate() {
+        mController.setApplicable(false);
+        final List<String> keys = new ArrayList<>();
+
+        mController.updateNonIndexableKeys(keys);
+
+        assertThat(keys).isNotEmpty();
+    }
+
+    private class PreferenceControllerTestable extends SettingPrefController {
+
+        private static final String KEY_TEST = "key1";
+        private boolean mApplicable = true;
+
+        public PreferenceControllerTestable(Context context, SettingsPreferenceFragment parent,
+            Lifecycle lifecycle) {
+            super(context, parent, lifecycle);
+            mPreference = spy(new SettingPref(
+                TYPE_GLOBAL, KEY_TEST, "Setting1", 1) {
+                @Override
+                public boolean isApplicable(Context context) {
+                    return mApplicable;
+                }
+            });
+        }
+
+        SettingPref getPref() {
+            return mPreference;
+        }
+
+        PreferenceControllerTestable.SettingsObserver getObserver() {
+            return mSettingsObserver;
+        }
+
+        void setApplicable(boolean applicable) {
+            mApplicable = applicable;
+        }
+
+    }
+
+}
diff --git a/tests/robotests/src/com/android/settings/notification/TouchSoundPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/TouchSoundPreferenceControllerTest.java
new file mode 100644
index 0000000..f530f66
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/TouchSoundPreferenceControllerTest.java
@@ -0,0 +1,116 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.notification;
+
+import android.app.Activity;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.media.AudioManager;
+import android.support.v14.preference.SwitchPreference;
+import android.support.v7.preference.PreferenceScreen;
+import android.provider.Settings.System;
+
+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.Robolectric;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowApplication;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.doReturn;
+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 TouchSoundPreferenceControllerTest {
+
+    @Mock
+    private AudioManager mAudioManager;
+    @Mock
+    private PreferenceScreen mScreen;
+    @Mock
+    private Activity mActivity;
+    @Mock
+    private ContentResolver mContentResolver;
+    @Mock
+    private SoundSettings mSetting;
+    @Mock
+    private Context mContext;
+
+    private TouchSoundPreferenceController mController;
+    private SwitchPreference mPreference;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        when(mActivity.getSystemService(Context.AUDIO_SERVICE)).thenReturn(mAudioManager);
+        when(mSetting.getActivity()).thenReturn(mActivity);
+        when(mActivity.getContentResolver()).thenReturn(mContentResolver);
+        mPreference = new SwitchPreference(ShadowApplication.getInstance().getApplicationContext());
+        mController = new TouchSoundPreferenceController(mContext, mSetting, null);
+        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
+        doReturn(mScreen).when(mSetting).getPreferenceScreen();
+    }
+
+    @Test
+    public void isAvailable_isAlwaysTrue() {
+        assertThat(mController.isAvailable()).isTrue();
+    }
+
+    @Test
+    public void displayPreference_soundEffectEnabled_shouldCheckedPreference() {
+        System.putInt(mContentResolver, System.SOUND_EFFECTS_ENABLED, 1);
+
+        mController.displayPreference(mScreen);
+
+        assertThat(mPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void displayPreference_soundEffectDisabled_shouldUncheckedPreference() {
+        System.putInt(mContentResolver, System.SOUND_EFFECTS_ENABLED, 0);
+
+        mController.displayPreference(mScreen);
+
+        assertThat(mPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void onPreferenceChanged_preferenceChecked_shouldEnabledSoundEffect() {
+        mController.displayPreference(mScreen);
+
+        mPreference.getOnPreferenceChangeListener().onPreferenceChange(mPreference, true);
+
+        assertThat(System.getInt(mContentResolver, System.SOUND_EFFECTS_ENABLED, 1)).isEqualTo(1);
+    }
+
+    @Test
+    public void onPreferenceChanged_preferenceUnchecked_shouldDisabledSoundEffect() {
+        mController.displayPreference(mScreen);
+
+        mPreference.getOnPreferenceChangeListener().onPreferenceChange(mPreference, false);
+
+        assertThat(System.getInt(mContentResolver, System.SOUND_EFFECTS_ENABLED, 1)).isEqualTo(0);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/notification/VibrateOnTouchPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/VibrateOnTouchPreferenceControllerTest.java
new file mode 100644
index 0000000..440b69e
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/VibrateOnTouchPreferenceControllerTest.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.notification;
+
+import android.app.Activity;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.os.Vibrator;
+import android.support.v14.preference.SwitchPreference;
+import android.support.v7.preference.PreferenceScreen;
+import android.provider.Settings.System;
+
+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.shadows.ShadowApplication;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Answers.RETURNS_DEEP_STUBS;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.when;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class VibrateOnTouchPreferenceControllerTest {
+
+    @Mock
+    private PreferenceScreen mScreen;
+    @Mock
+    private Activity mActivity;
+    @Mock
+    private ContentResolver mContentResolver;
+    @Mock
+    private SoundSettings mSetting;
+    @Mock
+    private Context mContext;
+    @Mock
+    private Vibrator mVibrator;
+
+    private VibrateOnTouchPreferenceController mController;
+    private SwitchPreference mPreference;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        when(mActivity.getSystemService(Context.VIBRATOR_SERVICE)).thenReturn(mVibrator);
+        when(mContext.getSystemService(Context.VIBRATOR_SERVICE)).thenReturn(mVibrator);
+        when(mVibrator.hasVibrator()).thenReturn(true);
+        when(mSetting.getActivity()).thenReturn(mActivity);
+        when(mActivity.getContentResolver()).thenReturn(mContentResolver);
+        mPreference = new SwitchPreference(ShadowApplication.getInstance().getApplicationContext());
+        mController = new VibrateOnTouchPreferenceController(mContext, mSetting, null);
+        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
+        doReturn(mScreen).when(mSetting).getPreferenceScreen();
+    }
+
+    @Test
+    public void isAvailable_hasHaptic_shouldReturnTrue() {
+
+        assertThat(mController.isAvailable()).isTrue();
+    }
+
+    @Test
+    public void isAvailable_noHaptic_shouldReturnFalse() {
+        when(mVibrator.hasVibrator()).thenReturn(false);
+
+        assertThat(mController.isAvailable()).isFalse();
+    }
+
+    @Test
+    public void displayPreference_hapticEnabled_shouldCheckedPreference() {
+        System.putInt(mContentResolver, System.HAPTIC_FEEDBACK_ENABLED, 1);
+
+        mController.displayPreference(mScreen);
+
+        assertThat(mPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void displayPreference_hapticDisabled_shouldUncheckedPreference() {
+        System.putInt(mContentResolver, System.HAPTIC_FEEDBACK_ENABLED, 0);
+
+        mController.displayPreference(mScreen);
+
+        assertThat(mPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void onPreferenceChanged_preferenceChecked_shouldEnabledHaptic() {
+        mController.displayPreference(mScreen);
+
+        mPreference.getOnPreferenceChangeListener().onPreferenceChange(mPreference, true);
+
+        assertThat(System.getInt(mContentResolver, System.HAPTIC_FEEDBACK_ENABLED, 1)).isEqualTo(1);
+    }
+
+    @Test
+    public void onPreferenceChanged_preferenceUnchecked_shouldDisabledHaptic() {
+        mController.displayPreference(mScreen);
+
+        mPreference.getOnPreferenceChangeListener().onPreferenceChange(mPreference, false);
+
+        assertThat(System.getInt(mContentResolver, System.HAPTIC_FEEDBACK_ENABLED, 1)).isEqualTo(0);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/notification/WorkSoundPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/WorkSoundPreferenceControllerTest.java
index 4d8101f..bb19533 100644
--- a/tests/robotests/src/com/android/settings/notification/WorkSoundPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/WorkSoundPreferenceControllerTest.java
@@ -114,17 +114,8 @@
                 .thenReturn(UserHandle.myUserId());
         when(mAudioHelper.isSingleVolume()).thenReturn(false);
         when(mFragment.getPreferenceScreen()).thenReturn(mScreen);
-        when(mScreen.findPreference(KEY_WORK_CATEGORY))
-            .thenReturn(mock(PreferenceGroup.class));
-        when(mScreen.findPreference(KEY_WORK_USE_PERSONAL_SOUNDS))
-            .thenReturn(mock(TwoStatePreference.class));
-        when(mScreen.findPreference(KEY_WORK_PHONE_RINGTONE))
-            .thenReturn(mock(DefaultRingtonePreference.class));
-        when(mScreen.findPreference(KEY_WORK_NOTIFICATION_RINGTONE))
-            .thenReturn(mock(DefaultRingtonePreference.class));
-        when(mScreen.findPreference(KEY_WORK_ALARM_RINGTONE))
-            .thenReturn(mock(DefaultRingtonePreference.class));
         when(mAudioHelper.createPackageContextAsUser(anyInt())).thenReturn(mContext);
+        mockWorkCategory();
 
         mController.onResume();
 
@@ -132,6 +123,50 @@
     }
 
     @Test
+    public void onManagedProfileAdded_shouldAddPreferenceCategory() {
+        // Given a device without any managed profiles:
+        when(mAudioHelper.isSingleVolume()).thenReturn(false);
+        when(mFragment.getPreferenceScreen()).thenReturn(mScreen);
+        when(mAudioHelper.createPackageContextAsUser(anyInt())).thenReturn(mContext);
+        when(mAudioHelper.getManagedProfileId(any(UserManager.class)))
+                .thenReturn(UserHandle.USER_NULL);
+        mockWorkCategory();
+
+        // When the fragment first resumes, the category should not appear.
+        mController.onResume();
+
+        verify(mFragment, never()).addPreferencesFromResource(R.xml.sound_work_settings);
+
+        // However, when a managed profile is added after resuming, the category should appear.
+        when(mAudioHelper.getManagedProfileId(any(UserManager.class)))
+                .thenReturn(UserHandle.myUserId());
+        mController.onManagedProfileAdded(UserHandle.myUserId());
+
+        verify(mFragment).addPreferencesFromResource(R.xml.sound_work_settings);
+    }
+
+    @Test
+    public void onManagedProfileRemoved_shouldRemovePreferenceCategory() {
+        // Given a device with a managed profile:
+        when(mAudioHelper.isSingleVolume()).thenReturn(false);
+        when(mFragment.getPreferenceScreen()).thenReturn(mScreen);
+        when(mAudioHelper.createPackageContextAsUser(anyInt())).thenReturn(mContext);
+        when(mAudioHelper.getManagedProfileId(any(UserManager.class)))
+                .thenReturn(UserHandle.myUserId());
+        mockWorkCategory();
+
+        // Which is in resumed state:
+        mController.onResume();
+
+        // When a managed profile is removed, the category should be removed.
+        when(mAudioHelper.getManagedProfileId(any(UserManager.class)))
+                .thenReturn(UserHandle.USER_NULL);
+        mController.onManagedProfileRemoved(UserHandle.myUserId());
+
+        verify(mScreen).removePreference(mScreen.findPreference(KEY_WORK_CATEGORY));
+    }
+
+    @Test
     public void onResume_notAvailable_shouldNotAddPreferenceCategory() {
         when(mTelephonyManager.isVoiceCapable()).thenReturn(true);
         when(mAudioHelper.getManagedProfileId(any(UserManager.class)))
@@ -154,4 +189,16 @@
         verify(preference).setSummary(anyString());
     }
 
+    private void mockWorkCategory() {
+        when(mScreen.findPreference(KEY_WORK_CATEGORY))
+            .thenReturn(mock(PreferenceGroup.class));
+        when(mScreen.findPreference(KEY_WORK_USE_PERSONAL_SOUNDS))
+            .thenReturn(mock(TwoStatePreference.class));
+        when(mScreen.findPreference(KEY_WORK_PHONE_RINGTONE))
+            .thenReturn(mock(DefaultRingtonePreference.class));
+        when(mScreen.findPreference(KEY_WORK_NOTIFICATION_RINGTONE))
+            .thenReturn(mock(DefaultRingtonePreference.class));
+        when(mScreen.findPreference(KEY_WORK_ALARM_RINGTONE))
+            .thenReturn(mock(DefaultRingtonePreference.class));
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/notification/ZenAccessSettingsTest.java b/tests/robotests/src/com/android/settings/notification/ZenAccessSettingsTest.java
new file mode 100644
index 0000000..854edcd
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/ZenAccessSettingsTest.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.settings.notification;
+
+import android.content.Context;
+
+import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.SettingsRobolectricTestRunner;
+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.annotation.Config;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.verify;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class ZenAccessSettingsTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+
+    private FakeFeatureFactory mFeatureFactory;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        FakeFeatureFactory.setupForTest(mContext);
+        mFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext);
+    }
+
+    @Test
+    public void logSpecialPermissionChange() {
+        ZenAccessSettings.logSpecialPermissionChange(true, "app", mContext);
+        verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class),
+                eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_DND_ALLOW),
+                eq("app"));
+
+        ZenAccessSettings.logSpecialPermissionChange(false, "app", mContext);
+        verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class),
+                eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_DND_DENY),
+                eq("app"));
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/search/DatabaseIndexingManagerTest.java b/tests/robotests/src/com/android/settings/search/DatabaseIndexingManagerTest.java
index 8b363b0..e89f009 100644
--- a/tests/robotests/src/com/android/settings/search/DatabaseIndexingManagerTest.java
+++ b/tests/robotests/src/com/android/settings/search/DatabaseIndexingManagerTest.java
@@ -21,10 +21,13 @@
 import android.database.Cursor;
 import android.database.sqlite.SQLiteDatabase;
 import android.provider.SearchIndexableResource;
+
 import com.android.settings.R;
 import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
+import com.android.settings.search.IndexDatabaseHelper.SiteMapColumns;
 import com.android.settings.search2.DatabaseIndexingManager;
+import com.android.settings.testutils.DatabaseTestUtils;
 
 import org.junit.After;
 import org.junit.Before;
@@ -33,13 +36,14 @@
 import org.robolectric.annotation.Config;
 import org.robolectric.shadows.ShadowApplication;
 
-import java.lang.reflect.Field;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
+import java.util.Map;
 
+import static com.android.settings.dashboard.SiteMapManager.SITE_MAP_COLUMNS;
 import static com.google.common.truth.Truth.assertThat;
 import static org.mockito.Mockito.spy;
 
@@ -48,7 +52,7 @@
 public class DatabaseIndexingManagerTest {
     private final String localeStr = "en_US";
 
-    private final int rank = 42;
+    private final int rank = 8;
     private final String title = "title\u2011title";
     private final String updatedTitle = "title-title";
     private final String normalizedTitle = "titletitle";
@@ -56,7 +60,7 @@
     private final String updatedSummaryOn = "summary-on";
     private final String normalizedSummaryOn = "summaryon";
     private final String summaryOff = "summary\u2011off";
-    private final String updatedSummaryOff ="summary-off";
+    private final String updatedSummaryOff = "summary-off";
     private final String normalizedSummaryOff = "summaryoff";
     private final String entries = "entries";
     private final String keywords = "keywords, keywordss, keywordsss";
@@ -85,15 +89,7 @@
 
     @After
     public void cleanUp() {
-        Field instance;
-        Class clazz = IndexDatabaseHelper.class;
-        try {
-            instance = clazz.getDeclaredField("sSingleton");
-            instance.setAccessible(true);
-            instance.set(null, null);
-        } catch (Exception e) {
-            throw new RuntimeException();
-        }
+        DatabaseTestUtils.clearDb();
     }
 
     @Test
@@ -101,7 +97,7 @@
         Cursor dbCursor = mDb.query("prefs_index", null, null, null, null, null, null);
         List<String> columnNames = new ArrayList<>(Arrays.asList(dbCursor.getColumnNames()));
         // Note that docid is not included.
-        List<String> expColumnNames = new ArrayList<>(Arrays.asList(new String[ ]{
+        List<String> expColumnNames = new ArrayList<>(Arrays.asList(new String[]{
                 "locale",
                 "data_rank",
                 "data_title",
@@ -203,7 +199,7 @@
     @Test
     public void testNullResource_NothingInserted() {
         mManager.indexOneSearchIndexableData(mDb, localeStr, null /* searchIndexableResource */,
-                new HashMap<String, List<String>>());
+                new HashMap<>());
         Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index", null);
         assertThat(cursor.getCount()).isEqualTo(0);
     }
@@ -212,16 +208,30 @@
     public void testAddResource_RowsInserted() {
         SearchIndexableResource resource = getFakeResource(R.xml.gesture_settings);
         mManager.indexOneSearchIndexableData(mDb, localeStr, resource,
-                new HashMap<String, List<String>>());
+                new HashMap<>());
         Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index", null);
         assertThat(cursor.getCount()).isEqualTo(6);
     }
 
     @Test
+    public void testAddResourceWithNIKs_RowsInsertedDisabled() {
+        SearchIndexableResource resource = getFakeResource(R.xml.gesture_settings);
+        // Only add 2 of 6 items to be disabled.
+        String[] keys = {"gesture_double_tap_power", "gesture_swipe_down_fingerprint"};
+        Map<String, List<String>> niks = getNonIndexableKeys(keys);
+        mManager.indexOneSearchIndexableData(mDb, localeStr, resource, niks);
+
+        Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index WHERE enabled = 0", null);
+        assertThat(cursor.getCount()).isEqualTo(2);
+        cursor = mDb.rawQuery("SELECT * FROM prefs_index WHERE enabled = 1", null);
+        assertThat(cursor.getCount()).isEqualTo(4);
+    }
+
+    @Test
     public void testAddResourceHeader_RowsMatch() {
         SearchIndexableResource resource = getFakeResource(R.xml.application_settings);
         mManager.indexOneSearchIndexableData(mDb, localeStr, resource,
-                new HashMap<String, List<String>>());
+                new HashMap<>());
 
         Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index ORDER BY data_title", null);
         cursor.moveToPosition(1);
@@ -271,28 +281,53 @@
     }
 
     @Test
+    public void testAddResourceWithChildFragment_shouldUpdateSiteMapDb() {
+        SearchIndexableResource resource = getFakeResource(R.xml.network_and_internet);
+        mManager.indexOneSearchIndexableData(mDb, localeStr, resource,
+                new HashMap<>());
+        Cursor query = mDb.query(IndexDatabaseHelper.Tables.TABLE_SITE_MAP, SITE_MAP_COLUMNS,
+                null, null, null, null, null);
+        query.moveToPosition(-1);
+        int count = 0;
+        while (query.moveToNext()) {
+            count++;
+            assertThat(query.getString(query.getColumnIndex(SiteMapColumns.PARENT_CLASS)))
+                    .isEqualTo(className);
+            assertThat(query.getString(query.getColumnIndex(SiteMapColumns.PARENT_TITLE)))
+                    .isEqualTo(mContext.getString(R.string.network_dashboard_title));
+            assertThat(query.getString(query.getColumnIndex(SiteMapColumns.CHILD_CLASS)))
+                    .isNotEmpty();
+            assertThat(query.getString(query.getColumnIndex(SiteMapColumns.CHILD_TITLE)))
+                    .isNotEmpty();
+        }
+        assertThat(count).isEqualTo(5);
+    }
+
+    @Test
     public void testAddResourceCustomSetting_RowsMatch() {
         SearchIndexableResource resource = getFakeResource(R.xml.gesture_settings);
         mManager.indexOneSearchIndexableData(mDb, localeStr, resource,
-                new HashMap<String, List<String>>());
-
-        Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index", null);
-        cursor.moveToPosition(0);
+                new HashMap<>());
+        final String prefTitle =
+                mContext.getString(R.string.fingerprint_swipe_for_notifications_title);
+        final String prefSummary =
+                mContext.getString(R.string.fingerprint_swipe_for_notifications_summary);
+        Cursor cursor = mDb.rawQuery(
+                "SELECT * FROM prefs_index where data_title='" + prefTitle + "'", null);
+        cursor.moveToFirst();
 
         // Locale
         assertThat(cursor.getString(0)).isEqualTo(localeStr);
         // Data Rank
         assertThat(cursor.getInt(1)).isEqualTo(rank);
         // Data Title
-        assertThat(cursor.getString(2)).isEqualTo("Swipe for notifications");
+        assertThat(cursor.getString(2)).isEqualTo(prefTitle);
         // Normalized Title
-        assertThat(cursor.getString(3)).isEqualTo("swipe for notifications");
+        assertThat(cursor.getString(3)).isEqualTo(prefTitle.toLowerCase());
         // Summary On
-        assertThat(cursor.getString(4)).isEqualTo("To check your notifications, " +
-                "swipe down on the fingerprint sensor on the back of your phone.");
+        assertThat(cursor.getString(4)).isEqualTo(prefSummary);
         // Summary On Normalized
-        assertThat(cursor.getString(5)).isEqualTo("to check your notifications, " +
-                "swipe down on the fingerprint sensor on the back of your phone.");
+        assertThat(cursor.getString(5)).isEqualTo(prefSummary.toLowerCase());
         // Summary Off - only on for checkbox preferences
         assertThat(cursor.getString(6)).isEmpty();
         // Summary off normalized - only on for checkbox preferences
@@ -302,7 +337,8 @@
         // Keywords
         assertThat(cursor.getString(9)).isEmpty();
         // Screen Title
-        assertThat(cursor.getString(10)).isEqualTo("Gestures");
+        assertThat(cursor.getString(10)).isEqualTo(
+                mContext.getString(R.string.gesture_preference_title));
         // Class Name
         assertThat(cursor.getString(11)).isEqualTo(className);
         // Icon
@@ -329,7 +365,7 @@
     public void testAddResourceCheckboxPreference_RowsMatch() {
         SearchIndexableResource resource = getFakeResource(R.xml.application_settings);
         mManager.indexOneSearchIndexableData(mDb, localeStr, resource,
-                new HashMap<String, List<String>>());
+                new HashMap<>());
 
         /* Should return 6 results, with the following titles:
          * Advanced Settings, Apps, Manage Apps, Preferred install location, Running Services
@@ -384,7 +420,7 @@
     public void testAddResourceListPreference_RowsMatch() {
         SearchIndexableResource resource = getFakeResource(R.xml.application_settings);
         mManager.indexOneSearchIndexableData(mDb, localeStr, resource,
-                new HashMap<String, List<String>>());
+                new HashMap<>());
 
         Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index ORDER BY data_title", null);
         cursor.moveToPosition(3);
@@ -397,16 +433,18 @@
         // Normalized Title
         assertThat(cursor.getString(3)).isEqualTo("preferred install location");
         // Summary On
-        assertThat(cursor.getString(4)).isEqualTo("Change the preferred installation location for new apps");
+        assertThat(cursor.getString(4)).isEqualTo(
+                "Change the preferred installation location for new apps");
         // Summary On Normalized
-        assertThat(cursor.getString(5)).isEqualTo("change the preferred installation location for new apps");
+        assertThat(cursor.getString(5)).isEqualTo(
+                "change the preferred installation location for new apps");
         // Summary Off - only on for checkbox preferences
         assertThat(cursor.getString(6)).isEmpty();
         // Summary off normalized - only on for checkbox preferences
         assertThat(cursor.getString(7)).isEmpty();
         // Entries - only on for list preferences
         assertThat(cursor.getString(8)).isEqualTo("Internal device storage|Removable SD card|" +
-                        "Let the system decide|");
+                "Let the system decide|");
         // Keywords
         assertThat(cursor.getString(9)).isEmpty();
         // Screen Title
@@ -443,7 +481,7 @@
         resource.className = "com.android.settings.display.ScreenZoomSettings";
 
         mManager.indexOneSearchIndexableData(mDb, localeStr, resource,
-                new HashMap<String, List<String>>());
+                new HashMap<>());
         Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index", null);
         assertThat(cursor.getCount()).isEqualTo(1);
     }
@@ -455,7 +493,7 @@
         resource.className = "com.android.settings.display.ScreenZoomSettings";
 
         mManager.indexOneSearchIndexableData(mDb, localeStr, resource,
-                new HashMap<String, List<String>>());
+                new HashMap<>());
         Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index", null);
         cursor.moveToPosition(0);
 
@@ -506,24 +544,22 @@
 
     @Test
     public void testResourceProvider_ResourceRowInserted() {
-        SearchIndexableResource resource = getFakeResource(R.xml.gesture_settings);
-        resource.xmlResId = 0;
+        SearchIndexableResource resource = getFakeResource(0);
         resource.className = "com.android.settings.LegalSettings";
 
         mManager.indexOneSearchIndexableData(mDb, localeStr, resource,
-                new HashMap<String, List<String>>());
+                new HashMap<>());
         Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index", null);
-        assertThat(cursor.getCount()).isEqualTo(2);
+        assertThat(cursor.getCount()).isEqualTo(6);
     }
 
     @Test
     public void testResourceProvider_ResourceRowMatches() {
-        SearchIndexableResource resource = getFakeResource(R.xml.gesture_settings);
-        resource.xmlResId = 0;
-        resource.className = "com.android.settings.LegalSettings";
+        SearchIndexableResource resource = getFakeResource(0);
+        resource.className = "com.android.settings.display.ScreenZoomSettings";
 
         mManager.indexOneSearchIndexableData(mDb, localeStr, resource,
-                new HashMap<String, List<String>>());
+                new HashMap<>());
         Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index ORDER BY data_title", null);
         cursor.moveToPosition(0);
 
@@ -532,9 +568,9 @@
         // Data Rank
         assertThat(cursor.getInt(1)).isEqualTo(rank);
         // Data Title
-        assertThat(cursor.getString(2)).isEqualTo("Legal information");
+        assertThat(cursor.getString(2)).isEqualTo("Display size");
         // Normalized Title
-        assertThat(cursor.getString(3)).isEqualTo("legal information");
+        assertThat(cursor.getString(3)).isEqualTo("display size");
         // Summary On
         assertThat(cursor.getString(4)).isEmpty();
         // Summary On Normalized
@@ -546,12 +582,13 @@
         // Entries - only on for list preferences
         assertThat(cursor.getString(8)).isNull();
         // Keywords
-        assertThat(cursor.getString(9)).isEmpty();
+        assertThat(cursor.getString(9)).isEqualTo(
+                "display density screen zoom scale scaling");
         // Screen Title
-        assertThat(cursor.getString(10)).isEqualTo("Legal information");
+        assertThat(cursor.getString(10)).isEqualTo("Display size");
         // Class Name
         assertThat(cursor.getString(11))
-                .isEqualTo("com.android.settings.LegalSettings");
+                .isEqualTo("com.android.settings.display.ScreenZoomSettings");
         // Icon
         assertThat(cursor.getInt(12)).isEqualTo(iconResId);
         // Intent Action
@@ -572,6 +609,20 @@
         assertThat(cursor.getBlob(20)).isNull();
     }
 
+    @Test
+    public void testResourceProvider_DisabledResourceRowsInserted() {
+        SearchIndexableResource resource = getFakeResource(0);
+        resource.className = "com.android.settings.LegalSettings";
+
+        mManager.indexOneSearchIndexableData(mDb, localeStr, resource,
+                new HashMap<String, List<String>>());
+
+        Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index WHERE enabled = 1", null);
+        assertThat(cursor.getCount()).isEqualTo(2);
+        cursor = mDb.rawQuery("SELECT * FROM prefs_index WHERE enabled = 0", null);
+        assertThat(cursor.getCount()).isEqualTo(4);
+    }
+
     // Util functions
 
     private SearchIndexableRaw getFakeRaw() {
@@ -613,4 +664,11 @@
         sir.enabled = enabled;
         return sir;
     }
-}
+
+    private Map<String, List<String>> getNonIndexableKeys(String[] keys) {
+        Map<String, List<String>> niks = new HashMap<>();
+        List<String> keysList = new ArrayList<>(Arrays.asList(keys));
+        niks.put(packageName, keysList);
+        return niks;
+    }
+}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/search/DatabaseResultLoaderTest.java b/tests/robotests/src/com/android/settings/search/DatabaseResultLoaderTest.java
index c592aef..6368fcb 100644
--- a/tests/robotests/src/com/android/settings/search/DatabaseResultLoaderTest.java
+++ b/tests/robotests/src/com/android/settings/search/DatabaseResultLoaderTest.java
@@ -20,72 +20,86 @@
 import android.content.ContentValues;
 import android.content.Context;
 import android.database.sqlite.SQLiteDatabase;
+
 import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
+import com.android.settings.dashboard.SiteMapManager;
 import com.android.settings.search2.DatabaseIndexingUtils;
 import com.android.settings.search2.DatabaseResultLoader;
+import com.android.settings.testutils.DatabaseTestUtils;
+import com.android.settings.testutils.FakeFeatureFactory;
+
 import org.junit.After;
 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.RuntimeEnvironment;
 import org.robolectric.annotation.Config;
 
-import java.lang.reflect.Field;
-
 import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Matchers.eq;
+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 DatabaseResultLoaderTest {
-    private Context mContext;
 
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mMockContext;
+    @Mock
+    private SiteMapManager mSiteMapManager;
+    private Context mContext;
     private DatabaseResultLoader loader;
 
     SQLiteDatabase mDb;
 
     @Before
     public void setUp() {
+        MockitoAnnotations.initMocks(this);
         mContext = RuntimeEnvironment.application;
+        FakeFeatureFactory.setupForTest(mMockContext);
+        FakeFeatureFactory factory =
+                (FakeFeatureFactory) FakeFeatureFactory.getFactory(mMockContext);
+        when(factory.searchFeatureProvider.getSiteMapManager())
+                .thenReturn(mSiteMapManager);
         mDb = IndexDatabaseHelper.getInstance(mContext).getWritableDatabase();
         setUpDb();
     }
 
     @After
     public void cleanUp() {
-        Field instance;
-        Class clazz = IndexDatabaseHelper.class;
-        try {
-            instance = clazz.getDeclaredField("sSingleton");
-            instance.setAccessible(true);
-            instance.set(null, null);
-        } catch (Exception e) {
-            throw new RuntimeException();
-        }
+        DatabaseTestUtils.clearDb();
     }
 
     @Test
     public void testMatchTitle() {
         loader = new DatabaseResultLoader(mContext, "title");
-        assertThat(loader.loadInBackground().size()).isEqualTo(3);
+        assertThat(loader.loadInBackground().size()).isEqualTo(2);
+        verify(mSiteMapManager, times(2)).buildBreadCrumb(eq(mContext), anyString(), anyString());
     }
 
     @Test
     public void testMatchSummary() {
         loader = new DatabaseResultLoader(mContext, "summary");
-        assertThat(loader.loadInBackground().size()).isEqualTo(3);
+        assertThat(loader.loadInBackground().size()).isEqualTo(2);
     }
 
     @Test
     public void testMatchKeywords() {
         loader = new DatabaseResultLoader(mContext, "keywords");
-        assertThat(loader.loadInBackground().size()).isEqualTo(3);
+        assertThat(loader.loadInBackground().size()).isEqualTo(2);
     }
 
     @Test
     public void testMatchEntries() {
         loader = new DatabaseResultLoader(mContext, "entries");
-        assertThat(loader.loadInBackground().size()).isEqualTo(3);
+        assertThat(loader.loadInBackground().size()).isEqualTo(2);
     }
 
     @Test
@@ -130,6 +144,62 @@
         assertThat(loader.loadInBackground().size()).isEqualTo(1);
     }
 
+    @Test
+    public void testSpecialCasePrefix_MatchesPrefixOfEntry() {
+        insertSpecialCase("Photos");
+        loader = new DatabaseResultLoader(mContext, "pho");
+        assertThat(loader.loadInBackground().size()).isEqualTo(1);
+    }
+
+    @Test
+    public void testSpecialCasePrefix_DoesNotMatchNonPrefixSubstring() {
+        insertSpecialCase("Photos");
+        loader = new DatabaseResultLoader(mContext, "hot");
+        assertThat(loader.loadInBackground().size()).isEqualTo(0);
+    }
+
+    @Test
+    public void testSpecialCaseMultiWordPrefix_MatchesPrefixOfEntry() {
+        insertSpecialCase("Apps Notifications");
+        loader = new DatabaseResultLoader(mContext, "Apps");
+        assertThat(loader.loadInBackground().size()).isEqualTo(1);
+    }
+
+    @Test
+    public void testSpecialCaseMultiWordPrefix_MatchesSecondWordPrefixOfEntry() {
+        insertSpecialCase("Apps Notifications");
+        loader = new DatabaseResultLoader(mContext, "Not");
+        assertThat(loader.loadInBackground().size()).isEqualTo(1);
+    }
+
+    @Test
+    public void testSpecialCaseMultiWordPrefix_DoesNotMatchMatchesPrefixOfFirstEntry() {
+        insertSpecialCase("Apps Notifications");
+        loader = new DatabaseResultLoader(mContext, "pp");
+        assertThat(loader.loadInBackground().size()).isEqualTo(0);
+    }
+
+    @Test
+    public void testSpecialCaseMultiWordPrefix_DoesNotMatchMatchesPrefixOfSecondEntry() {
+        insertSpecialCase("Apps Notifications");
+        loader = new DatabaseResultLoader(mContext, "tion");
+        assertThat(loader.loadInBackground().size()).isEqualTo(0);
+    }
+
+    @Test
+    public void testSpecialCaseMultiWordPrefixWithSpecial_MatchesPrefixOfEntry() {
+        insertSpecialCase("Apps & Notifications");
+        loader = new DatabaseResultLoader(mContext, "App");
+        assertThat(loader.loadInBackground().size()).isEqualTo(1);
+    }
+
+    @Test
+    public void testSpecialCaseMultiWordPrefixWithSpecial_MatchesPrefixOfSecondEntry() {
+        insertSpecialCase("Apps & Notifications");
+        loader = new DatabaseResultLoader(mContext, "No");
+        assertThat(loader.loadInBackground().size()).isEqualTo(1);
+    }
+
     private void insertSpecialCase(String specialCase) {
         String normalized = DatabaseIndexingUtils.normalizeHyphen(specialCase);
         normalized = DatabaseIndexingUtils.normalizeString(normalized);
@@ -153,7 +223,7 @@
         values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, "");
         values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, "");
         values.put(IndexDatabaseHelper.IndexColumns.ICON, "");
-        values.put(IndexDatabaseHelper.IndexColumns.ENABLED, "");
+        values.put(IndexDatabaseHelper.IndexColumns.ENABLED, true);
         values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power");
         values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0);
         values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0);
@@ -170,11 +240,11 @@
         values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE, "alpha_title");
         values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE_NORMALIZED, "alpha title");
         values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON, "alpha_summary");
-        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, "alpha_summary");
+        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, "alpha summary");
         values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF, "alpha_summary");
-        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, "alpha_summary");
-        values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, "alpha_entries");
-        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, "alpha_keywords");
+        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, "alpha summary");
+        values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, "alpha entries");
+        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, "alpha keywords");
         values.put(IndexDatabaseHelper.IndexColumns.CLASS_NAME,
                 "com.android.settings.gestures.GestureSettings");
         values.put(IndexDatabaseHelper.IndexColumns.SCREEN_TITLE, "Moves");
@@ -182,7 +252,7 @@
         values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, "");
         values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, "");
         values.put(IndexDatabaseHelper.IndexColumns.ICON, "");
-        values.put(IndexDatabaseHelper.IndexColumns.ENABLED, "");
+        values.put(IndexDatabaseHelper.IndexColumns.ENABLED, true);
         values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power");
         values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0);
         values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0);
@@ -197,11 +267,11 @@
         values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE, "bravo_title");
         values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE_NORMALIZED, "bravo title");
         values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON, "bravo_summary");
-        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, "bravo_summary");
+        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, "bravo summary");
         values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF, "bravo_summary");
-        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, "bravo_summary");
-        values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, "bravo_entries");
-        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, "bravo_keywords");
+        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, "bravo summary");
+        values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, "bravo entries");
+        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, "bravo keywords");
         values.put(IndexDatabaseHelper.IndexColumns.CLASS_NAME,
                 "com.android.settings.gestures.GestureSettings");
         values.put(IndexDatabaseHelper.IndexColumns.SCREEN_TITLE, "Moves");
@@ -209,7 +279,7 @@
         values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, "");
         values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, "");
         values.put(IndexDatabaseHelper.IndexColumns.ICON, "");
-        values.put(IndexDatabaseHelper.IndexColumns.ENABLED, "");
+        values.put(IndexDatabaseHelper.IndexColumns.ENABLED, true);
         values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power");
         values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0);
         values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0);
@@ -223,11 +293,11 @@
         values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE, "charlie_title");
         values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE_NORMALIZED, "charlie title");
         values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON, "charlie_summary");
-        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, "charlie_summary");
+        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, "charlie summary");
         values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF, "charlie_summary");
-        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, "charlie_summary");
-        values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, "charlie_entries");
-        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, "charlie_keywords");
+        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, "charlie summary");
+        values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, "charlie entries");
+        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, "charlie keywords");
         values.put(IndexDatabaseHelper.IndexColumns.CLASS_NAME,
                 "com.android.settings.gestures.GestureSettings");
         values.put(IndexDatabaseHelper.IndexColumns.SCREEN_TITLE, "Moves");
@@ -235,7 +305,7 @@
         values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, "");
         values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, "");
         values.put(IndexDatabaseHelper.IndexColumns.ICON, "");
-        values.put(IndexDatabaseHelper.IndexColumns.ENABLED, "");
+        values.put(IndexDatabaseHelper.IndexColumns.ENABLED, false);
         values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power");
         values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0);
         values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0);
diff --git a/tests/robotests/src/com/android/settings/search/FakeIndexProvider.java b/tests/robotests/src/com/android/settings/search/FakeIndexProvider.java
new file mode 100644
index 0000000..35486ef
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/search/FakeIndexProvider.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package com.android.settings.search;
+
+import android.content.Context;
+import android.provider.SearchIndexableResource;
+import com.android.settings.core.PreferenceController;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class FakeIndexProvider  implements Indexable {
+
+    public static final String KEY = "TestKey";
+
+    public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+            new BaseSearchIndexProvider() {
+                @Override
+                public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
+                        boolean enabled) {
+                    return null;
+                }
+
+                @Override
+                public List<String> getNonIndexableKeys(Context context) {
+                    ArrayList<String> result = new ArrayList<>();
+                    result.add(KEY);
+                    return result;
+                }
+
+                @Override
+                public List<PreferenceController> getPreferenceControllers(Context context) {
+                    return null;
+                }
+            };
+
+}
diff --git a/tests/robotests/src/com/android/settings/search/IntentSearchViewHolderTest.java b/tests/robotests/src/com/android/settings/search/IntentSearchViewHolderTest.java
index 3874479..7a2499b 100644
--- a/tests/robotests/src/com/android/settings/search/IntentSearchViewHolderTest.java
+++ b/tests/robotests/src/com/android/settings/search/IntentSearchViewHolderTest.java
@@ -41,6 +41,7 @@
 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;
@@ -73,6 +74,7 @@
         assertThat(mHolder.titleView).isNotNull();
         assertThat(mHolder.summaryView).isNotNull();
         assertThat(mHolder.iconView).isNotNull();
+        assertThat(mHolder.breadcrumbView).isNotNull();
     }
 
     @Test
@@ -84,11 +86,43 @@
         assertThat(mHolder.titleView.getText()).isEqualTo(TITLE);
         assertThat(mHolder.summaryView.getText()).isEqualTo(SUMMARY);
         assertThat(mHolder.iconView.getDrawable()).isEqualTo(mIcon);
+        assertThat(mHolder.summaryView.getVisibility()).isEqualTo(View.VISIBLE);
+        assertThat(mHolder.breadcrumbView.getVisibility()).isEqualTo(View.GONE);
 
         verify(mFragment).onSearchResultClicked();
         verify(mFragment).startActivity(any(Intent.class));
     }
 
+    @Test
+    public void testBindViewElements_emptySummary_hideSummaryView() {
+        final SearchResult result = new Builder().addTitle(TITLE)
+                .addRank(1)
+                .addPayload(new IntentPayload(null))
+                .addIcon(mIcon)
+                .build();
+
+        mHolder.onBind(mFragment, result);
+        assertThat(mHolder.summaryView.getVisibility()).isEqualTo(View.GONE);
+    }
+
+    @Test
+    public void testBindViewElements_withBreadcrumb_shouldFormatBreadcrumb() {
+        final List<String> breadcrumbs = new ArrayList<>();
+        breadcrumbs.add("a");
+        breadcrumbs.add("b");
+        breadcrumbs.add("c");
+        final SearchResult result = new Builder().addTitle(TITLE)
+                .addRank(1)
+                .addPayload(new IntentPayload(null))
+                .addBreadcrumbs(breadcrumbs)
+                .addIcon(mIcon)
+                .build();
+
+        mHolder.onBind(mFragment, result);
+        assertThat(mHolder.breadcrumbView.getVisibility()).isEqualTo(View.VISIBLE);
+        assertThat(mHolder.breadcrumbView.getText()).isEqualTo("a > b > c");
+    }
+
     private SearchResult getSearchResult() {
         Builder builder = new Builder();
         builder.addTitle(TITLE)
diff --git a/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java
index c0b1b3d..c314728 100644
--- a/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java
@@ -19,17 +19,13 @@
 
 import android.app.Activity;
 import android.content.Context;
-import android.content.res.Configuration;
 import android.view.Menu;
 
 import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
-import com.android.settings.overlay.FeatureFactory;
-import com.android.settings.search2.DatabaseIndexingManager;
+import com.android.settings.dashboard.SiteMapManager;
 import com.android.settings.search2.SearchFeatureProviderImpl;
 
-import com.android.settings.testutils.FakeFeatureFactory;
-import com.android.settingslib.drawer.DashboardCategory;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -77,6 +73,14 @@
     }
 
     @Test
+    public void getSiteMapManager_shouldCacheInstanec() {
+        final SiteMapManager manager1 = mProvider.getSiteMapManager();
+        final SiteMapManager manager2 = mProvider.getSiteMapManager();
+
+        assertThat(manager1).isSameAs(manager2);
+    }
+
+    @Test
     public void testUpdateIndexNewSearch_UsesDatabaseIndexingManager() {
         mProvider = spy(new SearchFeatureProviderImpl());
         when(mProvider.isEnabled(mActivity)).thenReturn(true);
diff --git a/tests/robotests/src/com/android/settings/search/SearchIndexableResourcesTest.java b/tests/robotests/src/com/android/settings/search/SearchIndexableResourcesTest.java
index efb5cbc..62bb7fb 100644
--- a/tests/robotests/src/com/android/settings/search/SearchIndexableResourcesTest.java
+++ b/tests/robotests/src/com/android/settings/search/SearchIndexableResourcesTest.java
@@ -16,14 +16,20 @@
 
 package com.android.settings.search;
 
+import static android.provider.SearchIndexablesContract.COLUMN_INDEX_NON_INDEXABLE_KEYS_KEY_VALUE;
 import static com.android.settings.search.SearchIndexableResources.NO_DATA_RES_ID;
 
+import static com.android.settings.search.SearchIndexableResources.sResMap;
 import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
 
 import android.annotation.DrawableRes;
 import android.annotation.XmlRes;
+import android.database.Cursor;
 import android.provider.SearchIndexableResource;
 
+import android.text.TextUtils;
 import com.android.settings.R;
 import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
@@ -31,8 +37,11 @@
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
 import org.robolectric.annotation.Config;
 
+import java.util.HashMap;
+
 @RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class SearchIndexableResourcesTest {
@@ -72,4 +81,24 @@
         assertThat(index.xmlResId).isEqualTo(NO_DATA_RES_ID);
         assertThat(index.iconResId).isEqualTo(R.drawable.ic_settings_wireless);
     }
+
+    @Test
+    public void testNonIndexableKeys_GetsKeyFromProvider() {
+        SearchIndexableResources.sResMap.clear();
+        SearchIndexableResources.addIndex(FakeIndexProvider.class, 0, 0);
+
+        SettingsSearchIndexablesProvider provider = spy(new SettingsSearchIndexablesProvider());
+
+        Cursor cursor = provider.queryNonIndexableKeys(null);
+        boolean hasTestKey = false;
+        while(cursor.moveToNext()) {
+            String key = cursor.getString(COLUMN_INDEX_NON_INDEXABLE_KEYS_KEY_VALUE);
+            if (TextUtils.equals(key, FakeIndexProvider.KEY)) {
+                hasTestKey = true;
+                break;
+            }
+        }
+
+        assertThat(hasTestKey).isTrue();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/search2/CursorToSearchResultConverterTest.java b/tests/robotests/src/com/android/settings/search2/CursorToSearchResultConverterTest.java
index 6ad7501..d69ba3e 100644
--- a/tests/robotests/src/com/android/settings/search2/CursorToSearchResultConverterTest.java
+++ b/tests/robotests/src/com/android/settings/search2/CursorToSearchResultConverterTest.java
@@ -28,12 +28,16 @@
 import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.SubSettings;
 import com.android.settings.TestConfig;
+import com.android.settings.dashboard.SiteMapManager;
 import com.android.settings.gestures.GestureSettings;
 import com.android.settings.search2.ResultPayload.PayloadType;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.Answers;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
 import org.robolectric.Robolectric;
 import org.robolectric.annotation.Config;
 
@@ -57,11 +61,14 @@
     private static final int BASE_RANK = 1;
     private static final int EXAMPLES = 3;
 
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private SiteMapManager mSiteMapManager;
     private Drawable mDrawable;
     private CursorToSearchResultConverter mConverter;
 
     @Before
     public void setUp() {
+        MockitoAnnotations.initMocks(this);
         Context context = Robolectric.buildActivity(Activity.class).get();
         mDrawable = context.getDrawable(ICON);
         mConverter = new CursorToSearchResultConverter(context, QUERY);
@@ -69,19 +76,21 @@
 
     @Test
     public void testParseNullResults_ReturnsNull() {
-        List<SearchResult> results = mConverter.convertCursor(null, BASE_RANK);
+        List<SearchResult> results = mConverter.convertCursor(mSiteMapManager, null, BASE_RANK);
         assertThat(results).isNull();
     }
 
     @Test
     public void testParseCursor_NotNull() {
-        List<SearchResult> results = mConverter.convertCursor(getDummyCursor(), BASE_RANK);
+        List<SearchResult> results = mConverter.convertCursor(
+                mSiteMapManager, getDummyCursor(), BASE_RANK);
         assertThat(results).isNotNull();
     }
 
     @Test
     public void testParseCursor_MatchesRank() {
-        List<SearchResult> results = mConverter.convertCursor(getDummyCursor(), BASE_RANK);
+        List<SearchResult> results = mConverter.convertCursor(
+                mSiteMapManager, getDummyCursor(), BASE_RANK);
         for (int i = 0; i < EXAMPLES; i++) {
             assertThat(results.get(i).rank).isEqualTo(BASE_RANK);
         }
@@ -89,7 +98,8 @@
 
     @Test
     public void testParseCursor_MatchesTitle() {
-        List<SearchResult> results = mConverter.convertCursor(getDummyCursor(), BASE_RANK);
+        List<SearchResult> results = mConverter.convertCursor(
+                mSiteMapManager, getDummyCursor(), BASE_RANK);
         for (int i = 0; i < EXAMPLES; i++) {
             assertThat(results.get(i).title).isEqualTo(TITLES[i]);
         }
@@ -97,7 +107,8 @@
 
     @Test
     public void testParseCursor_MatchesSummary() {
-        List<SearchResult> results = mConverter.convertCursor(getDummyCursor(), BASE_RANK);
+        List<SearchResult> results = mConverter.convertCursor(
+                mSiteMapManager, getDummyCursor(), BASE_RANK);
         for (int i = 0; i < EXAMPLES; i++) {
             assertThat(results.get(i).summary).isEqualTo(SUMMARY);
         }
@@ -105,7 +116,8 @@
 
     @Test
     public void testParseCursor_MatchesIcon() {
-        List<SearchResult> results = mConverter.convertCursor(getDummyCursor(), BASE_RANK);
+        List<SearchResult> results = mConverter.convertCursor(
+                mSiteMapManager, getDummyCursor(), BASE_RANK);
         for (int i = 0; i < EXAMPLES; i++) {
             Drawable resultDrawable = results.get(i).icon;
             assertThat(resultDrawable).isNotNull();
@@ -116,7 +128,7 @@
     @Test
     public void testParseCursor_NoIcon() {
         List<SearchResult> results = mConverter.convertCursor(
-                getDummyCursor(false /* hasIcon */), BASE_RANK);
+                mSiteMapManager, getDummyCursor(false /* hasIcon */), BASE_RANK);
         for (int i = 0; i < EXAMPLES; i++) {
             Drawable resultDrawable = results.get(i).icon;
             assertThat(resultDrawable).isNull();
@@ -125,7 +137,8 @@
 
     @Test
     public void testParseCursor_MatchesPayloadType() {
-        List<SearchResult> results = mConverter.convertCursor(getDummyCursor(), BASE_RANK);
+        List<SearchResult> results = mConverter.convertCursor(
+                mSiteMapManager, getDummyCursor(), BASE_RANK);
         ResultPayload payload;
         for (int i = 0; i < EXAMPLES; i++) {
             payload = results.get(i).payload;
@@ -152,7 +165,7 @@
                 0,       // Payload Type
                 null     // Payload
         });
-        List<SearchResult> results = mConverter.convertCursor(cursor, BASE_RANK);
+        List<SearchResult> results = mConverter.convertCursor(mSiteMapManager, cursor, BASE_RANK);
         IntentPayload payload = (IntentPayload) results.get(0).payload;
         Intent intent = payload.intent;
         assertThat(intent.getComponent().getClassName()).isEqualTo(SubSettings.class.getName());
@@ -160,7 +173,8 @@
 
     @Test
     public void testParseCursor_MatchesIntentPayload() {
-        List<SearchResult> results = mConverter.convertCursor(getDummyCursor(), BASE_RANK);
+        List<SearchResult> results = mConverter.convertCursor(
+                mSiteMapManager, getDummyCursor(), BASE_RANK);
         IntentPayload payload;
         for (int i = 0; i < EXAMPLES; i++) {
             payload = (IntentPayload) results.get(i).payload;
@@ -187,7 +201,7 @@
                 PayloadType.INTENT,    // Payload Type
                 null // Payload
         });
-        List<SearchResult> results = mConverter.convertCursor(cursor, BASE_RANK);
+        List<SearchResult> results = mConverter.convertCursor(mSiteMapManager, cursor, BASE_RANK);
         IntentPayload payload = (IntentPayload) results.get(0).payload;
         Intent intent = payload.intent;
 
@@ -222,7 +236,7 @@
                 type,    // Payload Type
                 ResultPayloadUtils.marshall(payload) // Payload
         });
-        List<SearchResult> results = mConverter.convertCursor(cursor, BASE_RANK);
+        List<SearchResult> results = mConverter.convertCursor(mSiteMapManager, cursor, BASE_RANK);
         InlineSwitchPayload newPayload = (InlineSwitchPayload) results.get(0).payload;
 
         assertThat(newPayload.settingsUri).isEqualTo(uri);
diff --git a/tests/robotests/src/com/android/settings/search2/InstalledAppResultLoaderTest.java b/tests/robotests/src/com/android/settings/search2/InstalledAppResultLoaderTest.java
index 24aa94b..e6397e1 100644
--- a/tests/robotests/src/com/android/settings/search2/InstalledAppResultLoaderTest.java
+++ b/tests/robotests/src/com/android/settings/search2/InstalledAppResultLoaderTest.java
@@ -17,13 +17,18 @@
 package com.android.settings.search2;
 
 import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ResolveInfo;
 import android.content.pm.UserInfo;
 import android.os.UserManager;
 
+import com.android.settings.R;
 import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settings.applications.PackageManagerWrapper;
+import com.android.settings.dashboard.SiteMapManager;
 import com.android.settings.testutils.ApplicationTestUtils;
+import com.android.settings.testutils.FakeFeatureFactory;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -38,8 +43,16 @@
 import java.util.List;
 
 import static android.content.pm.ApplicationInfo.FLAG_SYSTEM;
+import static android.content.pm.ApplicationInfo.FLAG_UPDATED_SYSTEM_APP;
 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.Matchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 @RunWith(SettingsRobolectricTestRunner.class)
@@ -52,23 +65,36 @@
     private PackageManagerWrapper mPackageManagerWrapper;
     @Mock
     private UserManager mUserManager;
+    @Mock
+    private SiteMapManager mSiteMapManager;
 
     private InstalledAppResultLoader mLoader;
 
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
+        FakeFeatureFactory.setupForTest(mContext);
+        FakeFeatureFactory factory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext);
+        when(factory.searchFeatureProvider.getSiteMapManager())
+                .thenReturn(mSiteMapManager);
         final List<UserInfo> infos = new ArrayList<>();
         infos.add(new UserInfo(1, "user 1", 0));
         when(mUserManager.getProfiles(anyInt())).thenReturn(infos);
         when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
+        when(mContext.getString(R.string.applications_settings))
+                .thenReturn("app");
         when(mPackageManagerWrapper.getInstalledApplicationsAsUser(anyInt(), anyInt()))
                 .thenReturn(Arrays.asList(
-                        ApplicationTestUtils.buildInfo(0 /* uid */, "app1", FLAG_SYSTEM),
-                        ApplicationTestUtils.buildInfo(0 /* uid */, "app2", FLAG_SYSTEM),
-                        ApplicationTestUtils.buildInfo(0 /* uid */, "app3", FLAG_SYSTEM),
-                        ApplicationTestUtils.buildInfo(0 /* uid */, "app4", 0 /* flags */),
-                        ApplicationTestUtils.buildInfo(0 /* uid */, "app", 0 /* flags */)));
+                        ApplicationTestUtils.buildInfo(0 /* uid */, "app1", FLAG_SYSTEM,
+                                0 /* targetSdkVersion */),
+                        ApplicationTestUtils.buildInfo(0 /* uid */, "app2", FLAG_SYSTEM,
+                                0 /* targetSdkVersion */),
+                        ApplicationTestUtils.buildInfo(0 /* uid */, "app3", FLAG_SYSTEM,
+                                0 /* targetSdkVersion */),
+                        ApplicationTestUtils.buildInfo(0 /* uid */, "app4", 0 /* flags */,
+                                0 /* targetSdkVersion */),
+                        ApplicationTestUtils.buildInfo(0 /* uid */, "app", 0 /* flags */,
+                                0 /* targetSdkVersion */)));
     }
 
     @Test
@@ -84,9 +110,68 @@
     public void query_matchingQuery_shouldReturnNonSystemApps() {
         final String query = "app";
 
-        mLoader = new InstalledAppResultLoader(mContext, mPackageManagerWrapper, query);
+        mLoader = spy(new InstalledAppResultLoader(mContext, mPackageManagerWrapper, query));
+        when(mLoader.getContext()).thenReturn(mContext);
+        when(mSiteMapManager.buildBreadCrumb(eq(mContext), anyString(), anyString()))
+                .thenReturn(Arrays.asList(new String[]{"123"}));
 
         assertThat(mLoader.loadInBackground().size()).isEqualTo(2);
+        verify(mSiteMapManager)
+                .buildBreadCrumb(eq(mContext), anyString(), anyString());
+    }
+
+    @Test
+    public void query_matchingQuery_shouldReturnSystemAppUpdates() {
+        when(mPackageManagerWrapper.getInstalledApplicationsAsUser(anyInt(), anyInt()))
+                .thenReturn(Arrays.asList(
+                        ApplicationTestUtils.buildInfo(0 /* uid */, "app1", FLAG_UPDATED_SYSTEM_APP,
+                                0 /* targetSdkVersion */)));
+        final String query = "app";
+
+        mLoader = spy(new InstalledAppResultLoader(mContext, mPackageManagerWrapper, query));
+        when(mLoader.getContext()).thenReturn(mContext);
+
+        assertThat(mLoader.loadInBackground().size()).isEqualTo(1);
+        verify(mSiteMapManager)
+                .buildBreadCrumb(eq(mContext), anyString(), anyString());
+    }
+
+    @Test
+    public void query_matchingQuery_shouldReturnSystemAppIfLaunchable() {
+        when(mPackageManagerWrapper.getInstalledApplicationsAsUser(anyInt(), anyInt()))
+                .thenReturn(Arrays.asList(
+                        ApplicationTestUtils.buildInfo(0 /* uid */, "app1", FLAG_SYSTEM,
+                                0 /* targetSdkVersion */)));
+        final List<ResolveInfo> list = mock(List.class);
+        when(list.size()).thenReturn(1);
+        when(mPackageManagerWrapper.queryIntentActivitiesAsUser(
+                any(Intent.class), anyInt(), anyInt()))
+                .thenReturn(list);
+
+        final String query = "app";
+
+        mLoader = new InstalledAppResultLoader(mContext, mPackageManagerWrapper, query);
+
+        assertThat(mLoader.loadInBackground().size()).isEqualTo(1);
+    }
+
+    @Test
+    public void query_matchingQuery_shouldNotReturnSystemAppIfNotLaunchable() {
+        when(mPackageManagerWrapper.getInstalledApplicationsAsUser(anyInt(), anyInt()))
+                .thenReturn(Arrays.asList(
+                        ApplicationTestUtils.buildInfo(0 /* uid */, "app1", FLAG_SYSTEM,
+                                0 /* targetSdkVersion */)));
+        when(mPackageManagerWrapper.queryIntentActivitiesAsUser(
+                any(Intent.class), anyInt(), anyInt()))
+                .thenReturn(null);
+
+        final String query = "app";
+
+        mLoader = new InstalledAppResultLoader(mContext, mPackageManagerWrapper, query);
+
+        assertThat(mLoader.loadInBackground()).isEmpty();
+        verify(mSiteMapManager, never())
+                .buildBreadCrumb(eq(mContext), anyString(), anyString());
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/search2/SavedQueryLoaderTest.java b/tests/robotests/src/com/android/settings/search2/SavedQueryLoaderTest.java
new file mode 100644
index 0000000..d975f0c
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/search2/SavedQueryLoaderTest.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.search2;
+
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.sqlite.SQLiteDatabase;
+
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settings.search.IndexDatabaseHelper;
+import com.android.settings.testutils.DatabaseTestUtils;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import java.util.List;
+
+import static com.google.common.truth.Truth.assertThat;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class SavedQueryLoaderTest {
+
+    private Context mContext;
+    private SQLiteDatabase mDb;
+    private SavedQueryLoader mLoader;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mDb = IndexDatabaseHelper.getInstance(mContext).getWritableDatabase();
+        mLoader = new SavedQueryLoader(mContext);
+        setUpDb();
+    }
+
+    @After
+    public void cleanUp() {
+        DatabaseTestUtils.clearDb();
+    }
+
+    @Test
+    public void loadInBackground_shouldReturnSavedQueries() {
+        final List<SearchResult> results = mLoader.loadInBackground();
+        assertThat(results.size()).isEqualTo(SavedQueryLoader.MAX_PROPOSED_SUGGESTIONS);
+        for (SearchResult result : results) {
+            assertThat(result.viewType).isEqualTo(ResultPayload.PayloadType.SAVED_QUERY);
+        }
+    }
+
+    private void setUpDb() {
+        final long now = System.currentTimeMillis();
+        for (int i = 0; i < SavedQueryLoader.MAX_PROPOSED_SUGGESTIONS + 2; i++) {
+            ContentValues values = new ContentValues();
+            values.put(IndexDatabaseHelper.SavedQueriesColumns.QUERY, String.valueOf(i));
+            values.put(IndexDatabaseHelper.SavedQueriesColumns.TIME_STAMP, now);
+            mDb.replaceOrThrow(IndexDatabaseHelper.Tables.TABLE_SAVED_QUERIES, null, values);
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/search2/SavedQueryPayloadTest.java b/tests/robotests/src/com/android/settings/search2/SavedQueryPayloadTest.java
new file mode 100644
index 0000000..daa6d5e
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/search2/SavedQueryPayloadTest.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.search2;
+
+
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.annotation.Config;
+
+import static com.google.common.truth.Truth.assertThat;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class SavedQueryPayloadTest {
+
+    private SavedQueryPayload mPayload;
+
+    @Test
+    public void getType_shouldBeSavedQueryType() {
+        mPayload = new SavedQueryPayload("Test");
+        assertThat(mPayload.getType()).isEqualTo(ResultPayload.PayloadType.SAVED_QUERY);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/search2/SavedQueryRecorderTest.java b/tests/robotests/src/com/android/settings/search2/SavedQueryRecorderTest.java
new file mode 100644
index 0000000..c56ecce
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/search2/SavedQueryRecorderTest.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.search2;
+
+
+import android.content.Context;
+
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settings.testutils.DatabaseTestUtils;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import java.util.List;
+
+import static com.google.common.truth.Truth.assertThat;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class SavedQueryRecorderTest {
+
+    private Context mContext;
+    private SavedQueryRecorder mRecorder;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+    }
+
+    @After
+    public void cleanUp() {
+        DatabaseTestUtils.clearDb();
+    }
+
+    @Test
+    public void canSaveQueryToDb() {
+        final String query = "test";
+        mRecorder = new SavedQueryRecorder(mContext, query);
+
+        mRecorder.loadInBackground();
+
+        final SavedQueryLoader loader = new SavedQueryLoader(mContext);
+        List<SearchResult> results = loader.loadInBackground();
+
+        assertThat(results.size()).isEqualTo(1);
+        assertThat(results.get(0).title).isEqualTo(query);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/search2/SearchFragmentTest.java b/tests/robotests/src/com/android/settings/search2/SearchFragmentTest.java
index 64d602e..2d4ac54 100644
--- a/tests/robotests/src/com/android/settings/search2/SearchFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/search2/SearchFragmentTest.java
@@ -17,6 +17,7 @@
 package com.android.settings.search2;
 
 import android.content.Context;
+import android.content.Loader;
 import android.os.Bundle;
 
 import com.android.internal.logging.nano.MetricsProto;
@@ -35,10 +36,14 @@
 import org.robolectric.annotation.Config;
 import org.robolectric.util.ActivityController;
 
+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.never;
+import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
@@ -52,6 +57,9 @@
     private DatabaseResultLoader mDatabaseResultLoader;
     @Mock
     private InstalledAppResultLoader mInstalledAppResultLoader;
+    @Mock
+    private SavedQueryLoader mSavedQueryLoader;
+
     private FakeFeatureFactory mFeatureFactory;
 
     @Before
@@ -65,6 +73,8 @@
         when(mFeatureFactory.searchFeatureProvider
                 .getInstalledAppSearchLoader(any(Context.class), anyString()))
                 .thenReturn(mInstalledAppResultLoader);
+        when(mFeatureFactory.searchFeatureProvider.getSavedQueryLoader(any(Context.class)))
+                .thenReturn(mSavedQueryLoader);
     }
 
     @Test
@@ -91,6 +101,28 @@
     }
 
     @Test
+    public void screenRotateEmptyString_ShouldNotCrash() {
+        final Bundle bundle = new Bundle();
+        ActivityController<SearchActivity> activityController =
+                Robolectric.buildActivity(SearchActivity.class);
+        activityController.setup();
+        SearchFragment fragment = (SearchFragment) activityController.get().getFragmentManager()
+                .findFragmentById(R.id.main_content);
+
+        fragment.mQuery = "";
+
+        activityController.saveInstanceState(bundle).pause().stop().destroy();
+
+        activityController = Robolectric.buildActivity(SearchActivity.class);
+        activityController.setup(bundle);
+
+        verify(mFeatureFactory.searchFeatureProvider)
+                .getDatabaseSearchLoader(any(Context.class), anyString());
+        verify(mFeatureFactory.searchFeatureProvider)
+                .getInstalledAppSearchLoader(any(Context.class), anyString());
+    }
+
+    @Test
     public void queryTextChange_shouldTriggerLoader() {
         final String testQuery = "test";
         ActivityController<SearchActivity> activityController =
@@ -113,4 +145,37 @@
         verify(mFeatureFactory.searchFeatureProvider)
                 .getInstalledAppSearchLoader(any(Context.class), anyString());
     }
+
+    @Test
+    public void queryTextChangeToEmpty_shouldTriggerSavedQueryLoader() {
+        ActivityController<SearchActivity> activityController =
+                Robolectric.buildActivity(SearchActivity.class);
+        activityController.setup();
+        SearchFragment fragment = (SearchFragment) activityController.get().getFragmentManager()
+                .findFragmentById(R.id.main_content);
+
+        fragment.onQueryTextChange("");
+        activityController.get().onBackPressed();
+        activityController.pause().stop().destroy();
+
+        verify(mFeatureFactory.searchFeatureProvider, never())
+                .getDatabaseSearchLoader(any(Context.class), anyString());
+        verify(mFeatureFactory.searchFeatureProvider, never())
+                .getInstalledAppSearchLoader(any(Context.class), anyString());
+        // Saved query loaded 2 times: fragment start, and query change to empty.
+        verify(mFeatureFactory.searchFeatureProvider, times(2))
+                .getSavedQueryLoader(any(Context.class));
+    }
+
+    @Test
+    public void updateIndex_TriggerOnCreate() {
+        ActivityController<SearchActivity> activityController =
+                Robolectric.buildActivity(SearchActivity.class);
+        activityController.setup();
+        SearchFragment fragment = (SearchFragment) activityController.get().getFragmentManager()
+                .findFragmentById(R.id.main_content);
+
+        fragment.onAttach(null);
+        verify(mFeatureFactory.searchFeatureProvider).updateIndex(any(Context.class));
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/search2/SiteMapManagerTest.java b/tests/robotests/src/com/android/settings/search2/SiteMapManagerTest.java
new file mode 100644
index 0000000..b8ac8fe
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/search2/SiteMapManagerTest.java
@@ -0,0 +1,145 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.search2;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.sqlite.SQLiteDatabase;
+import android.os.Bundle;
+
+import com.android.settings.SettingsActivity;
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settings.dashboard.SiteMapManager;
+import com.android.settings.search.IndexDatabaseHelper;
+import com.android.settings.search.IndexDatabaseHelper.SiteMapColumns;
+import com.android.settings.system.SystemDashboardFragment;
+import com.android.settings.testutils.DatabaseTestUtils;
+import com.android.settings.testutils.FakeFeatureFactory;
+import com.android.settingslib.drawer.CategoryKey;
+import com.android.settingslib.drawer.DashboardCategory;
+import com.android.settingslib.drawer.Tile;
+
+import org.junit.After;
+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.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import java.util.Arrays;
+import java.util.List;
+
+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 SiteMapManagerTest {
+
+    private static final int STATIC_DB_DEPTH = 4;
+    private static final String CLASS_PREFIX = "class_";
+    private static final String TITLE_PREFIX = "title_";
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mMockContext;
+    private Context mContext;
+    private SQLiteDatabase mDb;
+    private SiteMapManager mSiteMapManager;
+    private FakeFeatureFactory mFeatureFactory;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        FakeFeatureFactory.setupForTest(mMockContext);
+        mFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mMockContext);
+
+        mContext = RuntimeEnvironment.application;
+        mDb = IndexDatabaseHelper.getInstance(mContext).getWritableDatabase();
+        buildDb();
+        mSiteMapManager = new SiteMapManager();
+    }
+
+    @After
+    public void cleanUp() {
+        DatabaseTestUtils.clearDb();
+    }
+
+    @Test
+    public void buildBreadCrumb_onlyFromSiteMapDb_breadcrumbShouldLinkUp() {
+        List<String> breadcrumb = mSiteMapManager.buildBreadCrumb(mContext,
+                CLASS_PREFIX + 0, TITLE_PREFIX + 0);
+        assertThat(breadcrumb.size()).isEqualTo(STATIC_DB_DEPTH + 1);
+        for (int i = 0; i < STATIC_DB_DEPTH; i++) {
+            assertThat(breadcrumb.get(i)).isEqualTo(TITLE_PREFIX + (STATIC_DB_DEPTH - i));
+        }
+    }
+
+    @Test
+    public void buildBreadCrumb_fromSiteMapDbAndDashboardProvider_breadcrumbShouldLinkUp() {
+        final String iaClass = SystemDashboardFragment.class.getName();
+        final String iaTitle = "ia_title";
+
+        ContentValues index = new ContentValues();
+        index.put(IndexDatabaseHelper.IndexColumns.CLASS_NAME, iaClass);
+        index.put(IndexDatabaseHelper.IndexColumns.SCREEN_TITLE, iaTitle);
+        mDb.replaceOrThrow(IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX, null, index);
+
+        final DashboardCategory category = new DashboardCategory();
+        category.key = CategoryKey.CATEGORY_SYSTEM;
+        category.tiles.add(new Tile());
+        category.tiles.get(0).title = TITLE_PREFIX + STATIC_DB_DEPTH;
+        category.tiles.get(0).metaData = new Bundle();
+        category.tiles.get(0).metaData.putString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS,
+                CLASS_PREFIX + STATIC_DB_DEPTH);
+        when(mFeatureFactory.dashboardFeatureProvider.getAllCategories())
+                .thenReturn(Arrays.asList(category));
+
+        final List<String> breadcrumb = mSiteMapManager.buildBreadCrumb(mContext,
+                CLASS_PREFIX + 0, TITLE_PREFIX + 0);
+
+        assertThat(breadcrumb.size()).isEqualTo(STATIC_DB_DEPTH + 2);
+        assertThat(breadcrumb.get(0))
+                .isEqualTo(iaTitle);
+    }
+
+    @Test
+    public void buildBreadCrumb_classNotIndexed_shouldNotHaveBreadCrumb() {
+        final String title = "wrong_title";
+
+        final List<String> breadcrumb = mSiteMapManager.buildBreadCrumb(mContext,
+                "wrong_class", title);
+
+        assertThat(breadcrumb.size()).isEqualTo(1);
+        assertThat(breadcrumb.get(0)).isEqualTo(title);
+    }
+
+    private void buildDb() {
+        for (int i = 0; i < STATIC_DB_DEPTH; i++) {
+            final ContentValues siteMapPair = new ContentValues();
+            siteMapPair.put(SiteMapColumns.DOCID, i);
+            siteMapPair.put(SiteMapColumns.PARENT_CLASS, CLASS_PREFIX + (i + 1));
+            siteMapPair.put(SiteMapColumns.PARENT_TITLE, TITLE_PREFIX + (i + 1));
+            siteMapPair.put(SiteMapColumns.CHILD_CLASS, CLASS_PREFIX + i);
+            siteMapPair.put(SiteMapColumns.CHILD_TITLE, TITLE_PREFIX + i);
+            mDb.replaceOrThrow(IndexDatabaseHelper.Tables.TABLE_SITE_MAP, null, siteMapPair);
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/security/SecurityFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/security/SecurityFeatureProviderImplTest.java
index f64054c..293c0ae 100644
--- a/tests/robotests/src/com/android/settings/security/SecurityFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/security/SecurityFeatureProviderImplTest.java
@@ -25,6 +25,7 @@
 import android.os.Bundle;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceScreen;
+import android.util.Pair;
 
 import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
@@ -77,9 +78,9 @@
     @Implements(com.android.settingslib.drawer.TileUtils.class)
     public static class TileUtilsMock {
         @Implementation
-        public static int getIconFromUri(Context context, String uriString,
+        public static Pair getIconFromUri(Context context, String packageName, String uriString,
                 Map<String, IContentProvider> providerMap) {
-            return 161803;
+            return Pair.create("package", 161803);
         }
 
         @Implementation
diff --git a/tests/robotests/src/com/android/settings/survey/SurveyMixinTest.java b/tests/robotests/src/com/android/settings/survey/SurveyMixinTest.java
index 20c50ce..73fe09e 100644
--- a/tests/robotests/src/com/android/settings/survey/SurveyMixinTest.java
+++ b/tests/robotests/src/com/android/settings/survey/SurveyMixinTest.java
@@ -1,5 +1,6 @@
 package com.android.settings.survey;
 
+import static com.google.common.truth.Truth.assertThat;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.never;
@@ -11,11 +12,15 @@
 import android.app.Activity;
 import android.content.BroadcastReceiver;
 import android.content.Context;
+import android.content.IntentFilter;
+import android.support.v4.content.LocalBroadcastManager;
 import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settings.core.InstrumentedPreferenceFragment;
 import com.android.settings.overlay.SurveyFeatureProvider;
 import com.android.settings.testutils.FakeFeatureFactory;
+import java.util.ArrayList;
+import java.util.HashMap;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -24,6 +29,7 @@
 import org.robolectric.Robolectric;
 import org.robolectric.RuntimeEnvironment;
 import org.robolectric.annotation.Config;
+import org.robolectric.util.ReflectionHelpers;
 
 @RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
@@ -102,7 +108,7 @@
     }
 
     @Test
-    public void onPause_removesReceiverWhenInstantiated() {
+    public void onPause_removesReceiverIfPreviouslySet() {
         // Pretend there is a survey in memory
         when(mProvider.getSurveyExpirationDate(any(), any())).thenReturn(-1L);
 
@@ -110,12 +116,16 @@
         Activity temp = Robolectric.setupActivity(Activity.class);
         when(mFragment.getActivity()).thenReturn(temp);
         when(mProvider.createAndRegisterReceiver(any())).thenReturn(mReceiver);
+        LocalBroadcastManager manager = LocalBroadcastManager.getInstance(temp);
         SurveyMixin mixin = new SurveyMixin(mFragment, FAKE_KEY);
         mixin.onResume();
+        manager.registerReceiver(mReceiver, new IntentFilter());
         mixin.onPause();
 
         // Verify we remove the receiver
-        verify(mProvider, times(1)).unregisterReceiver(any(), any());
+        HashMap<BroadcastReceiver, ArrayList<IntentFilter>> map =
+                ReflectionHelpers.getField(manager, "mReceivers");
+        assertThat(map.containsKey(mReceiver)).isFalse();
     }
 
     @Test
@@ -129,15 +139,15 @@
         SurveyMixin mixin = new SurveyMixin(mFragment, FAKE_KEY);
         mixin.onPause();
 
-        // Verify we do nothing
-        verify(mProvider, never()).unregisterReceiver(any(), any());
+        // Verify we do nothing;
+        verify(mProvider, never()).showSurveyIfAvailable(any(), any());
 
         // pretend the activity died before onPause
         when(mFragment.getActivity()).thenReturn(null);
         mixin.onPause();
 
         // Verify we do nothing
-        verify(mProvider, never()).unregisterReceiver(any(), any());
+        verify(mProvider, never()).showSurveyIfAvailable(any(), any());
     }
 
 }
diff --git a/tests/robotests/src/com/android/settings/testutils/ApplicationTestUtils.java b/tests/robotests/src/com/android/settings/testutils/ApplicationTestUtils.java
index 8789928..352d128 100644
--- a/tests/robotests/src/com/android/settings/testutils/ApplicationTestUtils.java
+++ b/tests/robotests/src/com/android/settings/testutils/ApplicationTestUtils.java
@@ -15,7 +15,6 @@
 package com.android.settings.testutils;
 
 import android.content.pm.ApplicationInfo;
-import android.os.UserHandle;
 
 /**
  * Helper for mocking installed applications.
@@ -25,19 +24,21 @@
      * Create and populate an {@link android.content.pm.ApplicationInfo} object that describes an
      * installed app.
      *
-     * @param userId The user id that this app is installed for. Typical values are 0 for the
-     *         system user and 10, 11, 12... for secondary users.
+     * @param uid The app's uid
      * @param packageName The app's package name.
      * @param flags Flags describing the app. See {@link android.content.pm.ApplicationInfo#flags}
      *         for possible values.
+     * @param targetSdkVersion The app's target SDK version
      *
      * @see android.content.pm.ApplicationInfo
      */
-    public static ApplicationInfo buildInfo(int userId, String packageName, int flags) {
+    public static ApplicationInfo buildInfo(int uid, String packageName, int flags,
+            int targetSdkVersion) {
         final ApplicationInfo info = new ApplicationInfo();
-        info.uid = UserHandle.getUid(userId, 1);
+        info.uid = uid;
         info.packageName = packageName;
         info.flags = flags;
+        info.targetSdkVersion = targetSdkVersion;
         return info;
     }
 }
diff --git a/tests/robotests/src/com/android/settings/testutils/DatabaseTestUtils.java b/tests/robotests/src/com/android/settings/testutils/DatabaseTestUtils.java
new file mode 100644
index 0000000..8fbe1c9
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/testutils/DatabaseTestUtils.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.testutils;
+
+import com.android.settings.search.IndexDatabaseHelper;
+
+import java.lang.reflect.Field;
+
+public class DatabaseTestUtils {
+
+    public static void clearDb() {
+        Field instance;
+        Class clazz = IndexDatabaseHelper.class;
+        try {
+            instance = clazz.getDeclaredField("sSingleton");
+            instance.setAccessible(true);
+            instance.set(null, null);
+        } catch (Exception e) {
+            throw new RuntimeException();
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java b/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java
index bc0894c..0352e0f 100644
--- a/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java
+++ b/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java
@@ -20,6 +20,7 @@
 import com.android.settings.applications.ApplicationFeatureProvider;
 import com.android.settings.core.instrumentation.MetricsFeatureProvider;
 import com.android.settings.dashboard.DashboardFeatureProvider;
+import com.android.settings.dashboard.SuggestionFeatureProvider;
 import com.android.settings.enterprise.EnterprisePrivacyFeatureProvider;
 import com.android.settings.fuelgauge.PowerUsageFeatureProvider;
 import com.android.settings.localepicker.LocaleFeatureProvider;
@@ -49,6 +50,7 @@
     public final SearchFeatureProvider searchFeatureProvider;
     public final SurveyFeatureProvider surveyFeatureProvider;
     public final SecurityFeatureProvider securityFeatureProvider;
+    public final SuggestionFeatureProvider suggestionsFeatureProvider;
 
     /**
      * Call this in {@code @Before} method of the test class to use fake factory.
@@ -81,6 +83,12 @@
         searchFeatureProvider = mock(SearchFeatureProvider.class);
         surveyFeatureProvider = mock(SurveyFeatureProvider.class);
         securityFeatureProvider = mock(SecurityFeatureProvider.class);
+        suggestionsFeatureProvider = mock(SuggestionFeatureProvider.class);
+    }
+
+    @Override
+    public SuggestionFeatureProvider getSuggestionFeatureProvider() {
+        return suggestionsFeatureProvider;
     }
 
     @Override
diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/SettingsShadowSystemProperties.java b/tests/robotests/src/com/android/settings/testutils/shadow/SettingsShadowSystemProperties.java
new file mode 100644
index 0000000..e2a863a
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/testutils/shadow/SettingsShadowSystemProperties.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.testutils.shadow;
+
+import android.os.SystemProperties;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.shadows.ShadowSystemProperties;
+
+/**
+ * This class provides write capability to ShadowSystemProperties.
+ */
+@Implements(SystemProperties.class)
+public class SettingsShadowSystemProperties extends ShadowSystemProperties {
+
+    private static final Map<String, String> sValues = new HashMap<>();
+
+    @Implementation
+    public static synchronized boolean getBoolean(String key, boolean def) {
+        if (sValues.containsKey(key)) {
+            String val = sValues.get(key);
+            return "y".equals(val) || "yes".equals(val) || "1".equals(val) || "true".equals(val)
+                || "on".equals(val);
+        }
+        return ShadowSystemProperties.getBoolean(key, def);
+    }
+
+    public static synchronized void set(String key, String val) {
+        sValues.put(key, val);
+    }
+
+    public static synchronized void clear() {
+        sValues.clear();
+    }
+
+}
diff --git a/tests/robotests/src/com/android/settings/trustagent/TrustAgentFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/trustagent/TrustAgentFeatureProviderImplTest.java
new file mode 100644
index 0000000..87f5ecd
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/trustagent/TrustAgentFeatureProviderImplTest.java
@@ -0,0 +1,80 @@
+/*
+ * 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.trustagent;
+
+import android.content.pm.ResolveInfo;
+import android.content.pm.ServiceInfo;
+import android.content.pm.PackageManager;
+
+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 static junit.framework.Assert.assertFalse;
+import static junit.framework.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class TrustAgentFeatureProviderImplTest {
+
+    private static final String CANNED_PACKAGE_NAME = "com.test.package";
+
+    @Mock
+    private PackageManager mPackageManager;
+
+    private TrustAgentManagerImpl mImpl;
+
+    @Before
+    public void setUp() throws PackageManager.NameNotFoundException {
+        MockitoAnnotations.initMocks(this);
+        mImpl = new TrustAgentManagerImpl();
+    }
+
+    @Test
+    public void shouldProvideTrust_doesProvideTrustWithPermission() {
+        when(mPackageManager.checkPermission(TrustAgentManager.PERMISSION_PROVIDE_AGENT,
+            CANNED_PACKAGE_NAME)).thenReturn(PackageManager.PERMISSION_GRANTED);
+
+        ServiceInfo serviceInfo = new ServiceInfo();
+        serviceInfo.packageName = CANNED_PACKAGE_NAME;
+        ResolveInfo resolveInfo = new ResolveInfo();
+        resolveInfo.serviceInfo = serviceInfo;
+
+        assertTrue(mImpl.shouldProvideTrust(resolveInfo, mPackageManager));
+    }
+
+    @Test
+    public void shouldProvideTrust_doesNotProvideTrustWithoutPermission() {
+        when(mPackageManager.checkPermission(TrustAgentManager.PERMISSION_PROVIDE_AGENT,
+            CANNED_PACKAGE_NAME)).thenReturn(PackageManager.PERMISSION_DENIED);
+
+        ServiceInfo serviceInfo = new ServiceInfo();
+        serviceInfo.packageName = CANNED_PACKAGE_NAME;
+        ResolveInfo resolveInfo = new ResolveInfo();
+        resolveInfo.serviceInfo = serviceInfo;
+
+        assertFalse(mImpl.shouldProvideTrust(resolveInfo, mPackageManager));
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/webview/WebViewAppListAdapterTest.java b/tests/robotests/src/com/android/settings/webview/WebViewAppListAdapterTest.java
new file mode 100644
index 0000000..a8ab5d4
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/webview/WebViewAppListAdapterTest.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.webview;
+
+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.Matchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.pm.UserInfo;
+
+import com.android.settings.R;
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+
+import java.util.Arrays;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class WebViewAppListAdapterTest {
+    private Context mContext = RuntimeEnvironment.application;
+
+    private final static UserInfo FIRST_USER = new UserInfo(0, "FIRST_USER", 0);
+    private final static UserInfo SECOND_USER = new UserInfo(0, "SECOND_USER", 0);
+
+    private final static String DEFAULT_PACKAGE_NAME = "DEFAULT_PACKAGE_NAME";
+
+    @Test
+    public void testDisabledReasonNullIfPackagesOk() {
+        UserPackageWrapper packageForFirstUser = mock(UserPackageWrapper.class);
+        when(packageForFirstUser.isEnabledPackage()).thenReturn(true);
+        when(packageForFirstUser.isInstalledPackage()).thenReturn(true);
+
+        UserPackageWrapper packageForSecondUser = mock(UserPackageWrapper.class);
+        when(packageForSecondUser.isEnabledPackage()).thenReturn(true);
+        when(packageForSecondUser.isInstalledPackage()).thenReturn(true);
+
+        WebViewUpdateServiceWrapper wvusWrapper = mock(WebViewUpdateServiceWrapper.class);
+        when(wvusWrapper.getPackageInfosAllUsers(
+                any(), eq(DEFAULT_PACKAGE_NAME))).thenReturn(
+                        Arrays.asList(packageForFirstUser, packageForSecondUser));
+
+        assertThat(WebViewAppListAdapter.getDisabledReason(
+                wvusWrapper, mContext, DEFAULT_PACKAGE_NAME)).isNull();
+    }
+
+    @Test
+    public void testDisabledReasonForSingleUserDisabledPackage() {
+        UserPackageWrapper packageForFirstUser = mock(UserPackageWrapper.class);
+        when(packageForFirstUser.isEnabledPackage()).thenReturn(false);
+        when(packageForFirstUser.isInstalledPackage()).thenReturn(true);
+        when(packageForFirstUser.getUserInfo()).thenReturn(FIRST_USER);
+
+        WebViewUpdateServiceWrapper wvusWrapper = mock(WebViewUpdateServiceWrapper.class);
+        when(wvusWrapper.getPackageInfosAllUsers(any(), eq(DEFAULT_PACKAGE_NAME)
+                )).thenReturn(Arrays.asList(packageForFirstUser));
+
+        assertThat(WebViewAppListAdapter.getDisabledReason(wvusWrapper, mContext,
+                DEFAULT_PACKAGE_NAME)).isEqualTo("Disabled for user " + FIRST_USER.name + "\n");
+    }
+
+    @Test
+    public void testDisabledReasonForSingleUserUninstalledPackage() {
+        UserPackageWrapper packageForFirstUser = mock(UserPackageWrapper.class);
+        when(packageForFirstUser.isEnabledPackage()).thenReturn(true);
+        when(packageForFirstUser.isInstalledPackage()).thenReturn(false);
+        when(packageForFirstUser.getUserInfo()).thenReturn(FIRST_USER);
+
+        WebViewUpdateServiceWrapper wvusWrapper = mock(WebViewUpdateServiceWrapper.class);
+        when(wvusWrapper.getPackageInfosAllUsers(any(), eq(DEFAULT_PACKAGE_NAME)
+                )).thenReturn(Arrays.asList(packageForFirstUser));
+
+        assertThat(WebViewAppListAdapter.getDisabledReason(wvusWrapper, mContext,
+                DEFAULT_PACKAGE_NAME)).isEqualTo("Uninstalled for user " + FIRST_USER.name + "\n");
+    }
+
+    @Test
+    public void testDisabledReasonSeveralUsers() {
+        UserPackageWrapper packageForFirstUser = mock(UserPackageWrapper.class);
+        when(packageForFirstUser.isEnabledPackage()).thenReturn(false);
+        when(packageForFirstUser.isInstalledPackage()).thenReturn(true);
+        when(packageForFirstUser.getUserInfo()).thenReturn(FIRST_USER);
+
+        UserPackageWrapper packageForSecondUser = mock(UserPackageWrapper.class);
+        when(packageForSecondUser.isEnabledPackage()).thenReturn(true);
+        when(packageForSecondUser.isInstalledPackage()).thenReturn(false);
+        when(packageForSecondUser.getUserInfo()).thenReturn(SECOND_USER);
+
+        WebViewUpdateServiceWrapper wvusWrapper = mock(WebViewUpdateServiceWrapper.class);
+        when(wvusWrapper.getPackageInfosAllUsers(any(), eq(DEFAULT_PACKAGE_NAME)
+                )).thenReturn(Arrays.asList(packageForFirstUser, packageForSecondUser));
+
+        final String EXPECTED_DISABLED_REASON = String.format(
+                "Disabled for user %s\nUninstalled for user %s\n",
+                FIRST_USER.name, SECOND_USER.name);
+        assertThat(WebViewAppListAdapter.getDisabledReason(
+                wvusWrapper, mContext,DEFAULT_PACKAGE_NAME)).isEqualTo(EXPECTED_DISABLED_REASON);
+    }
+
+    /**
+     * Ensure we only proclaim a package as uninstalled for a certain user if it's both uninstalled
+     * and disabled.
+     */
+    @Test
+    public void testDisabledReasonUninstalledAndDisabled() {
+        UserPackageWrapper packageForFirstUser = mock(UserPackageWrapper.class);
+        when(packageForFirstUser.isEnabledPackage()).thenReturn(false);
+        when(packageForFirstUser.isInstalledPackage()).thenReturn(false);
+        when(packageForFirstUser.getUserInfo()).thenReturn(FIRST_USER);
+
+        UserPackageWrapper packageForSecondUser = mock(UserPackageWrapper.class);
+        when(packageForSecondUser.isEnabledPackage()).thenReturn(true);
+        when(packageForSecondUser.isInstalledPackage()).thenReturn(true);
+        when(packageForSecondUser.getUserInfo()).thenReturn(SECOND_USER);
+
+        WebViewUpdateServiceWrapper wvusWrapper = mock(WebViewUpdateServiceWrapper.class);
+        when(wvusWrapper.getPackageInfosAllUsers(any(), eq(DEFAULT_PACKAGE_NAME)
+                )).thenReturn(Arrays.asList(packageForFirstUser, packageForSecondUser));
+
+        final String EXPECTED_DISABLED_REASON = String.format(
+                "Uninstalled for user %s\n", FIRST_USER.name);
+        assertThat(WebViewAppListAdapter.getDisabledReason(wvusWrapper, mContext,
+                DEFAULT_PACKAGE_NAME)).isEqualTo(EXPECTED_DISABLED_REASON);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/webview/WebViewAppPickerTest.java b/tests/robotests/src/com/android/settings/webview/WebViewAppPickerTest.java
new file mode 100644
index 0000000..8ace8aa
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/webview/WebViewAppPickerTest.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.webview;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.robolectric.shadows.ShadowView.clickOn;
+import static org.robolectric.Shadows.shadowOf;
+
+import android.app.Activity;
+import android.content.pm.ApplicationInfo;
+import android.view.View;
+
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+
+import java.util.Arrays;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.Robolectric;
+import org.robolectric.annotation.Config;
+import org.robolectric.util.ActivityController;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class WebViewAppPickerTest {
+
+  private static final String DEFAULT_PACKAGE_NAME = "DEFAULT_PACKAGE_NAME";
+
+  private static ApplicationInfo createApplicationInfo(String packageName) {
+      ApplicationInfo ai = new ApplicationInfo();
+      ai.packageName = packageName;
+      return ai;
+  }
+
+  @Test
+  public void testClickingItemChangesProvider() {
+      ActivityController<WebViewAppPicker> controller =
+              Robolectric.buildActivity(WebViewAppPicker.class);
+      WebViewAppPicker webviewAppPicker = controller.get();
+
+      WebViewUpdateServiceWrapper wvusWrapper = mock(WebViewUpdateServiceWrapper.class);
+      when(wvusWrapper.getValidWebViewApplicationInfos(any())).thenReturn(
+              Arrays.asList(createApplicationInfo(DEFAULT_PACKAGE_NAME)));
+      when(wvusWrapper.setWebViewProvider(eq(DEFAULT_PACKAGE_NAME))).thenReturn(true);
+
+      webviewAppPicker.setWebViewUpdateServiceWrapper(wvusWrapper);
+
+      controller.create().start().postCreate(null).resume().visible();
+      WebViewApplicationInfo firstItem =
+              (WebViewApplicationInfo) webviewAppPicker.getListView().getItemAtPosition(0);
+      assertThat(firstItem.info.packageName).isEqualTo(DEFAULT_PACKAGE_NAME);
+
+      webviewAppPicker.onListItemClick(webviewAppPicker.getListView(), null, 0, 0);
+
+      verify(wvusWrapper, times(1)).setWebViewProvider(eq(DEFAULT_PACKAGE_NAME));
+      assertThat(shadowOf(webviewAppPicker).getResultCode()).isEqualTo(Activity.RESULT_OK);
+      verify(wvusWrapper, never()).showInvalidChoiceToast(any());
+  }
+
+  @Test
+  public void testFailingPackageChangeReturnsCancelled() {
+      ActivityController<WebViewAppPicker> controller =
+              Robolectric.buildActivity(WebViewAppPicker.class);
+      WebViewAppPicker webviewAppPicker = controller.get();
+
+      WebViewUpdateServiceWrapper wvusWrapper = mock(WebViewUpdateServiceWrapper.class);
+      when(wvusWrapper.getValidWebViewApplicationInfos(any())).thenReturn(
+              Arrays.asList(createApplicationInfo(DEFAULT_PACKAGE_NAME)));
+      when(wvusWrapper.setWebViewProvider(eq(DEFAULT_PACKAGE_NAME))).thenReturn(false);
+
+      webviewAppPicker.setWebViewUpdateServiceWrapper(wvusWrapper);
+
+      controller.create().start().postCreate(null).resume().visible();
+      WebViewApplicationInfo firstItem =
+              (WebViewApplicationInfo) webviewAppPicker.getListView().getItemAtPosition(0);
+      assertThat(firstItem.info.packageName).isEqualTo(DEFAULT_PACKAGE_NAME);
+
+      webviewAppPicker.onListItemClick(webviewAppPicker.getListView(), null, 0, 0);
+
+      verify(wvusWrapper, times(1)).setWebViewProvider(eq(DEFAULT_PACKAGE_NAME));
+      assertThat(shadowOf(webviewAppPicker).getResultCode()).isEqualTo(Activity.RESULT_CANCELED);
+      verify(wvusWrapper, times(1)).showInvalidChoiceToast(any());
+  }
+}
diff --git a/tests/robotests/src/com/android/settings/webview/WebViewAppPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/webview/WebViewAppPreferenceControllerTest.java
new file mode 100644
index 0000000..e0a32a4
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/webview/WebViewAppPreferenceControllerTest.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+package com.android.settings.webview;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+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.junit.runners.JUnit4;
+import org.mockito.Answers;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.annotation.Config;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class WebViewAppPreferenceControllerTest {
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+
+    @Mock
+    private PreferenceScreen mPreferenceScreen;
+    @Mock
+    private Preference mPreference;
+
+    private static final String DEFAULT_PACKAGE_NAME = "DEFAULT_PACKAGE_NAME";
+
+    @Before public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        when(mPreferenceScreen.findPreference(any())).thenReturn(mPreference);
+    }
+
+    @Test public void testOnActivityResultUpdatesStateOnSuccess() {
+        WebViewUpdateServiceWrapper wvusWrapper = mock(WebViewUpdateServiceWrapper.class);
+        WebViewAppPreferenceController controller =
+                spy(new WebViewAppPreferenceController(mContext, wvusWrapper));
+
+        controller.displayPreference(mPreferenceScreen); // Makes sure Preference is non-null
+        controller.onActivityResult(Activity.RESULT_OK, new Intent(DEFAULT_PACKAGE_NAME));
+        verify(controller, times(1)).updateState(any());
+    }
+
+    @Test public void testOnActivityResultWithFailure() {
+        WebViewUpdateServiceWrapper wvusWrapper = mock(WebViewUpdateServiceWrapper.class);
+
+        WebViewAppPreferenceController controller =
+                spy(new WebViewAppPreferenceController(mContext, wvusWrapper));
+
+        controller.displayPreference(mPreferenceScreen); // Makes sure Preference is non-null
+        controller.onActivityResult(Activity.RESULT_CANCELED, new Intent(DEFAULT_PACKAGE_NAME));
+        verify(controller, times(1)).updateState(any());
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/widget/MasterSwitchPreferenceTest.java b/tests/robotests/src/com/android/settings/widget/MasterSwitchPreferenceTest.java
new file mode 100644
index 0000000..8cf3389
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/widget/MasterSwitchPreferenceTest.java
@@ -0,0 +1,148 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.widget;
+
+import android.content.Context;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceViewHolder;
+import android.support.v7.preference.Preference.OnPreferenceChangeListener;
+import android.view.LayoutInflater;
+import android.widget.CompoundButton.OnCheckedChangeListener;
+import android.widget.Switch;
+
+import com.android.settings.R;
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+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.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class MasterSwitchPreferenceTest {
+
+    private Context mContext;
+
+    @Before
+    public void setUp() {
+        mContext = ShadowApplication.getInstance().getApplicationContext();
+    }
+
+    @Test
+    public void createNewPreference_shouldSetLayout() {
+        final MasterSwitchPreference preference = new MasterSwitchPreference(mContext);
+
+        assertThat(preference.getWidgetLayoutResource()).isEqualTo(
+            R.layout.preference_widget_master_switch);
+    }
+
+    @Test
+    public void setChecked_shouldUpdateButtonCheckedState() {
+        final MasterSwitchPreference preference = new MasterSwitchPreference(mContext);
+        final PreferenceViewHolder holder = new PreferenceViewHolder(LayoutInflater.from(mContext)
+            .inflate(R.layout.preference_widget_master_switch, null));
+        final Switch toggle = (Switch) holder.itemView.findViewById(R.id.switchWidget);
+        preference.onBindViewHolder(holder);
+
+        preference.setChecked(true);
+        assertThat(toggle.isChecked()).isTrue();
+
+        preference.setChecked(false);
+        assertThat(toggle.isChecked()).isFalse();
+    }
+
+    @Test
+    public void setSwitchEnabled_shouldUpdateButtonEnabledState() {
+        final MasterSwitchPreference preference = new MasterSwitchPreference(mContext);
+        final PreferenceViewHolder holder = new PreferenceViewHolder(
+            LayoutInflater.from(mContext).inflate(R.layout.preference_widget_master_switch, null));
+        final Switch toggle = (Switch) holder.itemView.findViewById(R.id.switchWidget);
+        preference.onBindViewHolder(holder);
+
+        preference.setSwitchEnabled(true);
+        assertThat(toggle.isEnabled()).isTrue();
+
+        preference.setSwitchEnabled(false);
+        assertThat(toggle.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void toggleButtonOn_shouldNotifyChecked() {
+        final MasterSwitchPreference preference = new MasterSwitchPreference(mContext);
+        final PreferenceViewHolder holder = new PreferenceViewHolder(
+            LayoutInflater.from(mContext).inflate(R.layout.preference_widget_master_switch, null));
+        final Switch toggle = (Switch) holder.itemView.findViewById(R.id.switchWidget);
+        final OnPreferenceChangeListener listener = mock(OnPreferenceChangeListener.class);
+        preference.setOnPreferenceChangeListener(listener);
+        preference.onBindViewHolder(holder);
+
+        toggle.setChecked(true);
+        verify(listener).onPreferenceChange(preference, true);
+    }
+
+    @Test
+    public void toggleButtonOff_shouldNotifyUnchecked() {
+        final MasterSwitchPreference preference = new MasterSwitchPreference(mContext);
+        final PreferenceViewHolder holder = new PreferenceViewHolder(
+            LayoutInflater.from(mContext).inflate(R.layout.preference_widget_master_switch, null));
+        final Switch toggle = (Switch) holder.itemView.findViewById(R.id.switchWidget);
+        final OnPreferenceChangeListener listener = mock(OnPreferenceChangeListener.class);
+        preference.setChecked(true);
+        preference.setOnPreferenceChangeListener(listener);
+        preference.onBindViewHolder(holder);
+
+        toggle.setChecked(false);
+        verify(listener).onPreferenceChange(preference, false);
+    }
+
+    @Test
+    public void setDisabledByAdmin_hasEnforcedAdmin_shouldDisableButton() {
+        final MasterSwitchPreference preference = new MasterSwitchPreference(mContext);
+        final PreferenceViewHolder holder = new PreferenceViewHolder(
+            LayoutInflater.from(mContext).inflate(R.layout.preference_widget_master_switch, null));
+        final Switch toggle = (Switch) holder.itemView.findViewById(R.id.switchWidget);
+        toggle.setEnabled(true);
+        preference.onBindViewHolder(holder);
+
+        preference.setDisabledByAdmin(mock(EnforcedAdmin.class));
+        assertThat(toggle.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void setDisabledByAdmin_noEnforcedAdmin_shouldEnaableButton() {
+        final MasterSwitchPreference preference = new MasterSwitchPreference(mContext);
+        final PreferenceViewHolder holder = new PreferenceViewHolder(
+            LayoutInflater.from(mContext).inflate(R.layout.preference_widget_master_switch, null));
+        final Switch toggle = (Switch) holder.itemView.findViewById(R.id.switchWidget);
+        toggle.setEnabled(false);
+        preference.onBindViewHolder(holder);
+
+        preference.setDisabledByAdmin(null);
+        assertThat(toggle.isEnabled()).isTrue();
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/widget/SummaryUpdaterTest.java b/tests/robotests/src/com/android/settings/widget/SummaryUpdaterTest.java
new file mode 100644
index 0000000..e57d25a
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/widget/SummaryUpdaterTest.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.widget;
+
+import android.content.Context;
+
+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.Answers;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import static org.mockito.Mockito.mock;
+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 SummaryUpdaterTest {
+
+    private Context mContext;
+
+    private SummaryUpdaterTestable mSummaryUpdater;
+    @Mock
+    private SummaryListener mListener;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application.getApplicationContext();
+        mSummaryUpdater = new SummaryUpdaterTestable(mContext, mListener);
+    }
+
+    @Test
+    public void notifyChangeIfNeeded_fistTimeInit_shouldNotifyChange() {
+        final String summary = "initialized";
+        mSummaryUpdater.setTestSummary(summary);
+        mSummaryUpdater.notifyChangeIfNeeded();
+
+        verify(mListener).onSummaryChanged(summary);
+    }
+
+    @Test
+    public void notifyChangeIfNeeded_summaryUpdated_shouldNotifyChange() {
+        final String summaryInit = "initialized";
+        mSummaryUpdater.setTestSummary(summaryInit);
+        mSummaryUpdater.notifyChangeIfNeeded();
+        final String summaryUpdate = "updated";
+
+        mSummaryUpdater.setTestSummary(summaryUpdate);
+        mSummaryUpdater.notifyChangeIfNeeded();
+
+        verify(mListener).onSummaryChanged(summaryUpdate);
+    }
+
+    @Test
+    public void notifyChangeIfNeeded_summaryNotUpdated_shouldOnlyNotifyChangeOnce() {
+        final String summaryInit = "initialized";
+        mSummaryUpdater.setTestSummary(summaryInit);
+        mSummaryUpdater.notifyChangeIfNeeded();
+        final String summaryUpdate = "updated";
+        mSummaryUpdater.setTestSummary(summaryUpdate);
+
+        mSummaryUpdater.notifyChangeIfNeeded();
+        mSummaryUpdater.notifyChangeIfNeeded();
+
+        verify(mListener, times(1)).onSummaryChanged(summaryUpdate);
+    }
+
+    private class SummaryListener implements SummaryUpdater.OnSummaryChangeListener {
+        String summary;
+
+        @Override
+        public void onSummaryChanged(String summary) {
+            this.summary = summary;
+        }
+    }
+
+    public final class SummaryUpdaterTestable extends SummaryUpdater {
+        private String mTestSummary;
+
+        SummaryUpdaterTestable(Context context, SummaryUpdater.OnSummaryChangeListener listener) {
+            super(context, listener);
+        }
+
+        @Override
+        public void register(boolean register) {
+        }
+
+        @Override
+        public void notifyChangeIfNeeded() {
+            super.notifyChangeIfNeeded();
+        }
+
+        @Override
+        public String getSummary() {
+            return mTestSummary;
+        }
+
+        public void setTestSummary(String summary) {
+            mTestSummary = summary;
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/wifi/SavedNetworkPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/SavedNetworkPreferenceControllerTest.java
deleted file mode 100644
index 657c21e..0000000
--- a/tests/robotests/src/com/android/settings/wifi/SavedNetworkPreferenceControllerTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.wifi;
-
-import android.content.Context;
-import android.net.wifi.WifiConfiguration;
-import android.net.wifi.WifiManager;
-
-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 java.util.List;
-
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-@RunWith(SettingsRobolectricTestRunner.class)
-@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
-public class SavedNetworkPreferenceControllerTest {
-
-    @Mock
-    private Context mContext;
-    @Mock
-    private WifiManager mWifiManager;
-
-    private SavedNetworkPreferenceController mController;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mController = new SavedNetworkPreferenceController(mContext, mWifiManager);
-    }
-
-    @Test
-    public void isAvailable_noSavedNetwork_shouldReturnFalse() {
-        when(mWifiManager.getConfiguredNetworks()).thenReturn(null);
-        assertThat(mController.isAvailable()).isFalse();
-    }
-
-    @Test
-    public void isAvailable_hasSavedNetwork_shouldReturnTrue() {
-        List<WifiConfiguration> configs = mock(List.class);
-        when(configs.isEmpty()).thenReturn(false);
-        when(mWifiManager.getConfiguredNetworks()).thenReturn(configs);
-
-        assertThat(mController.isAvailable()).isTrue();
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiMasterSwitchPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/WifiMasterSwitchPreferenceControllerTest.java
new file mode 100644
index 0000000..694fe0e
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/wifi/WifiMasterSwitchPreferenceControllerTest.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.wifi;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.IntentFilter;
+import android.net.wifi.WifiManager;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.Preference.OnPreferenceChangeListener;
+import android.support.v7.preference.PreferenceScreen;
+
+import com.android.settings.R;
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settings.core.instrumentation.MetricsFeatureProvider;
+import com.android.settings.testutils.FakeFeatureFactory;
+import com.android.settings.widget.MasterSwitchPreference;
+
+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.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.spy;
+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 WifiMasterSwitchPreferenceControllerTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    Context mMockContext;
+    @Mock
+    private WifiManager mWifiManager;
+    @Mock
+    private PreferenceScreen mScreen;
+    @Mock
+    private MasterSwitchPreference mPreference;
+
+    private Context mContext;
+    private WifiMasterSwitchPreferenceController mController;
+    private FakeFeatureFactory mFakeFeatureFactory;
+    private MetricsFeatureProvider mMetricsFeatureProvider;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        FakeFeatureFactory.setupForTest(mMockContext);
+        mFakeFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mMockContext);
+        mMetricsFeatureProvider = mFakeFeatureFactory.getMetricsFeatureProvider();
+        mContext = spy(RuntimeEnvironment.application.getApplicationContext());
+        mController = new WifiMasterSwitchPreferenceController(mContext, mMetricsFeatureProvider);
+        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
+        when(mContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(mWifiManager);
+        when(mWifiManager.getWifiState()).thenReturn(WifiManager.WIFI_STATE_DISABLED);
+    }
+
+    @Test
+    public void isAvailable_shouldAlwaysReturnTrue() {
+        assertThat(mController.isAvailable()).isTrue();
+    }
+
+    @Test
+    public void onResume_shouldRegisterCallback() {
+        mController.onResume();
+
+        verify(mContext).registerReceiver(any(BroadcastReceiver.class), any(IntentFilter.class));
+    }
+
+    @Test
+    public void onPause_shouldUnregisterCallback() {
+        mController.onResume();
+        mController.onPause();
+
+        verify(mContext).unregisterReceiver(any(BroadcastReceiver.class));
+    }
+
+    @Test
+    public void onStart_shouldRegisterPreferenceChangeListener() {
+        mController.displayPreference(mScreen);
+        mController.onStart();
+
+        verify(mPreference).setOnPreferenceChangeListener(any(OnPreferenceChangeListener.class));
+    }
+
+    @Test
+    public void onStop_shouldRegisterPreferenceChangeListener() {
+        mController.displayPreference(mScreen);
+        mController.onStart();
+
+        mController.onStop();
+
+        verify(mPreference).setOnPreferenceChangeListener(null);
+    }
+
+    @Test
+    public void onSummaryChanged_shouldUpdatePreferenceSummary() {
+        mController.displayPreference(mScreen);
+
+        mController.onSummaryChanged("test summary");
+
+        verify(mPreference).setSummary("test summary");
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiSummaryUpdaterTest.java b/tests/robotests/src/com/android/settings/wifi/WifiSummaryUpdaterTest.java
new file mode 100644
index 0000000..df290b3
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/wifi/WifiSummaryUpdaterTest.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.wifi;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.net.wifi.WifiManager;
+
+import com.android.settings.R;
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settings.widget.SummaryUpdater.OnSummaryChangeListener;
+import com.android.settingslib.wifi.WifiStatusTracker;
+
+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.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class WifiSummaryUpdaterTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private WifiManager mWifiManager;
+    @Mock
+    private SummaryListener mListener;
+
+    private Context mContext;
+    private WifiSummaryUpdater mSummaryUpdater;
+    private WifiStatusTracker mWifiTracker;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mWifiTracker = new WifiStatusTracker(mWifiManager);
+
+        mContext = spy(RuntimeEnvironment.application.getApplicationContext());
+        mSummaryUpdater = new WifiSummaryUpdater(mContext, mListener, mWifiTracker);
+    }
+
+    @Test
+    public void register_true_shouldRegisterListener() {
+        mSummaryUpdater.register(true);
+
+        verify(mContext).registerReceiver(any(BroadcastReceiver.class), any(IntentFilter.class));
+    }
+
+    @Test
+    public void register_false_shouldUnregisterListener() {
+        mSummaryUpdater.register(true);
+        mSummaryUpdater.register(false);
+
+        verify(mContext).unregisterReceiver(any(BroadcastReceiver.class));
+    }
+
+    @Test
+    public void onReceive_networkStateChanged_shouldSendSummaryChange() {
+        mSummaryUpdater.register(true);
+        mContext.sendBroadcast(new Intent(WifiManager.NETWORK_STATE_CHANGED_ACTION));
+
+
+        verify(mListener).onSummaryChanged(anyString());
+    }
+
+    @Test
+    public void onReceive_rssiChanged_shouldSendSummaryChange() {
+        mSummaryUpdater.register(true);
+        mContext.sendBroadcast(new Intent(WifiManager.RSSI_CHANGED_ACTION));
+
+
+        verify(mListener).onSummaryChanged(anyString());
+    }
+
+    @Test
+    public void getSummary_wifiDisabled_shouldReturnDisabled() {
+        mWifiTracker.enabled = false;
+
+        assertThat(mSummaryUpdater.getSummary()).isEqualTo(
+            mContext.getString(R.string.wifi_disabled_generic));
+    }
+
+    @Test
+    public void getSummary_wifiDisconnected_shouldReturnDisconnected() {
+        mWifiTracker.enabled = true;
+        mWifiTracker.connected = false;
+
+        assertThat(mSummaryUpdater.getSummary()).isEqualTo(
+            mContext.getString(R.string.disconnected));
+    }
+
+    @Test
+    public void getSummary_wifiConnected_shouldReturnSsid() {
+        mWifiTracker.enabled = true;
+        mWifiTracker.connected = true;
+        mWifiTracker.ssid = "Test Ssid";
+
+        assertThat(mSummaryUpdater.getSummary()).isEqualTo("Test Ssid");
+    }
+
+    private class SummaryListener implements OnSummaryChangeListener {
+        String summary;
+
+        @Override
+        public void onSummaryChanged(String summary) {
+            this.summary = summary;
+        }
+    }
+
+}
diff --git a/tests/unit/Android.mk b/tests/unit/Android.mk
index d852ac5..f98fccd 100644
--- a/tests/unit/Android.mk
+++ b/tests/unit/Android.mk
@@ -11,7 +11,8 @@
     android-support-test \
     mockito-target-minus-junit4 \
     espresso-core \
-    truth-prebuilt
+    truth-prebuilt \
+    legacy-android-test
 
 # Include all test java files.
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
diff --git a/tests/unit/src/com/android/settings/display/ThemePreferenceControllerTest.java b/tests/unit/src/com/android/settings/display/ThemePreferenceControllerTest.java
new file mode 100644
index 0000000..231787e
--- /dev/null
+++ b/tests/unit/src/com/android/settings/display/ThemePreferenceControllerTest.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.core;
+
+import static junit.framework.TestCase.assertNotNull;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.UiModeManager;
+import android.content.Context;
+import android.content.ContextWrapper;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
+import android.support.v7.preference.ListPreference;
+
+import com.android.settings.R;
+import com.android.settings.display.ThemePreferenceController;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class ThemePreferenceControllerTest {
+
+    private UiModeManager mMockUiModeManager;
+    private ContextWrapper mContext;
+    private ThemePreferenceController mPreferenceController;
+
+    @Before
+    public void setup() {
+        mMockUiModeManager = mock(UiModeManager.class);
+        mContext = new ContextWrapper(InstrumentationRegistry.getTargetContext()) {
+            @Override
+            public Object getSystemService(String name) {
+                if (Context.UI_MODE_SERVICE.equals(name)) {
+                    return mMockUiModeManager;
+                }
+                return super.getSystemService(name);
+            }
+        };
+        mPreferenceController = new ThemePreferenceController(mContext);
+    }
+
+    @Test
+    public void testUpdateState() {
+        when(mMockUiModeManager.getAvailableThemes()).thenReturn(new String[] {
+                null,
+                "Theme1",
+                "Theme2",
+        });
+        when(mMockUiModeManager.getTheme()).thenReturn("Theme1");
+        ListPreference pref = mock(ListPreference.class);
+        mPreferenceController.updateState(pref);
+        ArgumentCaptor<String[]> arg = ArgumentCaptor.forClass(String[].class);
+        verify(pref).setEntries(arg.capture());
+
+        String[] entries = arg.getValue();
+        assertEquals(3, entries.length);
+        assertNotNull(entries[0]);
+        assertEquals("Theme1", entries[1]);
+        assertEquals("Theme2", entries[2]);
+
+        verify(pref).setEntryValues(arg.capture());
+        String[] entryValues = arg.getValue();
+        assertEquals(3, entryValues.length);
+        assertNotNull(entryValues[0]);
+        assertEquals("Theme1", entryValues[1]);
+        assertEquals("Theme2", entryValues[2]);
+
+        verify(pref).setValue(eq("Theme1"));
+    }
+
+    @Test
+    public void testAvailable_false() {
+        when(mMockUiModeManager.getAvailableThemes()).thenReturn(new String[1]);
+        assertFalse(mPreferenceController.isAvailable());
+    }
+
+    @Test
+    public void testAvailable_true() {
+        when(mMockUiModeManager.getAvailableThemes()).thenReturn(new String[2]);
+        assertTrue(mPreferenceController.isAvailable());
+    }
+}
diff --git a/tests/unit/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroductionTest.java b/tests/unit/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroductionTest.java
new file mode 100644
index 0000000..8afed18
--- /dev/null
+++ b/tests/unit/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroductionTest.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.fingerprint;
+
+
+import static org.mockito.Mockito.doReturn;
+
+import android.app.KeyguardManager;
+import android.content.Context;
+import android.content.ContextWrapper;
+import android.content.Intent;
+import android.test.ActivityUnitTestCase;
+import android.view.View;
+import android.widget.Button;
+
+import com.android.settings.R;
+
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+public class SetupFingerprintEnrollIntroductionTest
+        extends ActivityUnitTestCase<SetupFingerprintEnrollIntroduction> {
+
+    private TestContext mContext;
+
+    @Mock
+    private KeyguardManager mKeyguardManager;
+
+    private SetupFingerprintEnrollIntroduction mActivity;
+
+    public SetupFingerprintEnrollIntroductionTest() {
+        super(SetupFingerprintEnrollIntroduction.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        MockitoAnnotations.initMocks(this);
+        mContext = new TestContext(getInstrumentation().getTargetContext());
+        setActivityContext(mContext);
+
+        getInstrumentation().runOnMainSync(() -> {
+            final Intent intent = new Intent();
+            mActivity = startActivity(intent,
+                    null /* savedInstanceState */, null /* lastNonConfigurationInstance */);
+        });
+    }
+
+    public void testKeyguardNotSecure_shouldShowSkipDialog() {
+        doReturn(false).when(mKeyguardManager).isKeyguardSecure();
+
+        getInstrumentation().runOnMainSync(() -> {
+            getInstrumentation().callActivityOnCreate(mActivity, null);
+            getInstrumentation().callActivityOnResume(mActivity);
+
+            final Button skipButton =
+                    (Button) mActivity.findViewById(R.id.fingerprint_cancel_button);
+            assertEquals(View.VISIBLE, skipButton.getVisibility());
+            skipButton.performClick();
+        });
+
+        assertFalse(isFinishCalled());
+    }
+
+    public void testKeyguardSecure_shouldNotShowSkipDialog() {
+        doReturn(true).when(mKeyguardManager).isKeyguardSecure();
+
+        getInstrumentation().runOnMainSync(() -> {
+            getInstrumentation().callActivityOnCreate(mActivity, null);
+            getInstrumentation().callActivityOnResume(mActivity);
+
+            final Button skipButton =
+                    (Button) mActivity.findViewById(R.id.fingerprint_cancel_button);
+            assertEquals(View.VISIBLE, skipButton.getVisibility());
+            skipButton.performClick();
+        });
+
+        assertTrue(isFinishCalled());
+    }
+
+    public class TestContext extends ContextWrapper {
+
+        public TestContext(Context base) {
+            super(base);
+        }
+
+        @Override
+        public Object getSystemService(String name) {
+            if (Context.KEYGUARD_SERVICE.equals(name)) {
+                return mKeyguardManager;
+            }
+            return super.getSystemService(name);
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/settings/search/SearchActivityTest.java b/tests/unit/src/com/android/settings/search/SearchActivityTest.java
index ffe2094..26b097e 100644
--- a/tests/unit/src/com/android/settings/search/SearchActivityTest.java
+++ b/tests/unit/src/com/android/settings/search/SearchActivityTest.java
@@ -32,8 +32,7 @@
 
 import java.util.List;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
+import static com.google.common.truth.Truth.assertThat;
 
 @SmallTest
 @RunWith(AndroidJUnit4.class)
@@ -47,7 +46,8 @@
         final List<ResolveInfo> resolveInfos = packageManager.queryIntentActivities(
                 intent, PackageManager.GET_META_DATA);
 
-        assertFalse(resolveInfos.isEmpty());
-        assertEquals(Settings.class.getName(), resolveInfos.get(0).activityInfo.parentActivityName);
+        assertThat(resolveInfos).isNotEmpty();
+        assertThat(resolveInfos.get(0).activityInfo.parentActivityName)
+                .isEqualTo(Settings.class.getName());
     }
 }
