Make QS shortcut as the default shortcut type only if it's an a11y tool
Bug: 333602196 Test: atest ToggleAccessibilityServicePreferenceFragmentTest Flag: android.view.accessibility.a11y_qs_shortcut aconfig Nextfood Change-Id: I108e8ab127bcae545b92166a0147f5fee89f9e94
This commit is contained in:
@@ -467,7 +467,10 @@ public class ToggleAccessibilityServicePreferenceFragment extends
|
||||
@Override
|
||||
protected int getDefaultShortcutTypes() {
|
||||
if (android.view.accessibility.Flags.a11yQsShortcut()) {
|
||||
return getTileComponentName() == null ? super.getDefaultShortcutTypes()
|
||||
AccessibilityServiceInfo info = getAccessibilityServiceInfo();
|
||||
boolean isAccessibilityTool = info != null && info.isAccessibilityTool();
|
||||
return !isAccessibilityTool || getTileComponentName() == null
|
||||
? super.getDefaultShortcutTypes()
|
||||
: ShortcutConstants.UserShortcutType.QUICK_SETTINGS;
|
||||
}
|
||||
|
||||
|
@@ -329,24 +329,18 @@ public class ToggleAccessibilityServicePreferenceFragmentTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getDefaultShortcutTypes_noAssociatedTile_softwareTypeIsDefault() {
|
||||
@DisableFlags(Flags.FLAG_A11Y_QS_SHORTCUT)
|
||||
public void getDefaultShortcutTypes_noAssociatedTile_softwareTypeIsDefault() throws Throwable {
|
||||
PreferredShortcuts.clearPreferredShortcuts(mContext);
|
||||
when(mFragment.getTileComponentName()).thenReturn(null);
|
||||
setupAccessibilityServiceInfoForFragment(
|
||||
/* isAccessibilityTool= */ true,
|
||||
/* tileService= */ null
|
||||
/* warningRequired= */);
|
||||
|
||||
assertThat(mFragment.getDefaultShortcutTypes())
|
||||
.isEqualTo(ShortcutConstants.UserShortcutType.SOFTWARE);
|
||||
}
|
||||
|
||||
@Test
|
||||
@EnableFlags(Flags.FLAG_A11Y_QS_SHORTCUT)
|
||||
public void getDefaultShortcutTypes_hasAssociatedTile_qsTypeIsDefault() {
|
||||
PreferredShortcuts.clearPreferredShortcuts(mContext);
|
||||
when(mFragment.getTileComponentName()).thenReturn(PLACEHOLDER_TILE_COMPONENT_NAME);
|
||||
|
||||
assertThat(mFragment.getDefaultShortcutTypes())
|
||||
.isEqualTo(ShortcutConstants.UserShortcutType.QUICK_SETTINGS);
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisableFlags(Flags.FLAG_A11Y_QS_SHORTCUT)
|
||||
public void getDefaultShortcutTypes_hasAssociatedTile_softwareTypeIsDefault() {
|
||||
@@ -357,13 +351,71 @@ public class ToggleAccessibilityServicePreferenceFragmentTest {
|
||||
.isEqualTo(ShortcutConstants.UserShortcutType.SOFTWARE);
|
||||
}
|
||||
|
||||
@Test
|
||||
@EnableFlags(Flags.FLAG_A11Y_QS_SHORTCUT)
|
||||
public void getDefaultShortcutTypes_isAccessibilityTool_hasAssociatedTile_qsTypeIsDefault()
|
||||
throws Throwable {
|
||||
PreferredShortcuts.clearPreferredShortcuts(mContext);
|
||||
setupAccessibilityServiceInfoForFragment(
|
||||
/* isAccessibilityTool= */ true,
|
||||
/* tileService= */ PLACEHOLDER_TILE_COMPONENT_NAME
|
||||
/* warningRequired= */);
|
||||
|
||||
assertThat(mFragment.getDefaultShortcutTypes())
|
||||
.isEqualTo(ShortcutConstants.UserShortcutType.QUICK_SETTINGS);
|
||||
}
|
||||
|
||||
@Test
|
||||
@EnableFlags(Flags.FLAG_A11Y_QS_SHORTCUT)
|
||||
public void getDefaultShortcutTypes_isNotAccessibilityTool_hasAssociatedTile_softwareTypeIsDefault()
|
||||
throws Throwable {
|
||||
PreferredShortcuts.clearPreferredShortcuts(mContext);
|
||||
setupAccessibilityServiceInfoForFragment(
|
||||
/* isAccessibilityTool= */ false,
|
||||
/* tileService= */ PLACEHOLDER_TILE_COMPONENT_NAME
|
||||
/* warningRequired= */);
|
||||
|
||||
assertThat(mFragment.getDefaultShortcutTypes())
|
||||
.isEqualTo(ShortcutConstants.UserShortcutType.SOFTWARE);
|
||||
}
|
||||
|
||||
@Test
|
||||
@EnableFlags(Flags.FLAG_A11Y_QS_SHORTCUT)
|
||||
public void getDefaultShortcutTypes_isAccessibilityTool_noAssociatedTile_softwareTypeIsDefault()
|
||||
throws Throwable {
|
||||
PreferredShortcuts.clearPreferredShortcuts(mContext);
|
||||
setupAccessibilityServiceInfoForFragment(
|
||||
/* isAccessibilityTool= */ true,
|
||||
/* tileService= */ null
|
||||
/* warningRequired= */);
|
||||
|
||||
assertThat(mFragment.getDefaultShortcutTypes())
|
||||
.isEqualTo(ShortcutConstants.UserShortcutType.SOFTWARE);
|
||||
}
|
||||
|
||||
@Test
|
||||
@EnableFlags(Flags.FLAG_A11Y_QS_SHORTCUT)
|
||||
public void getDefaultShortcutTypes_isNotAccessibilityTool_noAssociatedTile_softwareTypeIsDefault()
|
||||
throws Throwable {
|
||||
PreferredShortcuts.clearPreferredShortcuts(mContext);
|
||||
setupAccessibilityServiceInfoForFragment(
|
||||
/* isAccessibilityTool= */ false,
|
||||
/* tileService= */ null
|
||||
/* warningRequired= */);
|
||||
|
||||
assertThat(mFragment.getDefaultShortcutTypes())
|
||||
.isEqualTo(ShortcutConstants.UserShortcutType.SOFTWARE);
|
||||
}
|
||||
|
||||
@Test
|
||||
@EnableFlags(Flags.FLAG_A11Y_QS_SHORTCUT)
|
||||
public void toggleShortcutPreference_noUserPreferredShortcut_hasQsTile_enableQsShortcut()
|
||||
throws Throwable {
|
||||
PreferredShortcuts.clearPreferredShortcuts(mContext);
|
||||
setupServiceWarningRequired(false);
|
||||
when(mFragment.getTileComponentName()).thenReturn(PLACEHOLDER_TILE_COMPONENT_NAME);
|
||||
setupAccessibilityServiceInfoForFragment(
|
||||
/* isAccessibilityTool= */ true,
|
||||
/* tileService= */ PLACEHOLDER_TILE_COMPONENT_NAME
|
||||
/* warningRequired= */);
|
||||
mFragment.mShortcutPreference = new ShortcutPreference(mContext, /* attrs= */ null);
|
||||
|
||||
mFragment.mShortcutPreference.setChecked(true);
|
||||
@@ -380,8 +432,10 @@ public class ToggleAccessibilityServicePreferenceFragmentTest {
|
||||
public void toggleShortcutPreference_noUserPreferredShortcut_noQsTile_enableSoftwareShortcut()
|
||||
throws Throwable {
|
||||
PreferredShortcuts.clearPreferredShortcuts(mContext);
|
||||
setupServiceWarningRequired(false);
|
||||
when(mFragment.getTileComponentName()).thenReturn(null);
|
||||
setupAccessibilityServiceInfoForFragment(
|
||||
/* isAccessibilityTool= */ true,
|
||||
/* tileService= */ null
|
||||
/* warningRequired= */);
|
||||
mFragment.mShortcutPreference = new ShortcutPreference(mContext, /* attrs= */ null);
|
||||
|
||||
mFragment.mShortcutPreference.setChecked(true);
|
||||
@@ -398,8 +452,10 @@ public class ToggleAccessibilityServicePreferenceFragmentTest {
|
||||
public void toggleShortcutPreference_noUserPreferredShortcut_hasQsTile_flagOff_enableSoftwareShortcut()
|
||||
throws Throwable {
|
||||
PreferredShortcuts.clearPreferredShortcuts(mContext);
|
||||
setupServiceWarningRequired(false);
|
||||
when(mFragment.getTileComponentName()).thenReturn(PLACEHOLDER_TILE_COMPONENT_NAME);
|
||||
setupAccessibilityServiceInfoForFragment(
|
||||
/* isAccessibilityTool= */ true,
|
||||
/* tileService= */ PLACEHOLDER_TILE_COMPONENT_NAME
|
||||
/* warningRequired= */);
|
||||
mFragment.mShortcutPreference = new ShortcutPreference(mContext, /* attrs= */ null);
|
||||
|
||||
mFragment.mShortcutPreference.setChecked(true);
|
||||
@@ -416,8 +472,10 @@ public class ToggleAccessibilityServicePreferenceFragmentTest {
|
||||
public void toggleShortcutPreference_noUserPreferredShortcut_noQsTile_flagOff_enableSoftwareShortcut()
|
||||
throws Throwable {
|
||||
PreferredShortcuts.clearPreferredShortcuts(mContext);
|
||||
setupServiceWarningRequired(false);
|
||||
when(mFragment.getTileComponentName()).thenReturn(null);
|
||||
setupAccessibilityServiceInfoForFragment(
|
||||
/* isAccessibilityTool= */ true,
|
||||
/* tileService= */ null
|
||||
/* warningRequired= */);
|
||||
mFragment.mShortcutPreference = new ShortcutPreference(mContext, /* attrs= */ null);
|
||||
|
||||
mFragment.mShortcutPreference.setChecked(true);
|
||||
@@ -433,12 +491,14 @@ public class ToggleAccessibilityServicePreferenceFragmentTest {
|
||||
@EnableFlags(Flags.FLAG_A11Y_QS_SHORTCUT)
|
||||
public void toggleShortcutPreference_userPreferVolumeKeysShortcut_noQsTile_enableVolumeKeysShortcut()
|
||||
throws Throwable {
|
||||
setupServiceWarningRequired(false);
|
||||
setupAccessibilityServiceInfoForFragment(
|
||||
/* isAccessibilityTool= */ true,
|
||||
/* tileService= */ null
|
||||
/* warningRequired= */);
|
||||
String componentName = mFragment.mComponentName.flattenToString();
|
||||
PreferredShortcuts.saveUserShortcutType(
|
||||
mContext,
|
||||
new PreferredShortcut(componentName, ShortcutConstants.UserShortcutType.HARDWARE));
|
||||
when(mFragment.getTileComponentName()).thenReturn(null);
|
||||
mFragment.mShortcutPreference = new ShortcutPreference(mContext, /* attrs= */ null);
|
||||
|
||||
mFragment.mShortcutPreference.setChecked(true);
|
||||
@@ -456,12 +516,14 @@ public class ToggleAccessibilityServicePreferenceFragmentTest {
|
||||
@EnableFlags(Flags.FLAG_A11Y_QS_SHORTCUT)
|
||||
public void toggleShortcutPreference_userPreferVolumeKeysShortcut_hasQsTile_enableVolumeKeysShortcut()
|
||||
throws Throwable {
|
||||
setupServiceWarningRequired(false);
|
||||
setupAccessibilityServiceInfoForFragment(
|
||||
/* isAccessibilityTool= */ true,
|
||||
/* tileService= */ PLACEHOLDER_TILE_COMPONENT_NAME
|
||||
/* warningRequired= */);
|
||||
String componentName = mFragment.mComponentName.flattenToString();
|
||||
PreferredShortcuts.saveUserShortcutType(
|
||||
mContext,
|
||||
new PreferredShortcut(componentName, ShortcutConstants.UserShortcutType.HARDWARE));
|
||||
when(mFragment.getTileComponentName()).thenReturn(PLACEHOLDER_TILE_COMPONENT_NAME);
|
||||
mFragment.mShortcutPreference = new ShortcutPreference(mContext, /* attrs= */ null);
|
||||
|
||||
mFragment.mShortcutPreference.setChecked(true);
|
||||
@@ -499,6 +561,16 @@ public class ToggleAccessibilityServicePreferenceFragmentTest {
|
||||
return info;
|
||||
}
|
||||
|
||||
private void setupAccessibilityServiceInfoForFragment(
|
||||
boolean isAccessibilityTool, ComponentName tileService) throws Throwable {
|
||||
AccessibilityServiceInfo info = setupServiceWarningRequired(false);
|
||||
info.setAccessibilityTool(isAccessibilityTool);
|
||||
mShadowAccessibilityManager.setInstalledAccessibilityServiceList(List.of(info));
|
||||
mFragment.mComponentName = info.getComponentName();
|
||||
when(mFragment.getTileComponentName()).thenReturn(tileService);
|
||||
when(mFragment.getAccessibilityServiceInfo()).thenReturn(info);
|
||||
}
|
||||
|
||||
private static class FakeServiceInfo extends ServiceInfo {
|
||||
private String mTileName;
|
||||
|
||||
|
Reference in New Issue
Block a user