summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/pm/UserJourneyLogger.java4
-rw-r--r--services/tests/servicestests/src/com/android/server/pm/UserJourneyLoggerTest.java96
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