Merge "[BiometricsV2] fix enrolling rotate failed" into udc-dev

This commit is contained in:
Treehugger Robot
2023-04-18 04:56:12 +00:00
committed by Android (Google) Code Review
4 changed files with 58 additions and 8 deletions

View File

@@ -219,7 +219,13 @@ public class FingerprintEnrollEnrollingSfpsFragment extends Fragment {
super.onStart();
startEnrollment();
updateProgress(false /* animate */, mProgressViewModel.getProgressLiveData().getValue());
updateTitleAndDescription();
final EnrollmentStatusMessage msg = mProgressViewModel.getHelpMessageLiveData().getValue();
if (msg != null) {
onEnrollmentHelp(msg);
} else {
clearError();
updateTitleAndDescription();
}
}
@Override
@@ -373,7 +379,7 @@ public class FingerprintEnrollEnrollingSfpsFragment extends Fragment {
mView.setHeaderText(error);
mView.getHeaderTextView().setContentDescription(error);
new GlifLayoutHelper(getActivity(), mView).setDescriptionText("");
if (!mHelpAnimation.isRunning()) {
if (isResumed() && !mHelpAnimation.isRunning()) {
mHelpAnimation.start();
}
applySfpsErrorDynamicColors(true);

View File

@@ -105,7 +105,7 @@ public class FingerprintEnrollEnrollingUdfpsFragment extends Fragment {
};
private final Observer<EnrollmentStatusMessage> mHelpMessageObserver = helpMessage -> {
if (helpMessage != null) {
onEnrollmentHelp(helpMessage.getStr());
onEnrollmentHelp(helpMessage);
}
};
private final Observer<EnrollmentStatusMessage> mErrorMessageObserver = errorMessage -> {
@@ -198,7 +198,12 @@ public class FingerprintEnrollEnrollingUdfpsFragment extends Fragment {
super.onStart();
startEnrollment();
updateProgress(false /* animate */, mProgressViewModel.getProgressLiveData().getValue());
updateTitleAndDescription();
final EnrollmentStatusMessage msg = mProgressViewModel.getHelpMessageLiveData().getValue();
if (msg != null) {
onEnrollmentHelp(msg);
} else {
updateTitleAndDescription();
}
}
@Override
@@ -484,13 +489,13 @@ public class FingerprintEnrollEnrollingUdfpsFragment extends Fragment {
}
private void onEnrollmentHelp(CharSequence helpString) {
if (!TextUtils.isEmpty(helpString)) {
showError(helpString);
private void onEnrollmentHelp(@NonNull EnrollmentStatusMessage helpMessage) {
final CharSequence helpStr = helpMessage.getStr();
if (!TextUtils.isEmpty(helpStr)) {
showError(helpStr);
mUdfpsEnrollView.onEnrollmentHelp();
}
}
private void onEnrollmentError(@NonNull EnrollmentStatusMessage errorMessage) {
removeEnrollmentObservers();

View File

@@ -77,6 +77,7 @@ public class FingerprintEnrollProgressViewModel extends AndroidViewModel {
Log.d(TAG, "onEnrollmentProgress(" + remaining + "), steps: " + currentSteps
+ ", post progress as " + progress);
}
mHelpMessageLiveData.setValue(null);
mProgressLiveData.postValue(progress);
}

View File

@@ -224,6 +224,44 @@ public class FingerprintEnrollProgressViewModelTest {
assertThat(progress.getRemaining()).isEqualTo(0);
}
@Test
public void testProgressUpdateClearHelpMessage() {
// Start enrollment
mViewModel.setToken(new byte[] { 1, 2, 3 });
final boolean ret = mViewModel.startEnrollment(ENROLL_ENROLL);
assertThat(ret).isTrue();
assertThat(mCallbackWrapper.mValue).isNotNull();
final LiveData<EnrollmentProgress> progressLiveData = mViewModel.getProgressLiveData();
final LiveData<EnrollmentStatusMessage> helpMsgLiveData =
mViewModel.getHelpMessageLiveData();
// Update first progress
mCallbackWrapper.mValue.onEnrollmentProgress(25);
EnrollmentProgress progress = progressLiveData.getValue();
assertThat(progress).isNotNull();
assertThat(progress.getSteps()).isEqualTo(25);
assertThat(progress.getRemaining()).isEqualTo(25);
// Update help message
final int testHelpMsgId = 3;
final String testHelpString = "Test Help String";
mCallbackWrapper.mValue.onEnrollmentHelp(testHelpMsgId, testHelpString);
final EnrollmentStatusMessage helpMsg = helpMsgLiveData.getValue();
assertThat(helpMsg).isNotNull();
assertThat(helpMsg.getMsgId()).isEqualTo(testHelpMsgId);
assertThat(helpMsg.getStr().toString()).isEqualTo(testHelpString);
// Update second progress
mCallbackWrapper.mValue.onEnrollmentProgress(20);
progress = progressLiveData.getValue();
assertThat(progress).isNotNull();
assertThat(progress.getSteps()).isEqualTo(25);
assertThat(progress.getRemaining()).isEqualTo(20);
// Help message shall be set to null
assertThat(helpMsgLiveData.getValue()).isNull();
}
@Test
public void testProgressUpdateWithMessageDisplayController() {
// Enable MessageDisplayController and mock handler for it