Merge "Import translations. DO NOT MERGE" into nyc-mr1-dev
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 7617c39..841fc68 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -848,10 +848,6 @@
                   android:label="@string/wallpaper_settings_fragment_title"
                   android:icon="@drawable/ic_wallpaper"
                   android:taskAffinity="">
-            <intent-filter android:priority="1">
-                <action android:name="android.settings.WALLPAPER_SETTINGS" />
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
             <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                        android:value="com.android.settings.WallpaperTypeSettings" />
         </activity>
diff --git a/res/drawable-hdpi/ic_menu_add_dark.png b/res/drawable-hdpi/ic_menu_add_dark.png
deleted file mode 100644
index 40a26b1..0000000
--- a/res/drawable-hdpi/ic_menu_add_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_add_light.png b/res/drawable-hdpi/ic_menu_add_light.png
deleted file mode 100644
index 91b0354..0000000
--- a/res/drawable-hdpi/ic_menu_add_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_add_white.png b/res/drawable-hdpi/ic_menu_add_white.png
deleted file mode 100644
index 7638c64..0000000
--- a/res/drawable-hdpi/ic_menu_add_white.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_sysbar_quicksettings.png b/res/drawable-hdpi/ic_sysbar_quicksettings.png
deleted file mode 100644
index a204936..0000000
--- a/res/drawable-hdpi/ic_sysbar_quicksettings.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_add_dark.png b/res/drawable-mdpi/ic_menu_add_dark.png
deleted file mode 100644
index d7aa774..0000000
--- a/res/drawable-mdpi/ic_menu_add_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_add_light.png b/res/drawable-mdpi/ic_menu_add_light.png
deleted file mode 100644
index 8b55810..0000000
--- a/res/drawable-mdpi/ic_menu_add_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_add_white.png b/res/drawable-mdpi/ic_menu_add_white.png
deleted file mode 100644
index 40cdc82..0000000
--- a/res/drawable-mdpi/ic_menu_add_white.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_sysbar_quicksettings.png b/res/drawable-mdpi/ic_sysbar_quicksettings.png
deleted file mode 100644
index d266b39..0000000
--- a/res/drawable-mdpi/ic_sysbar_quicksettings.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_add_dark.png b/res/drawable-xhdpi/ic_menu_add_dark.png
deleted file mode 100644
index 2f00b96..0000000
--- a/res/drawable-xhdpi/ic_menu_add_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_add_light.png b/res/drawable-xhdpi/ic_menu_add_light.png
deleted file mode 100644
index 4109b2c..0000000
--- a/res/drawable-xhdpi/ic_menu_add_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_add_white.png b/res/drawable-xhdpi/ic_menu_add_white.png
deleted file mode 100644
index 1d53989..0000000
--- a/res/drawable-xhdpi/ic_menu_add_white.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_sysbar_quicksettings.png b/res/drawable-xhdpi/ic_sysbar_quicksettings.png
deleted file mode 100644
index 46077be..0000000
--- a/res/drawable-xhdpi/ic_sysbar_quicksettings.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_menu_add_dark.png b/res/drawable-xxhdpi/ic_menu_add_dark.png
deleted file mode 100644
index 0ab6a40..0000000
--- a/res/drawable-xxhdpi/ic_menu_add_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_menu_add_light.png b/res/drawable-xxhdpi/ic_menu_add_light.png
deleted file mode 100644
index 767b808..0000000
--- a/res/drawable-xxhdpi/ic_menu_add_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_menu_add_white.png b/res/drawable-xxhdpi/ic_menu_add_white.png
deleted file mode 100644
index 16a8b8a..0000000
--- a/res/drawable-xxhdpi/ic_menu_add_white.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_sysbar_quicksettings.png b/res/drawable-xxhdpi/ic_sysbar_quicksettings.png
deleted file mode 100644
index ad964b4..0000000
--- a/res/drawable-xxhdpi/ic_sysbar_quicksettings.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_menu_add_dark.png b/res/drawable-xxxhdpi/ic_menu_add_dark.png
deleted file mode 100644
index 01f53fe..0000000
--- a/res/drawable-xxxhdpi/ic_menu_add_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_menu_add_white.png b/res/drawable-xxxhdpi/ic_menu_add_white.png
deleted file mode 100644
index 27a15f5..0000000
--- a/res/drawable-xxxhdpi/ic_menu_add_white.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_sysbar_quicksettings.png b/res/drawable-xxxhdpi/ic_sysbar_quicksettings.png
deleted file mode 100644
index e89d484..0000000
--- a/res/drawable-xxxhdpi/ic_sysbar_quicksettings.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/ic_menu_add.xml b/res/drawable/ic_menu_add.xml
index ed58072..3387f29 100644
--- a/res/drawable/ic_menu_add.xml
+++ b/res/drawable/ic_menu_add.xml
@@ -15,6 +15,13 @@
      limitations under the License.
 -->
 
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_menu_add_white"
-    android:tint="?android:attr/colorAccent" />
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24.0"
+    android:viewportHeight="24.0"
+    android:tint="?android:attr/colorAccent">
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="M19,13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"/>
+</vector>
diff --git a/res/drawable/ic_menu_add_white.xml b/res/drawable/ic_menu_add_white.xml
new file mode 100644
index 0000000..9a06d5c
--- /dev/null
+++ b/res/drawable/ic_menu_add_white.xml
@@ -0,0 +1,26 @@
+<?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.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24.0"
+    android:viewportHeight="24.0">
+    <path
+        android:fillColor="#FFFFFFFF"
+        android:pathData="M19,13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"/>
+</vector>
diff --git a/res/drawable/ic_bt_config.xml b/res/drawable/ic_settings.xml
similarity index 99%
rename from res/drawable/ic_bt_config.xml
rename to res/drawable/ic_settings.xml
index 316c674..439c1a7 100644
--- a/res/drawable/ic_bt_config.xml
+++ b/res/drawable/ic_settings.xml
@@ -33,4 +33,4 @@
             1.17,-0.59 1.69,-0.98l2.49,1c0.23,0.09 0.49,0 0.61,-0.22l2,-3.46c0.12,-0.22 0.07,-0.49
             -0.12,-0.64l-2.11,-1.65zM12,15.5c-1.93,0 -3.5,-1.57
             -3.5,-3.5s1.57,-3.5 3.5,-3.5 3.5,1.57 3.5,3.5 -1.57,3.5 -3.5,3.5z"/>
