Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5ef6cd0c authored by Martijn Coenen's avatar Martijn Coenen Committed by Automerger Merge Worker
Browse files

Merge "SM: Change volume mountUserId for new user" into main am: cc299356...

Merge "SM: Change volume mountUserId for new user" into main am: cc299356 am: 88d2b411 am: ca7ee461 am: 9fbd5d3d am: 6ce5f78f

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/2616670



Change-Id: I597f4272331192f710d4dd345b29e103cfa70d88
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 53ad7825 6ce5f78f
Loading
Loading
Loading
Loading
+18 −2
Original line number Diff line number Diff line
@@ -1269,6 +1269,21 @@ class StorageManagerService extends IStorageManager.Stub
        }
    }

    /**
     * This method checks if the volume is public and the volume is visible and the volume it is
     * trying to mount doesn't have the same mount user id as the current user being maintained by
     * StorageManagerService and change the mount Id. The checks are same as
     * {@link StorageManagerService#maybeRemountVolumes(int)}
     * @param VolumeInfo object to consider for changing the mountId
     */
    private void updateVolumeMountIdIfRequired(VolumeInfo vol) {
        synchronized (mLock) {
            if (!vol.isPrimary() && vol.isVisible() && vol.getMountUserId() != mCurrentUserId) {
                vol.mountUserId = mCurrentUserId;
            }
        }
    }

    private boolean supportsBlockCheckpoint() throws RemoteException {
        enforcePermission(android.Manifest.permission.MOUNT_FORMAT_FILESYSTEMS);
        return mVold.supportsBlockCheckpoint();
@@ -1382,13 +1397,14 @@ class StorageManagerService extends IStorageManager.Stub
        }

        @Override
        public void onVolumeStateChanged(String volId, final int newState) {
        public void onVolumeStateChanged(String volId, final int newState, final int userId) {
            synchronized (mLock) {
                final VolumeInfo vol = mVolumes.get(volId);
                if (vol != null) {
                    final int oldState = vol.state;
                    vol.state = newState;
                    final VolumeInfo vInfo = new VolumeInfo(vol);
                    vInfo.mountUserId = userId;
                    final SomeArgs args = SomeArgs.obtain();
                    args.arg1 = vInfo;
                    args.argi1 = oldState;
@@ -2232,7 +2248,7 @@ class StorageManagerService extends IStorageManager.Stub
        if (isMountDisallowed(vol)) {
            throw new SecurityException("Mounting " + volId + " restricted by policy");
        }

        updateVolumeMountIdIfRequired(vol);
        mount(vol);
    }