diff options
| -rw-r--r-- | services/core/java/com/android/server/pm/UserJourneyLogger.java | 4 | ||||
| -rw-r--r-- | services/tests/servicestests/src/com/android/server/pm/UserJourneyLoggerTest.java | 96 |
2 files changed, 100 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/pm/UserJourneyLogger.java b/services/core/java/com/android/server/pm/UserJourneyLogger.java index 651578dc5deb..f120763a9e1a 100644 --- a/services/core/java/com/android/server/pm/UserJourneyLogger.java +++ b/services/core/java/com/android/server/pm/UserJourneyLogger.java @@ -23,6 +23,7 @@ import static android.os.UserManager.USER_TYPE_FULL_SECONDARY; import static android.os.UserManager.USER_TYPE_FULL_SYSTEM; import static android.os.UserManager.USER_TYPE_PROFILE_CLONE; import static android.os.UserManager.USER_TYPE_PROFILE_MANAGED; +import static android.os.UserManager.USER_TYPE_PROFILE_PRIVATE; import static android.os.UserManager.USER_TYPE_SYSTEM_HEADLESS; import static com.android.internal.util.FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__EVENT__UNKNOWN; @@ -245,6 +246,9 @@ public class UserJourneyLogger { .USER_LIFECYCLE_JOURNEY_REPORTED__USER_TYPE__SYSTEM_HEADLESS; case USER_TYPE_PROFILE_CLONE: return FrameworkStatsLog.USER_LIFECYCLE_JOURNEY_REPORTED__USER_TYPE__PROFILE_CLONE; + case USER_TYPE_PROFILE_PRIVATE: + return FrameworkStatsLog + .USER_LIFECYCLE_JOURNEY_REPORTED__USER_TYPE__PROFILE_PRIVATE; default: return FrameworkStatsLog.USER_LIFECYCLE_JOURNEY_REPORTED__USER_TYPE__TYPE_UNKNOWN; } diff --git a/services/tests/servicestests/src/com/android/server/pm/UserJourneyLoggerTest.java b/services/tests/servicestests/src/com/android/server/pm/UserJourneyLoggerTest.java index bfd407216c3b..186a27ccdc26 100644 --- a/services/tests/servicestests/src/com/android/server/pm/UserJourneyLoggerTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/UserJourneyLoggerTest.java @@ -45,6 +45,7 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import android.content.pm.UserInfo; +import android.os.UserManager; import android.platform.test.annotations.Presubmit; import androidx.test.runner.AndroidJUnit4; @@ -135,6 +136,53 @@ public class UserJourneyLoggerTest { } @Test + public void testCreatePrivateProfileUserJourney() { + final UserLifecycleEventOccurredCaptor report1 = new UserLifecycleEventOccurredCaptor(); + final UserJourneyLogger.UserJourneySession session = + mUserJourneyLogger.logUserJourneyBegin(-1, USER_JOURNEY_USER_CREATE); + + report1.captureAndAssert( + mUserJourneyLogger, + session.mSessionId, + -1, + USER_LIFECYCLE_EVENT_CREATE_USER, + EVENT_STATE_BEGIN, + ERROR_CODE_UNSPECIFIED, + 1); + + final UserLifecycleJourneyReportedCaptor report2 = new UserLifecycleJourneyReportedCaptor(); + final int profileUserId = 10; + UserInfo targetUser = + new UserInfo( + profileUserId, + "test private target user", + /* iconPath= */ null, + UserInfo.FLAG_PROFILE, + UserManager.USER_TYPE_PROFILE_PRIVATE); + mUserJourneyLogger.logUserCreateJourneyFinish(0, targetUser); + + report1.captureAndAssert( + mUserJourneyLogger, + session.mSessionId, + profileUserId, + USER_LIFECYCLE_EVENT_CREATE_USER, + EVENT_STATE_FINISH, + ERROR_CODE_UNSPECIFIED, + 2); + + report2.captureAndAssert( + mUserJourneyLogger, + session.mSessionId, + USER_JOURNEY_USER_CREATE, + 0, + profileUserId, + FrameworkStatsLog.USER_LIFECYCLE_JOURNEY_REPORTED__USER_TYPE__PROFILE_PRIVATE, + UserInfo.FLAG_PROFILE, + ERROR_CODE_UNSPECIFIED, + 1); + } + + @Test public void testRemoveUserJourney() { final UserLifecycleEventOccurredCaptor report1 = new UserLifecycleEventOccurredCaptor(); final UserJourneyLogger.UserJourneySession session = mUserJourneyLogger @@ -161,6 +209,54 @@ public class UserJourneyLoggerTest { } @Test + public void testRemovePrivateProfileUserJourneyWithError() { + final UserLifecycleEventOccurredCaptor report1 = new UserLifecycleEventOccurredCaptor(); + final int profileUserId = 10; + final UserJourneyLogger.UserJourneySession session = + mUserJourneyLogger.logUserJourneyBegin(profileUserId, USER_JOURNEY_USER_REMOVE); + + report1.captureAndAssert( + mUserJourneyLogger, + session.mSessionId, + profileUserId, + USER_LIFECYCLE_EVENT_REMOVE_USER, + EVENT_STATE_BEGIN, + ERROR_CODE_UNSPECIFIED, + 1); + + final UserLifecycleJourneyReportedCaptor report2 = new UserLifecycleJourneyReportedCaptor(); + final UserInfo targetUser = + new UserInfo( + profileUserId, + "test private target user", + /* iconPath= */ null, + UserInfo.FLAG_PROFILE, + UserManager.USER_TYPE_PROFILE_PRIVATE); + mUserJourneyLogger.logUserJourneyFinishWithError( + 0, targetUser, USER_JOURNEY_USER_REMOVE, ERROR_CODE_INCOMPLETE_OR_TIMEOUT); + + report1.captureAndAssert( + mUserJourneyLogger, + session.mSessionId, + profileUserId, + USER_LIFECYCLE_EVENT_REMOVE_USER, + EVENT_STATE_ERROR, + ERROR_CODE_INCOMPLETE_OR_TIMEOUT, + 2); + + report2.captureAndAssert( + mUserJourneyLogger, + session.mSessionId, + USER_JOURNEY_USER_REMOVE, + 0, + profileUserId, + FrameworkStatsLog.USER_LIFECYCLE_JOURNEY_REPORTED__USER_TYPE__PROFILE_PRIVATE, + UserInfo.FLAG_PROFILE, + ERROR_CODE_INCOMPLETE_OR_TIMEOUT, + 1); + } + + @Test public void testStartUserJourney() { final UserLifecycleEventOccurredCaptor report1 = new UserLifecycleEventOccurredCaptor(); final UserJourneyLogger.UserJourneySession session = mUserJourneyLogger |