Reflect QS shortcut changes in a11y pages.

Bug: 314843909

Test: manual (modify qs tiles in QS panel while the a11y page is open,
verify the a11y page reflect the qs changes)
Test: atest com.android.settings.accessibility
Test: atest com.android.settings.accessibility.shortcuts

Flag: ACONFIG android.view.accessibility.a11y_qs_shortcut

Change-Id: Ie5b46459faab902912a214ca131eb5d0b105a7ef
This commit is contained in:
Chun-Ku Lin
2024-03-09 03:26:13 +00:00
parent e33f92fa98
commit deba8599d8
9 changed files with 217 additions and 38 deletions

View File

@@ -16,13 +16,20 @@
package com.android.settings.gestures;
import static com.android.settings.gestures.OneHandedSettingsUtils.ONE_HANDED_MODE_TARGET_NAME;
import static com.google.common.truth.Truth.assertThat;
import android.content.Context;
import android.os.UserHandle;
import android.platform.test.annotations.DisableFlags;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
import android.provider.Settings;
import android.view.accessibility.Flags;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
@@ -30,7 +37,8 @@ import org.robolectric.RuntimeEnvironment;
@RunWith(RobolectricTestRunner.class)
public class OneHandedSettingsUtilsTest {
@Rule
public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
private static final int OFF = 0;
private static final int ON = 1;
@@ -120,4 +128,66 @@ public class OneHandedSettingsUtilsTest {
OneHandedSettingsUtils.OneHandedTimeout.LONG.getValue(), mCurrentUserId))
.isEqualTo(12);
}
@Test
public void getShortcutEnabled_a11yButtonVolumeKeysShortcutEnabled_returnTrue() {
setupShortcuts(
/* enableFab= */ true, /* enableVolumeKeys= */ true, /* enableQs=*/ false);
assertThat(OneHandedSettingsUtils.getShortcutEnabled(mContext)).isTrue();
}
@Test
public void getShortcutEnabled_a11yButtonShortcutEnabled_returnTrue() {
setupShortcuts(
/* enableFab= */ true, /* enableVolumeKeys= */ false, /* enableQs=*/ false);
assertThat(OneHandedSettingsUtils.getShortcutEnabled(mContext)).isTrue();
}
@Test
public void getShortcutEnabled_volumeKeysShortcutEnabled_returnTrue() {
setupShortcuts(
/* enableFab= */ false, /* enableVolumeKeys= */ true, /* enableQs=*/ false);
assertThat(OneHandedSettingsUtils.getShortcutEnabled(mContext)).isTrue();
}
@Test
public void getShortcutEnabled_noShortcutsEnabled_returnFalse() {
setupShortcuts(
/* enableFab= */ false, /* enableVolumeKeys= */ false, /* enableQs=*/ false);
assertThat(OneHandedSettingsUtils.getShortcutEnabled(mContext)).isFalse();
}
@Test
@EnableFlags(Flags.FLAG_A11Y_QS_SHORTCUT)
public void getShortcutEnabled_qsShortcutEnabled_returnTrue() {
setupShortcuts(
/* enableFab= */ false, /* enableVolumeKeys= */ false, /* enableQs=*/ true);
assertThat(OneHandedSettingsUtils.getShortcutEnabled(mContext)).isTrue();
}
@Test
@DisableFlags(Flags.FLAG_A11Y_QS_SHORTCUT)
public void getShortcutEnabled_flagDisabled_qsShortcutEnabled_returnFalse() {
setupShortcuts(
/* enableFab= */ false, /* enableVolumeKeys= */ false, /* enableQs=*/ true);
assertThat(OneHandedSettingsUtils.getShortcutEnabled(mContext)).isFalse();
}
private void setupShortcuts(boolean enableFab, boolean enableVolumeKeys, boolean enableQs) {
setupShortcut(Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS, enableFab);
setupShortcut(Settings.Secure.ACCESSIBILITY_SHORTCUT_TARGET_SERVICE, enableVolumeKeys);
setupShortcut(Settings.Secure.ACCESSIBILITY_QS_TARGETS, enableQs);
}
private void setupShortcut(String shortcutSettingKey, boolean enabled) {
final String targetName = enabled ? ONE_HANDED_MODE_TARGET_NAME : "";
Settings.Secure.putStringForUser(
mContext.getContentResolver(), shortcutSettingKey, targetName, mCurrentUserId);
}
}