From d72ccc6880a1a624926b97417047d42a5aa182ef Mon Sep 17 00:00:00 2001 From: Roshan Pius Date: Wed, 27 Sep 2017 12:59:59 -0700 Subject: WifiConfigManager: Don't reset the userId on user stop Couple of fixes in user stop handling: a) Only clear the network data belonging to the user that is stopped. b) Don't reset the user Id on stop. It will be done in the user switch handling. Bug: 65939780 Test: Unit tests Change-Id: Ia3ab033d893009cfd8019ee27d52a490a8040438 --- service/java/com/android/server/wifi/WifiConfigManager.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'service') diff --git a/service/java/com/android/server/wifi/WifiConfigManager.java b/service/java/com/android/server/wifi/WifiConfigManager.java index 75b39b261..d9abb94b2 100644 --- a/service/java/com/android/server/wifi/WifiConfigManager.java +++ b/service/java/com/android/server/wifi/WifiConfigManager.java @@ -2571,10 +2571,12 @@ public class WifiConfigManager { * @param userId The identifier of the user that stopped. */ public void handleUserStop(int userId) { + if (mVerboseLoggingEnabled) { + Log.v(TAG, "Handling user stop for " + userId); + } if (userId == mCurrentUserId && mUserManager.isUserUnlockingOrUnlocked(mCurrentUserId)) { saveToStore(true); - clearInternalData(); - mCurrentUserId = UserHandle.USER_SYSTEM; + clearInternalUserData(mCurrentUserId); } } @@ -2586,6 +2588,7 @@ public class WifiConfigManager { * - List of deleted ephemeral networks. */ private void clearInternalData() { + localLog("clearInternalData: Clearing all internal data"); mConfiguredNetworks.clear(); mDeletedEphemeralSSIDs.clear(); mScanDetailCaches.clear(); @@ -2604,12 +2607,16 @@ public class WifiConfigManager { * removed from memory. */ private Set clearInternalUserData(int userId) { + localLog("clearInternalUserData: Clearing user internal data for " + userId); Set removedNetworkIds = new HashSet<>(); // Remove any private networks of the old user before switching the userId. for (WifiConfiguration config : getInternalConfiguredNetworks()) { if (!config.shared && WifiConfigurationUtil.doesUidBelongToAnyProfile( config.creatorUid, mUserManager.getProfiles(userId))) { removedNetworkIds.add(config.networkId); + localLog("clearInternalUserData: removed config." + + " netId=" + config.networkId + + " configKey=" + config.configKey()); mConfiguredNetworks.remove(config.networkId); } } -- cgit v1.2.3