PasspointManager: Remove usage of ClientModeImpl
The only usage of ClientModeImpl in the class is to trigger a disconnect
if we're connected to a profile corresponding to the app removed. This
explicit trigger is not needed since |removeProvider| already internally
removes any active WifiConfiguration from WifiConfigManager. This in
turn triggers the OnNetworkUpdateListener.onNetworkRemoved() callback
which is used by ClientModeImpl to trigger disconnect.
Bug: 159052883
Test: atest com.android.server.wifi
Change-Id: Iabd827ff0309543127e8b7ef16932174195f07bd
diff --git a/service/java/com/android/server/wifi/WifiInjector.java b/service/java/com/android/server/wifi/WifiInjector.java
index 12185de..25d7483 100644
--- a/service/java/com/android/server/wifi/WifiInjector.java
+++ b/service/java/com/android/server/wifi/WifiInjector.java
@@ -331,8 +331,7 @@
mWifiCarrierInfoManager, mWifiKeyStore, mLruConnectionTracker);
mPasspointManager = new PasspointManager(mContext, this,
wifiHandler, mWifiNative, mWifiKeyStore, mClock, new PasspointObjectFactory(),
- mWifiConfigManager, mWifiConfigStore, mWifiMetrics, mWifiCarrierInfoManager,
- mClientModeImplHolder);
+ mWifiConfigManager, mWifiConfigStore, mWifiMetrics, mWifiCarrierInfoManager);
PasspointNetworkNominateHelper nominateHelper =
new PasspointNetworkNominateHelper(mPasspointManager, mWifiConfigManager,
mConnectivityLocalLog);
diff --git a/service/java/com/android/server/wifi/hotspot2/PasspointManager.java b/service/java/com/android/server/wifi/hotspot2/PasspointManager.java
index 397dd36..bbe2bb1 100644
--- a/service/java/com/android/server/wifi/hotspot2/PasspointManager.java
+++ b/service/java/com/android/server/wifi/hotspot2/PasspointManager.java
@@ -45,7 +45,6 @@
import com.android.server.wifi.WifiConfigManager;
import com.android.server.wifi.WifiConfigStore;
import com.android.server.wifi.WifiInjector;
-import com.android.server.wifi.WifiInjector.PrimaryClientModeImplHolder;
import com.android.server.wifi.WifiKeyStore;
import com.android.server.wifi.WifiMetrics;
import com.android.server.wifi.WifiNative;
@@ -119,7 +118,6 @@
private final PasspointProvisioner mPasspointProvisioner;
private final AppOpsManager mAppOps;
private final WifiCarrierInfoManager mWifiCarrierInfoManager;
- private final PrimaryClientModeImplHolder mClientModeImplHolder;
/**
* Map of package name of an app to the app ops changed listener for the app.
@@ -258,7 +256,6 @@
packageName).entrySet()) {
String uniqueId = entry.getValue().getConfig().getUniqueId();
removeProvider(Process.WIFI_UID /* ignored */, true, uniqueId, null);
- disconnectIfPasspointNetwork(uniqueId);
}
}
@@ -288,26 +285,12 @@
mAppOps.stopWatchingMode(appOpsChangedListener);
}
- private void disconnectIfPasspointNetwork(String uniqueId) {
- WifiConfiguration currentConfiguration =
- mClientModeImplHolder.get().getCurrentWifiConfiguration();
- if (currentConfiguration == null) return;
- if (currentConfiguration.isPasspoint() && TextUtils.equals(currentConfiguration.getKey(),
- uniqueId)) {
- Log.i(TAG, "Disconnect current Passpoint network for FQDN: "
- + currentConfiguration.FQDN + " and ID: " + uniqueId
- + " because the profile was removed");
- mClientModeImplHolder.get().disconnectCommand();
- }
- }
-
public PasspointManager(Context context, WifiInjector wifiInjector, Handler handler,
WifiNative wifiNative, WifiKeyStore keyStore, Clock clock,
PasspointObjectFactory objectFactory, WifiConfigManager wifiConfigManager,
WifiConfigStore wifiConfigStore,
WifiMetrics wifiMetrics,
- WifiCarrierInfoManager wifiCarrierInfoManager,
- PrimaryClientModeImplHolder clientModeImplHolder) {
+ WifiCarrierInfoManager wifiCarrierInfoManager) {
mPasspointEventHandler = objectFactory.makePasspointEventHandler(wifiNative,
new CallbackHandler(context));
mWifiInjector = wifiInjector;
@@ -321,7 +304,6 @@
mWifiMetrics = wifiMetrics;
mProviderIndex = 0;
mWifiCarrierInfoManager = wifiCarrierInfoManager;
- mClientModeImplHolder = clientModeImplHolder;
wifiConfigStore.registerStoreData(objectFactory.makePasspointConfigUserStoreData(
mKeyStore, mWifiCarrierInfoManager, new UserDataSourceHandler()));
wifiConfigStore.registerStoreData(objectFactory.makePasspointConfigSharedStoreData(
diff --git a/service/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java b/service/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java
index a627a6f..4cc6be9 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java
@@ -74,7 +74,6 @@
import androidx.test.filters.SmallTest;
-import com.android.server.wifi.ClientModeImpl;
import com.android.server.wifi.Clock;
import com.android.server.wifi.FakeKeys;
import com.android.server.wifi.FrameworkFacade;
@@ -86,7 +85,6 @@
import com.android.server.wifi.WifiConfigurationTestUtil;
import com.android.server.wifi.WifiContext;
import com.android.server.wifi.WifiInjector;
-import com.android.server.wifi.WifiInjector.PrimaryClientModeImplHolder;
import com.android.server.wifi.WifiKeyStore;
import com.android.server.wifi.WifiMetrics;
import com.android.server.wifi.WifiNative;
@@ -185,7 +183,6 @@
@Mock KeyStore mKeyStore;
@Mock AppOpsManager mAppOpsManager;
@Mock WifiInjector mWifiInjector;
- @Mock ClientModeImpl mClientModeImpl;
@Mock TelephonyManager mTelephonyManager;
@Mock SubscriptionManager mSubscriptionManager;
@Mock WifiNetworkSuggestionsManager mWifiNetworkSuggestionsManager;
@@ -196,7 +193,6 @@
ArgumentCaptor<AppOpsManager.OnOpChangedListener> mAppOpChangedListenerCaptor =
ArgumentCaptor.forClass(AppOpsManager.OnOpChangedListener.class);
WifiCarrierInfoManager mWifiCarrierInfoManager;
- PrimaryClientModeImplHolder mClientModeImplHolder;
/** Sets up test. */
@Before
@@ -215,8 +211,6 @@
any(PasspointManager.class), any(WifiMetrics.class)))
.thenReturn(mPasspointProvisioner);
when(mContext.getSystemService(Context.APP_OPS_SERVICE)).thenReturn(mAppOpsManager);
- mClientModeImplHolder = new PrimaryClientModeImplHolder();
- mClientModeImplHolder.set(mClientModeImpl);
when(mWifiInjector.getWifiNetworkSuggestionsManager())
.thenReturn(mWifiNetworkSuggestionsManager);
mWifiCarrierInfoManager = new WifiCarrierInfoManager(mTelephonyManager,
@@ -226,7 +220,7 @@
mHandler = new Handler(mLooper.getLooper());
mManager = new PasspointManager(mContext, mWifiInjector, mHandler, mWifiNative,
mWifiKeyStore, mClock, mObjectFactory, mWifiConfigManager,
- mWifiConfigStore, mWifiMetrics, mWifiCarrierInfoManager, mClientModeImplHolder);
+ mWifiConfigStore, mWifiMetrics, mWifiCarrierInfoManager);
ArgumentCaptor<PasspointEventHandler.Callbacks> callbacks =
ArgumentCaptor.forClass(PasspointEventHandler.Callbacks.class);
verify(mObjectFactory).makePasspointEventHandler(any(WifiNative.class),
@@ -752,7 +746,7 @@
.thenReturn(true);
PasspointManager ut = new PasspointManager(mContext, mWifiInjector, mHandler, mWifiNative,
mWifiKeyStore, mClock, spyFactory, mWifiConfigManager,
- mWifiConfigStore, mWifiMetrics, mWifiCarrierInfoManager, mClientModeImplHolder);
+ mWifiConfigStore, mWifiMetrics, mWifiCarrierInfoManager);
assertTrue(ut.addOrUpdateProvider(config, TEST_CREATOR_UID, TEST_PACKAGE,
true, true));
@@ -1834,7 +1828,6 @@
public void verifyRemovingPasspointProfilesWhenAppIsDisabled() {
WifiConfiguration currentConfiguration = WifiConfigurationTestUtil.createPasspointNetwork();
currentConfiguration.FQDN = TEST_FQDN;
- when(mClientModeImpl.getCurrentWifiConfiguration()).thenReturn(currentConfiguration);
PasspointProvider passpointProvider =
addTestProvider(TEST_FQDN, TEST_FRIENDLY_NAME, TEST_PACKAGE, false, null);
currentConfiguration.setPasspointUniqueId(passpointProvider.getConfig().getUniqueId());
@@ -1853,7 +1846,8 @@
mLooper.dispatchAll();
verify(mAppOpsManager).stopWatchingMode(mAppOpChangedListenerCaptor.getValue());
- verify(mClientModeImpl).disconnectCommand();
+ verify(mWifiConfigManager).removePasspointConfiguredNetwork(
+ passpointProvider.getWifiConfig().getKey());
assertTrue(mManager.getProviderConfigs(TEST_CREATOR_UID, true).isEmpty());
}