Merge "Shortened the "Restrict background data" string so it won't trucate. Bug: 5255012"
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 92f3acc..ab9d975 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -937,7 +937,8 @@
             </intent-filter>
         </receiver>
 
-        <receiver android:name=".bluetooth.BluetoothPermissionRequest">
+        <receiver android:name=".bluetooth.BluetoothPermissionRequest"
+                  android:permission="android.permission.BLUETOOTH_ADMIN">
             <intent-filter>
                 <action android:name="android.bluetooth.device.action.CONNECTION_ACCESS_REQUEST" />
                 <action android:name="android.bluetooth.device.action.CONNECTION_ACCESS_CANCEL" />
diff --git a/res/drawable-hdpi/appwidget_bg_holo.9.png b/res/drawable-hdpi/appwidget_bg_holo.9.png
index 829e656..34af75f 100644
--- a/res/drawable-hdpi/appwidget_bg_holo.9.png
+++ b/res/drawable-hdpi/appwidget_bg_holo.9.png
Binary files differ
diff --git a/res/drawable-hdpi/appwidget_settings_ind_mid_c_holo.9.png b/res/drawable-hdpi/appwidget_settings_ind_mid_c_holo.9.png
index dbbf15c..9d6fcc3 100644
--- a/res/drawable-hdpi/appwidget_settings_ind_mid_c_holo.9.png
+++ b/res/drawable-hdpi/appwidget_settings_ind_mid_c_holo.9.png
Binary files differ
diff --git a/res/drawable-hdpi/appwidget_settings_ind_mid_l_holo.9.png b/res/drawable-hdpi/appwidget_settings_ind_mid_l_holo.9.png
index 6e772d1..78996de 100644
--- a/res/drawable-hdpi/appwidget_settings_ind_mid_l_holo.9.png
+++ b/res/drawable-hdpi/appwidget_settings_ind_mid_l_holo.9.png
Binary files differ
diff --git a/res/drawable-hdpi/appwidget_settings_ind_mid_r_holo.9.png b/res/drawable-hdpi/appwidget_settings_ind_mid_r_holo.9.png
index 03d95f0..59fd474 100644
--- a/res/drawable-hdpi/appwidget_settings_ind_mid_r_holo.9.png
+++ b/res/drawable-hdpi/appwidget_settings_ind_mid_r_holo.9.png
Binary files differ
diff --git a/res/drawable-hdpi/appwidget_settings_ind_off_c_holo.9.png b/res/drawable-hdpi/appwidget_settings_ind_off_c_holo.9.png
index 875c5f9..2a147ca 100644
--- a/res/drawable-hdpi/appwidget_settings_ind_off_c_holo.9.png
+++ b/res/drawable-hdpi/appwidget_settings_ind_off_c_holo.9.png
Binary files differ
diff --git a/res/drawable-hdpi/appwidget_settings_ind_off_l_holo.9.png b/res/drawable-hdpi/appwidget_settings_ind_off_l_holo.9.png
index 2fc328b..3d04abd 100644
--- a/res/drawable-hdpi/appwidget_settings_ind_off_l_holo.9.png
+++ b/res/drawable-hdpi/appwidget_settings_ind_off_l_holo.9.png
Binary files differ
diff --git a/res/drawable-hdpi/appwidget_settings_ind_off_r_holo.9.png b/res/drawable-hdpi/appwidget_settings_ind_off_r_holo.9.png
index 213bc4c..32dc212 100644
--- a/res/drawable-hdpi/appwidget_settings_ind_off_r_holo.9.png
+++ b/res/drawable-hdpi/appwidget_settings_ind_off_r_holo.9.png
Binary files differ
diff --git a/res/drawable-hdpi/appwidget_settings_ind_on_c_holo.9.png b/res/drawable-hdpi/appwidget_settings_ind_on_c_holo.9.png
index 84737ea..dd1b3ff 100644
--- a/res/drawable-hdpi/appwidget_settings_ind_on_c_holo.9.png
+++ b/res/drawable-hdpi/appwidget_settings_ind_on_c_holo.9.png
Binary files differ
diff --git a/res/drawable-hdpi/appwidget_settings_ind_on_l_holo.9.png b/res/drawable-hdpi/appwidget_settings_ind_on_l_holo.9.png
index f15709e..e6c5acf 100644
--- a/res/drawable-hdpi/appwidget_settings_ind_on_l_holo.9.png
+++ b/res/drawable-hdpi/appwidget_settings_ind_on_l_holo.9.png
Binary files differ
diff --git a/res/drawable-hdpi/appwidget_settings_ind_on_r_holo.9.png b/res/drawable-hdpi/appwidget_settings_ind_on_r_holo.9.png
index a92d8e4..9d96d06 100644
--- a/res/drawable-hdpi/appwidget_settings_ind_on_r_holo.9.png
+++ b/res/drawable-hdpi/appwidget_settings_ind_on_r_holo.9.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_appwidget_settings_bluetooth_off_holo.png b/res/drawable-hdpi/ic_appwidget_settings_bluetooth_off_holo.png
index bfa2d51..544a6dc 100644
--- a/res/drawable-hdpi/ic_appwidget_settings_bluetooth_off_holo.png
+++ b/res/drawable-hdpi/ic_appwidget_settings_bluetooth_off_holo.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_appwidget_settings_bluetooth_on_holo.png b/res/drawable-hdpi/ic_appwidget_settings_bluetooth_on_holo.png
index 2a84db0..5a4596b 100644
--- a/res/drawable-hdpi/ic_appwidget_settings_bluetooth_on_holo.png
+++ b/res/drawable-hdpi/ic_appwidget_settings_bluetooth_on_holo.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_appwidget_settings_brightness_auto_holo.png b/res/drawable-hdpi/ic_appwidget_settings_brightness_auto_holo.png
index 8b91582..54c8266 100644
--- a/res/drawable-hdpi/ic_appwidget_settings_brightness_auto_holo.png
+++ b/res/drawable-hdpi/ic_appwidget_settings_brightness_auto_holo.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_appwidget_settings_brightness_full_holo.png b/res/drawable-hdpi/ic_appwidget_settings_brightness_full_holo.png
index c5044bc..0de4d0e 100644
--- a/res/drawable-hdpi/ic_appwidget_settings_brightness_full_holo.png
+++ b/res/drawable-hdpi/ic_appwidget_settings_brightness_full_holo.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_appwidget_settings_gps_on_holo.png b/res/drawable-hdpi/ic_appwidget_settings_gps_on_holo.png
index 1b1666a..89e823b 100644
--- a/res/drawable-hdpi/ic_appwidget_settings_gps_on_holo.png
+++ b/res/drawable-hdpi/ic_appwidget_settings_gps_on_holo.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_appwidget_settings_sync_on_holo.png b/res/drawable-hdpi/ic_appwidget_settings_sync_on_holo.png
index 135c4dc..e37446c 100644
--- a/res/drawable-hdpi/ic_appwidget_settings_sync_on_holo.png
+++ b/res/drawable-hdpi/ic_appwidget_settings_sync_on_holo.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_appwidget_settings_wifi_off_holo.png b/res/drawable-hdpi/ic_appwidget_settings_wifi_off_holo.png
index 9f36c40..0e0ccda 100644
--- a/res/drawable-hdpi/ic_appwidget_settings_wifi_off_holo.png
+++ b/res/drawable-hdpi/ic_appwidget_settings_wifi_off_holo.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_appwidget_settings_wifi_on_holo.png b/res/drawable-hdpi/ic_appwidget_settings_wifi_on_holo.png
index bdb2bf3..c3c51e85 100644
--- a/res/drawable-hdpi/ic_appwidget_settings_wifi_on_holo.png
+++ b/res/drawable-hdpi/ic_appwidget_settings_wifi_on_holo.png
Binary files differ
diff --git a/res/drawable-hdpi/preview.png b/res/drawable-hdpi/preview.png
deleted file mode 100644
index d8f1880..0000000
--- a/res/drawable-hdpi/preview.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/appwidget_bg_holo.9.png b/res/drawable-mdpi/appwidget_bg_holo.9.png
index 5cd3a61..fa082c2 100644
--- a/res/drawable-mdpi/appwidget_bg_holo.9.png
+++ b/res/drawable-mdpi/appwidget_bg_holo.9.png
Binary files differ
diff --git a/res/drawable-mdpi/appwidget_settings_ind_mid_c_holo.9.png b/res/drawable-mdpi/appwidget_settings_ind_mid_c_holo.9.png
index 3b27803..9c5bd25 100644
--- a/res/drawable-mdpi/appwidget_settings_ind_mid_c_holo.9.png
+++ b/res/drawable-mdpi/appwidget_settings_ind_mid_c_holo.9.png
Binary files differ
diff --git a/res/drawable-mdpi/appwidget_settings_ind_mid_l_holo.9.png b/res/drawable-mdpi/appwidget_settings_ind_mid_l_holo.9.png
index a7bd60b..ee8dcce 100644
--- a/res/drawable-mdpi/appwidget_settings_ind_mid_l_holo.9.png
+++ b/res/drawable-mdpi/appwidget_settings_ind_mid_l_holo.9.png
Binary files differ
diff --git a/res/drawable-mdpi/appwidget_settings_ind_mid_r_holo.9.png b/res/drawable-mdpi/appwidget_settings_ind_mid_r_holo.9.png
index a60a7a4..a91f50b 100644
--- a/res/drawable-mdpi/appwidget_settings_ind_mid_r_holo.9.png
+++ b/res/drawable-mdpi/appwidget_settings_ind_mid_r_holo.9.png
Binary files differ
diff --git a/res/drawable-mdpi/appwidget_settings_ind_off_c_holo.9.png b/res/drawable-mdpi/appwidget_settings_ind_off_c_holo.9.png
index 552616c..2edaa2b 100644
--- a/res/drawable-mdpi/appwidget_settings_ind_off_c_holo.9.png
+++ b/res/drawable-mdpi/appwidget_settings_ind_off_c_holo.9.png
Binary files differ
diff --git a/res/drawable-mdpi/appwidget_settings_ind_off_l_holo.9.png b/res/drawable-mdpi/appwidget_settings_ind_off_l_holo.9.png
index 735403c..1452c51 100644
--- a/res/drawable-mdpi/appwidget_settings_ind_off_l_holo.9.png
+++ b/res/drawable-mdpi/appwidget_settings_ind_off_l_holo.9.png
Binary files differ
diff --git a/res/drawable-mdpi/appwidget_settings_ind_off_r_holo.9.png b/res/drawable-mdpi/appwidget_settings_ind_off_r_holo.9.png
index f348c13..9844e87 100644
--- a/res/drawable-mdpi/appwidget_settings_ind_off_r_holo.9.png
+++ b/res/drawable-mdpi/appwidget_settings_ind_off_r_holo.9.png
Binary files differ
diff --git a/res/drawable-mdpi/appwidget_settings_ind_on_c_holo.9.png b/res/drawable-mdpi/appwidget_settings_ind_on_c_holo.9.png
index 7d98a6e..5a59a10 100644
--- a/res/drawable-mdpi/appwidget_settings_ind_on_c_holo.9.png
+++ b/res/drawable-mdpi/appwidget_settings_ind_on_c_holo.9.png
Binary files differ
diff --git a/res/drawable-mdpi/appwidget_settings_ind_on_l_holo.9.png b/res/drawable-mdpi/appwidget_settings_ind_on_l_holo.9.png
index 58357d0..9a1cb7a 100644
--- a/res/drawable-mdpi/appwidget_settings_ind_on_l_holo.9.png
+++ b/res/drawable-mdpi/appwidget_settings_ind_on_l_holo.9.png
Binary files differ
diff --git a/res/drawable-mdpi/appwidget_settings_ind_on_r_holo.9.png b/res/drawable-mdpi/appwidget_settings_ind_on_r_holo.9.png
index b63ca40..4ac5dab 100644
--- a/res/drawable-mdpi/appwidget_settings_ind_on_r_holo.9.png
+++ b/res/drawable-mdpi/appwidget_settings_ind_on_r_holo.9.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_appwidget_settings_bluetooth_off_holo.png b/res/drawable-mdpi/ic_appwidget_settings_bluetooth_off_holo.png
index 5681da6..a830c6a 100644
--- a/res/drawable-mdpi/ic_appwidget_settings_bluetooth_off_holo.png
+++ b/res/drawable-mdpi/ic_appwidget_settings_bluetooth_off_holo.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_appwidget_settings_bluetooth_on_holo.png b/res/drawable-mdpi/ic_appwidget_settings_bluetooth_on_holo.png
index 5dedfad..07328dd 100644
--- a/res/drawable-mdpi/ic_appwidget_settings_bluetooth_on_holo.png
+++ b/res/drawable-mdpi/ic_appwidget_settings_bluetooth_on_holo.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_appwidget_settings_brightness_auto_holo.png b/res/drawable-mdpi/ic_appwidget_settings_brightness_auto_holo.png
index b341811..81f80df 100644
--- a/res/drawable-mdpi/ic_appwidget_settings_brightness_auto_holo.png
+++ b/res/drawable-mdpi/ic_appwidget_settings_brightness_auto_holo.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_appwidget_settings_brightness_full_holo.png b/res/drawable-mdpi/ic_appwidget_settings_brightness_full_holo.png
index 5b40244..b3c94c7 100644
--- a/res/drawable-mdpi/ic_appwidget_settings_brightness_full_holo.png
+++ b/res/drawable-mdpi/ic_appwidget_settings_brightness_full_holo.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_appwidget_settings_gps_on_holo.png b/res/drawable-mdpi/ic_appwidget_settings_gps_on_holo.png
index 1c064ff..4a70da7 100644
--- a/res/drawable-mdpi/ic_appwidget_settings_gps_on_holo.png
+++ b/res/drawable-mdpi/ic_appwidget_settings_gps_on_holo.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_appwidget_settings_sync_on_holo.png b/res/drawable-mdpi/ic_appwidget_settings_sync_on_holo.png
index 5bffa9a..6e3c81a 100644
--- a/res/drawable-mdpi/ic_appwidget_settings_sync_on_holo.png
+++ b/res/drawable-mdpi/ic_appwidget_settings_sync_on_holo.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_appwidget_settings_wifi_off_holo.png b/res/drawable-mdpi/ic_appwidget_settings_wifi_off_holo.png
index fc6670b..6edec54 100644
--- a/res/drawable-mdpi/ic_appwidget_settings_wifi_off_holo.png
+++ b/res/drawable-mdpi/ic_appwidget_settings_wifi_off_holo.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_appwidget_settings_wifi_on_holo.png b/res/drawable-mdpi/ic_appwidget_settings_wifi_on_holo.png
index e6730c5..6cb023a 100644
--- a/res/drawable-mdpi/ic_appwidget_settings_wifi_on_holo.png
+++ b/res/drawable-mdpi/ic_appwidget_settings_wifi_on_holo.png
Binary files differ
diff --git a/res/drawable-mdpi/preview.png b/res/drawable-mdpi/preview.png
deleted file mode 100644
index ebf7f3d..0000000
--- a/res/drawable-mdpi/preview.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-nodpi/preview.png b/res/drawable-nodpi/preview.png
new file mode 100644
index 0000000..10a7c90
--- /dev/null
+++ b/res/drawable-nodpi/preview.png
Binary files differ
diff --git a/res/drawable-xhdpi/appwidget_bg_holo.9.png b/res/drawable-xhdpi/appwidget_bg_holo.9.png
index 4628822..a30874b 100644
--- a/res/drawable-xhdpi/appwidget_bg_holo.9.png
+++ b/res/drawable-xhdpi/appwidget_bg_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/appwidget_settings_ind_mid_c_holo.9.png b/res/drawable-xhdpi/appwidget_settings_ind_mid_c_holo.9.png
index c2a4902..45f6b8a 100644
--- a/res/drawable-xhdpi/appwidget_settings_ind_mid_c_holo.9.png
+++ b/res/drawable-xhdpi/appwidget_settings_ind_mid_c_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/appwidget_settings_ind_mid_l_holo.9.png b/res/drawable-xhdpi/appwidget_settings_ind_mid_l_holo.9.png
index 206a731..083997c 100644
--- a/res/drawable-xhdpi/appwidget_settings_ind_mid_l_holo.9.png
+++ b/res/drawable-xhdpi/appwidget_settings_ind_mid_l_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/appwidget_settings_ind_mid_r_holo.9.png b/res/drawable-xhdpi/appwidget_settings_ind_mid_r_holo.9.png
index d0768a3..98b4711 100644
--- a/res/drawable-xhdpi/appwidget_settings_ind_mid_r_holo.9.png
+++ b/res/drawable-xhdpi/appwidget_settings_ind_mid_r_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/appwidget_settings_ind_off_c_holo.9.png b/res/drawable-xhdpi/appwidget_settings_ind_off_c_holo.9.png
index 590fac1..1c7021c 100644
--- a/res/drawable-xhdpi/appwidget_settings_ind_off_c_holo.9.png
+++ b/res/drawable-xhdpi/appwidget_settings_ind_off_c_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/appwidget_settings_ind_off_l_holo.9.png b/res/drawable-xhdpi/appwidget_settings_ind_off_l_holo.9.png
index b9e6721..1c96527 100644
--- a/res/drawable-xhdpi/appwidget_settings_ind_off_l_holo.9.png
+++ b/res/drawable-xhdpi/appwidget_settings_ind_off_l_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/appwidget_settings_ind_off_r_holo.9.png b/res/drawable-xhdpi/appwidget_settings_ind_off_r_holo.9.png
index 260a1fd..7e9000b 100644
--- a/res/drawable-xhdpi/appwidget_settings_ind_off_r_holo.9.png
+++ b/res/drawable-xhdpi/appwidget_settings_ind_off_r_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/appwidget_settings_ind_on_c_holo.9.png b/res/drawable-xhdpi/appwidget_settings_ind_on_c_holo.9.png
index acc10ec..dd6ebcf 100644
--- a/res/drawable-xhdpi/appwidget_settings_ind_on_c_holo.9.png
+++ b/res/drawable-xhdpi/appwidget_settings_ind_on_c_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/appwidget_settings_ind_on_l_holo.9.png b/res/drawable-xhdpi/appwidget_settings_ind_on_l_holo.9.png
index 897cda4..5ac5819 100644
--- a/res/drawable-xhdpi/appwidget_settings_ind_on_l_holo.9.png
+++ b/res/drawable-xhdpi/appwidget_settings_ind_on_l_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/appwidget_settings_ind_on_r_holo.9.png b/res/drawable-xhdpi/appwidget_settings_ind_on_r_holo.9.png
index 072338a..5b748c1 100644
--- a/res/drawable-xhdpi/appwidget_settings_ind_on_r_holo.9.png
+++ b/res/drawable-xhdpi/appwidget_settings_ind_on_r_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_appwidget_settings_bluetooth_off_holo.png b/res/drawable-xhdpi/ic_appwidget_settings_bluetooth_off_holo.png
index 9ef00a8..9b75bb1 100644
--- a/res/drawable-xhdpi/ic_appwidget_settings_bluetooth_off_holo.png
+++ b/res/drawable-xhdpi/ic_appwidget_settings_bluetooth_off_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_appwidget_settings_bluetooth_on_holo.png b/res/drawable-xhdpi/ic_appwidget_settings_bluetooth_on_holo.png
index de68344..c830b60 100644
--- a/res/drawable-xhdpi/ic_appwidget_settings_bluetooth_on_holo.png
+++ b/res/drawable-xhdpi/ic_appwidget_settings_bluetooth_on_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_appwidget_settings_brightness_auto_holo.png b/res/drawable-xhdpi/ic_appwidget_settings_brightness_auto_holo.png
index 5059b0e..b76f1c3 100644
--- a/res/drawable-xhdpi/ic_appwidget_settings_brightness_auto_holo.png
+++ b/res/drawable-xhdpi/ic_appwidget_settings_brightness_auto_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_appwidget_settings_brightness_full_holo.png b/res/drawable-xhdpi/ic_appwidget_settings_brightness_full_holo.png
index 525456a..5bd888b 100644
--- a/res/drawable-xhdpi/ic_appwidget_settings_brightness_full_holo.png
+++ b/res/drawable-xhdpi/ic_appwidget_settings_brightness_full_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_appwidget_settings_gps_on_holo.png b/res/drawable-xhdpi/ic_appwidget_settings_gps_on_holo.png
index bdb71f2..2a9a290 100644
--- a/res/drawable-xhdpi/ic_appwidget_settings_gps_on_holo.png
+++ b/res/drawable-xhdpi/ic_appwidget_settings_gps_on_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_appwidget_settings_sync_on_holo.png b/res/drawable-xhdpi/ic_appwidget_settings_sync_on_holo.png
index 53fa2b4..55d4de8 100644
--- a/res/drawable-xhdpi/ic_appwidget_settings_sync_on_holo.png
+++ b/res/drawable-xhdpi/ic_appwidget_settings_sync_on_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_appwidget_settings_wifi_off_holo.png b/res/drawable-xhdpi/ic_appwidget_settings_wifi_off_holo.png
index 66eace2..53b4566 100644
--- a/res/drawable-xhdpi/ic_appwidget_settings_wifi_off_holo.png
+++ b/res/drawable-xhdpi/ic_appwidget_settings_wifi_off_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_appwidget_settings_wifi_on_holo.png b/res/drawable-xhdpi/ic_appwidget_settings_wifi_on_holo.png
index 82d6c37..1dcbef5 100644
--- a/res/drawable-xhdpi/ic_appwidget_settings_wifi_on_holo.png
+++ b/res/drawable-xhdpi/ic_appwidget_settings_wifi_on_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/preview.png b/res/drawable-xhdpi/preview.png
deleted file mode 100644
index 8dfe17f..0000000
--- a/res/drawable-xhdpi/preview.png
+++ /dev/null
Binary files differ
diff --git a/res/values/strings.xml b/res/values/strings.xml
index f8d0e9a..3b70830 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -733,16 +733,21 @@
 
     <!-- Informational text when encryption fails -->
     <string name="crypt_keeper_failed_summary" product="tablet">
