Merge "Hide EAP SIM, AKA & AKA' choices in wifi Settings if device doesn't support." into mnc-dev
diff --git a/res/drawable-hdpi/bg_header_horizontal_tile.png b/res/drawable-hdpi/bg_header_horizontal_tile.png
new file mode 100644
index 0000000..4270099
--- /dev/null
+++ b/res/drawable-hdpi/bg_header_horizontal_tile.png
Binary files differ
diff --git a/res/drawable-hdpi/bg_internal_storage_header.png b/res/drawable-hdpi/bg_internal_storage_header.png
index ccb5951..1c297d9 100644
--- a/res/drawable-hdpi/bg_internal_storage_header.png
+++ b/res/drawable-hdpi/bg_internal_storage_header.png
Binary files differ
diff --git a/res/drawable-hdpi/bg_portable_storage_header.png b/res/drawable-hdpi/bg_portable_storage_header.png
index fa640f0..42fe2c1 100644
--- a/res/drawable-hdpi/bg_portable_storage_header.png
+++ b/res/drawable-hdpi/bg_portable_storage_header.png
Binary files differ
diff --git a/res/drawable-hdpi/bg_setup_header.png b/res/drawable-hdpi/bg_setup_header.png
new file mode 100644
index 0000000..0d30849
--- /dev/null
+++ b/res/drawable-hdpi/bg_setup_header.png
Binary files differ
diff --git a/res/drawable-hdpi/bg_tile.png b/res/drawable-hdpi/bg_tile.png
deleted file mode 100644
index 0680c57..0000000
--- a/res/drawable-hdpi/bg_tile.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/bg_tile_teal.png b/res/drawable-hdpi/bg_tile_teal.png
new file mode 100644
index 0000000..26538ec
--- /dev/null
+++ b/res/drawable-hdpi/bg_tile_teal.png
Binary files differ
diff --git a/res/drawable-mdpi/bg_header_horizontal_tile.png b/res/drawable-mdpi/bg_header_horizontal_tile.png
new file mode 100644
index 0000000..be8512d
--- /dev/null
+++ b/res/drawable-mdpi/bg_header_horizontal_tile.png
Binary files differ
diff --git a/res/drawable-mdpi/bg_internal_storage_header.png b/res/drawable-mdpi/bg_internal_storage_header.png
index a4f263d..d93c6a2 100644
--- a/res/drawable-mdpi/bg_internal_storage_header.png
+++ b/res/drawable-mdpi/bg_internal_storage_header.png
Binary files differ
diff --git a/res/drawable-mdpi/bg_portable_storage_header.png b/res/drawable-mdpi/bg_portable_storage_header.png
index 9b21825..a39df23 100644
--- a/res/drawable-mdpi/bg_portable_storage_header.png
+++ b/res/drawable-mdpi/bg_portable_storage_header.png
Binary files differ
diff --git a/res/drawable-mdpi/bg_setup_header.png b/res/drawable-mdpi/bg_setup_header.png
new file mode 100644
index 0000000..f07d3fa
--- /dev/null
+++ b/res/drawable-mdpi/bg_setup_header.png
Binary files differ
diff --git a/res/drawable-mdpi/bg_tile.png b/res/drawable-mdpi/bg_tile.png
deleted file mode 100644
index bd361f0..0000000
--- a/res/drawable-mdpi/bg_tile.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/bg_tile_teal.png b/res/drawable-mdpi/bg_tile_teal.png
new file mode 100644
index 0000000..01abedb
--- /dev/null
+++ b/res/drawable-mdpi/bg_tile_teal.png
Binary files differ
diff --git a/res/drawable-sw600dp-hdpi/bg_internal_storage_header.png b/res/drawable-sw600dp-hdpi/bg_internal_storage_header.png
new file mode 100644
index 0000000..5102e54
--- /dev/null
+++ b/res/drawable-sw600dp-hdpi/bg_internal_storage_header.png
Binary files differ
diff --git a/res/drawable-sw600dp-hdpi/bg_portable_storage_header.png b/res/drawable-sw600dp-hdpi/bg_portable_storage_header.png
new file mode 100644
index 0000000..26fd248
--- /dev/null
+++ b/res/drawable-sw600dp-hdpi/bg_portable_storage_header.png
Binary files differ
diff --git a/res/drawable-sw600dp-hdpi/bg_setup_header.png b/res/drawable-sw600dp-hdpi/bg_setup_header.png
new file mode 100644
index 0000000..2178602
--- /dev/null
+++ b/res/drawable-sw600dp-hdpi/bg_setup_header.png
Binary files differ
diff --git a/res/drawable-sw600dp-mdpi/bg_internal_storage_header.png b/res/drawable-sw600dp-mdpi/bg_internal_storage_header.png
new file mode 100644
index 0000000..b39c652
--- /dev/null
+++ b/res/drawable-sw600dp-mdpi/bg_internal_storage_header.png
Binary files differ
diff --git a/res/drawable-sw600dp-mdpi/bg_portable_storage_header.png b/res/drawable-sw600dp-mdpi/bg_portable_storage_header.png
new file mode 100644
index 0000000..1f5d10b
--- /dev/null
+++ b/res/drawable-sw600dp-mdpi/bg_portable_storage_header.png
Binary files differ
diff --git a/res/drawable-sw600dp-mdpi/bg_setup_header.png b/res/drawable-sw600dp-mdpi/bg_setup_header.png
new file mode 100644
index 0000000..157b8aa
--- /dev/null
+++ b/res/drawable-sw600dp-mdpi/bg_setup_header.png
Binary files differ
diff --git a/res/drawable-sw600dp-xhdpi/bg_internal_storage_header.png b/res/drawable-sw600dp-xhdpi/bg_internal_storage_header.png
new file mode 100644
index 0000000..38ea2a3
--- /dev/null
+++ b/res/drawable-sw600dp-xhdpi/bg_internal_storage_header.png
Binary files differ
diff --git a/res/drawable-sw600dp-xhdpi/bg_portable_storage_header.png b/res/drawable-sw600dp-xhdpi/bg_portable_storage_header.png
new file mode 100644
index 0000000..169ac25
--- /dev/null
+++ b/res/drawable-sw600dp-xhdpi/bg_portable_storage_header.png
Binary files differ
diff --git a/res/drawable-sw600dp-xhdpi/bg_setup_header.png b/res/drawable-sw600dp-xhdpi/bg_setup_header.png
new file mode 100644
index 0000000..a4e1eb3
--- /dev/null
+++ b/res/drawable-sw600dp-xhdpi/bg_setup_header.png
Binary files differ
diff --git a/res/drawable-sw600dp-xxhdpi/bg_internal_storage_header.png b/res/drawable-sw600dp-xxhdpi/bg_internal_storage_header.png
new file mode 100644
index 0000000..8920af3
--- /dev/null
+++ b/res/drawable-sw600dp-xxhdpi/bg_internal_storage_header.png
Binary files differ
diff --git a/res/drawable-sw600dp-xxhdpi/bg_portable_storage_header.png b/res/drawable-sw600dp-xxhdpi/bg_portable_storage_header.png
new file mode 100644
index 0000000..9190f38
--- /dev/null
+++ b/res/drawable-sw600dp-xxhdpi/bg_portable_storage_header.png
Binary files differ
diff --git a/res/drawable-sw600dp-xxhdpi/bg_setup_header.png b/res/drawable-sw600dp-xxhdpi/bg_setup_header.png
new file mode 100644
index 0000000..6fce3df
--- /dev/null
+++ b/res/drawable-sw600dp-xxhdpi/bg_setup_header.png
Binary files differ
diff --git a/res/drawable-sw600dp-xxxhdpi/bg_internal_storage_header.png b/res/drawable-sw600dp-xxxhdpi/bg_internal_storage_header.png
new file mode 100644
index 0000000..a99ed1c
--- /dev/null
+++ b/res/drawable-sw600dp-xxxhdpi/bg_internal_storage_header.png
Binary files differ
diff --git a/res/drawable-sw600dp-xxxhdpi/bg_portable_storage_header.png b/res/drawable-sw600dp-xxxhdpi/bg_portable_storage_header.png
new file mode 100644
index 0000000..d979bfb
--- /dev/null
+++ b/res/drawable-sw600dp-xxxhdpi/bg_portable_storage_header.png
Binary files differ
diff --git a/res/drawable-sw600dp-xxxhdpi/bg_setup_header.png b/res/drawable-sw600dp-xxxhdpi/bg_setup_header.png
new file mode 100644
index 0000000..7276b4e
--- /dev/null
+++ b/res/drawable-sw600dp-xxxhdpi/bg_setup_header.png
Binary files differ
diff --git a/res/drawable-xhdpi/bg_header_horizontal_tile.png b/res/drawable-xhdpi/bg_header_horizontal_tile.png
new file mode 100644
index 0000000..3b36902
--- /dev/null
+++ b/res/drawable-xhdpi/bg_header_horizontal_tile.png
Binary files differ
diff --git a/res/drawable-xhdpi/bg_internal_storage_header.png b/res/drawable-xhdpi/bg_internal_storage_header.png
index 289b31c..f8b64e0 100644
--- a/res/drawable-xhdpi/bg_internal_storage_header.png
+++ b/res/drawable-xhdpi/bg_internal_storage_header.png
Binary files differ
diff --git a/res/drawable-xhdpi/bg_portable_storage_header.png b/res/drawable-xhdpi/bg_portable_storage_header.png
index 76154ff..12c432d 100644
--- a/res/drawable-xhdpi/bg_portable_storage_header.png
+++ b/res/drawable-xhdpi/bg_portable_storage_header.png
Binary files differ
diff --git a/res/drawable-xhdpi/bg_setup_header.png b/res/drawable-xhdpi/bg_setup_header.png
new file mode 100644
index 0000000..d7c4401
--- /dev/null
+++ b/res/drawable-xhdpi/bg_setup_header.png
Binary files differ
diff --git a/res/drawable-xhdpi/bg_tile.png b/res/drawable-xhdpi/bg_tile.png
deleted file mode 100644
index dc5b24c..0000000
--- a/res/drawable-xhdpi/bg_tile.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/bg_tile_teal.png b/res/drawable-xhdpi/bg_tile_teal.png
new file mode 100644
index 0000000..e6f2f06
--- /dev/null
+++ b/res/drawable-xhdpi/bg_tile_teal.png
Binary files differ
diff --git a/res/drawable-xxhdpi/bg_header_horizontal_tile.png b/res/drawable-xxhdpi/bg_header_horizontal_tile.png
new file mode 100644
index 0000000..a879fe2
--- /dev/null
+++ b/res/drawable-xxhdpi/bg_header_horizontal_tile.png
Binary files differ
diff --git a/res/drawable-xxhdpi/bg_internal_storage_header.png b/res/drawable-xxhdpi/bg_internal_storage_header.png
index ed01721..01fe761 100644
--- a/res/drawable-xxhdpi/bg_internal_storage_header.png
+++ b/res/drawable-xxhdpi/bg_internal_storage_header.png
Binary files differ
diff --git a/res/drawable-xxhdpi/bg_portable_storage_header.png b/res/drawable-xxhdpi/bg_portable_storage_header.png
index df6b38e..4bacf7c 100644
--- a/res/drawable-xxhdpi/bg_portable_storage_header.png
+++ b/res/drawable-xxhdpi/bg_portable_storage_header.png
Binary files differ
diff --git a/res/drawable-xxhdpi/bg_setup_header.png b/res/drawable-xxhdpi/bg_setup_header.png
new file mode 100644
index 0000000..566cc5f
--- /dev/null
+++ b/res/drawable-xxhdpi/bg_setup_header.png
Binary files differ
diff --git a/res/drawable-xxhdpi/bg_tile.png b/res/drawable-xxhdpi/bg_tile.png
deleted file mode 100644
index bf28300..0000000
--- a/res/drawable-xxhdpi/bg_tile.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/bg_tile_teal.png b/res/drawable-xxhdpi/bg_tile_teal.png
new file mode 100644
index 0000000..29d268a
--- /dev/null
+++ b/res/drawable-xxhdpi/bg_tile_teal.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/bg_header_horizontal_tile.png b/res/drawable-xxxhdpi/bg_header_horizontal_tile.png
new file mode 100644
index 0000000..f19306a
--- /dev/null
+++ b/res/drawable-xxxhdpi/bg_header_horizontal_tile.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/bg_internal_storage_header.png b/res/drawable-xxxhdpi/bg_internal_storage_header.png
index 26cae96..eb9f268 100644
--- a/res/drawable-xxxhdpi/bg_internal_storage_header.png
+++ b/res/drawable-xxxhdpi/bg_internal_storage_header.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/bg_portable_storage_header.png b/res/drawable-xxxhdpi/bg_portable_storage_header.png
index 78003f8..311544a 100644
--- a/res/drawable-xxxhdpi/bg_portable_storage_header.png
+++ b/res/drawable-xxxhdpi/bg_portable_storage_header.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/bg_setup_header.png b/res/drawable-xxxhdpi/bg_setup_header.png
new file mode 100644
index 0000000..0df665e
--- /dev/null
+++ b/res/drawable-xxxhdpi/bg_setup_header.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/bg_tile.png b/res/drawable-xxxhdpi/bg_tile.png
deleted file mode 100644
index 7d22170..0000000
--- a/res/drawable-xxxhdpi/bg_tile.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxxhdpi/bg_tile_teal.png b/res/drawable-xxxhdpi/bg_tile_teal.png
new file mode 100644
index 0000000..3d1a97a
--- /dev/null
+++ b/res/drawable-xxxhdpi/bg_tile_teal.png
Binary files differ
diff --git a/res/layout/storage_wizard_generic.xml b/res/layout/storage_wizard_generic.xml
index 6b5890a..3050c67 100644
--- a/res/layout/storage_wizard_generic.xml
+++ b/res/layout/storage_wizard_generic.xml
@@ -20,7 +20,7 @@
     android:id="@+id/setup_wizard_layout"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    app:suwBackgroundTile="@drawable/bg_tile">
