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
|
@Override
|
||||||
protected int getDefaultShortcutTypes() {
|
protected int getDefaultShortcutTypes() {
|
||||||
if (android.view.accessibility.Flags.a11yQsShortcut()) {
|
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;
|
: ShortcutConstants.UserShortcutType.QUICK_SETTINGS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -329,24 +329,18 @@ public class ToggleAccessibilityServicePreferenceFragmentTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getDefaultShortcutTypes_noAssociatedTile_softwareTypeIsDefault() {
|
@DisableFlags(Flags.FLAG_A11Y_QS_SHORTCUT)
|
||||||
|
public void getDefaultShortcutTypes_noAssociatedTile_softwareTypeIsDefault() throws Throwable {
|
||||||
PreferredShortcuts.clearPreferredShortcuts(mContext);
|
PreferredShortcuts.clearPreferredShortcuts(mContext);
|
||||||
when(mFragment.getTileComponentName()).thenReturn(null);
|
setupAccessibilityServiceInfoForFragment(
|
||||||
|
/* isAccessibilityTool= */ true,
|
||||||
|
/* tileService= */ null
|
||||||
|
/* warningRequired= */);
|
||||||
|
|
||||||
assertThat(mFragment.getDefaultShortcutTypes())
|
assertThat(mFragment.getDefaultShortcutTypes())
|
||||||
.isEqualTo(ShortcutConstants.UserShortcutType.SOFTWARE);
|
.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
|
@Test
|
||||||
@DisableFlags(Flags.FLAG_A11Y_QS_SHORTCUT)
|
@DisableFlags(Flags.FLAG_A11Y_QS_SHORTCUT)
|
||||||
public void getDefaultShortcutTypes_hasAssociatedTile_softwareTypeIsDefault() {
|
public void getDefaultShortcutTypes_hasAssociatedTile_softwareTypeIsDefault() {
|
||||||
@@ -357,13 +351,71 @@ public class ToggleAccessibilityServicePreferenceFragmentTest {
|
|||||||
.isEqualTo(ShortcutConstants.UserShortcutType.SOFTWARE);
|
.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
|
@Test
|
||||||
@EnableFlags(Flags.FLAG_A11Y_QS_SHORTCUT)
|
@EnableFlags(Flags.FLAG_A11Y_QS_SHORTCUT)
|
||||||
public void toggleShortcutPreference_noUserPreferredShortcut_hasQsTile_enableQsShortcut()
|
public void toggleShortcutPreference_noUserPreferredShortcut_hasQsTile_enableQsShortcut()
|
||||||
throws Throwable {
|
throws Throwable {
|
||||||
PreferredShortcuts.clearPreferredShortcuts(mContext);
|
PreferredShortcuts.clearPreferredShortcuts(mContext);
|
||||||
setupServiceWarningRequired(false);
|
setupAccessibilityServiceInfoForFragment(
|
||||||
when(mFragment.getTileComponentName()).thenReturn(PLACEHOLDER_TILE_COMPONENT_NAME);
|
/* isAccessibilityTool= */ true,
|
||||||
|
/* tileService= */ PLACEHOLDER_TILE_COMPONENT_NAME
|
||||||
|
/* warningRequired= */);
|
||||||
mFragment.mShortcutPreference = new ShortcutPreference(mContext, /* attrs= */ null);
|
mFragment.mShortcutPreference = new ShortcutPreference(mContext, /* attrs= */ null);
|
||||||
|
|
||||||
mFragment.mShortcutPreference.setChecked(true);
|
mFragment.mShortcutPreference.setChecked(true);
|
||||||
@@ -380,8 +432,10 @@ public class ToggleAccessibilityServicePreferenceFragmentTest {
|
|||||||
public void toggleShortcutPreference_noUserPreferredShortcut_noQsTile_enableSoftwareShortcut()
|
public void toggleShortcutPreference_noUserPreferredShortcut_noQsTile_enableSoftwareShortcut()
|
||||||
throws Throwable {
|
throws Throwable {
|
||||||
PreferredShortcuts.clearPreferredShortcuts(mContext);
|
PreferredShortcuts.clearPreferredShortcuts(mContext);
|
||||||
setupServiceWarningRequired(false);
|
setupAccessibilityServiceInfoForFragment(
|
||||||
when(mFragment.getTileComponentName()).thenReturn(null);
|
/* isAccessibilityTool= */ true,
|
||||||
|
/* tileService= */ null
|
||||||
|
/* warningRequired= */);
|
||||||
mFragment.mShortcutPreference = new ShortcutPreference(mContext, /* attrs= */ null);
|
mFragment.mShortcutPreference = new ShortcutPreference(mContext, /* attrs= */ null);
|
||||||
|
|
||||||
mFragment.mShortcutPreference.setChecked(true);
|
mFragment.mShortcutPreference.setChecked(true);
|
||||||
@@ -398,8 +452,10 @@ public class ToggleAccessibilityServicePreferenceFragmentTest {
|
|||||||
public void toggleShortcutPreference_noUserPreferredShortcut_hasQsTile_flagOff_enableSoftwareShortcut()
|
public void toggleShortcutPreference_noUserPreferredShortcut_hasQsTile_flagOff_enableSoftwareShortcut()
|
||||||
throws Throwable {
|
throws Throwable {
|
||||||
PreferredShortcuts.clearPreferredShortcuts(mContext);
|
PreferredShortcuts.clearPreferredShortcuts(mContext);
|
||||||
setupServiceWarningRequired(false);
|
setupAccessibilityServiceInfoForFragment(
|
||||||
when(mFragment.getTileComponentName()).thenReturn(PLACEHOLDER_TILE_COMPONENT_NAME);
|
/* isAccessibilityTool= */ true,
|
||||||
|
/* tileService= */ PLACEHOLDER_TILE_COMPONENT_NAME
|
||||||
|
/* warningRequired= */);
|
||||||
mFragment.mShortcutPreference = new ShortcutPreference(mContext, /* attrs= */ null);
|
mFragment.mShortcutPreference = new ShortcutPreference(mContext, /* attrs= */ null);
|
||||||
|
|
||||||
mFragment.mShortcutPreference.setChecked(true);
|
mFragment.mShortcutPreference.setChecked(true);
|
||||||
@@ -416,8 +472,10 @@ public class ToggleAccessibilityServicePreferenceFragmentTest {
|
|||||||
public void toggleShortcutPreference_noUserPreferredShortcut_noQsTile_flagOff_enableSoftwareShortcut()
|
public void toggleShortcutPreference_noUserPreferredShortcut_noQsTile_flagOff_enableSoftwareShortcut()
|
||||||
throws Throwable {
|
throws Throwable {
|
||||||
PreferredShortcuts.clearPreferredShortcuts(mContext);
|
PreferredShortcuts.clearPreferredShortcuts(mContext);
|
||||||
setupServiceWarningRequired(false);
|
setupAccessibilityServiceInfoForFragment(
|
||||||
when(mFragment.getTileComponentName()).thenReturn(null);
|
/* isAccessibilityTool= */ true,
|
||||||
|
/* tileService= */ null
|
||||||
|
/* warningRequired= */);
|
||||||
mFragment.mShortcutPreference = new ShortcutPreference(mContext, /* attrs= */ null);
|
mFragment.mShortcutPreference = new ShortcutPreference(mContext, /* attrs= */ null);
|
||||||
|
|
||||||
mFragment.mShortcutPreference.setChecked(true);
|
mFragment.mShortcutPreference.setChecked(true);
|
||||||
@@ -433,12 +491,14 @@ public class ToggleAccessibilityServicePreferenceFragmentTest {
|
|||||||
@EnableFlags(Flags.FLAG_A11Y_QS_SHORTCUT)
|
@EnableFlags(Flags.FLAG_A11Y_QS_SHORTCUT)
|
||||||
public void toggleShortcutPreference_userPreferVolumeKeysShortcut_noQsTile_enableVolumeKeysShortcut()
|
public void toggleShortcutPreference_userPreferVolumeKeysShortcut_noQsTile_enableVolumeKeysShortcut()
|
||||||
throws Throwable {
|
throws Throwable {
|
||||||
setupServiceWarningRequired(false);
|
setupAccessibilityServiceInfoForFragment(
|
||||||
|
/* isAccessibilityTool= */ true,
|
||||||
|
/* tileService= */ null
|
||||||
|
/* warningRequired= */);
|
||||||
String componentName = mFragment.mComponentName.flattenToString();
|
String componentName = mFragment.mComponentName.flattenToString();
|
||||||
PreferredShortcuts.saveUserShortcutType(
|
PreferredShortcuts.saveUserShortcutType(
|
||||||
mContext,
|
mContext,
|
||||||
new PreferredShortcut(componentName, ShortcutConstants.UserShortcutType.HARDWARE));
|
new PreferredShortcut(componentName, ShortcutConstants.UserShortcutType.HARDWARE));
|
||||||
when(mFragment.getTileComponentName()).thenReturn(null);
|
|
||||||
mFragment.mShortcutPreference = new ShortcutPreference(mContext, /* attrs= */ null);
|
mFragment.mShortcutPreference = new ShortcutPreference(mContext, /* attrs= */ null);
|
||||||
|
|
||||||
mFragment.mShortcutPreference.setChecked(true);
|
mFragment.mShortcutPreference.setChecked(true);
|
||||||
@@ -456,12 +516,14 @@ public class ToggleAccessibilityServicePreferenceFragmentTest {
|
|||||||
@EnableFlags(Flags.FLAG_A11Y_QS_SHORTCUT)
|
@EnableFlags(Flags.FLAG_A11Y_QS_SHORTCUT)
|
||||||
public void toggleShortcutPreference_userPreferVolumeKeysShortcut_hasQsTile_enableVolumeKeysShortcut()
|
public void toggleShortcutPreference_userPreferVolumeKeysShortcut_hasQsTile_enableVolumeKeysShortcut()
|
||||||
throws Throwable {
|
throws Throwable {
|
||||||
setupServiceWarningRequired(false);
|
setupAccessibilityServiceInfoForFragment(
|
||||||
|
/* isAccessibilityTool= */ true,
|
||||||
|
/* tileService= */ PLACEHOLDER_TILE_COMPONENT_NAME
|
||||||
|
/* warningRequired= */);
|
||||||
String componentName = mFragment.mComponentName.flattenToString();
|
String componentName = mFragment.mComponentName.flattenToString();
|
||||||
PreferredShortcuts.saveUserShortcutType(
|
PreferredShortcuts.saveUserShortcutType(
|
||||||
mContext,
|
mContext,
|
||||||
new PreferredShortcut(componentName, ShortcutConstants.UserShortcutType.HARDWARE));
|
new PreferredShortcut(componentName, ShortcutConstants.UserShortcutType.HARDWARE));
|
||||||
when(mFragment.getTileComponentName()).thenReturn(PLACEHOLDER_TILE_COMPONENT_NAME);
|
|
||||||
mFragment.mShortcutPreference = new ShortcutPreference(mContext, /* attrs= */ null);
|
mFragment.mShortcutPreference = new ShortcutPreference(mContext, /* attrs= */ null);
|
||||||
|
|
||||||
mFragment.mShortcutPreference.setChecked(true);
|
mFragment.mShortcutPreference.setChecked(true);
|
||||||
@@ -499,6 +561,16 @@ public class ToggleAccessibilityServicePreferenceFragmentTest {
|
|||||||
return info;
|
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 static class FakeServiceInfo extends ServiceInfo {
|
||||||
private String mTileName;
|
private String mTileName;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user