diff options
author | Roshan Pius <rpius@google.com> | 2017-09-27 12:59:59 -0700 |
---|---|---|
committer | Roshan Pius <rpius@google.com> | 2017-09-28 15:24:49 -0700 |
commit | d72ccc6880a1a624926b97417047d42a5aa182ef (patch) | |
tree | fefec0f8d907a99669980c7a4906e00a08390002 /service | |
parent | 7cede48303b0faabb3b6861a1ac7229f76fca006 (diff) |
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
Diffstat (limited to 'service')
-rw-r--r-- | service/java/com/android/server/wifi/WifiConfigManager.java | 11 |
1 files changed, 9 insertions, 2 deletions
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<Integer> clearInternalUserData(int userId) { + localLog("clearInternalUserData: Clearing user internal data for " + userId); Set<Integer> 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); } } |