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

Commit 292eb65f authored by Amith Yamasani's avatar Amith Yamasani Committed by Android (Google) Code Review
Browse files

Merge "Fix new user creation regression due to vold remount calls" into mnc-dev

parents 5449ee07 bb054c9d
Loading
Loading
Loading
Loading
+8 −12
Original line number Diff line number Diff line
@@ -3458,8 +3458,12 @@ public class PackageManagerService extends IPackageManager.Stub {
            mSettings.writeRuntimePermissionsForUserLPr(userId, false);
        }
        if (READ_EXTERNAL_STORAGE.equals(name)
                || WRITE_EXTERNAL_STORAGE.equals(name)) {
        // Only need to do this if user is initialized. Otherwise it's a new user
        // and there are no processes running as the user yet and there's no need
        // to make an expensive call to remount processes for the changed permissions.
        if ((READ_EXTERNAL_STORAGE.equals(name)
                || WRITE_EXTERNAL_STORAGE.equals(name))
                && sUserManager.isInitialized(userId)) {
            final long token = Binder.clearCallingIdentity();
            try {
                final StorageManager storage = mContext.getSystemService(StorageManager.class);
@@ -15965,17 +15969,9 @@ public class PackageManagerService extends IPackageManager.Stub {
        }
    }
    void newUserCreatedLILPw(final int userHandle) {
        // We cannot grant the default permissions with a lock held as
        // we query providers from other components for default handlers
        // such as enabled IMEs, etc.
        mHandler.post(new Runnable() {
            @Override
            public void run() {
    void newUserCreated(final int userHandle) {
        mDefaultPermissionPolicy.grantDefaultPermissions(userHandle);
    }
        });
    }
    @Override
    public VerifierDeviceIdentity getVerifierDeviceIdentity() throws RemoteException {
+11 −2
Original line number Diff line number Diff line
@@ -1220,6 +1220,7 @@ public class UserManagerService extends IUserManager.Stub {
        final boolean isManagedProfile = (flags & UserInfo.FLAG_MANAGED_PROFILE) != 0;
        final long ident = Binder.clearCallingIdentity();
        UserInfo userInfo = null;
        final int userId;
        try {
            synchronized (mInstallLock) {
                synchronized (mPackagesLock) {
@@ -1240,7 +1241,7 @@ public class UserManagerService extends IUserManager.Stub {
                    if (isGuest && findCurrentGuestUserLocked() != null) {
                        return null;
                    }
                    int userId = getNextAvailableIdLocked();
                    userId = getNextAvailableIdLocked();
                    userInfo = new UserInfo(userId, name, null, flags);
                    userInfo.serialNumber = mNextSerialNumber++;
                    long now = System.currentTimeMillis();
@@ -1274,9 +1275,9 @@ public class UserManagerService extends IUserManager.Stub {
                    updateUserIdsLocked();
                    Bundle restrictions = new Bundle();
                    mUserRestrictions.append(userId, restrictions);
                    mPm.newUserCreatedLILPw(userId);
                }
            }
            mPm.newUserCreated(userId);
            if (userInfo != null) {
                Intent addedIntent = new Intent(Intent.ACTION_USER_ADDED);
                addedIntent.putExtra(Intent.EXTRA_USER_HANDLE, userInfo.id);
@@ -2015,4 +2016,12 @@ public class UserManagerService extends IUserManager.Stub {
            }
        }
    }

    /**
     * @param userId
     * @return whether the user has been initialized yet
     */
    boolean isInitialized(int userId) {
        return (getUserInfo(userId).flags & UserInfo.FLAG_INITIALIZED) != 0;
    }
}