+    app:suwBackgroundTile="@drawable/bg_tile_teal">
 
     <LinearLayout
         style="@style/SuwContentFrame"
diff --git a/res/layout/storage_wizard_init.xml b/res/layout/storage_wizard_init.xml
index 6b69dd6..638bfe8 100644
--- a/res/layout/storage_wizard_init.xml
+++ b/res/layout/storage_wizard_init.xml
@@ -20,7 +20,7 @@
     android:id="@+id/setup_wizard_layout"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    app:suwBackgroundTile="@drawable/bg_tile">
+    app:suwBackgroundTile="@drawable/bg_tile_teal">
 
     <LinearLayout
         style="@style/SuwContentFrame"
diff --git a/res/layout/storage_wizard_migrate.xml b/res/layout/storage_wizard_migrate.xml
index d78f4f9..6d041fa 100644
--- a/res/layout/storage_wizard_migrate.xml
+++ b/res/layout/storage_wizard_migrate.xml
@@ -20,7 +20,7 @@
     android:id="@+id/setup_wizard_layout"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    app:suwBackgroundTile="@drawable/bg_tile">
+    app:suwBackgroundTile="@drawable/bg_tile_teal">
 
     <LinearLayout
         style="@style/SuwContentFrame"
diff --git a/res/layout/storage_wizard_progress.xml b/res/layout/storage_wizard_progress.xml
index 114635d..e3b37f8 100644
--- a/res/layout/storage_wizard_progress.xml
+++ b/res/layout/storage_wizard_progress.xml
@@ -20,7 +20,7 @@
     android:id="@+id/setup_wizard_layout"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    app:suwBackgroundTile="@drawable/bg_tile">
