Loading res/values/arrays.xml +2 −2 Original line number Diff line number Diff line Loading @@ -102,9 +102,9 @@ <!-- Dark theme scheduling preferences [CHAR LIMIT=NONE] --> <string-array name="dark_ui_scheduler_preference_titles"> <!-- 1: None --> <!-- 0: None --> <item>@string/dark_ui_auto_mode_never</item> <!-- 2: Auto --> <!-- 1: Auto --> <item>@string/dark_ui_auto_mode_auto</item> </string-array> Loading src/com/android/settings/display/darkmode/DarkModeScheduleSelectorController.java +19 −14 Original line number Diff line number Diff line Loading @@ -18,9 +18,11 @@ import android.app.UiModeManager; import android.content.Context; import android.content.res.Configuration; import android.os.PowerManager; import androidx.preference.DropDownPreference; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; Loading @@ -33,7 +35,7 @@ public class DarkModeScheduleSelectorController extends BasePreferenceController private final UiModeManager mUiModeManager; private PowerManager mPowerManager; private DropDownPreference mPreference; private String mCurrentMode; private int mCurrentMode; public DarkModeScheduleSelectorController(Context context, String key) { super(context, key); Loading @@ -44,8 +46,8 @@ public class DarkModeScheduleSelectorController extends BasePreferenceController @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreference = screen.findPreference(getPreferenceKey()); init(); } @Override Loading @@ -53,32 +55,35 @@ public class DarkModeScheduleSelectorController extends BasePreferenceController return BasePreferenceController.AVAILABLE; } @Override public final void updateState(Preference preference) { private void init() { final boolean batterySaver = mPowerManager.isPowerSaveMode(); mPreference.setEnabled(!batterySaver); mCurrentMode = mUiModeManager.getNightMode() == UiModeManager.MODE_NIGHT_AUTO ? mContext.getString(R.string.dark_ui_auto_mode_auto) : mContext.getString(R.string.dark_ui_auto_mode_never); mPreference.setValue(mCurrentMode); mCurrentMode = getCurrentMode(); mPreference.setValueIndex(mCurrentMode); } private int getCurrentMode() { final int resId = mUiModeManager.getNightMode() == UiModeManager.MODE_NIGHT_AUTO ? R.string.dark_ui_auto_mode_auto : R.string.dark_ui_auto_mode_never; return mPreference.findIndexOfValue(mContext.getString(resId)); } @Override public final boolean onPreferenceChange(Preference preference, Object newValue) { String newMode = (String) newValue; final int newMode = mPreference.findIndexOfValue((String) newValue); if (newMode == mCurrentMode) { return false; } mCurrentMode = newMode; if (mCurrentMode == mContext.getString(R.string.dark_ui_auto_mode_never)) { if (mCurrentMode == mPreference.findIndexOfValue( mContext.getString(R.string.dark_ui_auto_mode_never))) { boolean active = (mContext.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_YES) != 0; int mode = active ? UiModeManager.MODE_NIGHT_YES : UiModeManager.MODE_NIGHT_NO; mUiModeManager.setNightMode(mode); } else if (mCurrentMode == mContext.getString(R.string.dark_ui_auto_mode_auto)) { } else if (mCurrentMode == mPreference.findIndexOfValue( mContext.getString(R.string.dark_ui_auto_mode_auto))) { mUiModeManager.setNightMode(UiModeManager.MODE_NIGHT_AUTO); } return true; Loading tests/robotests/src/com/android/settings/display/darkmode/DarkModeScheduleSelectorControllerTest.java +23 −15 Original line number Diff line number Diff line Loading @@ -14,11 +14,27 @@ package com.android.settings.display.darkmode; import static junit.framework.TestCase.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.UiModeManager; import android.content.Context; import android.os.PowerManager; import androidx.preference.DropDownPreference; import androidx.preference.PreferenceScreen; import com.android.settings.R; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; Loading @@ -26,16 +42,6 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import com.android.settings.R; import static junit.framework.TestCase.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @RunWith(RobolectricTestRunner.class) public class DarkModeScheduleSelectorControllerTest { Loading @@ -60,6 +66,11 @@ public class DarkModeScheduleSelectorControllerTest { when(mContext.getString(R.string.dark_ui_auto_mode_never)).thenReturn("never"); when(mContext.getString(R.string.dark_ui_auto_mode_auto)).thenReturn("auto"); mPreference = spy(new DropDownPreference(mContext)); mPreference.setEntryValues(new CharSequence[]{ mContext.getString(R.string.dark_ui_auto_mode_never), mContext.getString(R.string.dark_ui_auto_mode_auto) }); doNothing().when(mPreference).setValueIndex(anyInt()); when(mScreen.findPreference(anyString())).thenReturn(mPreference); when(mUiService.setNightModeActivated(anyBoolean())).thenReturn(true); mController = new DarkModeScheduleSelectorController(mContext, mPreferenceKey); Loading @@ -81,23 +92,20 @@ public class DarkModeScheduleSelectorControllerTest { public void nightMode_updateStateNone_dropDownValueChangedToNone() { when(mUiService.getNightMode()).thenReturn(UiModeManager.MODE_NIGHT_YES); mController.displayPreference(mScreen); mController.updateState(mPreference); verify(mPreference).setValue(mContext.getString(R.string.dark_ui_auto_mode_never)); verify(mPreference).setValueIndex(0); } @Test public void nightMode_updateStateNone_dropDownValueChangedToAuto() { when(mUiService.getNightMode()).thenReturn(UiModeManager.MODE_NIGHT_AUTO); mController.displayPreference(mScreen); mController.updateState(mPreference); verify(mPreference).setValue(mContext.getString(R.string.dark_ui_auto_mode_auto)); verify(mPreference).setValueIndex(1); } @Test public void batterySaver_dropDown_disabledSelector() { when(mPM.isPowerSaveMode()).thenReturn(true); mController.displayPreference(mScreen); mController.updateState(mPreference); verify(mPreference).setEnabled(eq(false)); } } Loading
res/values/arrays.xml +2 −2 Original line number Diff line number Diff line Loading @@ -102,9 +102,9 @@ <!-- Dark theme scheduling preferences [CHAR LIMIT=NONE] --> <string-array name="dark_ui_scheduler_preference_titles"> <!-- 1: None --> <!-- 0: None --> <item>@string/dark_ui_auto_mode_never</item> <!-- 2: Auto --> <!-- 1: Auto --> <item>@string/dark_ui_auto_mode_auto</item> </string-array> Loading
src/com/android/settings/display/darkmode/DarkModeScheduleSelectorController.java +19 −14 Original line number Diff line number Diff line Loading @@ -18,9 +18,11 @@ import android.app.UiModeManager; import android.content.Context; import android.content.res.Configuration; import android.os.PowerManager; import androidx.preference.DropDownPreference; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; Loading @@ -33,7 +35,7 @@ public class DarkModeScheduleSelectorController extends BasePreferenceController private final UiModeManager mUiModeManager; private PowerManager mPowerManager; private DropDownPreference mPreference; private String mCurrentMode; private int mCurrentMode; public DarkModeScheduleSelectorController(Context context, String key) { super(context, key); Loading @@ -44,8 +46,8 @@ public class DarkModeScheduleSelectorController extends BasePreferenceController @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreference = screen.findPreference(getPreferenceKey()); init(); } @Override Loading @@ -53,32 +55,35 @@ public class DarkModeScheduleSelectorController extends BasePreferenceController return BasePreferenceController.AVAILABLE; } @Override public final void updateState(Preference preference) { private void init() { final boolean batterySaver = mPowerManager.isPowerSaveMode(); mPreference.setEnabled(!batterySaver); mCurrentMode = mUiModeManager.getNightMode() == UiModeManager.MODE_NIGHT_AUTO ? mContext.getString(R.string.dark_ui_auto_mode_auto) : mContext.getString(R.string.dark_ui_auto_mode_never); mPreference.setValue(mCurrentMode); mCurrentMode = getCurrentMode(); mPreference.setValueIndex(mCurrentMode); } private int getCurrentMode() { final int resId = mUiModeManager.getNightMode() == UiModeManager.MODE_NIGHT_AUTO ? R.string.dark_ui_auto_mode_auto : R.string.dark_ui_auto_mode_never; return mPreference.findIndexOfValue(mContext.getString(resId)); } @Override public final boolean onPreferenceChange(Preference preference, Object newValue) { String newMode = (String) newValue; final int newMode = mPreference.findIndexOfValue((String) newValue); if (newMode == mCurrentMode) { return false; } mCurrentMode = newMode; if (mCurrentMode == mContext.getString(R.string.dark_ui_auto_mode_never)) { if (mCurrentMode == mPreference.findIndexOfValue( mContext.getString(R.string.dark_ui_auto_mode_never))) { boolean active = (mContext.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_YES) != 0; int mode = active ? UiModeManager.MODE_NIGHT_YES : UiModeManager.MODE_NIGHT_NO; mUiModeManager.setNightMode(mode); } else if (mCurrentMode == mContext.getString(R.string.dark_ui_auto_mode_auto)) { } else if (mCurrentMode == mPreference.findIndexOfValue( mContext.getString(R.string.dark_ui_auto_mode_auto))) { mUiModeManager.setNightMode(UiModeManager.MODE_NIGHT_AUTO); } return true; Loading
tests/robotests/src/com/android/settings/display/darkmode/DarkModeScheduleSelectorControllerTest.java +23 −15 Original line number Diff line number Diff line Loading @@ -14,11 +14,27 @@ package com.android.settings.display.darkmode; import static junit.framework.TestCase.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.UiModeManager; import android.content.Context; import android.os.PowerManager; import androidx.preference.DropDownPreference; import androidx.preference.PreferenceScreen; import com.android.settings.R; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; Loading @@ -26,16 +42,6 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import com.android.settings.R; import static junit.framework.TestCase.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @RunWith(RobolectricTestRunner.class) public class DarkModeScheduleSelectorControllerTest { Loading @@ -60,6 +66,11 @@ public class DarkModeScheduleSelectorControllerTest { when(mContext.getString(R.string.dark_ui_auto_mode_never)).thenReturn("never"); when(mContext.getString(R.string.dark_ui_auto_mode_auto)).thenReturn("auto"); mPreference = spy(new DropDownPreference(mContext)); mPreference.setEntryValues(new CharSequence[]{ mContext.getString(R.string.dark_ui_auto_mode_never), mContext.getString(R.string.dark_ui_auto_mode_auto) }); doNothing().when(mPreference).setValueIndex(anyInt()); when(mScreen.findPreference(anyString())).thenReturn(mPreference); when(mUiService.setNightModeActivated(anyBoolean())).thenReturn(true); mController = new DarkModeScheduleSelectorController(mContext, mPreferenceKey); Loading @@ -81,23 +92,20 @@ public class DarkModeScheduleSelectorControllerTest { public void nightMode_updateStateNone_dropDownValueChangedToNone() { when(mUiService.getNightMode()).thenReturn(UiModeManager.MODE_NIGHT_YES); mController.displayPreference(mScreen); mController.updateState(mPreference); verify(mPreference).setValue(mContext.getString(R.string.dark_ui_auto_mode_never)); verify(mPreference).setValueIndex(0); } @Test public void nightMode_updateStateNone_dropDownValueChangedToAuto() { when(mUiService.getNightMode()).thenReturn(UiModeManager.MODE_NIGHT_AUTO); mController.displayPreference(mScreen); mController.updateState(mPreference); verify(mPreference).setValue(mContext.getString(R.string.dark_ui_auto_mode_auto)); verify(mPreference).setValueIndex(1); } @Test public void batterySaver_dropDown_disabledSelector() { when(mPM.isPowerSaveMode()).thenReturn(true); mController.displayPreference(mScreen); mController.updateState(mPreference); verify(mPreference).setEnabled(eq(false)); } }