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

Commit bb01a27e authored by Oleg Petšjonkin's avatar Oleg Petšjonkin Committed by Android (Google) Code Review
Browse files

Merge "Suppress shutdown thread vibrations in zen mode" into main

parents 56cc8bef 11fdb8e2
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;
        }
    }
}