diff --git a/src/com/android/settings/accessibility/ReduceBrightColorsIntensityPreferenceController.java b/src/com/android/settings/accessibility/ReduceBrightColorsIntensityPreferenceController.java index 09243e59bb0..ea7fb7c3111 100644 --- a/src/com/android/settings/accessibility/ReduceBrightColorsIntensityPreferenceController.java +++ b/src/com/android/settings/accessibility/ReduceBrightColorsIntensityPreferenceController.java @@ -17,6 +17,7 @@ package com.android.settings.accessibility; import android.content.Context; +import android.hardware.display.ColorDisplayManager; import android.provider.Settings; import androidx.preference.Preference; @@ -34,7 +35,12 @@ public class ReduceBrightColorsIntensityPreferenceController extends SliderPrefe @Override public int getAvailabilityStatus() { - // TODO(b/170970675): Call into ColorDisplayService (CDS) to get availability/config status + if (!ColorDisplayManager.isColorTransformAccelerated(mContext)) { + return UNSUPPORTED_ON_DEVICE; + } else if (Settings.Secure.getInt(mContext.getContentResolver(), + Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED, 0) != 1) { + return DISABLED_DEPENDENT_SETTING; + } return AVAILABLE; } @@ -59,14 +65,14 @@ public class ReduceBrightColorsIntensityPreferenceController extends SliderPrefe @Override public int getSliderPosition() { - // TODO(b/170970675): Call into CDS to get intensity - return 0; + return Settings.Secure.getInt(mContext.getContentResolver(), + Settings.Secure.REDUCE_BRIGHT_COLORS_LEVEL, 0); } @Override public boolean setSliderPosition(int position) { - // TODO(b/170970675): Call into CDS to set intensity - return true; + return Settings.Secure.putInt(mContext.getContentResolver(), + Settings.Secure.REDUCE_BRIGHT_COLORS_LEVEL, position); } @Override diff --git a/src/com/android/settings/accessibility/ReduceBrightColorsPreferenceController.java b/src/com/android/settings/accessibility/ReduceBrightColorsPreferenceController.java index c5ce77caac0..82b3a642cbe 100644 --- a/src/com/android/settings/accessibility/ReduceBrightColorsPreferenceController.java +++ b/src/com/android/settings/accessibility/ReduceBrightColorsPreferenceController.java @@ -17,6 +17,7 @@ package com.android.settings.accessibility; import android.content.Context; +import android.hardware.display.ColorDisplayManager; import android.provider.Settings; import com.android.settings.core.BasePreferenceController; @@ -37,7 +38,7 @@ public class ReduceBrightColorsPreferenceController extends BasePreferenceContro @Override public int getAvailabilityStatus() { - // TODO(b/170970675): call into CDS to get availability/config status - return AVAILABLE; + return ColorDisplayManager.isColorTransformAccelerated(mContext) ? AVAILABLE + : UNSUPPORTED_ON_DEVICE; } } diff --git a/tests/unit/src/com/android/settings/accessibility/ReduceBrightColorsIntensityPreferenceControllerTest.java b/tests/unit/src/com/android/settings/accessibility/ReduceBrightColorsIntensityPreferenceControllerTest.java index 4cc17dcc87c..dee88176da5 100644 --- a/tests/unit/src/com/android/settings/accessibility/ReduceBrightColorsIntensityPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/accessibility/ReduceBrightColorsIntensityPreferenceControllerTest.java @@ -18,32 +18,69 @@ package com.android.settings.accessibility; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.when; + import android.content.Context; +import android.content.res.Resources; +import android.provider.Settings; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; +import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @RunWith(AndroidJUnit4.class) -/** TODO(b/170970675): Update and add tests after ColorDisplayService work is integrated */ public class ReduceBrightColorsIntensityPreferenceControllerTest { - private final Context mContext = ApplicationProvider.getApplicationContext(); - private final ReduceBrightColorsIntensityPreferenceController mPreferenceController = - new ReduceBrightColorsIntensityPreferenceController(mContext, - "rbc_intensity"); + + private Context mContext; + private Resources mResources; + private ReduceBrightColorsIntensityPreferenceController mPreferenceController; + + @Before + public void setUp() { + mContext = spy(ApplicationProvider.getApplicationContext()); + mResources = spy(mContext.getResources()); + when(mContext.getResources()).thenReturn(mResources); + mPreferenceController = new ReduceBrightColorsIntensityPreferenceController(mContext, + "rbc_intensity"); + } @Test public void isAvailable_configuredRbcAvailable_enabledRbc_shouldReturnTrue() { + Settings.Secure.putInt(mContext.getContentResolver(), + Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED, 1); + doReturn(true).when(mResources).getBoolean( + com.android.internal.R.bool.config_setColorTransformAccelerated); assertThat(mPreferenceController.isAvailable()).isTrue(); } @Test - public void isAvailable_configuredRbcAvailable_disabledRbc_shouldReturnFalse() { + public void isAvailable_configuredRbcAvailable_disabledRbc_shouldReturnTrue() { + Settings.Secure.putInt(mContext.getContentResolver(), + Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED, 0); + doReturn(true).when(mResources).getBoolean( + com.android.internal.R.bool.config_setColorTransformAccelerated); assertThat(mPreferenceController.isAvailable()).isTrue(); } @Test public void isAvailable_configuredRbcUnavailable_enabledRbc_shouldReturnFalse() { - assertThat(mPreferenceController.isAvailable()).isTrue(); + Settings.Secure.putInt(mContext.getContentResolver(), + Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED, 1); + doReturn(false).when(mResources).getBoolean( + com.android.internal.R.bool.config_setColorTransformAccelerated); + assertThat(mPreferenceController.isAvailable()).isFalse(); + } + + @Test + public void onPreferenceChange_changesTemperature() { + Settings.Secure.putInt(mContext.getContentResolver(), + Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED, 1); + mPreferenceController.onPreferenceChange(/* preference= */ null, 20); + assertThat(Settings.Secure.getInt(mContext.getContentResolver(), + Settings.Secure.REDUCE_BRIGHT_COLORS_LEVEL, 0)) + .isEqualTo(20); } }