Merge changes Ib3d70d21,I005c7665,I41bbcff0 am: e9565c937b

Change-Id: Ic1ab941fa0bc95ebaadc8dd8484d872733e9fb34
This commit is contained in:
Automerger Merge Worker
2020-02-29 07:00:58 +00:00

View File

@@ -1710,6 +1710,12 @@ final class ActivityManagerShellCommand extends ShellCommand {
} }
private boolean switchUserAndWaitForComplete(int userId) throws RemoteException { private boolean switchUserAndWaitForComplete(int userId) throws RemoteException {
UserInfo currentUser = mInterface.getCurrentUser();
if (currentUser != null && userId == currentUser.id) {
// Already switched to the correct user, exit early.
return true;
}
// Register switch observer. // Register switch observer.
final CountDownLatch switchLatch = new CountDownLatch(1); final CountDownLatch switchLatch = new CountDownLatch(1);
mInterface.registerUserSwitchObserver( mInterface.registerUserSwitchObserver(
@@ -1724,13 +1730,18 @@ final class ActivityManagerShellCommand extends ShellCommand {
// Switch. // Switch.
boolean switched = mInterface.switchUser(userId); boolean switched = mInterface.switchUser(userId);
if (!switched) {
// Switching failed, don't wait for the user switch observer.
return false;
}
// Wait. // Wait.
try { try {
switchLatch.await(USER_OPERATION_TIMEOUT_MS, TimeUnit.MILLISECONDS); switched = switchLatch.await(USER_OPERATION_TIMEOUT_MS, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) { } catch (InterruptedException e) {
getErrPrintWriter().println("Thread interrupted unexpectedly."); getErrPrintWriter().println("Error: Thread interrupted unexpectedly.");
} }
return switched; return switched;
} }
@@ -1762,7 +1773,7 @@ final class ActivityManagerShellCommand extends ShellCommand {
if (switched) { if (switched) {
return 0; return 0;
} else { } else {
pw.printf("Failed to switch to user %d\n", userId); pw.printf("Error: Failed to switch to user %d\n", userId);
return 1; return 1;
} }
} }