diff --git a/res-product/values/strings.xml b/res-product/values/strings.xml
index 3fcbd7f4e63..d7bdd2c60dd 100644
--- a/res-product/values/strings.xml
+++ b/res-product/values/strings.xml
@@ -727,4 +727,9 @@
When you move your tablet between portrait and landscape
+
+
+ Adjust how colors display on your phone
+
+ Adjust how colors display on your tablet
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 0684700f04d..99ee89962f0 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -12129,4 +12129,39 @@
"This app can only be opened in 1 window"
+
+
+ %1$s / %2$s / %3$s
+
+ Service on
+
+ Service off
+
+ Shortcut off
+
+ Off
+
+
+ On
+
+ Off
+
+ On
+
+ Off
+
+ Turns light screens dark and dark screens light
+
+ Quickly zoom in on the screen to make content larger
+
+ Off
+
+ Off
+
+ On
+
+ Off
+
+ On
+
diff --git a/res/xml/accessibility_system_controls.xml b/res/xml/accessibility_system_controls.xml
index 37c4d679022..3821f93d555 100644
--- a/res/xml/accessibility_system_controls.xml
+++ b/res/xml/accessibility_system_controls.xml
@@ -34,7 +34,7 @@
android:persistent="false"
android:title="@string/one_handed_title"
settings:searchable="false"
- settings:controller="com.android.settings.gestures.OneHandedEnablePreferenceController"/>
+ settings:controller="com.android.settings.accessibility.OneHandedPreferenceController"/>
mLifecycle);
when(mFragment.getSettingsLifecycle()).thenReturn(mLifecycle);
ShadowBluetoothUtils.sLocalBluetoothManager = mLocalBluetoothManager;
+ setMockAccessibilityShortcutInfo(mShortcutInfo);
}
@Test
@@ -171,75 +172,157 @@ public class AccessibilitySettingsTest {
}
@Test
- public void getServiceSummary_invisibleToggle_shortcutDisabled_showsOffSummary() {
+ public void getServiceSummary_invisibleToggle_shortcutEnabled_showsOnSummary() {
setInvisibleToggleFragmentType(mServiceInfo);
doReturn(DEFAULT_SUMMARY).when(mServiceInfo).loadSummary(any());
+ setShortcutEnabled(mServiceInfo.getComponentName(), true);
final CharSequence summary = AccessibilitySettings.getServiceSummary(mContext,
mServiceInfo, SERVICE_ENABLED);
assertThat(summary).isEqualTo(
mContext.getString(R.string.preference_summary_default_combination,
- mContext.getString(R.string.accessibility_summary_shortcut_disabled),
+ mContext.getString(R.string.accessibility_summary_shortcut_enabled),
DEFAULT_SUMMARY));
}
@Test
- public void getServiceSummary_enableService_showsEnabled() {
- doReturn(EMPTY_STRING).when(mServiceInfo).loadSummary(any());
-
- final CharSequence summary = AccessibilitySettings.getServiceSummary(mContext,
- mServiceInfo, SERVICE_ENABLED);
-
- assertThat(summary).isEqualTo(
- mContext.getString(R.string.accessibility_summary_state_enabled));
- }
-
- @Test
- public void getServiceSummary_disableService_showsDisabled() {
- doReturn(EMPTY_STRING).when(mServiceInfo).loadSummary(any());
-
- final CharSequence summary = AccessibilitySettings.getServiceSummary(mContext,
- mServiceInfo, SERVICE_DISABLED);
-
- assertThat(summary).isEqualTo(
- mContext.getString(R.string.accessibility_summary_state_disabled));
- }
-
- @Test
- public void getServiceSummary_enableServiceAndHasSummary_showsEnabledSummary() {
- final String service_enabled = mContext.getString(
- R.string.accessibility_summary_state_enabled);
+ public void getServiceSummary_invisibleToggle_shortcutDisabled_showsOffSummary() {
+ setInvisibleToggleFragmentType(mServiceInfo);
+ setShortcutEnabled(mServiceInfo.getComponentName(), false);
doReturn(DEFAULT_SUMMARY).when(mServiceInfo).loadSummary(any());
final CharSequence summary = AccessibilitySettings.getServiceSummary(mContext,
mServiceInfo, SERVICE_ENABLED);
- assertThat(summary).isEqualTo(
- mContext.getString(R.string.preference_summary_default_combination, service_enabled,
- DEFAULT_SUMMARY));
- }
-
- @Test
- public void getServiceSummary_disableServiceAndHasSummary_showsCombineDisabledSummary() {
- final String service_disabled = mContext.getString(
- R.string.accessibility_summary_state_disabled);
- doReturn(DEFAULT_SUMMARY).when(mServiceInfo).loadSummary(any());
-
- final CharSequence summary = AccessibilitySettings.getServiceSummary(mContext,
- mServiceInfo, SERVICE_DISABLED);
-
assertThat(summary).isEqualTo(
mContext.getString(R.string.preference_summary_default_combination,
- service_disabled, DEFAULT_SUMMARY));
+ mContext.getString(R.string.generic_accessibility_feature_shortcut_off),
+ DEFAULT_SUMMARY));
+ }
+
+ @Test
+ public void getServiceSummary_enableServiceShortcutOn_showsServiceEnabledShortcutOn() {
+ doReturn(EMPTY_STRING).when(mServiceInfo).loadSummary(any());
+ setShortcutEnabled(mServiceInfo.getComponentName(), true);
+
+ String summary = AccessibilitySettings.getServiceSummary(mContext,
+ mServiceInfo, SERVICE_ENABLED).toString();
+
+ assertThat(summary).isEqualTo(
+ mContext.getString(R.string.preference_summary_default_combination,
+ mContext.getString(R.string.generic_accessibility_service_on),
+ mContext.getString(R.string.accessibility_summary_shortcut_enabled)));
+ }
+
+ @Test
+ public void getServiceSummary_enableServiceShortcutOff_showsServiceEnabledShortcutOff() {
+ doReturn(EMPTY_STRING).when(mServiceInfo).loadSummary(any());
+ setShortcutEnabled(mServiceInfo.getComponentName(), false);
+
+ String summary = AccessibilitySettings.getServiceSummary(mContext,
+ mServiceInfo, SERVICE_ENABLED).toString();
+
+ assertThat(summary).isEqualTo(
+ mContext.getString(R.string.preference_summary_default_combination,
+ mContext.getString(R.string.generic_accessibility_service_on),
+ mContext.getString(R.string.generic_accessibility_feature_shortcut_off)));
+ }
+
+ @Test
+ public void getServiceSummary_disableServiceShortcutOff_showsDisabledShortcutOff() {
+ doReturn(EMPTY_STRING).when(mServiceInfo).loadSummary(any());
+ setShortcutEnabled(mServiceInfo.getComponentName(), false);
+
+ String summary = AccessibilitySettings.getServiceSummary(mContext,
+ mServiceInfo, SERVICE_DISABLED).toString();
+
+ assertThat(summary).isEqualTo(
+ mContext.getString(R.string.preference_summary_default_combination,
+ mContext.getString(R.string.generic_accessibility_service_off),
+ mContext.getString(R.string.generic_accessibility_feature_shortcut_off)));
+ }
+
+ @Test
+ public void getServiceSummary_disableServiceShortcutOn_showsDisabledShortcutOn() {
+ doReturn(EMPTY_STRING).when(mServiceInfo).loadSummary(any());
+ setShortcutEnabled(mServiceInfo.getComponentName(), true);
+
+ String summary = AccessibilitySettings.getServiceSummary(mContext,
+ mServiceInfo, SERVICE_DISABLED).toString();
+
+ assertThat(summary).isEqualTo(
+ mContext.getString(R.string.preference_summary_default_combination,
+ mContext.getString(R.string.generic_accessibility_service_off),
+ mContext.getString(R.string.accessibility_summary_shortcut_enabled)));
+ }
+
+ @Test
+ public void getServiceSummary_enableServiceShortcutOffAndHasSummary_showsEnabledShortcutOffSummary() {
+ setShortcutEnabled(mServiceInfo.getComponentName(), false);
+ doReturn(DEFAULT_SUMMARY).when(mServiceInfo).loadSummary(any());
+
+ String summary = AccessibilitySettings.getServiceSummary(mContext,
+ mServiceInfo, SERVICE_ENABLED).toString();
+
+ assertThat(summary).isEqualTo(
+ mContext.getString(R.string.accessibility_feature_full_state_summary,
+ mContext.getString(R.string.generic_accessibility_service_on),
+ mContext.getString(R.string.generic_accessibility_feature_shortcut_off),
+ DEFAULT_SUMMARY));
+ }
+
+ @Test
+ public void getServiceSummary_enableServiceShortcutOnAndHasSummary_showsEnabledShortcutOnSummary() {
+ doReturn(DEFAULT_SUMMARY).when(mServiceInfo).loadSummary(any());
+ setShortcutEnabled(mServiceInfo.getComponentName(), true);
+
+ String summary = AccessibilitySettings.getServiceSummary(mContext,
+ mServiceInfo, SERVICE_ENABLED).toString();
+
+ assertThat(summary).isEqualTo(
+ mContext.getString(R.string.accessibility_feature_full_state_summary,
+ mContext.getString(R.string.generic_accessibility_service_on),
+ mContext.getString(R.string.accessibility_summary_shortcut_enabled),
+ DEFAULT_SUMMARY));
+ }
+
+ @Test
+ public void getServiceSummary_disableServiceShortcutOnAndHasSummary_showsDisabledShortcutOnSummary() {
+ doReturn(DEFAULT_SUMMARY).when(mServiceInfo).loadSummary(any());
+ setShortcutEnabled(mServiceInfo.getComponentName(), true);
+
+ String summary = AccessibilitySettings.getServiceSummary(mContext,
+ mServiceInfo, SERVICE_DISABLED).toString();
+
+ assertThat(summary).isEqualTo(
+ mContext.getString(R.string.accessibility_feature_full_state_summary,
+ mContext.getString(R.string.generic_accessibility_service_off),
+ mContext.getString(R.string.accessibility_summary_shortcut_enabled),
+ DEFAULT_SUMMARY));
+ }
+
+ @Test
+ public void getServiceSummary_disableServiceShortcutOffAndHasSummary_showsDisabledShortcutOffSummary() {
+ setShortcutEnabled(mServiceInfo.getComponentName(), false);
+ doReturn(DEFAULT_SUMMARY).when(mServiceInfo).loadSummary(any());
+
+ String summary = AccessibilitySettings.getServiceSummary(mContext,
+ mServiceInfo, SERVICE_DISABLED).toString();
+
+ assertThat(summary).isEqualTo(
+ mContext.getString(R.string.accessibility_feature_full_state_summary,
+ mContext.getString(R.string.generic_accessibility_service_off),
+ mContext.getString(R.string.generic_accessibility_feature_shortcut_off),
+ DEFAULT_SUMMARY));
}
@Test
public void getServiceDescription_serviceCrash_showsStopped() {
mServiceInfo.crashed = true;
- final CharSequence description = AccessibilitySettings.getServiceDescription(mContext,
- mServiceInfo, SERVICE_ENABLED);
+ String description = AccessibilitySettings.getServiceDescription(mContext,
+ mServiceInfo, SERVICE_ENABLED).toString();
assertThat(description).isEqualTo(
mContext.getString(R.string.accessibility_description_state_stopped));
@@ -249,12 +332,42 @@ public class AccessibilitySettingsTest {
public void getServiceDescription_haveDescription_showsDescription() {
doReturn(DEFAULT_DESCRIPTION).when(mServiceInfo).loadDescription(any());
- final CharSequence description = AccessibilitySettings.getServiceDescription(mContext,
- mServiceInfo, SERVICE_ENABLED);
+ String description = AccessibilitySettings.getServiceDescription(mContext,
+ mServiceInfo, SERVICE_ENABLED).toString();
assertThat(description).isEqualTo(DEFAULT_DESCRIPTION);
}
+ @Test
+ public void getA11yShortcutInfoPreferenceSummary_shortcutOn_showsShortcutOnSummary() {
+ doReturn(DEFAULT_SUMMARY).when(mShortcutInfo).loadSummary(any());
+ setShortcutEnabled(COMPONENT_NAME, true);
+
+ String summary = AccessibilitySettings.getA11yShortcutInfoPreferenceSummary(
+ mContext,
+ mShortcutInfo).toString();
+
+ assertThat(summary).isEqualTo(
+ mContext.getString(R.string.preference_summary_default_combination,
+ mContext.getString(R.string.accessibility_summary_shortcut_enabled),
+ DEFAULT_SUMMARY));
+ }
+
+ @Test
+ public void getA11yShortcutInfoPreferenceSummary_shortcutOff_showsShortcutOffSummary() {
+ doReturn(DEFAULT_SUMMARY).when(mShortcutInfo).loadSummary(any());
+ setShortcutEnabled(COMPONENT_NAME, false);
+
+ String summary = AccessibilitySettings.getA11yShortcutInfoPreferenceSummary(
+ mContext,
+ mShortcutInfo).toString();
+
+ assertThat(summary).isEqualTo(
+ mContext.getString(R.string.preference_summary_default_combination,
+ mContext.getString(R.string.generic_accessibility_feature_shortcut_off),
+ DEFAULT_SUMMARY));
+ }
+
@Test
@Config(shadows = {ShadowFragment.class, ShadowUserManager.class})
public void onCreate_haveRegisterToSpecificUrisAndActions() {
@@ -269,7 +382,7 @@ public class AccessibilitySettingsTest {
anyBoolean(),
any(AccessibilitySettingsContentObserver.class));
verify(mContentResolver).registerContentObserver(eq(Settings.Secure.getUriFor(
- Settings.Secure.ACCESSIBILITY_SHORTCUT_TARGET_SERVICE)), anyBoolean(),
+ Settings.Secure.ACCESSIBILITY_SHORTCUT_TARGET_SERVICE)), anyBoolean(),
any(AccessibilitySettingsContentObserver.class));
verify(mActivity, atLeast(1)).registerReceiver(any(PackageMonitor.class), captor.capture(),
isNull(), any());
@@ -403,4 +516,10 @@ public class AccessibilitySettingsTest {
mFragment.onStart();
mFragment.onResume();
}
+
+ private void setShortcutEnabled(ComponentName componentName, boolean enabled) {
+ Settings.Secure.putString(mContext.getContentResolver(),
+ Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS,
+ enabled ? componentName.flattenToString() : "");
+ }
}
diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilityUtilTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilityUtilTest.java
index 83c5bc27dd5..60b1ee144e1 100644
--- a/tests/robotests/src/com/android/settings/accessibility/AccessibilityUtilTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilityUtilTest.java
@@ -27,6 +27,8 @@ import android.content.pm.ServiceInfo;
import android.os.Build;
import android.provider.Settings;
+import androidx.test.core.app.ApplicationProvider;
+
import com.android.settings.R;
import com.android.settings.accessibility.AccessibilityUtil.UserShortcutType;
@@ -34,33 +36,33 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
import org.xmlpull.v1.XmlPullParserException;
import java.io.IOException;
+import java.util.StringJoiner;
@RunWith(RobolectricTestRunner.class)
public final class AccessibilityUtilTest {
- private static final int ON = 1;
- private static final int OFF = 0;
private static final String SECURE_TEST_KEY = "secure_test_key";
- private static final String DUMMY_PACKAGE_NAME = "com.mock.example";
- private static final String DUMMY_CLASS_NAME = DUMMY_PACKAGE_NAME + ".mock_a11y_service";
- private static final String DUMMY_CLASS_NAME2 = DUMMY_PACKAGE_NAME + ".mock_a11y_service2";
- private static final ComponentName DUMMY_COMPONENT_NAME = new ComponentName(DUMMY_PACKAGE_NAME,
- DUMMY_CLASS_NAME);
- private static final ComponentName DUMMY_COMPONENT_NAME2 = new ComponentName(DUMMY_PACKAGE_NAME,
- DUMMY_CLASS_NAME2);
+ private static final String MOCK_PACKAGE_NAME = "com.mock.example";
+ private static final String MOCK_CLASS_NAME = MOCK_PACKAGE_NAME + ".mock_a11y_service";
+ private static final String MOCK_CLASS_NAME2 = MOCK_PACKAGE_NAME + ".mock_a11y_service2";
+ private static final ComponentName MOCK_COMPONENT_NAME = new ComponentName(MOCK_PACKAGE_NAME,
+ MOCK_CLASS_NAME);
+ private static final ComponentName MOCK_COMPONENT_NAME2 = new ComponentName(MOCK_PACKAGE_NAME,
+ MOCK_CLASS_NAME2);
private static final String SOFTWARE_SHORTCUT_KEY =
Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS;
private static final String HARDWARE_SHORTCUT_KEY =
Settings.Secure.ACCESSIBILITY_SHORTCUT_TARGET_SERVICE;
+ private static final String PLACEHOLDER_SETTING_FEATURE = "placeholderSettingFeature";
+
private Context mContext;
@Before
public void setUp() {
- mContext = RuntimeEnvironment.application;
+ mContext = ApplicationProvider.getApplicationContext();
}
@Test
@@ -75,30 +77,33 @@ public final class AccessibilityUtilTest {
@Test
public void getSummary_hasValueAndEqualsToOne_shouldReturnOnString() {
- Settings.Secure.putInt(mContext.getContentResolver(), SECURE_TEST_KEY, ON);
+ setSettingsFeatureEnabled(SECURE_TEST_KEY, true);
- final CharSequence result = AccessibilityUtil.getSummary(mContext, SECURE_TEST_KEY);
+ final CharSequence result = AccessibilityUtil.getSummary(mContext, SECURE_TEST_KEY,
+ R.string.switch_on_text, R.string.switch_off_text);
assertThat(result)
- .isEqualTo(mContext.getText(R.string.accessibility_feature_state_on));
+ .isEqualTo(mContext.getText(R.string.switch_on_text));
}
@Test
public void getSummary_hasValueAndEqualsToZero_shouldReturnOffString() {
- Settings.Secure.putInt(mContext.getContentResolver(), SECURE_TEST_KEY, OFF);
+ setSettingsFeatureEnabled(SECURE_TEST_KEY, false);
- final CharSequence result = AccessibilityUtil.getSummary(mContext, SECURE_TEST_KEY);
+ final CharSequence result = AccessibilityUtil.getSummary(mContext, SECURE_TEST_KEY,
+ R.string.switch_on_text, R.string.switch_off_text);
assertThat(result)
- .isEqualTo(mContext.getText(R.string.accessibility_feature_state_off));
+ .isEqualTo(mContext.getText(R.string.switch_off_text));
}
@Test
public void getSummary_noValue_shouldReturnOffString() {
- final CharSequence result = AccessibilityUtil.getSummary(mContext, SECURE_TEST_KEY);
+ final CharSequence result = AccessibilityUtil.getSummary(mContext, SECURE_TEST_KEY,
+ R.string.switch_on_text, R.string.switch_off_text);
assertThat(result)
- .isEqualTo(mContext.getText(R.string.accessibility_feature_state_off));
+ .isEqualTo(mContext.getText(R.string.switch_off_text));
}
@Test
@@ -136,29 +141,31 @@ public final class AccessibilityUtilTest {
@Test
public void hasValueInSettings_putValue_hasValue() {
- putStringIntoSettings(SOFTWARE_SHORTCUT_KEY, DUMMY_COMPONENT_NAME.flattenToString());
+ setShortcut(UserShortcutType.SOFTWARE, MOCK_COMPONENT_NAME.flattenToString());
assertThat(AccessibilityUtil.hasValueInSettings(mContext, UserShortcutType.SOFTWARE,
- DUMMY_COMPONENT_NAME)).isTrue();
+ MOCK_COMPONENT_NAME)).isTrue();
}
@Test
public void getUserShortcutTypeFromSettings_putOneValue_hasValue() {
- putStringIntoSettings(SOFTWARE_SHORTCUT_KEY, DUMMY_COMPONENT_NAME.flattenToString());
+ setShortcut(UserShortcutType.SOFTWARE, MOCK_COMPONENT_NAME.flattenToString());
final int shortcutType = AccessibilityUtil.getUserShortcutTypesFromSettings(mContext,
- DUMMY_COMPONENT_NAME);
+ MOCK_COMPONENT_NAME);
+
assertThat(
(shortcutType & UserShortcutType.SOFTWARE) == UserShortcutType.SOFTWARE).isTrue();
}
@Test
public void getUserShortcutTypeFromSettings_putTwoValues_hasValue() {
- putStringIntoSettings(SOFTWARE_SHORTCUT_KEY, DUMMY_COMPONENT_NAME.flattenToString());
- putStringIntoSettings(HARDWARE_SHORTCUT_KEY, DUMMY_COMPONENT_NAME.flattenToString());
+ setShortcut(UserShortcutType.SOFTWARE, MOCK_COMPONENT_NAME.flattenToString());
+ setShortcut(UserShortcutType.HARDWARE, MOCK_COMPONENT_NAME.flattenToString());
final int shortcutType = AccessibilityUtil.getUserShortcutTypesFromSettings(mContext,
- DUMMY_COMPONENT_NAME);
+ MOCK_COMPONENT_NAME);
+
assertThat(
(shortcutType & UserShortcutType.SOFTWARE) == UserShortcutType.SOFTWARE).isTrue();
assertThat(
@@ -167,50 +174,53 @@ public final class AccessibilityUtilTest {
@Test
public void optInAllValuesToSettings_optInValue_haveMatchString() {
+ clearShortcuts();
int shortcutTypes = UserShortcutType.SOFTWARE | UserShortcutType.HARDWARE;
- AccessibilityUtil.optInAllValuesToSettings(mContext, shortcutTypes, DUMMY_COMPONENT_NAME);
+ AccessibilityUtil.optInAllValuesToSettings(mContext, shortcutTypes, MOCK_COMPONENT_NAME);
assertThat(getStringFromSettings(SOFTWARE_SHORTCUT_KEY)).isEqualTo(
- DUMMY_COMPONENT_NAME.flattenToString());
+ MOCK_COMPONENT_NAME.flattenToString());
assertThat(getStringFromSettings(HARDWARE_SHORTCUT_KEY)).isEqualTo(
- DUMMY_COMPONENT_NAME.flattenToString());
+ MOCK_COMPONENT_NAME.flattenToString());
}
@Test
public void optInValueToSettings_optInValue_haveMatchString() {
- putStringIntoSettings(SOFTWARE_SHORTCUT_KEY, DUMMY_COMPONENT_NAME.flattenToString());
+ setShortcut(UserShortcutType.SOFTWARE, MOCK_COMPONENT_NAME.flattenToString());
+
AccessibilityUtil.optInValueToSettings(mContext, UserShortcutType.SOFTWARE,
- DUMMY_COMPONENT_NAME2);
+ MOCK_COMPONENT_NAME2);
assertThat(getStringFromSettings(SOFTWARE_SHORTCUT_KEY)).isEqualTo(
- DUMMY_COMPONENT_NAME.flattenToString() + ":"
- + DUMMY_COMPONENT_NAME2.flattenToString());
+ MOCK_COMPONENT_NAME.flattenToString() + ":"
+ + MOCK_COMPONENT_NAME2.flattenToString());
}
@Test
public void optInValueToSettings_optInTwoValues_haveMatchString() {
- putStringIntoSettings(SOFTWARE_SHORTCUT_KEY, DUMMY_COMPONENT_NAME.flattenToString());
+ setShortcut(UserShortcutType.SOFTWARE, MOCK_COMPONENT_NAME.flattenToString());
+
AccessibilityUtil.optInValueToSettings(mContext, UserShortcutType.SOFTWARE,
- DUMMY_COMPONENT_NAME2);
+ MOCK_COMPONENT_NAME2);
AccessibilityUtil.optInValueToSettings(mContext, UserShortcutType.SOFTWARE,
- DUMMY_COMPONENT_NAME2);
+ MOCK_COMPONENT_NAME2);
assertThat(getStringFromSettings(SOFTWARE_SHORTCUT_KEY)).isEqualTo(
- DUMMY_COMPONENT_NAME.flattenToString() + ":"
- + DUMMY_COMPONENT_NAME2.flattenToString());
+ MOCK_COMPONENT_NAME.flattenToString() + ":"
+ + MOCK_COMPONENT_NAME2.flattenToString());
}
@Test
public void optOutAllValuesToSettings_optOutValue_emptyString() {
- putStringIntoSettings(SOFTWARE_SHORTCUT_KEY, DUMMY_COMPONENT_NAME.flattenToString());
- putStringIntoSettings(HARDWARE_SHORTCUT_KEY, DUMMY_COMPONENT_NAME.flattenToString());
+ setShortcut(UserShortcutType.SOFTWARE, MOCK_COMPONENT_NAME.flattenToString());
+ setShortcut(UserShortcutType.HARDWARE, MOCK_COMPONENT_NAME.flattenToString());
int shortcutTypes =
UserShortcutType.SOFTWARE | UserShortcutType.HARDWARE | UserShortcutType.TRIPLETAP;
AccessibilityUtil.optOutAllValuesFromSettings(mContext, shortcutTypes,
- DUMMY_COMPONENT_NAME);
+ MOCK_COMPONENT_NAME);
assertThat(getStringFromSettings(SOFTWARE_SHORTCUT_KEY)).isEmpty();
assertThat(getStringFromSettings(HARDWARE_SHORTCUT_KEY)).isEmpty();
@@ -218,30 +228,108 @@ public final class AccessibilityUtilTest {
@Test
public void optOutValueFromSettings_optOutValue_emptyString() {
- putStringIntoSettings(SOFTWARE_SHORTCUT_KEY, DUMMY_COMPONENT_NAME.flattenToString());
+ setShortcut(UserShortcutType.SOFTWARE, MOCK_COMPONENT_NAME.flattenToString());
+
AccessibilityUtil.optOutValueFromSettings(mContext, UserShortcutType.SOFTWARE,
- DUMMY_COMPONENT_NAME);
+ MOCK_COMPONENT_NAME);
assertThat(getStringFromSettings(SOFTWARE_SHORTCUT_KEY)).isEmpty();
}
@Test
public void optOutValueFromSettings_optOutValue_haveMatchString() {
- putStringIntoSettings(SOFTWARE_SHORTCUT_KEY, DUMMY_COMPONENT_NAME.flattenToString() + ":"
- + DUMMY_COMPONENT_NAME2.flattenToString());
+ setShortcut(UserShortcutType.SOFTWARE, MOCK_COMPONENT_NAME.flattenToString(),
+ MOCK_COMPONENT_NAME2.flattenToString());
+
AccessibilityUtil.optOutValueFromSettings(mContext, UserShortcutType.SOFTWARE,
- DUMMY_COMPONENT_NAME2);
+ MOCK_COMPONENT_NAME2);
assertThat(getStringFromSettings(SOFTWARE_SHORTCUT_KEY)).isEqualTo(
- DUMMY_COMPONENT_NAME.flattenToString());
+ MOCK_COMPONENT_NAME.flattenToString());
+ }
+
+ @Test
+ public void getFeatureFullStateSummary_featureOffShortcutOff_showsOffShortcutOffAndSummary() {
+ setSettingsFeatureEnabled(PLACEHOLDER_SETTING_FEATURE, false);
+ clearShortcuts();
+ String expectedText = mContext.getString(
+ R.string.accessibility_feature_full_state_summary,
+ mContext.getString(R.string.color_inversion_state_off),
+ mContext.getString(R.string.generic_accessibility_feature_shortcut_off),
+ mContext.getString(R.string.color_inversion_feature_summary));
+
+ String observerText = AccessibilityUtil.getFeatureFullStateSummary(
+ mContext, MOCK_COMPONENT_NAME,
+ PLACEHOLDER_SETTING_FEATURE,
+ R.string.color_inversion_state_on, R.string.color_inversion_state_off,
+ R.string.color_inversion_feature_summary).toString();
+
+ assertThat(observerText).isEqualTo(expectedText);
+ }
+
+ @Test
+ public void getFeatureFullStateSummary_featureOnShortcutOff_showsOnShortcutOffAndSummary() {
+ setSettingsFeatureEnabled(PLACEHOLDER_SETTING_FEATURE, true);
+ clearShortcuts();
+ String expectedText = mContext.getString(
+ R.string.accessibility_feature_full_state_summary,
+ mContext.getString(R.string.color_inversion_state_on),
+ mContext.getString(R.string.generic_accessibility_feature_shortcut_off),
+ mContext.getString(R.string.color_inversion_feature_summary));
+
+ String observerText = AccessibilityUtil.getFeatureFullStateSummary(
+ mContext, MOCK_COMPONENT_NAME,
+ PLACEHOLDER_SETTING_FEATURE,
+ R.string.color_inversion_state_on, R.string.color_inversion_state_off,
+ R.string.color_inversion_feature_summary).toString();
+
+ assertThat(observerText).isEqualTo(expectedText);
+ }
+
+ @Test
+ public void getFeatureFullStateSummary_featureOffShortcutOn_showsOffShortcutOnAndSummary() {
+ setSettingsFeatureEnabled(PLACEHOLDER_SETTING_FEATURE, false);
+ setShortcut(UserShortcutType.SOFTWARE, MOCK_COMPONENT_NAME.flattenToString());
+ String expectedText = mContext.getString(
+ R.string.accessibility_feature_full_state_summary,
+ mContext.getString(R.string.color_inversion_state_off),
+ mContext.getString(R.string.accessibility_summary_shortcut_enabled),
+ mContext.getString(R.string.color_inversion_feature_summary));
+
+ String observerText = AccessibilityUtil.getFeatureFullStateSummary(
+ mContext, MOCK_COMPONENT_NAME,
+ PLACEHOLDER_SETTING_FEATURE,
+ R.string.color_inversion_state_on, R.string.color_inversion_state_off,
+ R.string.color_inversion_feature_summary).toString();
+
+ assertThat(observerText).isEqualTo(expectedText);
+ }
+
+ @Test
+ public void getFeatureFullStateSummary_featureOnShortcutOn_showsOnShortcutOnAndSummary() {
+ setSettingsFeatureEnabled(PLACEHOLDER_SETTING_FEATURE, true);
+ setShortcut(UserShortcutType.SOFTWARE, MOCK_COMPONENT_NAME.flattenToString());
+ String expectedText = mContext.getString(
+ R.string.accessibility_feature_full_state_summary,
+ mContext.getString(R.string.color_inversion_state_on),
+ mContext.getString(R.string.accessibility_summary_shortcut_enabled),
+ mContext.getString(R.string.color_inversion_feature_summary));
+
+ String observerText = AccessibilityUtil.getFeatureFullStateSummary(
+ mContext, MOCK_COMPONENT_NAME,
+ PLACEHOLDER_SETTING_FEATURE,
+ R.string.color_inversion_state_on, R.string.color_inversion_state_off,
+ R.string.color_inversion_feature_summary).toString();
+
+ assertThat(observerText).isEqualTo(expectedText);
}
private AccessibilityServiceInfo getMockAccessibilityServiceInfo() {
final ApplicationInfo applicationInfo = new ApplicationInfo();
final ServiceInfo serviceInfo = new ServiceInfo();
- applicationInfo.packageName = DUMMY_PACKAGE_NAME;
- serviceInfo.packageName = DUMMY_PACKAGE_NAME;
- serviceInfo.name = DUMMY_CLASS_NAME;
+ applicationInfo.packageName = MOCK_PACKAGE_NAME;
+ serviceInfo.packageName = MOCK_PACKAGE_NAME;
+ serviceInfo.name = MOCK_CLASS_NAME;
serviceInfo.applicationInfo = applicationInfo;
final ResolveInfo resolveInfo = new ResolveInfo();
@@ -250,7 +338,7 @@ public final class AccessibilityUtilTest {
try {
final AccessibilityServiceInfo info = new AccessibilityServiceInfo(resolveInfo,
mContext);
- info.setComponentName(DUMMY_COMPONENT_NAME);
+ info.setComponentName(MOCK_COMPONENT_NAME);
return info;
} catch (XmlPullParserException | IOException e) {
// Do nothing
@@ -259,11 +347,28 @@ public final class AccessibilityUtilTest {
return null;
}
- private void putStringIntoSettings(String key, String componentName) {
- Settings.Secure.putString(mContext.getContentResolver(), key, componentName);
- }
-
private String getStringFromSettings(String key) {
return Settings.Secure.getString(mContext.getContentResolver(), key);
}
+
+ private void setSettingsFeatureEnabled(String settingsKey, boolean enabled) {
+ Settings.Secure.putInt(mContext.getContentResolver(),
+ settingsKey,
+ enabled ? AccessibilityUtil.State.ON : AccessibilityUtil.State.OFF);
+ }
+
+ private void setShortcut(@UserShortcutType int shortcutType, String... componentNames) {
+ StringJoiner shortcutComponents = new StringJoiner(":");
+ for (String componentName : componentNames) {
+ shortcutComponents.add(componentName);
+ }
+ Settings.Secure.putString(mContext.getContentResolver(),
+ shortcutType == UserShortcutType.SOFTWARE ? SOFTWARE_SHORTCUT_KEY
+ : HARDWARE_SHORTCUT_KEY, shortcutComponents.toString());
+ }
+
+ private void clearShortcuts() {
+ Settings.Secure.putString(mContext.getContentResolver(), SOFTWARE_SHORTCUT_KEY, "");
+ Settings.Secure.putString(mContext.getContentResolver(), HARDWARE_SHORTCUT_KEY, "");
+ }
}
diff --git a/tests/robotests/src/com/android/settings/accessibility/AutoclickPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/AutoclickPreferenceControllerTest.java
index aaaf30303c2..4b20c961b66 100644
--- a/tests/robotests/src/com/android/settings/accessibility/AutoclickPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/AutoclickPreferenceControllerTest.java
@@ -56,19 +56,17 @@ public class AutoclickPreferenceControllerTest {
@Test
public void getSummary_disabledAutoclick_shouldReturnOffSummary() {
- Settings.Secure.putInt(mContext.getContentResolver(),
- Settings.Secure.ACCESSIBILITY_AUTOCLICK_ENABLED, OFF);
+ setAutoClickEnabled(false);
- assertThat(mController.getSummary())
- .isEqualTo(mContext.getText(R.string.accessibility_feature_state_off));
+ assertThat(mController.getSummary().toString())
+ .isEqualTo(mContext.getText(R.string.autoclick_disabled));
}
@Test
public void getSummary_enabledAutoclick_shouldReturnOnSummary() {
- Settings.Secure.putInt(mContext.getContentResolver(),
- Settings.Secure.ACCESSIBILITY_AUTOCLICK_ENABLED, ON);
- Settings.Secure.putInt(mContext.getContentResolver(),
- Settings.Secure.ACCESSIBILITY_AUTOCLICK_DELAY, AUTOCLICK_DELAY_DEFAULT);
+ setAutoClickEnabled(true);
+ setAutoClickDelayed(AUTOCLICK_DELAY_DEFAULT);
+
assertThat(mController.getSummary().toString())
.isEqualTo(AutoclickUtils.getAutoclickDelaySummary(
@@ -76,4 +74,14 @@ public class AutoclickPreferenceControllerTest {
R.string.accessibilty_autoclick_preference_subtitle_medium_delay,
AUTOCLICK_DELAY_DEFAULT).toString());
}
+
+ private void setAutoClickEnabled(boolean enabled) {
+ Settings.Secure.putInt(mContext.getContentResolver(),
+ Settings.Secure.ACCESSIBILITY_AUTOCLICK_ENABLED, enabled ? ON : OFF);
+ }
+
+ private void setAutoClickDelayed(int delayedInMs) {
+ Settings.Secure.putInt(mContext.getContentResolver(),
+ Settings.Secure.ACCESSIBILITY_AUTOCLICK_DELAY, delayedInMs);
+ }
}
diff --git a/tests/robotests/src/com/android/settings/accessibility/CaptioningPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/CaptioningPreferenceControllerTest.java
index c44bed11819..5ff00e2f7f2 100644
--- a/tests/robotests/src/com/android/settings/accessibility/CaptioningPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/CaptioningPreferenceControllerTest.java
@@ -24,6 +24,8 @@ import static com.google.common.truth.Truth.assertThat;
import android.content.Context;
import android.provider.Settings;
+import androidx.test.core.app.ApplicationProvider;
+
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
@@ -31,7 +33,6 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
/** Tests for {@link CaptioningPreferenceController}. */
@RunWith(RobolectricTestRunner.class)
@@ -42,7 +43,7 @@ public class CaptioningPreferenceControllerTest {
@Before
public void setUp() {
- mContext = RuntimeEnvironment.application;
+ mContext = ApplicationProvider.getApplicationContext();
mController = new CaptioningPreferenceController(mContext, "captioning_pref");
}
@@ -54,19 +55,22 @@ public class CaptioningPreferenceControllerTest {
@Test
public void getSummary_enabledCaptions_shouldReturnOnSummary() {
- Settings.Secure.putInt(mContext.getContentResolver(),
- Settings.Secure.ACCESSIBILITY_CAPTIONING_ENABLED, ON);
+ setCaptioningEnabled(true);
assertThat(mController.getSummary()).isEqualTo(
- mContext.getText(R.string.accessibility_feature_state_on));
+ mContext.getText(R.string.show_captions_enabled));
}
@Test
public void getSummary_disabledCaptions_shouldReturnOffSummary() {
- Settings.Secure.putInt(mContext.getContentResolver(),
- Settings.Secure.ACCESSIBILITY_CAPTIONING_ENABLED, OFF);
+ setCaptioningEnabled(false);
assertThat(mController.getSummary()).isEqualTo(
- mContext.getText(R.string.accessibility_feature_state_off));
+ mContext.getText(R.string.show_captions_disabled));
+ }
+
+ private void setCaptioningEnabled(boolean enabled) {
+ Settings.Secure.putInt(mContext.getContentResolver(),
+ Settings.Secure.ACCESSIBILITY_CAPTIONING_ENABLED, enabled ? ON : OFF);
}
}
diff --git a/tests/robotests/src/com/android/settings/accessibility/ColorInversionPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/ColorInversionPreferenceControllerTest.java
index e03449887d3..9ed374973eb 100644
--- a/tests/robotests/src/com/android/settings/accessibility/ColorInversionPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/ColorInversionPreferenceControllerTest.java
@@ -16,18 +16,21 @@
package com.android.settings.accessibility;
+import static com.android.internal.accessibility.AccessibilityShortcutController.COLOR_INVERSION_COMPONENT_NAME;
+
import static com.google.common.truth.Truth.assertThat;
import android.content.Context;
import android.provider.Settings;
+import androidx.test.core.app.ApplicationProvider;
+
import com.android.settings.R;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -39,29 +42,72 @@ public class ColorInversionPreferenceControllerTest {
Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED;
private Context mContext;
private ColorInversionPreferenceController mController;
+ private String mColorInversionSummary;
@Before
public void setUp() {
- mContext = RuntimeEnvironment.application;
+ mContext = ApplicationProvider.getApplicationContext();
mController = new ColorInversionPreferenceController(mContext, PREF_KEY);
+ mColorInversionSummary = mContext.getString(R.string.color_inversion_feature_summary);
}
@Test
- public void getSummary_enabledColorInversion_shouldReturnOnSummary() {
- Settings.Secure.putInt(mContext.getContentResolver(),
- DISPLAY_INVERSION_ENABLED, State.ON);
+ public void getSummary_enabledColorInversionShortcutOff_shouldReturnOnShortcutOffSummary() {
+ setColorInversionEnabled(true);
+ setColorInversionShortcutEnabled(false);
- assertThat(mController.getSummary().toString().contains(
- mContext.getText(R.string.accessibility_feature_state_on))).isTrue();
+ assertThat(mController.getSummary().toString()).isEqualTo(
+ mContext.getString(R.string.accessibility_feature_full_state_summary,
+ mContext.getString(R.string.color_inversion_state_on),
+ mContext.getString(R.string.generic_accessibility_feature_shortcut_off),
+ mColorInversionSummary));
}
@Test
- public void getSummary_disabledColorInversion_shouldReturnOffSummary() {
- Settings.Secure.putInt(mContext.getContentResolver(),
- DISPLAY_INVERSION_ENABLED, State.OFF);
+ public void getSummary_enabledColorInversionShortcutOn_shouldReturnOnShortcutOnSummary() {
+ setColorInversionEnabled(true);
+ setColorInversionShortcutEnabled(true);
- assertThat(mController.getSummary().toString().contains(
- mContext.getText(R.string.accessibility_feature_state_off))).isTrue();
+ assertThat(mController.getSummary().toString()).isEqualTo(
+ mContext.getString(R.string.accessibility_feature_full_state_summary,
+ mContext.getString(R.string.color_inversion_state_on),
+ mContext.getString(R.string.accessibility_summary_shortcut_enabled),
+ mColorInversionSummary));
+ }
+
+ @Test
+ public void getSummary_disabledColorInversionShortcutOff_shouldReturnOffShortcutOffSummary() {
+ setColorInversionEnabled(false);
+ setColorInversionShortcutEnabled(false);
+
+ assertThat(mController.getSummary().toString()).isEqualTo(
+ mContext.getString(R.string.accessibility_feature_full_state_summary,
+ mContext.getString(R.string.color_inversion_state_off),
+ mContext.getString(R.string.generic_accessibility_feature_shortcut_off),
+ mColorInversionSummary));
+ }
+
+ @Test
+ public void getSummary_disabledColorInversionShortcutOn_shouldReturnOffShortcutOnSummary() {
+ setColorInversionEnabled(false);
+ setColorInversionShortcutEnabled(true);
+
+ assertThat(mController.getSummary().toString()).isEqualTo(
+ mContext.getString(R.string.accessibility_feature_full_state_summary,
+ mContext.getString(R.string.color_inversion_state_off),
+ mContext.getString(R.string.accessibility_summary_shortcut_enabled),
+ mColorInversionSummary));
+ }
+
+ private void setColorInversionShortcutEnabled(boolean enabled) {
+ Settings.Secure.putString(mContext.getContentResolver(),
+ Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS,
+ enabled ? COLOR_INVERSION_COMPONENT_NAME.flattenToString() : "");
+ }
+
+ private void setColorInversionEnabled(boolean enabled) {
+ Settings.Secure.putInt(mContext.getContentResolver(),
+ DISPLAY_INVERSION_ENABLED, enabled ? State.ON : State.OFF);
}
@Retention(RetentionPolicy.SOURCE)
diff --git a/tests/robotests/src/com/android/settings/accessibility/DaltonizerPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/DaltonizerPreferenceControllerTest.java
index 1a00cc18c1f..96796a0dd3b 100644
--- a/tests/robotests/src/com/android/settings/accessibility/DaltonizerPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/DaltonizerPreferenceControllerTest.java
@@ -16,18 +16,21 @@
package com.android.settings.accessibility;
+import static com.android.internal.accessibility.AccessibilityShortcutController.DALTONIZER_COMPONENT_NAME;
+
import static com.google.common.truth.Truth.assertThat;
import android.content.Context;
import android.provider.Settings;
+import androidx.test.core.app.ApplicationProvider;
+
import com.android.settings.R;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
@RunWith(RobolectricTestRunner.class)
public class DaltonizerPreferenceControllerTest {
@@ -37,28 +40,71 @@ public class DaltonizerPreferenceControllerTest {
private Context mContext;
private DaltonizerPreferenceController mController;
+ private String mDaltonizerSummary;
@Before
public void setUp() {
- mContext = RuntimeEnvironment.application;
+ mContext = ApplicationProvider.getApplicationContext();
mController = new DaltonizerPreferenceController(mContext, PREF_KEY);
+ mDaltonizerSummary = mContext.getString(R.string.daltonizer_feature_summary);
}
@Test
- public void getSummary_enabledColorCorrection_shouldReturnOnSummary() {
- Settings.Secure.putInt(mContext.getContentResolver(),
- Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED, ON);
+ public void getSummary_enabledColorCorrectionShortcutOff_shouldReturnOnShortcutOffSummary() {
+ setColorCorrectionEnabled(true);
+ setColorCorrectionShortcutEnabled(false);
- assertThat(mController.getSummary().toString().contains(
- mContext.getText(R.string.accessibility_feature_state_on))).isTrue();
+ assertThat(mController.getSummary().toString()).isEqualTo(
+ mContext.getString(R.string.accessibility_feature_full_state_summary,
+ mContext.getString(R.string.daltonizer_state_on),
+ mContext.getString(R.string.generic_accessibility_feature_shortcut_off),
+ mDaltonizerSummary));
}
@Test
- public void getSummary_disabledColorCorrection_shouldReturnOffSummary() {
- Settings.Secure.putInt(mContext.getContentResolver(),
- Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED, OFF);
+ public void getSummary_enabledColorCorrectionShortcutOn_shouldReturnOnShortcutOnSummary() {
+ setColorCorrectionEnabled(true);
+ setColorCorrectionShortcutEnabled(true);
- assertThat(mController.getSummary().toString().contains(
- mContext.getText(R.string.accessibility_feature_state_off))).isTrue();
+ assertThat(mController.getSummary().toString()).isEqualTo(
+ mContext.getString(R.string.accessibility_feature_full_state_summary,
+ mContext.getString(R.string.daltonizer_state_on),
+ mContext.getString(R.string.accessibility_summary_shortcut_enabled),
+ mDaltonizerSummary));
+ }
+
+ @Test
+ public void getSummary_disabledColorCorrectionShortcutOff_shouldReturnOffShortcutOffSummary() {
+ setColorCorrectionEnabled(false);
+ setColorCorrectionShortcutEnabled(false);
+
+ assertThat(mController.getSummary().toString()).isEqualTo(
+ mContext.getString(R.string.accessibility_feature_full_state_summary,
+ mContext.getString(R.string.daltonizer_state_off),
+ mContext.getString(R.string.generic_accessibility_feature_shortcut_off),
+ mDaltonizerSummary));
+ }
+
+ @Test
+ public void getSummary_disabledColorCorrectionShortcutOn_shouldReturnOffShortcutOnSummary() {
+ setColorCorrectionEnabled(false);
+ setColorCorrectionShortcutEnabled(true);
+
+ assertThat(mController.getSummary().toString()).isEqualTo(
+ mContext.getString(R.string.accessibility_feature_full_state_summary,
+ mContext.getString(R.string.daltonizer_state_off),
+ mContext.getString(R.string.accessibility_summary_shortcut_enabled),
+ mDaltonizerSummary));
+ }
+
+ private void setColorCorrectionEnabled(boolean enabled) {
+ Settings.Secure.putInt(mContext.getContentResolver(),
+ Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED, enabled ? ON : OFF);
+ }
+
+ private void setColorCorrectionShortcutEnabled(boolean enabled) {
+ Settings.Secure.putString(mContext.getContentResolver(),
+ Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS,
+ enabled ? DALTONIZER_COMPONENT_NAME.flattenToString() : "");
}
}
diff --git a/tests/robotests/src/com/android/settings/accessibility/LiveCaptionPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/LiveCaptionPreferenceControllerTest.java
index 9e0ce9c53bd..2633a2c3193 100644
--- a/tests/robotests/src/com/android/settings/accessibility/LiveCaptionPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/LiveCaptionPreferenceControllerTest.java
@@ -21,13 +21,19 @@ import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_
import static com.google.common.truth.Truth.assertThat;
+import android.content.Context;
import android.content.pm.ResolveInfo;
+import android.provider.Settings;
+
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.R;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
import org.robolectric.Shadows;
import org.robolectric.shadows.ShadowPackageManager;
@@ -36,18 +42,20 @@ import java.util.Collections;
@RunWith(RobolectricTestRunner.class)
public class LiveCaptionPreferenceControllerTest {
+ private Context mContext;
private LiveCaptionPreferenceController mController;
+ private Preference mLiveCaptionPreference;
@Before
public void setUp() {
- mController = new LiveCaptionPreferenceController(RuntimeEnvironment.application,
- "test_key");
+ mContext = ApplicationProvider.getApplicationContext();
+ mController = new LiveCaptionPreferenceController(mContext, "test_key");
+ mLiveCaptionPreference = new Preference(mContext);
}
@Test
public void getAvailabilityStatus_canResolveIntent_shouldReturnAvailable() {
- final ShadowPackageManager pm = Shadows.shadowOf(
- RuntimeEnvironment.application.getPackageManager());
+ final ShadowPackageManager pm = Shadows.shadowOf(mContext.getPackageManager());
pm.addResolveInfoForIntent(LiveCaptionPreferenceController.LIVE_CAPTION_INTENT,
new ResolveInfo());
@@ -56,11 +64,43 @@ public class LiveCaptionPreferenceControllerTest {
@Test
public void getAvailabilityStatus_noResolveIntent_shouldReturnUnavailable() {
- final ShadowPackageManager pm = Shadows.shadowOf(
- RuntimeEnvironment.application.getPackageManager());
+ final ShadowPackageManager pm = Shadows.shadowOf(mContext.getPackageManager());
pm.setResolveInfosForIntent(LiveCaptionPreferenceController.LIVE_CAPTION_INTENT,
Collections.emptyList());
assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
}
+
+ @Test
+ public void updateState_liveCaptionEnabled_subtextShowsOnSummary() {
+ setLiveCaptionEnabled(true);
+
+ mController.updateState(mLiveCaptionPreference);
+
+ assertThat(mLiveCaptionPreference.getSummary().toString()).isEqualTo(
+ mContext.getString(
+ R.string.preference_summary_default_combination,
+ mContext.getString(R.string.live_caption_enabled),
+ mContext.getText(R.string.live_caption_summary))
+ );
+ }
+
+ @Test
+ public void updateState_liveCaptionDisabled_subtextShowsOffSummary() {
+ setLiveCaptionEnabled(false);
+
+ mController.updateState(mLiveCaptionPreference);
+
+ assertThat(mLiveCaptionPreference.getSummary()).isEqualTo(
+ mContext.getString(
+ R.string.preference_summary_default_combination,
+ mContext.getString(R.string.live_caption_disabled),
+ mContext.getText(R.string.live_caption_summary))
+ );
+ }
+
+ private void setLiveCaptionEnabled(boolean enabled) {
+ Settings.Secure.putInt(mContext.getContentResolver(), Settings.Secure.ODI_CAPTIONS_ENABLED,
+ enabled ? AccessibilityUtil.State.ON: AccessibilityUtil.State.OFF);
+ }
}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java
index d2dfae06bef..b9a2ada97c3 100644
--- a/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java
@@ -411,6 +411,31 @@ public class ToggleScreenMagnificationPreferenceFragmentTest {
assertTrue(arguments.containsKey(AccessibilitySettings.EXTRA_HTML_DESCRIPTION));
}
+ @Test
+ public void getSummary_magnificationEnabled_returnShortcutOnWithSummary() {
+ setMagnificationTripleTapEnabled(true);
+
+ assertThat(
+ ToggleScreenMagnificationPreferenceFragment.getServiceSummary(mContext).toString())
+ .isEqualTo(
+ mContext.getString(R.string.preference_summary_default_combination,
+ mContext.getString(R.string.accessibility_summary_shortcut_enabled),
+ mContext.getText(R.string.magnification_feature_summary)));
+ }
+
+ @Test
+ public void getSummary_magnificationDisabled_returnShortcutOffWithSummary() {
+ setMagnificationTripleTapEnabled(false);
+
+ assertThat(
+ ToggleScreenMagnificationPreferenceFragment.getServiceSummary(mContext).toString())
+ .isEqualTo(
+ mContext.getString(R.string.preference_summary_default_combination,
+ mContext.getString(
+ R.string.generic_accessibility_feature_shortcut_off),
+ mContext.getText(R.string.magnification_feature_summary)));
+ }
+
private void putStringIntoSettings(String key, String componentName) {
Settings.Secure.putString(mContext.getContentResolver(), key, componentName);
}
diff --git a/tests/unit/src/com/android/settings/accessibility/OneHandedPreferenceControllerTest.java b/tests/unit/src/com/android/settings/accessibility/OneHandedPreferenceControllerTest.java
new file mode 100644
index 00000000000..2ab61cdbaa9
--- /dev/null
+++ b/tests/unit/src/com/android/settings/accessibility/OneHandedPreferenceControllerTest.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2023 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 com.android.settings.R;
+import com.android.settings.gestures.OneHandedSettingsUtils;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public final class OneHandedPreferenceControllerTest {
+ private Context mContext;
+ private OneHandedPreferenceController mController;
+
+ @Before
+ public void setUp() {
+ mContext = ApplicationProvider.getApplicationContext();
+ mController = new OneHandedPreferenceController(mContext, "one_handed");
+ }
+
+ @Test
+ public void getSummary_oneHandedEnabled_showsOnWithSummary() {
+ OneHandedSettingsUtils.setOneHandedModeEnabled(mContext, true);
+
+ assertThat(mController.getSummary().toString()).isEqualTo(
+ mContext.getString(R.string.preference_summary_default_combination,
+ mContext.getText(R.string.gesture_setting_on),
+ mContext.getText(R.string.one_handed_mode_intro_text)));
+ }
+
+ @Test
+ public void getSummary_oneHandedDisabled_showsOffWithSummary() {
+ OneHandedSettingsUtils.setOneHandedModeEnabled(mContext, false);
+
+ assertThat(mController.getSummary().toString()).isEqualTo(
+ mContext.getString(R.string.preference_summary_default_combination,
+ mContext.getText(R.string.gesture_setting_off),
+ mContext.getText(R.string.one_handed_mode_intro_text)));
+ }
+}