am 3aabfca4: Merge "Fixed a crash when rotating a WPS dialog." into lmp-dev

* commit '3aabfca462af26c487d2a834f70d0998d7556637':
  Fixed a crash when rotating a WPS dialog.
diff --git a/src/com/android/settings/wifi/AdvancedWifiSettings.java b/src/com/android/settings/wifi/AdvancedWifiSettings.java
index f86cc45..bda13ff 100644
--- a/src/com/android/settings/wifi/AdvancedWifiSettings.java
+++ b/src/com/android/settings/wifi/AdvancedWifiSettings.java
@@ -16,6 +16,8 @@
 
 package com.android.settings.wifi;
 
+import android.app.Dialog;
+import android.app.DialogFragment;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
@@ -151,8 +153,8 @@
         Preference wpsPushPref = findPreference(KEY_WPS_PUSH);
         wpsPushPref.setOnPreferenceClickListener(new OnPreferenceClickListener() {
                 public boolean onPreferenceClick(Preference arg0) {
-                    WpsDialog wpsDialog = new WpsDialog(context, WpsInfo.PBC);
-                    wpsDialog.show();
+                    WpsFragment wpsFragment = new WpsFragment(WpsInfo.PBC);
+                    wpsFragment.show(getFragmentManager(), KEY_WPS_PUSH);
                     return true;
                 }
         });
@@ -161,8 +163,8 @@
         Preference wpsPinPref = findPreference(KEY_WPS_PIN);
         wpsPinPref.setOnPreferenceClickListener(new OnPreferenceClickListener(){
                 public boolean onPreferenceClick(Preference arg0) {
-                    WpsDialog wpsDialog = new WpsDialog(context, WpsInfo.DISPLAY);
-                    wpsDialog.show();
+                    WpsFragment wpsFragment = new WpsFragment(WpsInfo.DISPLAY);
+                    wpsFragment.show(getFragmentManager(), KEY_WPS_PIN);
                     return true;
                 }
         });
@@ -315,4 +317,24 @@
         wifiIpAddressPref.setSelectable(false);
     }
 
+    /* Wrapper class for the WPS dialog to properly handle life cycle events like rotation. */
+    public static class WpsFragment extends DialogFragment {
+        private static int mWpsSetup;
+
+        // Public default constructor is required for rotation.
+        public WpsFragment() {
+            super();
+        }
+
+        public WpsFragment(int wpsSetup) {
+            super();
+            mWpsSetup = wpsSetup;
+        }
+
+        @Override
+        public Dialog onCreateDialog(Bundle savedInstanceState) {
+            return new WpsDialog(getActivity(), mWpsSetup);
+        }
+    }
+
 }