diff --git a/core/java/android/app/role/RoleControllerManager.java b/core/java/android/app/role/RoleControllerManager.java index 394a0d64b3e42..9186b3d5e15a3 100644 --- a/core/java/android/app/role/RoleControllerManager.java +++ b/core/java/android/app/role/RoleControllerManager.java @@ -275,6 +275,11 @@ public class RoleControllerManager { Log.e(LOG_TAG, "Error calling grantDefaultRoles()", e); } } + + @Override + protected void onFailed() { + mRemoteCallback.sendResult(null); + } } /** diff --git a/core/java/com/android/internal/infra/AbstractMultiplePendingRequestsRemoteService.java b/core/java/com/android/internal/infra/AbstractMultiplePendingRequestsRemoteService.java index c3aa847acae17..f1398bf67283a 100644 --- a/core/java/com/android/internal/infra/AbstractMultiplePendingRequestsRemoteService.java +++ b/core/java/com/android/internal/infra/AbstractMultiplePendingRequestsRemoteService.java @@ -74,6 +74,20 @@ public abstract class AbstractMultiplePendingRequestsRemoteService request = mPendingRequests.get(i); + request.onFailed(); + request.finish(); + } + mPendingRequests = null; + } + } + @Override // from AbstractRemoteService public void dump(@NonNull String prefix, @NonNull PrintWriter pw) { super.dump(prefix, pw); diff --git a/core/java/com/android/internal/infra/AbstractRemoteService.java b/core/java/com/android/internal/infra/AbstractRemoteService.java index 65a63a05f6667..64f885770336d 100644 --- a/core/java/com/android/internal/infra/AbstractRemoteService.java +++ b/core/java/com/android/internal/infra/AbstractRemoteService.java @@ -405,6 +405,11 @@ public abstract class AbstractRemoteService pendingRequest); + /** + * Called if {@link Context#bindServiceAsUser} returns {@code false}. + */ + abstract void handleBindFailure(); + private boolean handleIsBound() { return mService != null; } @@ -426,6 +431,8 @@ public abstract class AbstractRemoteService