Show color modes from config_availableColorModes
Check config_availableColorModes to decide which color mode options to show. Bug: 73824924 Bug: 73825738 Test: 2016, 2017, and 2018 devices Change-Id: I42915595348061ff4b3f2fdf14753e96dfcb2052
This commit is contained in:
@@ -49,6 +49,9 @@ public class ColorModePreferenceController extends BasePreferenceController {
|
|||||||
@Override
|
@Override
|
||||||
public CharSequence getSummary() {
|
public CharSequence getSummary() {
|
||||||
final int colorMode = getColorDisplayController().getColorMode();
|
final int colorMode = getColorDisplayController().getColorMode();
|
||||||
|
if (colorMode == ColorDisplayController.COLOR_MODE_AUTOMATIC) {
|
||||||
|
return mContext.getText(R.string.color_mode_option_automatic);
|
||||||
|
}
|
||||||
if (colorMode == ColorDisplayController.COLOR_MODE_SATURATED) {
|
if (colorMode == ColorDisplayController.COLOR_MODE_SATURATED) {
|
||||||
return mContext.getText(R.string.color_mode_option_saturated);
|
return mContext.getText(R.string.color_mode_option_saturated);
|
||||||
}
|
}
|
||||||
|
@@ -26,7 +26,7 @@ import com.android.settings.R;
|
|||||||
import com.android.settings.widget.RadioButtonPickerFragment;
|
import com.android.settings.widget.RadioButtonPickerFragment;
|
||||||
import com.android.settingslib.widget.CandidateInfo;
|
import com.android.settingslib.widget.CandidateInfo;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@SuppressWarnings("WeakerAccess")
|
@SuppressWarnings("WeakerAccess")
|
||||||
@@ -39,6 +39,8 @@ public class ColorModePreferenceFragment extends RadioButtonPickerFragment
|
|||||||
static final String KEY_COLOR_MODE_BOOSTED = "color_mode_boosted";
|
static final String KEY_COLOR_MODE_BOOSTED = "color_mode_boosted";
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
static final String KEY_COLOR_MODE_SATURATED = "color_mode_saturated";
|
static final String KEY_COLOR_MODE_SATURATED = "color_mode_saturated";
|
||||||
|
@VisibleForTesting
|
||||||
|
static final String KEY_COLOR_MODE_AUTOMATIC = "color_mode_automatic";
|
||||||
|
|
||||||
private ColorDisplayController mController;
|
private ColorDisplayController mController;
|
||||||
|
|
||||||
@@ -78,21 +80,41 @@ public class ColorModePreferenceFragment extends RadioButtonPickerFragment
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected List<? extends CandidateInfo> getCandidates() {
|
protected List<? extends CandidateInfo> getCandidates() {
|
||||||
Context c = getContext();
|
final Context c = getContext();
|
||||||
return Arrays.asList(
|
final int[] availableColorModes = c.getResources().getIntArray(
|
||||||
new ColorModeCandidateInfo(c.getText(R.string.color_mode_option_natural),
|
com.android.internal.R.array.config_availableColorModes);
|
||||||
KEY_COLOR_MODE_NATURAL, true /* enabled */),
|
|
||||||
new ColorModeCandidateInfo(c.getText(R.string.color_mode_option_boosted),
|
List<ColorModeCandidateInfo> candidates = new ArrayList<ColorModeCandidateInfo>();
|
||||||
KEY_COLOR_MODE_BOOSTED, true /* enabled */),
|
if (availableColorModes != null) {
|
||||||
new ColorModeCandidateInfo(c.getText(R.string.color_mode_option_saturated),
|
for (int colorMode : availableColorModes) {
|
||||||
KEY_COLOR_MODE_SATURATED, true /* enabled */)
|
if (colorMode == ColorDisplayController.COLOR_MODE_NATURAL) {
|
||||||
);
|
candidates.add(new ColorModeCandidateInfo(
|
||||||
|
c.getText(R.string.color_mode_option_natural),
|
||||||
|
KEY_COLOR_MODE_NATURAL, true /* enabled */));
|
||||||
|
} else if (colorMode == ColorDisplayController.COLOR_MODE_BOOSTED) {
|
||||||
|
candidates.add(new ColorModeCandidateInfo(
|
||||||
|
c.getText(R.string.color_mode_option_boosted),
|
||||||
|
KEY_COLOR_MODE_BOOSTED, true /* enabled */));
|
||||||
|
} else if (colorMode == ColorDisplayController.COLOR_MODE_SATURATED) {
|
||||||
|
candidates.add(new ColorModeCandidateInfo(
|
||||||
|
c.getText(R.string.color_mode_option_saturated),
|
||||||
|
KEY_COLOR_MODE_SATURATED, true /* enabled */));
|
||||||
|
} else if (colorMode == ColorDisplayController.COLOR_MODE_AUTOMATIC) {
|
||||||
|
candidates.add(new ColorModeCandidateInfo(
|
||||||
|
c.getText(R.string.color_mode_option_automatic),
|
||||||
|
KEY_COLOR_MODE_AUTOMATIC, true /* enabled */));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return candidates;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String getDefaultKey() {
|
protected String getDefaultKey() {
|
||||||
final int colorMode = mController.getColorMode();
|
final int colorMode = mController.getColorMode();
|
||||||
if (colorMode == ColorDisplayController.COLOR_MODE_SATURATED) {
|
if (colorMode == ColorDisplayController.COLOR_MODE_AUTOMATIC) {
|
||||||
|
return KEY_COLOR_MODE_AUTOMATIC;
|
||||||
|
} else if (colorMode == ColorDisplayController.COLOR_MODE_SATURATED) {
|
||||||
return KEY_COLOR_MODE_SATURATED;
|
return KEY_COLOR_MODE_SATURATED;
|
||||||
} else if (colorMode == ColorDisplayController.COLOR_MODE_BOOSTED) {
|
} else if (colorMode == ColorDisplayController.COLOR_MODE_BOOSTED) {
|
||||||
return KEY_COLOR_MODE_BOOSTED;
|
return KEY_COLOR_MODE_BOOSTED;
|
||||||
@@ -112,6 +134,9 @@ public class ColorModePreferenceFragment extends RadioButtonPickerFragment
|
|||||||
case KEY_COLOR_MODE_SATURATED:
|
case KEY_COLOR_MODE_SATURATED:
|
||||||
mController.setColorMode(ColorDisplayController.COLOR_MODE_SATURATED);
|
mController.setColorMode(ColorDisplayController.COLOR_MODE_SATURATED);
|
||||||
break;
|
break;
|
||||||
|
case KEY_COLOR_MODE_AUTOMATIC:
|
||||||
|
mController.setColorMode(ColorDisplayController.COLOR_MODE_AUTOMATIC);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@@ -54,6 +54,16 @@ public class ColorModePreferenceControllerTest {
|
|||||||
doReturn(mColorDisplayController).when(mController).getColorDisplayController();
|
doReturn(mColorDisplayController).when(mController).getColorDisplayController();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void updateState_colorModeAutomatic_shouldSetSummaryToAutomatic() {
|
||||||
|
when(mColorDisplayController.getColorMode())
|
||||||
|
.thenReturn(ColorDisplayController.COLOR_MODE_AUTOMATIC);
|
||||||
|
|
||||||
|
mController.updateState(mPreference);
|
||||||
|
|
||||||
|
verify(mPreference).setSummary(mContext.getString(R.string.color_mode_option_automatic));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void updateState_colorModeSaturated_shouldSetSummaryToSaturated() {
|
public void updateState_colorModeSaturated_shouldSetSummaryToSaturated() {
|
||||||
when(mColorDisplayController.getColorMode())
|
when(mColorDisplayController.getColorMode())
|
||||||
|
@@ -34,6 +34,7 @@ import com.android.internal.logging.nano.MetricsProto;
|
|||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.applications.LayoutPreference;
|
import com.android.settings.applications.LayoutPreference;
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
|
import com.android.settings.testutils.shadow.SettingsShadowResources;
|
||||||
import com.android.settingslib.widget.CandidateInfo;
|
import com.android.settingslib.widget.CandidateInfo;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
@@ -43,11 +44,13 @@ import org.mockito.ArgumentCaptor;
|
|||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
|
import org.robolectric.annotation.Config;
|
||||||
import org.robolectric.util.ReflectionHelpers;
|
import org.robolectric.util.ReflectionHelpers;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@RunWith(SettingsRobolectricTestRunner.class)
|
@RunWith(SettingsRobolectricTestRunner.class)
|
||||||
|
@Config(shadows = SettingsShadowResources.class)
|
||||||
public class ColorModePreferenceFragmentTest {
|
public class ColorModePreferenceFragmentTest {
|
||||||
|
|
||||||
private ColorModePreferenceFragment mFragment;
|
private ColorModePreferenceFragment mFragment;
|
||||||
@@ -73,8 +76,64 @@ public class ColorModePreferenceFragmentTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getCandidates() {
|
public void getCandidates_all() {
|
||||||
when(mFragment.getContext()).thenReturn(RuntimeEnvironment.application);
|
when(mFragment.getContext()).thenReturn(RuntimeEnvironment.application);
|
||||||
|
SettingsShadowResources.overrideResource(
|
||||||
|
com.android.internal.R.array.config_availableColorModes, new int[]{
|
||||||
|
ColorDisplayController.COLOR_MODE_NATURAL,
|
||||||
|
ColorDisplayController.COLOR_MODE_BOOSTED,
|
||||||
|
ColorDisplayController.COLOR_MODE_SATURATED,
|
||||||
|
ColorDisplayController.COLOR_MODE_AUTOMATIC
|
||||||
|
});
|
||||||
|
List<? extends CandidateInfo> candidates = mFragment.getCandidates();
|
||||||
|
|
||||||
|
assertThat(candidates.size()).isEqualTo(4);
|
||||||
|
assertThat(candidates.get(0).getKey())
|
||||||
|
.isEqualTo(ColorModePreferenceFragment.KEY_COLOR_MODE_NATURAL);
|
||||||
|
assertThat(candidates.get(1).getKey())
|
||||||
|
.isEqualTo(ColorModePreferenceFragment.KEY_COLOR_MODE_BOOSTED);
|
||||||
|
assertThat(candidates.get(2).getKey())
|
||||||
|
.isEqualTo(ColorModePreferenceFragment.KEY_COLOR_MODE_SATURATED);
|
||||||
|
assertThat(candidates.get(3).getKey())
|
||||||
|
.isEqualTo(ColorModePreferenceFragment.KEY_COLOR_MODE_AUTOMATIC);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getCandidates_none() {
|
||||||
|
when(mFragment.getContext()).thenReturn(RuntimeEnvironment.application);
|
||||||
|
SettingsShadowResources.overrideResource(
|
||||||
|
com.android.internal.R.array.config_availableColorModes, null);
|
||||||
|
List<? extends CandidateInfo> candidates = mFragment.getCandidates();
|
||||||
|
|
||||||
|
assertThat(candidates.size()).isEqualTo(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getCandidates_withAutomatic() {
|
||||||
|
when(mFragment.getContext()).thenReturn(RuntimeEnvironment.application);
|
||||||
|
SettingsShadowResources.overrideResource(
|
||||||
|
com.android.internal.R.array.config_availableColorModes, new int[]{
|
||||||
|
ColorDisplayController.COLOR_MODE_NATURAL,
|
||||||
|
ColorDisplayController.COLOR_MODE_AUTOMATIC
|
||||||
|
});
|
||||||
|
List<? extends CandidateInfo> candidates = mFragment.getCandidates();
|
||||||
|
|
||||||
|
assertThat(candidates.size()).isEqualTo(2);
|
||||||
|
assertThat(candidates.get(0).getKey())
|
||||||
|
.isEqualTo(ColorModePreferenceFragment.KEY_COLOR_MODE_NATURAL);
|
||||||
|
assertThat(candidates.get(1).getKey())
|
||||||
|
.isEqualTo(ColorModePreferenceFragment.KEY_COLOR_MODE_AUTOMATIC);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getCandidates_withoutAutomatic() {
|
||||||
|
when(mFragment.getContext()).thenReturn(RuntimeEnvironment.application);
|
||||||
|
SettingsShadowResources.overrideResource(
|
||||||
|
com.android.internal.R.array.config_availableColorModes, new int[]{
|
||||||
|
ColorDisplayController.COLOR_MODE_NATURAL,
|
||||||
|
ColorDisplayController.COLOR_MODE_BOOSTED,
|
||||||
|
ColorDisplayController.COLOR_MODE_SATURATED,
|
||||||
|
});
|
||||||
List<? extends CandidateInfo> candidates = mFragment.getCandidates();
|
List<? extends CandidateInfo> candidates = mFragment.getCandidates();
|
||||||
|
|
||||||
assertThat(candidates.size()).isEqualTo(3);
|
assertThat(candidates.size()).isEqualTo(3);
|
||||||
@@ -113,6 +172,15 @@ public class ColorModePreferenceFragmentTest {
|
|||||||
.isEqualTo(ColorModePreferenceFragment.KEY_COLOR_MODE_SATURATED);
|
.isEqualTo(ColorModePreferenceFragment.KEY_COLOR_MODE_SATURATED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getKey_automatic() {
|
||||||
|
when(mController.getColorMode())
|
||||||
|
.thenReturn(ColorDisplayController.COLOR_MODE_AUTOMATIC);
|
||||||
|
|
||||||
|
assertThat(mFragment.getDefaultKey())
|
||||||
|
.isEqualTo(ColorModePreferenceFragment.KEY_COLOR_MODE_AUTOMATIC);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setKey_natural() {
|
public void setKey_natural() {
|
||||||
mFragment.setDefaultKey(ColorModePreferenceFragment.KEY_COLOR_MODE_NATURAL);
|
mFragment.setDefaultKey(ColorModePreferenceFragment.KEY_COLOR_MODE_NATURAL);
|
||||||
@@ -131,6 +199,12 @@ public class ColorModePreferenceFragmentTest {
|
|||||||
verify(mController).setColorMode(ColorDisplayController.COLOR_MODE_SATURATED);
|
verify(mController).setColorMode(ColorDisplayController.COLOR_MODE_SATURATED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void setKey_automatic() {
|
||||||
|
mFragment.setDefaultKey(ColorModePreferenceFragment.KEY_COLOR_MODE_AUTOMATIC);
|
||||||
|
verify(mController).setColorMode(ColorDisplayController.COLOR_MODE_AUTOMATIC);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onCreatePreferences_useNewTitle_shouldAddColorModePreferences() {
|
public void onCreatePreferences_useNewTitle_shouldAddColorModePreferences() {
|
||||||
doNothing().when(mFragment).addPreferencesFromResource(anyInt());
|
doNothing().when(mFragment).addPreferencesFromResource(anyInt());
|
||||||
|
@@ -135,6 +135,14 @@ public class SettingsShadowResources extends ShadowResources {
|
|||||||
|| id == com.android.settings.R.array.batterymeter_plus_points) {
|
|| id == com.android.settings.R.array.batterymeter_plus_points) {
|
||||||
return new int[2];
|
return new int[2];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final Object override;
|
||||||
|
synchronized (sResourceOverrides) {
|
||||||
|
override = sResourceOverrides.get(id);
|
||||||
|
}
|
||||||
|
if (override instanceof int[]) {
|
||||||
|
return (int[]) override;
|
||||||
|
}
|
||||||
return directlyOn(realResources, Resources.class).getIntArray(id);
|
return directlyOn(realResources, Resources.class).getIntArray(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user