-</vector>
\ No newline at end of file
+</vector>
diff --git a/res/layout-land/fingerprint_enroll_find_sensor.xml b/res/layout-land/fingerprint_enroll_find_sensor.xml
index 60d93a6..1d923fa 100644
--- a/res/layout-land/fingerprint_enroll_find_sensor.xml
+++ b/res/layout-land/fingerprint_enroll_find_sensor.xml
@@ -45,13 +45,11 @@
                 android:text="@string/security_settings_fingerprint_enroll_find_sensor_message"/>
 
             <Button
-                style="@style/Button.FingerprintButton"
+                style="@style/SetupWizardButton.Positive"
                 android:id="@+id/next_button"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="8dp"
-                android:layout_marginStart="-12dp"
-                android:gravity="start|center_vertical"
                 android:text="@string/fingerprint_enroll_button_next" />
         </LinearLayout>
 
diff --git a/res/layout-land/fingerprint_enroll_finish.xml b/res/layout-land/fingerprint_enroll_finish.xml
index a84f46d..26c0cf1 100644
--- a/res/layout-land/fingerprint_enroll_finish.xml
+++ b/res/layout-land/fingerprint_enroll_finish.xml
@@ -63,7 +63,7 @@
                 android:orientation="horizontal">
 
                 <Button
-                    style="@style/Button.FingerprintButton"
+                    style="@style/SetupWizardButton.Negative"
                     android:id="@+id/add_another_button"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
@@ -72,7 +72,7 @@
                     android:text="@string/fingerprint_enroll_button_add" />
 
                 <Button
-                    style="@style/Button.FingerprintButton"
+                    style="@style/SetupWizardButton.Positive"
                     android:id="@+id/next_button"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
diff --git a/res/layout-land/setup_fingerprint_enroll_find_sensor.xml b/res/layout-land/setup_fingerprint_enroll_find_sensor.xml
index bb2c02d..8a81d15 100644
--- a/res/layout-land/setup_fingerprint_enroll_find_sensor.xml
+++ b/res/layout-land/setup_fingerprint_enroll_find_sensor.xml
@@ -45,13 +45,11 @@
                     android:text="@string/security_settings_fingerprint_enroll_find_sensor_message"/>
 
             <Button
-                    style="@style/Button.FingerprintButton"
+                    style="@style/SetupWizardButton.Positive"
                     android:id="@+id/next_button"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_marginTop="8dp"
-                    android:layout_marginStart="-12dp"
-                    android:gravity="start|center_vertical"
                     android:text="@string/fingerprint_enroll_button_next" />
         </LinearLayout>
 
diff --git a/res/layout/dream_info_row.xml b/res/layout/dream_info_row.xml
index 1a4dc8e..fd70ad5 100644
--- a/res/layout/dream_info_row.xml
+++ b/res/layout/dream_info_row.xml
@@ -89,6 +89,6 @@
         android:padding="8dip"
         android:clickable="true"
         android:focusable="true"
-        android:src="@drawable/ic_bt_config" />
+        android:src="@drawable/ic_settings" />
 
 </LinearLayout>
diff --git a/res/layout/fingerprint_enroll_find_sensor_base.xml b/res/layout/fingerprint_enroll_find_sensor_base.xml
index 471c289..d38818b 100644
--- a/res/layout/fingerprint_enroll_find_sensor_base.xml
+++ b/res/layout/fingerprint_enroll_find_sensor_base.xml
@@ -56,12 +56,11 @@
                 android:layout_weight="1"/>
 
             <Button
-                style="@style/Button.FingerprintButton"
+                style="@style/SetupWizardButton.Positive"
                 android:id="@+id/next_button"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_marginBottom="4dp"
-                android:layout_marginEnd="-12dp"
                 android:layout_gravity="end"
                 android:text="@string/fingerprint_enroll_button_next" />
 
diff --git a/res/layout/fingerprint_enroll_finish_base.xml b/res/layout/fingerprint_enroll_finish_base.xml
index 21eb4e2..80f136b 100644
--- a/res/layout/fingerprint_enroll_finish_base.xml
+++ b/res/layout/fingerprint_enroll_finish_base.xml
@@ -80,14 +80,14 @@
             android:orientation="horizontal">
 
             <Button
-                style="@style/Button.FingerprintButton"
+                style="@style/SetupWizardButton.Negative"
                 android:id="@+id/add_another_button"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:text="@string/fingerprint_enroll_button_add" />
 
             <Button
-                style="@style/Button.FingerprintButton"
+                style="@style/SetupWizardButton.Positive"
                 android:id="@+id/next_button"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
diff --git a/res/layout/preference_app_restrictions.xml b/res/layout/preference_app_restrictions.xml
index fe575a2..d571b5f 100644
--- a/res/layout/preference_app_restrictions.xml
+++ b/res/layout/preference_app_restrictions.xml
@@ -83,7 +83,7 @@
         android:layout_height="fill_parent"
         android:paddingStart="12dip"
         android:paddingEnd="12dp"
-        android:src="@drawable/ic_sysbar_quicksettings"
+        android:src="@drawable/ic_settings"
         android:contentDescription="@string/apps_with_restrictions_settings_button"
         android:layout_gravity="center"
         android:clickable="true"
diff --git a/res/layout/preference_bluetooth.xml b/res/layout/preference_bluetooth.xml
index 17ee70c..c339e67 100644
--- a/res/layout/preference_bluetooth.xml
+++ b/res/layout/preference_bluetooth.xml
@@ -27,7 +27,7 @@
         android:layout_gravity="center_vertical"
         android:padding="8dip"
         android:background="?android:attr/selectableItemBackground"
