diff --git a/res/values/strings.xml b/res/values/strings.xml index da2fe09a913..7ef1509c9bd 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -5460,9 +5460,9 @@ Make the mouse pointer more noticeable - Make all apps dark + Make more apps dark - Applies to apps without their own dark theme. Some apps may have display issues, like inverted colors. + Automatically convert light theme apps to dark theme Remove animations diff --git a/res/xml/accessibility_color_and_motion.xml b/res/xml/accessibility_color_and_motion.xml index ffcdbddf7fe..9cc8f8b9bc7 100644 --- a/res/xml/accessibility_color_and_motion.xml +++ b/res/xml/accessibility_color_and_motion.xml @@ -51,14 +51,6 @@ settings:controller="com.android.settings.display.DarkUIPreferenceController" settings:searchable="false"/> - - - + - + - + + + + + + niks = ColorAndMotionFragment.SEARCH_INDEX_DATA_PROVIDER - .getNonIndexableKeys(mContext); - final List keys = - XmlTestUtils.getKeysFromPreferenceXml(mContext, - R.xml.accessibility_color_and_motion); - - assertThat(niks).doesNotContain(ColorAndMotionFragment.TOGGLE_FORCE_INVERT); - assertThat(keys).containsAtLeastElementsIn(niks); - } - - @Test - @RequiresFlagsDisabled(FLAG_FORCE_INVERT_COLOR) public void getNonIndexableKeys_existInXmlLayout() { final List niks = ColorAndMotionFragment.SEARCH_INDEX_DATA_PROVIDER .getNonIndexableKeys(mContext); @@ -94,7 +76,6 @@ public class ColorAndMotionFragmentTest { XmlTestUtils.getKeysFromPreferenceXml(mContext, R.xml.accessibility_color_and_motion); - assertThat(niks).contains(ColorAndMotionFragment.TOGGLE_FORCE_INVERT); assertThat(keys).containsAtLeastElementsIn(niks); } } diff --git a/tests/robotests/src/com/android/settings/accessibility/ToggleForceInvertPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/ToggleForceInvertPreferenceControllerTest.java index d8197ef9a52..a2b259f60e2 100644 --- a/tests/robotests/src/com/android/settings/accessibility/ToggleForceInvertPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/accessibility/ToggleForceInvertPreferenceControllerTest.java @@ -23,13 +23,18 @@ import static com.android.settings.accessibility.AccessibilityUtil.State.ON; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; + import android.content.Context; +import android.content.res.Configuration; import android.platform.test.annotations.RequiresFlagsDisabled; import android.platform.test.annotations.RequiresFlagsEnabled; import android.platform.test.flag.junit.CheckFlagsRule; import android.platform.test.flag.junit.DeviceFlagsValueProvider; import android.provider.Settings; +import androidx.preference.Preference; import androidx.test.core.app.ApplicationProvider; import com.android.settings.core.BasePreferenceController; @@ -52,10 +57,7 @@ public class ToggleForceInvertPreferenceControllerTest { @Before public void setUp() { - mController = new ToggleForceInvertPreferenceController( - mContext, - ColorAndMotionFragment.TOGGLE_FORCE_INVERT - ); + mController = new ToggleForceInvertPreferenceController(mContext, "toggle_force_invert"); } @Test @@ -72,6 +74,30 @@ public class ToggleForceInvertPreferenceControllerTest { .isEqualTo(BasePreferenceController.AVAILABLE); } + @Test + public void updateState_darkModeOn_preferenceEnabled() { + Configuration config = mContext.getResources().getConfiguration(); + config.uiMode = Configuration.UI_MODE_NIGHT_YES; + mContext.getResources().updateConfiguration(config, null); + + Preference preference = mock(Preference.class); + mController.updateState(preference); + + verify(preference).setEnabled(true); + } + + @Test + public void updateState_darkModeOff_preferenceDisabled() { + Configuration config = mContext.getResources().getConfiguration(); + config.uiMode = Configuration.UI_MODE_NIGHT_NO; + mContext.getResources().updateConfiguration(config, null); + + Preference preference = mock(Preference.class); + mController.updateState(preference); + + verify(preference).setEnabled(false); + } + @Test public void settingOff_reflectsCorrectValue() { setEnabled(false); diff --git a/tests/robotests/src/com/android/settings/display/darkmode/DarkModeSettingsFragmentTest.java b/tests/robotests/src/com/android/settings/display/darkmode/DarkModeSettingsFragmentTest.java new file mode 100644 index 00000000000..4bd1daa5bdf --- /dev/null +++ b/tests/robotests/src/com/android/settings/display/darkmode/DarkModeSettingsFragmentTest.java @@ -0,0 +1,99 @@ +/* + * Copyright (C) 2024 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.display.darkmode; + +import static android.view.accessibility.Flags.FLAG_FORCE_INVERT_COLOR; + +import static com.google.common.truth.Truth.assertThat; + +import android.app.settings.SettingsEnums; +import android.content.Context; +import android.platform.test.annotations.RequiresFlagsDisabled; +import android.platform.test.annotations.RequiresFlagsEnabled; +import android.platform.test.flag.junit.CheckFlagsRule; +import android.platform.test.flag.junit.DeviceFlagsValueProvider; + +import androidx.test.core.app.ApplicationProvider; + +import com.android.settings.R; +import com.android.settings.testutils.XmlTestUtils; + +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; + +import java.util.List; + +/** Tests for {@link DarkModeSettingsFragment}. */ +@RunWith(RobolectricTestRunner.class) +public class DarkModeSettingsFragmentTest { + @Rule + public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule(); + + private final Context mContext = ApplicationProvider.getApplicationContext(); + private DarkModeSettingsFragment mFragment; + + @Before + public void setUp() { + mFragment = new DarkModeSettingsFragment(); + } + + @Test + public void getMetricsCategory_returnsCorrectCategory() { + assertThat(mFragment.getMetricsCategory()).isEqualTo( + SettingsEnums.DARK_UI_SETTINGS); + } + + @Test + public void getPreferenceScreenResId_returnsCorrectXml() { + assertThat(mFragment.getPreferenceScreenResId()).isEqualTo( + R.xml.dark_mode_settings); + } + + @Test + public void getLogTag_returnsCorrectTag() { + assertThat(mFragment.getLogTag()).isEqualTo("DarkModeSettingsFrag"); + } + + @Test + @RequiresFlagsEnabled(FLAG_FORCE_INVERT_COLOR) + public void getNonIndexableKeys_forceInvertEnabled_existInXmlLayout() { + final List niks = DarkModeSettingsFragment.SEARCH_INDEX_DATA_PROVIDER + .getNonIndexableKeys(mContext); + final List keys = + XmlTestUtils.getKeysFromPreferenceXml(mContext, + R.xml.dark_mode_settings); + + assertThat(niks).doesNotContain("toggle_force_invert"); + assertThat(keys).containsAtLeastElementsIn(niks); + } + + @Test + @RequiresFlagsDisabled(FLAG_FORCE_INVERT_COLOR) + public void getNonIndexableKeys_existInXmlLayout() { + final List niks = DarkModeSettingsFragment.SEARCH_INDEX_DATA_PROVIDER + .getNonIndexableKeys(mContext); + final List keys = + XmlTestUtils.getKeysFromPreferenceXml(mContext, + R.xml.dark_mode_settings); + + assertThat(niks).contains("toggle_force_invert"); + assertThat(keys).containsAtLeastElementsIn(niks); + } +}