+    app:suwBackgroundTile="@drawable/bg_tile_teal">
 
     <LinearLayout
         style="@style/SuwContentFrame"
diff --git a/res/layout/storage_wizard_ready.xml b/res/layout/storage_wizard_ready.xml
index 83ad03c..d53038d 100644
--- a/res/layout/storage_wizard_ready.xml
+++ b/res/layout/storage_wizard_ready.xml
@@ -20,7 +20,7 @@
     android:id="@+id/setup_wizard_layout"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    app:suwBackgroundTile="@drawable/bg_tile">
+    app:suwBackgroundTile="@drawable/bg_tile_teal">
 
     <LinearLayout
         style="@style/SuwContentFrame"
diff --git a/res/values/styles.xml b/res/values/styles.xml
index ef1dbc8..0f820f0 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -97,6 +97,10 @@
         <item name="android:layout">@layout/preference_material_settings</item>
     </style>
 
+    <style name="SyncSwitchPreference" parent="Preference">
+        <item name="android:widgetLayout">@layout/preference_widget_sync_toggle</item>
+    </style>
+
     <style name="PreferenceHeaderPanelSinglePane">
         <item name="android:layout_marginStart">0dp</item>
         <item name="android:layout_marginEnd">0dp</item>
@@ -319,7 +323,7 @@
     </style>
 
     <style name="TextAppearance.FingerprintErrorText"
