Merge "[Autofill Crash]: Fix NPE in AutofillManager." into tm-dev am: 727ee17577

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

Change-Id: I720f02e679867e8fdbc3c51e45eb87cdfc9d5840
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Simranjit Kohli
2022-04-21 14:32:33 +00:00
committed by Automerger Merge Worker
2 changed files with 9 additions and 1 deletions

View File

@@ -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

View File

@@ -1958,7 +1958,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));