Merge "Update sorting for rule types and instances."
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index acdc3ca..9ad93db 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -672,7 +672,6 @@
                   android:excludeFromRecents="true">
             <intent-filter android:priority="1">
                 <action android:name="com.android.settings.USER_DICTIONARY_INSERT" />
-                <action android:name="com.android.settings.USER_DICTIONARY_EDIT" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
             <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
@@ -1737,27 +1736,6 @@
         <activity android:name=".AppPicker" android:label="@string/select_application"
                 android:theme="@android:style/Theme.Material.Light.Dialog" />
 
-        <activity android:name="Settings$UsbSettingsActivity"
-                android:label="@string/storage_title_usb"
-                android:taskAffinity="com.android.settings"
-                android:parentActivityName="Settings$StorageSettingsActivity">
-            <intent-filter android:priority="1">
-                <action android:name="android.settings.STORAGE_USB_SETTINGS" />
-                <action android:name="com.android.settings.STORAGE_USB_SETTINGS" />
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
-            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
-                android:value="com.android.settings.deviceinfo.UsbSettings" />
-            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
-                android:resource="@id/storage_settings" />
-            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
-                android:value="true" />
-        </activity>
-
         <!-- Keep compatibility with old shortcuts. -->
         <activity-alias android:name="UsbSettings"
                   android:exported="true"
diff --git a/res/layout/setup_choose_lock_generic.xml b/res/layout/setup_preference.xml
similarity index 81%
rename from res/layout/setup_choose_lock_generic.xml
rename to res/layout/setup_preference.xml
index 325844b..135c5a0 100644
--- a/res/layout/setup_choose_lock_generic.xml
+++ b/res/layout/setup_preference.xml
@@ -15,12 +15,11 @@
     limitations under the License.
 -->
 
-<com.android.setupwizardlib.SetupWizardListLayout
+<com.android.setupwizardlib.SetupWizardLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:settings="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
+    android:layout="@layout/suw_no_scroll_template"
     settings:suwBackgroundTile="@drawable/setup_illustration_tile"
-    settings:suwHeaderText="@string/setup_lock_settings_picker_title"
-    settings:suwIllustrationHorizontalTile="@drawable/setup_illustration_horizontal_tile"
-    settings:suwIllustrationImage="@drawable/setup_illustration_lock_screen" />
+    settings:suwIllustrationHorizontalTile="@drawable/setup_illustration_horizontal_tile" />
diff --git a/res/values/themes.xml b/res/values/themes.xml
index 858c946..0a265de 100644
--- a/res/values/themes.xml
+++ b/res/values/themes.xml
@@ -29,13 +29,12 @@
     <style name="SetupWizardDisableAppStartingTheme">
         <!-- Theme to disable the app starting window. The actual theme of the activity needs to
              be then set in code via setTheme or onApplyThemeResource. -->
-        <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
+        <item name="preferenceTheme">@style/PreferenceThemeOverlay.SetupWizard</item>
         <item name="android:windowBackground">@null</item>
     </style>
 
     <style name="SetupWizardTheme" parent="SuwThemeMaterial">
         <!-- For all Alert Dialogs -->
-        <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
         <item name="android:alertDialogTheme">@style/ThemeOverlay.AlertDialog</item>
         <item name="android:listPreferredItemPaddingEnd">@dimen/suw_layout_margin_sides</item>
         <item name="android:listPreferredItemPaddingStart">@dimen/suw_layout_margin_sides</item>
@@ -52,6 +51,7 @@
         <item name="wifi_signal_color">@color/setup_wizard_wifi_color_dark</item>
         <item name="wifi_signal">@drawable/wifi_signal</item>
         <item name="preferenceBackgroundColor">?android:attr/colorBackground</item>
+        <item name="preferenceTheme">@style/PreferenceThemeOverlay.SetupWizard</item>
 
         <!-- LockPatternView colors -->
         <item name="@*android:regularColor">@color/setup_lock_pattern_view_regular_color_dark</item>
@@ -61,7 +61,6 @@
 
     <style name="SetupWizardTheme.Light" parent="SuwThemeMaterial.Light">
         <!-- For all Alert Dialogs -->
-        <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
         <item name="android:alertDialogTheme">@style/ThemeOverlay.AlertDialog</item>
         <item name="android:listPreferredItemPaddingEnd">@dimen/suw_layout_margin_sides</item>
         <item name="android:listPreferredItemPaddingStart">@dimen/suw_layout_margin_sides</item>
@@ -78,6 +77,7 @@
         <item name="wifi_signal_color">@color/setup_wizard_wifi_color_light</item>
         <item name="wifi_signal">@drawable/wifi_signal</item>
         <item name="preferenceBackgroundColor">?android:attr/colorBackground</item>
+        <item name="preferenceTheme">@style/PreferenceThemeOverlay.SetupWizard</item>
 
         <!-- LockPatternView colors -->
         <item name="@*android:regularColor">@color/setup_lock_pattern_view_regular_color_light</item>