-        parent="android:TextAppearance.Material.Caption">
+        parent="android:TextAppearance.Material.Body1">
         <item name="android:textColor">@color/warning</item>
     </style>
 
@@ -330,7 +334,7 @@
     </style>
 
     <style name="TextAppearance.ConfirmDeviceCredentialsErrorText"
-        parent="android:TextAppearance.Material.Caption">
+        parent="android:TextAppearance.Material.Body1">
         <item name="android:textColor">@color/warning</item>
     </style>
 
diff --git a/res/xml/account_sync_settings.xml b/res/xml/account_sync_settings.xml
index 0ec46b7..ab274eb 100644
--- a/res/xml/account_sync_settings.xml
+++ b/res/xml/account_sync_settings.xml
@@ -16,4 +16,9 @@
 
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
 
+    <!-- Needed so PreferenceGroupAdapter allows SyncStateSwitchPreference to be
+         recycled. Removed in onResume -->
+    <com.android.settings.accounts.SyncStateSwitchPreference
+        android:key="dummy" />
+
 </PreferenceScreen>
diff --git a/src/com/android/settings/ChooseLockPattern.java b/src/com/android/settings/ChooseLockPattern.java
index 481cf0f..087a23e 100644
--- a/src/com/android/settings/ChooseLockPattern.java
+++ b/src/com/android/settings/ChooseLockPattern.java
@@ -580,6 +580,7 @@
             // the rest of the stuff varies enough that it is easier just to handle
             // on a case by case basis.
             mLockPatternView.setDisplayMode(DisplayMode.Correct);
