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();