@@ -85,6 +85,14 @@
         <item name="@*android:errorColor">@color/setup_lock_pattern_view_error_color_light</item>
     </style>
 
+    <style name="PreferenceThemeOverlay.SetupWizard" parent="PreferenceThemeOverlay.v14.Material">
+        <item name="preferenceFragmentStyle">@style/SetupWizardPreferenceFragmentStyle</item>
+    </style>
+
+    <style name="SetupWizardPreferenceFragmentStyle" parent="PreferenceFragment.Material">
+        <item name="android:layout">@layout/setup_preference</item>
+    </style>
+
     <!-- Theme with no local references, used by AccountPreferenceBase where we have to inflate
          layouts against a remote context using our local theme colors. Due to the implementation
          details of Theme, we can't reference any local resources and MUST instead use the values
diff --git a/src/com/android/settings/SetupChooseLockGeneric.java b/src/com/android/settings/SetupChooseLockGeneric.java
index a1dd91e..206c15e 100644
--- a/src/com/android/settings/SetupChooseLockGeneric.java
+++ b/src/com/android/settings/SetupChooseLockGeneric.java
@@ -24,12 +24,10 @@
 import android.os.Bundle;
 import android.os.UserHandle;
 import android.support.v14.preference.PreferenceFragment;
-import android.view.LayoutInflater;
 import android.view.View;
-import android.view.ViewGroup;
 
 import com.android.internal.widget.LockPatternUtils;
-import com.android.setupwizardlib.SetupWizardListLayout;
+import com.android.setupwizardlib.SetupWizardLayout;
 import com.android.setupwizardlib.view.NavigationBar;
 
 /**
@@ -63,22 +61,19 @@
         private static final String EXTRA_PASSWORD_QUALITY = ":settings:password_quality";
 
         @Override
-        public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                Bundle savedInstanceState) {
-            final SetupWizardListLayout layout = (SetupWizardListLayout) inflater.inflate(
-                    R.layout.setup_choose_lock_generic, container, false);
+        public void onViewCreated(View view, Bundle savedInstanceState) {
+            super.onViewCreated(view, savedInstanceState);
 
+            SetupWizardUtils.setImmersiveMode(getActivity());
+
+            SetupWizardLayout layout = (SetupWizardLayout) view;
             final NavigationBar navigationBar = layout.getNavigationBar();
             navigationBar.getNextButton().setEnabled(false);
             navigationBar.setNavigationBarListener(this);
 
-            return layout;
-        }
-
-        @Override
-        public void onViewCreated(View view, Bundle savedInstanceState) {
-            super.onViewCreated(view, savedInstanceState);
-            SetupWizardUtils.setImmersiveMode(getActivity());
+            layout.setIllustration(R.drawable.setup_illustration_lock_screen,
+                    R.drawable.setup_illustration_horizontal_tile);
+            layout.setHeaderText(R.string.setup_lock_settings_picker_title);
         }
 
         @Override
diff --git a/src/com/android/settings/deviceinfo/StorageWizardFormatProgress.java b/src/com/android/settings/deviceinfo/StorageWizardFormatProgress.java
index b3e30af..b44bc33 100644
--- a/src/com/android/settings/deviceinfo/StorageWizardFormatProgress.java
+++ b/src/com/android/settings/deviceinfo/StorageWizardFormatProgress.java
@@ -138,6 +138,10 @@
         @Override
         protected void onPostExecute(Exception e) {
             final StorageWizardFormatProgress activity = mActivity;
+            if (activity.isDestroyed()) {
+                return;
+            }
+
             if (e != null) {
                 Log.e(TAG, "Failed to partition", e);
                 Toast.makeText(activity, e.getMessage(), Toast.LENGTH_LONG).show();
diff --git a/src/com/android/settings/inputmethod/UserDictionaryAddWordActivity.java b/src/com/android/settings/inputmethod/UserDictionaryAddWordActivity.java
index ab5c2d6..d457939 100644
--- a/src/com/android/settings/inputmethod/UserDictionaryAddWordActivity.java
+++ b/src/com/android/settings/inputmethod/UserDictionaryAddWordActivity.java
@@ -56,7 +56,10 @@
         // The following will get the EXTRA_WORD and EXTRA_LOCALE fields that are in the intent.
         // We do need to add the action by hand, because UserDictionaryAddWordContents expects
         // it to be in the bundle, in the EXTRA_MODE key.
-        final Bundle args = intent.getExtras();
+        Bundle args = intent.getExtras();
+        if (args == null) {
+            args = new Bundle();
+        }
         args.putInt(UserDictionaryAddWordContents.EXTRA_MODE, mode);
 
         if (null != savedInstanceState) {
@@ -74,6 +77,7 @@
 
     private void reportBackToCaller(final int resultCode, final Bundle result) {
         final Intent senderIntent = getIntent();
+        if (senderIntent.getExtras() == null) return;
         final Object listener = senderIntent.getExtras().get("listener");
         if (!(listener instanceof Messenger)) return; // This will work if listener is null too.
         final Messenger messenger = (Messenger)listener;