+            boolean announceAlways = false;
 
             switch (mUiStage) {
                 case Introduction:
@@ -591,6 +592,7 @@
                 case ChoiceTooShort:
                     mLockPatternView.setDisplayMode(DisplayMode.Wrong);
                     postClearPatternRunnable();
+                    announceAlways = true;
                     break;
                 case FirstChoiceValid:
                     break;
@@ -600,6 +602,7 @@
                 case ConfirmWrong:
                     mLockPatternView.setDisplayMode(DisplayMode.Wrong);
                     postClearPatternRunnable();
+                    announceAlways = true;
                     break;
                 case ChoiceConfirmed:
                     break;
@@ -607,7 +610,7 @@
 
             // If the stage changed, announce the header for accessibility. This
             // is a no-op when accessibility is disabled.
-            if (previousStage != stage) {
+            if (previousStage != stage || announceAlways) {
                 mHeaderText.announceForAccessibility(mHeaderText.getText());
             }
         }
diff --git a/src/com/android/settings/accounts/AccountSyncSettings.java b/src/com/android/settings/accounts/AccountSyncSettings.java
index 2de8e4a..d1df82a 100644
--- a/src/com/android/settings/accounts/AccountSyncSettings.java
+++ b/src/com/android/settings/accounts/AccountSyncSettings.java
@@ -149,6 +149,8 @@
     @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
+        setPreferenceScreen(null);
+        addPreferencesFromResource(R.xml.account_sync_settings);
 
         setHasOptionsMenu(true);
     }
