import android.content.Context;
import android.graphics.drawable.Drawable;
import android.support.annotation.VisibleForTesting;
-import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;
import com.android.internal.app.ColorDisplayController;
import com.android.settings.applications.LayoutPreference;
import com.android.settings.R;
import com.android.settings.widget.RadioButtonPickerFragment;
-import com.android.settings.widget.RadioButtonPreference;
import com.android.settingslib.widget.CandidateInfo;
import java.util.Arrays;
@Override
protected List<? extends CandidateInfo> getCandidates() {
Context c = getContext();
- final boolean enabled = !mController.getAccessibilityTransformActivated();
return Arrays.asList(
new ColorModeCandidateInfo(c.getText(R.string.color_mode_option_natural),
- KEY_COLOR_MODE_NATURAL, enabled),
+ KEY_COLOR_MODE_NATURAL, true /* enabled */),
new ColorModeCandidateInfo(c.getText(R.string.color_mode_option_boosted),
- KEY_COLOR_MODE_BOOSTED, enabled),
+ KEY_COLOR_MODE_BOOSTED, true /* enabled */),
new ColorModeCandidateInfo(c.getText(R.string.color_mode_option_saturated),
- KEY_COLOR_MODE_SATURATED, enabled)
+ KEY_COLOR_MODE_SATURATED, true /* enabled */)
);
}
@Override
public void onAccessibilityTransformChanged(boolean state) {
- // Disable controls when a11y transforms are enabled, and vice versa
- final PreferenceScreen screen = getPreferenceScreen();
- if (screen != null) {
- final int count = screen.getPreferenceCount();
- for (int i = 0; i < count; i++) {
- final Preference pref = screen.getPreference(i);
- if (pref instanceof RadioButtonPreference) {
- pref.setEnabled(!state);
- }
- }
+ // Color modes are no not configurable when Accessibility transforms are enabled. Close
+ // this fragment in that case.
+ if (state) {
+ getActivity().onBackPressed();
}
}
}
package com.android.settings.display;
import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Answers.RETURNS_DEEP_STUBS;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.app.Activity;
import android.os.Bundle;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.applications.LayoutPreference;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
-import com.android.settings.widget.RadioButtonPreference;
import com.android.settingslib.widget.CandidateInfo;
import org.junit.Before;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.util.ReflectionHelpers;
-import java.util.ArrayList;
import java.util.List;
@RunWith(SettingsRobolectricTestRunner.class)
private ColorDisplayController mController;
@Mock
- private PreferenceScreen mScreen;
+ private Activity mActivity;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
- mFragment = spy(new ColorModePreferenceFragmentTestable(mScreen));
+ mFragment = spy(new ColorModePreferenceFragment());
ReflectionHelpers.setField(mFragment, "mController", mController);
}
@Test
public void onAccessibilityTransformChanged_toggles() {
- final int radioPrefsCount = 3;
- List<RadioButtonPreference> radioPrefs = new ArrayList<>();
- for (int i = 0; i < radioPrefsCount; i++) {
- radioPrefs.add(mock(RadioButtonPreference.class));
- }
-
- when(mScreen.getPreferenceCount()).thenReturn(radioPrefs.size());
- when(mScreen.getPreference(anyInt())).thenAnswer(invocation -> {
- final Object[] args = invocation.getArguments();
- return radioPrefs.get((int) args[0]);
- });
-
+ when(mFragment.getActivity()).thenReturn(mActivity);
mFragment.onAccessibilityTransformChanged(true /* state */);
- for (int i = 0; i < radioPrefsCount; i++) {
- verify(radioPrefs.get(i)).setEnabled(false);
- }
-
- mFragment.onAccessibilityTransformChanged(false /* state */);
- for (int i = 0; i < radioPrefsCount; i++) {
- verify(radioPrefs.get(i)).setEnabled(true);
- }
- }
-
- private static class ColorModePreferenceFragmentTestable
- extends ColorModePreferenceFragment {
-
- private final PreferenceScreen mPreferenceScreen;
-
- private ColorModePreferenceFragmentTestable(PreferenceScreen screen) {
- mPreferenceScreen = screen;
- }
-
- /**
- * A method to return a mock PreferenceScreen.
- * A real ColorModePreferenceFragment calls super.getPreferenceScreen() to get its
- * PreferenceScreen handle, which internally dereferenced a PreferenceManager. But in this
- * test scenario, the PreferenceManager object is uninitialized, so we need to supply the
- * PreferenceScreen directly.
- *
- * @return a mock PreferenceScreen
- */
- @Override
- public PreferenceScreen getPreferenceScreen() {
- return mPreferenceScreen;
- }
+ verify(mActivity).onBackPressed();
}
}