Adding tracing to create user flow.

UserManagerService tracing is to ss, and Settings to pm tags.

Bug: 140101272
Test: manual verification
Change-Id: I8b4e86465a329c0a812321191e27ff57515d1845
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index dd1adb7..9371c44 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -2713,14 +2713,25 @@
         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;
@@ -2820,11 +2831,21 @@
                     }
                 }
             }
+
+            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);
@@ -2839,7 +2860,11 @@
             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,