@@ -167,8 +169,6 @@
     }
 
     protected void initializeUi(final View rootView) {
-        addPreferencesFromResource(R.xml.account_sync_settings);
-
         mErrorInfoView = (TextView) rootView.findViewById(R.id.sync_settings_error_info);
         mErrorInfoView.setVisibility(View.GONE);
 
@@ -202,6 +202,7 @@
 
     @Override
     public void onResume() {
+        removePreference("dummy");
         mAuthenticatorHelper.listenToAccountUpdates();
         updateAuthDescriptions();
         onAccountsUpdate(UserHandle.getCallingUserHandle());
@@ -540,7 +541,6 @@
             mProviderIcon.setImageDrawable(getDrawableForType(mAccount.type));
             mProviderId.setText(getLabelForType(mAccount.type));
         }
-        addPreferencesFromResource(R.xml.account_sync_settings);
     }
 
     @Override
diff --git a/src/com/android/settings/accounts/SyncStateSwitchPreference.java b/src/com/android/settings/accounts/SyncStateSwitchPreference.java
index 4d63870..fd0c45c 100644
--- a/src/com/android/settings/accounts/SyncStateSwitchPreference.java
+++ b/src/com/android/settings/accounts/SyncStateSwitchPreference.java
@@ -23,6 +23,7 @@
 import android.util.AttributeSet;
 import android.util.Log;
 import android.view.View;
+import android.view.ViewGroup;
 import android.widget.TextView;
 
 import com.android.settings.R;
@@ -43,17 +44,15 @@
     private boolean mOneTimeSyncMode = false;
 
     public SyncStateSwitchPreference(Context context, AttributeSet attrs) {
-        super(context, attrs);
-        setWidgetLayoutResource(R.layout.preference_widget_sync_toggle);
+        super(context, attrs, 0, R.style.SyncSwitchPreference);
         mAccount = null;
         mAuthority = null;
     }
 
     public SyncStateSwitchPreference(Context context, Account account, String authority) {
-        super(context, null);
+        super(context, null, 0, R.style.SyncSwitchPreference);
         mAccount = account;
         mAuthority = authority;
-        setWidgetLayoutResource(R.layout.preference_widget_sync_toggle);
     }
 
     @Override
diff --git a/src/com/android/settings/bluetooth/BluetoothNameDialogFragment.java b/src/com/android/settings/bluetooth/BluetoothNameDialogFragment.java
index 250b326..293a53e 100644
--- a/src/com/android/settings/bluetooth/BluetoothNameDialogFragment.java
+++ b/src/com/android/settings/bluetooth/BluetoothNameDialogFragment.java
@@ -25,6 +25,7 @@
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.IntentFilter;
+import android.content.res.Configuration;
 import android.os.Bundle;
 import android.text.Editable;
 import android.text.InputFilter;
@@ -195,6 +196,13 @@
         }
     }
 
+    public void onConfigurationChanged(Configuration newConfig, CharSequence s) {
+        super.onConfigurationChanged(newConfig);
+        if (mOkButton != null) {
+            mOkButton.setEnabled(s.length() != 0 && !(s.toString().trim().isEmpty()));
+        }
+    }
+
     /* Not used */
     public void beforeTextChanged(CharSequence s, int start, int count, int after) {
     }
diff --git a/src/com/android/settings/deviceinfo/StorageWizardBase.java b/src/com/android/settings/deviceinfo/StorageWizardBase.java
index 1d91e6b..beb0f3d 100644
--- a/src/com/android/settings/deviceinfo/StorageWizardBase.java
+++ b/src/com/android/settings/deviceinfo/StorageWizardBase.java
@@ -167,10 +167,10 @@
     protected void setIllustrationInternal(boolean internal) {
         if (internal) {
             getSetupWizardLayout().setIllustration(R.drawable.bg_internal_storage_header,
-                    android.R.color.transparent);
+                    R.drawable.bg_header_horizontal_tile);
         } else {
             getSetupWizardLayout().setIllustration(R.drawable.bg_portable_storage_header,
-                    android.R.color.transparent);
+                    R.drawable.bg_header_horizontal_tile);
         }
     }
 
diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java b/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java
index fa65afe..6a47dc4 100644
--- a/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java
+++ b/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java
@@ -23,8 +23,6 @@
 import android.os.Bundle;
 import android.os.CancellationSignal;
 import android.os.Handler;
-import android.os.PowerManager;
-import android.os.SystemClock;
 
 import com.android.settings.ChooseLockSettingsHelper;
 
@@ -36,7 +34,6 @@
     private int mEnrollmentSteps = -1;
     private int mEnrollmentRemaining = 0;
     private Listener mListener;
-    private PowerManager mPowerManager;
     private boolean mEnrolling;
     private CancellationSignal mEnrollmentCancel;
     private Handler mHandler = new Handler();
@@ -52,7 +49,6 @@
     @Override
     public void onAttach(Activity activity) {
         super.onAttach(activity);
-        mPowerManager = activity.getSystemService(PowerManager.class);
         mToken = activity.getIntent().getByteArrayExtra(
                 ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN);
     }
@@ -120,11 +116,6 @@
             if (mListener != null) {
                 mListener.onEnrollmentProgressChange(mEnrollmentSteps, remaining);
             }
-
-            // Treat fingerprint like a touch event
-            mPowerManager.userActivity(SystemClock.uptimeMillis(),
-                    PowerManager.USER_ACTIVITY_EVENT_OTHER,
-                    PowerManager.USER_ACTIVITY_FLAG_NO_CHANGE_LIGHTS);
         }
 
         @Override
diff --git a/src/com/android/settings/fuelgauge/PowerUsageDetail.java b/src/com/android/settings/fuelgauge/PowerUsageDetail.java
index 4bc5982..90781a0 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageDetail.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageDetail.java
@@ -129,6 +129,7 @@
                     R.string.usage_type_video,
                     R.string.usage_type_camera,
                     R.string.usage_type_flashlight,
+                    R.string.usage_type_computed_power,
                 };
                 values = new double[] {
                     entry.sipper.cpuTimeMs,
@@ -145,6 +146,7 @@
                     0,
                     entry.sipper.cameraTimeMs,
                     entry.sipper.flashlightTimeMs,
+                    entry.sipper.totalPowerMah,
                 };
 
                 if (entry.sipper.drainType == BatterySipper.DrainType.APP) {
@@ -172,11 +174,13 @@
                     R.string.usage_type_on_time,
                     R.string.usage_type_no_coverage,
                     R.string.usage_type_radio_active,
+                    R.string.usage_type_computed_power,
                 };
                 values = new double[] {
                     entry.sipper.usageTimeMs,
                     entry.sipper.noCoveragePercent,
-                    entry.sipper.mobileActive
+                    entry.sipper.mobileActive,
+                    entry.sipper.totalPowerMah,
                 };
             }
             break;
@@ -191,9 +195,10 @@
                     R.string.usage_type_data_send,
                     R.string.usage_type_data_wifi_recv,
                     R.string.usage_type_data_wifi_send,
+                    R.string.usage_type_computed_power,
                 };
                 values = new double[] {
-                    entry.sipper.usageTimeMs,
+                    entry.sipper.wifiRunningTimeMs,
                     entry.sipper.cpuTimeMs,
                     entry.sipper.cpuFgTimeMs,
                     entry.sipper.wakeLockTimeMs,
@@ -201,6 +206,7 @@
                     entry.sipper.mobileTxPackets,
                     entry.sipper.wifiRxPackets,
                     entry.sipper.wifiTxPackets,
+                    entry.sipper.totalPowerMah,
                 };
             } break;
             case BLUETOOTH:
@@ -214,6 +220,7 @@
                     R.string.usage_type_data_send,
                     R.string.usage_type_data_wifi_recv,
                     R.string.usage_type_data_wifi_send,
