diff options
-rw-r--r-- | src/com/android/internal/car/CarServiceHelperService.java | 5 | ||||
-rw-r--r-- | src/com/android/internal/car/CarServiceProxy.java | 32 |
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) { |