-        android:src="@drawable/ic_bt_config"
+        android:src="@drawable/ic_settings"
         android:contentDescription="@string/bluetooth_device_details" />
 
 </LinearLayout>
diff --git a/res/layout/preference_tts_engine.xml b/res/layout/preference_tts_engine.xml
index fe8e967..277fc23 100644
--- a/res/layout/preference_tts_engine.xml
+++ b/res/layout/preference_tts_engine.xml
@@ -41,7 +41,7 @@
         android:layout_height="match_parent"
         android:paddingStart="?android:attr/listPreferredItemPaddingStart"
         android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
-        android:src="@drawable/ic_sysbar_quicksettings"
+        android:src="@drawable/ic_settings"
         android:contentDescription="@string/tts_engine_settings_button"
         android:layout_centerVertical="true"
         android:clickable="true"
diff --git a/res/layout/preference_widget_settings.xml b/res/layout/preference_widget_settings.xml
index 6d9ac2fe..dfeca1a 100644
--- a/res/layout/preference_widget_settings.xml
+++ b/res/layout/preference_widget_settings.xml
@@ -27,7 +27,7 @@
         android:layout_gravity="center_vertical"
         android:padding="8dip"
         android:background="?android:attr/selectableItemBackground"
-        android:src="@drawable/ic_sysbar_quicksettings"
+        android:src="@drawable/ic_settings"
         android:contentDescription="@string/settings_button" />
 
 </LinearLayout>
diff --git a/res/layout/restricted_preference_user_delete_widget.xml b/res/layout/restricted_preference_user_delete_widget.xml
index 7ffb0e4..7fd5d88 100644
--- a/res/layout/restricted_preference_user_delete_widget.xml
+++ b/res/layout/restricted_preference_user_delete_widget.xml
@@ -35,7 +35,7 @@
             android:layout_height="fill_parent"
             android:paddingStart="16dip"
             android:paddingEnd="16dip"
-            android:src="@drawable/ic_sysbar_quicksettings"
+            android:src="@drawable/ic_settings"
             android:contentDescription="@string/settings_label"
             android:layout_gravity="center"
             android:background="?android:attr/selectableItemBackground" />
diff --git a/res/layout/setup_fingerprint_enroll_find_sensor_base.xml b/res/layout/setup_fingerprint_enroll_find_sensor_base.xml
index 45af088..2455896 100644
--- a/res/layout/setup_fingerprint_enroll_find_sensor_base.xml
+++ b/res/layout/setup_fingerprint_enroll_find_sensor_base.xml
@@ -56,14 +56,12 @@
                     android:layout_weight="1"/>
 
             <Button
-                    style="@style/Button.FingerprintButton"
+                    style="@style/SetupWizardButton.Positive"
                     android:id="@+id/next_button"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_marginBottom="4dp"
-                    android:layout_marginEnd="-12dp"
                     android:layout_gravity="end"
-                    android:gravity="end|center_vertical"
                     android:text="@string/fingerprint_enroll_button_next" />
 
         </LinearLayout>
diff --git a/res/layout/wifi_display_preference.xml b/res/layout/wifi_display_preference.xml
index d8c4729..99cb89c 100644
--- a/res/layout/wifi_display_preference.xml
+++ b/res/layout/wifi_display_preference.xml
@@ -37,7 +37,7 @@
         android:layout_gravity="center_vertical"
         android:padding="8dip"
         android:background="?android:attr/selectableItemBackground"
-        android:src="@drawable/ic_bt_config"
+        android:src="@drawable/ic_settings"
         android:contentDescription="@string/wifi_display_details" />
 
 </LinearLayout>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 3b66469..a194cc1 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -119,7 +119,6 @@
 
     <color name="seek_bar_preference_preview_text">#fff</color>
 
-    <color name="importance_slider_color">@*android:color/material_deep_teal_500</color>
     <color name="importance_disabled_slider_color">@*android:color/material_grey_300</color>
     <color name="importance_secondary_slider_color">#858383</color>
 
diff --git a/res/values/config.xml b/res/values/config.xml
index 6cae9cf..2c7a2de 100755
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -40,4 +40,8 @@
 
     <!-- Fully-qualified class name for the implementation of the FeatureFactory to be instantiated. -->
     <string name="config_featureFactory" translatable="false">com.android.settings.overlay.FeatureFactoryImpl</string>
+
+    <!-- Package name and fully-qualified class name for the wallpaper picker activity. -->
+    <string name="config_wallpaper_picker_package" translatable="false">com.android.settings</string>
+    <string name="config_wallpaper_picker_class" translatable="false">com.android.settings.Settings$WallpaperSettingsActivity</string>
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 333a106..ff0c2fe 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -7486,14 +7486,12 @@
 
     <!-- Activity title for deletion helper. [CHAR LIMIT=25] -->
     <string name="deletion_helper_title">Remove from Device</string>
-    <!-- Preference group title for the list of apps to uninstall. [CHAR LIMIT=40]-->
-    <string name="deletion_helper_apps_title">Apps</string>
     <!-- Summary of how much storage an app is using and the number of days since last use. [CHAR LIMIT=NONE]-->
-    <string name="deletion_helper_app_summary"><xliff:g id="used" example="1.2GB">%1$s</xliff:g>, last used <xliff:g id="days" example="67">%2$d</xliff:g> days ago</string>
+    <string name="deletion_helper_app_summary"><xliff:g id="used" example="1.2GB">%1$s</xliff:g> • Last used <xliff:g id="days" example="67">%2$d</xliff:g> days ago</string>
     <!-- Summary of how much storage an app is using when it has never been used before. [CHAR LIMIT=NONE]-->
-    <string name="deletion_helper_app_summary_never_used"><xliff:g id="used" example="1.2GB">%1$s</xliff:g>, never used before</string>
+    <string name="deletion_helper_app_summary_never_used"><xliff:g id="used" example="1.2GB">%1$s</xliff:g> • Never used before</string>
     <!-- Summary of how much storage an app is using when its last use is unknown. [CHAR LIMIT=NONE]-->
