Merge "Disable tethering when Data Saver mode is on." into nyc-dev
diff --git a/res/drawable-hdpi/data_sweep_limit_activated.9.png b/res/drawable-hdpi/data_sweep_limit_activated.9.png
deleted file mode 100644
index 598ebd3..0000000
--- a/res/drawable-hdpi/data_sweep_limit_activated.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/data_sweep_warning_activated.9.png b/res/drawable-hdpi/data_sweep_warning_activated.9.png
deleted file mode 100644
index b10dff6..0000000
--- a/res/drawable-hdpi/data_sweep_warning_activated.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_bt_keyboard_hid.png b/res/drawable-hdpi/ic_bt_keyboard_hid.png
deleted file mode 100644
index 3021165..0000000
--- a/res/drawable-hdpi/ic_bt_keyboard_hid.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_drawer_am.png b/res/drawable-hdpi/ic_drawer_am.png
deleted file mode 100644
index ff7b1de..0000000
--- a/res/drawable-hdpi/ic_drawer_am.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_emergency.png b/res/drawable-hdpi/ic_emergency.png
deleted file mode 100644
index 89c05e3..0000000
--- a/res/drawable-hdpi/ic_emergency.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_item_delete.png b/res/drawable-hdpi/ic_item_delete.png
deleted file mode 100644
index 5804521..0000000
--- a/res/drawable-hdpi/ic_item_delete.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_scan_network.png b/res/drawable-hdpi/ic_menu_scan_network.png
deleted file mode 100644
index 5547d31..0000000
--- a/res/drawable-hdpi/ic_menu_scan_network.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_sync_green.png b/res/drawable-hdpi/ic_sync_green.png
deleted file mode 100644
index 6956088..0000000
--- a/res/drawable-hdpi/ic_sync_green.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_sync_green_holo.png b/res/drawable-hdpi/ic_sync_green_holo.png
deleted file mode 100644
index 88a2a56..0000000
--- a/res/drawable-hdpi/ic_sync_green_holo.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_wifi_lock_signal_0_dark.png b/res/drawable-hdpi/ic_wifi_lock_signal_0_dark.png
deleted file mode 100644
index 57f2839..0000000
--- a/res/drawable-hdpi/ic_wifi_lock_signal_0_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_wifi_signal_0_dark.png b/res/drawable-hdpi/ic_wifi_signal_0_dark.png
deleted file mode 100644
index 20519fd..0000000
--- a/res/drawable-hdpi/ic_wifi_signal_0_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/stat_sys_phone_call.png b/res/drawable-hdpi/stat_sys_phone_call.png
deleted file mode 100755
index 9b5f075..0000000
--- a/res/drawable-hdpi/stat_sys_phone_call.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_emergency.png b/res/drawable-ldrtl-hdpi/ic_emergency.png
deleted file mode 100644
index 89e1b07..0000000
--- a/res/drawable-ldrtl-hdpi/ic_emergency.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/stat_sys_phone_call.png b/res/drawable-ldrtl-hdpi/stat_sys_phone_call.png
deleted file mode 100755
index 033efe4..0000000
--- a/res/drawable-ldrtl-hdpi/stat_sys_phone_call.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_emergency.png b/res/drawable-ldrtl-mdpi/ic_emergency.png
deleted file mode 100755
index 004a473..0000000
--- a/res/drawable-ldrtl-mdpi/ic_emergency.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/stat_sys_phone_call.png b/res/drawable-ldrtl-mdpi/stat_sys_phone_call.png
deleted file mode 100644
index f566dad..0000000
--- a/res/drawable-ldrtl-mdpi/stat_sys_phone_call.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_emergency.png b/res/drawable-ldrtl-xhdpi/ic_emergency.png
deleted file mode 100644
index ddc2642..0000000
--- a/res/drawable-ldrtl-xhdpi/ic_emergency.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/stat_sys_phone_call.png b/res/drawable-ldrtl-xhdpi/stat_sys_phone_call.png
deleted file mode 100644
index dce5d9a..0000000
--- a/res/drawable-ldrtl-xhdpi/stat_sys_phone_call.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/data_sweep_limit_activated.9.png b/res/drawable-mdpi/data_sweep_limit_activated.9.png
deleted file mode 100644
index f2be5ea..0000000
--- a/res/drawable-mdpi/data_sweep_limit_activated.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/data_sweep_warning_activated.9.png b/res/drawable-mdpi/data_sweep_warning_activated.9.png
deleted file mode 100644
index cd795d2..0000000
--- a/res/drawable-mdpi/data_sweep_warning_activated.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_bt_keyboard_hid.png b/res/drawable-mdpi/ic_bt_keyboard_hid.png
deleted file mode 100644
index fdaa38d..0000000
--- a/res/drawable-mdpi/ic_bt_keyboard_hid.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_drawer_am.png b/res/drawable-mdpi/ic_drawer_am.png
deleted file mode 100644
index fb681ba..0000000
--- a/res/drawable-mdpi/ic_drawer_am.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_emergency.png b/res/drawable-mdpi/ic_emergency.png
deleted file mode 100755
index c6faf1e..0000000
--- a/res/drawable-mdpi/ic_emergency.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_item_delete.png b/res/drawable-mdpi/ic_item_delete.png
deleted file mode 100644
index f4dbdc0..0000000
--- a/res/drawable-mdpi/ic_item_delete.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_scan_network.png b/res/drawable-mdpi/ic_menu_scan_network.png
deleted file mode 100644
index fed235e..0000000
--- a/res/drawable-mdpi/ic_menu_scan_network.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_sync_green.png b/res/drawable-mdpi/ic_sync_green.png
deleted file mode 100644
index 177a024..0000000
--- a/res/drawable-mdpi/ic_sync_green.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_sync_green_holo.png b/res/drawable-mdpi/ic_sync_green_holo.png
deleted file mode 100644
index 2ea59ce..0000000
--- a/res/drawable-mdpi/ic_sync_green_holo.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_wifi_lock_signal_0_dark.png b/res/drawable-mdpi/ic_wifi_lock_signal_0_dark.png
deleted file mode 100644
index 1dcb7ac..0000000
--- a/res/drawable-mdpi/ic_wifi_lock_signal_0_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_wifi_signal_0_dark.png b/res/drawable-mdpi/ic_wifi_signal_0_dark.png
deleted file mode 100644
index 2162d2d..0000000
--- a/res/drawable-mdpi/ic_wifi_signal_0_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/stat_sys_phone_call.png b/res/drawable-mdpi/stat_sys_phone_call.png
deleted file mode 100644
index c44d062..0000000
--- a/res/drawable-mdpi/stat_sys_phone_call.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-nodpi/illustration_generic.jpg b/res/drawable-nodpi/illustration_generic.jpg
deleted file mode 100644
index f37eaf4..0000000
--- a/res/drawable-nodpi/illustration_generic.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-sw600dp-hdpi/illustration_generic.jpg b/res/drawable-sw600dp-hdpi/illustration_generic.jpg
deleted file mode 100644
index 7aac7f9..0000000
--- a/res/drawable-sw600dp-hdpi/illustration_generic.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-sw600dp-mdpi/illustration_generic.jpg b/res/drawable-sw600dp-mdpi/illustration_generic.jpg
deleted file mode 100644
index 34d0f33..0000000
--- a/res/drawable-sw600dp-mdpi/illustration_generic.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-sw600dp-xhdpi/illustration_generic.jpg b/res/drawable-sw600dp-xhdpi/illustration_generic.jpg
deleted file mode 100644
index 4fe849f..0000000
--- a/res/drawable-sw600dp-xhdpi/illustration_generic.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-sw600dp-xxhdpi/illustration_generic.jpg b/res/drawable-sw600dp-xxhdpi/illustration_generic.jpg
deleted file mode 100644
index 48bca97..0000000
--- a/res/drawable-sw600dp-xxhdpi/illustration_generic.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/data_sweep_limit_activated.9.png b/res/drawable-xhdpi/data_sweep_limit_activated.9.png
deleted file mode 100644
index 8f1e496..0000000
--- a/res/drawable-xhdpi/data_sweep_limit_activated.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/data_sweep_warning_activated.9.png b/res/drawable-xhdpi/data_sweep_warning_activated.9.png
deleted file mode 100644
index cfc92e1..0000000
--- a/res/drawable-xhdpi/data_sweep_warning_activated.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_bt_keyboard_hid.png b/res/drawable-xhdpi/ic_bt_keyboard_hid.png
deleted file mode 100644
index 0703859..0000000
--- a/res/drawable-xhdpi/ic_bt_keyboard_hid.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_drawer_am.png b/res/drawable-xhdpi/ic_drawer_am.png
deleted file mode 100644
index b9bc3d7..0000000
--- a/res/drawable-xhdpi/ic_drawer_am.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_emergency.png b/res/drawable-xhdpi/ic_emergency.png
deleted file mode 100644
index 3d4a233..0000000
--- a/res/drawable-xhdpi/ic_emergency.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_item_delete.png b/res/drawable-xhdpi/ic_item_delete.png
deleted file mode 100644
index 9bfadf0..0000000
--- a/res/drawable-xhdpi/ic_item_delete.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_scan_network.png b/res/drawable-xhdpi/ic_menu_scan_network.png
deleted file mode 100644
index 3f74ca7..0000000
--- a/res/drawable-xhdpi/ic_menu_scan_network.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_sync_green.png b/res/drawable-xhdpi/ic_sync_green.png
deleted file mode 100644
index 1c49594..0000000
--- a/res/drawable-xhdpi/ic_sync_green.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_sync_green_holo.png b/res/drawable-xhdpi/ic_sync_green_holo.png
deleted file mode 100644
index 2091e19..0000000
--- a/res/drawable-xhdpi/ic_sync_green_holo.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_wifi_lock_signal_0_dark.png b/res/drawable-xhdpi/ic_wifi_lock_signal_0_dark.png
deleted file mode 100644
index 1e29c6a..0000000
--- a/res/drawable-xhdpi/ic_wifi_lock_signal_0_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_wifi_signal_0_dark.png b/res/drawable-xhdpi/ic_wifi_signal_0_dark.png
deleted file mode 100644
index cee9e2b..0000000
--- a/res/drawable-xhdpi/ic_wifi_signal_0_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/stat_sys_phone_call.png b/res/drawable-xhdpi/stat_sys_phone_call.png
deleted file mode 100644
index 3089858..0000000
--- a/res/drawable-xhdpi/stat_sys_phone_call.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/data_sweep_limit_activated.9.png b/res/drawable-xxhdpi/data_sweep_limit_activated.9.png
deleted file mode 100644
index 0457329..0000000
--- a/res/drawable-xxhdpi/data_sweep_limit_activated.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/data_sweep_warning_activated.9.png b/res/drawable-xxhdpi/data_sweep_warning_activated.9.png
deleted file mode 100644
index 670bc19..0000000
--- a/res/drawable-xxhdpi/data_sweep_warning_activated.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_bt_keyboard_hid.png b/res/drawable-xxhdpi/ic_bt_keyboard_hid.png
deleted file mode 100644
index 488cd83..0000000
--- a/res/drawable-xxhdpi/ic_bt_keyboard_hid.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_item_delete.png b/res/drawable-xxhdpi/ic_item_delete.png
deleted file mode 100644
index 58e8ce9..0000000
--- a/res/drawable-xxhdpi/ic_item_delete.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_sync_green_holo.png b/res/drawable-xxhdpi/ic_sync_green_holo.png
deleted file mode 100644
index d3f5c24..0000000
--- a/res/drawable-xxhdpi/ic_sync_green_holo.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_wifi_lock_signal_0_dark.png b/res/drawable-xxhdpi/ic_wifi_lock_signal_0_dark.png
deleted file mode 100644
index 5cb27ab..0000000
--- a/res/drawable-xxhdpi/ic_wifi_lock_signal_0_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_wifi_signal_0_dark.png b/res/drawable-xxhdpi/ic_wifi_signal_0_dark.png
deleted file mode 100644
index 0fd7006..0000000
--- a/res/drawable-xxhdpi/ic_wifi_signal_0_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxxhdpi/data_sweep_limit_activated.9.png b/res/drawable-xxxhdpi/data_sweep_limit_activated.9.png
deleted file mode 100644
index 3159b04..0000000
--- a/res/drawable-xxxhdpi/data_sweep_limit_activated.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxxhdpi/data_sweep_warning_activated.9.png b/res/drawable-xxxhdpi/data_sweep_warning_activated.9.png
deleted file mode 100644
index c12f302..0000000
--- a/res/drawable-xxxhdpi/data_sweep_warning_activated.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_item_delete.png b/res/drawable-xxxhdpi/ic_item_delete.png
deleted file mode 100644
index 00d9b71..0000000
--- a/res/drawable-xxxhdpi/ic_item_delete.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_sync_green_holo.png b/res/drawable-xxxhdpi/ic_sync_green_holo.png
deleted file mode 100644
index ff7cad6..0000000
--- a/res/drawable-xxxhdpi/ic_sync_green_holo.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_wifi_lock_signal_0_dark.png b/res/drawable-xxxhdpi/ic_wifi_lock_signal_0_dark.png
deleted file mode 100644
index b9ab604..0000000
--- a/res/drawable-xxxhdpi/ic_wifi_lock_signal_0_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_wifi_signal_0_dark.png b/res/drawable-xxxhdpi/ic_wifi_signal_0_dark.png
deleted file mode 100644
index a42a6eb..0000000
--- a/res/drawable-xxxhdpi/ic_wifi_signal_0_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/dashboard_tile_background.xml b/res/drawable/dashboard_tile_background.xml
deleted file mode 100644
index 105ff18..0000000
--- a/res/drawable/dashboard_tile_background.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<ripple xmlns:android="http://schemas.android.com/apk/res/android"
-    android:color="?android:attr/colorControlHighlight">
-    <item android:id="@android:id/mask"
-          android:drawable="@android:color/white" />
-</ripple>
diff --git a/res/drawable/ic_check.xml b/res/drawable/ic_check.xml
deleted file mode 100644
index 9dda32f..0000000
--- a/res/drawable/ic_check.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<!--
-Copyright (C) 2014 The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT 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="48.0"
-        android:viewportHeight="48.0">
-    <path
-        android:fillColor="#FF000000"
-        android:pathData="M18.0,32.34L9.66,24.0l-2.83,2.83L18.0,38.0l24.0,-24.0 -2.83,-2.83z"/>
-</vector>
diff --git a/res/drawable/ic_drawer.xml b/res/drawable/ic_drawer.xml
deleted file mode 100644
index f228d47..0000000
--- a/res/drawable/ic_drawer.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright 2014, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
--->
-
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
-        android:src="@drawable/ic_drawer_am"
-        android:autoMirrored="true">
-</bitmap>
-
diff --git a/res/drawable/ic_eject_48dp.xml b/res/drawable/ic_eject_48dp.xml
deleted file mode 100644
index 38b7ddd..0000000
--- a/res/drawable/ic_eject_48dp.xml
+++ /dev/null
@@ -1,24 +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.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="48dp"
-        android:height="48dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0">
-    <path
-        android:fillColor="#FF000000"
-        android:pathData="M5 17h14v2H5zm7,-12L5.33 15h13.34z"/>
-</vector>
diff --git a/res/drawable/ic_event.xml b/res/drawable/ic_event.xml
deleted file mode 100644
index 6857e2f..0000000
--- a/res/drawable/ic_event.xml
+++ /dev/null
@@ -1,24 +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.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24.0dp"
-        android:height="24.0dp"
-        android:viewportWidth="48.0"
-        android:viewportHeight="48.0">
-    <path
-        android:fillColor="?android:attr/colorControlNormal"
-        android:pathData="M34.0,24.0L24.0,24.0l0.0,10.0l10.0,0.0L34.0,24.0zM32.0,2.0l0.0,4.0L16.0,6.0L16.0,2.0l-4.0,0.0l0.0,4.0l-2.0,0.0c-2.21,0.0 -3.98,1.79 -3.98,4.0L6.0,38.0c0.0,2.21 1.79,4.0 4.0,4.0l28.0,0.0c2.21,0.0 4.0,-1.79 4.0,-4.0L42.0,10.0c0.0,-2.21 -1.79,-4.0 -4.0,-4.0l-2.0,0.0L36.0,2.0l-4.0,0.0zm6.0,36.0L10.0,38.0L10.0,16.0l28.0,0.0l0.0,22.0z"/>
-</vector>
diff --git a/res/drawable/ic_info_outline.xml b/res/drawable/ic_info_outline.xml
deleted file mode 100644
index 6e19d26..0000000
--- a/res/drawable/ic_info_outline.xml
+++ /dev/null
@@ -1,24 +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.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24"
-        android:viewportHeight="24">
-    <path
-        android:fillColor="@android:color/white"
-        android:pathData="M11,17l2,0l0,-6l-2,0l0,6.0zm1,-15.0C6.48,2 2,6.48 2,12.0s4.48,10 10,10 10,-4.48 10,-10.0S17.52,2 12,2.0zm0,18.0c-4.41,0 -8,-3.59 -8,-8.0s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8.0zM11,9l2,0L13,7l-2,0l0,2.0z"/>
-</vector>
diff --git a/res/drawable/ic_schedule.xml b/res/drawable/ic_schedule.xml
deleted file mode 100644
index ed5b2f7..0000000
--- a/res/drawable/ic_schedule.xml
+++ /dev/null
@@ -1,29 +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.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24.0dp"
-        android:height="24.0dp"
-        android:viewportWidth="48.0"
-        android:viewportHeight="48.0">
-    <path
-        android:fillColor="?android:attr/colorControlNormal"
-        android:pathData="M23.99,4.0C12.94,4.0 4.0,12.95 4.0,24.0s8.94,20.0 19.99,20.0C35.04,44.0 44.0,35.05 44.0,24.0S35.04,4.0 23.99,4.0zM24.0,40.0c-8.84,0.0 -16.0,-7.16 -16.0,-16.0S15.16,8.0 24.0,8.0s16.0,7.16 16.0,16.0 -7.16,16.0 -16.0,16.0z"
-        android:fillAlpha=".9"/>
-    <path
-        android:fillColor="?android:attr/colorControlNormal"
-        android:pathData="M25.0,14.0l-3.0,0.0l0.0,12.0l10.49,6.3L34.0,29.84l-9.0,-5.34z"
-        android:fillAlpha=".9"/>
-</vector>
diff --git a/res/drawable/ic_settings_32dp.xml b/res/drawable/ic_settings_32dp.xml
deleted file mode 100644
index b309d8c..0000000
--- a/res/drawable/ic_settings_32dp.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<!-- Copyright (C) 2014 The Android Open Source Project
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at"+
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT 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="32dp"
-        android:height="32dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0">
-    <path
-        android:pathData="M19.4,13.0c0.0,-0.3 0.1,-0.6 0.1,-1.0s0.0,-0.7 -0.1,-1.0l2.1,-1.7c0.2,-0.2 0.2,-0.4 0.1,-0.6l-2.0,-3.5C19.5,5.1 19.3,5.0 19.0,5.1l-2.5,1.0c-0.5,-0.4 -1.1,-0.7 -1.7,-1.0l-0.4,-2.6C14.5,2.2 14.2,2.0 14.0,2.0l-4.0,0.0C9.8,2.0 9.5,2.2 9.5,2.4L9.1,5.1C8.5,5.3 8.0,5.7 7.4,6.1L5.0,5.1C4.7,5.0 4.5,5.1 4.3,5.3l-2.0,3.5C2.2,8.9 2.3,9.2 2.5,9.4L4.6,11.0c0.0,0.3 -0.1,0.6 -0.1,1.0s0.0,0.7 0.1,1.0l-2.1,1.7c-0.2,0.2 -0.2,0.4 -0.1,0.6l2.0,3.5C4.5,18.9 4.7,19.0 5.0,18.9l2.5,-1.0c0.5,0.4 1.1,0.7 1.7,1.0l0.4,2.6c0.0,0.2 0.2,0.4 0.5,0.4l4.0,0.0c0.2,0.0 0.5,-0.2 0.5,-0.4l0.4,-2.6c0.6,-0.3 1.2,-0.6 1.7,-1.0l2.5,1.0c0.2,0.1 0.5,0.0 0.6,-0.2l2.0,-3.5c0.1,-0.2 0.1,-0.5 -0.1,-0.6L19.4,13.0zM12.0,15.5c-1.9,0.0 -3.5,-1.6 -3.5,-3.5s1.6,-3.5 3.5,-3.5s3.5,1.6 3.5,3.5S13.9,15.5 12.0,15.5z"
-        android:fillColor="#ffffffff" />
-</vector>
diff --git a/res/drawable/ic_settings_home.xml b/res/drawable/ic_settings_home.xml
deleted file mode 100644
index 8d379b3..0000000
--- a/res/drawable/ic_settings_home.xml
+++ /dev/null
@@ -1,25 +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.
--->
-<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/colorAccent">
-    <path
-        android:fillColor="#FFFFFFFF"
-        android:pathData="M10.0,20.0l0.0,-6.0l4.0,0.0l0.0,6.0l5.0,0.0l0.0,-8.0l3.0,0.0L12.0,3.0 2.0,12.0l3.0,0.0l0.0,8.0z"/>
-</vector>
diff --git a/res/drawable/ic_tab_all.xml b/res/drawable/ic_tab_all.xml
deleted file mode 100644
index 9e5756b..0000000
--- a/res/drawable/ic_tab_all.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/ic_tab_selected_all" />
-    <item android:drawable="@drawable/ic_tab_unselected_all" />
-</selector>
-
diff --git a/res/drawable/ic_tab_download.xml b/res/drawable/ic_tab_download.xml
deleted file mode 100644
index d126f5b..0000000
--- a/res/drawable/ic_tab_download.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/ic_tab_selected_download" />
-    <item android:drawable="@drawable/ic_tab_unselected_download" />
-</selector>
-
diff --git a/res/drawable/ic_tab_running.xml b/res/drawable/ic_tab_running.xml
deleted file mode 100644
index 1044acc..0000000
--- a/res/drawable/ic_tab_running.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/ic_tab_selected_running" />
-    <item android:drawable="@drawable/ic_tab_unselected_running" />
-</selector>
-
diff --git a/res/drawable/ic_tab_sdcard.xml b/res/drawable/ic_tab_sdcard.xml
deleted file mode 100644
index 2088f93..0000000
--- a/res/drawable/ic_tab_sdcard.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/ic_tab_selected_sdcard" />
-    <item android:drawable="@drawable/ic_tab_unselected_sdcard" />
-</selector>
-
diff --git a/res/drawable/ic_toc.xml b/res/drawable/ic_toc.xml
deleted file mode 100644
index 66c476b..0000000
--- a/res/drawable/ic_toc.xml
+++ /dev/null
@@ -1,24 +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.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24.0dp"
-        android:height="24.0dp"
-        android:viewportWidth="48.0"
-        android:viewportHeight="48.0">
-    <path
-        android:fillColor="#FF000000"
-        android:pathData="M6.0,18.0l28.0,0.0l0.0,-4.0L6.0,14.0l0.0,4.0zm0.0,8.0l28.0,0.0l0.0,-4.0L6.0,22.0l0.0,4.0zm0.0,8.0l28.0,0.0l0.0,-4.0L6.0,30.0l0.0,4.0zm32.0,0.0l4.0,0.0l0.0,-4.0l-4.0,0.0l0.0,4.0zm0.0,-20.0l0.0,4.0l4.0,0.0l0.0,-4.0l-4.0,0.0zm0.0,12.0l4.0,0.0l0.0,-4.0l-4.0,0.0l0.0,4.0z"/>
-</vector>
diff --git a/res/drawable/ic_warning_48dp.xml b/res/drawable/ic_warning_48dp.xml
deleted file mode 100644
index b213ec9..0000000
--- a/res/drawable/ic_warning_48dp.xml
+++ /dev/null
@@ -1,24 +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.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="48dp"
-        android:height="48dp"
-        android:viewportWidth="48.0"
-        android:viewportHeight="48.0">
-    <path
-        android:fillColor="#FF000000"
-        android:pathData="M2 42h44L24 4 2 42zm24,-6h-4v-4h4v4zm0,-8h-4v-8h4v8z"/>
-</vector>
diff --git a/res/drawable/ic_wifi_signal_0.xml b/res/drawable/ic_wifi_signal_0.xml
deleted file mode 100644
index 3888161..0000000
--- a/res/drawable/ic_wifi_signal_0.xml
+++ /dev/null
@@ -1,26 +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.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="26dp"
-    android:height="24dp"
-    android:viewportWidth="26"
-    android:viewportHeight="24">
-    <path
-        android:fillAlpha="0.3"
-        android:fillColor="?attr/wifi_signal_color"
-        android:pathData="M13.0,22.0L25.6,6.5C25.1,6.1 20.3,2.1 13.0,2.1S0.9,6.1 0.4,6.5L13.0,22.0L13.0,22.0L13.0,22.0L13.0,22.0L13.0,22.0z"/>
-</vector>
diff --git a/res/drawable/screen_zoom_preview_action_background.xml b/res/drawable/screen_zoom_preview_action_background.xml
deleted file mode 100644
index 32fbb02..0000000
--- a/res/drawable/screen_zoom_preview_action_background.xml
+++ /dev/null
@@ -1,22 +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.
--->
-
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
-       android:shape="oval">
-    <size android:width="24dp"
-          android:height="24dp" />
-    <solid android:color="@android:color/white" />
-</shape>
diff --git a/res/layout-sw600dp/preference_inputmethod.xml b/res/layout-sw600dp/preference_inputmethod.xml
deleted file mode 100644
index f44a50e..0000000
--- a/res/layout-sw600dp/preference_inputmethod.xml
+++ /dev/null
@@ -1,87 +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.
--->
-
-<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">
-    <LinearLayout
-        android:id="@+id/inputmethod_pref"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:layout_weight="1"
-        android:gravity="center_vertical"
-        android:clickable="true"
-        android:focusable="true"
-        android:background="?android:attr/selectableItemBackground">
-        <LinearLayout
-            android:id="@android:id/widget_frame"
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
-            android:gravity="center"
-            android:minWidth="@*android:dimen/preference_icon_minWidth"
-            android:layout_marginEnd="@*android:dimen/preference_item_padding_inner" />
-        <RelativeLayout
-            android:layout_width="0dp"
-            android:layout_height="wrap_content"
-            android:layout_marginEnd="6dip"
-            android:layout_marginTop="6dip"
-            android:layout_marginBottom="6dip"
-            android:layout_weight="1">
-            <TextView
-                android:id="@+android:id/title"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:singleLine="true"
-                android:textAppearance="?android:attr/textAppearanceMedium"
-                android:ellipsize="marquee"
-                android:fadingEdge="horizontal"/>
-            <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:paddingBottom="3dip"
-                android:visibility="gone"
-                android:textAppearance="?android:attr/textAppearanceSmall"
-                android:textSize="13sp"
-                android:textColor="?android:attr/textColorSecondary"
-                android:focusable="false"
-                android:maxLines="4" />
-        </RelativeLayout>
-    </LinearLayout>
-    <View
-        android:layout_width="2dip"
-        android:layout_height="match_parent"
-        android:layout_marginTop="5dip"
-        android:layout_marginBottom="5dip"
-        android:background="@android:drawable/divider_horizontal_dark" />
-    <ImageView
-        android:id="@+id/inputmethod_settings"
-        android:layout_width="wrap_content"
-        android:layout_height="fill_parent"
-        android:paddingStart="15dip"
-        android:paddingEnd="?android:attr/scrollbarSize"
-        android:src="@drawable/ic_sysbar_quicksettings"
-        android:contentDescription="@string/input_method_settings_button"
-        android:layout_gravity="center"
-        android:clickable="true"
-        android:focusable="true"
-        android:background="?android:attr/selectableItemBackground" />
-</LinearLayout>
diff --git a/res/layout-sw600dp/settings_top_level.xml b/res/layout-sw600dp/settings_top_level.xml
deleted file mode 100644
index ff53c1b..0000000
--- a/res/layout-sw600dp/settings_top_level.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<!-- Top-level Settings layout with fragments. -->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="horizontal"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-    <fragment class="com.android.settings.Settings$TopLevelSettings"
-            android:id="@+id/top_level"
-            android:layout_width="0px"
-            android:layout_height="match_parent"
-            android:layout_weight=".4" 
-            android:layout_marginEnd="10dp"/>
-    <FrameLayout android:id="@+id/prefs"
-            android:layout_width="0px"
-            android:layout_height="match_parent"
-            android:layout_weight=".6" />
-</LinearLayout>
diff --git a/res/layout/account_preference.xml b/res/layout/account_preference.xml
deleted file mode 100644
index bc3f8f9..0000000
--- a/res/layout/account_preference.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?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.
--->
-
-<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
-        android:id="@+id/syncStatusIcon"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center"
-        android:contentDescription="@null" />
diff --git a/res/layout/app_cache_settings.xml b/res/layout/app_cache_settings.xml
deleted file mode 100644
index bb57433..0000000
--- a/res/layout/app_cache_settings.xml
+++ /dev/null
@@ -1,58 +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.
--->
-
-<!-- Clear cache section -->
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/all_details"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
-    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
-    android:orientation="vertical">
-
-    <FrameLayout
-        android:id="@+id/cache_size"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:paddingTop="8dip">
-        <TextView
-            android:text="@string/cache_size_label"
-            android:layout_height="wrap_content"
-            android:layout_width="match_parent"
-            android:maxLines="1"
-            android:textAppearance="?android:attr/textAppearanceMedium"
-            android:textColor="?android:textColorPrimary"
-            android:gravity="center_vertical" />
-        <TextView
-            android:id="@+id/cache_size_text"
-            android:textAppearance="?android:attr/textAppearanceMedium"
-            android:layout_height="wrap_content"
-            android:layout_width="match_parent"
-            android:gravity="right"
-            android:maxLines="1" />
-    </FrameLayout>
-
-    <include
-        android:id="@+id/clear_cache_button"
-        layout="@layout/single_button_panel" />
-
-    <Space
-        android:layout_width="match_parent"
-        android:layout_height="10dp" />
-
-</LinearLayout>
diff --git a/res/layout/apps_spinner_dropdown_item.xml b/res/layout/apps_spinner_dropdown_item.xml
deleted file mode 100644
index 6f641e7..0000000
--- a/res/layout/apps_spinner_dropdown_item.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2012, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" 
-    android:id="@android:id/text1"
-    style="?android:attr/spinnerDropDownItemStyle"
-    android:textAppearance="?android:attr/textAppearanceMedium"
-    android:singleLine="true"
-    android:layout_width="match_parent"
-    android:layout_height="?android:attr/listPreferredItemHeightSmall"
-    android:ellipsize="marquee" />
diff --git a/res/layout/apps_spinner_item.xml b/res/layout/apps_spinner_item.xml
deleted file mode 100644
index 1ca6ffc..0000000
--- a/res/layout/apps_spinner_item.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2012, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT 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="@android:id/text1"
-    style="?android:attr/spinnerItemStyle"
-    android:textAppearance="?android:attr/textAppearanceMedium"
-    android:singleLine="true"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:ellipsize="marquee" />
diff --git a/res/layout/bluetooth_device_settings.xml b/res/layout/bluetooth_device_settings.xml
deleted file mode 100644
index b65ca0f..0000000
--- a/res/layout/bluetooth_device_settings.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT 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="wrap_content"
-        android:orientation="vertical"
-        android:gravity="center">
-
-            <fragment android:id="@+id/bluetooth_fragment_settings"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    class="com.android.settings.bluetooth.DeviceProfilesSettings" />
-
-</LinearLayout>
diff --git a/res/layout/bluetooth_device_settings_header.xml b/res/layout/bluetooth_device_settings_header.xml
deleted file mode 100644
index b1832c5..0000000
--- a/res/layout/bluetooth_device_settings_header.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:orientation="vertical"
-        android:gravity="center">
-
-    <LinearLayout android:id="@+id/dialog_layout"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:orientation="vertical"
-            android:paddingBottom="@dimen/bluetooth_dialog_padding"
-            style="@style/bt_item" >
-
-            <TextView
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:text="@string/bluetooth_preference_paired_dialog_name_label"
-                    android:textAppearance="@android:style/TextAppearance.Material.Body1"
-                    android:textColor="?android:attr/textColorSecondary"
-                    android:textDirection="locale"
-                    style="@style/bt_item_label" />
-
-            <EditText android:id="@+id/name"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:inputType="textNoSuggestions"
-                    android:maxLength="@integer/bluetooth_name_length"
-                    android:singleLine="true"
-                    style="@style/bt_item_edit_content" />
-
-    </LinearLayout>
-
-</LinearLayout>
diff --git a/res/layout/bluetooth_preference_category.xml b/res/layout/bluetooth_preference_category.xml
deleted file mode 100644
index 2b9a29a..0000000
--- a/res/layout/bluetooth_preference_category.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<!-- Layout used for Bluetooth PreferenceCategory in a DeviceProfilesSettings. -->
-<TextView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+android:id/title"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:textAppearance="@android:style/TextAppearance.Material.Body1"
-    android:textColor="?android:attr/textColorSecondary"
-    android:paddingTop="16dip"
-    android:paddingStart="16dip"
-    android:paddingBottom="16dip" />
diff --git a/res/layout/bookmark_picker_item.xml b/res/layout/bookmark_picker_item.xml
deleted file mode 100644
index ad491ff..0000000
--- a/res/layout/bookmark_picker_item.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2008, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:minHeight="?android:attr/listPreferredItemHeight"
-    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
-    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
-    android:gravity="center_vertical">
-
-    <ImageView android:id="@+id/icon"
-        android:layout_width="@android:dimen/app_icon_size"
-        android:layout_height="@android:dimen/app_icon_size"
-        android:scaleType="fitCenter"
-        android:contentDescription="@null" />
-
-    <TextView android:id="@+id/title"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:textAppearance="?android:attr/textAppearanceLarge"
-        android:paddingStart="6dip" />
-        
-</LinearLayout>
-
diff --git a/res/layout/condition_card.xml b/res/layout/condition_card.xml
index c1224b5..4ddb084 100644
--- a/res/layout/condition_card.xml
+++ b/res/layout/condition_card.xml
@@ -104,7 +104,7 @@
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:paddingStart="0dp"
-                    android:alpha=".7"
+                    android:alpha=".8"
                     android:textColor="?android:attr/textColorPrimaryInverse"
                     style="?android:attr/buttonBarButtonStyle" />
 
