Merge "Apply dark light theme for enrollment activities" into tm-qpr-dev

This commit is contained in:
Bill Lin
2022-09-22 01:55:59 +00:00
committed by Android (Google) Code Review
6 changed files with 84 additions and 19 deletions

View File

@@ -31,6 +31,7 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.ColorStateList;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffColorFilter;
import android.graphics.drawable.Animatable2;
@@ -63,6 +64,7 @@ import androidx.appcompat.app.AlertDialog;
import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.SetupWizardUtils;
import com.android.settings.biometrics.BiometricEnrollSidecar;
import com.android.settings.biometrics.BiometricUtils;
import com.android.settings.biometrics.BiometricsEnrollEnrolling;
@@ -212,6 +214,13 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
}
}
@Override
protected void onApplyThemeResource(Resources.Theme theme, int resid, boolean first) {
final int newResid = SetupWizardUtils.getTheme(this, getIntent());
theme.applyStyle(R.style.SetupWizardPartnerResource, true);
super.onApplyThemeResource(theme, newResid, first);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

View File

@@ -18,6 +18,7 @@ package com.android.settings.biometrics.fingerprint;
import android.app.settings.SettingsEnums;
import android.content.Intent;
import android.content.res.Resources;
import android.hardware.fingerprint.FingerprintManager;
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
import android.os.Bundle;
@@ -31,6 +32,7 @@ import android.view.accessibility.AccessibilityManager;
import androidx.annotation.Nullable;
import com.android.settings.R;
import com.android.settings.SetupWizardUtils;
import com.android.settings.Utils;
import com.android.settings.biometrics.BiometricEnrollBase;
import com.android.settings.biometrics.BiometricEnrollSidecar;
@@ -211,6 +213,13 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements
super.onBackPressed();
}
@Override
protected void onApplyThemeResource(Resources.Theme theme, int resid, boolean first) {
final int newResid = SetupWizardUtils.getTheme(this, getIntent());
theme.applyStyle(R.style.SetupWizardPartnerResource, true);
super.onApplyThemeResource(theme, newResid, first);
}
protected int getContentView() {
if (mCanAssumeUdfps) {
return R.layout.udfps_enroll_find_sensor_layout;

View File

@@ -77,7 +77,7 @@ public class SetupFingerprintEnrollFindSensor extends FingerprintEnrollFindSenso
@NonNull
public AlertDialog.Builder onCreateDialogBuilder() {
return new AlertDialog.Builder(getActivity(), R.style.GlifV2ThemeAlertDialog)
return new AlertDialog.Builder(getActivity())
.setTitle(R.string.setup_fingerprint_enroll_skip_title)
.setPositiveButton(R.string.skip_anyway_button_label, this)
.setNegativeButton(R.string.go_back_button_label, this)

View File

@@ -17,6 +17,7 @@
package com.android.settings.biometrics.fingerprint;
import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_POWER_BUTTON;
import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_UDFPS_OPTICAL;
import static com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling.KEY_STATE_PREVIOUS_ROTATION;
import static com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling.SFPS_STAGE_NO_ANIMATION;
@@ -37,6 +38,7 @@ import static org.mockito.Mockito.when;
import android.content.Context;
import android.content.res.ColorStateList;
import android.content.res.Resources;
import android.hardware.biometrics.ComponentInfoInternal;
import android.hardware.biometrics.SensorProperties;
import android.hardware.fingerprint.FingerprintManager;
@@ -84,6 +86,8 @@ public class FingerprintEnrollEnrollingTest {
@Mock private Display mMockDisplay;
@Mock private Resources.Theme mTheme;
private final int[] mSfpsStageThresholds = new int[]{0, 9, 13, 19, 25};
private FingerprintEnrollEnrolling mActivity;
@@ -110,7 +114,7 @@ public class FingerprintEnrollEnrollingTest {
@Test
public void fingerprintUdfpsEnrollSuccessProgress_shouldNotVibrate() {
initializeActivityFor(FingerprintSensorProperties.TYPE_UDFPS_OPTICAL);
initializeActivityFor(TYPE_UDFPS_OPTICAL);
mActivity.onEnrollmentProgressChange(1, 1);
@@ -128,7 +132,7 @@ public class FingerprintEnrollEnrollingTest {
@Test
public void fingerprintUdfpsOverlayEnrollment_gainFocus_shouldNotCancel() {
initializeActivityFor(FingerprintSensorProperties.TYPE_UDFPS_OPTICAL);
initializeActivityFor(TYPE_UDFPS_OPTICAL);
mActivity.onEnrollmentProgressChange(1, 1);
mActivity.onWindowFocusChanged(true);
@@ -138,7 +142,7 @@ public class FingerprintEnrollEnrollingTest {
@Test
public void fingerprintUdfpsOverlayEnrollment_loseFocus_shouldCancel() {
initializeActivityFor(FingerprintSensorProperties.TYPE_UDFPS_OPTICAL);
initializeActivityFor(TYPE_UDFPS_OPTICAL);
mActivity.onEnrollmentProgressChange(1, 1);
mActivity.onWindowFocusChanged(false);
@@ -232,6 +236,24 @@ public class FingerprintEnrollEnrollingTest {
verify(mActivity, never()).onCancelEnrollment(anyInt());
}
@Test
public void fingerprintUdfpsEnroll_activityApplyDarkLightStyle() {
initializeActivityFor(TYPE_UDFPS_OPTICAL);
mActivity.onApplyThemeResource(mTheme, R.style.GlifTheme, true /* first */);
verify(mTheme).applyStyle(R.style.SetupWizardPartnerResource, true);
}
@Test
public void fingerprintSfpsEnroll_activityApplyDarkLightStyle() {
initializeActivityFor(TYPE_POWER_BUTTON);
mActivity.onApplyThemeResource(mTheme, R.style.GlifTheme, true /* first */);
verify(mTheme).applyStyle(R.style.SetupWizardPartnerResource, true);
}
private void initializeActivityFor(int sensorType) {
final List<ComponentInfoInternal> componentInfo = new ArrayList<>();
final FingerprintSensorPropertiesInternal prop =

View File

@@ -16,6 +16,7 @@
package com.android.settings.biometrics.fingerprint;
import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_POWER_BUTTON;
import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_REAR;
import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_UDFPS_OPTICAL;
@@ -38,6 +39,7 @@ import android.annotation.NonNull;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.content.res.Resources;
import android.hardware.biometrics.ComponentInfoInternal;
import android.hardware.biometrics.SensorProperties;
import android.hardware.fingerprint.FingerprintManager;
@@ -87,6 +89,9 @@ public class FingerprintEnrollFindSensorTest {
@Mock
private FingerprintManager mFingerprintManager;
@Mock
private Resources.Theme mTheme;
private ActivityController<FingerprintEnrollFindSensor> mActivityController;
private FingerprintEnrollFindSensor mActivity;
@@ -125,6 +130,14 @@ public class FingerprintEnrollFindSensorTest {
mActivityController.setup();
}
private void setupActivity_onSfpsDevice() {
final ArrayList<FingerprintSensorPropertiesInternal> props = new ArrayList<>();
props.add(newFingerprintSensorPropertiesInternal(TYPE_POWER_BUTTON));
doReturn(props).when(mFingerprintManager).getSensorPropertiesInternal();
mActivityController.setup();
}
private FingerprintSensorPropertiesInternal newFingerprintSensorPropertiesInternal(
@FingerprintSensorProperties.SensorType int sensorType) {
return new FingerprintSensorPropertiesInternal(
@@ -542,6 +555,16 @@ public class FingerprintEnrollFindSensorTest {
gotEnrollingResult_recreateActivityAndVerifyResultThenForward(RESULT_TIMEOUT, bundle);
}
@Test
public void fingerprintEnrollFindSensor_activityApplyDarkLightStyle() {
setupActivity_onSfpsDevice();
verifySidecar_onRearOrSfpsDevice();
mActivity.onApplyThemeResource(mActivity.getTheme(), R.style.GlifTheme, true /* first */);
verify(mTheme).applyStyle(R.style.SetupWizardPartnerResource, true);
}
private void triggerEnrollProgressAndError_onRearDevice() {
EnrollmentCallback enrollmentCallback = verifyAndCaptureEnrollmentCallback();
enrollmentCallback.onEnrollmentProgress(123);

View File

@@ -18,9 +18,11 @@ package com.android.settings.biometrics.fingerprint;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.verify;
import static org.robolectric.RuntimeEnvironment.application;
import android.content.Intent;
import android.content.res.Resources.Theme;
import android.hardware.fingerprint.FingerprintManager;
import androidx.appcompat.app.AlertDialog;
@@ -48,14 +50,23 @@ import org.robolectric.annotation.Config;
@Config(shadows = {ShadowUtils.class, ShadowAlertDialogCompat.class})
public class SetupFingerprintEnrollFindSensorTest {
@Mock
private FingerprintManager mFingerprintManager;
@Mock private FingerprintManager mFingerprintManager;
@Mock private Theme mTheme;
private SetupFingerprintEnrollFindSensor mActivity;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
ShadowUtils.setFingerprintManager(mFingerprintManager);
FakeFeatureFactory.setupForTest();
final Intent intent = new Intent()
// Set the challenge token so the confirm screen will not be shown
.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, new byte[0]);
mActivity = Robolectric.buildActivity(SetupFingerprintEnrollFindSensor.class,
intent).setup().get();
}
@After
@@ -74,23 +85,14 @@ public class SetupFingerprintEnrollFindSensorTest {
}
@Test
public void fingerprintEnroll_showsAlert_setSudTheme() {
final AlertDialog alertDialog = setupAlertDialog();
public void fingerprintEnroll_activityApplyDarkLightStyle() {
mActivity.onApplyThemeResource(mTheme, R.style.GlifTheme, true /* first */);
assertThat(alertDialog.getContext().getThemeResId()).isEqualTo(
R.style.GlifV2ThemeAlertDialog);
verify(mTheme).applyStyle(R.style.SetupWizardPartnerResource, true);
}
private AlertDialog setupAlertDialog() {
final Intent intent = new Intent()
// Set the challenge token so the confirm screen will not be shown
.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, new byte[0]);
final SetupFingerprintEnrollFindSensor activity =
Robolectric.buildActivity(SetupFingerprintEnrollFindSensor.class,
intent).setup().get();
PartnerCustomizationLayout layout = activity.findViewById(R.id.setup_wizard_layout);
PartnerCustomizationLayout layout = mActivity.findViewById(R.id.setup_wizard_layout);
layout.getMixin(FooterBarMixin.class).getSecondaryButtonView().performClick();
final AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();