Public volumes belong to a single user.

am: 3a062a67fa

Change-Id: Ibe40a7985bde6ff6d8bc307c28b94f7b1445c961
This commit is contained in:
Jeff Sharkey
2016-11-07 23:35:34 +00:00
committed by android-build-merger
2 changed files with 10 additions and 2 deletions

View File

@@ -135,7 +135,8 @@ public class ExternalStorageProvider extends DocumentsProvider {
final VolumeInfo privateVol = mStorageManager.findPrivateForEmulated(volume);
title = mStorageManager.getBestVolumeDescription(privateVol);
}
} else if (volume.getType() == VolumeInfo.TYPE_PUBLIC) {
} else if (volume.getType() == VolumeInfo.TYPE_PUBLIC
&& volume.getMountUserId() == userId) {
rootId = volume.getFsUuid();
title = mStorageManager.getBestVolumeDescription(volume);
} else {

View File

@@ -168,6 +168,11 @@ class MountService extends IMountService.Stub
}
}
@Override
public void onSwitchUser(int userHandle) {
mMountService.mCurrentUserId = userHandle;
}
@Override
public void onStartUser(int userHandle) {
mMountService.onStartUser(userHandle);
@@ -307,6 +312,8 @@ class MountService extends IMountService.Stub
@GuardedBy("mLock")
private String mMoveTargetUuid;
private volatile int mCurrentUserId = UserHandle.USER_OWNER;
private VolumeInfo findVolumeByIdOrThrow(String id) {
synchronized (mLock) {
final VolumeInfo vol = mVolumes.get(id);
@@ -1189,7 +1196,7 @@ class MountService extends IMountService.Stub
vol.mountFlags |= VolumeInfo.MOUNT_FLAG_VISIBLE;
}
vol.mountUserId = UserHandle.USER_OWNER;
vol.mountUserId = mCurrentUserId;
mHandler.obtainMessage(H_VOLUME_MOUNT, vol).sendToTarget();
} else if (vol.type == VolumeInfo.TYPE_PRIVATE) {