@@ -112,7 +112,7 @@
                     android:id="@+id/second_action"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:alpha=".7"
+                    android:alpha=".8"
                     android:textColor="?android:attr/textColorPrimaryInverse"
                     style="?android:attr/buttonBarButtonStyle" />
 
diff --git a/res/layout/confirm_lock_password_base.xml b/res/layout/confirm_lock_password_base.xml
index 536617d..8e9a87b 100644
--- a/res/layout/confirm_lock_password_base.xml
+++ b/res/layout/confirm_lock_password_base.xml
@@ -59,15 +59,9 @@
             android:layout_marginEnd="16dp"
             android:layout_marginTop="16dp"/>
 
-        <TextView
-            android:id="@+id/strongAuthRequiredText"
-            style="@style/TextAppearance.ConfirmDeviceCredentialsStrongAuthRequiredText"
-            android:layout_width="match_parent"
-            android:layout_height="0dp"
-            android:layout_weight="1"
-            android:singleLine="true"
-            android:ellipsize="marquee"
-            android:gravity="center"/>
+        <View android:layout_width="match_parent"
+              android:layout_height="0dp"
+              android:layout_weight="1"/>
 
         <EditText
             android:id="@+id/password_entry"
diff --git a/res/layout/confirm_lock_pattern_base.xml b/res/layout/confirm_lock_pattern_base.xml
index 117c499..7c960a2 100644
--- a/res/layout/confirm_lock_pattern_base.xml
+++ b/res/layout/confirm_lock_pattern_base.xml
@@ -59,15 +59,9 @@
             android:layout_marginEnd="16dp"
             android:layout_marginTop="16dp"/>
 
