summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/com/android/internal/car/CarServiceHelperService.java5
-rw-r--r--src/com/android/internal/car/CarServiceProxy.java32
2 files changed, 36 insertions, 1 deletions
diff --git a/src/com/android/internal/car/CarServiceHelperService.java b/src/com/android/internal/car/CarServiceHelperService.java
index 4331788..20e53b8 100644
--- a/src/com/android/internal/car/CarServiceHelperService.java
+++ b/src/com/android/internal/car/CarServiceHelperService.java
@@ -693,6 +693,11 @@ public class CarServiceHelperService extends SystemService
return null;
}
}
+
+ @Override
+ public void sendInitialUser(UserHandle user) {
+ mCarServiceProxy.saveInitialUser(user);
+ }
}
private class ICarWatchdogMonitorImpl extends ICarWatchdogMonitor.Stub {
diff --git a/src/com/android/internal/car/CarServiceProxy.java b/src/com/android/internal/car/CarServiceProxy.java
index 42c344b..9c1f06c 100644
--- a/src/com/android/internal/car/CarServiceProxy.java
+++ b/src/com/android/internal/car/CarServiceProxy.java
@@ -113,7 +113,8 @@ final class CarServiceProxy {
@GuardedBy("mLock")
private ICarSystemServerClient mCarService;
-
+ @GuardedBy("mLock")
+ private UserHandle mInitialUser;
private final CarServiceHelperService mCarServiceHelperService;
private final UserMetrics mUserMetrics = new UserMetrics();
@@ -136,9 +137,37 @@ final class CarServiceProxy {
runQueuedOperationLocked(PO_ON_FACTORY_RESET);
}
sendLifeCycleEvents();
+ sendInitialUser();
t.traceEnd();
}
+ private void sendInitialUser() {
+ UserHandle initialUser;
+ ICarSystemServerClient carService;
+ synchronized (mLock) {
+ initialUser = mInitialUser;
+ carService = mCarService;
+ }
+ if (initialUser != null && carService != null) {
+ try {
+ carService.setInitialUser(initialUser);
+ } catch (RemoteException e) {
+ Slog.w(TAG, "RemoteException from car service while calling setInitialUser.", e);
+ }
+ } else {
+ Slog.i(TAG, "Didn't send Initial User, User: " + initialUser + " , CarService: "
+ + carService);
+ }
+ }
+
+ void saveInitialUser(UserHandle user) {
+ synchronized (mLock) {
+ if (user != null || user.getIdentifier() != UserHandle.USER_NULL) {
+ mInitialUser = user;
+ }
+ }
+ }
+
@GuardedBy("mLock")
private void runQueuedOperationLocked(@PendingOperationId int operationId) {
PendingOperation pendingOperation = mPendingOperations.get(operationId);
@@ -453,6 +482,7 @@ final class CarServiceProxy {
writer.println("CarServiceProxy");
writer.increaseIndent();
writer.printf("mLastSwitchedUser=%s\n", mLastSwitchedUser);
+ writer.printf("mInitialUser=%s\n", mInitialUser);
writer.printf("mLastUserLifecycle:\n");
int user0Lifecycle = mLastUserLifecycle.get(UserHandle.USER_SYSTEM, 0);
if (user0Lifecycle != 0) {