-    Encryption was interrupted and can\'t complete. You must perform a factory data reset (erasing
-    all your data) before you can resume using your tablet. You can try encrypting your tablet
-    again after the reset is complete.
+      Encryption was interrupted and can\'t complete. As a result, the data on
+      your tablet is no longer accessible.
+      \n\n
+      To resume using your tablet, you must perform a factory reset.
+      When you set up your tablet after the reset, you\'ll have an opportunity
+      to restore any data that was backed up to your Google Account.
     </string>
 
     <!-- Informational text when encryption fails -->
     <string name="crypt_keeper_failed_summary" product="default">
-    Encryption was interrupted and can\'t complete. You must perform a factory data reset (erasing
-    all your data) before you can resume using your phone. You can try encrypting your phone
-    again after the reset is complete.
+      Encryption was interrupted and can\'t complete. As a result, the data on
+      your phone is no longer accessible.
+      \n\nTo resume using your phone, you must perform a factory reset.
+      When you set up your phone after the reset, you\'ll have an opportunity
+      to restore any data that was backed up to your Google Account.
     </string>
 
     <!-- Unlock Picker Settings --><skip />
diff --git a/src/com/android/settings/CryptKeeper.java b/src/com/android/settings/CryptKeeper.java
index 0c8ce28..b1de932e7 100644
--- a/src/com/android/settings/CryptKeeper.java
+++ b/src/com/android/settings/CryptKeeper.java
@@ -86,6 +86,11 @@
     private static final String FORCE_VIEW_ENTRY = "entry";
     private static final String FORCE_VIEW_ERROR = "error";
 
