Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0343daa8 authored by Riley Jones's avatar Riley Jones Committed by Android (Google) Code Review
Browse files

Merge "Disables warning dialog when hardware shortcut enabled on purpose" into main

parents 5a26734f 6e527509
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -135,7 +135,7 @@ public class AccessibilityShortcutController {
            DialogStatus.SHOWN,
    })
    /** Denotes the user shortcut type. */
    @interface DialogStatus {
    public @interface DialogStatus {
        int NOT_SHOWN = 0;
        int SHOWN  = 1;
    }
+7 −0
Original line number Diff line number Diff line
@@ -55,6 +55,13 @@ flag {
    bug: "325420273"
}

flag {
  name: "enable_hardware_shortcut_disables_warning"
  namespace: "accessibility"
  description: "When the user purposely enables the hardware shortcut, preemptively disables the first-time warning message."
  bug: "287065325"
}

flag {
    name: "enable_magnification_joystick"
    namespace: "accessibility"
+7 −0
Original line number Diff line number Diff line
@@ -4273,6 +4273,13 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
        }
        if (shortcutType == UserShortcutType.HARDWARE) {
            skipVolumeShortcutDialogTimeoutRestriction(userId);
            if (com.android.server.accessibility.Flags.enableHardwareShortcutDisablesWarning()) {
                persistIntToSetting(
                        userId,
                        Settings.Secure.ACCESSIBILITY_SHORTCUT_DIALOG_SHOWN,
                        AccessibilityShortcutController.DialogStatus.SHOWN
                );
            }
        } else if (shortcutType == UserShortcutType.SOFTWARE) {
            // Update the A11y FAB size to large when the Magnification shortcut is
            // enabled and the user hasn't changed the floating button size
+48 −23
Original line number Diff line number Diff line
@@ -69,10 +69,9 @@ import android.os.Handler;
import android.os.IBinder;
import android.os.LocaleList;
import android.os.UserHandle;
import android.platform.test.annotations.RequiresFlagsDisabled;
import android.platform.test.annotations.RequiresFlagsEnabled;
import android.platform.test.flag.junit.CheckFlagsRule;
import android.platform.test.flag.junit.DeviceFlagsValueProvider;
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.testing.AndroidTestingRunner;
import android.testing.TestableContext;
@@ -144,8 +143,7 @@ public class AccessibilityManagerServiceTest {
            ApplicationProvider.getApplicationContext());

    @Rule
    public final CheckFlagsRule mCheckFlagsRule =
            DeviceFlagsValueProvider.createCheckFlagsRule();
    public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();

    private static final int ACTION_ID = 20;
    private static final String LABEL = "label";
@@ -624,7 +622,7 @@ public class AccessibilityManagerServiceTest {

    @SmallTest
    @Test
    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_MAGNIFICATION_MULTIPLE_FINGER_MULTIPLE_TAP_GESTURE)
    @EnableFlags(Flags.FLAG_ENABLE_MAGNIFICATION_MULTIPLE_FINGER_MULTIPLE_TAP_GESTURE)
    public void testOnClientChange_magnificationTwoFingerTripleTapEnabled_requestConnection() {
        when(mProxyManager.canRetrieveInteractiveWindowsLocked()).thenReturn(false);

@@ -642,7 +640,7 @@ public class AccessibilityManagerServiceTest {

    @SmallTest
    @Test
    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_MAGNIFICATION_MULTIPLE_FINGER_MULTIPLE_TAP_GESTURE)
    @EnableFlags(Flags.FLAG_ENABLE_MAGNIFICATION_MULTIPLE_FINGER_MULTIPLE_TAP_GESTURE)
    public void testOnClientChange_magnificationTwoFingerTripleTapDisabled_requestDisconnection() {
        when(mProxyManager.canRetrieveInteractiveWindowsLocked()).thenReturn(false);

@@ -704,7 +702,7 @@ public class AccessibilityManagerServiceTest {

    @SmallTest
    @Test
    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_MAGNIFICATION_MULTIPLE_FINGER_MULTIPLE_TAP_GESTURE)
    @EnableFlags(Flags.FLAG_ENABLE_MAGNIFICATION_MULTIPLE_FINGER_MULTIPLE_TAP_GESTURE)
    public void onClientChange_magnificationTwoFingerTripleTapDisabled_removeMagnificationButton() {
        final AccessibilityUserState userState = mA11yms.mUserStates.get(
                mA11yms.getCurrentUserIdLocked());
@@ -720,7 +718,7 @@ public class AccessibilityManagerServiceTest {

    @SmallTest
    @Test
    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_MAGNIFICATION_MULTIPLE_FINGER_MULTIPLE_TAP_GESTURE)
    @EnableFlags(Flags.FLAG_ENABLE_MAGNIFICATION_MULTIPLE_FINGER_MULTIPLE_TAP_GESTURE)
    public void onClientChange_magnificationTwoFingerTripleTapEnabled_keepMagnificationButton() {
        final AccessibilityUserState userState = mA11yms.mUserStates.get(
                mA11yms.getCurrentUserIdLocked());
@@ -772,7 +770,7 @@ public class AccessibilityManagerServiceTest {

    @SmallTest
    @Test
    @RequiresFlagsDisabled(com.android.systemui.Flags.FLAG_HEARING_AIDS_QS_TILE_DIALOG)
    @DisableFlags(com.android.systemui.Flags.FLAG_HEARING_AIDS_QS_TILE_DIALOG)
    public void testPerformAccessibilityShortcut_hearingAids_startActivityWithExpectedComponent() {
        final AccessibilityUserState userState = mA11yms.mUserStates.get(
                mA11yms.getCurrentUserIdLocked());
@@ -790,7 +788,7 @@ public class AccessibilityManagerServiceTest {

    @SmallTest
    @Test
    @RequiresFlagsEnabled(com.android.systemui.Flags.FLAG_HEARING_AIDS_QS_TILE_DIALOG)
    @EnableFlags(com.android.systemui.Flags.FLAG_HEARING_AIDS_QS_TILE_DIALOG)
    public void testPerformAccessibilityShortcut_hearingAids_sendExpectedBroadcast() {
        final AccessibilityUserState userState = mA11yms.mUserStates.get(
                mA11yms.getCurrentUserIdLocked());
@@ -949,7 +947,7 @@ public class AccessibilityManagerServiceTest {
    }

    @Test
    @RequiresFlagsEnabled(FLAG_SKIP_ACCESSIBILITY_WARNING_DIALOG_FOR_TRUSTED_SERVICES)
    @EnableFlags(FLAG_SKIP_ACCESSIBILITY_WARNING_DIALOG_FOR_TRUSTED_SERVICES)
    public void testIsAccessibilityServiceWarningRequired_notRequiredIfAllowlisted() {
        mockManageAccessibilityGranted(mTestableContext);
        final AccessibilityServiceInfo info_a = mockAccessibilityServiceInfo(
@@ -1007,6 +1005,33 @@ public class AccessibilityManagerServiceTest {
        )).isTrue();
    }

    @Test
    @EnableFlags(Flags.FLAG_ENABLE_HARDWARE_SHORTCUT_DISABLES_WARNING)
    public void enableHardwareShortcutsForTargets_shortcutDialogSetting_isShown() {
        Settings.Secure.putInt(
                mTestableContext.getContentResolver(),
                Settings.Secure.ACCESSIBILITY_SHORTCUT_DIALOG_SHOWN,
                AccessibilityShortcutController.DialogStatus.NOT_SHOWN
        );

        mockManageAccessibilityGranted(mTestableContext);
        setupShortcutTargetServices();
        String target = TARGET_ALWAYS_ON_A11Y_SERVICE.flattenToString();

        mA11yms.enableShortcutsForTargets(
                /* enable= */ true,
                UserShortcutType.HARDWARE,
                List.of(target),
                mA11yms.getCurrentUserIdLocked());
        mTestableLooper.processAllMessages();

        assertThat(Settings.Secure.getInt(
                mTestableContext.getContentResolver(),
                Settings.Secure.ACCESSIBILITY_SHORTCUT_DIALOG_SHOWN,
                AccessibilityShortcutController.DialogStatus.NOT_SHOWN))
                .isEqualTo(AccessibilityShortcutController.DialogStatus.SHOWN);
    }

    @Test
    public void enableShortcutsForTargets_disableSoftwareShortcut_shortcutTurnedOff()
            throws Exception {
@@ -1341,7 +1366,7 @@ public class AccessibilityManagerServiceTest {
    }

    @Test
    @RequiresFlagsEnabled(android.view.accessibility.Flags.FLAG_A11Y_QS_SHORTCUT)
    @EnableFlags(android.view.accessibility.Flags.FLAG_A11Y_QS_SHORTCUT)
    public void notifyQuickSettingsTilesChanged_statusBarServiceNotGranted_throwsException() {
        mTestableContext.getTestablePermissions().setPermission(
                Manifest.permission.STATUS_BAR_SERVICE, PackageManager.PERMISSION_DENIED);
@@ -1355,7 +1380,7 @@ public class AccessibilityManagerServiceTest {
    }

    @Test
    @RequiresFlagsEnabled(android.view.accessibility.Flags.FLAG_A11Y_QS_SHORTCUT)
    @EnableFlags(android.view.accessibility.Flags.FLAG_A11Y_QS_SHORTCUT)
    public void notifyQuickSettingsTilesChanged_manageAccessibilityNotGranted_throwsException() {
        mockStatusBarServiceGranted(mTestableContext);
        mTestableContext.getTestablePermissions().setPermission(
@@ -1369,7 +1394,7 @@ public class AccessibilityManagerServiceTest {
    }

    @Test
    @RequiresFlagsEnabled(android.view.accessibility.Flags.FLAG_A11Y_QS_SHORTCUT)
    @EnableFlags(android.view.accessibility.Flags.FLAG_A11Y_QS_SHORTCUT)
    public void notifyQuickSettingsTilesChanged_qsTileChanges_updateA11yTilesInQsPanel() {
        mockStatusBarServiceGranted(mTestableContext);
        mockManageAccessibilityGranted(mTestableContext);
@@ -1389,7 +1414,7 @@ public class AccessibilityManagerServiceTest {
    }

    @Test
    @RequiresFlagsEnabled(android.view.accessibility.Flags.FLAG_A11Y_QS_SHORTCUT)
    @EnableFlags(android.view.accessibility.Flags.FLAG_A11Y_QS_SHORTCUT)
    public void notifyQuickSettingsTilesChanged_sameQsTiles_noUpdateToA11yTilesInQsPanel() {
        notifyQuickSettingsTilesChanged_qsTileChanges_updateA11yTilesInQsPanel();
        List<ComponentName> tiles =
@@ -1406,7 +1431,7 @@ public class AccessibilityManagerServiceTest {
    }

    @Test
    @RequiresFlagsEnabled(android.view.accessibility.Flags.FLAG_A11Y_QS_SHORTCUT)
    @EnableFlags(android.view.accessibility.Flags.FLAG_A11Y_QS_SHORTCUT)
    public void notifyQuickSettingsTilesChanged_serviceWarningRequired_qsShortcutRemainDisabled() {
        mockStatusBarServiceGranted(mTestableContext);
        mockManageAccessibilityGranted(mTestableContext);
@@ -1424,7 +1449,7 @@ public class AccessibilityManagerServiceTest {
    }

    @Test
    @RequiresFlagsEnabled(android.view.accessibility.Flags.FLAG_A11Y_QS_SHORTCUT)
    @EnableFlags(android.view.accessibility.Flags.FLAG_A11Y_QS_SHORTCUT)
    public void notifyQuickSettingsTilesChanged_serviceWarningNotRequired_qsShortcutEnabled() {
        mockStatusBarServiceGranted(mTestableContext);
        mockManageAccessibilityGranted(mTestableContext);
@@ -1446,7 +1471,7 @@ public class AccessibilityManagerServiceTest {
    }

    @Test
    @RequiresFlagsEnabled(android.view.accessibility.Flags.FLAG_A11Y_QS_SHORTCUT)
    @EnableFlags(android.view.accessibility.Flags.FLAG_A11Y_QS_SHORTCUT)
    public void notifyQuickSettingsTilesChanged_addFrameworkTile_qsShortcutEnabled() {
        mockStatusBarServiceGranted(mTestableContext);
        mockManageAccessibilityGranted(mTestableContext);
@@ -1469,7 +1494,7 @@ public class AccessibilityManagerServiceTest {
    }

    @Test
    @RequiresFlagsEnabled(android.view.accessibility.Flags.FLAG_A11Y_QS_SHORTCUT)
    @EnableFlags(android.view.accessibility.Flags.FLAG_A11Y_QS_SHORTCUT)
    public void notifyQuickSettingsTilesChanged_removeFrameworkTile_qsShortcutDisabled() {
        notifyQuickSettingsTilesChanged_addFrameworkTile_qsShortcutEnabled();
        Set<ComponentName> qsTiles = mA11yms.getCurrentUserState().getA11yQsTilesInQsPanel();
@@ -1487,7 +1512,7 @@ public class AccessibilityManagerServiceTest {
    }

    @Test
    @RequiresFlagsEnabled(android.view.accessibility.Flags.FLAG_A11Y_QS_SHORTCUT)
    @EnableFlags(android.view.accessibility.Flags.FLAG_A11Y_QS_SHORTCUT)
    public void restoreAccessibilityQsTargets_a11yQsTargetsRestored() {
        String daltonizerTile =
                AccessibilityShortcutController.DALTONIZER_COMPONENT_NAME.flattenToString();
@@ -1510,7 +1535,7 @@ public class AccessibilityManagerServiceTest {
    }

    @Test
    @RequiresFlagsDisabled(android.view.accessibility.Flags.FLAG_A11Y_QS_SHORTCUT)
    @DisableFlags(android.view.accessibility.Flags.FLAG_A11Y_QS_SHORTCUT)
    public void restoreAccessibilityQsTargets_a11yQsTargetsNotRestored() {
        String daltonizerTile =
                AccessibilityShortcutController.DALTONIZER_COMPONENT_NAME.flattenToString();