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

Commit 58b08869 authored by Zimuzo Ezeozue's avatar Zimuzo Ezeozue Committed by Android (Google) Code Review
Browse files

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

parents 392fd855 96c1d7d5
Loading
Loading
Loading
Loading
+20 −4
Original line number Diff line number Diff line
@@ -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();
        }