diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java index 64a08d3c996..be38f276f36 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java @@ -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); diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java index 5c32dffe956..bb03ee4a6c1 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java @@ -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; diff --git a/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensor.java b/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensor.java index 1ae5daee348..f6b947a664c 100644 --- a/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensor.java +++ b/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensor.java @@ -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) diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java index 2c864d6d92b..2dfcee20cc5 100644 --- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java @@ -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 componentInfo = new ArrayList<>(); final FingerprintSensorPropertiesInternal prop = diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensorTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensorTest.java index fad3abf2a3a..b6fcc47a090 100644 --- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensorTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensorTest.java @@ -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 mActivityController; private FingerprintEnrollFindSensor mActivity; @@ -125,6 +130,14 @@ public class FingerprintEnrollFindSensorTest { mActivityController.setup(); } + private void setupActivity_onSfpsDevice() { + final ArrayList 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); diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensorTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensorTest.java index 54a7fb16eb6..71cecc052a3 100644 --- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensorTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensorTest.java @@ -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();