-        <TextView
-            android:id="@+id/strongAuthRequiredText"
-            style="@style/TextAppearance.ConfirmDeviceCredentialsStrongAuthRequiredText"
-            android:layout_width="match_parent"
-            android:layout_height="0dp"
-            android:layout_weight="0.5"
-            android:singleLine="true"
-            android:ellipsize="marquee"
-            android:gravity="center"/>
+        <View android:layout_width="match_parent"
+              android:layout_height="0dp"
+              android:layout_weight="0.5"/>
 
         <com.android.internal.widget.LockPatternView
             android:id="@+id/lockPattern"
diff --git a/res/layout/credentials_disallowed_preference_screen.xml b/res/layout/credentials_disallowed_preference_screen.xml
deleted file mode 100644
index c4e8934..0000000
--- a/res/layout/credentials_disallowed_preference_screen.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
--->
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-             android:id="@+id/listContainer"
-             android:layout_width="match_parent"
-             android:layout_height="match_parent">
-
-        <ListView android:id="@android:id/list"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:drawSelectorOnTop="false"
-                android:scrollbarStyle="insideOverlay"
-                android:background="@android:color/white"
-                android:cacheColorHint="@android:color/white"
-                android:fadingEdgeLength="16dip" />
-
-        <TextView android:id="@android:id/empty"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:gravity="center"
-                android:text="@string/credentials_settings_not_available"
-                android:textAppearance="?android:attr/textAppearanceMedium" />
-</FrameLayout>
\ No newline at end of file
diff --git a/res/layout/custom_preference.xml b/res/layout/custom_preference.xml
deleted file mode 100644
index 087a37c..0000000
--- a/res/layout/custom_preference.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<!-- Custom layout almost same as original preference.xml in framework.
-     One (current) only difference is this layout doesn't have a spacer
-     on the left side of the preference. -->
-<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:paddingEnd="?android:attr/scrollbarSize">
-
-    <!-- <View
-        android:layout_width="@dimen/preference_widget_width"
-        android:layout_height="match_parent" /> -->
-
-    <RelativeLayout
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="6dip"
-        android:layout_marginEnd="6dip"
-        android:layout_marginTop="6dip"
-        android:layout_marginBottom="6dip"
-        android:layout_weight="1">
-
-        <TextView android:id="@+android:id/title"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:singleLine="true"
-            android:textAppearance="?android:attr/textAppearanceMedium"
-            android:ellipsize="marquee"
-            android:fadingEdge="horizontal" />
-
-        <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/textAppearanceSmall"
-            android:textColor="?android:attr/textColorSecondary"
-            android:maxLines="4" />
-
-    </RelativeLayout>
-
-    <!-- Preference should place its actual preference widget here. -->
-    <LinearLayout android:id="@+android:id/widget_frame"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:gravity="center_vertical"
-        android:orientation="vertical" />
-
-</LinearLayout>
diff --git a/res/layout/data_usage_app_title.xml b/res/layout/data_usage_app_title.xml
deleted file mode 100644
index 2b5e26c..0000000
--- a/res/layout/data_usage_app_title.xml
+++ /dev/null
@@ -1,37 +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.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content">
-    <TextView
-        android:id="@+id/app_title"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:layout_weight="1"
-        android:singleLine="true"
-        android:ellipsize="marquee"
-        android:textAppearance="@android:style/TextAppearance.Material.Subhead"
-        android:textColor="?android:attr/textColorPrimary"
-        android:textAlignment="viewStart" />
-    <TextView
-        android:id="@+id/app_summary"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:textAppearance="@android:style/TextAppearance.Material.Body1"
-        android:textColor="?android:attr/textColorSecondary"
-        android:textAlignment="viewEnd" />
-</LinearLayout>
diff --git a/res/layout/data_usage_cycle_item_dropdown.xml b/res/layout/data_usage_cycle_item_dropdown.xml
deleted file mode 100644
index a900521..0000000
--- a/res/layout/data_usage_cycle_item_dropdown.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@android:id/text1"
-    style="?android:attr/spinnerDropDownItemStyle"
-    android:singleLine="true"
-    android:layout_width="match_parent"
-    android:layout_height="?android:attr/listPreferredItemHeightSmall"
-    android:ellipsize="marquee"
-    android:textAppearance="@android:style/TextAppearance.Material.Subhead"
-    android:textColor="?android:attr/textColorPrimary"
-    android:textAlignment="inherit" />
diff --git a/res/layout/data_usage_header.xml b/res/layout/data_usage_header.xml
deleted file mode 100644
index 2fcceec..0000000
--- a/res/layout/data_usage_header.xml
+++ /dev/null
@@ -1,73 +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.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:orientation="vertical"
-    android:clipChildren="false"
-    android:clipToPadding="false">
-
-    <FrameLayout
-        android:id="@+id/network_switches_container"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content">
-        <LinearLayout
-            android:id="@+id/network_switches"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:orientation="vertical"
-            android:showDividers="middle|end"
-            android:divider="?android:attr/listDivider" />
-    </FrameLayout>
-
-    <include layout="@layout/data_usage_chart" />
-
-    <TextView
-        android:id="@+id/disclaimer"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:gravity="center_vertical"
-        android:text="@string/data_usage_disclaimer"
-        android:textAppearance="@android:style/TextAppearance.Material.Body1"
-        android:textColor="?android:attr/textColorSecondary"
-        android:paddingStart="?android:attr/listPreferredItemPaddingStart"
-        android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
-        android:paddingTop="8dp"
-        android:paddingBottom="0dp" />
-
-    <TextView
-        android:id="@android:id/empty"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:gravity="center_vertical"
-        android:visibility="gone"
-        android:text="@string/data_usage_empty"
-        android:textAppearance="@android:style/TextAppearance.Material.Body1"
-        android:textColor="?android:attr/textColorSecondary"
-        android:paddingStart="?android:attr/listPreferredItemPaddingStart"
-        android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
-        android:paddingTop="4dp"
-        android:paddingBottom="0dp" />
-
-    <View
-        android:id="@+id/stupid_padding"
-        android:layout_width="match_parent"
-        android:layout_height="8dp" />
-
-    <include layout="@layout/data_usage_detail" />
-
-</LinearLayout>
diff --git a/res/layout/default_apps_view.xml b/res/layout/default_apps_view.xml
deleted file mode 100644
index 3c8cc29..0000000
--- a/res/layout/default_apps_view.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-     Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:orientation="vertical">
-
-    <FrameLayout
-            android:layout_width="match_parent"
-            android:layout_height="0px"
-            android:layout_weight="1">
-
-        <ListView android:id="@android:id/list"
-                style="@style/PreferenceFragmentListSinglePane"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:drawSelectorOnTop="false"
-                android:scrollbarStyle="outsideOverlay"
-                android:fastScrollEnabled="true" />
-
-        <TextView android:id="@android:id/empty"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:gravity="center"
-                android:text="@string/no_default_apps"
-                android:textAppearance="?android:attr/textAppearanceLarge" />
-
-    </FrameLayout>
-
-</LinearLayout>
diff --git a/res/layout/default_apps_view_item.xml b/res/layout/default_apps_view_item.xml
deleted file mode 100644
index 2ded826..0000000
--- a/res/layout/default_apps_view_item.xml
+++ /dev/null
@@ -1,57 +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.
--->
-
-<GridLayout 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:paddingStart="?android:attr/listPreferredItemPaddingStart"
-            android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
-            android:paddingTop="8dip"
-            android:paddingBottom="8dip"
-            android:columnCount="4">
-
-    <ImageView
-            android:id="@+id/app_icon"
-            android:layout_width="@android:dimen/app_icon_size"
-            android:layout_height="@android:dimen/app_icon_size"
-            android:layout_rowSpan="2"
-            android:layout_marginEnd="8dip"
-            android:scaleType="centerInside"
-            android:contentDescription="@null" />
-
-    <TextView
-            android:id="@+id/app_name"
-            android:layout_width="0dip"
-            android:layout_columnSpan="2"
-            android:layout_gravity="fill_horizontal"
-            android:layout_marginTop="2dip"
-            android:singleLine="true"
-            android:ellipsize="marquee"
-            android:textAppearance="@android:style/TextAppearance.Material.Subhead"
-            android:textAlignment="viewStart"/>
-
-    <TextView
-            android:id="@+id/app_domains"
-            android:layout_column="1"
-            android:layout_row="1"
-            android:layout_gravity="fill_horizontal|top"
-            android:textAppearance="@android:style/TextAppearance.Material.Body1"
-            android:textColor="?android:attr/textColorSecondary"
-            android:textAlignment="viewStart" />
-
-</GridLayout>
diff --git a/res/layout/locale_drag_cell.xml b/res/layout/locale_drag_cell.xml
index 522f284..db9454a 100644
--- a/res/layout/locale_drag_cell.xml
+++ b/res/layout/locale_drag_cell.xml
@@ -68,6 +68,7 @@
         android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
         android:layout_gravity="center_vertical"
         android:src="@drawable/drag_handle"
+        android:importantForAccessibility="no"
         android:layout_alignParentEnd="true"
         android:layout_alignTop="@id/checkbox"
         android:layout_alignBottom="@id/checkbox"/>
