summaryrefslogtreecommitdiff
path: root/services/contentcapture
diff options
context:
space:
mode:
authorSergey Volnov <volnov@google.com>2020-01-27 15:24:41 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2020-01-27 15:24:41 +0000
commited8ce564b39924c10c4fff6caf253f39f884c42f (patch)
tree643cc44778c5d2f5ed815893e719f02bf9ac8271 /services/contentcapture
parent85ca06ebbfa1788d15c6c3fbf9503748dc5664b3 (diff)
parentd7e984444503b5d1bcaed9fb9c914651f80616f4 (diff)
Merge "Use cancellation signals for timeouts and cancel-by-CCService operations"
Diffstat (limited to 'services/contentcapture')
-rw-r--r--services/contentcapture/java/com/android/server/contentcapture/ContentCaptureManagerService.java24
1 files changed, 13 insertions, 11 deletions
diff --git a/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureManagerService.java b/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureManagerService.java
index 9245a1da43b2..efa127be706b 100644
--- a/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureManagerService.java
+++ b/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureManagerService.java
@@ -646,6 +646,7 @@ public final class ContentCaptureManagerService extends
@Override
public void shareData(@NonNull DataShareRequest request,
+ @NonNull ICancellationSignal clientCancellationSignal,
@NonNull IDataShareWriteAdapter clientAdapter) {
Preconditions.checkNotNull(request);
Preconditions.checkNotNull(clientAdapter);
@@ -667,7 +668,8 @@ public final class ContentCaptureManagerService extends
}
service.onDataSharedLocked(request,
- new DataShareCallbackDelegate(request, clientAdapter));
+ new DataShareCallbackDelegate(request, clientCancellationSignal,
+ clientAdapter));
}
}
@@ -920,17 +922,20 @@ public final class ContentCaptureManagerService extends
private class DataShareCallbackDelegate extends IDataShareCallback.Stub {
@NonNull private final DataShareRequest mDataShareRequest;
+ @NonNull private final ICancellationSignal mClientCancellationSignal;
@NonNull private final IDataShareWriteAdapter mClientAdapter;
DataShareCallbackDelegate(@NonNull DataShareRequest dataShareRequest,
+ @NonNull ICancellationSignal clientCancellationSignal,
@NonNull IDataShareWriteAdapter clientAdapter) {
mDataShareRequest = dataShareRequest;
+ mClientCancellationSignal = clientCancellationSignal;
mClientAdapter = clientAdapter;
}
@Override
- public void accept(IDataShareReadAdapter serviceAdapter)
- throws RemoteException {
+ public void accept(ICancellationSignal serviceCancellationSignal,
+ IDataShareReadAdapter serviceAdapter) throws RemoteException {
Slog.i(mTag, "Data share request accepted by Content Capture service");
Pair<ParcelFileDescriptor, ParcelFileDescriptor> clientPipe = createPipe();
@@ -962,15 +967,12 @@ public final class ContentCaptureManagerService extends
mClientAdapter.write(source_in);
serviceAdapter.start(sink_out, cancellationSignalTransport);
- // TODO(b/148264965): use cancellation signals for timeouts and cancelling
CancellationSignal cancellationSignal =
CancellationSignal.fromTransport(cancellationSignalTransport);
cancellationSignal.setOnCancelListener(() -> {
try {
- // TODO(b/148264965): this should propagate with the cancellation signal to the
- // client
- mClientAdapter.error(DataShareWriteAdapter.ERROR_UNKNOWN);
+ mClientCancellationSignal.cancel();
} catch (RemoteException e) {
Slog.e(mTag, "Failed to propagate cancel operation to the caller", e);
}
@@ -1029,14 +1031,14 @@ public final class ContentCaptureManagerService extends
if (!finishedSuccessfully) {
try {
- mClientAdapter.error(DataShareWriteAdapter.ERROR_UNKNOWN);
+ mClientCancellationSignal.cancel();
} catch (RemoteException e) {
- Slog.e(mTag, "Failed to call error() to client", e);
+ Slog.e(mTag, "Failed to cancel() the client operation", e);
}
try {
- serviceAdapter.error(DataShareWriteAdapter.ERROR_UNKNOWN);
+ serviceCancellationSignal.cancel();
} catch (RemoteException e) {
- Slog.e(mTag, "Failed to call error() to service", e);
+ Slog.e(mTag, "Failed to cancel() the service operation", e);
}
}
}