Merge "Cleanup of deprecated A11y settings functions" into main

This commit is contained in:
Riley Jones
2025-01-22 10:41:05 -08:00
committed by Android (Google) Code Review
16 changed files with 45 additions and 631 deletions

View File

@@ -21,16 +21,8 @@ import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_GESTURE
import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON;
import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL;
import static com.android.internal.accessibility.common.ShortcutConstants.UserShortcutType.HARDWARE;
import static com.android.internal.accessibility.common.ShortcutConstants.UserShortcutType.QUICK_SETTINGS;
import static com.android.internal.accessibility.common.ShortcutConstants.UserShortcutType.SOFTWARE;
import static com.android.internal.accessibility.common.ShortcutConstants.UserShortcutType.TRIPLETAP;
import static com.android.internal.accessibility.common.ShortcutConstants.UserShortcutType.TWOFINGER_DOUBLETAP;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.spy;
import android.accessibilityservice.AccessibilityServiceInfo;
import android.content.ComponentName;
import android.content.Context;
@@ -61,7 +53,6 @@ public final class AccessibilityUtilTest {
private static final String SECURE_TEST_KEY = "secure_test_key";
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);
@Rule
@@ -71,7 +62,7 @@ public final class AccessibilityUtilTest {
@Before
public void setUp() {
mContext = spy(ApplicationProvider.getApplicationContext());
mContext = ApplicationProvider.getApplicationContext();
}
@Test
@@ -148,37 +139,6 @@ public final class AccessibilityUtilTest {
AccessibilityUtil.AccessibilityServiceFragmentType.TOGGLE);
}
@Test
public void convertKeyFromSettings_shortcutTypeSoftware() {
assertThat(AccessibilityUtil.convertKeyFromSettings(SOFTWARE))
.isEqualTo(Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS);
}
@Test
public void convertKeyFromSettings_shortcutTypeHardware() {
assertThat(AccessibilityUtil.convertKeyFromSettings(HARDWARE))
.isEqualTo(Settings.Secure.ACCESSIBILITY_SHORTCUT_TARGET_SERVICE);
}
@Test
public void convertKeyFromSettings_shortcutTypeTripleTap() {
assertThat(AccessibilityUtil.convertKeyFromSettings(TRIPLETAP))
.isEqualTo(Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED);
}
@Test
public void convertKeyFromSettings_shortcutTypeMultiFingersMultiTap() {
assertThat(AccessibilityUtil.convertKeyFromSettings(TWOFINGER_DOUBLETAP))
.isEqualTo(
Settings.Secure.ACCESSIBILITY_MAGNIFICATION_TWO_FINGER_TRIPLE_TAP_ENABLED);
}
@Test
public void convertKeyFromSettings_shortcutTypeQuickSettings() {
assertThat(AccessibilityUtil.convertKeyFromSettings(QUICK_SETTINGS))
.isEqualTo(Settings.Secure.ACCESSIBILITY_QS_TARGETS);
}
@Test
@EnableFlags(android.provider.Flags.FLAG_A11Y_STANDALONE_GESTURE_ENABLED)
public void getSoftwareShortcutSummary_returnsSoftwareSummary() {

View File

@@ -16,8 +16,6 @@
package com.android.settings.accessibility;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
@@ -34,11 +32,7 @@ import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.R;
import com.android.settings.accessibility.AccessibilityUtil.QuickSettingsTooltipType;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Answers;
import org.mockito.Mock;
@@ -83,72 +77,6 @@ public class LaunchAccessibilityActivityPreferenceFragmentTest {
doReturn(mScreen).when(mFragment).getPreferenceScreen();
}
@Test
public void getTileTooltipContent_noTileServiceAssigned_returnNull() {
final CharSequence tileTooltipContent =
mFragment.getTileTooltipContent(QuickSettingsTooltipType.GUIDE_TO_EDIT);
assertThat(tileTooltipContent).isNull();
}
@Test
public void getTileTooltipContent_hasOneTileService_guideToEdit_haveMatchString() {
setupTileService(PLACEHOLDER_PACKAGE_NAME, PLACEHOLDER_TILE_CLASS_NAME,
PLACEHOLDER_TILE_NAME);
final CharSequence tileTooltipContent =
mFragment.getTileTooltipContent(QuickSettingsTooltipType.GUIDE_TO_EDIT);
final CharSequence tileName =
mFragment.loadTileLabel(mContext, mFragment.getTileComponentName());
assertThat(tileTooltipContent.toString()).isEqualTo(
mContext.getString(R.string.accessibility_service_qs_tooltip_content, tileName));
}
@Test
public void getTileTooltipContent_hasOneTileService_guideToDirectUse_haveMatchString() {
setupTileService(PLACEHOLDER_PACKAGE_NAME, PLACEHOLDER_TILE_CLASS_NAME,
PLACEHOLDER_TILE_NAME);
final CharSequence tileTooltipContent =
mFragment.getTileTooltipContent(QuickSettingsTooltipType.GUIDE_TO_DIRECT_USE);
final CharSequence tileName =
mFragment.loadTileLabel(mContext, mFragment.getTileComponentName());
assertThat(tileTooltipContent.toString()).isEqualTo(
mContext.getString(
R.string.accessibility_service_auto_added_qs_tooltip_content, tileName));
}
@Test
public void getTileTooltipContent_hasTwoTileServices_guideToEdit_haveMatchString() {
setupTileService(PLACEHOLDER_PACKAGE_NAME, PLACEHOLDER_TILE_CLASS_NAME,
PLACEHOLDER_TILE_NAME);
setupTileService(PLACEHOLDER_PACKAGE_NAME, PLACEHOLDER_TILE_CLASS_NAME2,
PLACEHOLDER_TILE_NAME2);
final CharSequence tileTooltipContent =
mFragment.getTileTooltipContent(QuickSettingsTooltipType.GUIDE_TO_EDIT);
final CharSequence tileName =
mFragment.loadTileLabel(mContext, mFragment.getTileComponentName());
assertThat(tileTooltipContent.toString()).isEqualTo(
mContext.getString(R.string.accessibility_service_qs_tooltip_content, tileName));
}
@Test
public void getTileTooltipContent_hasTwoTileServices_guideToDirectUse_haveMatchString() {
setupTileService(PLACEHOLDER_PACKAGE_NAME, PLACEHOLDER_TILE_CLASS_NAME,
PLACEHOLDER_TILE_NAME);
setupTileService(PLACEHOLDER_PACKAGE_NAME, PLACEHOLDER_TILE_CLASS_NAME2,
PLACEHOLDER_TILE_NAME2);
final CharSequence tileTooltipContent =
mFragment.getTileTooltipContent(QuickSettingsTooltipType.GUIDE_TO_DIRECT_USE);
final CharSequence tileName =
mFragment.loadTileLabel(mContext, mFragment.getTileComponentName());
assertThat(tileTooltipContent.toString()).isEqualTo(
mContext.getString(
R.string.accessibility_service_auto_added_qs_tooltip_content, tileName));
}
private void setupTileService(String packageName, String name, String tileName) {
final Intent tileProbe = new Intent(TileService.ACTION_QS_TILE);
final ResolveInfo info = new ResolveInfo();

View File

@@ -43,9 +43,7 @@ import androidx.preference.PreferenceScreen;
import androidx.test.core.app.ApplicationProvider;
import com.android.internal.accessibility.common.ShortcutConstants;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.accessibility.AccessibilityUtil.QuickSettingsTooltipType;
import com.android.settings.accessibility.shortcuts.EditShortcutsPreferenceFragment;
import com.android.settings.widget.SettingsMainSwitchPreference;
@@ -111,72 +109,6 @@ public class ToggleAccessibilityServicePreferenceFragmentTest {
mShadowAccessibilityManager = Shadow.extract(AccessibilityManager.getInstance(mContext));
}
@Test
public void getTileTooltipContent_noTileServiceAssigned_returnNull() {
final CharSequence tileTooltipContent =
mFragment.getTileTooltipContent(QuickSettingsTooltipType.GUIDE_TO_EDIT);
assertThat(tileTooltipContent).isNull();
}
@Test
public void getTileTooltipContent_hasOneTileService_guideToEdit_haveMatchString() {
setupTileService(PLACEHOLDER_PACKAGE_NAME, PLACEHOLDER_TILE_CLASS_NAME,
PLACEHOLDER_TILE_NAME);
final CharSequence tileTooltipContent =
mFragment.getTileTooltipContent(QuickSettingsTooltipType.GUIDE_TO_EDIT);
final CharSequence tileName =
mFragment.loadTileLabel(mContext, mFragment.getTileComponentName());
assertThat(tileTooltipContent.toString()).isEqualTo(
mContext.getString(R.string.accessibility_service_qs_tooltip_content, tileName));
}
@Test
public void getTileTooltipContent_hasOneTileService_guideToDirectUse_haveMatchString() {
setupTileService(PLACEHOLDER_PACKAGE_NAME, PLACEHOLDER_TILE_CLASS_NAME,
PLACEHOLDER_TILE_NAME);
final CharSequence tileTooltipContent =
mFragment.getTileTooltipContent(QuickSettingsTooltipType.GUIDE_TO_DIRECT_USE);
final CharSequence tileName =
mFragment.loadTileLabel(mContext, mFragment.getTileComponentName());
assertThat(tileTooltipContent.toString()).isEqualTo(
mContext.getString(
R.string.accessibility_service_auto_added_qs_tooltip_content, tileName));
}
@Test
public void getTileTooltipContent_hasTwoTileServices_guideToEdit_haveMatchString() {
setupTileService(PLACEHOLDER_PACKAGE_NAME, PLACEHOLDER_TILE_CLASS_NAME,
PLACEHOLDER_TILE_NAME);
setupTileService(PLACEHOLDER_PACKAGE_NAME, PLACEHOLDER_TILE_CLASS_NAME2,
PLACEHOLDER_TILE_NAME2);
final CharSequence tileTooltipContent =
mFragment.getTileTooltipContent(QuickSettingsTooltipType.GUIDE_TO_EDIT);
final CharSequence tileName =
mFragment.loadTileLabel(mContext, mFragment.getTileComponentName());
assertThat(tileTooltipContent.toString()).isEqualTo(
mContext.getString(R.string.accessibility_service_qs_tooltip_content, tileName));
}
@Test
public void getTileTooltipContent_hasTwoTileServices_guideToDirectUse_haveMatchString() {
setupTileService(PLACEHOLDER_PACKAGE_NAME, PLACEHOLDER_TILE_CLASS_NAME,
PLACEHOLDER_TILE_NAME);
setupTileService(PLACEHOLDER_PACKAGE_NAME, PLACEHOLDER_TILE_CLASS_NAME2,
PLACEHOLDER_TILE_NAME2);
final CharSequence tileTooltipContent =
mFragment.getTileTooltipContent(QuickSettingsTooltipType.GUIDE_TO_DIRECT_USE);
final CharSequence tileName =
mFragment.loadTileLabel(mContext, mFragment.getTileComponentName());
assertThat(tileTooltipContent.toString()).isEqualTo(
mContext.getString(
R.string.accessibility_service_auto_added_qs_tooltip_content, tileName));
}
@Test
public void getAccessibilityServiceInfo() throws Throwable {
final AccessibilityServiceInfo info1 = getFakeAccessibilityServiceInfo(

View File

@@ -47,7 +47,6 @@ import androidx.preference.PreferenceScreen;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.R;
import com.android.settings.accessibility.AccessibilityUtil.QuickSettingsTooltipType;
import com.android.settings.testutils.XmlTestUtils;
import com.android.settings.testutils.shadow.ShadowFragment;
import com.android.settings.widget.SettingsMainSwitchPreference;
@@ -265,11 +264,6 @@ public class ToggleColorInversionPreferenceFragmentTest {
return PLACEHOLDER_COMPONENT_NAME;
}
@Override
protected CharSequence getTileTooltipContent(@QuickSettingsTooltipType int type) {
return PLACEHOLDER_TILE_TOOLTIP_CONTENT;
}
@Override
public View getView() {
return mock(View.class);

View File

@@ -53,7 +53,6 @@ import androidx.preference.PreferenceScreen;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.R;
import com.android.settings.accessibility.AccessibilityUtil.QuickSettingsTooltipType;
import com.android.settings.flags.Flags;
import com.android.settings.testutils.shadow.ShadowAccessibilityManager;
import com.android.settings.testutils.shadow.ShadowFragment;
@@ -378,11 +377,6 @@ public class ToggleFeaturePreferenceFragmentTest {
return PLACEHOLDER_TILE_COMPONENT_NAME;
}
@Override
protected CharSequence getTileTooltipContent(@QuickSettingsTooltipType int type) {
return PLACEHOLDER_TILE_TOOLTIP_CONTENT;
}
@Override
public int getPreferenceScreenResId() {
return R.xml.placeholder_prefs;

View File

@@ -35,7 +35,6 @@ import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
import android.app.settings.SettingsEnums;
@@ -47,7 +46,6 @@ import android.database.ContentObserver;
import android.icu.text.CaseMap;
import android.net.Uri;
import android.os.Bundle;
import android.os.UserHandle;
import android.platform.test.annotations.DisableFlags;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
@@ -66,7 +64,7 @@ import com.android.server.accessibility.Flags;
import com.android.settings.DialogCreatable;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.testutils.AccessibilityTestUtils;
import com.android.settings.testutils.shadow.ShadowAccessibilityManager;
import com.android.settings.testutils.shadow.ShadowDeviceConfig;
import com.android.settings.testutils.shadow.ShadowStorageManager;
import com.android.settings.testutils.shadow.ShadowUserManager;
@@ -83,6 +81,7 @@ import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.Shadows;
import org.robolectric.annotation.Config;
import org.robolectric.shadow.api.Shadow;
import org.robolectric.shadows.ShadowContentResolver;
import org.robolectric.shadows.ShadowPackageManager;
import org.robolectric.shadows.ShadowSettings;
@@ -92,7 +91,6 @@ import org.robolectric.util.ReflectionHelpers;
import java.util.Collection;
import java.util.List;
import java.util.Locale;
import java.util.Set;
/** Tests for {@link ToggleScreenMagnificationPreferenceFragment}. */
@RunWith(RobolectricTestRunner.class)
@@ -101,6 +99,7 @@ import java.util.Set;
ShadowStorageManager.class,
ShadowSettings.ShadowSecure.class,
ShadowDeviceConfig.class,
ShadowAccessibilityManager.class,
})
public class ToggleScreenMagnificationPreferenceFragmentTest {
@@ -137,15 +136,15 @@ public class ToggleScreenMagnificationPreferenceFragmentTest {
private FragmentController<ToggleScreenMagnificationPreferenceFragment> mFragController;
private Context mContext;
private AccessibilityManager mAccessibilityManager;
private Resources mSpyResources;
private ShadowPackageManager mShadowPackageManager;
private ShadowAccessibilityManager mShadowAccessibilityManager;
@Before
public void setUpTestFragment() {
mContext = spy(ApplicationProvider.getApplicationContext());
mAccessibilityManager = AccessibilityTestUtils.setupMockAccessibilityManager(mContext);
mShadowAccessibilityManager = Shadow.extract(
mContext.getSystemService(AccessibilityManager.class));
// Set up the fragment that support window magnification feature
mSpyResources = spy(mContext.getResources());
@@ -420,137 +419,6 @@ public class ToggleScreenMagnificationPreferenceFragmentTest {
assertThat(shadowContentResolver.getContentObservers(observedUri)).isEmpty();
}
@Test
public void hasValueInSettings_putValue_hasValue() {
setMagnificationTripleTapEnabled(/* enabled= */ true);
assertThat(ToggleScreenMagnificationPreferenceFragment.hasMagnificationValuesInSettings(
mContext, TRIPLETAP)).isTrue();
}
@Test
@EnableFlags(Flags.FLAG_ENABLE_MAGNIFICATION_MULTIPLE_FINGER_MULTIPLE_TAP_GESTURE)
public void hasMagnificationValuesInSettings_twoFingerTripleTapIsOn_isTrue() {
Settings.Secure.putInt(
mContext.getContentResolver(), TWO_FINGER_TRIPLE_TAP_SHORTCUT_KEY, ON);
assertThat(ToggleScreenMagnificationPreferenceFragment.hasMagnificationValuesInSettings(
mContext, TWOFINGER_DOUBLETAP)).isTrue();
}
@Test
@EnableFlags(Flags.FLAG_ENABLE_MAGNIFICATION_MULTIPLE_FINGER_MULTIPLE_TAP_GESTURE)
public void hasMagnificationValuesInSettings_twoFingerTripleTapIsOff_isFalse() {
Settings.Secure.putInt(
mContext.getContentResolver(), TWO_FINGER_TRIPLE_TAP_SHORTCUT_KEY, OFF);
assertThat(ToggleScreenMagnificationPreferenceFragment.hasMagnificationValuesInSettings(
mContext, TWOFINGER_DOUBLETAP)).isFalse();
}
@Test
public void optInAllValuesToSettings_optInValue_callA11yManager() {
int shortcutTypes =
SOFTWARE | TRIPLETAP | HARDWARE
| QUICK_SETTINGS;
Set<String> shortcutTargets = Set.of(MAGNIFICATION_CONTROLLER_NAME);
ToggleScreenMagnificationPreferenceFragment.optInAllMagnificationValuesToSettings(mContext,
shortcutTypes);
verify(mAccessibilityManager).enableShortcutsForTargets(
/* enable= */ true, SOFTWARE,
shortcutTargets, UserHandle.myUserId());
verify(mAccessibilityManager).enableShortcutsForTargets(
/* enable= */ true, HARDWARE,
shortcutTargets, UserHandle.myUserId());
verify(mAccessibilityManager).enableShortcutsForTargets(
/* enable= */ true, QUICK_SETTINGS,
shortcutTargets, UserHandle.myUserId());
verify(mAccessibilityManager).enableShortcutsForTargets(
/* enable= */ true, TRIPLETAP,
shortcutTargets, UserHandle.myUserId());
verifyNoMoreInteractions(mAccessibilityManager);
}
@Test
public void optInAllValuesToSettings_software_sizeValueIsNotNull_sizeValueIsNotChanged() {
for (int size : new int[]{FloatingMenuSizePreferenceController.Size.LARGE,
FloatingMenuSizePreferenceController.Size.SMALL}) {
Settings.Secure.putInt(mContext.getContentResolver(),
Settings.Secure.ACCESSIBILITY_FLOATING_MENU_SIZE, size);
ToggleScreenMagnificationPreferenceFragment.optInAllMagnificationValuesToSettings(
mContext,
SOFTWARE);
assertThat(Settings.Secure.getInt(mContext.getContentResolver(),
Settings.Secure.ACCESSIBILITY_FLOATING_MENU_SIZE,
FloatingMenuSizePreferenceController.Size.UNKNOWN)).isEqualTo(
size);
}
}
@Test
public void optInAllValuesToSettings_hardware_sizeValueIsNotChanged() {
for (int size : new int[]{FloatingMenuSizePreferenceController.Size.UNKNOWN,
FloatingMenuSizePreferenceController.Size.LARGE,
FloatingMenuSizePreferenceController.Size.SMALL}) {
Settings.Secure.putInt(mContext.getContentResolver(),
Settings.Secure.ACCESSIBILITY_FLOATING_MENU_SIZE, size);
ToggleScreenMagnificationPreferenceFragment.optInAllMagnificationValuesToSettings(
mContext,
HARDWARE);
assertThat(Settings.Secure.getInt(mContext.getContentResolver(),
Settings.Secure.ACCESSIBILITY_FLOATING_MENU_SIZE, size + 1)).isEqualTo(
size);
}
}
@Test
public void optInAllValuesToSettings_tripletap_sizeValueIsNotChanged() {
for (int size : new int[]{FloatingMenuSizePreferenceController.Size.UNKNOWN,
FloatingMenuSizePreferenceController.Size.LARGE,
FloatingMenuSizePreferenceController.Size.SMALL}) {
Settings.Secure.putInt(mContext.getContentResolver(),
Settings.Secure.ACCESSIBILITY_FLOATING_MENU_SIZE, size);
ToggleScreenMagnificationPreferenceFragment.optInAllMagnificationValuesToSettings(
mContext,
TRIPLETAP);
assertThat(Settings.Secure.getInt(mContext.getContentResolver(),
Settings.Secure.ACCESSIBILITY_FLOATING_MENU_SIZE, size + 1)).isEqualTo(
size);
}
}
@Test
public void optOutAllValuesToSettings_optOutValue_callA11yManager() {
Set<String> shortcutTargets = Set.of(MAGNIFICATION_CONTROLLER_NAME);
putStringIntoSettings(SOFTWARE_SHORTCUT_KEY, MAGNIFICATION_CONTROLLER_NAME);
putStringIntoSettings(HARDWARE_SHORTCUT_KEY, MAGNIFICATION_CONTROLLER_NAME);
setMagnificationTripleTapEnabled(/* enabled= */ true);
int shortcutTypes =
SOFTWARE | HARDWARE | TRIPLETAP;
ToggleScreenMagnificationPreferenceFragment.optOutAllMagnificationValuesFromSettings(
mContext, shortcutTypes);
verify(mAccessibilityManager).enableShortcutsForTargets(
/* enable= */ false, SOFTWARE,
shortcutTargets, UserHandle.myUserId());
verify(mAccessibilityManager).enableShortcutsForTargets(
/* enable= */ false, HARDWARE,
shortcutTargets, UserHandle.myUserId());
verify(mAccessibilityManager).enableShortcutsForTargets(
/* enable= */ false, TRIPLETAP,
shortcutTargets, UserHandle.myUserId());
verifyNoMoreInteractions(mAccessibilityManager);
}
@Test
public void updateShortcutPreferenceData_assignDefaultValueToVariable() {
mFragController.create(R.id.main_content, /* bundle= */ null).start().resume();
@@ -565,8 +433,8 @@ public class ToggleScreenMagnificationPreferenceFragmentTest {
@Test
public void updateShortcutPreferenceData_hasValueInSettings_assignToVariable() {
putStringIntoSettings(SOFTWARE_SHORTCUT_KEY, MAGNIFICATION_CONTROLLER_NAME);
setMagnificationTripleTapEnabled(/* enabled= */ true);
mShadowAccessibilityManager.setAccessibilityShortcutTargets(
TRIPLETAP | SOFTWARE, List.of(MAGNIFICATION_CONTROLLER_NAME));
mFragController.create(R.id.main_content, /* bundle= */ null).start().resume();
mFragController.get().updateShortcutPreferenceData();
@@ -593,8 +461,8 @@ public class ToggleScreenMagnificationPreferenceFragmentTest {
@Test
@EnableFlags(Flags.FLAG_ENABLE_MAGNIFICATION_MULTIPLE_FINGER_MULTIPLE_TAP_GESTURE)
public void updateShortcutPreferenceData_hasTwoFingerTripleTapInSettings_assignToVariable() {
Settings.Secure.putInt(
mContext.getContentResolver(), TWO_FINGER_TRIPLE_TAP_SHORTCUT_KEY, ON);
mShadowAccessibilityManager.setAccessibilityShortcutTargets(
TWOFINGER_DOUBLETAP, List.of(MAGNIFICATION_CONTROLLER_NAME));
mFragController.create(R.id.main_content, /* bundle= */ null).start().resume();
mFragController.get().updateShortcutPreferenceData();
@@ -802,7 +670,8 @@ public class ToggleScreenMagnificationPreferenceFragmentTest {
@Test
public void getSummary_magnificationEnabled_returnShortcutOnWithSummary() {
setMagnificationTripleTapEnabled(true);
mShadowAccessibilityManager.setAccessibilityShortcutTargets(
TRIPLETAP, List.of(MAGNIFICATION_CONTROLLER_NAME));
assertThat(
ToggleScreenMagnificationPreferenceFragment.getServiceSummary(mContext).toString())
@@ -816,7 +685,8 @@ public class ToggleScreenMagnificationPreferenceFragmentTest {
@Test
public void getSummary_magnificationDisabled_returnShortcutOffWithSummary() {
setMagnificationTripleTapEnabled(false);
mShadowAccessibilityManager.setAccessibilityShortcutTargets(
TRIPLETAP, List.of());
assertThat(
ToggleScreenMagnificationPreferenceFragment.getServiceSummary(mContext).toString())
@@ -832,8 +702,8 @@ public class ToggleScreenMagnificationPreferenceFragmentTest {
@Test
@EnableFlags(Flags.FLAG_ENABLE_MAGNIFICATION_MULTIPLE_FINGER_MULTIPLE_TAP_GESTURE)
public void getSummary_magnificationGestureEnabled_returnShortcutOnWithSummary() {
Settings.Secure.putInt(
mContext.getContentResolver(), TWO_FINGER_TRIPLE_TAP_SHORTCUT_KEY, ON);
mShadowAccessibilityManager.setAccessibilityShortcutTargets(
TWOFINGER_DOUBLETAP, List.of(MAGNIFICATION_CONTROLLER_NAME));
assertThat(
ToggleScreenMagnificationPreferenceFragment.getServiceSummary(mContext).toString())
@@ -848,8 +718,8 @@ public class ToggleScreenMagnificationPreferenceFragmentTest {
@Test
@EnableFlags(Flags.FLAG_ENABLE_MAGNIFICATION_MULTIPLE_FINGER_MULTIPLE_TAP_GESTURE)
public void getSummary_magnificationGestureDisabled_returnShortcutOffWithSummary() {
Settings.Secure.putInt(
mContext.getContentResolver(), TWO_FINGER_TRIPLE_TAP_SHORTCUT_KEY, OFF);
mShadowAccessibilityManager.setAccessibilityShortcutTargets(
TRIPLETAP | TWOFINGER_DOUBLETAP, List.of());
assertThat(
ToggleScreenMagnificationPreferenceFragment.getServiceSummary(mContext).toString())
@@ -977,7 +847,8 @@ public class ToggleScreenMagnificationPreferenceFragmentTest {
Flags.FLAG_ENABLE_MAGNIFICATION_ONE_FINGER_PANNING_GESTURE,
Flags.FLAG_ENABLE_LOW_VISION_HATS})
public void getNonIndexableKeys_hasShortcutAndAllFeaturesEnabled_allItemsSearchable() {
setMagnificationTripleTapEnabled(true);
mShadowAccessibilityManager.setAccessibilityShortcutTargets(
TRIPLETAP, List.of(MAGNIFICATION_CONTROLLER_NAME));
setAlwaysOnSupported(true);
setJoystickSupported(true);
@@ -991,7 +862,8 @@ public class ToggleScreenMagnificationPreferenceFragmentTest {
@Test
@EnableFlags(com.android.settings.accessibility.Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH)
public void getNonIndexableKeys_noShortcut_alwaysOnSupported_notSearchable() {
setMagnificationTripleTapEnabled(false);
mShadowAccessibilityManager.setAccessibilityShortcutTargets(
TRIPLETAP, List.of());
setAlwaysOnSupported(true);
final List<String> niks = ToggleScreenMagnificationPreferenceFragment
@@ -1004,7 +876,8 @@ public class ToggleScreenMagnificationPreferenceFragmentTest {
@Test
@EnableFlags(com.android.settings.accessibility.Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH)
public void getNonIndexableKeys_hasShortcut_alwaysOnNotSupported_notSearchable() {
setMagnificationTripleTapEnabled(true);
mShadowAccessibilityManager.setAccessibilityShortcutTargets(
TRIPLETAP, List.of(MAGNIFICATION_CONTROLLER_NAME));
setAlwaysOnSupported(false);
final List<String> niks = ToggleScreenMagnificationPreferenceFragment
@@ -1056,11 +929,6 @@ public class ToggleScreenMagnificationPreferenceFragmentTest {
PreferredShortcuts.saveUserShortcutType(context, shortcut);
}
private void setMagnificationTripleTapEnabled(boolean enabled) {
Settings.Secure.putInt(mContext.getContentResolver(), TRIPLETAP_SHORTCUT_KEY,
enabled ? ON : OFF);
}
private void setKeyMagnificationMode(@MagnificationMode int mode) {
MagnificationCapabilities.setCapabilities(mContext, mode);
}

View File

@@ -26,6 +26,7 @@ import android.content.Context;
import android.util.ArrayMap;
import android.view.accessibility.AccessibilityManager;
import com.android.internal.accessibility.common.ShortcutConstants;
import com.android.internal.accessibility.common.ShortcutConstants.UserShortcutType;
import org.robolectric.annotation.Implementation;
@@ -96,8 +97,11 @@ public class ShadowAccessibilityManager extends org.robolectric.shadows.ShadowAc
/**
* Used by tests to easily write directly to a shortcut targets value
*/
public void setAccessibilityShortcutTargets(
@UserShortcutType int shortcutType, List<String> targets) {
mShortcutTargets.put(shortcutType, targets);
public void setAccessibilityShortcutTargets(int shortcutTypes, List<String> targets) {
for (int type : ShortcutConstants.USER_SHORTCUT_TYPES) {
if ((type & shortcutTypes) == type) {
mShortcutTargets.put(type, List.copyOf(targets));
}
}
}
}