diff --git a/res/layout/preference_bluetooth_profile.xml b/res/layout/preference_bluetooth_profile.xml
deleted file mode 100644
index f8e6bdc..0000000
--- a/res/layout/preference_bluetooth_profile.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT 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="wrap_content"
-    android:gravity="center_vertical">
-
-    <!-- Divider -->
-    <ImageView
-        android:id="@+id/divider"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center_vertical"
-        android:src="@drawable/nav_divider"
-        android:contentDescription="@null"
-         />
-
-    <!-- Details button -->
-    <ImageView
-        android:id="@+id/profileExpand"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center_vertical"
-        android:padding="8dip"
-        android:background="?android:attr/selectableItemBackground"
-        android:src="@drawable/ic_bt_config"
-        android:contentDescription="@string/bluetooth_profile_details" />
-
-</LinearLayout>
diff --git a/res/layout/preference_dialog_ringervolume.xml b/res/layout/preference_dialog_ringervolume.xml
deleted file mode 100644
index 2af1ba9..0000000
--- a/res/layout/preference_dialog_ringervolume.xml
+++ /dev/null
@@ -1,213 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-
-    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:orientation="vertical"
-            android:gravity="center_horizontal"
-            android:paddingBottom="12dip"
-            android:paddingTop="12dip">
-
-        <ImageView android:id="@android:id/icon"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:paddingTop="20dip"
-                android:visibility="gone"
-                android:contentDescription="@null" />
-
-        <!-- Dummy -->
-        <SeekBar android:id="@*android:id/seekbar"
-                android:layout_width="0dip"
-                android:layout_height="wrap_content"
-                android:layout_weight="1"
-                android:visibility="gone" />
-
-        <TextView
-                android:textAppearance="?android:attr/textAppearanceSmall"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:paddingStart="16dip"
-                android:layout_gravity="start"
-                android:text="@string/volume_media_description"
-            />
-
-        <!-- Used for the media volume -->
-        <LinearLayout
-                android:id="@+id/media_section"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="vertical">
-
-                <LinearLayout
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:paddingStart="8dip"
-                        android:orientation="horizontal"
-                        android:gravity="center_vertical">
-
-                        <ImageView android:id="@+id/media_mute_button"
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:padding="16dip"
-                                android:background="?android:attr/selectableItemBackground"
-                                android:contentDescription="@string/volume_media_mute"
-                            />
-
-                        <SeekBar android:id="@+id/media_volume_seekbar"
-                                android:layout_width="0dip"
-                                android:layout_height="wrap_content"
-                                android:layout_weight="1"
-                                android:paddingTop="2dip"
-                                android:layout_marginEnd="@dimen/volume_seekbar_side_margin" />
-                </LinearLayout>
-
-        </LinearLayout>
-
-        <!-- Used for the ringer/notification volume -->
-        <LinearLayout
-                android:id="@+id/ringer_section"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="vertical">
-
-            <TextView
-                    android:id="@+id/ringer_description_text"
-                    android:textAppearance="?android:attr/textAppearanceSmall"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="16dip"
-                    android:paddingStart="16dip"
-                    android:layout_gravity="start"
-                    android:text="@string/volume_ring_description"
-                />
-
-            <LinearLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:paddingStart="8dip"
-                    android:orientation="horizontal"
-                    android:gravity="center_vertical">
-
-                    <ImageView android:id="@+id/ringer_mute_button"
-                            android:layout_width="wrap_content"
-                            android:layout_height="wrap_content"
-                            android:padding="16dip"
-                            android:background="?android:attr/selectableItemBackground"
-                            android:contentDescription="@string/volume_ring_mute"
-                        />
-
-                    <SeekBar android:id="@+id/ringer_volume_seekbar"
-                            android:layout_width="0dip"
-                            android:layout_height="wrap_content"
-                            android:layout_weight="1"
-                            android:paddingTop="2dip"
-                            android:layout_marginEnd="@dimen/volume_seekbar_side_margin" />
-            </LinearLayout>
-
-        </LinearLayout>
-
-        <!-- Used for the notification volume -->
-        <LinearLayout
-                android:id="@+id/notification_section"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="vertical">
-
-            <TextView
-                    android:id="@+id/notification_description_text"
-                    android:textAppearance="?android:attr/textAppearanceSmall"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="16dip"
-                    android:paddingStart="16dip"
-                    android:layout_gravity="start"
-                    android:text="@string/volume_notification_description"
-                />
-
-            <LinearLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:paddingStart="8dip"
-                    android:orientation="horizontal"
-                    android:gravity="center_vertical">
-
-                    <ImageView android:id="@+id/notification_mute_button"
-                            android:layout_width="wrap_content"
-                            android:layout_height="wrap_content"
-                            android:padding="16dip"
-                            android:background="?android:attr/selectableItemBackground"
-                            android:contentDescription="@string/volume_notification_mute"
-                        />
-
-                    <SeekBar android:id="@+id/notification_volume_seekbar"
-                            android:layout_width="0dip"
-                            android:layout_height="wrap_content"
-                            android:layout_weight="1"
-                            android:paddingTop="2dip"
-                            android:layout_marginEnd="@dimen/volume_seekbar_side_margin" />
-            </LinearLayout>
-
-        </LinearLayout>
-
-        <!-- Used for the alarm volume -->
-        <LinearLayout
-                android:id="@+id/alarm_section"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="vertical">
-
-                <TextView
-                        android:textAppearance="?android:attr/textAppearanceSmall"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_marginTop="16dip"
-                        android:paddingStart="16dip"
-                        android:layout_gravity="start"
-                        android:text="@string/volume_alarm_description"
-                    />
-
-                <!-- Used for the alarm volume -->
-                <LinearLayout
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:paddingStart="8dip"
-                        android:orientation="horizontal"
-                        android:gravity="center_vertical">
-
-                        <ImageView android:id="@+id/alarm_mute_button"
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:padding="16dip"
-                                android:background="?android:attr/selectableItemBackground"
-                                android:contentDescription="@string/volume_alarm_mute" />
-                        <SeekBar android:id="@+id/alarm_volume_seekbar"
-                                android:layout_width="0dip"
-                                android:layout_height="wrap_content"
-                                android:layout_weight="1"
-                                android:paddingTop="2dip"
-                                android:layout_marginEnd="@dimen/volume_seekbar_side_margin" />
-                </LinearLayout>
-
-        </LinearLayout>
-
-    </LinearLayout>
-
-</ScrollView>
diff --git a/res/layout/preference_header_button_item.xml b/res/layout/preference_header_button_item.xml
deleted file mode 100644
index ecbd14b..0000000
--- a/res/layout/preference_header_button_item.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<!-- Layout of a header item in PreferenceActivity. -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:descendantFocusability="blocksDescendants"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:minHeight="48dp"
-    android:background="?android:attr/activatedBackgroundIndicator"
-    android:gravity="center_vertical"
-    android:paddingEnd="?android:attr/scrollbarSize">
-
-    <LinearLayout
-        android:layout_width="@dimen/header_icon_width"
-        android:layout_marginStart="6dip"
-        android:layout_marginEnd="6dip"
-        android:layout_height="wrap_content">
-        <ImageView
-            android:id="@+id/icon"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_gravity="center" />
-    </LinearLayout>
-
-    <RelativeLayout
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="2dip"
-        android:layout_marginEnd="6dip"
-        android:layout_marginTop="6dip"
-        android:layout_marginBottom="6dip"
-        android:layout_weight="1">
-
-        <TextView android:id="@+android:id/title"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:singleLine="true"
-            android:textAppearance="?android:attr/textAppearanceMedium"
-            android:ellipsize="marquee"
-            android:fadingEdge="horizontal" />
-
-        <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/textAppearanceSmall"
-            android:ellipsize="end"
-            android:maxLines="2" />
-
-    </RelativeLayout>
-
-   <View
-       android:id="@+id/divider"
-       style="@style/VertDivider"
-       android:layout_marginTop="6dp"
-       android:layout_marginBottom="6dp" />
-
-   <ImageButton android:id="@+id/buttonWidget"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:layout_gravity="center"
-       android:padding="8dip"
-       android:focusable="false"
-       style="?android:attr/borderlessButtonStyle"
-       android:clickable="true" />
-
-
-</LinearLayout>
diff --git a/res/layout/preference_header_item.xml b/res/layout/preference_header_item.xml
deleted file mode 100644
index 36ed8e4..0000000
--- a/res/layout/preference_header_item.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<!-- Layout of a header item in PreferenceActivity. -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:minHeight="48dp"
-    android:background="?android:attr/activatedBackgroundIndicator"
-    android:gravity="center_vertical"
-    android:paddingEnd="?android:attr/scrollbarSize">
-
-    <LinearLayout
-        android:layout_width="@dimen/header_icon_width"
-        android:layout_marginStart="6dip"
-        android:layout_marginEnd="6dip"
-        android:layout_height="wrap_content">
-        <ImageView
-            android:id="@+id/icon"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_gravity="center" />
-    </LinearLayout>
-
-    <RelativeLayout
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="2dip"
-        android:layout_marginEnd="6dip"
-        android:layout_marginTop="6dip"
-        android:layout_marginBottom="6dip"
-        android:layout_weight="1">
-
-        <TextView android:id="@+android:id/title"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:singleLine="true"
-            android:textAppearance="?android:attr/textAppearanceMedium"
-            android:ellipsize="marquee"
-            android:fadingEdge="horizontal" />
-
-        <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/textAppearanceSmall"
-            android:ellipsize="end"
-            android:maxLines="2" />
-
-    </RelativeLayout>
-
-</LinearLayout>
diff --git a/res/layout/preference_header_switch_item.xml b/res/layout/preference_header_switch_item.xml
deleted file mode 100644
index 4ab09d6..0000000
--- a/res/layout/preference_header_switch_item.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2006 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<!-- Layout of a header item in PreferenceActivity. -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:minHeight="48dp"
-    android:background="?android:attr/activatedBackgroundIndicator"
-    android:gravity="center_vertical"
-    android:paddingEnd="?android:attr/scrollbarSize">
-
-    <LinearLayout
-        android:layout_width="@dimen/header_icon_width"
-        android:layout_marginStart="6dip"
-        android:layout_marginEnd="6dip"
-        android:layout_height="wrap_content">
-        <ImageView
-            android:id="@+id/icon"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_gravity="center" />
-    </LinearLayout>
-
-    <RelativeLayout
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="2dip"
-        android:layout_marginEnd="6dip"
-        android:layout_marginTop="6dip"
-        android:layout_marginBottom="6dip"
-        android:layout_weight="1">
-
-        <TextView android:id="@+android:id/title"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:singleLine="true"
-            android:textAppearance="?android:attr/textAppearanceMedium"
-            android:ellipsize="marquee"
-            android:fadingEdge="horizontal" />
-
-        <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/textAppearanceSmall"
-            android:ellipsize="end"
-            android:maxLines="2" />
-
-    </RelativeLayout>
-
-   <Switch android:id="@+id/switchWidget"
-       android:layout_width="wrap_content"
-       android:layout_height="wrap_content"
-       android:layout_gravity="center"
-       android:padding="8dip"
-       android:focusable="false"
-       android:clickable="true" />
-
-</LinearLayout>
diff --git a/res/layout/preference_memoryusage.xml b/res/layout/preference_memoryusage.xml
deleted file mode 100644
index 6503333..0000000
--- a/res/layout/preference_memoryusage.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
-    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">
-
-    <com.android.settings.deviceinfo.PercentageBarChart
-        android:id="@+id/percentage_bar_chart"
-        android:layout_width="match_parent"
-        android:layout_height="32dip"
-        android:minHeight="?android:attr/listPreferredItemHeight"
-        android:gravity="center_vertical"
-        settings:minTickWidth="6dip"
-        settings:emptyColor="@color/material_empty_color_light">
-    </com.android.settings.deviceinfo.PercentageBarChart>
-
-</LinearLayout>
diff --git a/res/layout/preference_rename_widget.xml b/res/layout/preference_rename_widget.xml
deleted file mode 100644
index 81e401f..0000000
--- a/res/layout/preference_rename_widget.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<!-- Layout for a text label in the user limits screen. -->
-<TextView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:text="@string/user_rename" />
diff --git a/res/layout/preference_settings_checkbox_widget.xml b/res/layout/preference_settings_checkbox_widget.xml
deleted file mode 100644
index 41cfaa5..0000000
--- a/res/layout/preference_settings_checkbox_widget.xml
+++ /dev/null
@@ -1,51 +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.
--->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:gravity="center_vertical"
-    android:paddingEnd="?android:attr/scrollbarSize">
-
-    <!-- Settings button -->
-    <ImageView
-        android:id="@+id/settings_button"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center_vertical"
-        android:padding="8dip"
-        android:background="?android:attr/selectableItemBackground"
-        android:src="@drawable/ic_sysbar_quicksettings"
-        android:contentDescription="@string/settings_button" />
-
-    <!-- Divider -->
-    <ImageView
-        android:id="@+id/divider"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center_vertical"
-        android:src="@drawable/nav_divider"
-        android:contentDescription="@null" />
-
-    <!-- CheckBox -->
-    <CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
-        android:id="@+android:id/checkbox"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center"
-        android:focusable="false"
-        android:clickable="false" />
-
-</LinearLayout>
diff --git a/res/layout/preference_settings_icon_widget.xml b/res/layout/preference_settings_icon_widget.xml
deleted file mode 100644
index 7160ca7..0000000
--- a/res/layout/preference_settings_icon_widget.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:src="@drawable/ic_settings_24dp"
-    android:tint="@color/material_grey_600"
-    android:contentDescription="@null"/>
diff --git a/res/layout/preference_spellchecker.xml b/res/layout/preference_spellchecker.xml
deleted file mode 100644
index 6408976..0000000
--- a/res/layout/preference_spellchecker.xml
+++ /dev/null
@@ -1,99 +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.
--->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
-    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
-    android:minHeight="?android:attr/listPreferredItemHeight"
-    android:gravity="center_vertical">
-
-    <LinearLayout
-        android:id="@+id/pref_left_button"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:layout_weight="1"
-        android:gravity="center_vertical"
-        android:clickable="true"
-        android:focusable="true"
-        android:background="?android:attr/selectableItemBackground">
-
-        <LinearLayout
-            android:id="@android:id/widget_frame"
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
-            android:gravity="center_vertical"
-            android:orientation="vertical" />
-
-        <RelativeLayout
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginStart="15dip"
-            android:layout_marginEnd="6dip"
-            android:layout_marginTop="6dip"
-            android:layout_marginBottom="6dip"
-            android:layout_weight="1">
-
-            <TextView
-                android:id="@+android:id/title"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:singleLine="true"
-                android:textAppearance="?android:attr/textAppearanceMedium"
-                android:ellipsize="marquee"
-                android:fadingEdge="horizontal"/>
-
-            <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:paddingBottom="3dip"
-                android:visibility="gone"
-                android:textAppearance="?android:attr/textAppearanceSmall"
-                android:textSize="13sp"
-                android:textColor="?android:attr/textColorSecondary"
-                android:focusable="false"
-                android:maxLines="4" />
-
-        </RelativeLayout>
-
-    </LinearLayout>
-
-    <View
-        android:layout_width="2dip"
-        android:layout_height="match_parent"
-        android:layout_marginTop="5dip"
-        android:layout_marginBottom="5dip"
-        android:background="@android:drawable/divider_horizontal_dark" />
-
-    <ImageView
-        android:id="@+id/pref_right_button"
-        android:layout_width="wrap_content"
-        android:layout_height="fill_parent"
-        android:paddingStart="15dip"
-        android:paddingEnd="?android:attr/scrollbarSize"
-        android:src="@drawable/ic_sysbar_quicksettings"
-        android:contentDescription="@string/input_method_settings_button"
-        android:layout_gravity="center"
-        android:clickable="true"
-        android:focusable="true"
-        android:background="?android:attr/selectableItemBackground" />
-
-</LinearLayout>
diff --git a/res/layout/preference_spellchecker_widget.xml b/res/layout/preference_spellchecker_widget.xml
deleted file mode 100644
index e4971ec..0000000
--- a/res/layout/preference_spellchecker_widget.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<RadioButton
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/pref_radio"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:clickable="false"
-    android:focusable="false" />
\ No newline at end of file
diff --git a/res/layout/preference_start_widget.xml b/res/layout/preference_start_widget.xml
deleted file mode 100644
index 74fd57f..0000000
--- a/res/layout/preference_start_widget.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:minHeight="?android:attr/listPreferredItemHeightSmall"
-    android:gravity="center_vertical"
-    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
-    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
-    android:background="?android:attr/selectableItemBackground">
-
-    <LinearLayout
-        android:id="@android:id/widget_frame"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:minWidth="@dimen/checkbox_widget_min_width"
-        android:gravity="center"
-        android:orientation="horizontal" />
-
-    <RelativeLayout
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_weight="1"
-        android:paddingTop="@dimen/checkbox_layout_padding"
-        android:paddingBottom="@dimen/checkbox_layout_padding">
-
-        <TextView
-            android:id="@+android:id/title"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:singleLine="true"
-            android:textAppearance="@android:style/TextAppearance.Material.Subhead"
-            android:textColor="?android:attr/textColorPrimary"
-            android:ellipsize="marquee"
-            android:fadingEdge="horizontal" />
-
-        <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:visibility="gone"
-            android:textAlignment="viewStart"
-            android:textAppearance="@android:style/TextAppearance.Material.Body1"
-            android:textColor="?android:attr/textColorSecondary"
-            android:maxLines="10" />
-
-    </RelativeLayout>
-
-</LinearLayout>
diff --git a/res/layout/preference_widget_shortcut.xml b/res/layout/preference_widget_shortcut.xml
deleted file mode 100644
index 81ccaa1..0000000
--- a/res/layout/preference_widget_shortcut.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT 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/shortcut" 
-    android:layout_width="48dip"
-    android:layout_height="48dip"
-    android:gravity="center"
-    android:background="@*android:drawable/btn_default_material"
-    android:textAppearance="?android:attr/textAppearanceLarge" />
diff --git a/res/layout/process_preference_category.xml b/res/layout/process_preference_category.xml
deleted file mode 100644
index 18ea23c..0000000
--- a/res/layout/process_preference_category.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:layout_marginBottom="16dip"
-    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
-    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
-    android:paddingTop="16dip">
-    <TextView
-        android:id="@android:id/title"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:textAppearance="@android:style/TextAppearance.Material.Body2"
-        android:textColor="?android:attr/colorAccent" />
-
-    <TextView
-        android:id="@android:id/summary"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_alignParentEnd="true"
-        android:textAppearance="@android:style/TextAppearance.Material.Body2"
-        android:textColor="?android:attr/colorAccent" />
-
-</RelativeLayout>
diff --git a/res/layout/process_stats_proc_details.xml b/res/layout/process_stats_proc_details.xml
deleted file mode 100644
index ff1192d..0000000
--- a/res/layout/process_stats_proc_details.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        android:id="@+id/processes"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:orientation="vertical">
-
-    <TextView
-            android:id="@+id/processes_name"
-            style="?android:attr/listSeparatorTextViewStyle" />
-
-</LinearLayout>
diff --git a/res/layout/profile_icon_small.xml b/res/layout/profile_icon_small.xml
deleted file mode 100644
index 3fd4bfc..0000000
--- a/res/layout/profile_icon_small.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<ImageView
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        android:id="@+id/icon"
-        android:layout_width="30dp"
-        android:layout_height="30dp"
-        android:layout_marginEnd="4dip"
-        android:gravity="center"
-        android:layout_gravity="center_vertical"
-        android:contentDescription="@null" />
diff --git a/res/values/ids.xml b/res/values/ids.xml
index f9334e4..dcf279a 100644
--- a/res/values/ids.xml
+++ b/res/values/ids.xml
@@ -24,4 +24,11 @@
     <item type="id" name="lock_password" />
 
     <item type="id" name="encrypt_dont_require_password" />
+
+    <!-- Used for custom accessibility actions in the Drag-and-Drop locale list -->
+    <item type="id" name="action_drag_move_up" />
+    <item type="id" name="action_drag_move_down" />
+    <item type="id" name="action_drag_move_top" />
+    <item type="id" name="action_drag_move_bottom" />
+    <item type="id" name="action_drag_remove" />
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index c0be9e0..99404e1 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -530,6 +530,17 @@
     <!-- This text shows in the language picker when the system is not translated into that languages [CHAR LIMIT=80] -->
     <string name="locale_not_translated">May not be available in some apps</string>
 
+    <!-- Label for an accessibility action that moves a language up in the ordered language list [CHAR LIMIT=20] -->
+    <string name="action_drag_label_move_up">Move up</string>
+    <!-- Label for an accessibility action that moves a language down in the ordered language list [CHAR LIMIT=20] -->
+    <string name="action_drag_label_move_down">Move down</string>
+    <!-- Label for an accessibility action that moves a language to the top of the ordered language list [CHAR LIMIT=20] -->
+    <string name="action_drag_label_move_top">Move to top</string>
+    <!-- Label for an accessibility action that moves a language to the bottom of the ordered language list [CHAR LIMIT=20] -->
+    <string name="action_drag_label_move_bottom">Move to bottom</string>
+    <!-- Label for an accessibility action that removes the currently selected language from the the ordered language list [CHAR LIMIT=20] -->
+    <string name="action_drag_label_remove">Remove language</string>
+
     <!-- The title of the dialog to pick an activity.  This is shown when there are multiple activities that can do a particular action.  For example, suppose you click on the "Share" menu item in the Browser.  Since you can share the webpage URL via many communication methods, this dialog would come up with choices like "Email", "IM", etc.  This is a generic message, and the previous example is a single possible scenario (so please don't assume it's for the browser or anything :) ). -->
     <string name="activity_picker_label">Choose activity</string>
     <!-- Do not translate. -->
@@ -735,6 +746,10 @@
     <string name="security_settings_fingerprint_enroll_introduction_cancel">Cancel</string>
     <!-- Button text to continue to the next screen from the introduction [CHAR LIMIT=22] -->
     <string name="security_settings_fingerprint_enroll_introduction_continue">Continue</string>
+    <!-- Button text to cancel enrollment from the introduction (this string variant is used while in setup wizard) [CHAR LIMIT=22] -->
+    <string name="security_settings_fingerprint_enroll_introduction_cancel_setup">Skip</string>
+    <!-- Button text to continue to the next screen from the introduction (this string variant is used while in setup wizard) [CHAR LIMIT=22] -->
+    <string name="security_settings_fingerprint_enroll_introduction_continue_setup">Add fingerprint</string>
     <!-- Dialog text shown when the user tries to skip setting up a screen lock, warning them of potential consequences of not doing so, including loss of factory reset protection. (tablet) [CHAR LIMIT=NONE] -->
     <string name="lock_screen_intro_skip_dialog_text_frp" product="tablet">Device protection features will not be activated. You won\u2019t be able to prevent others from using this tablet if it\u2019s lost, stolen or wiped.</string>
     <!-- Dialog text shown when the user tries to skip setting up a screen lock, warning them of potential consequences of not doing so, including loss of factory reset protection. (device) [CHAR LIMIT=NONE] -->
@@ -981,8 +996,12 @@
     <!--  Title for security picker to choose the profile unlock method: None/Pattern/PIN/Password [CHAR LIMIT=22] -->
     <string name="lock_settings_picker_title_profile">Choose work lock</string>
 
-    <!--  Title for security picker in setup wizard to choose the unlock method: None/Pattern/PIN/Password [CHAR LIMIT=22] -->
-    <string name="setup_lock_settings_picker_title">Protect your phone</string>
+    <!--  Title for security picker in setup wizard to choose the unlock method: None/Pattern/PIN/Password (tablet) [CHAR LIMIT=22] -->
+    <string name="setup_lock_settings_picker_title" product="tablet">Protect your tablet</string>
+    <!--  Title for security picker in setup wizard to choose the unlock method: None/Pattern/PIN/Password (device) [CHAR LIMIT=22] -->
+    <string name="setup_lock_settings_picker_title" product="device">Protect your device</string>
+    <!--  Title for security picker in setup wizard to choose the unlock method: None/Pattern/PIN/Password (phone) [CHAR LIMIT=22] -->
+    <string name="setup_lock_settings_picker_title" product="default">Protect your phone</string>
 
     <!-- Title for screen in setup wizard, prompting user to choose the their backup screen lock method [CHAR LIMIT=NONE] -->
     <string name="setup_lock_settings_picker_fingerprint_message">Your fingerprint may be less secure than a strong pattern, PIN, or password. For added security, set up a backup screen lock.</string>
