From 58d3f87f33485d787acef8811b43f8799be7fac6 Mon Sep 17 00:00:00 2001 From: Stephen Trier Date: Mon, 19 Sep 2022 10:26:22 -0700 Subject: Expose pending request to subclasses and ensure clean up Pending requests were not exposed to subclasses interested in operating on them and also the pending requests were not cleaned up after being handled leaving them in memory and potentially preventing us from unbinding from the remote service upon timeout. Test: Perform the following steps on a Meta Quest 2: 1. Launch 2D app in shell 2. Launch 2D app in shell from non activity context 3. Launch 2D app in shell and request permission in 2D 4. Request permission from 3D app in 2D overlay 5. Request permission from 3D app in 2D (via VrUi) 6. Subclasses can access pending jobs which are cleaned upon completion Change-Id: I29e7146619913dd3457fa2a228cece2d245ff02d --- .../infra/AbstractMultiplePendingRequestsRemoteService.java | 2 +- core/java/com/android/internal/infra/AbstractRemoteService.java | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/core/java/com/android/internal/infra/AbstractMultiplePendingRequestsRemoteService.java b/core/java/com/android/internal/infra/AbstractMultiplePendingRequestsRemoteService.java index 6c01780dac76..2a9025d35339 100644 --- a/core/java/com/android/internal/infra/AbstractMultiplePendingRequestsRemoteService.java +++ b/core/java/com/android/internal/infra/AbstractMultiplePendingRequestsRemoteService.java @@ -61,7 +61,7 @@ public abstract class AbstractMultiplePendingRequestsRemoteService> mUnfinishedRequests = new ArrayList<>(); + protected final ArrayList> mUnfinishedRequests = new ArrayList<>(); /** * Callback called when the service dies. @@ -622,6 +622,11 @@ public abstract class AbstractRemoteService