Use fingerprint icons during setupwizard flow

Use fingerprint icon when lock screens are loaded on
fingerprint setup's behalf.

bug: 63809908
Test: Manually tested and verified. Also added robolectric tests
Change-Id: I773a1eec2466e7ab626cc3330f5ce987a21b048f
This commit is contained in:
Ajay Nadathur
2017-07-21 15:11:21 -07:00
parent e4c9b7162d
commit 7af28ecb66
4 changed files with 79 additions and 3 deletions

View File

@@ -356,6 +356,7 @@ public class ChooseLockPassword extends SettingsActivity {
fingerprintBackupMessage
.setText(R.string.setup_lock_settings_picker_fingerprint_message);
}
mLayout.setIcon(getActivity().getDrawable(R.drawable.ic_fingerprint_header));
}
mIsAlphaMode = DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC == mRequestedQuality

View File

@@ -400,6 +400,7 @@ public class ChooseLockPattern extends SettingsActivity {
private ChooseLockSettingsHelper mChooseLockSettingsHelper;
private SaveAndFinishWorker mSaveAndFinishWorker;
private int mUserId;
private boolean mForFingerprint;
private static final String KEY_UI_STAGE = "uiStage";
private static final String KEY_PATTERN_CHOICE = "chosenPattern";
@@ -429,6 +430,8 @@ public class ChooseLockPattern extends SettingsActivity {
false, 0, LockPatternUtils.stringToPattern(current), current, mUserId);
}
mHideDrawer = getActivity().getIntent().getBooleanExtra(EXTRA_HIDE_DRAWER, false);
mForFingerprint = intent.getBooleanExtra(
ChooseLockSettingsHelper.EXTRA_KEY_FOR_FINGERPRINT, false);
}
@Override
@@ -437,6 +440,9 @@ public class ChooseLockPattern extends SettingsActivity {
final GlifLayout layout = (GlifLayout) inflater.inflate(
R.layout.choose_lock_pattern, container, false);
layout.setHeaderText(getActivity().getTitle());
if (mForFingerprint) {
layout.setIcon(getActivity().getDrawable(R.drawable.ic_fingerprint_header));
}
return layout;
}

View File

@@ -22,20 +22,38 @@ import static org.robolectric.RuntimeEnvironment.application;
import android.app.admin.DevicePolicyManager;
import android.content.Intent;
import android.os.UserHandle;
import com.android.internal.widget.LockPatternUtils;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.R;
import com.android.settings.TestConfig;
import com.android.settings.password.ChooseLockPassword.ChooseLockPasswordFragment;
import com.android.settings.password.ChooseLockPassword.IntentBuilder;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.testutils.shadow.SettingsShadowResources;
import com.android.settings.testutils.shadow.ShadowDynamicIndexableContentMonitor;
import com.android.settings.testutils.shadow.ShadowEventLogWriter;
import com.android.settings.testutils.shadow.ShadowUtils;
import com.android.setupwizardlib.GlifLayout;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.Shadows;
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowDrawable;
@RunWith(SettingsRobolectricTestRunner.class)
@Config(
manifest = TestConfig.MANIFEST_PATH,
sdk = TestConfig.SDK_VERSION)
sdk = TestConfig.SDK_VERSION,
shadows = {
SettingsShadowResources.class,
SettingsShadowResources.SettingsShadowTheme.class,
ShadowDynamicIndexableContentMonitor.class,
ShadowEventLogWriter.class,
ShadowUtils.class
})
public class ChooseLockPasswordTest {
@Test
@@ -95,4 +113,30 @@ public class ChooseLockPasswordTest {
.named("EXTRA_USER_ID")
.isEqualTo(123);
}
@Test
public void assertThat_chooseLockIconChanged_WhenFingerprintExtraSet() {
ShadowDrawable drawable = setActivityAndGetIconDrawable(true);
assertThat(drawable.getCreatedFromResId()).isEqualTo(R.drawable.ic_fingerprint_header);
}
@Test
public void assertThat_chooseLockIconNotChanged_WhenFingerprintExtraSet() {
ShadowDrawable drawable = setActivityAndGetIconDrawable(false);
assertThat(drawable.getCreatedFromResId()).isNotEqualTo(R.drawable.ic_fingerprint_header);
}
private ShadowDrawable setActivityAndGetIconDrawable(boolean addFingerprintExtra) {
ChooseLockPassword passwordActivity =
Robolectric.buildActivity(
ChooseLockPassword.class,
new IntentBuilder(application)
.setUserId(UserHandle.myUserId())
.setForFingerprint(addFingerprintExtra)
.build())
.setup().get();
ChooseLockPasswordFragment fragment = (ChooseLockPasswordFragment)
passwordActivity.getFragmentManager().findFragmentById(R.id.main_content);
return Shadows.shadowOf(((GlifLayout) fragment.getView()).getIcon());
}
}

View File

@@ -21,19 +21,25 @@ import static com.google.common.truth.Truth.assertThat;
import static org.robolectric.RuntimeEnvironment.application;
import android.content.Intent;
import android.os.UserHandle;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.R;
import com.android.settings.TestConfig;
import com.android.settings.password.ChooseLockPattern.ChooseLockPatternFragment;
import com.android.settings.password.ChooseLockPattern.IntentBuilder;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.testutils.shadow.SettingsShadowResources;
import com.android.settings.testutils.shadow.ShadowDynamicIndexableContentMonitor;
import com.android.settings.testutils.shadow.ShadowEventLogWriter;
import com.android.settings.testutils.shadow.ShadowUtils;
import com.android.setupwizardlib.GlifLayout;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.Shadows;
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowDrawable;
@RunWith(SettingsRobolectricTestRunner.class)
@Config(
@@ -95,4 +101,23 @@ public class ChooseLockPatternTest {
.named("EXTRA_USER_ID")
.isEqualTo(123);
}
@Test
public void assertThat_chooseLockIconChanged_WhenFingerprintExtraSet() {
ChooseLockPattern activity = createActivity(true);
ChooseLockPatternFragment fragment = (ChooseLockPatternFragment)
activity.getFragmentManager().findFragmentById(R.id.main_content);
ShadowDrawable drawable = Shadows.shadowOf(((GlifLayout) fragment.getView()).getIcon());
assertThat(drawable.getCreatedFromResId()).isEqualTo(R.drawable.ic_fingerprint_header);
}
private ChooseLockPattern createActivity(boolean addFingerprintExtra) {
return Robolectric.buildActivity(
ChooseLockPattern.class,
new IntentBuilder(application)
.setUserId(UserHandle.myUserId())
.setForFingerprint(addFingerprintExtra)
.build())
.setup().get();
}
}