Add a setting page for Reduce Bright Colors under A11y
This is essentially a copy page of ToggleDaltonizerPreferenceFragment. We extend ToggleFeaturePreferenceFragment to maintain consistency with other shortcut assignable a11y feature. UI is a draft This CL: 1) allows users to enabled/disable RBC with the a11y shortcut (button, gestures, volume keys), if assigned 2) adds a slider and persist switch to the template ToggleFeaturePreferenceFragment page (which already contains a feature switch, shortcut preference, and footer description) 3) enables/disables the intensity slider when RBC is on/off 4) sets placeholders for calling into ColorDisplayService in controllers and tests 5) follows convention set by other color transformations settings and places feature under Experimental section in A11y settings page if transformations can't be efficiently performed by hardware Test: A11y setting and page appears, tested activation with shortcut, preference controller tests Bug: b/128465252 Change-Id: I291bb86ce3d855ce052ca70dc7a941a888e2c723
This commit is contained in:
@@ -8,4 +8,6 @@ com.android.settings.testutils.FakeToggleController
|
||||
com.android.settings.testutils.FakeSliderController
|
||||
com.android.settings.testutils.FakeInvalidSliderController
|
||||
com.android.settings.wifi.details2.WifiAutoConnectPreferenceController2
|
||||
com.android.settings.accessibility.ReduceBrightColorsIntensityPreferenceController
|
||||
com.android.settings.accessibility.ReduceBrightColorsPersistencePreferenceController
|
||||
|
||||
|
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Copyright (C) 2020 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.accessibility;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
|
||||
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");
|
||||
|
||||
@Test
|
||||
public void isAvailable_configuredRbcAvailable_enabledRbc_shouldReturnTrue() {
|
||||
assertThat(mPreferenceController.isAvailable()).isTrue();
|
||||
}
|
||||
@Test
|
||||
public void isAvailable_configuredRbcAvailable_disabledRbc_shouldReturnFalse() {
|
||||
assertThat(mPreferenceController.isAvailable()).isTrue();
|
||||
}
|
||||
@Test
|
||||
public void isAvailable_configuredRbcUnavailable_enabledRbc_shouldReturnFalse() {
|
||||
assertThat(mPreferenceController.isAvailable()).isTrue();
|
||||
}
|
||||
}
|
@@ -0,0 +1,82 @@
|
||||
/*
|
||||
* Copyright (C) 2020 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.accessibility;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import android.content.Context;
|
||||
import android.provider.Settings;
|
||||
|
||||
import androidx.preference.SwitchPreference;
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class ReduceBrightColorsPersistencePreferenceControllerTest {
|
||||
private static final String PREF_KEY = "rbc_persist";
|
||||
private static final String RBC_PERSIST =
|
||||
Settings.Secure.REDUCE_BRIGHT_COLORS_PERSIST_ACROSS_REBOOTS;
|
||||
private static final int ON = 1;
|
||||
private static final int OFF = 0;
|
||||
private static final int UNKNOWN = -1;
|
||||
|
||||
private final Context mContext = ApplicationProvider.getApplicationContext();
|
||||
private final SwitchPreference mPreference = new SwitchPreference(mContext);
|
||||
private final ReduceBrightColorsPersistencePreferenceController mController =
|
||||
new ReduceBrightColorsPersistencePreferenceController(mContext, PREF_KEY);
|
||||
|
||||
@Test
|
||||
public void isChecked_enabledRbc_shouldReturnTrue() {
|
||||
Settings.Secure.putInt(mContext.getContentResolver(), RBC_PERSIST, ON);
|
||||
|
||||
mController.updateState(mPreference);
|
||||
|
||||
assertThat(mController.isChecked()).isTrue();
|
||||
assertThat(mPreference.isChecked()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isChecked_disabledRbc_shouldReturnFalse() {
|
||||
Settings.Secure.putInt(mContext.getContentResolver(), RBC_PERSIST, OFF);
|
||||
|
||||
mController.updateState(mPreference);
|
||||
|
||||
assertThat(mController.isChecked()).isFalse();
|
||||
assertThat(mPreference.isChecked()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setChecked_setTrue_shouldEnableRbc() {
|
||||
mController.setChecked(true);
|
||||
|
||||
assertThat(
|
||||
Settings.Secure.getInt(mContext.getContentResolver(), RBC_PERSIST, UNKNOWN))
|
||||
.isEqualTo(ON);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setChecked_setFalse_shouldDisableRbc() {
|
||||
mController.setChecked(false);
|
||||
|
||||
assertThat(
|
||||
Settings.Secure.getInt(mContext.getContentResolver(), RBC_PERSIST, UNKNOWN))
|
||||
.isEqualTo(OFF);
|
||||
}
|
||||
}
|
@@ -0,0 +1,60 @@
|
||||
/*
|
||||
* Copyright (C) 2020 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.accessibility;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import android.content.Context;
|
||||
import android.provider.Settings;
|
||||
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
|
||||
import com.android.settings.R;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class ReduceBrightColorsPreferenceControllerTest {
|
||||
private static final String PREF_KEY = "rbc_preference";
|
||||
private static final String RBC_ACTIVATED =
|
||||
Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED;
|
||||
private static final int ON = 1;
|
||||
private static final int OFF = 0;
|
||||
|
||||
private final Context mContext = ApplicationProvider.getApplicationContext();
|
||||
private final ReduceBrightColorsPreferenceController mController =
|
||||
new ReduceBrightColorsPreferenceController(mContext, PREF_KEY);
|
||||
|
||||
@Test
|
||||
public void getSummary_enabledRbc_shouldReturnOnSummary() {
|
||||
Settings.Secure.putInt(mContext.getContentResolver(),
|
||||
RBC_ACTIVATED, ON);
|
||||
|
||||
assertThat(mController.getSummary().toString().contains(
|
||||
mContext.getText(R.string.accessibility_feature_state_on))).isTrue();
|
||||
}
|
||||
@Test
|
||||
public void getSummary_disabledRbc_shouldReturnOffSummary() {
|
||||
Settings.Secure.putInt(mContext.getContentResolver(),
|
||||
RBC_ACTIVATED, OFF);
|
||||
|
||||
assertThat(mController.getSummary().toString().contains(
|
||||
mContext.getText(R.string.accessibility_feature_state_off))).isTrue();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user