diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/AutofillNameFixFlowBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill/AutofillNameFixFlowBridge.java --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/AutofillNameFixFlowBridge.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill/AutofillNameFixFlowBridge.java @@ -25,7 +25,7 @@ import org.chromium.ui.modaldialog.DialogDismissalCause; @JNINamespace("autofill") @NullMarked final class AutofillNameFixFlowBridge implements AutofillNameFixFlowPromptDelegate { - private final long mNativeCardNameFixFlowViewAndroid; + private long mNativeCardNameFixFlowViewAndroid; private final @Nullable Activity mActivity; private final String mTitle; private final String mInferredName; @@ -73,17 +73,22 @@ final class AutofillNameFixFlowBridge implements AutofillNameFixFlowPromptDelega @Override public void onPromptDismissed() { + if (mNativeCardNameFixFlowViewAndroid == 0) return; AutofillNameFixFlowBridgeJni.get().promptDismissed(mNativeCardNameFixFlowViewAndroid); + // Native side does `delete this`; invalidate to prevent any late IME / + // editor-action callback from dereferencing a freed object. + mNativeCardNameFixFlowViewAndroid = 0; } @Override public void onUserDismiss() { + if (mNativeCardNameFixFlowViewAndroid == 0) return; AutofillNameFixFlowBridgeJni.get().onUserDismiss(mNativeCardNameFixFlowViewAndroid); } @Override public void onUserAcceptCardholderName(String name) { + if (mNativeCardNameFixFlowViewAndroid == 0) return; AutofillNameFixFlowBridgeJni.get().onUserAccept(mNativeCardNameFixFlowViewAndroid, name); }