Separate skip and clear button in pattern screen

So that the action performed is always the same as what the button
label says.

Test: m -j RunSettingsRoboTests
Bug: 72197171
Change-Id: Ia2a02b630a86874d002e462e41fdf676c2d27203
This commit is contained in:
Maurice Lam
2018-03-21 14:06:07 -07:00
parent f663d78436
commit e13e319e0c
3 changed files with 63 additions and 27 deletions

View File

@@ -29,6 +29,8 @@ import android.view.View;
import android.widget.Button;
import com.android.internal.widget.LockPatternView;
import com.android.internal.widget.LockPatternView.Cell;
import com.android.internal.widget.LockPatternView.DisplayMode;
import com.android.settings.R;
import com.android.settings.SetupRedactionInterstitial;
import com.android.settings.password.ChooseLockPattern.ChooseLockPatternFragment;
@@ -47,6 +49,9 @@ import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowAlertDialog;
import org.robolectric.shadows.ShadowPackageManager;
import org.robolectric.util.ReflectionHelpers;
import org.robolectric.util.ReflectionHelpers.ClassParameter;
import java.util.Arrays;
@RunWith(SettingsRobolectricTestRunner.class)
@Config(shadows = {
@@ -120,15 +125,27 @@ public class SetupChooseLockPatternTest {
@Test
public void skipButton_shouldBeVisible_duringNonFingerprintFlow() {
Button button = mActivity.findViewById(R.id.footerLeftButton);
assertThat(button).isNotNull();
assertThat(button.getVisibility()).isEqualTo(View.VISIBLE);
Button skipButton = mActivity.findViewById(R.id.skip_button);
assertThat(skipButton).isNotNull();
assertThat(skipButton.getVisibility()).isEqualTo(View.VISIBLE);
button.performClick();
skipButton.performClick();
AlertDialog chooserDialog = ShadowAlertDialog.getLatestAlertDialog();
assertThat(chooserDialog).isNotNull();
}
@Test
public void clearButton_shouldBeVisible_duringRetryStage() {
enterPattern();
Button clearButton = mActivity.findViewById(R.id.footerLeftButton);
assertThat(clearButton.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(clearButton.isEnabled()).isTrue();
clearButton.performClick();
assertThat(findFragment(mActivity).mChosenPattern).isNull();
}
@Test
public void skipButton_shouldNotBeVisible_duringFingerprintFlow() {
mActivity = Robolectric.buildActivity(
@@ -140,13 +157,32 @@ public class SetupChooseLockPatternTest {
.setForFingerprint(true)
.build()))
.setup().get();
Button button = mActivity.findViewById(R.id.footerLeftButton);
assertThat(button).isNotNull();
assertThat(button.getVisibility()).isEqualTo(View.GONE);
Button skipButton = mActivity.findViewById(R.id.skip_button);
assertThat(skipButton).isNotNull();
assertThat(skipButton.getVisibility()).isEqualTo(View.GONE);
}
private ChooseLockPatternFragment findFragment(Activity activity) {
return (ChooseLockPatternFragment)
activity.getFragmentManager().findFragmentById(R.id.main_content);
}
private void enterPattern() {
LockPatternView lockPatternView = mActivity.findViewById(R.id.lockPattern);
lockPatternView.setPattern(
DisplayMode.Animate,
Arrays.asList(
createCell(0, 0),
createCell(0, 1),
createCell(1, 1),
createCell(1, 0)));
ReflectionHelpers.callInstanceMethod(lockPatternView, "notifyPatternDetected");
}
private Cell createCell(int row, int column) {
return ReflectionHelpers.callConstructor(
Cell.class,
ClassParameter.from(int.class, row),
ClassParameter.from(int.class, column));
}
}