Merge "Fix secondary volume mounts on user switch" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
bda154d565
@@ -249,6 +249,8 @@ class StorageManagerService extends IStorageManager.Stub
|
|||||||
@Override
|
@Override
|
||||||
public void onUserSwitching(@Nullable TargetUser from, @NonNull TargetUser to) {
|
public void onUserSwitching(@Nullable TargetUser from, @NonNull TargetUser to) {
|
||||||
mStorageManagerService.mCurrentUserId = to.getUserIdentifier();
|
mStorageManagerService.mCurrentUserId = to.getUserIdentifier();
|
||||||
|
// To reset public volume mounts
|
||||||
|
mStorageManagerService.onUserSwitching(mStorageManagerService.mCurrentUserId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1218,6 +1220,28 @@ class StorageManagerService extends IStorageManager.Stub
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void onUserSwitching(int userId) {
|
||||||
|
boolean reset = false;
|
||||||
|
List<VolumeInfo> volumesToRemount = new ArrayList<>();
|
||||||
|
synchronized (mLock) {
|
||||||
|
for (int i = 0; i < mVolumes.size(); i++) {
|
||||||
|
final VolumeInfo vol = mVolumes.valueAt(i);
|
||||||
|
if (!vol.isPrimary() && vol.isMountedWritable() && vol.isVisible()
|
||||||
|
&& vol.getMountUserId() != mCurrentUserId) {
|
||||||
|
// If there's a visible secondary volume mounted,
|
||||||
|
// we need to update the currentUserId and remount
|
||||||
|
vol.mountUserId = mCurrentUserId;
|
||||||
|
volumesToRemount.add(vol);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (VolumeInfo vol : volumesToRemount) {
|
||||||
|
mHandler.obtainMessage(H_VOLUME_UNMOUNT, vol).sendToTarget();
|
||||||
|
mHandler.obtainMessage(H_VOLUME_MOUNT, vol).sendToTarget();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private boolean supportsBlockCheckpoint() throws RemoteException {
|
private boolean supportsBlockCheckpoint() throws RemoteException {
|
||||||
enforcePermission(android.Manifest.permission.MOUNT_FORMAT_FILESYSTEMS);
|
enforcePermission(android.Manifest.permission.MOUNT_FORMAT_FILESYSTEMS);
|
||||||
return mVold.supportsBlockCheckpoint();
|
return mVold.supportsBlockCheckpoint();
|
||||||
|
|||||||
Reference in New Issue
Block a user