-    <string name="deletion_helper_app_summary_unknown_used"><xliff:g id="used" example="1.2GB">%1$s</xliff:g>, not sure when last used</string>
+    <string name="deletion_helper_app_summary_unknown_used"><xliff:g id="used" example="1.2GB">%1$s</xliff:g> • Not sure when last used</string>
     <!-- Button which clears out storage in the deletion helper. [CHAR LIMIT=60]-->
     <string name="deletion_helper_free_button">Free up <xliff:g id="freeable" example="1.2GB">%1$s</xliff:g></string>
 
@@ -7598,13 +7596,13 @@
     <string name="deletion_helper_photos_title">Photos &amp; Videos (<xliff:g id="num_items">%1$d</xliff:g>)</string>
 
     <!-- Summary of how much backed up storage that photos and videos service can clear from the local device. [CHAR LIMIT=NONE]-->
-    <string name="deletion_helper_photos_summary"><xliff:g id="used" example="1.2GB">%1$s</xliff:g>, older than <xliff:g id="days">%2$d</xliff:g> days</string>
+    <string name="deletion_helper_photos_summary"><xliff:g id="used" example="1.2GB">%1$s</xliff:g> • Older than <xliff:g id="days">%2$d</xliff:g> days</string>
 
     <!-- Preference title for the downloads deletion service. [CHAR LIMIT=40]-->
     <string name="deletion_helper_downloads_title">Downloads (<xliff:g id="numItems" example="67">%1$d</xliff:g>)</string>
 
     <!-- Summary of how much stale data can be cleared from the local download folder. [CHAR LIMIT=NONE]-->
-    <string name="deletion_helper_downloads_summary"><xliff:g id="used" example="1.2GB">%1$s</xliff:g> • last modified <xliff:g id="days">%2$s</xliff:g></string>
+    <string name="deletion_helper_downloads_summary"><xliff:g id="used" example="1.2GB">%1$s</xliff:g> • Last modified <xliff:g id="days">%2$s</xliff:g></string>
 
     <!-- Summary for when when there is nothing in the downloads folder to clear. [CHAR LIMIT=NONE]-->
     <string name="deletion_helper_downloads_summary_empty"><xliff:g id="used" example="1.2GB">%1$s</xliff:g></string>
@@ -7637,7 +7635,7 @@
     <string name="deletion_helper_apps_group_title">Apps (<xliff:g id="num_items">%1$d</xliff:g>)</string>
 
     <!-- Summary for the apps category in the deletion helper, showing how many space to clear. [CHAR LIMIT=NONE]-->
-    <string name="deletion_helper_apps_group_summary"><xliff:g id="used" example="1.2GB">%1$s</xliff:g></string>
+    <string name="deletion_helper_apps_group_summary"><xliff:g id="used" example="1.2GB">%1$s</xliff:g> • Last used <xliff:g id="days">%2$d</xliff:g> days ago</string>
 
     <!-- Category title for the automatic settings in the storage manager settings. [CHAR LIMIT=40] -->
     <string name="deletion_helper_automatic_title">Automatic</string>
diff --git a/res/values/themes.xml b/res/values/themes.xml
index 694c5c6..2d78d0b 100644
--- a/res/values/themes.xml
+++ b/res/values/themes.xml
@@ -18,7 +18,6 @@
     <attr name="fingerprint_layout_theme" format="reference" />
     <attr name="fingerprint_progress_bar_size" format="reference|dimension" />
     <attr name="fingerprint_ring_radius" format="reference|dimension" />
-    <attr name="ic_menu_add" format="reference" />
     <attr name="ic_menu_moreoverflow" format="reference" />
     <attr name="ic_wps" format="reference" />
     <attr name="setup_divider_color" format="reference" />
@@ -41,7 +40,6 @@
         <item name="fingerprint_layout_theme">@style/FingerprintLayoutTheme</item>
         <item name="fingerprint_progress_bar_size">@dimen/setup_fingerprint_progress_bar_size</item>
         <item name="fingerprint_ring_radius">@dimen/setup_fingerprint_ring_radius</item>
-        <item name="ic_menu_add">@drawable/ic_menu_add_dark</item>
         <item name="ic_menu_moreoverflow">@*android:drawable/ic_menu_moreoverflow_material</item>
         <item name="ic_wps">@drawable/ic_wps_dark</item>
         <item name="setup_divider_color">@color/setup_divider_color_dark</item>
@@ -66,7 +64,6 @@
         <item name="fingerprint_layout_theme">@style/FingerprintLayoutTheme</item>
         <item name="fingerprint_progress_bar_size">@dimen/setup_fingerprint_progress_bar_size</item>
         <item name="fingerprint_ring_radius">@dimen/setup_fingerprint_ring_radius</item>
-        <item name="ic_menu_add">@drawable/ic_menu_add_light</item>
         <item name="ic_menu_moreoverflow">@*android:drawable/ic_menu_moreoverflow_material</item>
         <item name="ic_wps">@drawable/ic_wps_light</item>
         <item name="setup_divider_color">@color/setup_divider_color_light</item>
@@ -149,7 +146,6 @@
         <item name="fingerprint_layout_theme">@style/FingerprintLayoutTheme</item>
         <item name="fingerprint_progress_bar_size">@dimen/fingerprint_progress_bar_size</item>
         <item name="fingerprint_ring_radius">@dimen/fingerprint_ring_radius</item>
-        <item name="ic_menu_add">@drawable/ic_menu_add_dark</item>
         <item name="ic_menu_moreoverflow">@*android:drawable/ic_menu_moreoverflow_holo_dark</item>
         <item name="ic_wps">@drawable/ic_wps_light</item>
         <item name="wifi_signal">@drawable/wifi_signal</item>
diff --git a/res/xml/display_settings.xml b/res/xml/display_settings.xml
index 816f27b..6b5bda6 100644
--- a/res/xml/display_settings.xml
+++ b/res/xml/display_settings.xml
@@ -45,8 +45,11 @@
                 android:key="wallpaper"
                 android:title="@string/wallpaper_settings_title"
                 settings:keywords="@string/keywords_display_wallpaper"
