Merge "Support user created lifecycle event in CarServiceHelperService." into tm-qpr-dev
diff --git a/builtInServices/src/com/android/internal/car/CarServiceHelperService.java b/builtInServices/src/com/android/internal/car/CarServiceHelperService.java
index 52e6861..3d9301b 100644
--- a/builtInServices/src/com/android/internal/car/CarServiceHelperService.java
+++ b/builtInServices/src/com/android/internal/car/CarServiceHelperService.java
@@ -15,6 +15,7 @@
*/
package com.android.internal.car;
+import static com.android.car.internal.common.CommonConstants.USER_LIFECYCLE_EVENT_TYPE_CREATED;
import static com.android.car.internal.common.CommonConstants.USER_LIFECYCLE_EVENT_TYPE_POST_UNLOCKED;
import static com.android.car.internal.common.CommonConstants.USER_LIFECYCLE_EVENT_TYPE_STARTING;
import static com.android.car.internal.common.CommonConstants.USER_LIFECYCLE_EVENT_TYPE_STOPPED;
@@ -205,7 +206,11 @@
@Override
public void onUserCreated(UserInfo user, Object token) {
if (DBG) Slogf.d(TAG, "onUserCreated(): %s", user.toFullString());
+ mCarServiceHelperServiceUpdatable.sendUserLifecycleEvent(
+ USER_LIFECYCLE_EVENT_TYPE_CREATED, /* userFrom= */ null,
+ user.getUserHandle());
}
+
@Override
public void onUserRemoved(UserInfo user) {
if (DBG) Slogf.d(TAG, "onUserRemoved(): $s", user.toFullString());
diff --git a/updatableServices/src/com/android/internal/car/updatable/CarServiceProxy.java b/updatableServices/src/com/android/internal/car/updatable/CarServiceProxy.java
index 0824755..49ee2b5 100644
--- a/updatableServices/src/com/android/internal/car/updatable/CarServiceProxy.java
+++ b/updatableServices/src/com/android/internal/car/updatable/CarServiceProxy.java
@@ -16,6 +16,7 @@
package com.android.internal.car.updatable;
+import static com.android.car.internal.common.CommonConstants.USER_LIFECYCLE_EVENT_TYPE_CREATED;
import static com.android.car.internal.common.CommonConstants.USER_LIFECYCLE_EVENT_TYPE_STARTING;
import static com.android.car.internal.common.CommonConstants.USER_LIFECYCLE_EVENT_TYPE_STOPPED;
import static com.android.car.internal.common.CommonConstants.USER_LIFECYCLE_EVENT_TYPE_STOPPING;
@@ -197,7 +198,7 @@
boolean user0IsCurrent = lastSwitchedUser == USER_SYSTEM;
// If user0Lifecycle is 0, then no life-cycle event received yet.
if (user0Lifecycle != 0) {
- sendAllLifecyleToUser(USER_SYSTEM, user0Lifecycle,
+ sendAllLifecycleToUser(USER_SYSTEM, user0Lifecycle,
user0IsCurrent);
}
lastUserLifecycle.delete(USER_SYSTEM);
@@ -207,7 +208,7 @@
int currentUserLifecycle = lastUserLifecycle.get(lastSwitchedUser);
// If currentUserLifecycle is 0, then no life-cycle event received yet.
if (currentUserLifecycle != 0) {
- sendAllLifecyleToUser(lastSwitchedUser, currentUserLifecycle,
+ sendAllLifecycleToUser(lastSwitchedUser, currentUserLifecycle,
/* isCurrentUser= */ true);
}
}
@@ -218,15 +219,26 @@
for (int i = 0; i < lastUserLifecycle.size(); i++) {
int userId = lastUserLifecycle.keyAt(i);
int lifecycle = lastUserLifecycle.valueAt(i);
- sendAllLifecyleToUser(userId, lifecycle, /* isCurrentUser= */ false);
+ sendAllLifecycleToUser(userId, lifecycle, /* isCurrentUser= */ false);
}
}
- private void sendAllLifecyleToUser(@UserIdInt int userId, int lifecycle,
+ private void sendAllLifecycleToUser(@UserIdInt int userId, int lifecycle,
boolean isCurrentUser) {
if (DBG) {
- Slogf.d(TAG, "sendAllLifecyleToUser, user:" + userId + " lifecycle:" + lifecycle);
+ Slogf.d(TAG, "sendAllLifecycleToUser, user:" + userId + " lifecycle:" + lifecycle);
}
+
+ // User created is unrelated to the user switching/unlocking flow.
+ // Return early here to prevent it from going into the following logic
+ // that makes assumptions about the sequence of lifecycle event types
+ // following numerical order.
+ if (lifecycle == USER_LIFECYCLE_EVENT_TYPE_CREATED) {
+ sendUserLifecycleEventInternal(USER_LIFECYCLE_EVENT_TYPE_CREATED,
+ UserManagerHelper.USER_NULL, userId);
+ return;
+ }
+
if (lifecycle >= USER_LIFECYCLE_EVENT_TYPE_STARTING) {
sendUserLifecycleEventInternal(USER_LIFECYCLE_EVENT_TYPE_STARTING,
UserManagerHelper.USER_NULL, userId);