Merge "Hold a strong reference to the callback in TextClassifierService" into qt-qpr1-dev

am: 8247b5f5a6

Change-Id: I8591d0ac8025589679e9462e82c7bbcf4ea8ea63
This commit is contained in:
Tony Mak
2019-08-22 14:43:03 -07:00
committed by android-build-merger
2 changed files with 5 additions and 14 deletions

View File

@@ -51,7 +51,6 @@ import android.view.textclassifier.TextSelection;
import com.android.internal.util.Preconditions; import com.android.internal.util.Preconditions;
import java.lang.ref.WeakReference;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
@@ -431,23 +430,18 @@ public abstract class TextClassifierService extends Service {
* Forwards the callback result to a wrapped binder callback. * Forwards the callback result to a wrapped binder callback.
*/ */
private static final class ProxyCallback<T extends Parcelable> implements Callback<T> { private static final class ProxyCallback<T extends Parcelable> implements Callback<T> {
private WeakReference<ITextClassifierCallback> mTextClassifierCallback; private ITextClassifierCallback mTextClassifierCallback;
private ProxyCallback(ITextClassifierCallback textClassifierCallback) { private ProxyCallback(ITextClassifierCallback textClassifierCallback) {
mTextClassifierCallback = mTextClassifierCallback = Preconditions.checkNotNull(textClassifierCallback);
new WeakReference<>(Preconditions.checkNotNull(textClassifierCallback));
} }
@Override @Override
public void onSuccess(T result) { public void onSuccess(T result) {
ITextClassifierCallback callback = mTextClassifierCallback.get();
if (callback == null) {
return;
}
try { try {
Bundle bundle = new Bundle(1); Bundle bundle = new Bundle(1);
bundle.putParcelable(KEY_RESULT, result); bundle.putParcelable(KEY_RESULT, result);
callback.onSuccess(bundle); mTextClassifierCallback.onSuccess(bundle);
} catch (RemoteException e) { } catch (RemoteException e) {
Slog.d(LOG_TAG, "Error calling callback"); Slog.d(LOG_TAG, "Error calling callback");
} }
@@ -455,12 +449,8 @@ public abstract class TextClassifierService extends Service {
@Override @Override
public void onFailure(CharSequence error) { public void onFailure(CharSequence error) {
ITextClassifierCallback callback = mTextClassifierCallback.get();
if (callback == null) {
return;
}
try { try {
callback.onFailure(); mTextClassifierCallback.onFailure();
} catch (RemoteException e) { } catch (RemoteException e) {
Slog.d(LOG_TAG, "Error calling callback"); Slog.d(LOG_TAG, "Error calling callback");
} }

View File

@@ -999,6 +999,7 @@ public final class SelectionActionModeHelper {
} }
private void onTimeOut() { private void onTimeOut() {
Log.d(LOG_TAG, "Timeout in TextClassificationAsyncTask");
if (getStatus() == Status.RUNNING) { if (getStatus() == Status.RUNNING) {
onPostExecute(mTimeOutResultSupplier.get()); onPostExecute(mTimeOutResultSupplier.get());
} }