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:
lbill
2022-09-29 14:55:21 +00:00
parent 995dbc4f45
commit 39175b2f87
6 changed files with 27 additions and 17 deletions

View File

@@ -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,

View File

@@ -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() {

View File

@@ -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)

View File

@@ -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() {

View File

@@ -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() {

View File

@@ -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() {