From 99f92e4a0a7ce3405d2f7bb22bafcd73eea18561 Mon Sep 17 00:00:00 2001 From: Jay Thomas Sullivan Date: Tue, 21 Nov 2023 17:58:02 -0800 Subject: [Role Logic Move] Fix isApplicationVisibleForRole In a previous CL, some code was left out, causing an issue. (Only results in an issue when the feature flag is enabled.) Fix: 309139048 Test: atest CtsRoleTestCases (with flag enabled) Change-Id: I8c548ecf20820f39eb467fe92ddc788f4648301c --- framework-s/java/android/app/role/RoleManager.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'framework-s/java') diff --git a/framework-s/java/android/app/role/RoleManager.java b/framework-s/java/android/app/role/RoleManager.java index 231c72c2c..aeb229cae 100644 --- a/framework-s/java/android/app/role/RoleManager.java +++ b/framework-s/java/android/app/role/RoleManager.java @@ -1023,11 +1023,20 @@ public final class RoleManager { @NonNull @CallbackExecutor Executor executor, @NonNull Consumer callback) { if (SdkLevel.isAtLeastV() && Flags.roleControllerInSystemServer()) { int userId = getContextUserIfAppropriate().getIdentifier(); + boolean visible; try { - mService.isApplicationVisibleForRoleAsUser(roleName, packageName, userId); + visible = mService.isApplicationVisibleForRoleAsUser(roleName, packageName, userId); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } + executor.execute(() -> { + final long token = Binder.clearCallingIdentity(); + try { + callback.accept(visible); + } finally { + Binder.restoreCallingIdentity(token); + } + }); } else { getRoleControllerManager().isApplicationVisibleForRole(roleName, packageName, executor, callback); -- cgit v1.2.3-59-g8ed1b