Merge "Apply dark light theme for enrollment activities" into tm-qpr-dev am: a46b426bcf
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/19989471 Change-Id: I4b46bef348873f663b4c7368a2e659359e6f8486 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -31,6 +31,7 @@ import android.content.DialogInterface;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.res.ColorStateList;
|
import android.content.res.ColorStateList;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
|
import android.content.res.Resources;
|
||||||
import android.graphics.PorterDuff;
|
import android.graphics.PorterDuff;
|
||||||
import android.graphics.PorterDuffColorFilter;
|
import android.graphics.PorterDuffColorFilter;
|
||||||
import android.graphics.drawable.Animatable2;
|
import android.graphics.drawable.Animatable2;
|
||||||
@@ -63,6 +64,7 @@ import androidx.appcompat.app.AlertDialog;
|
|||||||
|
|
||||||
import com.android.internal.annotations.VisibleForTesting;
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
|
import com.android.settings.SetupWizardUtils;
|
||||||
import com.android.settings.biometrics.BiometricEnrollSidecar;
|
import com.android.settings.biometrics.BiometricEnrollSidecar;
|
||||||
import com.android.settings.biometrics.BiometricUtils;
|
import com.android.settings.biometrics.BiometricUtils;
|
||||||
import com.android.settings.biometrics.BiometricsEnrollEnrolling;
|
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
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
@@ -18,6 +18,7 @@ package com.android.settings.biometrics.fingerprint;
|
|||||||
|
|
||||||
import android.app.settings.SettingsEnums;
|
import android.app.settings.SettingsEnums;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.res.Resources;
|
||||||
import android.hardware.fingerprint.FingerprintManager;
|
import android.hardware.fingerprint.FingerprintManager;
|
||||||
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
|
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
@@ -31,6 +32,7 @@ import android.view.accessibility.AccessibilityManager;
|
|||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
|
import com.android.settings.SetupWizardUtils;
|
||||||
import com.android.settings.Utils;
|
import com.android.settings.Utils;
|
||||||
import com.android.settings.biometrics.BiometricEnrollBase;
|
import com.android.settings.biometrics.BiometricEnrollBase;
|
||||||
import com.android.settings.biometrics.BiometricEnrollSidecar;
|
import com.android.settings.biometrics.BiometricEnrollSidecar;
|
||||||
@@ -211,6 +213,13 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements
|
|||||||
super.onBackPressed();
|
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() {
|
protected int getContentView() {
|
||||||
if (mCanAssumeUdfps) {
|
if (mCanAssumeUdfps) {
|
||||||
return R.layout.udfps_enroll_find_sensor_layout;
|
return R.layout.udfps_enroll_find_sensor_layout;
|
||||||
|
@@ -77,7 +77,7 @@ public class SetupFingerprintEnrollFindSensor extends FingerprintEnrollFindSenso
|
|||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
public AlertDialog.Builder onCreateDialogBuilder() {
|
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)
|
.setTitle(R.string.setup_fingerprint_enroll_skip_title)
|
||||||
.setPositiveButton(R.string.skip_anyway_button_label, this)
|
.setPositiveButton(R.string.skip_anyway_button_label, this)
|
||||||
.setNegativeButton(R.string.go_back_button_label, this)
|
.setNegativeButton(R.string.go_back_button_label, this)
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
package com.android.settings.biometrics.fingerprint;
|
package com.android.settings.biometrics.fingerprint;
|
||||||
|
|
||||||
import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_POWER_BUTTON;
|
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.KEY_STATE_PREVIOUS_ROTATION;
|
||||||
import static com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling.SFPS_STAGE_NO_ANIMATION;
|
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.Context;
|
||||||
import android.content.res.ColorStateList;
|
import android.content.res.ColorStateList;
|
||||||
|
import android.content.res.Resources;
|
||||||
import android.hardware.biometrics.ComponentInfoInternal;
|
import android.hardware.biometrics.ComponentInfoInternal;
|
||||||
import android.hardware.biometrics.SensorProperties;
|
import android.hardware.biometrics.SensorProperties;
|
||||||
import android.hardware.fingerprint.FingerprintManager;
|
import android.hardware.fingerprint.FingerprintManager;
|
||||||
@@ -84,6 +86,8 @@ public class FingerprintEnrollEnrollingTest {
|
|||||||
|
|
||||||
@Mock private Display mMockDisplay;
|
@Mock private Display mMockDisplay;
|
||||||
|
|
||||||
|
@Mock private Resources.Theme mTheme;
|
||||||
|
|
||||||
private final int[] mSfpsStageThresholds = new int[]{0, 9, 13, 19, 25};
|
private final int[] mSfpsStageThresholds = new int[]{0, 9, 13, 19, 25};
|
||||||
|
|
||||||
private FingerprintEnrollEnrolling mActivity;
|
private FingerprintEnrollEnrolling mActivity;
|
||||||
@@ -110,7 +114,7 @@ public class FingerprintEnrollEnrollingTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void fingerprintUdfpsEnrollSuccessProgress_shouldNotVibrate() {
|
public void fingerprintUdfpsEnrollSuccessProgress_shouldNotVibrate() {
|
||||||
initializeActivityFor(FingerprintSensorProperties.TYPE_UDFPS_OPTICAL);
|
initializeActivityFor(TYPE_UDFPS_OPTICAL);
|
||||||
|
|
||||||
mActivity.onEnrollmentProgressChange(1, 1);
|
mActivity.onEnrollmentProgressChange(1, 1);
|
||||||
|
|
||||||
@@ -128,7 +132,7 @@ public class FingerprintEnrollEnrollingTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void fingerprintUdfpsOverlayEnrollment_gainFocus_shouldNotCancel() {
|
public void fingerprintUdfpsOverlayEnrollment_gainFocus_shouldNotCancel() {
|
||||||
initializeActivityFor(FingerprintSensorProperties.TYPE_UDFPS_OPTICAL);
|
initializeActivityFor(TYPE_UDFPS_OPTICAL);
|
||||||
|
|
||||||
mActivity.onEnrollmentProgressChange(1, 1);
|
mActivity.onEnrollmentProgressChange(1, 1);
|
||||||
mActivity.onWindowFocusChanged(true);
|
mActivity.onWindowFocusChanged(true);
|
||||||
@@ -138,7 +142,7 @@ public class FingerprintEnrollEnrollingTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void fingerprintUdfpsOverlayEnrollment_loseFocus_shouldCancel() {
|
public void fingerprintUdfpsOverlayEnrollment_loseFocus_shouldCancel() {
|
||||||
initializeActivityFor(FingerprintSensorProperties.TYPE_UDFPS_OPTICAL);
|
initializeActivityFor(TYPE_UDFPS_OPTICAL);
|
||||||
|
|
||||||
mActivity.onEnrollmentProgressChange(1, 1);
|
mActivity.onEnrollmentProgressChange(1, 1);
|
||||||
mActivity.onWindowFocusChanged(false);
|
mActivity.onWindowFocusChanged(false);
|
||||||
@@ -232,6 +236,24 @@ public class FingerprintEnrollEnrollingTest {
|
|||||||
verify(mActivity, never()).onCancelEnrollment(anyInt());
|
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) {
|
private void initializeActivityFor(int sensorType) {
|
||||||
final List<ComponentInfoInternal> componentInfo = new ArrayList<>();
|
final List<ComponentInfoInternal> componentInfo = new ArrayList<>();
|
||||||
final FingerprintSensorPropertiesInternal prop =
|
final FingerprintSensorPropertiesInternal prop =
|
||||||
|
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package com.android.settings.biometrics.fingerprint;
|
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_REAR;
|
||||||
import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_UDFPS_OPTICAL;
|
import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_UDFPS_OPTICAL;
|
||||||
|
|
||||||
@@ -38,6 +39,7 @@ import android.annotation.NonNull;
|
|||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.res.Resources;
|
||||||
import android.hardware.biometrics.ComponentInfoInternal;
|
import android.hardware.biometrics.ComponentInfoInternal;
|
||||||
import android.hardware.biometrics.SensorProperties;
|
import android.hardware.biometrics.SensorProperties;
|
||||||
import android.hardware.fingerprint.FingerprintManager;
|
import android.hardware.fingerprint.FingerprintManager;
|
||||||
@@ -87,6 +89,9 @@ public class FingerprintEnrollFindSensorTest {
|
|||||||
@Mock
|
@Mock
|
||||||
private FingerprintManager mFingerprintManager;
|
private FingerprintManager mFingerprintManager;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private Resources.Theme mTheme;
|
||||||
|
|
||||||
private ActivityController<FingerprintEnrollFindSensor> mActivityController;
|
private ActivityController<FingerprintEnrollFindSensor> mActivityController;
|
||||||
|
|
||||||
private FingerprintEnrollFindSensor mActivity;
|
private FingerprintEnrollFindSensor mActivity;
|
||||||
@@ -125,6 +130,14 @@ public class FingerprintEnrollFindSensorTest {
|
|||||||
mActivityController.setup();
|
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(
|
private FingerprintSensorPropertiesInternal newFingerprintSensorPropertiesInternal(
|
||||||
@FingerprintSensorProperties.SensorType int sensorType) {
|
@FingerprintSensorProperties.SensorType int sensorType) {
|
||||||
return new FingerprintSensorPropertiesInternal(
|
return new FingerprintSensorPropertiesInternal(
|
||||||
@@ -542,6 +555,16 @@ public class FingerprintEnrollFindSensorTest {
|
|||||||
gotEnrollingResult_recreateActivityAndVerifyResultThenForward(RESULT_TIMEOUT, bundle);
|
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() {
|
private void triggerEnrollProgressAndError_onRearDevice() {
|
||||||
EnrollmentCallback enrollmentCallback = verifyAndCaptureEnrollmentCallback();
|
EnrollmentCallback enrollmentCallback = verifyAndCaptureEnrollmentCallback();
|
||||||
enrollmentCallback.onEnrollmentProgress(123);
|
enrollmentCallback.onEnrollmentProgress(123);
|
||||||
|
@@ -18,9 +18,11 @@ package com.android.settings.biometrics.fingerprint;
|
|||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.robolectric.RuntimeEnvironment.application;
|
import static org.robolectric.RuntimeEnvironment.application;
|
||||||
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.res.Resources.Theme;
|
||||||
import android.hardware.fingerprint.FingerprintManager;
|
import android.hardware.fingerprint.FingerprintManager;
|
||||||
|
|
||||||
import androidx.appcompat.app.AlertDialog;
|
import androidx.appcompat.app.AlertDialog;
|
||||||
@@ -48,14 +50,23 @@ import org.robolectric.annotation.Config;
|
|||||||
@Config(shadows = {ShadowUtils.class, ShadowAlertDialogCompat.class})
|
@Config(shadows = {ShadowUtils.class, ShadowAlertDialogCompat.class})
|
||||||
public class SetupFingerprintEnrollFindSensorTest {
|
public class SetupFingerprintEnrollFindSensorTest {
|
||||||
|
|
||||||
@Mock
|
@Mock private FingerprintManager mFingerprintManager;
|
||||||
private FingerprintManager mFingerprintManager;
|
|
||||||
|
@Mock private Theme mTheme;
|
||||||
|
|
||||||
|
private SetupFingerprintEnrollFindSensor mActivity;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
ShadowUtils.setFingerprintManager(mFingerprintManager);
|
ShadowUtils.setFingerprintManager(mFingerprintManager);
|
||||||
FakeFeatureFactory.setupForTest();
|
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
|
@After
|
||||||
@@ -74,23 +85,14 @@ public class SetupFingerprintEnrollFindSensorTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void fingerprintEnroll_showsAlert_setSudTheme() {
|
public void fingerprintEnroll_activityApplyDarkLightStyle() {
|
||||||
final AlertDialog alertDialog = setupAlertDialog();
|
mActivity.onApplyThemeResource(mTheme, R.style.GlifTheme, true /* first */);
|
||||||
|
|
||||||
assertThat(alertDialog.getContext().getThemeResId()).isEqualTo(
|
verify(mTheme).applyStyle(R.style.SetupWizardPartnerResource, true);
|
||||||
R.style.GlifV2ThemeAlertDialog);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private AlertDialog setupAlertDialog() {
|
private AlertDialog setupAlertDialog() {
|
||||||
final Intent intent = new Intent()
|
PartnerCustomizationLayout layout = mActivity.findViewById(R.id.setup_wizard_layout);
|
||||||
// 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);
|
|
||||||
layout.getMixin(FooterBarMixin.class).getSecondaryButtonView().performClick();
|
layout.getMixin(FooterBarMixin.class).getSecondaryButtonView().performClick();
|
||||||
|
|
||||||
final AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
|
final AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
|
||||||
|
Reference in New Issue
Block a user