summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorRoshan Pius <rpius@google.com>2018-10-05 22:23:17 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2018-10-05 22:23:17 +0000
commit8a8f9588cbecb8236ac724dd604a9a0a0d546ac7 (patch)
treeb070a662dd69040b658fe10907e961da956f043d /service
parentda556945c630d816b1a195b7d8064575857dfd4f (diff)
parentce02379ffd2a080ef58d381456bc250ba82e2507 (diff)
Merge "WifiConnectivityManager: Refactor instantiation in ClientModeImpl"
Diffstat (limited to 'service')
-rw-r--r--service/java/com/android/server/wifi/ClientModeImpl.java56
-rw-r--r--service/java/com/android/server/wifi/WifiConnectivityManager.java29
-rw-r--r--service/java/com/android/server/wifi/WifiInjector.java44
3 files changed, 60 insertions, 69 deletions
diff --git a/service/java/com/android/server/wifi/ClientModeImpl.java b/service/java/com/android/server/wifi/ClientModeImpl.java
index 3bae1ba26..a4eb8eaf1 100644
--- a/service/java/com/android/server/wifi/ClientModeImpl.java
+++ b/service/java/com/android/server/wifi/ClientModeImpl.java
@@ -172,13 +172,13 @@ public class ClientModeImpl extends StateMachine {
protected void log(String s) {
Log.d(getName(), s);
}
- private WifiMetrics mWifiMetrics;
- private WifiInjector mWifiInjector;
- private WifiMonitor mWifiMonitor;
- private WifiNative mWifiNative;
- private WifiPermissionsUtil mWifiPermissionsUtil;
- private WifiConfigManager mWifiConfigManager;
- private WifiConnectivityManager mWifiConnectivityManager;
+ private final WifiMetrics mWifiMetrics;
+ private final WifiInjector mWifiInjector;
+ private final WifiMonitor mWifiMonitor;
+ private final WifiNative mWifiNative;
+ private final WifiPermissionsUtil mWifiPermissionsUtil;
+ private final WifiConfigManager mWifiConfigManager;
+ private final WifiConnectivityManager mWifiConnectivityManager;
private ConnectivityManager mCm;
private BaseWifiDiagnostics mWifiDiagnostics;
private final boolean mP2pSupported;
@@ -791,6 +791,7 @@ public class ClientModeImpl extends StateMachine {
mWifiInfo = new ExtendedWifiInfo();
mSupplicantStateTracker =
mFacade.makeSupplicantStateTracker(context, mWifiConfigManager, getHandler());
+ mWifiConnectivityManager = mWifiInjector.makeWifiConnectivityManager(this);
mLinkProperties = new LinkProperties();
mMcastLockManagerFilterController = new McastLockManagerFilterController();
@@ -1937,11 +1938,7 @@ public class ClientModeImpl extends StateMachine {
mWifiDiagnostics.captureBugReportData(WifiDiagnostics.REPORT_REASON_USER_ACTION);
mWifiDiagnostics.dump(fd, pw, args);
dumpIpClient(fd, pw, args);
- if (mWifiConnectivityManager != null) {
- mWifiConnectivityManager.dump(fd, pw, args);
- } else {
- pw.println("mWifiConnectivityManager is not initialized");
- }
+ mWifiConnectivityManager.dump(fd, pw, args);
mWifiInjector.getWakeupController().dump(fd, pw, args);
}
@@ -2430,9 +2427,7 @@ public class ClientModeImpl extends StateMachine {
mWifiMetrics.setScreenState(screenOn);
- if (mWifiConnectivityManager != null) {
- mWifiConnectivityManager.handleScreenStateChanged(screenOn);
- }
+ mWifiConnectivityManager.handleScreenStateChanged(screenOn);
if (mVerboseLoggingEnabled) log("handleScreenStateChanged Exit: " + screenOn);
}
@@ -3114,7 +3109,7 @@ public class ClientModeImpl extends StateMachine {
protected void needNetworkFor(NetworkRequest networkRequest, int score) {
synchronized (mWifiReqCountLock) {
if (++mConnectionReqCount == 1) {
- if (mWifiConnectivityManager != null && mUntrustedReqCount == 0) {
+ if (mUntrustedReqCount == 0) {
mWifiConnectivityManager.enable(true);
}
}
@@ -3125,7 +3120,7 @@ public class ClientModeImpl extends StateMachine {
protected void releaseNetworkFor(NetworkRequest networkRequest) {
synchronized (mWifiReqCountLock) {
if (--mConnectionReqCount == 0) {
- if (mWifiConnectivityManager != null && mUntrustedReqCount == 0) {
+ if (mUntrustedReqCount == 0) {
mWifiConnectivityManager.enable(false);
}
}
@@ -3150,12 +3145,10 @@ public class ClientModeImpl extends StateMachine {
NetworkCapabilities.NET_CAPABILITY_TRUSTED)) {
synchronized (mWifiReqCountLock) {
if (++mUntrustedReqCount == 1) {
- if (mWifiConnectivityManager != null) {
- if (mConnectionReqCount == 0) {
- mWifiConnectivityManager.enable(true);
- }
- mWifiConnectivityManager.setUntrustedConnectionAllowed(true);
+ if (mConnectionReqCount == 0) {
+ mWifiConnectivityManager.enable(true);
}
+ mWifiConnectivityManager.setUntrustedConnectionAllowed(true);
}
}
}
@@ -3167,11 +3160,9 @@ public class ClientModeImpl extends StateMachine {
NetworkCapabilities.NET_CAPABILITY_TRUSTED)) {
synchronized (mWifiReqCountLock) {
if (--mUntrustedReqCount == 0) {
- if (mWifiConnectivityManager != null) {
- mWifiConnectivityManager.setUntrustedConnectionAllowed(false);
- if (mConnectionReqCount == 0) {
- mWifiConnectivityManager.enable(false);
- }
+ mWifiConnectivityManager.setUntrustedConnectionAllowed(false);
+ if (mConnectionReqCount == 0) {
+ mWifiConnectivityManager.enable(false);
}
}
}
@@ -3684,17 +3675,6 @@ public class ClientModeImpl extends StateMachine {
setHighPerfModeEnabled(false);
mWifiStateTracker.updateState(WifiStateTracker.INVALID);
-
- if (mWifiConnectivityManager == null) {
- synchronized (mWifiReqCountLock) {
- mWifiConnectivityManager =
- mWifiInjector.makeWifiConnectivityManager(mWifiInfo,
- hasConnectionRequests());
- mWifiConnectivityManager.setUntrustedConnectionAllowed(mUntrustedReqCount > 0);
- mWifiConnectivityManager.handleScreenStateChanged(mScreenOn);
- }
- }
-
mIpClient = mFacade.makeIpClient(mContext, mInterfaceName, new IpClientCallback());
mIpClient.setMulticastFilter(true);
registerForWifiMonitorEvents();
diff --git a/service/java/com/android/server/wifi/WifiConnectivityManager.java b/service/java/com/android/server/wifi/WifiConnectivityManager.java
index 59dabdd63..07d9cd393 100644
--- a/service/java/com/android/server/wifi/WifiConnectivityManager.java
+++ b/service/java/com/android/server/wifi/WifiConnectivityManager.java
@@ -18,6 +18,7 @@ package com.android.server.wifi;
import static android.net.wifi.WifiConfiguration.NetworkSelectionStatus.DISABLED_NO_INTERNET_TEMPORARY;
+import static com.android.internal.util.Preconditions.checkNotNull;
import static com.android.server.wifi.ClientModeImpl.WIFI_WORK_SOURCE;
import android.app.AlarmManager;
@@ -131,7 +132,7 @@ public class WifiConnectivityManager {
private static final String TAG = "WifiConnectivityManager";
private final ClientModeImpl mStateMachine;
- private final WifiScanner mScanner;
+ private final WifiInjector mWifiInjector;
private final WifiConfigManager mConfigManager;
private final WifiInfo mWifiInfo;
private final WifiConnectivityHelper mConnectivityHelper;
@@ -147,10 +148,11 @@ public class WifiConnectivityManager {
private final ScoringParams mScoringParams;
private final LocalLog mLocalLog;
private final LinkedList<Long> mConnectionAttemptTimeStamps;
+ private WifiScanner mScanner;
private boolean mDbg = false;
private boolean mWifiEnabled = false;
- private boolean mWifiConnectivityManagerEnabled = true;
+ private boolean mWifiConnectivityManagerEnabled = false;
private boolean mScreenOn = false;
private int mWifiState = WIFI_STATE_UNKNOWN;
private boolean mUntrustedConnectionAllowed = false;
@@ -570,17 +572,17 @@ public class WifiConnectivityManager {
*/
WifiConnectivityManager(Context context, ScoringParams scoringParams,
ClientModeImpl stateMachine,
- WifiScanner scanner, WifiConfigManager configManager, WifiInfo wifiInfo,
+ WifiInjector injector, WifiConfigManager configManager, WifiInfo wifiInfo,
WifiNetworkSelector networkSelector, WifiConnectivityHelper connectivityHelper,
WifiLastResortWatchdog wifiLastResortWatchdog, OpenNetworkNotifier openNetworkNotifier,
CarrierNetworkNotifier carrierNetworkNotifier,
CarrierNetworkConfig carrierNetworkConfig, WifiMetrics wifiMetrics, Looper looper,
- Clock clock, LocalLog localLog, boolean enable, FrameworkFacade frameworkFacade,
+ Clock clock, LocalLog localLog, boolean enable,
SavedNetworkEvaluator savedNetworkEvaluator,
ScoredNetworkEvaluator scoredNetworkEvaluator,
PasspointNetworkEvaluator passpointNetworkEvaluator) {
mStateMachine = stateMachine;
- mScanner = scanner;
+ mWifiInjector = injector;
mConfigManager = configManager;
mWifiInfo = wifiInfo;
mNetworkSelector = networkSelector;
@@ -644,9 +646,6 @@ public class WifiConnectivityManager {
mNetworkSelector.registerNetworkEvaluator(scoredNetworkEvaluator,
SCORED_NETWORK_EVALUATOR_PRIORITY);
- // Register for all single scan results
- mScanner.registerScanListener(mAllSingleScanListener);
-
// Listen to WifiConfigManager network update events
mConfigManager.setOnSavedNetworkUpdateListener(new OnSavedNetworkUpdateListener());
@@ -1351,6 +1350,19 @@ public class WifiConnectivityManager {
}
/**
+ * Helper method to populate WifiScanner handle. This is done lazily because
+ * WifiScanningService is started after WifiService.
+ */
+ private void retrieveWifiScanner() {
+ if (mScanner != null) return;
+ mScanner = mWifiInjector.getWifiScanner();
+ checkNotNull(mScanner);
+ // Register for all single scan results
+ mScanner.registerScanListener(mAllSingleScanListener);
+ }
+
+
+ /**
* Clear the BSSID blacklist
*/
private void clearBssidBlacklist() {
@@ -1362,6 +1374,7 @@ public class WifiConnectivityManager {
* Start WifiConnectivityManager
*/
private void start() {
+ retrieveWifiScanner();
mConnectivityHelper.getFirmwareRoamingInfo();
clearBssidBlacklist();
startConnectivityScan(SCAN_IMMEDIATELY);
diff --git a/service/java/com/android/server/wifi/WifiInjector.java b/service/java/com/android/server/wifi/WifiInjector.java
index ba288505e..24e125a29 100644
--- a/service/java/com/android/server/wifi/WifiInjector.java
+++ b/service/java/com/android/server/wifi/WifiInjector.java
@@ -25,7 +25,6 @@ import android.net.NetworkKey;
import android.net.NetworkScoreManager;
import android.net.wifi.IWifiScanner;
import android.net.wifi.IWificond;
-import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.net.wifi.WifiNetworkScoreCache;
import android.net.wifi.WifiScanner;
@@ -95,15 +94,15 @@ public class WifiInjector {
private final ClientModeImpl mClientModeImpl;
private final ActiveModeWarden mActiveModeWarden;
private final WifiSettingsStore mSettingsStore;
- private final OpenNetworkNotifier mOpenNetworkNotifier;
- private final CarrierNetworkNotifier mCarrierNetworkNotifier;
+ private OpenNetworkNotifier mOpenNetworkNotifier;
+ private CarrierNetworkNotifier mCarrierNetworkNotifier;
private final CarrierNetworkConfig mCarrierNetworkConfig;
private final WifiLockManager mLockManager;
private final WifiController mWifiController;
private final WificondControl mWificondControl;
private final Clock mClock = new Clock();
private final WifiMetrics mWifiMetrics;
- private final WifiLastResortWatchdog mWifiLastResortWatchdog;
+ private WifiLastResortWatchdog mWifiLastResortWatchdog;
private final PropertyService mPropertyService = new SystemPropertyService();
private final BuildProperties mBuildProperties = new SystemBuildProperties();
private final KeyStore mKeyStore = KeyStore.getInstance();
@@ -271,14 +270,6 @@ public class WifiInjector {
mActiveModeWarden = new ActiveModeWarden(this, mContext, clientModeImplLooper,
mWifiNative, new DefaultModeManager(mContext, clientModeImplLooper),
mBatteryStats);
- mOpenNetworkNotifier = new OpenNetworkNotifier(mContext,
- mWifiCoreHandlerThread.getLooper(), mFrameworkFacade, mClock, mWifiMetrics,
- mWifiConfigManager, mWifiConfigStore, mClientModeImpl,
- new ConnectToNetworkNotificationBuilder(mContext, mFrameworkFacade));
- mCarrierNetworkNotifier = new CarrierNetworkNotifier(mContext,
- mWifiCoreHandlerThread.getLooper(), mFrameworkFacade, mClock, mWifiMetrics,
- mWifiConfigManager, mWifiConfigStore, mClientModeImpl,
- new ConnectToNetworkNotificationBuilder(mContext, mFrameworkFacade));
WakeupNotificationFactory wakeupNotificationFactory =
new WakeupNotificationFactory(mContext, mFrameworkFacade);
@@ -295,8 +286,6 @@ public class WifiInjector {
mSettingsStore, mWifiServiceHandlerThread.getLooper(), mFrameworkFacade,
mActiveModeWarden);
mSelfRecovery = new SelfRecovery(mWifiController, mClock);
- mWifiLastResortWatchdog = new WifiLastResortWatchdog(mSelfRecovery, mClock,
- mWifiMetrics, mClientModeImpl, clientModeImplLooper);
mWifiMulticastLockManager = new WifiMulticastLockManager(
mClientModeImpl.getMcastLockManagerFilterController(),
BatteryStatsService.getService());
@@ -521,21 +510,30 @@ public class WifiInjector {
}
/**
- * Obtain a new instance of WifiConnectivityManager.
+ * Construct a new instance of WifiConnectivityManager & its dependencies.
*
* Create and return a new WifiConnectivityManager.
- * @param wifiInfo WifiInfo object for updating wifi state.
- * @param hasConnectionRequests boolean indicating if WifiConnectivityManager to start
- * immediately based on connection requests.
+ * @param clientModeImpl Instance of client mode impl.
+ * TODO(b/116233964): Remove cyclic dependency between WifiConnectivityManager & ClientModeImpl.
*/
- public WifiConnectivityManager makeWifiConnectivityManager(WifiInfo wifiInfo,
- boolean hasConnectionRequests) {
+ public WifiConnectivityManager makeWifiConnectivityManager(ClientModeImpl clientModeImpl) {
+ mOpenNetworkNotifier = new OpenNetworkNotifier(mContext,
+ mWifiCoreHandlerThread.getLooper(), mFrameworkFacade, mClock, mWifiMetrics,
+ mWifiConfigManager, mWifiConfigStore, clientModeImpl,
+ new ConnectToNetworkNotificationBuilder(mContext, mFrameworkFacade));
+ mCarrierNetworkNotifier = new CarrierNetworkNotifier(mContext,
+ mWifiCoreHandlerThread.getLooper(), mFrameworkFacade, mClock, mWifiMetrics,
+ mWifiConfigManager, mWifiConfigStore, clientModeImpl,
+ new ConnectToNetworkNotificationBuilder(mContext, mFrameworkFacade));
+ mWifiLastResortWatchdog = new WifiLastResortWatchdog(mSelfRecovery, mClock,
+ mWifiMetrics, clientModeImpl, clientModeImpl.getHandler().getLooper());
return new WifiConnectivityManager(mContext, getScoringParams(),
- mClientModeImpl, getWifiScanner(),
- mWifiConfigManager, wifiInfo, mWifiNetworkSelector, mWifiConnectivityHelper,
+ clientModeImpl, this,
+ mWifiConfigManager, clientModeImpl.getWifiInfo(),
+ mWifiNetworkSelector, mWifiConnectivityHelper,
mWifiLastResortWatchdog, mOpenNetworkNotifier, mCarrierNetworkNotifier,
mCarrierNetworkConfig, mWifiMetrics, mWifiCoreHandlerThread.getLooper(),
- mClock, mConnectivityLocalLog, hasConnectionRequests, mFrameworkFacade,
+ mClock, mConnectivityLocalLog, true,
mSavedNetworkEvaluator, mScoredNetworkEvaluator, mPasspointNetworkEvaluator);
}