diff options
Diffstat (limited to 'framework-s/java/android/app/role/RoleControllerManager.java')
-rw-r--r-- | framework-s/java/android/app/role/RoleControllerManager.java | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/framework-s/java/android/app/role/RoleControllerManager.java b/framework-s/java/android/app/role/RoleControllerManager.java index 3b990b315..57da2ccd0 100644 --- a/framework-s/java/android/app/role/RoleControllerManager.java +++ b/framework-s/java/android/app/role/RoleControllerManager.java @@ -37,6 +37,7 @@ import com.android.internal.annotations.GuardedBy; import com.android.internal.infra.AndroidFuture; import com.android.internal.infra.ServiceConnector; +import java.util.List; import java.util.concurrent.Executor; import java.util.concurrent.TimeUnit; import java.util.function.Consumer; @@ -48,6 +49,12 @@ import java.util.function.Consumer; */ public class RoleControllerManager { + /** + * Bundle key for getting legacy fallback disabled roles + */ + public static final String KEY_LEGACY_FALLBACK_DISABLED_ROLES = + "LEGACY_FALLBACK_DISABLED_ROLES"; + private static final String LOG_TAG = RoleControllerManager.class.getSimpleName(); private static final long REQUEST_TIMEOUT_MILLIS = 15 * 1000; @@ -187,8 +194,7 @@ public class RoleControllerManager { @RoleManager.ManageHoldersFlags int flags, @NonNull RemoteCallback callback) { AndroidFuture<Bundle> operation = mRemoteService.postAsync(service -> { AndroidFuture<Bundle> future = new AndroidFuture<>(); - service.onClearRoleHolders(roleName, flags, - new RemoteCallback(future::complete)); + service.onClearRoleHolders(roleName, flags, new RemoteCallback(future::complete)); return future; }); propagateCallback(operation, "onClearRoleHolders", callback); @@ -227,6 +233,35 @@ public class RoleControllerManager { propagateCallback(operation, "isRoleVisible", executor, callback); } + /** + * @see RoleControllerService#onGrantDefaultRoles() + * + * @hide + */ + public void getLegacyFallbackDisabledRoles(@NonNull @CallbackExecutor Executor executor, + @NonNull Consumer<List<String>> callback) { + mRemoteService.postAsync(service -> { + AndroidFuture<Bundle> future = new AndroidFuture<>(); + service.getLegacyFallbackDisabledRoles(new RemoteCallback(future::complete)); + return future; + }).orTimeout(REQUEST_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS) + .whenComplete((res, err) -> executor.execute(() -> { + final long token = Binder.clearCallingIdentity(); + try { + if (err != null) { + Log.e(LOG_TAG, "Error calling getLegacyFallbackDisabledRoles()", + err); + callback.accept(null); + } else { + callback.accept(res.getStringArrayList( + KEY_LEGACY_FALLBACK_DISABLED_ROLES)); + } + } finally { + Binder.restoreCallingIdentity(token); + } + })); + } + private void propagateCallback(AndroidFuture<Bundle> operation, String opName, @CallbackExecutor @NonNull Executor executor, Consumer<Boolean> destination) { |