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

Commit 8718a48f authored by Ahmad Khalil's avatar Ahmad Khalil
Browse files

Add accessibility usage to screen OFF usage allowlist.

Fix: 277959670
Test: com.android.server.vibrator.VibrationSettingsTest
Change-Id: I2134dd54dd5f3a2d8fb3097af87b67aff32a858b
parent 1e5933c1
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -124,6 +124,7 @@ final class VibrationSettings {
    private static final Set<Integer> SYSTEM_VIBRATION_SCREEN_OFF_USAGE_ALLOWLIST = new HashSet<>(
            Arrays.asList(
                    USAGE_TOUCH,
                    USAGE_ACCESSIBILITY,
                    USAGE_PHYSICAL_EMULATION,
                    USAGE_HARDWARE_FEEDBACK));

+27 −9
Original line number Diff line number Diff line
@@ -618,13 +618,19 @@ public class VibrationSettingsTest {
    }

    @Test
    public void shouldCancelVibrationOnScreenOff_withUidZero_returnsFalseForTouchAndHardware() {
    public void shouldCancelVibrationOnScreenOff_withUidZero_returnsFalseForUsagesInAllowlist() {
        long vibrateStartTime = 100;
        mockGoToSleep(vibrateStartTime + 10, PowerManager.GO_TO_SLEEP_REASON_DEVICE_ADMIN);

        Set<Integer> expectedAllowedVibrations = new HashSet<>(Arrays.asList(
                USAGE_TOUCH,
                USAGE_ACCESSIBILITY,
                USAGE_PHYSICAL_EMULATION,
                USAGE_HARDWARE_FEEDBACK
        ));

        for (int usage : ALL_USAGES) {
            if (usage == USAGE_TOUCH || usage == USAGE_HARDWARE_FEEDBACK
                    || usage == USAGE_PHYSICAL_EMULATION) {
            if (expectedAllowedVibrations.contains(usage)) {
                assertFalse(mVibrationSettings.shouldCancelVibrationOnScreenOff(
                        createCallerInfo(/* uid= */ 0, "", usage), vibrateStartTime));
            } else {
@@ -635,13 +641,19 @@ public class VibrationSettingsTest {
    }

    @Test
    public void shouldCancelVibrationOnScreenOff_withSystemUid_returnsFalseForTouchAndHardware() {
    public void shouldCancelVibrationOnScreenOff_withSystemUid__returnsFalseForUsagesInAllowlist() {
        long vibrateStartTime = 100;
        mockGoToSleep(vibrateStartTime + 10, PowerManager.GO_TO_SLEEP_REASON_DEVICE_FOLD);

        Set<Integer> expectedAllowedVibrations = new HashSet<>(Arrays.asList(
                USAGE_TOUCH,
                USAGE_ACCESSIBILITY,
                USAGE_PHYSICAL_EMULATION,
                USAGE_HARDWARE_FEEDBACK
        ));

        for (int usage : ALL_USAGES) {
            if (usage == USAGE_TOUCH || usage == USAGE_HARDWARE_FEEDBACK
                    || usage == USAGE_PHYSICAL_EMULATION) {
            if (expectedAllowedVibrations.contains(usage)) {
                assertFalse(mVibrationSettings.shouldCancelVibrationOnScreenOff(
                        createCallerInfo(Process.SYSTEM_UID, "", usage), vibrateStartTime));
            } else {
@@ -652,13 +664,19 @@ public class VibrationSettingsTest {
    }

    @Test
    public void shouldCancelVibrationOnScreenOff_withSysUiPkg_returnsFalseForTouchAndHardware() {
    public void shouldCancelVibrationOnScreenOff_withSysUiPkg_returnsFalseForUsagesInAllowlist() {
        long vibrateStartTime = 100;
        mockGoToSleep(vibrateStartTime + 10, PowerManager.GO_TO_SLEEP_REASON_HDMI);

        Set<Integer> expectedAllowedVibrations = new HashSet<>(Arrays.asList(
                USAGE_TOUCH,
                USAGE_ACCESSIBILITY,
                USAGE_PHYSICAL_EMULATION,
                USAGE_HARDWARE_FEEDBACK
        ));

        for (int usage : ALL_USAGES) {
            if (usage == USAGE_TOUCH || usage == USAGE_HARDWARE_FEEDBACK
                    || usage == USAGE_PHYSICAL_EMULATION) {
            if (expectedAllowedVibrations.contains(usage)) {
                assertFalse(mVibrationSettings.shouldCancelVibrationOnScreenOff(
                        createCallerInfo(UID, SYSUI_PACKAGE_NAME, usage), vibrateStartTime));
            } else {