diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java b/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java index 95a534cdd42..03bba42f5be 100644 --- a/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java +++ b/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java @@ -24,6 +24,7 @@ import androidx.annotation.Nullable; import android.view.View; import android.widget.Button; +import com.android.internal.annotations.VisibleForTesting; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.Utils; @@ -35,7 +36,8 @@ import com.android.settings.password.ChooseLockSettingsHelper; */ public class FingerprintEnrollFindSensor extends FingerprintEnrollBase { - private static final int CONFIRM_REQUEST = 1; + @VisibleForTesting + static final int CONFIRM_REQUEST = 1; private static final int ENROLLING = 2; public static final String EXTRA_KEY_LAUNCHED_CONFIRM = "launched_confirm_lock"; @@ -170,7 +172,7 @@ public class FingerprintEnrollFindSensor extends FingerprintEnrollBase { @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == CONFIRM_REQUEST) { - if (resultCode == RESULT_OK) { + if (resultCode == RESULT_OK && data != null) { mToken = data.getByteArrayExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN); overridePendingTransition(R.anim.suw_slide_next_in, R.anim.suw_slide_next_out); getIntent().putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, mToken); diff --git a/tests/robotests/src/com/android/settings/fingerprint/FingerprintEnrollFindSensorTest.java b/tests/robotests/src/com/android/settings/fingerprint/FingerprintEnrollFindSensorTest.java index e83e93d9bc9..1fe09310e76 100644 --- a/tests/robotests/src/com/android/settings/fingerprint/FingerprintEnrollFindSensorTest.java +++ b/tests/robotests/src/com/android/settings/fingerprint/FingerprintEnrollFindSensorTest.java @@ -22,6 +22,7 @@ import static org.mockito.Matchers.anyInt; import static org.mockito.Mockito.verify; import static org.robolectric.RuntimeEnvironment.application; +import android.app.Activity; import android.content.ComponentName; import android.content.Intent; import android.hardware.fingerprint.FingerprintManager; @@ -151,4 +152,12 @@ public class FingerprintEnrollFindSensorTest { return callbackCaptor.getValue(); } + + @Test + public void onActivityResult_withNullIntentShouldNotCrash() { + // this should not crash + mActivity.onActivityResult(FingerprintEnrollFindSensor.CONFIRM_REQUEST, Activity.RESULT_OK, + null); + assertThat(Shadows.shadowOf(mActivity).getResultCode()).isEqualTo(Activity.RESULT_CANCELED); + } }