Merge "[Stability][Bugfix] Catch DeadObjectException in TCMS." am: 8c93a72063 am: 4259e1cf46

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1924058

Change-Id: Ic0ac838f21394dec34ad73d859a016fb4a1c35a6
This commit is contained in:
Treehugger Robot
2022-01-13 04:26:36 +00:00
committed by Automerger Merge Worker

View File

@@ -527,12 +527,13 @@ public final class TextClassificationManagerService extends ITextClassifierServi
callback.onFailure(); callback.onFailure();
return; return;
} }
textClassifierServiceConsumer.accept(serviceState.mService); consumeServiceNoExceptLocked(textClassifierServiceConsumer, serviceState.mService);
} else { } else {
serviceState.mPendingRequests.add( serviceState.mPendingRequests.add(
new PendingRequest( new PendingRequest(
methodName, methodName,
() -> textClassifierServiceConsumer.accept(serviceState.mService), () -> consumeServiceNoExceptLocked(
textClassifierServiceConsumer, serviceState.mService),
callback::onFailure, callback.asBinder(), callback::onFailure, callback.asBinder(),
this, this,
serviceState, serviceState,
@@ -541,6 +542,16 @@ public final class TextClassificationManagerService extends ITextClassifierServi
} }
} }
private static void consumeServiceNoExceptLocked(
@NonNull ThrowingConsumer<ITextClassifierService> textClassifierServiceConsumer,
@Nullable ITextClassifierService service) {
try {
textClassifierServiceConsumer.accept(service);
} catch (RuntimeException | Error e) {
Slog.e(LOG_TAG, "Exception when consume textClassifierService: " + e);
}
}
private static ITextClassifierCallback wrap(ITextClassifierCallback orig) { private static ITextClassifierCallback wrap(ITextClassifierCallback orig) {
return new CallbackWrapper(orig); return new CallbackWrapper(orig);
} }