summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/service/contentcapture/ContentCaptureService.java11
-rw-r--r--core/java/android/service/contentcapture/IDataShareReadAdapter.aidl1
-rw-r--r--core/java/android/view/contentcapture/ContentCaptureManager.java9
-rw-r--r--core/java/android/view/contentcapture/IDataShareWriteAdapter.aidl1
4 files changed, 14 insertions, 8 deletions
diff --git a/core/java/android/service/contentcapture/ContentCaptureService.java b/core/java/android/service/contentcapture/ContentCaptureService.java
index 46cb65babc1c..b1f147be6735 100644
--- a/core/java/android/service/contentcapture/ContentCaptureService.java
+++ b/core/java/android/service/contentcapture/ContentCaptureService.java
@@ -677,10 +677,6 @@ public abstract class ContentCaptureService extends Service {
throws RemoteException {
synchronized (mLock) {
executeAdapterMethodLocked(adapter -> adapter.onStart(fd), "onStart");
-
- // Client app and Service successfully connected, so this object would be kept alive
- // until the session has finished.
- clearHardReferences();
}
}
@@ -693,6 +689,13 @@ public abstract class ContentCaptureService extends Service {
}
}
+ @Override
+ public void finish() throws RemoteException {
+ synchronized (mLock) {
+ clearHardReferences();
+ }
+ }
+
private void executeAdapterMethodLocked(Consumer<DataShareReadAdapter> adapterFn,
String methodName) {
LocalDataShareAdapterResourceManager resourceManager = mResourceManagerReference.get();
diff --git a/core/java/android/service/contentcapture/IDataShareReadAdapter.aidl b/core/java/android/service/contentcapture/IDataShareReadAdapter.aidl
index 91c8ff1fc662..4d441fe2b856 100644
--- a/core/java/android/service/contentcapture/IDataShareReadAdapter.aidl
+++ b/core/java/android/service/contentcapture/IDataShareReadAdapter.aidl
@@ -22,4 +22,5 @@ import android.os.ICancellationSignal;
oneway interface IDataShareReadAdapter {
void start(in ParcelFileDescriptor fd);
void error(int errorCode);
+ void finish();
}
diff --git a/core/java/android/view/contentcapture/ContentCaptureManager.java b/core/java/android/view/contentcapture/ContentCaptureManager.java
index d021fc917c88..756ff78e5906 100644
--- a/core/java/android/view/contentcapture/ContentCaptureManager.java
+++ b/core/java/android/view/contentcapture/ContentCaptureManager.java
@@ -761,10 +761,6 @@ public final class ContentCaptureManager {
public void write(ParcelFileDescriptor destination)
throws RemoteException {
executeAdapterMethodLocked(adapter -> adapter.onWrite(destination), "onWrite");
-
- // Client app and Service successfully connected, so this object would be kept alive
- // until the session has finished.
- clearHardReferences();
}
@Override
@@ -779,6 +775,11 @@ public final class ContentCaptureManager {
clearHardReferences();
}
+ @Override
+ public void finish() throws RemoteException {
+ clearHardReferences();
+ }
+
private void executeAdapterMethodLocked(Consumer<DataShareWriteAdapter> adapterFn,
String methodName) {
LocalDataShareAdapterResourceManager resourceManager = mResourceManagerReference.get();
diff --git a/core/java/android/view/contentcapture/IDataShareWriteAdapter.aidl b/core/java/android/view/contentcapture/IDataShareWriteAdapter.aidl
index 80924ef78f85..015b3bc2a00b 100644
--- a/core/java/android/view/contentcapture/IDataShareWriteAdapter.aidl
+++ b/core/java/android/view/contentcapture/IDataShareWriteAdapter.aidl
@@ -25,4 +25,5 @@ oneway interface IDataShareWriteAdapter {
void write(in ParcelFileDescriptor destination);
void error(int errorCode);
void rejected();
+ void finish();
}