@@ -2134,7 +2153,7 @@
     <!-- Dream settings screen, caption for when dreams are disabled -->
     <string name="screensaver_settings_disabled_prompt">To control what happens when the phone is docked and/or sleeping, turn screen saver on.</string>
     <!-- Dream settings screen, action label, when to dream -->
-    <string name="screensaver_settings_when_to_dream">When to turn screen saver on</string>
+    <string name="screensaver_settings_when_to_dream">When to start screen saver</string>
     <!-- Dream settings screen, button label to start dreaming -->
     <string name="screensaver_settings_dream_start">Start now</string>
     <!-- Dream settings screen, button label for settings for a specific screensaver -->
@@ -3071,13 +3090,20 @@
     <!-- Message to be used to explain the user that he needs to enter his work password to continue a
          particular operation. [CHAR LIMIT=70]-->
     <string name="lockpassword_confirm_your_password_generic_profile">Enter your work password to continue</string>
-    <!-- An explanation text that the pattern needs to be solved since the device has just been restarted. [CHAR LIMIT=80] -->
-    <string name="lockpassword_strong_auth_required_reason_restart_pattern">Pattern required after device restarts</string>
-    <!-- An explanation text that the pin needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
-    <string name="lockpassword_strong_auth_required_reason_restart_pin">PIN required after device restarts</string>
 
+    <!-- An explanation text that the pattern needs to be solved since the device has just been restarted. [CHAR LIMIT=80] -->
+    <string name="lockpassword_strong_auth_required_reason_restart_device_pattern">Use your device pattern to continue. It\'s required after the device restarts.</string>
+    <!-- An explanation text that the pin needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+    <string name="lockpassword_strong_auth_required_reason_restart_device_pin">Enter your device PIN to continue. It\'s required after the device restarts.</string>
     <!-- An explanation text that the password needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
-    <string name="lockpassword_strong_auth_required_reason_restart_password">Password required after device restarts</string>
+    <string name="lockpassword_strong_auth_required_reason_restart_device_password">Enter your device password to continue. It\'s required after the device restarts.</string>
+
+    <!-- An explanation text that the pattern needs to be solved since the device has just been restarted. [CHAR LIMIT=80] -->
+    <string name="lockpassword_strong_auth_required_reason_restart_work_pattern">Use your work pattern to continue. It\'s required after the device restarts.</string>
+    <!-- An explanation text that the pin needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+    <string name="lockpassword_strong_auth_required_reason_restart_work_pin">Enter your work PIN to continue. It\'s required after the device restarts.</string>
+    <!-- An explanation text that the password needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
+    <string name="lockpassword_strong_auth_required_reason_restart_work_password">Enter your work password to continue. It\'s required after the device restarts.</string>
 
     <!-- Security & location settings screen, change security method screen instruction if user
          enters incorrect PIN [CHAR LIMIT=30] -->
@@ -5167,8 +5193,8 @@
     <string name="vpn_save">Save</string>
     <!-- Button label to connect to a VPN profile. [CHAR LIMIT=40] -->
     <string name="vpn_connect">Connect</string>
-    <!-- Button label to continue changing a VPN profile. [CHAR LIMIT=40] -->
-    <string name="vpn_continue">Continue</string>
+    <!-- Button label to connect a VPN profile, replacing the current one. [CHAR LIMIT=40] -->
+    <string name="vpn_replace">Replace</string>
     <!-- Dialog title to edit a VPN profile. [CHAR LIMIT=40] -->
     <string name="vpn_edit">Edit VPN profile</string>
     <!-- Button label to forget a VPN profile. [CHAR LIMIT=40] -->
@@ -5186,12 +5212,11 @@
     <!-- Dialog message title to set another VPN app to be always-on [CHAR LIMIT=40] -->
     <string name="vpn_replace_always_on_vpn_title">Replace existing VPN?</string>
     <!-- Dialog message body to set another VPN app to be always-on [CHAR LIMIT=NONE] -->
-    <string name="vpn_replace_always_on_vpn_message">You already have a VPN connected to this profile. If you connected to one, your existing VPN will be replaced.</string>
-    <!-- Notification title when the user can't connect an always-on vpn [CHAR LIMIT=NONE] -->
-    <string name="vpn_cant_connect_notification_title"><xliff:g id="vpn_name" example="OpenVPN">%1$s</xliff:g> can\'t connect</string>
-    <!-- Notification subtitle when the user can't connect an always-on vpn [CHAR LIMIT=NONE] -->
-    <string name="vpn_tap_for_vpn_settings">Tap for VPN settings</string>
-
+    <string name="vpn_replace_always_on_vpn_message">You\'re already connected to a VPN. If you connect to a different one, your existing VPN will be replaced.</string>
+    <!-- Dialog mesage title when the user can't connect an always-on vpn [CHAR LIMIT=NONE] -->
+    <string name="vpn_cant_connect_title"><xliff:g id="vpn_name" example="OpenVPN">%1$s</xliff:g> can\'t connect</string>
+    <!-- Dialog message subtitle when the user can't connect an always-on vpn [CHAR LIMIT=NONE] -->
+    <string name="vpn_cant_connect_message">This app doesn\'t support always-on VPN.</string>
     <!-- Preference title for VPN settings. [CHAR LIMIT=40] -->
     <string name="vpn_title">VPN</string>
     <!-- Preference title to create a new VPN profile. [CHAR LIMIT=40] -->
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 0eb566c..45d2c11 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -357,11 +357,6 @@
         <item name="android:textColor">@color/warning</item>
     </style>
 
-    <style name="TextAppearance.ConfirmDeviceCredentialsStrongAuthRequiredText"
-        parent="android:TextAppearance.Material.Body1">
-        <item name="android:textColor">?android:attr/textColorSecondary</item>
-    </style>
-
     <style name="TextAppearance.Small.SwitchBar">
         <item name="android:textColor">?android:attr/textColorPrimary</item>
         <item name="android:textStyle">normal</item>
diff --git a/src/com/android/settings/ApnSettings.java b/src/com/android/settings/ApnSettings.java
index a6cd9b2..870c5aa 100644
--- a/src/com/android/settings/ApnSettings.java
+++ b/src/com/android/settings/ApnSettings.java
@@ -49,6 +49,7 @@
 import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
+import android.view.MotionEvent;
 import android.widget.TextView;
 import android.widget.Toast;
 
