Fix connecting to secure wifi from QS

Sometimes the preference isn't created yet, so we need to hold on
to the ssid until the preference for that access point gets created.

Bug: 20975085
Change-Id: Ib5804611793550106f6059b1afe016de4e89bc64
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index 5cb4869..0c28db3 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -147,6 +147,7 @@
     private Bundle mWifiNfcDialogSavedState;
 
     private WifiTracker mWifiTracker;
+    private String mOpenSsid;
 
     /* End of "used in Wifi Setup context" */
 
@@ -252,20 +253,8 @@
         setHasOptionsMenu(true);
 
         if (intent.hasExtra(EXTRA_START_CONNECT_SSID)) {
-            String ssid = intent.getStringExtra(EXTRA_START_CONNECT_SSID);
+            mOpenSsid = intent.getStringExtra(EXTRA_START_CONNECT_SSID);
             onAccessPointsChanged();
-            PreferenceScreen preferenceScreen = getPreferenceScreen();
-            for (int i = 0; i < preferenceScreen.getPreferenceCount(); i++) {
-                Preference preference = preferenceScreen.getPreference(i);
-                if (preference instanceof AccessPointPreference) {
-                    AccessPoint accessPoint = ((AccessPointPreference) preference).getAccessPoint();
-                    if (ssid.equals(accessPoint.getSsid()) && !accessPoint.isSaved()
-                            && accessPoint.getSecurity() != AccessPoint.SECURITY_NONE) {
-                        onPreferenceTreeClick(preferenceScreen, preference);
-                        break;
-                    }
-                }
-            }
         }
     }
 
@@ -642,6 +631,12 @@
                         AccessPointPreference preference = new AccessPointPreference(accessPoint,
                                 getActivity(), false);
 
+                        if (mOpenSsid != null && mOpenSsid.equals(accessPoint.getSsid())
+                                && !accessPoint.isSaved()
+                                && accessPoint.getSecurity() != AccessPoint.SECURITY_NONE) {
+                            onPreferenceTreeClick(getPreferenceScreen(), preference);
+                            mOpenSsid = null;
+                        }
                         getPreferenceScreen().addPreference(preference);
                         accessPoint.setListener(this);
                     }