Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1b57e4cc authored by Simranjit Kohli's avatar Simranjit Kohli
Browse files

[Autofill Crash]: Fix NPE in AutofillManager.

Bug: 227192989
Test: atest android.autofillservice.cts.dropdown.AuthenticationTest#testFillResponseAuthServiceHasNoDataWithEmptyResponse
Change-Id: If56d690882e8d4ad0dba1534f127478089c4d04f
parent a6713ec9
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import android.annotation.Nullable;
import android.annotation.SuppressLint;
import android.annotation.TestApi;
import android.app.Activity;
import android.content.Intent;
import android.content.IntentSender;
import android.content.pm.ParceledListSlice;
import android.os.Bundle;
@@ -306,6 +307,13 @@ public final class FillResponse implements Parcelable {
         * with the fully populated {@link FillResponse response} (or {@code null} if the screen
         * cannot be autofilled).
         *
         * <p> <b>IMPORTANT</b>: Extras must be non-null on the intent being set for Android 12
         * otherwise it will cause a crash. Do not use {@link Activity#setResult(int)}, instead use
         * {@link Activity#setResult(int, Intent) with non-null extras. Consider setting {
         * @link android.view.autofill.AutofillManager#EXTRA_AUTHENTICATION_RESULT} to null or use
         * {@link Bundle#EMPTY} with {@link Intent#putExtras(Bundle)} on the intent when
         * finishing activity to avoid crash). </p>
         *
         * <p>For example, if you provided an empty {@link FillResponse response} because the
         * user's data was locked and marked that the response needs an authentication then
         * in the response returned if authentication succeeds you need to provide all
+1 −1
Original line number Diff line number Diff line
@@ -1911,7 +1911,7 @@ public final class AutofillManager {
            if (newClientState != null) {
                responseData.putBundle(EXTRA_CLIENT_STATE, newClientState);
            }
            if (data.getExtras().containsKey(EXTRA_AUTHENTICATION_RESULT_EPHEMERAL_DATASET)) {
            if (data.hasExtra(EXTRA_AUTHENTICATION_RESULT_EPHEMERAL_DATASET)) {
                responseData.putBoolean(EXTRA_AUTHENTICATION_RESULT_EPHEMERAL_DATASET,
                        data.getBooleanExtra(EXTRA_AUTHENTICATION_RESULT_EPHEMERAL_DATASET,
                                false));