Do not override SUW Glif theme when onApplyThemeResource() callback
1. Accodring to settings & setupdesign lib theme architecture Only force apply sytle SetupWizardPartnerResource for current activity/contextThemeWrapper is sufficient, override GlifV3Theme again will cause incorrect resource mapping of private attributes. 2. Set Theme_AlertDialog style for AlertDialog in for Material design - FingerprintEnrollEnrolling - FingerprintEnrollFindSensor 3. Add test for AlertDialog theme, and fix broken test cases Fixes: 245684949 Bug: 249789759 Bug: 248994476 Test: manual in SUW `adb shell cmd uimode night yes` and check visual Test: manual in SUW enrolling check timeout dialog apply theme Test: manual in SUW enroll UDFPS tips lottie view showing expectedly Test: manual in SUW enroll UDFPS landscape showing correct layout Test: m RunSettingsRoboTests -j30 ROBOTEST_FILTER= \ SetupFingerprintEnrollFindSensorTest Test: m RunSettingsRoboTests -j30 ROBOTEST_FILTER= \ FingerprintEnrollEnrollingTest Test: m RunSettingsRoboTests -j30 ROBOTEST_FILTER= \ FingerprintEnrollFindSensorTest Change-Id: I17cbf26e38318e6681ba124d23bf86317a0f1e1d
This commit is contained in:
@@ -64,7 +64,6 @@ 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;
|
||||||
@@ -216,9 +215,8 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onApplyThemeResource(Resources.Theme theme, int resid, boolean first) {
|
protected void onApplyThemeResource(Resources.Theme theme, int resid, boolean first) {
|
||||||
final int newResid = SetupWizardUtils.getTheme(this, getIntent());
|
|
||||||
theme.applyStyle(R.style.SetupWizardPartnerResource, true);
|
theme.applyStyle(R.style.SetupWizardPartnerResource, true);
|
||||||
super.onApplyThemeResource(theme, newResid, first);
|
super.onApplyThemeResource(theme, resid, first);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1062,7 +1060,8 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
|
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(),
|
||||||
|
R.style.Theme_AlertDialog);
|
||||||
builder.setTitle(R.string.security_settings_fingerprint_enroll_touch_dialog_title)
|
builder.setTitle(R.string.security_settings_fingerprint_enroll_touch_dialog_title)
|
||||||
.setMessage(R.string.security_settings_fingerprint_enroll_touch_dialog_message)
|
.setMessage(R.string.security_settings_fingerprint_enroll_touch_dialog_message)
|
||||||
.setPositiveButton(R.string.security_settings_fingerprint_enroll_dialog_ok,
|
.setPositiveButton(R.string.security_settings_fingerprint_enroll_dialog_ok,
|
||||||
|
@@ -32,7 +32,6 @@ 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;
|
||||||
@@ -215,9 +214,8 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onApplyThemeResource(Resources.Theme theme, int resid, boolean first) {
|
protected void onApplyThemeResource(Resources.Theme theme, int resid, boolean first) {
|
||||||
final int newResid = SetupWizardUtils.getTheme(this, getIntent());
|
|
||||||
theme.applyStyle(R.style.SetupWizardPartnerResource, true);
|
theme.applyStyle(R.style.SetupWizardPartnerResource, true);
|
||||||
super.onApplyThemeResource(theme, newResid, first);
|
super.onApplyThemeResource(theme, resid, first);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int getContentView() {
|
protected int getContentView() {
|
||||||
|
@@ -77,7 +77,7 @@ public class SetupFingerprintEnrollFindSensor extends FingerprintEnrollFindSenso
|
|||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
public AlertDialog.Builder onCreateDialogBuilder() {
|
public AlertDialog.Builder onCreateDialogBuilder() {
|
||||||
return new AlertDialog.Builder(getActivity())
|
return new AlertDialog.Builder(getActivity(), R.style.Theme_AlertDialog)
|
||||||
.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)
|
||||||
|
@@ -86,7 +86,7 @@ public class FingerprintEnrollEnrollingTest {
|
|||||||
|
|
||||||
@Mock private Display mMockDisplay;
|
@Mock private Display mMockDisplay;
|
||||||
|
|
||||||
@Mock private Resources.Theme mTheme;
|
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};
|
||||||
|
|
||||||
@@ -242,7 +242,8 @@ public class FingerprintEnrollEnrollingTest {
|
|||||||
|
|
||||||
mActivity.onApplyThemeResource(mTheme, R.style.GlifTheme, true /* first */);
|
mActivity.onApplyThemeResource(mTheme, R.style.GlifTheme, true /* first */);
|
||||||
|
|
||||||
verify(mTheme).applyStyle(R.style.SetupWizardPartnerResource, true);
|
final String appliedThemes = mTheme.toString();
|
||||||
|
assertThat(appliedThemes.contains("SetupWizardPartnerResource")).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -251,7 +252,8 @@ public class FingerprintEnrollEnrollingTest {
|
|||||||
|
|
||||||
mActivity.onApplyThemeResource(mTheme, R.style.GlifTheme, true /* first */);
|
mActivity.onApplyThemeResource(mTheme, R.style.GlifTheme, true /* first */);
|
||||||
|
|
||||||
verify(mTheme).applyStyle(R.style.SetupWizardPartnerResource, true);
|
final String appliedThemes = mTheme.toString();
|
||||||
|
assertThat(appliedThemes.contains("SetupWizardPartnerResource")).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initializeActivityFor(int sensorType) {
|
private void initializeActivityFor(int sensorType) {
|
||||||
@@ -291,6 +293,7 @@ public class FingerprintEnrollEnrollingTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ActivityController.of(mActivity).create(savedInstanceState);
|
ActivityController.of(mActivity).create(savedInstanceState);
|
||||||
|
mTheme = mActivity.getTheme();
|
||||||
}
|
}
|
||||||
|
|
||||||
private EnrollmentCallback verifyAndCaptureEnrollmentCallback() {
|
private EnrollmentCallback verifyAndCaptureEnrollmentCallback() {
|
||||||
|
@@ -89,7 +89,6 @@ public class FingerprintEnrollFindSensorTest {
|
|||||||
@Mock
|
@Mock
|
||||||
private FingerprintManager mFingerprintManager;
|
private FingerprintManager mFingerprintManager;
|
||||||
|
|
||||||
@Mock
|
|
||||||
private Resources.Theme mTheme;
|
private Resources.Theme mTheme;
|
||||||
|
|
||||||
private ActivityController<FingerprintEnrollFindSensor> mActivityController;
|
private ActivityController<FingerprintEnrollFindSensor> mActivityController;
|
||||||
@@ -104,6 +103,7 @@ public class FingerprintEnrollFindSensorTest {
|
|||||||
.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, new byte[0])
|
.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, new byte[0])
|
||||||
);
|
);
|
||||||
mActivity = mActivityController.get();
|
mActivity = mActivityController.get();
|
||||||
|
mTheme = mActivity.getTheme();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
@@ -560,9 +560,10 @@ public class FingerprintEnrollFindSensorTest {
|
|||||||
setupActivity_onSfpsDevice();
|
setupActivity_onSfpsDevice();
|
||||||
verifySidecar_onRearOrSfpsDevice();
|
verifySidecar_onRearOrSfpsDevice();
|
||||||
|
|
||||||
mActivity.onApplyThemeResource(mActivity.getTheme(), R.style.GlifTheme, true /* first */);
|
mActivity.onApplyThemeResource(mTheme, R.style.GlifTheme, true /* first */);
|
||||||
|
|
||||||
verify(mTheme).applyStyle(R.style.SetupWizardPartnerResource, true);
|
final String appliedThemes = mTheme.toString();
|
||||||
|
assertThat(appliedThemes.contains("SetupWizardPartnerResource")).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void triggerEnrollProgressAndError_onRearDevice() {
|
private void triggerEnrollProgressAndError_onRearDevice() {
|
||||||
|
@@ -18,7 +18,6 @@ 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;
|
||||||
@@ -52,7 +51,7 @@ public class SetupFingerprintEnrollFindSensorTest {
|
|||||||
|
|
||||||
@Mock private FingerprintManager mFingerprintManager;
|
@Mock private FingerprintManager mFingerprintManager;
|
||||||
|
|
||||||
@Mock private Theme mTheme;
|
private Theme mTheme;
|
||||||
|
|
||||||
private SetupFingerprintEnrollFindSensor mActivity;
|
private SetupFingerprintEnrollFindSensor mActivity;
|
||||||
|
|
||||||
@@ -67,6 +66,7 @@ public class SetupFingerprintEnrollFindSensorTest {
|
|||||||
.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, new byte[0]);
|
.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, new byte[0]);
|
||||||
mActivity = Robolectric.buildActivity(SetupFingerprintEnrollFindSensor.class,
|
mActivity = Robolectric.buildActivity(SetupFingerprintEnrollFindSensor.class,
|
||||||
intent).setup().get();
|
intent).setup().get();
|
||||||
|
mTheme = mActivity.getTheme();
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
@@ -88,7 +88,16 @@ public class SetupFingerprintEnrollFindSensorTest {
|
|||||||
public void fingerprintEnroll_activityApplyDarkLightStyle() {
|
public void fingerprintEnroll_activityApplyDarkLightStyle() {
|
||||||
mActivity.onApplyThemeResource(mTheme, R.style.GlifTheme, true /* first */);
|
mActivity.onApplyThemeResource(mTheme, R.style.GlifTheme, true /* first */);
|
||||||
|
|
||||||
verify(mTheme).applyStyle(R.style.SetupWizardPartnerResource, true);
|
final String appliedThemes = mTheme.toString();
|
||||||
|
assertThat(appliedThemes.contains("SetupWizardPartnerResource")).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void fingerprintEnroll_showsAlert_setAlertDialogTheme() {
|
||||||
|
final AlertDialog alertDialog = setupAlertDialog();
|
||||||
|
|
||||||
|
assertThat(alertDialog.getContext().getThemeResId()).isEqualTo(
|
||||||
|
R.style.Theme_AlertDialog);
|
||||||
}
|
}
|
||||||
|
|
||||||
private AlertDialog setupAlertDialog() {
|
private AlertDialog setupAlertDialog() {
|
||||||
|
Reference in New Issue
Block a user