Loading services/core/java/com/android/server/pm/Settings.java +10 −2 Original line number Diff line number Diff line Loading @@ -62,6 +62,7 @@ import android.os.PersistableBundle; import android.os.Process; import android.os.SELinux; import android.os.SystemClock; import android.os.Trace; import android.os.UserHandle; import android.os.UserManager; import android.os.storage.StorageManager; Loading Loading @@ -94,6 +95,7 @@ import com.android.server.pm.permission.BasePermission; import com.android.server.pm.permission.PermissionSettings; import com.android.server.pm.permission.PermissionsState; import com.android.server.pm.permission.PermissionsState.PermissionState; import com.android.server.utils.TimingsTraceAndSlog; import libcore.io.IoUtils; Loading Loading @@ -4012,8 +4014,11 @@ public final class Settings { } } void createNewUserLI(@NonNull PackageManagerService service, @NonNull Installer installer, int userHandle, String[] disallowedPackages) { void createNewUserLI(@NonNull PackageManagerService service, @NonNull Installer installer, int userHandle, String[] disallowedPackages) { final TimingsTraceAndSlog t = new TimingsTraceAndSlog(TAG + "Timing", Trace.TRACE_TAG_PACKAGE_MANAGER); t.traceBegin("createNewUser-" + userHandle); String[] volumeUuids; String[] names; int[] appIds; Loading Loading @@ -4051,6 +4056,7 @@ public final class Settings { targetSdkVersions[i] = ps.pkg.applicationInfo.targetSdkVersion; } } t.traceBegin("createAppData"); for (int i = 0; i < packagesCount; i++) { if (names[i] == null) { continue; Loading @@ -4064,9 +4070,11 @@ public final class Settings { Slog.w(TAG, "Failed to prepare app data", e); } } t.traceEnd(); // createAppData synchronized (mLock) { applyDefaultPreferredAppsLPw(userHandle); } t.traceEnd(); // createNewUser } void removeUserLPw(int userId) { Loading services/core/java/com/android/server/pm/UserManagerService.java +27 −2 Original line number Diff line number Diff line Loading @@ -2713,14 +2713,25 @@ public class UserManagerService extends IUserManager.Stub { return createUserInternalUnchecked(name, flags, parentId, disallowedPackages); } private UserInfo createUserInternalUnchecked(String name, int flags, int parentId, String[] disallowedPackages) { private UserInfo createUserInternalUnchecked(@Nullable String name, int flags, int parentId, @Nullable String[] disallowedPackages) { TimingsTraceAndSlog t = new TimingsTraceAndSlog(); t.traceBegin("createUser"); UserInfo userInfo = createUserInternalUncheckedNoTracing(name, flags, parentId, disallowedPackages, t); t.traceEnd(); return userInfo; } private UserInfo createUserInternalUncheckedNoTracing(@Nullable String name, int flags, int parentId, @Nullable String[] disallowedPackages, @NonNull TimingsTraceAndSlog t) { DeviceStorageMonitorInternal dsm = LocalServices .getService(DeviceStorageMonitorInternal.class); if (dsm.isMemoryLow()) { Log.w(LOG_TAG, "Cannot add user. Not enough space on disk."); return null; } final boolean isGuest = (flags & UserInfo.FLAG_GUEST) != 0; final boolean isManagedProfile = (flags & UserInfo.FLAG_MANAGED_PROFILE) != 0; final boolean isRestricted = (flags & UserInfo.FLAG_RESTRICTED) != 0; Loading Loading @@ -2820,11 +2831,21 @@ public class UserManagerService extends IUserManager.Stub { } } } t.traceBegin("createUserKey"); final StorageManager storage = mContext.getSystemService(StorageManager.class); storage.createUserKey(userId, userInfo.serialNumber, userInfo.isEphemeral()); t.traceEnd(); t.traceBegin("prepareUserData"); mUserDataPreparer.prepareUserData(userId, userInfo.serialNumber, StorageManager.FLAG_STORAGE_DE | StorageManager.FLAG_STORAGE_CE); t.traceEnd(); t.traceBegin("PM.createNewUser"); mPm.createNewUser(userId, disallowedPackages); t.traceEnd(); userInfo.partial = false; synchronized (mPackagesLock) { writeUserLP(userData); Loading @@ -2839,7 +2860,11 @@ public class UserManagerService extends IUserManager.Stub { synchronized (mRestrictionsLock) { mBaseUserRestrictions.append(userId, restrictions); } t.traceBegin("PM.onNewUserCreated"); mPm.onNewUserCreated(userId); t.traceEnd(); Intent addedIntent = new Intent(Intent.ACTION_USER_ADDED); addedIntent.putExtra(Intent.EXTRA_USER_HANDLE, userId); mContext.sendBroadcastAsUser(addedIntent, UserHandle.ALL, Loading Loading
services/core/java/com/android/server/pm/Settings.java +10 −2 Original line number Diff line number Diff line Loading @@ -62,6 +62,7 @@ import android.os.PersistableBundle; import android.os.Process; import android.os.SELinux; import android.os.SystemClock; import android.os.Trace; import android.os.UserHandle; import android.os.UserManager; import android.os.storage.StorageManager; Loading Loading @@ -94,6 +95,7 @@ import com.android.server.pm.permission.BasePermission; import com.android.server.pm.permission.PermissionSettings; import com.android.server.pm.permission.PermissionsState; import com.android.server.pm.permission.PermissionsState.PermissionState; import com.android.server.utils.TimingsTraceAndSlog; import libcore.io.IoUtils; Loading Loading @@ -4012,8 +4014,11 @@ public final class Settings { } } void createNewUserLI(@NonNull PackageManagerService service, @NonNull Installer installer, int userHandle, String[] disallowedPackages) { void createNewUserLI(@NonNull PackageManagerService service, @NonNull Installer installer, int userHandle, String[] disallowedPackages) { final TimingsTraceAndSlog t = new TimingsTraceAndSlog(TAG + "Timing", Trace.TRACE_TAG_PACKAGE_MANAGER); t.traceBegin("createNewUser-" + userHandle); String[] volumeUuids; String[] names; int[] appIds; Loading Loading @@ -4051,6 +4056,7 @@ public final class Settings { targetSdkVersions[i] = ps.pkg.applicationInfo.targetSdkVersion; } } t.traceBegin("createAppData"); for (int i = 0; i < packagesCount; i++) { if (names[i] == null) { continue; Loading @@ -4064,9 +4070,11 @@ public final class Settings { Slog.w(TAG, "Failed to prepare app data", e); } } t.traceEnd(); // createAppData synchronized (mLock) { applyDefaultPreferredAppsLPw(userHandle); } t.traceEnd(); // createNewUser } void removeUserLPw(int userId) { Loading
services/core/java/com/android/server/pm/UserManagerService.java +27 −2 Original line number Diff line number Diff line Loading @@ -2713,14 +2713,25 @@ public class UserManagerService extends IUserManager.Stub { return createUserInternalUnchecked(name, flags, parentId, disallowedPackages); } private UserInfo createUserInternalUnchecked(String name, int flags, int parentId, String[] disallowedPackages) { private UserInfo createUserInternalUnchecked(@Nullable String name, int flags, int parentId, @Nullable String[] disallowedPackages) { TimingsTraceAndSlog t = new TimingsTraceAndSlog(); t.traceBegin("createUser"); UserInfo userInfo = createUserInternalUncheckedNoTracing(name, flags, parentId, disallowedPackages, t); t.traceEnd(); return userInfo; } private UserInfo createUserInternalUncheckedNoTracing(@Nullable String name, int flags, int parentId, @Nullable String[] disallowedPackages, @NonNull TimingsTraceAndSlog t) { DeviceStorageMonitorInternal dsm = LocalServices .getService(DeviceStorageMonitorInternal.class); if (dsm.isMemoryLow()) { Log.w(LOG_TAG, "Cannot add user. Not enough space on disk."); return null; } final boolean isGuest = (flags & UserInfo.FLAG_GUEST) != 0; final boolean isManagedProfile = (flags & UserInfo.FLAG_MANAGED_PROFILE) != 0; final boolean isRestricted = (flags & UserInfo.FLAG_RESTRICTED) != 0; Loading Loading @@ -2820,11 +2831,21 @@ public class UserManagerService extends IUserManager.Stub { } } } t.traceBegin("createUserKey"); final StorageManager storage = mContext.getSystemService(StorageManager.class); storage.createUserKey(userId, userInfo.serialNumber, userInfo.isEphemeral()); t.traceEnd(); t.traceBegin("prepareUserData"); mUserDataPreparer.prepareUserData(userId, userInfo.serialNumber, StorageManager.FLAG_STORAGE_DE | StorageManager.FLAG_STORAGE_CE); t.traceEnd(); t.traceBegin("PM.createNewUser"); mPm.createNewUser(userId, disallowedPackages); t.traceEnd(); userInfo.partial = false; synchronized (mPackagesLock) { writeUserLP(userData); Loading @@ -2839,7 +2860,11 @@ public class UserManagerService extends IUserManager.Stub { synchronized (mRestrictionsLock) { mBaseUserRestrictions.append(userId, restrictions); } t.traceBegin("PM.onNewUserCreated"); mPm.onNewUserCreated(userId); t.traceEnd(); Intent addedIntent = new Intent(Intent.ACTION_USER_ADDED); addedIntent.putExtra(Intent.EXTRA_USER_HANDLE, userId); mContext.sendBroadcastAsUser(addedIntent, UserHandle.ALL, Loading