Loading src/com/android/settings/display/ColorModePreferenceController.java +31 −9 Original line number Diff line number Diff line Loading @@ -18,34 +18,56 @@ import android.os.IBinder; import android.os.Parcel; import android.os.RemoteException; import android.os.ServiceManager; import android.support.v7.preference.Preference; import android.util.Log; import com.android.internal.annotations.VisibleForTesting; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.core.AbstractPreferenceController; import com.android.internal.app.ColorDisplayController; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; public class ColorModePreferenceController extends AbstractPreferenceController implements PreferenceControllerMixin { public class ColorModePreferenceController extends BasePreferenceController { private static final String TAG = "ColorModePreference"; private static final String KEY_COLOR_MODE = "color_mode"; private static final int SURFACE_FLINGER_TRANSACTION_QUERY_WIDE_COLOR = 1024; private final ConfigurationWrapper mConfigWrapper; private ColorDisplayController mColorDisplayController; public ColorModePreferenceController(Context context) { super(context); super(context, KEY_COLOR_MODE); mConfigWrapper = new ConfigurationWrapper(); } @Override public String getPreferenceKey() { return KEY_COLOR_MODE; public int getAvailabilityStatus() { return mConfigWrapper.isScreenWideColorGamut() ? AVAILABLE : DISABLED_FOR_USER; } @Override public boolean isAvailable() { return mConfigWrapper.isScreenWideColorGamut(); public void updateState(Preference preference) { preference.setSummary(getSummary()); } @Override public CharSequence getSummary() { final int colorMode = getColorDisplayController().getColorMode(); if (colorMode == ColorDisplayController.COLOR_MODE_SATURATED) { return mContext.getText(R.string.color_mode_option_saturated); } if (colorMode == ColorDisplayController.COLOR_MODE_BOOSTED) { return mContext.getText(R.string.color_mode_option_boosted); } return mContext.getText(R.string.color_mode_option_natural); } @VisibleForTesting ColorDisplayController getColorDisplayController() { if (mColorDisplayController == null) { mColorDisplayController = new ColorDisplayController(mContext); } return mColorDisplayController; } @VisibleForTesting Loading tests/robotests/src/com/android/settings/display/ColorModePreferenceControllerTest.java 0 → 100644 +90 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 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; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; import android.content.Context; import android.support.v7.preference.Preference; import com.android.internal.app.ColorDisplayController; import com.android.settings.R; import com.android.settings.TestConfig; import com.android.settings.testutils.SettingsRobolectricTestRunner; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; @RunWith(SettingsRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) public class ColorModePreferenceControllerTest { @Mock private Preference mPreference; @Mock private ColorDisplayController mColorDisplayController; private Context mContext; private ColorModePreferenceController mController; @Before public void setup() { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; mController = spy(new ColorModePreferenceController(mContext)); doReturn(mColorDisplayController).when(mController).getColorDisplayController(); } @Test public void updateState_colorModeSaturated_shouldSetSummaryToSaturated() { when(mColorDisplayController.getColorMode()) .thenReturn(ColorDisplayController.COLOR_MODE_SATURATED); mController.updateState(mPreference); verify(mPreference).setSummary(mContext.getString(R.string.color_mode_option_saturated)); } @Test public void updateState_colorModeBoosted_shouldSetSummaryToBoosted() { when(mColorDisplayController.getColorMode()) .thenReturn(ColorDisplayController.COLOR_MODE_BOOSTED); mController.updateState(mPreference); verify(mPreference).setSummary(mContext.getString(R.string.color_mode_option_boosted)); } @Test public void updateState_colorModeNatural_shouldSetSummaryToNatural() { when(mColorDisplayController.getColorMode()) .thenReturn(ColorDisplayController.COLOR_MODE_NATURAL); mController.updateState(mPreference); verify(mPreference).setSummary(mContext.getString(R.string.color_mode_option_natural)); } } Loading
src/com/android/settings/display/ColorModePreferenceController.java +31 −9 Original line number Diff line number Diff line Loading @@ -18,34 +18,56 @@ import android.os.IBinder; import android.os.Parcel; import android.os.RemoteException; import android.os.ServiceManager; import android.support.v7.preference.Preference; import android.util.Log; import com.android.internal.annotations.VisibleForTesting; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.core.AbstractPreferenceController; import com.android.internal.app.ColorDisplayController; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; public class ColorModePreferenceController extends AbstractPreferenceController implements PreferenceControllerMixin { public class ColorModePreferenceController extends BasePreferenceController { private static final String TAG = "ColorModePreference"; private static final String KEY_COLOR_MODE = "color_mode"; private static final int SURFACE_FLINGER_TRANSACTION_QUERY_WIDE_COLOR = 1024; private final ConfigurationWrapper mConfigWrapper; private ColorDisplayController mColorDisplayController; public ColorModePreferenceController(Context context) { super(context); super(context, KEY_COLOR_MODE); mConfigWrapper = new ConfigurationWrapper(); } @Override public String getPreferenceKey() { return KEY_COLOR_MODE; public int getAvailabilityStatus() { return mConfigWrapper.isScreenWideColorGamut() ? AVAILABLE : DISABLED_FOR_USER; } @Override public boolean isAvailable() { return mConfigWrapper.isScreenWideColorGamut(); public void updateState(Preference preference) { preference.setSummary(getSummary()); } @Override public CharSequence getSummary() { final int colorMode = getColorDisplayController().getColorMode(); if (colorMode == ColorDisplayController.COLOR_MODE_SATURATED) { return mContext.getText(R.string.color_mode_option_saturated); } if (colorMode == ColorDisplayController.COLOR_MODE_BOOSTED) { return mContext.getText(R.string.color_mode_option_boosted); } return mContext.getText(R.string.color_mode_option_natural); } @VisibleForTesting ColorDisplayController getColorDisplayController() { if (mColorDisplayController == null) { mColorDisplayController = new ColorDisplayController(mContext); } return mColorDisplayController; } @VisibleForTesting Loading
tests/robotests/src/com/android/settings/display/ColorModePreferenceControllerTest.java 0 → 100644 +90 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 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; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; import android.content.Context; import android.support.v7.preference.Preference; import com.android.internal.app.ColorDisplayController; import com.android.settings.R; import com.android.settings.TestConfig; import com.android.settings.testutils.SettingsRobolectricTestRunner; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; @RunWith(SettingsRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) public class ColorModePreferenceControllerTest { @Mock private Preference mPreference; @Mock private ColorDisplayController mColorDisplayController; private Context mContext; private ColorModePreferenceController mController; @Before public void setup() { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; mController = spy(new ColorModePreferenceController(mContext)); doReturn(mColorDisplayController).when(mController).getColorDisplayController(); } @Test public void updateState_colorModeSaturated_shouldSetSummaryToSaturated() { when(mColorDisplayController.getColorMode()) .thenReturn(ColorDisplayController.COLOR_MODE_SATURATED); mController.updateState(mPreference); verify(mPreference).setSummary(mContext.getString(R.string.color_mode_option_saturated)); } @Test public void updateState_colorModeBoosted_shouldSetSummaryToBoosted() { when(mColorDisplayController.getColorMode()) .thenReturn(ColorDisplayController.COLOR_MODE_BOOSTED); mController.updateState(mPreference); verify(mPreference).setSummary(mContext.getString(R.string.color_mode_option_boosted)); } @Test public void updateState_colorModeNatural_shouldSetSummaryToNatural() { when(mColorDisplayController.getColorMode()) .thenReturn(ColorDisplayController.COLOR_MODE_NATURAL); mController.updateState(mPreference); verify(mPreference).setSummary(mContext.getString(R.string.color_mode_option_natural)); } }