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

Commit 11fdb8e2 authored by petsjonkin's avatar petsjonkin Committed by Oleg Petšjonkin
Browse files

Suppress shutdown thread vibrations in zen mode

Bug: b/335091231
Test: atest ShutdownThreadTest
Flag: EXEMPT trivial behaviour changes / bugfix
Change-Id: I133502d1d1650a8adce26810031e5b7f4a951060
parent 8ed5bdf2
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -6972,6 +6972,9 @@
         Note that, indefinitely repeating vibrations are not allowed as shutdown vibrations. -->
    <string name="config_defaultShutdownVibrationFile" />

    <!-- Whether or not vibration is disabled during shutdown -->
    <bool name="config_disableShutdownVibrationInZen">false</bool>

    <!-- Whether single finger panning is enabled by default when magnification is on -->
    <bool name="config_enable_a11y_magnification_single_panning">false</bool>

+1 −0
Original line number Diff line number Diff line
@@ -5425,6 +5425,7 @@
  <java-symbol type="drawable" name="focus_event_pressed_key_background" />
  <java-symbol type="drawable" name="focus_event_rotary_input_background" />
  <java-symbol type="string" name="config_defaultShutdownVibrationFile" />
  <java-symbol type="bool" name="config_disableShutdownVibrationInZen" />
  <java-symbol type="string" name="lockscreen_too_many_failed_attempts_countdown" />

  <java-symbol type="bool" name="config_enable_a11y_magnification_single_panning" />
+15 −0
Original line number Diff line number Diff line
@@ -48,6 +48,7 @@ import android.os.VibrationAttributes;
import android.os.VibrationEffect;
import android.os.Vibrator;
import android.os.vibrator.persistence.VibrationXmlParser;
import android.provider.Settings;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.ArrayMap;
@@ -743,6 +744,11 @@ public final class ShutdownThread extends Thread {
     */
    @VisibleForTesting // For testing vibrations without shutting down device
    void playShutdownVibration(Context context) {
        if (mInjector.isShutdownVibrationDisabled(context)) {
            Log.i(TAG, "Vibration disabled in config");
            return;
        }

        Vibrator vibrator = mInjector.getVibrator(context);
        if (!vibrator.hasVibrator()) {
            return;
@@ -920,5 +926,14 @@ public final class ShutdownThread extends Thread {
            return context.getResources().getString(
                    com.android.internal.R.string.config_defaultShutdownVibrationFile);
        }

        public boolean isShutdownVibrationDisabled(Context context) {
            boolean disabledInConfig = context.getResources().getBoolean(
                    com.android.internal.R.bool.config_disableShutdownVibrationInZen);
            boolean isZenMode = Settings.Global.getInt(context.getContentResolver(),
                    Settings.Global.ZEN_MODE, Settings.Global.ZEN_MODE_OFF)
                    != Settings.Global.ZEN_MODE_OFF;
            return disabledInConfig && isZenMode;
        }
    }
}
+18 −3
Original line number Diff line number Diff line
@@ -17,11 +17,10 @@
package com.android.server.power;

import static com.android.server.power.ShutdownThread.DEFAULT_SHUTDOWN_VIBRATE_MS;

import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -42,7 +41,6 @@ import org.mockito.MockitoAnnotations;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * Tests for {@link com.android.server.power.ShutdownThread}
@@ -88,6 +86,7 @@ public class ShutdownThreadTest {
    @Mock private VibratorInfo mVibratorInfoMock;

    private String mDefaultShutdownVibrationFilePath;
    private boolean mShutdownVibrationDisabled;
    private long mLastSleepDurationMs;

    private ShutdownThread mShutdownThread;
@@ -168,6 +167,17 @@ public class ShutdownThreadTest {
                .vibrate(any(VibrationEffect.class), any(VibrationAttributes.class));
    }

    @Test
    public void testVibrationDisabled() throws Exception {
        setShutdownVibrationFileContent(CLICK_VIB_SERIALIZATION);
        mShutdownVibrationDisabled = true;

        mShutdownThread.playShutdownVibration(mContextMock);

        verify(mVibratorMock, never())
                .vibrate(any(VibrationEffect.class), any(VibrationAttributes.class));
    }

    private void assertShutdownVibration(VibrationEffect effect, long vibrationSleepDuration)
            throws Exception {
        verify(mVibratorMock).vibrate(
@@ -214,5 +224,10 @@ public class ShutdownThreadTest {
        public void sleep(long durationMs) {
            mLastSleepDurationMs = durationMs;
        }

        @Override
        public boolean isShutdownVibrationDisabled(Context context) {
            return mShutdownVibrationDisabled;
        }
    }
}