-                android:fragment="com.android.settings.WallpaperTypeSettings"
-                settings:useAdminDisabledSummary="true" />
+                settings:useAdminDisabledSummary="true" >
+                <intent
+                        android:targetPackage="@string/config_wallpaper_picker_package"
+                        android:targetClass="@string/config_wallpaper_picker_class" />
+        </com.android.settingslib.RestrictedPreference>
 
         <com.android.settings.TimeoutListPreference
                 android:key="screen_timeout"
diff --git a/res/xml/user_settings.xml b/res/xml/user_settings.xml
index cd0103d..1375ed4 100644
--- a/res/xml/user_settings.xml
+++ b/res/xml/user_settings.xml
@@ -26,7 +26,7 @@
     <com.android.settings.DimmableIconPreference
             android:key="user_add"
             android:title="@string/user_add_user_or_profile_menu"
-            android:icon="@drawable/ic_menu_add_dark" />
+            android:icon="@drawable/ic_menu_add" />
 
     <PreferenceCategory
             android:key="lock_screen_settings"
diff --git a/src/com/android/settings/ConfirmDeviceCredentialBaseActivity.java b/src/com/android/settings/ConfirmDeviceCredentialBaseActivity.java
index c56a956..d488d7a 100644
--- a/src/com/android/settings/ConfirmDeviceCredentialBaseActivity.java
+++ b/src/com/android/settings/ConfirmDeviceCredentialBaseActivity.java
@@ -18,19 +18,20 @@
 
 import android.app.Fragment;
 import android.app.KeyguardManager;
-import android.content.Intent;
 import android.os.Bundle;