@@ -484,7 +485,11 @@
     @Override
     public Dialog onCreateDialog(int id) {
         if (id == DIALOG_RESTORE_DEFAULTAPN) {
-            ProgressDialog dialog = new ProgressDialog(getActivity());
+            ProgressDialog dialog = new ProgressDialog(getActivity()) {
+                public boolean onTouchEvent(MotionEvent event) {
+                    return true;
+                }
+            };
             dialog.setMessage(getResources().getString(R.string.restore_default_apn));
             dialog.setCancelable(false);
             return dialog;
diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java
index 1182ed5..74ec4bb 100644
--- a/src/com/android/settings/ChooseLockGeneric.java
+++ b/src/com/android/settings/ChooseLockGeneric.java
@@ -651,8 +651,10 @@
             if (mFingerprintManager != null && mFingerprintManager.isHardwareDetected()
                     && mFingerprintManager.hasEnrolledFingerprints(userId)) {
                 mFingerprintManager.setActiveUser(userId);
-                mFingerprintManager.remove(
-                        new Fingerprint(null, userId, 0, 0), userId,
+                // For the purposes of M and N, groupId is the same as userId.
+                final int groupId = userId;
+                Fingerprint finger = new Fingerprint(null, groupId, 0, 0);
+                mFingerprintManager.remove(finger, userId,
                         new RemovalCallback() {
                             @Override
                             public void onRemovalError(Fingerprint fp, int errMsgId,
diff --git a/src/com/android/settings/ConfirmDeviceCredentialBaseFragment.java b/src/com/android/settings/ConfirmDeviceCredentialBaseFragment.java
index 0572bcf..ae321e8 100644
--- a/src/com/android/settings/ConfirmDeviceCredentialBaseFragment.java
+++ b/src/com/android/settings/ConfirmDeviceCredentialBaseFragment.java
@@ -66,7 +66,7 @@
             PACKAGE + ".ConfirmCredentials.showWhenLocked";
 
     private FingerprintUiHelper mFingerprintHelper;
-    private boolean mIsStrongAuthRequired;
+    protected boolean mIsStrongAuthRequired;
     private boolean mAllowFpAuthentication;
     protected Button mCancelButton;
     protected ImageView mFingerprintIcon;
@@ -74,7 +74,6 @@
     protected int mUserId;
     protected LockPatternUtils mLockPatternUtils;
     protected TextView mErrorTextView;
-    protected TextView mStrongAuthRequiredTextView;
     protected final Handler mHandler = new Handler();
 
     @Override
@@ -97,11 +96,6 @@
     public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
         super.onViewCreated(view, savedInstanceState);
         mCancelButton = (Button) view.findViewById(R.id.cancelButton);
-        if (mStrongAuthRequiredTextView != null) {
-            // INIVISIBLE instead of GONE because it also acts as a weighted spacer
-            mStrongAuthRequiredTextView.setVisibility(
-                    mIsStrongAuthRequired ? View.VISIBLE : View.INVISIBLE);
-        }
         mFingerprintIcon = (ImageView) view.findViewById(R.id.fingerprintIcon);
         mFingerprintHelper = new FingerprintUiHelper(
                 mFingerprintIcon,
diff --git a/src/com/android/settings/ConfirmLockPassword.java b/src/com/android/settings/ConfirmLockPassword.java
index a1bc3dd..61cf2ae 100644
--- a/src/com/android/settings/ConfirmLockPassword.java
+++ b/src/com/android/settings/ConfirmLockPassword.java
@@ -50,6 +50,18 @@
 
 public class ConfirmLockPassword extends ConfirmDeviceCredentialBaseActivity {
 
+    // The index of the array is isStrongAuth << 2 + isProfile << 1 + isAlpha.
+    private static final int[] DETAIL_TEXTS = new int[] {
+        R.string.lockpassword_confirm_your_pin_generic,
+        R.string.lockpassword_confirm_your_password_generic,
+        R.string.lockpassword_confirm_your_pin_generic_profile,
+        R.string.lockpassword_confirm_your_password_generic_profile,
+        R.string.lockpassword_strong_auth_required_reason_restart_device_pin,
+        R.string.lockpassword_strong_auth_required_reason_restart_device_password,
+        R.string.lockpassword_strong_auth_required_reason_restart_work_pin,
+        R.string.lockpassword_strong_auth_required_reason_restart_work_password,
+    };
+
     public static class InternalActivity extends ConfirmLockPassword {
     }
 
@@ -124,18 +136,6 @@
                     || DevicePolicyManager.PASSWORD_QUALITY_COMPLEX == storedQuality
                     || DevicePolicyManager.PASSWORD_QUALITY_MANAGED == storedQuality;
 
-            // Strong auth is required when the user is locked.
-            // Currently a user does not get locked again until the device restarts. Show the
-            // hint text as "device has just been restarted".
-            mStrongAuthRequiredTextView = (TextView) view.findViewById(R.id.strongAuthRequiredText);
-            if (mIsAlpha) {
-                mStrongAuthRequiredTextView.setText(
-                        R.string.lockpassword_strong_auth_required_reason_restart_password);
-            } else {
-                mStrongAuthRequiredTextView.setText(
-                        R.string.lockpassword_strong_auth_required_reason_restart_pin);
-            }
-
             mImm = (InputMethodManager) getActivity().getSystemService(
                     Context.INPUT_METHOD_SERVICE);
 
@@ -186,13 +186,10 @@
         private int getDefaultDetails() {
             boolean isProfile = Utils.isManagedProfile(
                     UserManager.get(getActivity()), mEffectiveUserId);
-            if (mIsAlpha) {
-                return isProfile ? R.string.lockpassword_confirm_your_password_generic_profile
-                        : R.string.lockpassword_confirm_your_password_generic;
-            } else {
-                return isProfile ? R.string.lockpassword_confirm_your_pin_generic_profile
-                        : R.string.lockpassword_confirm_your_pin_generic;
-            }
+            // Map boolean flags to an index by isStrongAuth << 2 + isProfile << 1 + isAlpha.
+            int index = ((mIsStrongAuthRequired ? 1 : 0) << 2) + ((isProfile ? 1 : 0 ) << 1)
+                    + (mIsAlpha ? 1 : 0);
+            return DETAIL_TEXTS[index];
         }
 
         private int getErrorMessage() {
diff --git a/src/com/android/settings/ConfirmLockPattern.java b/src/com/android/settings/ConfirmLockPattern.java
index 875fcb7..262cdc8 100644
--- a/src/com/android/settings/ConfirmLockPattern.java
+++ b/src/com/android/settings/ConfirmLockPattern.java
@@ -118,7 +118,6 @@
             mHeaderTextView = (TextView) view.findViewById(R.id.headerText);
             mLockPatternView = (LockPatternView) view.findViewById(R.id.lockPattern);
             mDetailsTextView = (TextView) view.findViewById(R.id.detailsText);
-            mStrongAuthRequiredTextView = (TextView) view.findViewById(R.id.strongAuthRequiredText);
             mErrorTextView = (TextView) view.findViewById(R.id.errorText);
             mLeftSpacerLandscape = view.findViewById(R.id.leftSpacer);
             mRightSpacerLandscape = view.findViewById(R.id.rightSpacer);
@@ -176,13 +175,6 @@
                 getFragmentManager().beginTransaction().add(mCredentialCheckResultTracker,
                         FRAGMENT_TAG_CHECK_LOCK_RESULT).commit();
             }
-
-            // Strong auth is required when the user is locked.
-            // Currently a user does not get locked again until the device restarts. Show the
-            // hint text as "device has just been restarted".
-            mStrongAuthRequiredTextView.setText(
-                    R.string.lockpassword_strong_auth_required_reason_restart_pattern);
-
             return view;
         }
 
@@ -237,6 +229,20 @@
             mFingerprintIcon.setAlpha(0f);
         }
 
+        private int getDefaultDetails() {
+            boolean isProfile = Utils.isManagedProfile(
+                    UserManager.get(getActivity()), mEffectiveUserId);
+            if (isProfile) {
+                return mIsStrongAuthRequired
+                        ? R.string.lockpassword_strong_auth_required_reason_restart_work_pattern
+                        : R.string.lockpassword_confirm_your_pattern_generic_profile;
+            } else {
+                return mIsStrongAuthRequired
+                        ? R.string.lockpassword_strong_auth_required_reason_restart_device_pattern
+                        : R.string.lockpassword_confirm_your_pattern_generic;
+            }
+        }
+
         private Object[][] getActiveViews() {
             ArrayList<ArrayList<Object>> result = new ArrayList<>();
             result.add(new ArrayList<Object>(Collections.singletonList(mHeaderTextView)));
@@ -282,13 +288,8 @@
                     }
                     if (mDetailsText != null) {
                         mDetailsTextView.setText(mDetailsText);
-                    } else if (!Utils.isManagedProfile(
-                            UserManager.get(getActivity()), mEffectiveUserId)) {
-                        mDetailsTextView.setText(
-                                R.string.lockpassword_confirm_your_pattern_generic);
                     } else {
-                        mDetailsTextView.setText(
-                                R.string.lockpassword_confirm_your_pattern_generic_profile);
+                        mDetailsTextView.setText(getDefaultDetails());
                     }
                     mErrorTextView.setText("");
                     if (isProfileChallenge()) {
diff --git a/src/com/android/settings/DateTimeSettings.java b/src/com/android/settings/DateTimeSettings.java
index 90c1d38..3ed3e82 100644
--- a/src/com/android/settings/DateTimeSettings.java
+++ b/src/com/android/settings/DateTimeSettings.java
@@ -27,8 +27,6 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
-import android.content.SharedPreferences;
-import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
 import android.os.Bundle;
 import android.provider.Settings;
 import android.provider.Settings.SettingNotFoundException;
@@ -68,6 +66,9 @@
     // have we been launched from the setup wizard?
     protected static final String EXTRA_IS_FIRST_RUN = "firstRun";
 
+    // Minimum time is Nov 5, 2007, 0:00.
+    private static final long MIN_DATE = 1194220800000L;
+
     private RestrictedSwitchPreference mAutoTimePref;
     private Preference mTimePref;
     private Preference mTime24Pref;
@@ -320,7 +321,7 @@
         c.set(Calendar.YEAR, year);
         c.set(Calendar.MONTH, month);
         c.set(Calendar.DAY_OF_MONTH, day);
-        long when = c.getTimeInMillis();
+        long when = Math.max(c.getTimeInMillis(), MIN_DATE);
 
         if (when / 1000 < Integer.MAX_VALUE) {
             ((AlarmManager) context.getSystemService(Context.ALARM_SERVICE)).setTime(when);
@@ -334,7 +335,7 @@
         c.set(Calendar.MINUTE, minute);
         c.set(Calendar.SECOND, 0);
         c.set(Calendar.MILLISECOND, 0);
-        long when = c.getTimeInMillis();
+        long when = Math.max(c.getTimeInMillis(), MIN_DATE);
 
         if (when / 1000 < Integer.MAX_VALUE) {
             ((AlarmManager) context.getSystemService(Context.ALARM_SERVICE)).setTime(when);
diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java
index 1a3c850..a992897 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -399,6 +399,10 @@
         }
     }
 
+    protected int getCachedCount() {
+        return mPreferenceCache.size();
+    }
+
     private void highlightPreference(String key) {
         final int position = canUseListViewForHighLighting(key);
         if (position >= 0) {
diff --git a/src/com/android/settings/TrustedCredentialsDialogBuilder.java b/src/com/android/settings/TrustedCredentialsDialogBuilder.java
index 22dc936..ed2ab09 100644
--- a/src/com/android/settings/TrustedCredentialsDialogBuilder.java
+++ b/src/com/android/settings/TrustedCredentialsDialogBuilder.java
@@ -20,6 +20,7 @@
 import android.app.AlertDialog;
 import android.app.admin.DevicePolicyManager;
 import android.content.DialogInterface;
+import android.content.pm.UserInfo;
 import android.net.http.SslCertificate;
 import android.os.UserHandle;
 import android.os.UserManager;
@@ -31,6 +32,7 @@
 import android.widget.LinearLayout;
 import android.widget.Spinner;
 
+import com.android.internal.widget.LockPatternUtils;
 import com.android.settings.TrustedCredentialsSettings.CertHolder;
 
 import java.security.cert.X509Certificate;
@@ -184,10 +186,26 @@
             updateNegativeButton();
         }
 
+        /**
+         * @return true if current user or parent user is guarded by screenlock
+         */
+        private boolean isUserSecure(int userId) {
+            final LockPatternUtils lockPatternUtils = new LockPatternUtils(mActivity);
+            if (lockPatternUtils.isSecure(userId)) {
+                return true;
+            }
+            UserInfo parentUser = mUserManager.getProfileParent(userId);
+            if (parentUser == null) {
+                return false;
+            }
+            return lockPatternUtils.isSecure(parentUser.id);
+        }
+
         private void updatePositiveButton() {
             final CertHolder certHolder = getCurrentCertInfo();
-            mNeedsApproval = !certHolder.isSystemCert() &&
-                    !mDpm.isCaCertApproved(certHolder.getAlias(), certHolder.getUserId());
+            mNeedsApproval = !certHolder.isSystemCert()
+                    && isUserSecure(certHolder.getUserId())
+                    && !mDpm.isCaCertApproved(certHolder.getAlias(), certHolder.getUserId());
 
             // The ok button is optional. User can still dismiss the dialog by other means.
             // Display it only when trust button is not displayed, because we want users to
diff --git a/src/com/android/settings/applications/AppStatePowerBridge.java b/src/com/android/settings/applications/AppStatePowerBridge.java
index e25b9c9..16de600 100644
--- a/src/com/android/settings/applications/AppStatePowerBridge.java
+++ b/src/com/android/settings/applications/AppStatePowerBridge.java
@@ -56,7 +56,7 @@
     }
 
     public static final AppFilter FILTER_POWER_WHITELISTED = new CompoundFilter(
-            ApplicationsState.FILTER_PERSONAL_WITHOUT_DISABLED_UNTIL_USED, new AppFilter() {
+            ApplicationsState.FILTER_WITHOUT_DISABLED_UNTIL_USED, new AppFilter() {
         @Override
         public void init() {
         }
diff --git a/src/com/android/settings/applications/ManageApplications.java b/src/com/android/settings/applications/ManageApplications.java
index 9de3f7a..7936cb9 100644
--- a/src/com/android/settings/applications/ManageApplications.java
+++ b/src/com/android/settings/applications/ManageApplications.java
@@ -21,6 +21,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageItemInfo;
 import android.content.pm.PackageManager;
 import android.icu.text.AlphabeticIndex;
 import android.os.*;
@@ -138,7 +139,7 @@
     // 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[]{
             R.string.high_power_filter_on, // High power whitelist, on
-            R.string.filter_all_apps,      // All apps label, but personal filter (for high power);
+            R.string.filter_all_apps,      // Without disabled until used
             R.string.filter_all_apps,      // All apps
             R.string.filter_enabled_apps,  // Enabled
             R.string.filter_apps_disabled, // Disabled
@@ -159,8 +160,8 @@
     public static final AppFilter[] FILTERS = new AppFilter[]{
             new CompoundFilter(AppStatePowerBridge.FILTER_POWER_WHITELISTED,
                     ApplicationsState.FILTER_ALL_ENABLED),     // High power whitelist, on
-            new CompoundFilter(ApplicationsState.FILTER_PERSONAL_WITHOUT_DISABLED_UNTIL_USED,
-                    ApplicationsState.FILTER_ALL_ENABLED),     // All apps label, but personal filter
+            new CompoundFilter(ApplicationsState.FILTER_WITHOUT_DISABLED_UNTIL_USED,
+                    ApplicationsState.FILTER_ALL_ENABLED),     // Without disabled until used
             ApplicationsState.FILTER_EVERYTHING,  // All apps
             ApplicationsState.FILTER_ALL_ENABLED, // Enabled
             ApplicationsState.FILTER_DISABLED,    // Disabled
@@ -901,9 +902,46 @@
                 // Don't have new list yet, but can continue using the old one.
                 return;
             }
+            if (mFilterMode == FILTER_APPS_POWER_WHITELIST ||
+                mFilterMode == FILTER_APPS_POWER_WHITELIST_ALL) {
+                entries = removeDuplicateIgnoringUser(entries);
+            }
             onRebuildComplete(entries);
         }
 
+
+        static private boolean packageNameEquals(PackageItemInfo info1, PackageItemInfo info2) {
+            if (info1 == null || info2 == null) {
+                return false;
+            }
+            if (info1.packageName == null || info2.packageName == null) {
+                return false;
+            }
+            return info1.packageName.equals(info2.packageName);
+        }
+
+        private ArrayList<ApplicationsState.AppEntry> removeDuplicateIgnoringUser(
+                ArrayList<ApplicationsState.AppEntry> entries)
+        {
+            int size = entries.size();
+            // returnList will not have more entries than entries
+            ArrayList<ApplicationsState.AppEntry> returnEntries = new
+                    ArrayList<ApplicationsState.AppEntry>(size);
+
+            // assume appinfo of same package but different users are grouped together
+            PackageItemInfo lastInfo = null;
+            for (int i = 0; i < size; i++) {
+                AppEntry appEntry = entries.get(i);
+                PackageItemInfo info = appEntry.info;
+                if (!packageNameEquals(lastInfo, appEntry.info)) {
+                    returnEntries.add(appEntry);
+                }
+                lastInfo = info;
+            }
+            returnEntries.trimToSize();
+            return returnEntries;
+        }
+
         @Override
         public void onRebuildComplete(ArrayList<AppEntry> entries) {
             mBaseEntries = entries;
diff --git a/src/com/android/settings/dashboard/SummaryLoader.java b/src/com/android/settings/dashboard/SummaryLoader.java
index 780d68e..814d1e4 100644
--- a/src/com/android/settings/dashboard/SummaryLoader.java
+++ b/src/com/android/settings/dashboard/SummaryLoader.java
@@ -94,15 +94,17 @@
         });
     }
 
+    /**
+     * Only call from the main thread.
+     */
     public void setListening(boolean listening) {
-        synchronized (mReceivers) {
-            // Unregister listeners immediately.
-            mListening = false;
-            for (int i = 0; i < mReceivers.size(); i++) {
-                mActivity.unregisterReceiver(mReceivers.get(i));
-            }
-            mReceivers.clear();
+        if (mListening == listening) return;
+        mListening = listening;
+        // Unregister listeners immediately.
+        for (int i = 0; i < mReceivers.size(); i++) {
+            mActivity.unregisterReceiver(mReceivers.get(i));
         }
+        mReceivers.clear();
         mWorker.obtainMessage(Worker.MSG_SET_LISTENING, listening ? 1 : 0, 0).sendToTarget();
     }
 
@@ -148,22 +150,27 @@
      * This ensures that the receivers are unregistered immediately, since most summary loader
      * operations are asynchronous.
      */
-    public void registerReceiver(BroadcastReceiver receiver, IntentFilter filter) {
-        synchronized (mReceivers) {
-            if (!mListening) {
-                return;
+    public void registerReceiver(final BroadcastReceiver receiver, final IntentFilter filter) {
+        mActivity.runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                if (!mListening) {
+                    return;
+                }
+                mReceivers.add(receiver);
+                mActivity.registerReceiver(receiver, filter);
             }
-            mReceivers.add(receiver);
-            mActivity.registerReceiver(receiver, filter);
-        }
+        });
     }
 
     private synchronized void setListeningW(boolean listening) {
-        if (mListening == listening) return;
         if (DEBUG) Log.d(TAG, "Listening " + listening);
-        mListening = listening;
         for (SummaryProvider p : mSummaryMap.keySet()) {
-            p.setListening(listening);
+            try {
+                p.setListening(listening);
+            } catch (Exception e) {
+                Log.d(TAG, "Problem in setListening", e);
+            }
         }
     }
 
@@ -172,10 +179,6 @@
         if (provider != null) {
             if (DEBUG) Log.d(TAG, "Creating " + tile);
             mSummaryMap.put(provider, tile.intent.getComponent());
-            if (mListening) {
-                // If we are somehow already listening, put the provider in that state.
-                provider.setListening(true);
-            }
         }
     }
 
diff --git a/src/com/android/settings/datausage/DataUsageSummary.java b/src/com/android/settings/datausage/DataUsageSummary.java
index 3195641..bd6ae5c 100644
--- a/src/com/android/settings/datausage/DataUsageSummary.java
+++ b/src/com/android/settings/datausage/DataUsageSummary.java
@@ -25,6 +25,7 @@
 import android.os.Bundle;
 import android.os.RemoteException;
 import android.os.SystemProperties;
+import android.os.UserManager;
 import android.provider.SearchIndexableResource;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceScreen;
@@ -116,7 +117,9 @@
 
     @Override
     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
-        inflater.inflate(R.menu.data_usage, menu);
+        if (UserManager.get(getContext()).isAdminUser()) {
+            inflater.inflate(R.menu.data_usage, menu);
+        }
         super.onCreateOptionsMenu(menu, inflater);
     }
 
diff --git a/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroduction.java b/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroduction.java
index aa1a068..f816682 100644
--- a/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroduction.java
+++ b/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroduction.java
@@ -19,8 +19,6 @@
 import android.content.Intent;
 import android.content.res.Resources;
 import android.os.UserHandle;
-import android.support.v14.preference.PreferenceFragment;
-import android.view.View;
 import android.widget.Button;
 
 import com.android.internal.logging.MetricsProto.MetricsEvent;
@@ -29,6 +27,8 @@
 import com.android.settings.SetupChooseLockGeneric;
 import com.android.settings.SetupWizardUtils;
 import com.android.setupwizardlib.SetupWizardRecyclerLayout;
+import com.android.setupwizardlib.items.Item;
+import com.android.setupwizardlib.items.RecyclerItemAdapter;
 import com.android.setupwizardlib.view.NavigationBar;
 
 public class SetupFingerprintEnrollIntroduction extends FingerprintEnrollIntroduction
@@ -56,12 +56,22 @@
 
     @Override
     protected void initViews() {
+        final SetupWizardRecyclerLayout layout =
+                (SetupWizardRecyclerLayout) findViewById(R.id.setup_wizard_layout);
+        final RecyclerItemAdapter adapter = (RecyclerItemAdapter) layout.getAdapter();
+        final Item nextItem = (Item) adapter.findItemById(R.id.next_button);
+        nextItem.setTitle(
+                getText(R.string.security_settings_fingerprint_enroll_introduction_continue_setup));
+
+        final Item cancelItem = (Item) adapter.findItemById(R.id.cancel_button);
+        cancelItem.setTitle(
+                getText(R.string.security_settings_fingerprint_enroll_introduction_cancel_setup));
+
         SetupWizardUtils.setImmersiveMode(this);
         getNavigationBar().setNavigationBarListener(this);
         Button nextButton = getNavigationBar().getNextButton();
         nextButton.setText(null);
         nextButton.setEnabled(false);
-        SetupWizardRecyclerLayout layout = (SetupWizardRecyclerLayout) getSetupWizardLayout();
         layout.setDividerInset(getResources().getDimensionPixelSize(
                 R.dimen.suw_items_icon_divider_inset));
     }
diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
index 79ce204..78f9833 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
@@ -368,7 +368,8 @@
                 }
                 addedSome = true;
                 mAppListGroup.addPreference(pref);
-                if (mAppListGroup.getPreferenceCount() > (MAX_ITEMS_TO_LIST + 1)) {
+                if (mAppListGroup.getPreferenceCount() - getCachedCount()
+                        > (MAX_ITEMS_TO_LIST + 1)) {
                     break;
                 }
             }
@@ -391,8 +392,10 @@
             stats.add(new BatterySipper(type, null, use));
             use += 5;
         }
-        stats.add(new BatterySipper(DrainType.APP,
-                new FakeUid(Process.FIRST_APPLICATION_UID), use));
+        for (int i = 0; i < 100; i++) {
+            stats.add(new BatterySipper(DrainType.APP,
+                    new FakeUid(Process.FIRST_APPLICATION_UID + i), use));
+        }
         stats.add(new BatterySipper(DrainType.APP,
                 new FakeUid(0), use));
 
diff --git a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
index fb0a4d5..61e3b9d 100644
--- a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
+++ b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
@@ -262,7 +262,6 @@
             final TextServicesManager tsm = (TextServicesManager) getSystemService(
                     Context.TEXT_SERVICES_MANAGER_SERVICE);
             if (!tsm.isSpellCheckerEnabled()) {
-                spellChecker.setEnabled(false);
                 spellChecker.setSummary(R.string.switch_off_text);
             } else {
                 final SpellCheckerInfo sci = tsm.getCurrentSpellChecker();
diff --git a/src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment2.java b/src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment2.java
index 6916242..c0d67bb 100644
--- a/src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment2.java
+++ b/src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment2.java
@@ -16,6 +16,7 @@
 
 package com.android.settings.inputmethod;
 
+import android.annotation.Nullable;
 import android.app.Activity;
 import android.hardware.input.InputDeviceIdentifier;
 import android.hardware.input.InputManager;
@@ -45,6 +46,7 @@
     private int mInputDeviceId = -1;
     private InputManager mIm;
     private InputMethodInfo mImi;
+    @Nullable
     private InputMethodSubtype mSubtype;
     private KeyboardLayout[] mKeyboardLayouts;
     private Map<Preference, KeyboardLayout> mPreferenceMap = new HashMap<>();
@@ -82,7 +84,7 @@
         mImi = activity.getIntent().getParcelableExtra(EXTRA_INPUT_METHOD_INFO);
         mSubtype = activity.getIntent().getParcelableExtra(EXTRA_INPUT_METHOD_SUBTYPE);
 
-        if (mInputDeviceIdentifier == null || mImi == null || mSubtype == null) {
+        if (mInputDeviceIdentifier == null || mImi == null) {
             activity.finish();
         }
 
diff --git a/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java b/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java
index cf8db7a..07bcf6a 100644
--- a/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java
+++ b/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java
@@ -147,7 +147,7 @@
                 Preference pref = new Preference(getPrefContext(), null);
                 final InputMethodInfo imi = info.mImi;
                 final InputMethodSubtype imSubtype = info.mImSubtype;
-                if (imi != null && imSubtype != null) {
+                if (imi != null) {
                     pref.setTitle(getDisplayName(getContext(), imi, imSubtype));
                     KeyboardLayout layout = info.mLayout;
                     if (layout != null) {
@@ -214,9 +214,9 @@
     }
 
     private void showKeyboardLayoutScreen(
-            InputDeviceIdentifier inputDeviceIdentifier,
-            InputMethodInfo imi,
-            InputMethodSubtype imSubtype) {
+            @NonNull InputDeviceIdentifier inputDeviceIdentifier,
+            @NonNull InputMethodInfo imi,
+            @Nullable InputMethodSubtype imSubtype) {
         final Intent intent = new Intent(Intent.ACTION_MAIN);
         intent.setClass(getActivity(), Settings.KeyboardLayoutPickerActivity.class);
         intent.putExtra(KeyboardLayoutPickerFragment2.EXTRA_INPUT_DEVICE_IDENTIFIER,
@@ -272,12 +272,15 @@
     };
 
     @NonNull
-    static String getDisplayName(
+    static CharSequence getDisplayName(
             @NonNull Context context, @NonNull InputMethodInfo imi,
-            @NonNull InputMethodSubtype imSubtype) {
+            @Nullable InputMethodSubtype imSubtype) {
+        final CharSequence imeName = imi.loadLabel(context.getPackageManager());
+        if (imSubtype == null) {
+            return imeName;
+        }
         final CharSequence imSubtypeName = imSubtype.getDisplayName(
                 context, imi.getPackageName(), imi.getServiceInfo().applicationInfo);
-        final CharSequence imeName = imi.loadLabel(context.getPackageManager());
         return String.format(
                 context.getString(R.string.physical_device_title), imSubtypeName, imeName);
     }
@@ -330,8 +333,21 @@
             final InputManager im = getContext().getSystemService(InputManager.class);
             if (imm != null && im != null) {
                 for (InputMethodInfo imi : imm.getEnabledInputMethodList()) {
-                    for (InputMethodSubtype subtype : imm.getEnabledInputMethodSubtypeList(
-                            imi, true /* allowsImplicitlySelectedSubtypes */)) {
+                    final List<InputMethodSubtype> subtypes = imm.getEnabledInputMethodSubtypeList(
+                            imi, true /* allowsImplicitlySelectedSubtypes */);
+                    if (subtypes.isEmpty()) {
+                        // Here we use null to indicate that this IME has no subtype.
+                        final InputMethodSubtype nullSubtype = null;
+                        final KeyboardLayout layout = im.getKeyboardLayoutForInputDevice(
+                                deviceInfo.mDeviceIdentifier, imi, nullSubtype);
+                        keyboardInfoList.add(new Keyboards.KeyboardInfo(imi, nullSubtype, layout));
+                        continue;
+                    }
+
+                    // If the IME supports subtypes, we pick up "keyboard" subtypes only.
+                    final int N = subtypes.size();
+                    for (int i = 0; i < N; ++i) {
+                        final InputMethodSubtype subtype = subtypes.get(i);
                         if (!IM_SUBTYPE_MODE_KEYBOARD.equalsIgnoreCase(subtype.getMode())) {
                             continue;
                         }
@@ -421,14 +437,14 @@
         public static final class KeyboardInfo {
             @NonNull
             public final InputMethodInfo mImi;
-            @NonNull
+            @Nullable
             public final InputMethodSubtype mImSubtype;
             @NonNull
             public final KeyboardLayout mLayout;
 
             public KeyboardInfo(
                     @NonNull final InputMethodInfo imi,
-                    @NonNull final InputMethodSubtype imSubtype,
+                    @Nullable final InputMethodSubtype imSubtype,
                     @NonNull final KeyboardLayout layout) {
                 mImi = imi;
                 mImSubtype = imSubtype;
diff --git a/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java b/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java
index 2ce4e72..bc17814 100644
--- a/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java
+++ b/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java
@@ -38,7 +38,6 @@
 
 import java.text.NumberFormat;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 import java.util.Locale;
 
@@ -152,8 +151,9 @@
     public void onBindViewHolder(final CustomViewHolder holder, int i) {
         final LocaleStore.LocaleInfo feedItem = mFeedItemList.get(i);
         final LocaleDragCell dragCell = holder.getLocaleDragCell();
-        String label = feedItem.getFullNameNative();
-        dragCell.setLabel(label);
+        final String label = feedItem.getFullNameNative();
+        final String description = feedItem.getFullNameInUiLanguage();
+        dragCell.setLabelAndDescription(label, description);
         dragCell.setLocalized(feedItem.isTranslated());
         dragCell.setMiniLabel(mNumberFormatter.format(i + 1));
         dragCell.setShowCheckbox(mRemoveMode);
@@ -166,7 +166,7 @@
                     @Override
                     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                         LocaleStore.LocaleInfo feedItem =
-                                (LocaleStore.LocaleInfo) holder.getLocaleDragCell().getTag();
+                                (LocaleStore.LocaleInfo) dragCell.getTag();
                         feedItem.setChecked(isChecked);
                     }
                 });
@@ -183,12 +183,14 @@
         return itemCount;
     }
 
-    private void onItemMove(int fromPosition, int toPosition) {
+    void onItemMove(int fromPosition, int toPosition) {
         if (fromPosition >= 0 && toPosition >= 0) {
-            Collections.swap(mFeedItemList, fromPosition, toPosition);
+            final LocaleStore.LocaleInfo saved = mFeedItemList.get(fromPosition);
+            mFeedItemList.remove(fromPosition);
+            mFeedItemList.add(toPosition, saved);
         } else {
             // TODO: It looks like sometimes the RecycleView tries to swap item -1
-            // Investigate and file a bug.
+            // I did not see it in a while, but if it happens, investigate and file a bug.
             Log.e(TAG, String.format(Locale.US,
                     "Negative position in onItemMove %d -> %d", fromPosition, toPosition));
         }
@@ -206,6 +208,23 @@
         }
     }
 
+    boolean isRemoveMode() {
+        return mRemoveMode;
+    }
+
+    void removeItem(int position) {
+        int itemCount = mFeedItemList.size();
+        if (itemCount <= 1) {
+            return;
+        }
+        if (position < 0 || position >= itemCount) {
+            return;
+        }
+        mFeedItemList.remove(position);
+        notifyDataSetChanged();
+        doTheUpdate();
+    }
+
     void removeChecked() {
         int itemCount = mFeedItemList.size();
         for (int i = itemCount - 1; i >= 0; i--) {
diff --git a/src/com/android/settings/localepicker/LocaleDragCell.java b/src/com/android/settings/localepicker/LocaleDragCell.java
index b3ecfad..ea86189 100644
--- a/src/com/android/settings/localepicker/LocaleDragCell.java
+++ b/src/com/android/settings/localepicker/LocaleDragCell.java
@@ -87,9 +87,11 @@
         invalidate();
     }
 
-    public void setLabel(String labelText) {
+    public void setLabelAndDescription(String labelText, String description) {
         mLabel.setText(labelText);
         mCheckbox.setText(labelText);
+        mLabel.setContentDescription(description);
+        mCheckbox.setContentDescription(description);
         invalidate();
     }
 
diff --git a/src/com/android/settings/localepicker/LocaleLinearLayoutManager.java b/src/com/android/settings/localepicker/LocaleLinearLayoutManager.java
new file mode 100644
index 0000000..630f382
--- /dev/null
+++ b/src/com/android/settings/localepicker/LocaleLinearLayoutManager.java
@@ -0,0 +1,153 @@
+/*
+ * 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.localepicker;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+
+import com.android.settings.R;
+
+/**
+ * Add accessibility actions to the drag-and-drop locale list
+ *
+ * <p>Dragging is not supported neither by TalkBack or the accessibility
+ * framework at the moment. So we need custom actions to be able
+ * to change the order of the locales.</p>
+ *
+ * <p>Also, the remove functionality is difficult to discover and use
+ * with TalkBack only, so we are also adding a "remove" action.</p>
+ *
+ * <p>It only removes one locale at the time, but most users don't
+ * really add many locales "by mistake", so there is no real need
+ * to delete a lot of locales at once.</p>
+ */
+public class LocaleLinearLayoutManager extends LinearLayoutManager {
+    private final LocaleDragAndDropAdapter mAdapter;
+    private final Context mContext;
+
+    private final AccessibilityNodeInfoCompat.AccessibilityActionCompat mActionMoveUp;
+    private final AccessibilityNodeInfoCompat.AccessibilityActionCompat mActionMoveDown;
+    private final AccessibilityNodeInfoCompat.AccessibilityActionCompat mActionMoveTop;
+    private final AccessibilityNodeInfoCompat.AccessibilityActionCompat mActionMoveBottom;
+    private final AccessibilityNodeInfoCompat.AccessibilityActionCompat mActionRemove;
+
+    public LocaleLinearLayoutManager(Context context, LocaleDragAndDropAdapter adapter) {
+        super(context);
+        this.mContext = context;
+        this.mAdapter = adapter;
+
+        this.mActionMoveUp = new AccessibilityNodeInfoCompat.AccessibilityActionCompat(
+                R.id.action_drag_move_up,
+                mContext.getString(R.string.action_drag_label_move_up));
+        this.mActionMoveDown = new AccessibilityNodeInfoCompat.AccessibilityActionCompat(
+                R.id.action_drag_move_down,
+                mContext.getString(R.string.action_drag_label_move_down));
+        this.mActionMoveTop = new AccessibilityNodeInfoCompat.AccessibilityActionCompat(
+                R.id.action_drag_move_top,
+                mContext.getString(R.string.action_drag_label_move_top));
+        this.mActionMoveBottom = new AccessibilityNodeInfoCompat.AccessibilityActionCompat(
+                R.id.action_drag_move_bottom,
+                mContext.getString(R.string.action_drag_label_move_bottom));
+        this.mActionRemove = new AccessibilityNodeInfoCompat.AccessibilityActionCompat(
+                R.id.action_drag_remove,
+                mContext.getString(R.string.action_drag_label_remove));
+    }
+
+    @Override
+    public void onInitializeAccessibilityNodeInfoForItem(RecyclerView.Recycler recycler,
+            RecyclerView.State state, View host, AccessibilityNodeInfoCompat info) {
+
+        super.onInitializeAccessibilityNodeInfoForItem(recycler, state, host, info);
+
+        final int itemCount = this.getItemCount();
+        final int position = this.getPosition(host);
+        final LocaleDragCell dragCell = (LocaleDragCell) host;
+
+        // We want the description to be something not localizable, so that any TTS engine for
+        // any language can handle it. And we want the position to be part of it.
+        // So we use something like "2, French (France)"
+        final String description =
+                (position + 1) + ", " + dragCell.getCheckbox().getContentDescription();
+        info.setContentDescription(description);
+
+        if (mAdapter.isRemoveMode()) { // We don't move things around in remove mode
+            return;
+        }
+
+        // The order in which we add the actions is important for the circular selection menu.
+        // With the current order the "up" action will be (more or less) up, and "down" more
+        // or less down ("more or less" because we have 5 actions)
+        if (position > 0) { // it is not the first one
+            info.addAction(mActionMoveUp);
+            info.addAction(mActionMoveTop);
+        }
+        if (position + 1 < itemCount) { // it is not the last one
+            info.addAction(mActionMoveDown);
+            info.addAction(mActionMoveBottom);
+        }
+        if (itemCount > 1) {
+            info.addAction(mActionRemove);
+        }
+    }
+
+    @Override
+    public boolean performAccessibilityActionForItem(RecyclerView.Recycler recycler,
+            RecyclerView.State state, View host, int action, Bundle args) {
+
+        final int itemCount = this.getItemCount();
+        final int position = this.getPosition(host);
+
+        switch (action) {
+            case R.id.action_drag_move_up:
+                if (position > 0) {
+                    mAdapter.onItemMove(position, position - 1);
+                    return true;
+                }
+                return false;
+            case R.id.action_drag_move_down:
+                if (position + 1 < itemCount) {
+                    mAdapter.onItemMove(position, position + 1);
+                    return true;
+                }
+                return false;
+            case R.id.action_drag_move_top:
+                if (position != 0) {
+                    mAdapter.onItemMove(position, 0);
+                    return true;
+                }
+                return false;
+            case R.id.action_drag_move_bottom:
+                if (position != itemCount - 1) {
+                    mAdapter.onItemMove(position, itemCount - 1);
+                    return true;
+                }
+                return false;
+            case R.id.action_drag_remove:
+                if (itemCount > 1) {
+                    mAdapter.removeItem(position);
+                    return true;
+                }
+                return false;
+            default:
+                return super.performAccessibilityActionForItem(recycler, state, host, action, args);
+        }
+    }
+}
diff --git a/src/com/android/settings/localepicker/LocaleListEditor.java b/src/com/android/settings/localepicker/LocaleListEditor.java
index 3287d39..b95a590 100644
--- a/src/com/android/settings/localepicker/LocaleListEditor.java
+++ b/src/com/android/settings/localepicker/LocaleListEditor.java
@@ -21,7 +21,6 @@
 import android.content.Context;
 import android.content.DialogInterface;
 import android.os.Bundle;
-import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.util.LocaleList;
 import android.view.LayoutInflater;
@@ -30,7 +29,6 @@
 import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.LinearLayout;
 
 import com.android.internal.app.LocalePicker;
 import com.android.internal.app.LocalePickerWithRegion;
@@ -76,9 +74,8 @@
 
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstState) {
-        View result = super.onCreateView(inflater, container, savedInstState);
-        LinearLayout ll = (LinearLayout) result;
-        View myLayout = inflater.inflate(R.layout.locale_order_list, ll);
+        final View result = super.onCreateView(inflater, container, savedInstState);
+        final View myLayout = inflater.inflate(R.layout.locale_order_list, (ViewGroup) result);
 
         getActivity().setTitle(R.string.pref_title_lang_selection);
 
@@ -236,7 +233,7 @@
 
     private void configureDragAndDrop(View view) {
         final RecyclerView list = (RecyclerView) view.findViewById(R.id.dragList);
-        final LinearLayoutManager llm = new LinearLayoutManager(this.getContext());
+        final LocaleLinearLayoutManager llm = new LocaleLinearLayoutManager(getContext(), mAdapter);
         llm.setAutoMeasureEnabled(true);
         list.setLayoutManager(llm);
 
diff --git a/src/com/android/settings/notification/ZenRuleNameDialog.java b/src/com/android/settings/notification/ZenRuleNameDialog.java
index f69198b..c6ce23b 100644
--- a/src/com/android/settings/notification/ZenRuleNameDialog.java
+++ b/src/com/android/settings/notification/ZenRuleNameDialog.java
@@ -19,6 +19,7 @@
 import android.app.AlertDialog;
 import android.content.Context;
 import android.content.DialogInterface;
+import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.EditText;
@@ -51,6 +52,9 @@
                     @Override
                     public void onClick(DialogInterface dialog, int which) {
                         final String newName = trimmedText();
+                        if (TextUtils.isEmpty(newName)) {
+                            return;
+                        }
                         if (!mIsNew && mOriginalRuleName != null
                                 && mOriginalRuleName.equals(newName)) {
                             return;  // no change to an existing rule, just dismiss
diff --git a/src/com/android/settings/print/PrintJobSettingsFragment.java b/src/com/android/settings/print/PrintJobSettingsFragment.java
index 3cd18e1..08bbd97 100644
--- a/src/com/android/settings/print/PrintJobSettingsFragment.java
+++ b/src/com/android/settings/print/PrintJobSettingsFragment.java
@@ -63,7 +63,6 @@
     private Preference mMessagePreference;
 
     private PrintJobId mPrintJobId;
-    private PrintJob mPrintJob;
 
     @Override
     protected int getMetricsCategory() {
@@ -134,17 +133,21 @@
 
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
-        switch (item.getItemId()) {
-            case MENU_ITEM_ID_CANCEL: {
-                getPrintJob().cancel();
-                finish();
-                return true;
-            }
+        PrintJob printJob = getPrintJob();
 
-            case MENU_ITEM_ID_RESTART: {
-                getPrintJob().restart();
-                finish();
-                return true;
+        if (printJob != null) {
+            switch (item.getItemId()) {
+                case MENU_ITEM_ID_CANCEL: {
+                    printJob.cancel();
+                    finish();
+                    return true;
+                }
+
+                case MENU_ITEM_ID_RESTART: {
+                    printJob.restart();
+                    finish();
+                    return true;
+                }
             }
         }
 
@@ -161,10 +164,7 @@
     }
 
     private PrintJob getPrintJob() {
-        if (mPrintJob == null) {
-            mPrintJob = mPrintManager.getPrintJob(mPrintJobId);
-        }
-        return mPrintJob;
+        return mPrintManager.getPrintJob(mPrintJobId);
     }
 
     private void updateUi() {
diff --git a/src/com/android/settings/print/PrintServiceSettingsFragment.java b/src/com/android/settings/print/PrintServiceSettingsFragment.java
index e54241c..42d8a8d 100644
--- a/src/com/android/settings/print/PrintServiceSettingsFragment.java
+++ b/src/com/android/settings/print/PrintServiceSettingsFragment.java
@@ -606,7 +606,7 @@
         @Override
         public Loader<List<PrinterInfo>> onCreateLoader(int id, Bundle args) {
             if (id == LOADER_ID_PRINTERS_LOADER) {
-                return new PrintersLoader(getActivity());
+                return new PrintersLoader(getContext());
             }
             return null;
         }
diff --git a/src/com/android/settings/print/PrintSettingsFragment.java b/src/com/android/settings/print/PrintSettingsFragment.java
index fb80f2932..c1fbfbb 100644
--- a/src/com/android/settings/print/PrintSettingsFragment.java
+++ b/src/com/android/settings/print/PrintSettingsFragment.java
@@ -115,12 +115,10 @@
         getPreferenceScreen().removePreference(mActivePrintJobsCategory);
 
         mPrintJobsController = new PrintJobsController();
-        getActivity().getLoaderManager().initLoader(LOADER_ID_PRINT_JOBS_LOADER, null,
-                mPrintJobsController);
+        getLoaderManager().initLoader(LOADER_ID_PRINT_JOBS_LOADER, null, mPrintJobsController);
 
         mPrintServicesController = new PrintServicesController();
-        getActivity().getLoaderManager().initLoader(LOADER_ID_PRINT_SERVICES, null,
-                mPrintServicesController);
+        getLoaderManager().initLoader(LOADER_ID_PRINT_SERVICES, null, mPrintServicesController);
     }
 
     @Override
@@ -294,7 +292,7 @@
         @Override
         public Loader<List<PrintJobInfo>> onCreateLoader(int id, Bundle args) {
             if (id == LOADER_ID_PRINT_JOBS_LOADER) {
-                return new PrintJobsLoader(getActivity());
+                return new PrintJobsLoader(getContext());
             }
             return null;
         }
diff --git a/src/com/android/settings/vpn2/AppManagementFragment.java b/src/com/android/settings/vpn2/AppManagementFragment.java
index 1a48954..f8e30f9 100644
--- a/src/com/android/settings/vpn2/AppManagementFragment.java
+++ b/src/com/android/settings/vpn2/AppManagementFragment.java
@@ -177,8 +177,10 @@
             VpnUtils.clearLockdownVpn(getContext());
         }
         mConnectivityManager.setAlwaysOnVpnPackageForUser(mUserId, isEnabled ? mPackageName : null);
+        if (isEnabled && !isVpnAlwaysOn()) {
+            CannotConnectFragment.show(this, mVpnLabel);
+        }
         updateUI();
-        showCantConnectNotificationIfNeeded(isEnabled);
     }
 
     private void updateUI() {
@@ -246,52 +248,42 @@
         return getAlwaysOnVpnPackage() != null && !isVpnAlwaysOn();
     }
 
-    private void showCantConnectNotificationIfNeeded(boolean isEnabledExpected) {
-        // Display notification only when user tries to turn on but system fails to turn it on.
-        if (isEnabledExpected && !isVpnAlwaysOn()) {
-            String appDisplayName = mPackageName;
-            try {
-                appDisplayName = VpnConfig.getVpnLabel(getContext(), mPackageName).toString();
-            } catch (NameNotFoundException e) {
-                // Use default package name as app name. Quietly fail.
+    public static class CannotConnectFragment extends DialogFragment {
+        private static final String TAG = "CannotConnect";
+        private static final String ARG_VPN_LABEL = "label";
+
+        public static void show(AppManagementFragment parent, String vpnLabel) {
+            if (parent.getFragmentManager().findFragmentByTag(TAG) == null) {
+                final Bundle args = new Bundle();
+                args.putString(ARG_VPN_LABEL, vpnLabel);
+
+                final DialogFragment frag = new CannotConnectFragment();
+                frag.setArguments(args);
+                frag.show(parent.getFragmentManager(), TAG);
             }
-            postCantConnectNotification(getContext(), appDisplayName,
-                    mPackageUid /* notificationId */);
         }
-    }
 
-    /**
-     * @param notificationId should be unique to the vpn app, e.g. uid, to keep one notification per
-     *                       vpn app per user
-     */
-    private static void postCantConnectNotification(Context context, @NonNull String vpnName,
-            int notificationId) {
-        final Resources res = context.getResources();
-        // Only action is specified to match cross-profile intent filter set by ManagedProfileSetup
-        final Intent intent = new Intent(Settings.ACTION_VPN_SETTINGS);
-        final PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent,
-                Intent.FLAG_ACTIVITY_NEW_TASK);
-
-        final Notification notification = new Notification.Builder(context)
-                .setContentTitle(res.getString(R.string.vpn_cant_connect_notification_title,
-                        vpnName))
-                .setContentText(res.getString(R.string.vpn_tap_for_vpn_settings))
-                .setSmallIcon(R.drawable.ic_settings_wireless)
-                .setContentIntent(pendingIntent)
-                .setAutoCancel(true)
-                .build();
-
-        NotificationManager nm = context.getSystemService(NotificationManager.class);
-        nm.notify(notificationId, notification);
+        @Override
+        public Dialog onCreateDialog(Bundle savedInstanceState) {
+            final String vpnLabel = getArguments().getString(ARG_VPN_LABEL);
+            return new AlertDialog.Builder(getActivity())
+                    .setTitle(getActivity().getString(R.string.vpn_cant_connect_title, vpnLabel))
+                    .setMessage(getActivity().getString(R.string.vpn_cant_connect_message))
+                    .setPositiveButton(R.string.okay, null)
+                    .create();
+        }
     }
 
     public static class ReplaceExistingVpnFragment extends DialogFragment
             implements DialogInterface.OnClickListener {
+        private static final String TAG = "ReplaceExistingVpn";
 
         public static void show(AppManagementFragment parent) {
-            final ReplaceExistingVpnFragment frag = new ReplaceExistingVpnFragment();
-            frag.setTargetFragment(parent, 0);
-            frag.show(parent.getFragmentManager(), null);
+            if (parent.getFragmentManager().findFragmentByTag(TAG) == null) {
+                final ReplaceExistingVpnFragment frag = new ReplaceExistingVpnFragment();
+                frag.setTargetFragment(parent, 0);
+                frag.show(parent.getFragmentManager(), TAG);
+            }
         }
 
         @Override
@@ -300,7 +292,7 @@
                     .setTitle(R.string.vpn_replace_always_on_vpn_title)
                     .setMessage(getActivity().getString(R.string.vpn_replace_always_on_vpn_message))
                     .setNegativeButton(getActivity().getString(R.string.vpn_cancel), null)
-                    .setPositiveButton(getActivity().getString(R.string.vpn_continue), this)
+                    .setPositiveButton(getActivity().getString(R.string.vpn_replace), this)
                     .create();
         }
 
diff --git a/src/com/android/settings/vpn2/AppPreference.java b/src/com/android/settings/vpn2/AppPreference.java
index e3649a8..3369970 100644
--- a/src/com/android/settings/vpn2/AppPreference.java
+++ b/src/com/android/settings/vpn2/AppPreference.java
@@ -32,20 +32,45 @@
  */
 public class AppPreference extends ManageablePreference {
     public static final int STATE_CONNECTED = LegacyVpnInfo.STATE_CONNECTED;
-    public static final int STATE_DISCONNECTED = LegacyVpnInfo.STATE_DISCONNECTED;
+    public static final int STATE_DISCONNECTED = STATE_NONE;
 
-    private int mState = STATE_DISCONNECTED;
-    private String mPackageName;
-    private String mName;
+    private final String mPackageName;
+    private final String mName;
 
-    public AppPreference(Context context) {
+    public AppPreference(Context context, int userId, String packageName) {
         super(context, null /* attrs */);
-    }
-
-    @Override
-    public void setUserId(int userId) {
         super.setUserId(userId);
-        update();
+
+        mPackageName = packageName;
+
+        // Fetch icon and VPN label
+        String label = packageName;
+        Drawable icon = null;
+        try {
+            // Make all calls to the package manager as the appropriate user.
+            Context userContext = getUserContext();
+            PackageManager pm = userContext.getPackageManager();
+            // The nested catch block is for the case that the app doesn't exist, so we can fall
+            // back to the default activity icon.
+            try {
+                PackageInfo pkgInfo = pm.getPackageInfo(mPackageName, 0 /* flags */);
+                if (pkgInfo != null) {
+                    icon = pkgInfo.applicationInfo.loadIcon(pm);
+                    label = VpnConfig.getVpnLabel(userContext, mPackageName).toString();
+                }
+            } catch (PackageManager.NameNotFoundException pkgNotFound) {
+                // Use default app label and icon as fallback
+            }
+            if (icon == null) {
+                icon = pm.getDefaultActivityIcon();
+            }
+        } catch (PackageManager.NameNotFoundException userNotFound) {
+            // No user, no useful information to obtain. Quietly fail.
+        }
+        mName = label;
+
+        setTitle(mName);
+        setIcon(icon);
     }
 
     public PackageInfo getPackageInfo() {
@@ -65,58 +90,6 @@
         return mPackageName;
     }
 
-    public void setPackageName(String name) {
-        mPackageName = name;
-        update();
-    }
-
-    public int getState() {
-        return mState;
-    }
-
-    public void setState(int state) {
-        mState = state;
-        update();
-    }
-
-    private void update() {
-        if (mPackageName == null || mUserId == UserHandle.USER_NULL) {
-            return;
-        }
-
-        setSummary(getSummaryString(mState == STATE_DISCONNECTED ? STATE_NONE : mState));
-
-        mName = mPackageName;
-        Drawable icon = null;
-
-        try {
-            // Make all calls to the package manager as the appropriate user.
-            Context userContext = getUserContext();
-            PackageManager pm = userContext.getPackageManager();
-            // Fetch icon and VPN label- the nested catch block is for the case that the app doesn't
-            // exist, in which case we can fall back to the default activity icon for an activity in
-            // that user.
-            try {
-                PackageInfo pkgInfo = pm.getPackageInfo(mPackageName, 0 /* flags */);
-                if (pkgInfo != null) {
-                    icon = pkgInfo.applicationInfo.loadIcon(pm);
-                    mName = VpnConfig.getVpnLabel(userContext, mPackageName).toString();
-                }
-            } catch (PackageManager.NameNotFoundException pkgNotFound) {
-                // Use default app label and icon as fallback
-            }
-            if (icon == null) {
-                icon = pm.getDefaultActivityIcon();
-            }
-        } catch (PackageManager.NameNotFoundException userNotFound) {
-            // No user, no useful information to obtain. Quietly fail.
-        }
-        setTitle(mName);
-        setIcon(icon);
-
-        notifyHierarchyChanged();
-    }
-
     private Context getUserContext() throws PackageManager.NameNotFoundException {
         UserHandle user = UserHandle.of(mUserId);
         return getContext().createPackageContextAsUser(
diff --git a/src/com/android/settings/vpn2/LegacyVpnPreference.java b/src/com/android/settings/vpn2/LegacyVpnPreference.java
index a9b8aec..c1550e2 100644
--- a/src/com/android/settings/vpn2/LegacyVpnPreference.java
+++ b/src/com/android/settings/vpn2/LegacyVpnPreference.java
@@ -18,6 +18,7 @@
 
 import android.content.Context;
 import android.support.v7.preference.Preference;
+import android.text.TextUtils;
 import android.view.View;
 
 import com.android.internal.net.VpnProfile;
@@ -31,11 +32,9 @@
 public class LegacyVpnPreference extends ManageablePreference {
     private VpnProfile mProfile;
 
-    /** One of the STATE_* fields from LegacyVpnInfo, or STATE_NONE */
-    private int mState = STATE_NONE;
-
     LegacyVpnPreference(Context context) {
         super(context, null /* attrs */);
+        setIcon(R.mipmap.ic_launcher_settings);
     }
 
     public VpnProfile getProfile() {
@@ -43,22 +42,13 @@
     }
 
     public void setProfile(VpnProfile profile) {
-        mProfile = profile;
-        update();
-    }
-
-    public void setState(int state) {
-        mState = state;
-        update();
-    }
-
-    private void update() {
-        setSummary(getSummaryString(mState));
-        if (mProfile != null) {
-            setIcon(R.mipmap.ic_launcher_settings);
-            setTitle(mProfile.name);
+        final String oldLabel = (mProfile != null ? mProfile.name : null);
+        final String newLabel = (profile != null ? profile.name : null);
+        if (!TextUtils.equals(oldLabel, newLabel)) {
+            setTitle(newLabel);
+            notifyHierarchyChanged();
         }
-        notifyHierarchyChanged();
+        mProfile = profile;
     }
 
     @Override
@@ -93,5 +83,4 @@
         }
         super.onClick(v);
     }
-
-}
\ No newline at end of file
+}
diff --git a/src/com/android/settings/vpn2/ManageablePreference.java b/src/com/android/settings/vpn2/ManageablePreference.java
index ad8a8a3..e31a396 100644
--- a/src/com/android/settings/vpn2/ManageablePreference.java
+++ b/src/com/android/settings/vpn2/ManageablePreference.java
@@ -34,6 +34,7 @@
     public static int STATE_NONE = -1;
 
     boolean mIsAlwaysOn = false;
+    int mState = STATE_NONE;
     int mUserId;
 
     public ManageablePreference(Context context, AttributeSet attrs) {
@@ -56,24 +57,40 @@
         return mIsAlwaysOn;
     }
 
+    public int getState() {
+        return mState;
+    }
+
+    public void setState(int state) {
+        if (mState != state) {
+            mState = state;
+            updateSummary();
+            notifyHierarchyChanged();
+        }
+    }
+
     public void setAlwaysOn(boolean isEnabled) {
-        mIsAlwaysOn = isEnabled;
+        if (mIsAlwaysOn != isEnabled) {
+            mIsAlwaysOn = isEnabled;
+            updateSummary();
+        }
     }
 
     /**
-     * State is not shown for {@code STATE_NONE}
+     * Update the preference summary string (see {@see Preference#setSummary}) with a string
+     * reflecting connection status and always-on setting.
      *
-     * @return summary string showing current connection state and always-on-vpn state
+     * State is not shown for {@code STATE_NONE}.
      */
-    protected String getSummaryString(int state) {
+    protected void updateSummary() {
         final Resources res = getContext().getResources();
         final String[] states = res.getStringArray(R.array.vpn_states);
-        String summary = state == STATE_NONE ? "" : states[state];
+        String summary = (mState == STATE_NONE ? "" : states[mState]);
         if (mIsAlwaysOn) {
             final String alwaysOnString = res.getString(R.string.vpn_always_on_active);
             summary = TextUtils.isEmpty(summary) ? alwaysOnString : res.getString(
                     R.string.join_two_unrelated_items, summary, alwaysOnString);
         }
-        return summary;
+        setSummary(summary);
     }
 }
diff --git a/src/com/android/settings/vpn2/VpnSettings.java b/src/com/android/settings/vpn2/VpnSettings.java
index 6c47b43..a675779 100644
--- a/src/com/android/settings/vpn2/VpnSettings.java
+++ b/src/com/android/settings/vpn2/VpnSettings.java
@@ -34,7 +34,6 @@
 import android.os.Message;
 import android.os.RemoteException;
 import android.os.ServiceManager;
-import android.os.SystemProperties;
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.security.Credentials;
@@ -211,8 +210,8 @@
         final List<VpnProfile> vpnProfiles = loadVpnProfiles(mKeyStore);
         final List<AppVpnInfo> vpnApps = getVpnApps(getActivity(), /* includeProfiles */ true);
 
-        final List<LegacyVpnInfo> connectedLegacyVpns = getConnectedLegacyVpns();
-        final List<AppVpnInfo> connectedAppVpns = getConnectedAppVpns();
+        final Map<String, LegacyVpnInfo> connectedLegacyVpns = getConnectedLegacyVpns();
+        final Set<AppVpnInfo> connectedAppVpns = getConnectedAppVpns();
 
         final Set<AppVpnInfo> alwaysOnAppVpnInfos = getAlwaysOnAppVpnInfos();
         final String lockdownVpnKey = VpnUtils.getLockdownVpn();
@@ -231,18 +230,26 @@
 
                 for (VpnProfile profile : vpnProfiles) {
                     LegacyVpnPreference p = findOrCreatePreference(profile);
-                    p.setState(LegacyVpnPreference.STATE_NONE);
+                    if (connectedLegacyVpns.containsKey(profile.key)) {
+                        p.setState(connectedLegacyVpns.get(profile.key).state);
+                    } else {
+                        p.setState(LegacyVpnPreference.STATE_NONE);
+                    }
                     p.setAlwaysOn(lockdownVpnKey != null && lockdownVpnKey.equals(profile.key));
                     updates.add(p);
                 }
                 for (AppVpnInfo app : vpnApps) {
                     AppPreference p = findOrCreatePreference(app);
-                    p.setState(AppPreference.STATE_DISCONNECTED);
+                    if (connectedAppVpns.contains(app)) {
+                        p.setState(AppPreference.STATE_CONNECTED);
+                    } else {
+                        p.setState(AppPreference.STATE_DISCONNECTED);
+                    }
                     p.setAlwaysOn(alwaysOnAppVpnInfos.contains(app));
                     updates.add(p);
                 }
 
-                // Trim preferences for deleted VPNs
+                // Trim out deleted VPN preferences
                 mLegacyVpnPreferences.values().retainAll(updates);
                 mAppPreferences.values().retainAll(updates);
 
@@ -260,20 +267,6 @@
                 for (Preference pref : updates) {
                     vpnGroup.addPreference(pref);
                 }
-
-                // Mark connected VPNs
-                for (LegacyVpnInfo info : connectedLegacyVpns) {
-                    final LegacyVpnPreference preference = mLegacyVpnPreferences.get(info.key);
-                    if (preference != null) {
-                        preference.setState(info.state);
-                    }
-                }
-                for (AppVpnInfo app : connectedAppVpns) {
-                    final AppPreference preference = mAppPreferences.get(app);
-                    if (preference != null) {
-                        preference.setState(AppPreference.STATE_CONNECTED);
-                    }
-                }
             }
         });
 
@@ -369,6 +362,7 @@
             pref.setOnPreferenceClickListener(this);
             mLegacyVpnPreferences.put(profile.key, pref);
         }
+        // This may change as the profile can update and keep the same key.
         pref.setProfile(profile);
         return pref;
     }
@@ -377,33 +371,31 @@
     private AppPreference findOrCreatePreference(AppVpnInfo app) {
         AppPreference pref = mAppPreferences.get(app);
         if (pref == null) {
-            pref = new AppPreference(getPrefContext());
+            pref = new AppPreference(getPrefContext(), app.userId, app.packageName);
             pref.setOnGearClickListener(mGearListener);
             pref.setOnPreferenceClickListener(this);
             mAppPreferences.put(app, pref);
         }
-        pref.setUserId(app.userId);
-        pref.setPackageName(app.packageName);
         return pref;
     }
 
     @WorkerThread
-    private List<LegacyVpnInfo> getConnectedLegacyVpns() {
+    private Map<String, LegacyVpnInfo> getConnectedLegacyVpns() {
         try {
             mConnectedLegacyVpn = mConnectivityService.getLegacyVpnInfo(UserHandle.myUserId());
             if (mConnectedLegacyVpn != null) {
-                return Collections.singletonList(mConnectedLegacyVpn);
+                return Collections.singletonMap(mConnectedLegacyVpn.key, mConnectedLegacyVpn);
             }
         } catch (RemoteException e) {
             Log.e(LOG_TAG, "Failure updating VPN list with connected legacy VPNs", e);
         }
-        return Collections.emptyList();
+        return Collections.emptyMap();
     }
 
     @WorkerThread
-    private List<AppVpnInfo> getConnectedAppVpns() {
+    private Set<AppVpnInfo> getConnectedAppVpns() {
         // Mark connected third-party services
-        List<AppVpnInfo> connections = new ArrayList<>();
+        Set<AppVpnInfo> connections = new ArraySet<>();
         try {
             for (UserHandle profile : mUserManager.getUserProfiles()) {
                 VpnConfig config = mConnectivityService.getVpnConfig(profile.getIdentifier());