From 19f13fe313e1a0c011826ef36c5e7ad889934e8e Mon Sep 17 00:00:00 2001 From: Yasin Kilicdere Date: Mon, 26 Jun 2023 18:46:48 +0100 Subject: [PATCH] Dismiss UserSwitchingDialog on UiHandler thread. This CL makes sure the dismissal is always done on the UI thread to prevent CalledFromWrongThreadException. Bug: 284085833 Test: atest UserControllerTest Change-Id: I7c0b35be2a171648c20b50cee6dea78ba7a2cf5b --- services/core/java/com/android/server/am/UserController.java | 2 +- .../src/com/android/server/am/UserControllerTest.java | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java index 76a994ec63e90..99c2f8a5cc566 100644 --- a/services/core/java/com/android/server/am/UserController.java +++ b/services/core/java/com/android/server/am/UserController.java @@ -1972,7 +1972,7 @@ class UserController implements Handler.Callback { } private void dismissUserSwitchDialog(Runnable onDismissed) { - mInjector.dismissUserSwitchingDialog(onDismissed); + mUiHandler.post(() -> mInjector.dismissUserSwitchingDialog(onDismissed)); } private void showUserSwitchDialog(Pair fromToUserPair) { diff --git a/services/tests/servicestests/src/com/android/server/am/UserControllerTest.java b/services/tests/servicestests/src/com/android/server/am/UserControllerTest.java index dccacb4d301ac..24a628eb43310 100644 --- a/services/tests/servicestests/src/com/android/server/am/UserControllerTest.java +++ b/services/tests/servicestests/src/com/android/server/am/UserControllerTest.java @@ -1342,6 +1342,10 @@ public class UserControllerTest { Message copy = new Message(); copy.copyFrom(msg); mMessages.add(copy); + if (msg.getCallback() != null) { + msg.getCallback().run(); + msg.setCallback(null); + } return super.sendMessageAtTime(msg, uptimeMillis); } }