diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 3f58e1ee8ab..d9e1735b3e3 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -657,6 +657,7 @@ @@ -672,6 +673,7 @@ android:label="@string/security_settings_face_preference_title" android:exported="false" android:icon="@drawable/ic_face_header" + android:configChanges="orientation|screenSize" android:taskAffinity="com.android.settings.root"> diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java index 990f18a2010..5b2b98368a6 100644 --- a/src/com/android/settings/Settings.java +++ b/src/com/android/settings/Settings.java @@ -52,9 +52,26 @@ public class Settings extends SettingsActivity { public static class AssistGestureSettingsActivity extends SettingsActivity { /* empty */} public static class BluetoothSettingsActivity extends SettingsActivity { /* empty */ } public static class CreateShortcutActivity extends SettingsActivity { /* empty */ } - public static class FaceSettingsActivity extends SettingsActivity { /* empty */ } + public static class FaceSettingsActivity extends SettingsActivity { + @Override + protected void onCreate(Bundle savedState) { + setTheme(SetupWizardUtils.getTheme(this, getIntent())); + setTheme(R.style.SettingsPreferenceTheme_SetupWizard); + ThemeHelper.trySetDynamicColor(this); + super.onCreate(savedState); + } + } /** Container for {@link FaceSettings} to use with a pre-defined task affinity. */ - public static class FaceSettingsInternalActivity extends SettingsActivity { /* empty */ } + public static class FaceSettingsInternalActivity extends SettingsActivity { + @Override + protected void onCreate(Bundle savedState) { + setTheme(SetupWizardUtils.getTheme(this, getIntent())); + setTheme(R.style.SettingsPreferenceTheme_SetupWizard); + ThemeHelper.trySetDynamicColor(this); + super.onCreate(savedState); + } + } + public static class FingerprintSettingsActivity extends SettingsActivity { /* empty */ } public static class CombinedBiometricSettingsActivity extends SettingsActivity { /* empty */ } public static class CombinedBiometricProfileSettingsActivity extends SettingsActivity { /* empty */ } diff --git a/tests/robotests/src/com/android/settings/biometrics/face/FaceSettingsActivityTest.java b/tests/robotests/src/com/android/settings/biometrics/face/FaceSettingsActivityTest.java new file mode 100644 index 00000000000..2a95f4c7b42 --- /dev/null +++ b/tests/robotests/src/com/android/settings/biometrics/face/FaceSettingsActivityTest.java @@ -0,0 +1,70 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.settings.biometrics.face; + +import static com.google.common.truth.Truth.assertThat; + +import static org.mockito.Mockito.spy; + +import android.content.res.Resources; +import android.os.Bundle; + +import com.android.settings.Settings; +import com.android.settings.testutils.FakeFeatureFactory; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.android.controller.ActivityController; + +@RunWith(RobolectricTestRunner.class) +public class FaceSettingsActivityTest { + + private static final String APPLIED_SETUP_WIZARD_THEME = "SettingsPreferenceTheme.SetupWizard"; + + private Settings.FaceSettingsActivity mActivity; + private Resources.Theme mTheme; + + @Before + public void setUp() { + FakeFeatureFactory.setupForTest(); + mActivity = spy(Settings.FaceSettingsActivity.class); + } + + @Test + public void verifyFaceSettingsActivity_shouldAppliedSetupWizardTheme() { + createActivity(); + + assertThat(isThemeApplied(APPLIED_SETUP_WIZARD_THEME)).isTrue(); + } + + private boolean isThemeApplied(String themeName) { + final String [] appliedThemes = mTheme.getTheme(); + for (String theme : appliedThemes) { + if (theme.contains(themeName)) { + return true; + } + } + return false; + } + + private void createActivity() { + ActivityController.of(mActivity).create(new Bundle()); + mTheme = mActivity.getTheme(); + } +}