Loading src/com/android/settings/display/ColorModePreferenceController.java +10 −12 Original line number Diff line number Diff line Loading @@ -18,14 +18,12 @@ import android.hardware.display.ColorDisplayManager; import androidx.annotation.VisibleForTesting; import com.android.internal.app.ColorDisplayController; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; public class ColorModePreferenceController extends BasePreferenceController { private static final String TAG = "ColorModePreference"; private ColorDisplayController mColorDisplayController; private ColorDisplayManager mColorDisplayManager; public ColorModePreferenceController(Context context, String key) { super(context, key); Loading @@ -35,30 +33,30 @@ public class ColorModePreferenceController extends BasePreferenceController { public int getAvailabilityStatus() { return mContext.getSystemService(ColorDisplayManager.class) .isDeviceColorManaged() && !getColorDisplayController().getAccessibilityTransformActivated() ? && !ColorDisplayManager.areAccessibilityTransformsEnabled(mContext) ? AVAILABLE_UNSEARCHABLE : DISABLED_FOR_USER; } @Override public CharSequence getSummary() { final int colorMode = getColorDisplayController().getColorMode(); if (colorMode == ColorDisplayController.COLOR_MODE_AUTOMATIC) { final int colorMode = getColorDisplayManager().getColorMode(); if (colorMode == ColorDisplayManager.COLOR_MODE_AUTOMATIC) { return mContext.getText(R.string.color_mode_option_automatic); } if (colorMode == ColorDisplayController.COLOR_MODE_SATURATED) { if (colorMode == ColorDisplayManager.COLOR_MODE_SATURATED) { return mContext.getText(R.string.color_mode_option_saturated); } if (colorMode == ColorDisplayController.COLOR_MODE_BOOSTED) { if (colorMode == ColorDisplayManager.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); ColorDisplayManager getColorDisplayManager() { if (mColorDisplayManager == null) { mColorDisplayManager = mContext.getSystemService(ColorDisplayManager.class); } return mColorDisplayController; return mColorDisplayManager; } } src/com/android/settings/display/ColorModePreferenceFragment.java +47 −31 Original line number Diff line number Diff line Loading @@ -14,14 +14,20 @@ package com.android.settings.display; import android.app.settings.SettingsEnums; import android.content.ContentResolver; import android.content.Context; import android.database.ContentObserver; import android.graphics.drawable.Drawable; import android.hardware.display.ColorDisplayManager; import android.net.Uri; import android.os.Handler; import android.os.Looper; import android.provider.SearchIndexableResource; import android.provider.Settings.Secure; import androidx.annotation.VisibleForTesting; import androidx.preference.PreferenceScreen; import com.android.internal.app.ColorDisplayController; import com.android.settings.R; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; Loading @@ -36,8 +42,7 @@ import java.util.List; @SuppressWarnings("WeakerAccess") @SearchIndexable public class ColorModePreferenceFragment extends RadioButtonPickerFragment implements ColorDisplayController.Callback { public class ColorModePreferenceFragment extends RadioButtonPickerFragment { @VisibleForTesting static final String KEY_COLOR_MODE_NATURAL = "color_mode_natural"; Loading @@ -48,21 +53,41 @@ public class ColorModePreferenceFragment extends RadioButtonPickerFragment @VisibleForTesting static final String KEY_COLOR_MODE_AUTOMATIC = "color_mode_automatic"; private ColorDisplayController mController; private ContentObserver mContentObserver; private ColorDisplayManager mColorDisplayManager; @Override public void onAttach(Context context) { super.onAttach(context); mController = new ColorDisplayController(context); mController.setListener(this); mColorDisplayManager = context.getSystemService(ColorDisplayManager.class); final ContentResolver cr = context.getContentResolver(); mContentObserver = new ContentObserver(new Handler(Looper.getMainLooper())) { @Override public void onChange(boolean selfChange, Uri uri) { super.onChange(selfChange, uri); if (ColorDisplayManager.areAccessibilityTransformsEnabled(getContext())) { // Color modes are not configurable when Accessibility transforms are enabled. // Close this fragment in that case. getActivity().finish(); } } }; cr.registerContentObserver( Secure.getUriFor(Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED), false /* notifyForDescendants */, mContentObserver, mUserId); cr.registerContentObserver( Secure.getUriFor(Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED), false /* notifyForDescendants */, mContentObserver, mUserId); } @Override public void onDetach() { super.onDetach(); if (mController != null) { mController.setListener(null); mController = null; if (mContentObserver != null) { getContext().getContentResolver().unregisterContentObserver(mContentObserver); mContentObserver = null; } } Loading Loading @@ -90,22 +115,22 @@ public class ColorModePreferenceFragment extends RadioButtonPickerFragment final int[] availableColorModes = c.getResources().getIntArray( com.android.internal.R.array.config_availableColorModes); List<ColorModeCandidateInfo> candidates = new ArrayList<ColorModeCandidateInfo>(); List<ColorModeCandidateInfo> candidates = new ArrayList<>(); if (availableColorModes != null) { for (int colorMode : availableColorModes) { if (colorMode == ColorDisplayController.COLOR_MODE_NATURAL) { if (colorMode == ColorDisplayManager.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) { } else if (colorMode == ColorDisplayManager.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) { } else if (colorMode == ColorDisplayManager.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) { } else if (colorMode == ColorDisplayManager.COLOR_MODE_AUTOMATIC) { candidates.add(new ColorModeCandidateInfo( c.getText(R.string.color_mode_option_automatic), KEY_COLOR_MODE_AUTOMATIC, true /* enabled */)); Loading @@ -117,12 +142,12 @@ public class ColorModePreferenceFragment extends RadioButtonPickerFragment @Override protected String getDefaultKey() { final int colorMode = mController.getColorMode(); if (colorMode == ColorDisplayController.COLOR_MODE_AUTOMATIC) { final int colorMode = mColorDisplayManager.getColorMode(); if (colorMode == ColorDisplayManager.COLOR_MODE_AUTOMATIC) { return KEY_COLOR_MODE_AUTOMATIC; } else if (colorMode == ColorDisplayController.COLOR_MODE_SATURATED) { } else if (colorMode == ColorDisplayManager.COLOR_MODE_SATURATED) { return KEY_COLOR_MODE_SATURATED; } else if (colorMode == ColorDisplayController.COLOR_MODE_BOOSTED) { } else if (colorMode == ColorDisplayManager.COLOR_MODE_BOOSTED) { return KEY_COLOR_MODE_BOOSTED; } return KEY_COLOR_MODE_NATURAL; Loading @@ -132,16 +157,16 @@ public class ColorModePreferenceFragment extends RadioButtonPickerFragment protected boolean setDefaultKey(String key) { switch (key) { case KEY_COLOR_MODE_NATURAL: mController.setColorMode(ColorDisplayController.COLOR_MODE_NATURAL); mColorDisplayManager.setColorMode(ColorDisplayManager.COLOR_MODE_NATURAL); break; case KEY_COLOR_MODE_BOOSTED: mController.setColorMode(ColorDisplayController.COLOR_MODE_BOOSTED); mColorDisplayManager.setColorMode(ColorDisplayManager.COLOR_MODE_BOOSTED); break; case KEY_COLOR_MODE_SATURATED: mController.setColorMode(ColorDisplayController.COLOR_MODE_SATURATED); mColorDisplayManager.setColorMode(ColorDisplayManager.COLOR_MODE_SATURATED); break; case KEY_COLOR_MODE_AUTOMATIC: mController.setColorMode(ColorDisplayController.COLOR_MODE_AUTOMATIC); mColorDisplayManager.setColorMode(ColorDisplayManager.COLOR_MODE_AUTOMATIC); break; } return true; Loading Loading @@ -179,15 +204,6 @@ public class ColorModePreferenceFragment extends RadioButtonPickerFragment } } @Override public void onAccessibilityTransformChanged(boolean state) { // Color modes are no not configurable when Accessibility transforms are enabled. Close // this fragment in that case. if (state) { getActivity().onBackPressed(); } } public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = new BaseSearchIndexProvider() { @Override Loading src/com/android/settings/display/DisplayWhiteBalancePreferenceController.java +10 −8 Original line number Diff line number Diff line Loading @@ -17,12 +17,13 @@ import android.content.Context; import android.hardware.display.ColorDisplayManager; import android.os.UserHandle; import android.provider.Settings.Secure; import androidx.annotation.VisibleForTesting; import com.android.internal.app.ColorDisplayController; import com.android.settings.core.TogglePreferenceController; public class DisplayWhiteBalancePreferenceController extends TogglePreferenceController { private ColorDisplayController mColorDisplayController; private ColorDisplayManager mColorDisplayManager; public DisplayWhiteBalancePreferenceController(Context context, String key) { super(context, key); Loading @@ -33,8 +34,8 @@ public class DisplayWhiteBalancePreferenceController extends TogglePreferenceCon // Display white balance is only valid in linear light space. COLOR_MODE_SATURATED implies // unmanaged color mode, and hence unknown color processing conditions. return ColorDisplayManager.isDisplayWhiteBalanceAvailable(mContext) && getColorDisplayController().getColorMode() != ColorDisplayController.COLOR_MODE_SATURATED ? getColorDisplayManager().getColorMode() != ColorDisplayManager.COLOR_MODE_SATURATED ? AVAILABLE : DISABLED_FOR_USER; } Loading @@ -51,10 +52,11 @@ public class DisplayWhiteBalancePreferenceController extends TogglePreferenceCon return true; } ColorDisplayController getColorDisplayController() { if (mColorDisplayController == null) { mColorDisplayController = new ColorDisplayController(mContext); @VisibleForTesting ColorDisplayManager getColorDisplayManager() { if (mColorDisplayManager == null) { mColorDisplayManager = mContext.getSystemService(ColorDisplayManager.class); } return mColorDisplayController; return mColorDisplayManager; } } tests/robotests/src/com/android/settings/display/ColorModePreferenceControllerTest.java +11 −11 Original line number Diff line number Diff line Loading @@ -23,10 +23,10 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; import android.content.Context; import android.hardware.display.ColorDisplayManager; import androidx.preference.Preference; import com.android.internal.app.ColorDisplayController; import com.android.settings.R; import org.junit.Before; Loading @@ -41,7 +41,7 @@ import org.robolectric.RuntimeEnvironment; public class ColorModePreferenceControllerTest { @Mock private ColorDisplayController mColorDisplayController; private ColorDisplayManager mColorDisplayManager; private Context mContext; private Preference mPreference; Loading @@ -53,13 +53,13 @@ public class ColorModePreferenceControllerTest { mContext = RuntimeEnvironment.application; mController = spy(new ColorModePreferenceController(mContext, "test")); mPreference = new Preference(mContext); doReturn(mColorDisplayController).when(mController).getColorDisplayController(); doReturn(mColorDisplayManager).when(mController).getColorDisplayManager(); } @Test public void updateState_colorModeAutomatic_shouldSetSummaryToAutomatic() { when(mColorDisplayController.getColorMode()) .thenReturn(ColorDisplayController.COLOR_MODE_AUTOMATIC); when(mColorDisplayManager.getColorMode()) .thenReturn(ColorDisplayManager.COLOR_MODE_AUTOMATIC); mController.updateState(mPreference); Loading @@ -69,8 +69,8 @@ public class ColorModePreferenceControllerTest { @Test public void updateState_colorModeSaturated_shouldSetSummaryToSaturated() { when(mColorDisplayController.getColorMode()) .thenReturn(ColorDisplayController.COLOR_MODE_SATURATED); when(mColorDisplayManager.getColorMode()) .thenReturn(ColorDisplayManager.COLOR_MODE_SATURATED); mController.updateState(mPreference); Loading @@ -80,8 +80,8 @@ public class ColorModePreferenceControllerTest { @Test public void updateState_colorModeBoosted_shouldSetSummaryToBoosted() { when(mColorDisplayController.getColorMode()) .thenReturn(ColorDisplayController.COLOR_MODE_BOOSTED); when(mColorDisplayManager.getColorMode()) .thenReturn(ColorDisplayManager.COLOR_MODE_BOOSTED); mController.updateState(mPreference); Loading @@ -91,8 +91,8 @@ public class ColorModePreferenceControllerTest { @Test public void updateState_colorModeNatural_shouldSetSummaryToNatural() { when(mColorDisplayController.getColorMode()) .thenReturn(ColorDisplayController.COLOR_MODE_NATURAL); when(mColorDisplayManager.getColorMode()) .thenReturn(ColorDisplayManager.COLOR_MODE_NATURAL); mController.updateState(mPreference); Loading tests/robotests/src/com/android/settings/display/ColorModePreferenceFragmentTest.java +24 −35 Original line number Diff line number Diff line Loading @@ -25,13 +25,12 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.hardware.display.ColorDisplayManager; import android.os.Bundle; import androidx.fragment.app.FragmentActivity; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.internal.app.ColorDisplayController; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; import com.android.settings.testutils.shadow.SettingsShadowResources; Loading Loading @@ -59,17 +58,14 @@ public class ColorModePreferenceFragmentTest { private ColorModePreferenceFragment mFragment; @Mock private ColorDisplayController mController; @Mock private FragmentActivity mActivity; private ColorDisplayManager mManager; @Before public void setup() { MockitoAnnotations.initMocks(this); mFragment = spy(new ColorModePreferenceFragment()); ReflectionHelpers.setField(mFragment, "mController", mController); ReflectionHelpers.setField(mFragment, "mColorDisplayManager", mManager); } @After Loading @@ -88,10 +84,10 @@ public class ColorModePreferenceFragmentTest { 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 ColorDisplayManager.COLOR_MODE_NATURAL, ColorDisplayManager.COLOR_MODE_BOOSTED, ColorDisplayManager.COLOR_MODE_SATURATED, ColorDisplayManager.COLOR_MODE_AUTOMATIC }); List<? extends CandidateInfo> candidates = mFragment.getCandidates(); Loading Loading @@ -121,8 +117,8 @@ public class ColorModePreferenceFragmentTest { 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 ColorDisplayManager.COLOR_MODE_NATURAL, ColorDisplayManager.COLOR_MODE_AUTOMATIC }); List<? extends CandidateInfo> candidates = mFragment.getCandidates(); Loading @@ -138,9 +134,9 @@ public class ColorModePreferenceFragmentTest { 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, ColorDisplayManager.COLOR_MODE_NATURAL, ColorDisplayManager.COLOR_MODE_BOOSTED, ColorDisplayManager.COLOR_MODE_SATURATED, }); List<? extends CandidateInfo> candidates = mFragment.getCandidates(); Loading @@ -155,8 +151,8 @@ public class ColorModePreferenceFragmentTest { @Test public void getKey_natural() { when(mController.getColorMode()) .thenReturn(ColorDisplayController.COLOR_MODE_NATURAL); when(mManager.getColorMode()) .thenReturn(ColorDisplayManager.COLOR_MODE_NATURAL); assertThat(mFragment.getDefaultKey()) .isEqualTo(ColorModePreferenceFragment.KEY_COLOR_MODE_NATURAL); Loading @@ -164,8 +160,8 @@ public class ColorModePreferenceFragmentTest { @Test public void getKey_boosted() { when(mController.getColorMode()) .thenReturn(ColorDisplayController.COLOR_MODE_BOOSTED); when(mManager.getColorMode()) .thenReturn(ColorDisplayManager.COLOR_MODE_BOOSTED); assertThat(mFragment.getDefaultKey()) .isEqualTo(ColorModePreferenceFragment.KEY_COLOR_MODE_BOOSTED); Loading @@ -173,8 +169,8 @@ public class ColorModePreferenceFragmentTest { @Test public void getKey_saturated() { when(mController.getColorMode()) .thenReturn(ColorDisplayController.COLOR_MODE_SATURATED); when(mManager.getColorMode()) .thenReturn(ColorDisplayManager.COLOR_MODE_SATURATED); assertThat(mFragment.getDefaultKey()) .isEqualTo(ColorModePreferenceFragment.KEY_COLOR_MODE_SATURATED); Loading @@ -182,8 +178,8 @@ public class ColorModePreferenceFragmentTest { @Test public void getKey_automatic() { when(mController.getColorMode()) .thenReturn(ColorDisplayController.COLOR_MODE_AUTOMATIC); when(mManager.getColorMode()) .thenReturn(ColorDisplayManager.COLOR_MODE_AUTOMATIC); assertThat(mFragment.getDefaultKey()) .isEqualTo(ColorModePreferenceFragment.KEY_COLOR_MODE_AUTOMATIC); Loading @@ -192,25 +188,25 @@ public class ColorModePreferenceFragmentTest { @Test public void setKey_natural() { mFragment.setDefaultKey(ColorModePreferenceFragment.KEY_COLOR_MODE_NATURAL); verify(mController).setColorMode(ColorDisplayController.COLOR_MODE_NATURAL); verify(mManager).setColorMode(ColorDisplayManager.COLOR_MODE_NATURAL); } @Test public void setKey_boosted() { mFragment.setDefaultKey(ColorModePreferenceFragment.KEY_COLOR_MODE_BOOSTED); verify(mController).setColorMode(ColorDisplayController.COLOR_MODE_BOOSTED); verify(mManager).setColorMode(ColorDisplayManager.COLOR_MODE_BOOSTED); } @Test public void setKey_saturated() { mFragment.setDefaultKey(ColorModePreferenceFragment.KEY_COLOR_MODE_SATURATED); verify(mController).setColorMode(ColorDisplayController.COLOR_MODE_SATURATED); verify(mManager).setColorMode(ColorDisplayManager.COLOR_MODE_SATURATED); } @Test public void setKey_automatic() { mFragment.setDefaultKey(ColorModePreferenceFragment.KEY_COLOR_MODE_AUTOMATIC); verify(mController).setColorMode(ColorDisplayController.COLOR_MODE_AUTOMATIC); verify(mManager).setColorMode(ColorDisplayManager.COLOR_MODE_AUTOMATIC); } @Test Loading @@ -237,11 +233,4 @@ public class ColorModePreferenceFragmentTest { assertThat(preferenceCaptor.getValue()).isEqualTo(mockPreview); } @Test public void onAccessibilityTransformChanged_toggles() { when(mFragment.getActivity()).thenReturn(mActivity); mFragment.onAccessibilityTransformChanged(true /* state */); verify(mActivity).onBackPressed(); } } Loading
src/com/android/settings/display/ColorModePreferenceController.java +10 −12 Original line number Diff line number Diff line Loading @@ -18,14 +18,12 @@ import android.hardware.display.ColorDisplayManager; import androidx.annotation.VisibleForTesting; import com.android.internal.app.ColorDisplayController; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; public class ColorModePreferenceController extends BasePreferenceController { private static final String TAG = "ColorModePreference"; private ColorDisplayController mColorDisplayController; private ColorDisplayManager mColorDisplayManager; public ColorModePreferenceController(Context context, String key) { super(context, key); Loading @@ -35,30 +33,30 @@ public class ColorModePreferenceController extends BasePreferenceController { public int getAvailabilityStatus() { return mContext.getSystemService(ColorDisplayManager.class) .isDeviceColorManaged() && !getColorDisplayController().getAccessibilityTransformActivated() ? && !ColorDisplayManager.areAccessibilityTransformsEnabled(mContext) ? AVAILABLE_UNSEARCHABLE : DISABLED_FOR_USER; } @Override public CharSequence getSummary() { final int colorMode = getColorDisplayController().getColorMode(); if (colorMode == ColorDisplayController.COLOR_MODE_AUTOMATIC) { final int colorMode = getColorDisplayManager().getColorMode(); if (colorMode == ColorDisplayManager.COLOR_MODE_AUTOMATIC) { return mContext.getText(R.string.color_mode_option_automatic); } if (colorMode == ColorDisplayController.COLOR_MODE_SATURATED) { if (colorMode == ColorDisplayManager.COLOR_MODE_SATURATED) { return mContext.getText(R.string.color_mode_option_saturated); } if (colorMode == ColorDisplayController.COLOR_MODE_BOOSTED) { if (colorMode == ColorDisplayManager.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); ColorDisplayManager getColorDisplayManager() { if (mColorDisplayManager == null) { mColorDisplayManager = mContext.getSystemService(ColorDisplayManager.class); } return mColorDisplayController; return mColorDisplayManager; } }
src/com/android/settings/display/ColorModePreferenceFragment.java +47 −31 Original line number Diff line number Diff line Loading @@ -14,14 +14,20 @@ package com.android.settings.display; import android.app.settings.SettingsEnums; import android.content.ContentResolver; import android.content.Context; import android.database.ContentObserver; import android.graphics.drawable.Drawable; import android.hardware.display.ColorDisplayManager; import android.net.Uri; import android.os.Handler; import android.os.Looper; import android.provider.SearchIndexableResource; import android.provider.Settings.Secure; import androidx.annotation.VisibleForTesting; import androidx.preference.PreferenceScreen; import com.android.internal.app.ColorDisplayController; import com.android.settings.R; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; Loading @@ -36,8 +42,7 @@ import java.util.List; @SuppressWarnings("WeakerAccess") @SearchIndexable public class ColorModePreferenceFragment extends RadioButtonPickerFragment implements ColorDisplayController.Callback { public class ColorModePreferenceFragment extends RadioButtonPickerFragment { @VisibleForTesting static final String KEY_COLOR_MODE_NATURAL = "color_mode_natural"; Loading @@ -48,21 +53,41 @@ public class ColorModePreferenceFragment extends RadioButtonPickerFragment @VisibleForTesting static final String KEY_COLOR_MODE_AUTOMATIC = "color_mode_automatic"; private ColorDisplayController mController; private ContentObserver mContentObserver; private ColorDisplayManager mColorDisplayManager; @Override public void onAttach(Context context) { super.onAttach(context); mController = new ColorDisplayController(context); mController.setListener(this); mColorDisplayManager = context.getSystemService(ColorDisplayManager.class); final ContentResolver cr = context.getContentResolver(); mContentObserver = new ContentObserver(new Handler(Looper.getMainLooper())) { @Override public void onChange(boolean selfChange, Uri uri) { super.onChange(selfChange, uri); if (ColorDisplayManager.areAccessibilityTransformsEnabled(getContext())) { // Color modes are not configurable when Accessibility transforms are enabled. // Close this fragment in that case. getActivity().finish(); } } }; cr.registerContentObserver( Secure.getUriFor(Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED), false /* notifyForDescendants */, mContentObserver, mUserId); cr.registerContentObserver( Secure.getUriFor(Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED), false /* notifyForDescendants */, mContentObserver, mUserId); } @Override public void onDetach() { super.onDetach(); if (mController != null) { mController.setListener(null); mController = null; if (mContentObserver != null) { getContext().getContentResolver().unregisterContentObserver(mContentObserver); mContentObserver = null; } } Loading Loading @@ -90,22 +115,22 @@ public class ColorModePreferenceFragment extends RadioButtonPickerFragment final int[] availableColorModes = c.getResources().getIntArray( com.android.internal.R.array.config_availableColorModes); List<ColorModeCandidateInfo> candidates = new ArrayList<ColorModeCandidateInfo>(); List<ColorModeCandidateInfo> candidates = new ArrayList<>(); if (availableColorModes != null) { for (int colorMode : availableColorModes) { if (colorMode == ColorDisplayController.COLOR_MODE_NATURAL) { if (colorMode == ColorDisplayManager.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) { } else if (colorMode == ColorDisplayManager.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) { } else if (colorMode == ColorDisplayManager.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) { } else if (colorMode == ColorDisplayManager.COLOR_MODE_AUTOMATIC) { candidates.add(new ColorModeCandidateInfo( c.getText(R.string.color_mode_option_automatic), KEY_COLOR_MODE_AUTOMATIC, true /* enabled */)); Loading @@ -117,12 +142,12 @@ public class ColorModePreferenceFragment extends RadioButtonPickerFragment @Override protected String getDefaultKey() { final int colorMode = mController.getColorMode(); if (colorMode == ColorDisplayController.COLOR_MODE_AUTOMATIC) { final int colorMode = mColorDisplayManager.getColorMode(); if (colorMode == ColorDisplayManager.COLOR_MODE_AUTOMATIC) { return KEY_COLOR_MODE_AUTOMATIC; } else if (colorMode == ColorDisplayController.COLOR_MODE_SATURATED) { } else if (colorMode == ColorDisplayManager.COLOR_MODE_SATURATED) { return KEY_COLOR_MODE_SATURATED; } else if (colorMode == ColorDisplayController.COLOR_MODE_BOOSTED) { } else if (colorMode == ColorDisplayManager.COLOR_MODE_BOOSTED) { return KEY_COLOR_MODE_BOOSTED; } return KEY_COLOR_MODE_NATURAL; Loading @@ -132,16 +157,16 @@ public class ColorModePreferenceFragment extends RadioButtonPickerFragment protected boolean setDefaultKey(String key) { switch (key) { case KEY_COLOR_MODE_NATURAL: mController.setColorMode(ColorDisplayController.COLOR_MODE_NATURAL); mColorDisplayManager.setColorMode(ColorDisplayManager.COLOR_MODE_NATURAL); break; case KEY_COLOR_MODE_BOOSTED: mController.setColorMode(ColorDisplayController.COLOR_MODE_BOOSTED); mColorDisplayManager.setColorMode(ColorDisplayManager.COLOR_MODE_BOOSTED); break; case KEY_COLOR_MODE_SATURATED: mController.setColorMode(ColorDisplayController.COLOR_MODE_SATURATED); mColorDisplayManager.setColorMode(ColorDisplayManager.COLOR_MODE_SATURATED); break; case KEY_COLOR_MODE_AUTOMATIC: mController.setColorMode(ColorDisplayController.COLOR_MODE_AUTOMATIC); mColorDisplayManager.setColorMode(ColorDisplayManager.COLOR_MODE_AUTOMATIC); break; } return true; Loading Loading @@ -179,15 +204,6 @@ public class ColorModePreferenceFragment extends RadioButtonPickerFragment } } @Override public void onAccessibilityTransformChanged(boolean state) { // Color modes are no not configurable when Accessibility transforms are enabled. Close // this fragment in that case. if (state) { getActivity().onBackPressed(); } } public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = new BaseSearchIndexProvider() { @Override Loading
src/com/android/settings/display/DisplayWhiteBalancePreferenceController.java +10 −8 Original line number Diff line number Diff line Loading @@ -17,12 +17,13 @@ import android.content.Context; import android.hardware.display.ColorDisplayManager; import android.os.UserHandle; import android.provider.Settings.Secure; import androidx.annotation.VisibleForTesting; import com.android.internal.app.ColorDisplayController; import com.android.settings.core.TogglePreferenceController; public class DisplayWhiteBalancePreferenceController extends TogglePreferenceController { private ColorDisplayController mColorDisplayController; private ColorDisplayManager mColorDisplayManager; public DisplayWhiteBalancePreferenceController(Context context, String key) { super(context, key); Loading @@ -33,8 +34,8 @@ public class DisplayWhiteBalancePreferenceController extends TogglePreferenceCon // Display white balance is only valid in linear light space. COLOR_MODE_SATURATED implies // unmanaged color mode, and hence unknown color processing conditions. return ColorDisplayManager.isDisplayWhiteBalanceAvailable(mContext) && getColorDisplayController().getColorMode() != ColorDisplayController.COLOR_MODE_SATURATED ? getColorDisplayManager().getColorMode() != ColorDisplayManager.COLOR_MODE_SATURATED ? AVAILABLE : DISABLED_FOR_USER; } Loading @@ -51,10 +52,11 @@ public class DisplayWhiteBalancePreferenceController extends TogglePreferenceCon return true; } ColorDisplayController getColorDisplayController() { if (mColorDisplayController == null) { mColorDisplayController = new ColorDisplayController(mContext); @VisibleForTesting ColorDisplayManager getColorDisplayManager() { if (mColorDisplayManager == null) { mColorDisplayManager = mContext.getSystemService(ColorDisplayManager.class); } return mColorDisplayController; return mColorDisplayManager; } }
tests/robotests/src/com/android/settings/display/ColorModePreferenceControllerTest.java +11 −11 Original line number Diff line number Diff line Loading @@ -23,10 +23,10 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; import android.content.Context; import android.hardware.display.ColorDisplayManager; import androidx.preference.Preference; import com.android.internal.app.ColorDisplayController; import com.android.settings.R; import org.junit.Before; Loading @@ -41,7 +41,7 @@ import org.robolectric.RuntimeEnvironment; public class ColorModePreferenceControllerTest { @Mock private ColorDisplayController mColorDisplayController; private ColorDisplayManager mColorDisplayManager; private Context mContext; private Preference mPreference; Loading @@ -53,13 +53,13 @@ public class ColorModePreferenceControllerTest { mContext = RuntimeEnvironment.application; mController = spy(new ColorModePreferenceController(mContext, "test")); mPreference = new Preference(mContext); doReturn(mColorDisplayController).when(mController).getColorDisplayController(); doReturn(mColorDisplayManager).when(mController).getColorDisplayManager(); } @Test public void updateState_colorModeAutomatic_shouldSetSummaryToAutomatic() { when(mColorDisplayController.getColorMode()) .thenReturn(ColorDisplayController.COLOR_MODE_AUTOMATIC); when(mColorDisplayManager.getColorMode()) .thenReturn(ColorDisplayManager.COLOR_MODE_AUTOMATIC); mController.updateState(mPreference); Loading @@ -69,8 +69,8 @@ public class ColorModePreferenceControllerTest { @Test public void updateState_colorModeSaturated_shouldSetSummaryToSaturated() { when(mColorDisplayController.getColorMode()) .thenReturn(ColorDisplayController.COLOR_MODE_SATURATED); when(mColorDisplayManager.getColorMode()) .thenReturn(ColorDisplayManager.COLOR_MODE_SATURATED); mController.updateState(mPreference); Loading @@ -80,8 +80,8 @@ public class ColorModePreferenceControllerTest { @Test public void updateState_colorModeBoosted_shouldSetSummaryToBoosted() { when(mColorDisplayController.getColorMode()) .thenReturn(ColorDisplayController.COLOR_MODE_BOOSTED); when(mColorDisplayManager.getColorMode()) .thenReturn(ColorDisplayManager.COLOR_MODE_BOOSTED); mController.updateState(mPreference); Loading @@ -91,8 +91,8 @@ public class ColorModePreferenceControllerTest { @Test public void updateState_colorModeNatural_shouldSetSummaryToNatural() { when(mColorDisplayController.getColorMode()) .thenReturn(ColorDisplayController.COLOR_MODE_NATURAL); when(mColorDisplayManager.getColorMode()) .thenReturn(ColorDisplayManager.COLOR_MODE_NATURAL); mController.updateState(mPreference); Loading
tests/robotests/src/com/android/settings/display/ColorModePreferenceFragmentTest.java +24 −35 Original line number Diff line number Diff line Loading @@ -25,13 +25,12 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.hardware.display.ColorDisplayManager; import android.os.Bundle; import androidx.fragment.app.FragmentActivity; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.internal.app.ColorDisplayController; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; import com.android.settings.testutils.shadow.SettingsShadowResources; Loading Loading @@ -59,17 +58,14 @@ public class ColorModePreferenceFragmentTest { private ColorModePreferenceFragment mFragment; @Mock private ColorDisplayController mController; @Mock private FragmentActivity mActivity; private ColorDisplayManager mManager; @Before public void setup() { MockitoAnnotations.initMocks(this); mFragment = spy(new ColorModePreferenceFragment()); ReflectionHelpers.setField(mFragment, "mController", mController); ReflectionHelpers.setField(mFragment, "mColorDisplayManager", mManager); } @After Loading @@ -88,10 +84,10 @@ public class ColorModePreferenceFragmentTest { 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 ColorDisplayManager.COLOR_MODE_NATURAL, ColorDisplayManager.COLOR_MODE_BOOSTED, ColorDisplayManager.COLOR_MODE_SATURATED, ColorDisplayManager.COLOR_MODE_AUTOMATIC }); List<? extends CandidateInfo> candidates = mFragment.getCandidates(); Loading Loading @@ -121,8 +117,8 @@ public class ColorModePreferenceFragmentTest { 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 ColorDisplayManager.COLOR_MODE_NATURAL, ColorDisplayManager.COLOR_MODE_AUTOMATIC }); List<? extends CandidateInfo> candidates = mFragment.getCandidates(); Loading @@ -138,9 +134,9 @@ public class ColorModePreferenceFragmentTest { 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, ColorDisplayManager.COLOR_MODE_NATURAL, ColorDisplayManager.COLOR_MODE_BOOSTED, ColorDisplayManager.COLOR_MODE_SATURATED, }); List<? extends CandidateInfo> candidates = mFragment.getCandidates(); Loading @@ -155,8 +151,8 @@ public class ColorModePreferenceFragmentTest { @Test public void getKey_natural() { when(mController.getColorMode()) .thenReturn(ColorDisplayController.COLOR_MODE_NATURAL); when(mManager.getColorMode()) .thenReturn(ColorDisplayManager.COLOR_MODE_NATURAL); assertThat(mFragment.getDefaultKey()) .isEqualTo(ColorModePreferenceFragment.KEY_COLOR_MODE_NATURAL); Loading @@ -164,8 +160,8 @@ public class ColorModePreferenceFragmentTest { @Test public void getKey_boosted() { when(mController.getColorMode()) .thenReturn(ColorDisplayController.COLOR_MODE_BOOSTED); when(mManager.getColorMode()) .thenReturn(ColorDisplayManager.COLOR_MODE_BOOSTED); assertThat(mFragment.getDefaultKey()) .isEqualTo(ColorModePreferenceFragment.KEY_COLOR_MODE_BOOSTED); Loading @@ -173,8 +169,8 @@ public class ColorModePreferenceFragmentTest { @Test public void getKey_saturated() { when(mController.getColorMode()) .thenReturn(ColorDisplayController.COLOR_MODE_SATURATED); when(mManager.getColorMode()) .thenReturn(ColorDisplayManager.COLOR_MODE_SATURATED); assertThat(mFragment.getDefaultKey()) .isEqualTo(ColorModePreferenceFragment.KEY_COLOR_MODE_SATURATED); Loading @@ -182,8 +178,8 @@ public class ColorModePreferenceFragmentTest { @Test public void getKey_automatic() { when(mController.getColorMode()) .thenReturn(ColorDisplayController.COLOR_MODE_AUTOMATIC); when(mManager.getColorMode()) .thenReturn(ColorDisplayManager.COLOR_MODE_AUTOMATIC); assertThat(mFragment.getDefaultKey()) .isEqualTo(ColorModePreferenceFragment.KEY_COLOR_MODE_AUTOMATIC); Loading @@ -192,25 +188,25 @@ public class ColorModePreferenceFragmentTest { @Test public void setKey_natural() { mFragment.setDefaultKey(ColorModePreferenceFragment.KEY_COLOR_MODE_NATURAL); verify(mController).setColorMode(ColorDisplayController.COLOR_MODE_NATURAL); verify(mManager).setColorMode(ColorDisplayManager.COLOR_MODE_NATURAL); } @Test public void setKey_boosted() { mFragment.setDefaultKey(ColorModePreferenceFragment.KEY_COLOR_MODE_BOOSTED); verify(mController).setColorMode(ColorDisplayController.COLOR_MODE_BOOSTED); verify(mManager).setColorMode(ColorDisplayManager.COLOR_MODE_BOOSTED); } @Test public void setKey_saturated() { mFragment.setDefaultKey(ColorModePreferenceFragment.KEY_COLOR_MODE_SATURATED); verify(mController).setColorMode(ColorDisplayController.COLOR_MODE_SATURATED); verify(mManager).setColorMode(ColorDisplayManager.COLOR_MODE_SATURATED); } @Test public void setKey_automatic() { mFragment.setDefaultKey(ColorModePreferenceFragment.KEY_COLOR_MODE_AUTOMATIC); verify(mController).setColorMode(ColorDisplayController.COLOR_MODE_AUTOMATIC); verify(mManager).setColorMode(ColorDisplayManager.COLOR_MODE_AUTOMATIC); } @Test Loading @@ -237,11 +233,4 @@ public class ColorModePreferenceFragmentTest { assertThat(preferenceCaptor.getValue()).isEqualTo(mockPreview); } @Test public void onAccessibilityTransformChanged_toggles() { when(mFragment.getActivity()).thenReturn(mActivity); mFragment.onAccessibilityTransformChanged(true /* state */); verify(mActivity).onBackPressed(); } }