+    /** When encryption is detected, this flag indivates whether or not we've checked for erros. */
+    private boolean mValidationComplete;
+    /** A flag to indicate that the volume is in a bad state (e.g. partially encrypted). */
+    private boolean mEncryptionGoneBad;
+
     private int mCooldown;
     PowerManager.WakeLock mWakeLock;
     private EditText mPasswordEntry;
@@ -149,6 +154,34 @@
         }
     }
 
+    private class ValidationTask extends AsyncTask<Void, Void, Boolean> {
+        @Override
+        protected Boolean doInBackground(Void... params) {
+            IMountService service = getMountService();
+            try {
+                int state = service.getEncryptionState();
+                if (state == IMountService.ENCRYPTION_STATE_NONE) {
+                    Log.w(TAG, "Unexpectedly in CryptKeeper even though there is no encryption.");
+                    return true; // Unexpected, but fine, I guess...
+                }
+                return state == IMountService.ENCRYPTION_STATE_OK;
+            } catch (RemoteException e) {
+                Log.w(TAG, "Unable to get encryption state properly");
+                return true;
+            }
+        }
+
+        @Override
+        protected void onPostExecute(Boolean result) {
+            mValidationComplete = true;
+            if (Boolean.FALSE.equals(result)) {
+                Log.w(TAG, "Incomplete, or corrupted encryption detected. Prompting user to wipe.");
+                mEncryptionGoneBad = true;
+            }
+            setupUi();
+        }
+    }
+
     private final Handler mHandler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
