Merge "Improve secondary volume mounts on user switch" into sc-dev

This commit is contained in:
Zimuzo Ezeozue
2021-05-19 14:31:11 +00:00
committed by Android (Google) Code Review

View File

@@ -248,9 +248,18 @@ class StorageManagerService extends IStorageManager.Stub
@Override
public void onUserSwitching(@Nullable TargetUser from, @NonNull TargetUser to) {
mStorageManagerService.mCurrentUserId = to.getUserIdentifier();
// To reset public volume mounts
mStorageManagerService.onUserSwitching(mStorageManagerService.mCurrentUserId);
int currentUserId = to.getUserIdentifier();
mStorageManagerService.mCurrentUserId = currentUserId;
UserManagerInternal umInternal = LocalServices.getService(UserManagerInternal.class);
if (umInternal.isUserUnlocked(currentUserId)) {
Slog.d(TAG, "Attempt remount volumes for user: " + currentUserId);
mStorageManagerService.maybeRemountVolumes(currentUserId);
mStorageManagerService.mRemountCurrentUserVolumesOnUnlock = false;
} else {
Slog.d(TAG, "Attempt remount volumes for user: " + currentUserId + " on unlock");
mStorageManagerService.mRemountCurrentUserVolumesOnUnlock = true;
}
}
@Override
@@ -425,6 +434,8 @@ class StorageManagerService extends IStorageManager.Stub
private volatile int mCurrentUserId = UserHandle.USER_SYSTEM;
private volatile boolean mRemountCurrentUserVolumesOnUnlock = false;
private final Installer mInstaller;
/** Holding lock for AppFuse business */
@@ -1196,6 +1207,10 @@ class StorageManagerService extends IStorageManager.Stub
}
mHandler.obtainMessage(H_COMPLETE_UNLOCK_USER, userId).sendToTarget();
if (mRemountCurrentUserVolumesOnUnlock && userId == mCurrentUserId) {
maybeRemountVolumes(userId);
mRemountCurrentUserVolumesOnUnlock = false;
}
}
private void completeUnlockUser(int userId) {
@@ -1255,7 +1270,7 @@ class StorageManagerService extends IStorageManager.Stub
}
}
private void onUserSwitching(int userId) {
private void maybeRemountVolumes(int userId) {
boolean reset = false;
List<VolumeInfo> volumesToRemount = new ArrayList<>();
synchronized (mLock) {
@@ -1272,6 +1287,7 @@ class StorageManagerService extends IStorageManager.Stub
}
for (VolumeInfo vol : volumesToRemount) {
Slog.i(TAG, "Remounting volume for user: " + userId + ". Volume: " + vol);
mHandler.obtainMessage(H_VOLUME_UNMOUNT, vol).sendToTarget();
mHandler.obtainMessage(H_VOLUME_MOUNT, vol).sendToTarget();
}