From b45d9833aa3e8bbfdb819c7bcd104c95c8424f05 Mon Sep 17 00:00:00 2001 From: Fyodor Kupolov Date: Mon, 16 May 2016 13:25:34 -0700 Subject: [PATCH] Delay grantDefaultPermissions until user's first start Bug: 28765487 Change-Id: I6a7b0a9fc85964def1e991aafe967977080dfdab --- .../com/android/server/pm/PackageManagerService.java | 9 +++++++-- .../java/com/android/server/pm/UserManagerService.java | 6 ++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index b6c269ecf627f..e3b045057436e 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -20049,8 +20049,13 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); } } - void newUserCreated(final int userHandle) { - mDefaultPermissionPolicy.grantDefaultPermissions(userHandle); + void onBeforeUserStartUninitialized(final int userId) { + synchronized (mPackages) { + if (mSettings.areDefaultRuntimePermissionsGrantedLPr(userId)) { + return; + } + } + mDefaultPermissionPolicy.grantDefaultPermissions(userId); // If permission review for legacy apps is required, we represent // dagerous permissions for such apps as always granted runtime // permissions to keep per user flag state whether review is needed. diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java index e72d233f4f807..2d8dcf0c98dd7 100644 --- a/services/core/java/com/android/server/pm/UserManagerService.java +++ b/services/core/java/com/android/server/pm/UserManagerService.java @@ -1,4 +1,3 @@ - /* * Copyright (C) 2011 The Android Open Source Project * @@ -2074,7 +2073,6 @@ public class UserManagerService extends IUserManager.Stub { synchronized (mRestrictionsLock) { mBaseUserRestrictions.append(userId, restrictions); } - mPm.newUserCreated(userId); Intent addedIntent = new Intent(Intent.ACTION_USER_ADDED); addedIntent.putExtra(Intent.EXTRA_USER_HANDLE, userId); mContext.sendBroadcastAsUser(addedIntent, UserHandle.ALL, @@ -2634,6 +2632,10 @@ public class UserManagerService extends IUserManager.Stub { synchronized (mRestrictionsLock) { applyUserRestrictionsLR(userId); } + UserInfo userInfo = getUserInfoNoChecks(userId); + if (userInfo != null && !userInfo.isInitialized()) { + mPm.onBeforeUserStartUninitialized(userId); + } } }