-import android.os.Handler;
 import android.os.UserManager;
 import android.view.MenuItem;
 import android.view.WindowManager;
 
 public abstract class ConfirmDeviceCredentialBaseActivity extends SettingsActivity {
 
+    private static final String STATE_IS_KEYGUARD_LOCKED = "STATE_IS_KEYGUARD_LOCKED";
+
     private boolean mRestoring;
     private boolean mDark;
     private boolean mEnterAnimationPending;
     private boolean mFirstTimeVisible = true;
+    private boolean mIsKeyguardLocked = false;
 
     @Override
     protected void onCreate(Bundle savedState) {
@@ -44,8 +45,15 @@
             mDark = true;
         }
         super.onCreate(savedState);
-        boolean deviceLocked = getSystemService(KeyguardManager.class).isKeyguardLocked();
-        if (deviceLocked && getIntent().getBooleanExtra(
+        mIsKeyguardLocked = savedState == null
+                ? getSystemService(KeyguardManager.class).isKeyguardLocked()
+                : savedState.getBoolean(STATE_IS_KEYGUARD_LOCKED, false);
+        // If the activity is launched, not due to config change, when keyguard is locked and the
+        // flag is set, assume it's launched on top of keyguard on purpose.
+        // TODO: Don't abuse SHOW_WHEN_LOCKED and don't check isKeyguardLocked.
+        // Set extra SHOW_WHEN_LOCKED and WindowManager FLAG_SHOW_WHEN_LOCKED only if it's
+        // truly on top of keyguard on purpose
+        if (mIsKeyguardLocked && getIntent().getBooleanExtra(
                 ConfirmDeviceCredentialBaseFragment.SHOW_WHEN_LOCKED, false)) {
             getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
         }
@@ -60,6 +68,12 @@
     }
 
     @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        outState.putBoolean(STATE_IS_KEYGUARD_LOCKED, mIsKeyguardLocked);
+    }
+
+    @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         if (item.getItemId() == android.R.id.home) {
             finish();
diff --git a/src/com/android/settings/CredentialStorage.java b/src/com/android/settings/CredentialStorage.java
index 6cdf0b9..eed380b 100644
--- a/src/com/android/settings/CredentialStorage.java
+++ b/src/com/android/settings/CredentialStorage.java
@@ -103,16 +103,11 @@
     static final int MIN_PASSWORD_QUALITY = DevicePolicyManager.PASSWORD_QUALITY_SOMETHING;
 
     private static final int CONFIRM_KEY_GUARD_REQUEST = 1;
+    private static final int CONFIRM_CLEAR_SYSTEM_CREDENTIAL_REQUEST = 2;
 
     private final KeyStore mKeyStore = KeyStore.getInstance();
 
     /**
-     * The UIDs that are used for system credential storage in keystore.
-     */
-    private static final int[] SYSTEM_CREDENTIAL_UIDS = {Process.WIFI_UID, Process.VPN_UID,
-        Process.ROOT_UID, Process.SYSTEM_UID};
-
-    /**
      * When non-null, the bundle containing credentials to install.
      */
     private Bundle mInstallBundle;
@@ -197,7 +192,7 @@
             return;
         }
         // force key guard confirmation
-        if (confirmKeyGuard()) {
+        if (confirmKeyGuard(CONFIRM_KEY_GUARD_REQUEST)) {
             // will return password value via onActivityResult
             return;
         }
@@ -328,8 +323,10 @@
         @Override public void onDismiss(DialogInterface dialog) {
             if (mResetConfirmed) {
                 mResetConfirmed = false;
-                new ResetKeyStoreAndKeyChain().execute();
-                return;
+                if (confirmKeyGuard(CONFIRM_CLEAR_SYSTEM_CREDENTIAL_REQUEST)) {
+                    // will return password value via onActivityResult
+                    return;
+                }
             }
             finish();
         }
@@ -343,12 +340,7 @@
         @Override protected Boolean doInBackground(Void... unused) {
 
             // Clear all the users credentials could have been installed in for this user.
-            final UserManager um = (UserManager) getSystemService(USER_SERVICE);
-            for (int userId : um.getProfileIdsWithDisabled(UserHandle.myUserId())) {
-                for (int uid : SYSTEM_CREDENTIAL_UIDS) {
-                    mKeyStore.clearUid(UserHandle.getUid(userId, uid));
-                }
-            }
+            new LockPatternUtils(CredentialStorage.this).resetKeyStore(UserHandle.myUserId());
 
             try {
                 KeyChainConnection keyChainConnection = KeyChain.bind(CredentialStorage.this);
@@ -454,10 +446,10 @@
     /**
      * Confirm existing key guard, returning password via onActivityResult.
      */
-    private boolean confirmKeyGuard() {
+    private boolean confirmKeyGuard(int requestCode) {
         Resources res = getResources();
         boolean launched = new ChooseLockSettingsHelper(this)
-                .launchConfirmationActivity(CONFIRM_KEY_GUARD_REQUEST,
+                .launchConfirmationActivity(requestCode,
                         res.getText(R.string.credentials_title), true);
         return launched;
     }
@@ -481,6 +473,13 @@
             }
             // failed confirmation, bail
             finish();
+        } else if (requestCode == CONFIRM_CLEAR_SYSTEM_CREDENTIAL_REQUEST) {
+            if (resultCode == Activity.RESULT_OK) {
+                new ResetKeyStoreAndKeyChain().execute();
+                return;
+            }
+            // failed confirmation, bail
+            finish();
         }
     }
 
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index bd6619e..d68b480 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -410,12 +410,7 @@
 
     @Override
     public boolean onPreferenceStartFragment(PreferenceFragment caller, Preference pref) {
-        // Override the fragment title for Wallpaper settings
-        CharSequence title = pref.getTitle();
-        if (pref.getFragment().equals(WallpaperTypeSettings.class.getName())) {
-            title = getString(R.string.wallpaper_settings_fragment_title);
-        }
-        startPreferencePanel(pref.getFragment(), pref.getExtras(), -1, title,
+        startPreferencePanel(pref.getFragment(), pref.getExtras(), -1, pref.getTitle(),
                 null, 0);
         return true;
     }
diff --git a/src/com/android/settings/UserDictionarySettings.java b/src/com/android/settings/UserDictionarySettings.java
index 19d34ef..bdeab92 100644
--- a/src/com/android/settings/UserDictionarySettings.java
+++ b/src/com/android/settings/UserDictionarySettings.java
@@ -160,7 +160,7 @@
     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
         MenuItem actionItem =
                 menu.add(0, OPTIONS_MENU_ADD, 0, R.string.user_dict_settings_add_menu_title)
-                .setIcon(R.drawable.ic_menu_add_dark);
+                .setIcon(R.drawable.ic_menu_add_white);
         actionItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM |
                 MenuItem.SHOW_AS_ACTION_WITH_TEXT);
     }
diff --git a/src/com/android/settings/accounts/AccountSettings.java b/src/com/android/settings/accounts/AccountSettings.java
index 22c9de7..eb74034 100644
--- a/src/com/android/settings/accounts/AccountSettings.java
+++ b/src/com/android/settings/accounts/AccountSettings.java
@@ -350,7 +350,7 @@
     private Preference newManagedProfileSettings() {
         Preference preference = new Preference(getPrefContext());
         preference.setTitle(R.string.managed_profile_settings_title);
-        preference.setIcon(R.drawable.ic_sysbar_quicksettings);
+        preference.setIcon(R.drawable.ic_settings);
         preference.setOnPreferenceClickListener(this);
         preference.setOrder(ORDER_NEXT_TO_LAST);
         return preference;
diff --git a/src/com/android/settings/dashboard/conditional/ConditionManager.java b/src/com/android/settings/dashboard/conditional/ConditionManager.java
index 128ac27..f38bb2a 100644
--- a/src/com/android/settings/dashboard/conditional/ConditionManager.java
+++ b/src/com/android/settings/dashboard/conditional/ConditionManager.java
@@ -56,7 +56,7 @@
 
     private ConditionManager(Context context) {
         mContext = context;
-        mConditions = new ArrayList<Condition>();
+        mConditions = new ArrayList<>();
         new ConditionLoader().execute();
     }
 
@@ -67,11 +67,11 @@
         }
     }
 
-    private void readFromXml() {
-        if (DEBUG) Log.d(TAG, "Reading from " + mXmlFile.toString());
+    private void readFromXml(File xmlFile, ArrayList<Condition> conditions) {
+        if (DEBUG) Log.d(TAG, "Reading from " + xmlFile.toString());
         try {
             XmlPullParser parser = Xml.newPullParser();
-            FileReader in = new FileReader(mXmlFile);
+            FileReader in = new FileReader(xmlFile);
             parser.setInput(in);
             int state = parser.getEventType();
 
@@ -86,7 +86,7 @@
                     PersistableBundle bundle = PersistableBundle.restoreFromXml(parser);
                     if (DEBUG) Log.d(TAG, "Reading " + clz + " -- " + bundle);
                     condition.restoreState(bundle);
-                    mConditions.add(condition);
+                    conditions.add(condition);
                     while (parser.getDepth() > depth) {
                         parser.next();
                     }
@@ -129,21 +129,21 @@
         }
     }
 
-    private void addMissingConditions() {
-        addIfMissing(AirplaneModeCondition.class);
-        addIfMissing(HotspotCondition.class);
-        addIfMissing(DndCondition.class);
-        addIfMissing(BatterySaverCondition.class);
-        addIfMissing(CellularDataCondition.class);
-        addIfMissing(BackgroundDataCondition.class);
-        addIfMissing(WorkModeCondition.class);
-        Collections.sort(mConditions, CONDITION_COMPARATOR);
+    private void addMissingConditions(ArrayList<Condition> conditions) {
+        addIfMissing(AirplaneModeCondition.class, conditions);
+        addIfMissing(HotspotCondition.class, conditions);
+        addIfMissing(DndCondition.class, conditions);
+        addIfMissing(BatterySaverCondition.class, conditions);
+        addIfMissing(CellularDataCondition.class, conditions);
+        addIfMissing(BackgroundDataCondition.class, conditions);
+        addIfMissing(WorkModeCondition.class, conditions);
+        Collections.sort(conditions, CONDITION_COMPARATOR);
     }
 
-    private void addIfMissing(Class<? extends Condition> clz) {
-        if (getCondition(clz) == null) {
+    private void addIfMissing(Class<? extends Condition> clz, ArrayList<Condition> conditions) {
+        if (getCondition(clz, conditions) == null) {
             if (DEBUG) Log.d(TAG, "Adding missing " + clz.getName());
-            mConditions.add(createCondition(clz));
+            conditions.add(createCondition(clz));
         }
     }
 
@@ -171,10 +171,14 @@
     }
 
     public <T extends Condition> T getCondition(Class<T> clz) {
-        final int N = mConditions.size();
+        return getCondition(clz, mConditions);
+    }
+
+    private <T extends Condition> T getCondition(Class<T> clz, List<Condition> conditions) {
+        final int N = conditions.size();
         for (int i = 0; i < N; i++) {
-            if (clz.equals(mConditions.get(i).getClass())) {
-                return (T) mConditions.get(i);
+            if (clz.equals(conditions.get(i).getClass())) {
+                return (T) conditions.get(i);
             }
         }
         return null;
@@ -213,19 +217,22 @@
         mListeners.remove(listener);
     }
 
-    private class ConditionLoader extends AsyncTask<Void, Void, Void> {
+    private class ConditionLoader extends AsyncTask<Void, Void, ArrayList<Condition>> {
         @Override
-        protected Void doInBackground(Void... params) {
+        protected ArrayList<Condition> doInBackground(Void... params) {
+            ArrayList<Condition> conditions = new ArrayList<>();
             mXmlFile = new File(mContext.getFilesDir(), FILE_NAME);
             if (mXmlFile.exists()) {
-                readFromXml();
+                readFromXml(mXmlFile, conditions);
             }
-            addMissingConditions();
-            return null;
+            addMissingConditions(conditions);
+            return conditions;
         }
 
         @Override
-        protected void onPostExecute(Void aVoid) {
+        protected void onPostExecute(ArrayList<Condition> conditions) {
+            mConditions.clear();
+            mConditions.addAll(conditions);
             final int N = mListeners.size();
             for (int i = 0; i < N; i++) {
                 mListeners.get(i).onConditionsChanged();
diff --git a/src/com/android/settings/deletionhelper/AppStateUsageStatsBridge.java b/src/com/android/settings/deletionhelper/AppStateUsageStatsBridge.java
index 36c4196..6f77a29 100644
--- a/src/com/android/settings/deletionhelper/AppStateUsageStatsBridge.java
+++ b/src/com/android/settings/deletionhelper/AppStateUsageStatsBridge.java
@@ -41,6 +41,7 @@
     private PackageManager mPm;
     public static final long NEVER_USED = -1;
     public static final long UNKNOWN_LAST_USE = -2;
+    public static final long UNUSED_DAYS_DELETION_THRESHOLD = 60;
 
     public AppStateUsageStatsBridge(Context context, ApplicationsState appState,
                                     Callback callback) {
@@ -105,7 +106,6 @@
      * usage is unknown, it is skipped.
      */
     public static final AppFilter FILTER_USAGE_STATS = new AppFilter() {
-        private long UNUSED_DAYS_DELETION_THRESHOLD = 60;
 
         @Override
         public void init() {
diff --git a/src/com/android/settings/deletionhelper/AutomaticStorageManagerSettings.java b/src/com/android/settings/deletionhelper/AutomaticStorageManagerSettings.java
index bb99725..abd0ec1 100644
--- a/src/com/android/settings/deletionhelper/AutomaticStorageManagerSettings.java
+++ b/src/com/android/settings/deletionhelper/AutomaticStorageManagerSettings.java
@@ -18,6 +18,7 @@
 
 import android.app.Activity;
 import android.os.Bundle;
+import android.provider.Settings;
 import android.util.Log;
 import android.view.View;
 import android.widget.Switch;
@@ -64,6 +65,10 @@
         mDeletionHelper.setOnPreferenceClickListener(this);
 
         mStorageManagerSwitch = (SwitchPreference) findPreference(KEY_STORAGE_MANAGER_SWITCH);
+        boolean isChecked =
+                Settings.Secure.getInt(getContentResolver(),
+                        Settings.Secure.AUTOMATIC_STORAGE_MANAGER_ENABLED, 0) != 0;
+        mStorageManagerSwitch.setChecked(isChecked);
         mStorageManagerSwitch.setOnPreferenceChangeListener(this);
     }
 
@@ -79,6 +84,8 @@
             case KEY_STORAGE_MANAGER_SWITCH:
                 boolean checked = (boolean) newValue;
                 mDaysToRetain.setEnabled(checked);
+                Settings.Secure.putInt(getContentResolver(),
+                        Settings.Secure.AUTOMATIC_STORAGE_MANAGER_ENABLED, checked ? 1 : 0);
                 break;
             case KEY_DAYS:
                 // TODO: Configure a setting which controls how many days of data the storage manager
diff --git a/src/com/android/settings/deletionhelper/DeletionHelperFragment.java b/src/com/android/settings/deletionhelper/DeletionHelperFragment.java
index 85c1035..9e1d0ea 100644
--- a/src/com/android/settings/deletionhelper/DeletionHelperFragment.java
+++ b/src/com/android/settings/deletionhelper/DeletionHelperFragment.java
@@ -394,7 +394,8 @@
                     mAppEntries.size()));
             mApps.setSummary(app.getString(R.string.deletion_helper_apps_group_summary,
                     Formatter.formatFileSize(app,
-                            getTotalAppsFreeableSpace(true))));
+                            getTotalAppsFreeableSpace(true)),
+                    AppStateUsageStatsBridge.UNUSED_DAYS_DELETION_THRESHOLD));
         }
     }
 
diff --git a/src/com/android/settings/deviceinfo/SimStatus.java b/src/com/android/settings/deviceinfo/SimStatus.java
index 0acad37..610744b 100644
--- a/src/com/android/settings/deviceinfo/SimStatus.java
+++ b/src/com/android/settings/deviceinfo/SimStatus.java
@@ -362,7 +362,7 @@
                 mShowLatestAreaInfo = true;
             }
         }
-        PersistableBundle carrierConfig = mCarrierConfigManager.getConfig(
+        PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(
                 mSir.getSubscriptionId());
         mShowICCID = carrierConfig.getBoolean(
                 CarrierConfigManager.KEY_SHOW_ICCID_IN_SIM_STATUS_BOOL);
diff --git a/src/com/android/settings/notification/ImportanceSeekBarPreference.java b/src/com/android/settings/notification/ImportanceSeekBarPreference.java
index 4da5dbf..fe97448 100644
--- a/src/com/android/settings/notification/ImportanceSeekBarPreference.java
+++ b/src/com/android/settings/notification/ImportanceSeekBarPreference.java
@@ -16,6 +16,8 @@
 
 package com.android.settings.notification;
 
+import android.content.res.Resources;
+import android.util.TypedValue;
 import com.android.settings.R;
 import com.android.settings.SeekBarPreference;
 
@@ -52,8 +54,10 @@
             int defStyleRes) {
         super(context, attrs, defStyleAttr, defStyleRes);
         setLayoutResource(R.layout.preference_importance_slider);
-        mActiveSliderTint = ColorStateList.valueOf(
-                context.getColor(R.color.importance_slider_color));
+        Resources.Theme theme = context.getTheme();
+        TypedValue typedValue = new TypedValue();
+        theme.resolveAttribute(android.R.attr.colorAccent, typedValue, true);
+        mActiveSliderTint = ColorStateList.valueOf(context.getColor(typedValue.resourceId));
         mInactiveSliderTint = ColorStateList.valueOf(
                 context.getColor(R.color.importance_disabled_slider_color));
         mHandler = new Handler();
diff --git a/src/com/android/settings/search/DynamicIndexableContentMonitor.java b/src/com/android/settings/search/DynamicIndexableContentMonitor.java
index 6753a76..a24ec50 100644
--- a/src/com/android/settings/search/DynamicIndexableContentMonitor.java
+++ b/src/com/android/settings/search/DynamicIndexableContentMonitor.java
@@ -34,10 +34,12 @@
 import android.os.Looper;
 import android.os.Message;
 import android.os.UserHandle;
+import android.os.UserManager;
 import android.print.PrintManager;
 import android.print.PrintServicesLoader;
 import android.printservice.PrintServiceInfo;
 import android.provider.UserDictionary;
+import android.util.Log;
 import android.view.accessibility.AccessibilityManager;
 import android.view.inputmethod.InputMethodInfo;
 import android.view.inputmethod.InputMethodManager;
@@ -53,6 +55,7 @@
 public final class DynamicIndexableContentMonitor extends PackageMonitor implements
         InputManager.InputDeviceListener,
         LoaderManager.LoaderCallbacks<List<PrintServiceInfo>> {
+    private static final String TAG = "DynamicIndexableContentMonitor";
 
     private static final long DELAY_PROCESS_PACKAGE_CHANGE = 2000;
 
@@ -84,6 +87,7 @@
 
     private Context mContext;
     private boolean mHasFeatureIme;
+    private boolean mRegistered;
 
     private static Intent getAccessibilityServiceIntent(String packageName) {
         final Intent intent = new Intent(AccessibilityService.SERVICE_INTERFACE);
@@ -100,6 +104,14 @@
     public void register(Activity activity, int loaderId) {
         mContext = activity;
 
+        if (!mContext.getSystemService(UserManager.class).isUserUnlocked()) {
+            Log.w(TAG, "Skipping content monitoring because user is locked");
+            mRegistered = false;
+            return;
+        } else {
+            mRegistered = true;
+        }
+
         boolean hasFeaturePrinting = mContext.getPackageManager().hasSystemFeature(
                 PackageManager.FEATURE_PRINTING);
         mHasFeatureIme = mContext.getPackageManager().hasSystemFeature(
@@ -151,7 +163,10 @@
         register(activity, Looper.getMainLooper(), UserHandle.CURRENT, false);
     }
 
+    @Override
     public void unregister() {
+        if (!mRegistered) return;
+
         super.unregister();
 
         InputManager inputManager = (InputManager) mContext.getSystemService(
@@ -183,13 +198,17 @@
     @Override
     public void onPackageModified(String packageName) {
         super.onPackageModified(packageName);
-        final int state = mContext.getPackageManager().getApplicationEnabledSetting(
-                packageName);
-        if (state == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT
-                || state ==  PackageManager.COMPONENT_ENABLED_STATE_ENABLED) {
-            postMessage(MSG_PACKAGE_AVAILABLE, packageName);
-        } else {
-            postMessage(MSG_PACKAGE_UNAVAILABLE, packageName);
+        try {
+            final int state = mContext.getPackageManager().getApplicationEnabledSetting(
+                    packageName);
+            if (state == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT
+                    || state == PackageManager.COMPONENT_ENABLED_STATE_ENABLED) {
+                postMessage(MSG_PACKAGE_AVAILABLE, packageName);
+            } else {
+                postMessage(MSG_PACKAGE_UNAVAILABLE, packageName);
+            }
+        } catch (IllegalArgumentException e) {
+            Log.e(TAG, "Package does not exist: " + packageName, e);
         }
     }
 
diff --git a/src/com/android/settings/vpn2/ConfigDialogFragment.java b/src/com/android/settings/vpn2/ConfigDialogFragment.java
index 0dbaa9a..788b9a9 100644
--- a/src/com/android/settings/vpn2/ConfigDialogFragment.java
+++ b/src/com/android/settings/vpn2/ConfigDialogFragment.java
@@ -176,6 +176,7 @@
         try {
             LegacyVpnInfo connected = mService.getLegacyVpnInfo(UserHandle.myUserId());
             if (connected != null && profile.key.equals(connected.key)) {
+                VpnUtils.clearLockdownVpn(getContext());
                 mService.prepareVpn(VpnConfig.LEGACY_VPN, VpnConfig.LEGACY_VPN,
                         UserHandle.myUserId());
             }