register network factory before processing scan results
Bug:18512598

Change-Id: I79aa972f686f2c4090012a36dcad13a9e53d5566
diff --git a/service/java/com/android/server/wifi/WifiStateMachine.java b/service/java/com/android/server/wifi/WifiStateMachine.java
index f10c725..593d808 100644
--- a/service/java/com/android/server/wifi/WifiStateMachine.java
+++ b/service/java/com/android/server/wifi/WifiStateMachine.java
@@ -4537,6 +4537,19 @@
         }
 
     }
+
+    void maybeRegisterNetworkFactory() {
+        if (mNetworkFactory == null) {
+            checkAndSetConnectivityInstance();
+            if (mCm != null) {
+                mNetworkFactory = new WifiNetworkFactory(getHandler().getLooper(), mContext,
+                        NETWORKTYPE, mNetworkCapabilitiesFilter);
+                mNetworkFactory.setScoreFilter(60);
+                mNetworkFactory.register();
+            }
+        }
+    }
+
     /********************************************************
      * HSM states
      *******************************************************/
@@ -4615,12 +4628,7 @@
                         sendMessageAtFrontOfQueue(CMD_SET_COUNTRY_CODE,
                                 sequenceNum, 0, countryCode);
                     }
-
-                    checkAndSetConnectivityInstance();
-                    mNetworkFactory = new WifiNetworkFactory(getHandler().getLooper(), mContext,
-                            NETWORKTYPE, mNetworkCapabilitiesFilter);
-                    mNetworkFactory.setScoreFilter(60);
-                    mCm.registerNetworkFactory(new Messenger(mNetworkFactory), NETWORKTYPE);
+                    maybeRegisterNetworkFactory();
                     break;
                 case CMD_SET_BATCHED_SCAN:
                     recordBatchedScanSettings(message.arg1, message.arg2, (Bundle)message.obj);
@@ -5010,6 +5018,7 @@
                     sendMessageDelayed(CMD_START_SUPPLICANT, SUPPLICANT_RESTART_INTERVAL_MSECS);
                     break;
                 case WifiMonitor.SCAN_RESULTS_EVENT:
+                    maybeRegisterNetworkFactory(); // Make sure our NetworkFactory is registered
                     closeRadioScanStats();
                     noteScanEnd();
                     setScanResults();