+                    R.string.usage_type_computed_power,
                 };
                 values = new double[] {
                     entry.sipper.usageTimeMs,
@@ -224,6 +231,7 @@
                     entry.sipper.mobileTxPackets,
                     entry.sipper.wifiRxPackets,
                     entry.sipper.wifiTxPackets,
+                    entry.sipper.totalPowerMah,
                 };
             } break;
             case UNACCOUNTED:
@@ -255,10 +263,12 @@
             default:
             {
                 types = new int[] {
-                    R.string.usage_type_on_time
+                    R.string.usage_type_on_time,
+                    R.string.usage_type_computed_power,
                 };
                 values = new double[] {
-                    entry.sipper.usageTimeMs
+                    entry.sipper.usageTimeMs,
+                    entry.sipper.totalPowerMah,
                 };
             }
         }
diff --git a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
index 93ece66..e8ef5ef 100644
--- a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
+++ b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
@@ -254,8 +254,9 @@
         if (spellChecker != null) {
             final TextServicesManager tsm = (TextServicesManager) getSystemService(
                     Context.TEXT_SERVICES_MANAGER_SERVICE);
-            if (tsm.isSpellCheckerEnabled()) {
-                final SpellCheckerInfo sci = tsm.getCurrentSpellChecker();
+            final SpellCheckerInfo sci = tsm.getCurrentSpellChecker();
+            spellChecker.setEnabled(sci != null);
+            if (tsm.isSpellCheckerEnabled() && sci != null) {
                 spellChecker.setSummary(sci.loadLabel(getPackageManager()));
             } else {
                 spellChecker.setSummary(R.string.switch_off_text);
diff --git a/src/com/android/settings/vpn2/VpnSettings.java b/src/com/android/settings/vpn2/VpnSettings.java
index a17781c..4192d2e 100644
--- a/src/com/android/settings/vpn2/VpnSettings.java
+++ b/src/com/android/settings/vpn2/VpnSettings.java
@@ -106,10 +106,10 @@
         super.onCreate(savedState);
 
         mUserManager = (UserManager) getSystemService(Context.USER_SERVICE);
-        if (mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_VPN)
-                || UserHandle.myUserId() != UserHandle.USER_OWNER) {
+        if (mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_VPN)) {
             mUnavailable = true;
             setPreferenceScreen(new PreferenceScreen(getActivity(), null));
+            setHasOptionsMenu(false);
             return;
         }
 
@@ -161,6 +161,7 @@
         super.onResume();
 
         if (mUnavailable) {
+            // Show a message to explain that VPN settings have been disabled
             TextView emptyView = (TextView) getView().findViewById(android.R.id.empty);
             getListView().setEmptyView(emptyView);
             if (emptyView != null) {
@@ -187,6 +188,11 @@
 
     @Override
     public void onPause() {
+        if (mUnavailable) {
+            super.onPause();
+            return;
+        }
+
         // Stop monitoring
         mConnectivityManager.unregisterNetworkCallback(mNetworkCallback);
 
diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java
index 3ca9084..2777185 100644
--- a/src/com/android/settings/wifi/WifiConfigController.java
+++ b/src/com/android/settings/wifi/WifiConfigController.java
@@ -255,14 +255,14 @@
                     mConfigUi.setSubmitButton(res.getString(R.string.wifi_connect));
                 } else {
                     if (state != null) {
+                        boolean isEphemeral = mAccessPoint.isEphemeral();
                         WifiConfiguration config = mAccessPoint.getConfig();
-                        boolean isEphimeral = mAccessPoint.isSaved() == false;
                         String providerFriendlyName = null;
                         if (config != null && config.isPasspoint()) {
                             providerFriendlyName = config.providerFriendlyName;
                         }
                         String summary = AccessPoint.getSummary(
-                                mConfigUi.getContext(), state, isEphimeral, providerFriendlyName);
+                                mConfigUi.getContext(), state, isEphemeral, providerFriendlyName);
                         addRow(group, R.string.wifi_status, summary);
                     }