@@ -204,6 +237,9 @@
             mWakeLock = retained.wakelock;
             Log.d(TAG, "Restoring wakelock from NonConfigurationInstanceState");
         }
+
+        // Check the encryption status to ensure something hasn't gone bad.
+        new ValidationTask().execute((Void[]) null);
     }
 
     /**
@@ -216,10 +252,24 @@
         super.onStart();
 
         // Check to see why we were started.
+        if (mValidationComplete) {
+            setupUi();
+        }
+    }
+
+    /**
+     * Initializes the UI based on the current state of encryption.
+     * This is idempotent - calling repeatedly will simply re-initialize the UI.
+     */
+    private void setupUi() {
+        if (mEncryptionGoneBad || isDebugView(FORCE_VIEW_ERROR)) {
+            setContentView(R.layout.crypt_keeper_progress);
+            showFactoryReset();
+            return;
+        }
+
         String progress = SystemProperties.get("vold.encrypt_progress");
-        if (!"".equals(progress)
-                || isDebugView(FORCE_VIEW_PROGRESS)
-                || isDebugView(FORCE_VIEW_ERROR)) {
+        if (!"".equals(progress) || isDebugView(FORCE_VIEW_PROGRESS)) {
             setContentView(R.layout.crypt_keeper_progress);
             encryptionProgressInit();
         } else {
@@ -308,7 +358,7 @@
     private void updateProgress() {
         String state = SystemProperties.get("vold.encrypt_progress");
 
-        if ("error_partially_encrypted".equals(state) || isDebugView(FORCE_VIEW_ERROR)) {
+        if ("error_partially_encrypted".equals(state)) {
             showFactoryReset();
             return;
         }
diff --git a/src/com/android/settings/ProgressCategory.java b/src/com/android/settings/ProgressCategory.java
index 6c74846..e854a00 100644
--- a/src/com/android/settings/ProgressCategory.java
+++ b/src/com/android/settings/ProgressCategory.java
@@ -45,13 +45,13 @@
         textView.setVisibility(noDeviceFound ? View.INVISIBLE : View.VISIBLE);
         progressBar.setVisibility(mProgress ? View.VISIBLE : View.INVISIBLE);
 
-        if (mProgress) {
+        if (mProgress || !noDeviceFound) {
             if (mNoDeviceFoundAdded) {
                 removePreference(mNoDeviceFoundPreference);
                 mNoDeviceFoundAdded = false;
             }
         } else {
-            if (noDeviceFound && !mNoDeviceFoundAdded) {
+            if (!mNoDeviceFoundAdded) {
                 if (mNoDeviceFoundPreference == null) {
                     mNoDeviceFoundPreference = new Preference(getContext());
                     mNoDeviceFoundPreference.setLayoutResource(R.layout.preference_empty_list);
@@ -70,4 +70,3 @@
         notifyChanged();
     }
 }
-
diff --git a/src/com/android/settings/WirelessSettings.java b/src/com/android/settings/WirelessSettings.java
index 916b5c8..0f5a491 100644
--- a/src/com/android/settings/WirelessSettings.java
+++ b/src/com/android/settings/WirelessSettings.java
@@ -20,6 +20,7 @@
 import android.app.admin.DevicePolicyManager;
 import android.content.Context;
 import android.content.Intent;
+import android.content.pm.PackageManager;
 import android.net.ConnectivityManager;
 import android.net.wifi.p2p.WifiP2pManager;
 import android.nfc.NfcAdapter;
@@ -141,7 +142,7 @@
 
         WifiP2pManager p2p = (WifiP2pManager) activity.getSystemService(Context.WIFI_P2P_SERVICE);
 
-        if (!p2p.isP2pSupported()) {
+        if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_WIFI_DIRECT)) {
             getPreferenceScreen().removePreference(wifiP2p);
             getPreferenceScreen().removePreference(findPreference(KEY_WIFI_P2P_SETTINGS));
         } else {
diff --git a/src/com/android/settings/applications/RunningState.java b/src/com/android/settings/applications/RunningState.java
index 552aa56..beb9605 100644
--- a/src/com/android/settings/applications/RunningState.java
+++ b/src/com/android/settings/applications/RunningState.java
@@ -99,7 +99,20 @@
     
     // All processes, used for retrieving memory information.
     final ArrayList<ProcessItem> mAllProcessItems = new ArrayList<ProcessItem>();
-    
+
+    static class AppProcessInfo {
+        final ActivityManager.RunningAppProcessInfo info;
+        boolean hasServices;
+        boolean hasForegroundServices;
+
+        AppProcessInfo(ActivityManager.RunningAppProcessInfo _info) {
+            info = _info;
+        }
+    }
+
+    // Temporary structure used when updating above information.
+    final SparseArray<AppProcessInfo> mTmpAppProcesses = new SparseArray<AppProcessInfo>();
+
     int mSequence = 0;
     
     // ----- following protected by mLock -----
@@ -641,25 +654,97 @@
         mSequence++;
         
         boolean changed = false;
-        
+
+        // Retrieve list of services, filtering out anything that definitely
+        // won't be shown in the UI.
         List<ActivityManager.RunningServiceInfo> services 
                 = am.getRunningServices(MAX_SERVICES);
-        final int NS = services != null ? services.size() : 0;
+        int NS = services != null ? services.size() : 0;
         for (int i=0; i<NS; i++) {
             ActivityManager.RunningServiceInfo si = services.get(i);
             // We are not interested in services that have not been started
             // and don't have a known client, because
             // there is nothing the user can do about them.
             if (!si.started && si.clientLabel == 0) {
+                services.remove(i);
+                i--;
+                NS--;
                 continue;
             }
             // We likewise don't care about services running in a
             // persistent process like the system or phone.
             if ((si.flags&ActivityManager.RunningServiceInfo.FLAG_PERSISTENT_PROCESS)
                     != 0) {
+                services.remove(i);
+                i--;
+                NS--;
                 continue;
             }
-            
+        }
+
+        // Retrieve list of running processes, organizing them into a sparse
+        // array for easy retrieval.
+        List<ActivityManager.RunningAppProcessInfo> processes
+                = am.getRunningAppProcesses();
+        final int NP = processes != null ? processes.size() : 0;
+        mTmpAppProcesses.clear();
+        for (int i=0; i<NP; i++) {
+            ActivityManager.RunningAppProcessInfo pi = processes.get(i);
+            mTmpAppProcesses.put(pi.pid, new AppProcessInfo(pi));
+        }
+
+        // Initial iteration through running services to collect per-process
+        // info about them.
+        for (int i=0; i<NS; i++) {
+            ActivityManager.RunningServiceInfo si = services.get(i);
+            if (si.restarting == 0 && si.pid > 0) {
+                AppProcessInfo ainfo = mTmpAppProcesses.get(si.pid);
+                if (ainfo != null) {
+                    ainfo.hasServices = true;
+                    if (si.foreground) {
+                        ainfo.hasForegroundServices = true;
+                    }
+                }
+            }
+        }
+
+        // Update state we are maintaining about process that are running services.
+        for (int i=0; i<NS; i++) {
+            ActivityManager.RunningServiceInfo si = services.get(i);
+
+            // If this service's process is in use at a higher importance
+            // due to another process bound to one of its services, then we
+            // won't put it in the top-level list of services.  Instead we
+            // want it to be included in the set of processes that the other
+            // process needs.
+            if (si.restarting == 0 && si.pid > 0) {
+                AppProcessInfo ainfo = mTmpAppProcesses.get(si.pid);
+                if (ainfo != null && !ainfo.hasForegroundServices) {
+                    // This process does not have any foreground services.
+                    // If its importance is greater than the service importance
+                    // then there is something else more significant that is
+                    // keeping it around that it should possibly be included as
+                    // a part of instead of being shown by itself.
+                    if (ainfo.info.importance
+                            < ActivityManager.RunningAppProcessInfo.IMPORTANCE_SERVICE) {
+                        // Follow process chain to see if there is something
+                        // else that could be shown
+                        boolean skip = false;
+                        ainfo = mTmpAppProcesses.get(ainfo.info.importanceReasonPid);
+                        while (ainfo != null) {
+                            if (ainfo.hasServices || isInterestingProcess(ainfo.info)) {
+                                skip = true;
+                                break;
+                            }
+                            ainfo = mTmpAppProcesses.get(ainfo.info.importanceReasonPid);
+                        }
+                        if (skip) {
+                            continue;
+                        }
+                    }
+                }
+            }
+
             HashMap<String, ProcessItem> procs = mServiceProcessesByName.get(si.uid);
             if (procs == null) {
                 procs = new HashMap<String, ProcessItem>();
@@ -694,9 +779,6 @@
         
         // Now update the map of other processes that are running (but
         // don't have services actively running inside them).
-        List<ActivityManager.RunningAppProcessInfo> processes
-                = am.getRunningAppProcesses();
-        final int NP = processes != null ? processes.size() : 0;
         for (int i=0; i<NP; i++) {
             ActivityManager.RunningAppProcessInfo pi = processes.get(i);
             ProcessItem proc = mServiceProcessesByPid.get(pi.pid);
diff --git a/src/com/android/settings/bluetooth/DevicePickerFragment.java b/src/com/android/settings/bluetooth/DevicePickerFragment.java
index 8b32941..87d31e7 100644
--- a/src/com/android/settings/bluetooth/DevicePickerFragment.java
+++ b/src/com/android/settings/bluetooth/DevicePickerFragment.java
@@ -33,6 +33,7 @@
     private boolean mNeedAuth;
     private String mLaunchPackage;
     private String mLaunchClass;
+    private boolean mStartScanOnResume;
 
     @Override
     void addPreferencesForActivity() {
@@ -50,13 +51,17 @@
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         getActivity().setTitle(getString(R.string.device_picker));
+        mStartScanOnResume = (savedInstanceState == null);  // don't start scan after rotation
     }
 
     @Override
     public void onResume() {
         super.onResume();
         addCachedDevices();
-        mLocalAdapter.startScanning(true);
+        if (mStartScanOnResume) {
+            mLocalAdapter.startScanning(true);
+            mStartScanOnResume = false;
+        }
     }
 
     @Override
diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java
index 8d4e77b..0ecb8a9 100644
--- a/src/com/android/settings/wifi/WifiConfigController.java
+++ b/src/com/android/settings/wifi/WifiConfigController.java
@@ -33,8 +33,8 @@
 import android.net.wifi.WifiConfiguration.ProxySettings;
 import android.net.wifi.WifiConfiguration.Status;
 import android.net.wifi.WifiInfo;
-import android.net.wifi.WpsConfiguration;
-import android.net.wifi.WpsConfiguration.Setup;
+import android.net.wifi.Wps;
+import android.net.wifi.Wps.Setup;
 import android.security.Credentials;
 import android.security.KeyStore;
 import android.text.Editable;
@@ -484,8 +484,8 @@
         return MANUAL;
     }
 
-    WpsConfiguration getWpsConfig() {
-        WpsConfiguration config = new WpsConfiguration();
+    Wps getWpsConfig() {
+        Wps config = new Wps();
         switch (mNetworkSetupSpinner.getSelectedItemPosition()) {
             case WPS_PBC:
                 config.setup = Setup.PBC;
diff --git a/src/com/android/settings/wifi/p2p/WifiP2pDialog.java b/src/com/android/settings/wifi/p2p/WifiP2pDialog.java
index c345538..8c06168 100644
--- a/src/com/android/settings/wifi/p2p/WifiP2pDialog.java
+++ b/src/com/android/settings/wifi/p2p/WifiP2pDialog.java
@@ -19,8 +19,8 @@
 import android.app.AlertDialog;
 import android.content.Context;
 import android.content.DialogInterface;
-import android.net.wifi.WpsConfiguration;
-import android.net.wifi.WpsConfiguration.Setup;
+import android.net.wifi.Wps;
+import android.net.wifi.Wps.Setup;
 import android.net.wifi.p2p.WifiP2pConfig;
 import android.net.wifi.p2p.WifiP2pDevice;
 import android.os.Bundle;
@@ -64,21 +64,21 @@
     public WifiP2pConfig getConfig() {
         WifiP2pConfig config = new WifiP2pConfig();
         config.deviceAddress = mDeviceAddress.getText().toString();
-        config.wpsConfig = new WpsConfiguration();
+        config.wps = new Wps();
         switch (mWpsSetupIndex) {
             case WPS_PBC:
-                config.wpsConfig.setup = Setup.PBC;
+                config.wps.setup = Setup.PBC;
                 break;
             case WPS_KEYPAD:
-                config.wpsConfig.setup = Setup.KEYPAD;
-                config.wpsConfig.pin = ((TextView) mView.findViewById(R.id.wps_pin)).
+                config.wps.setup = Setup.KEYPAD;
+                config.wps.pin = ((TextView) mView.findViewById(R.id.wps_pin)).
                         getText().toString();
                 break;
             case WPS_DISPLAY:
-                config.wpsConfig.setup = Setup.DISPLAY;
+                config.wps.setup = Setup.DISPLAY;
                 break;
             default:
-                config.wpsConfig.setup = Setup.PBC;
+                config.wps.setup = Setup.PBC;
                 break;
         }
         return config;