diff options
| author | 2024-06-13 15:03:21 +0000 | |
|---|---|---|
| committer | 2024-06-18 16:45:44 +0000 | |
| commit | 11fdb8e2bd58d8488428853ff0f5caa40b947343 (patch) | |
| tree | 0f1bae9ae43ce35f7663d059b8c32b303da3d4cb | |
| parent | 8ed5bdf2e83d83b9e3fbb71b082d5ffaedb5204c (diff) | |
Suppress shutdown thread vibrations in zen mode
Bug: b/335091231
Test: atest ShutdownThreadTest
Flag: EXEMPT trivial behaviour changes / bugfix
Change-Id: I133502d1d1650a8adce26810031e5b7f4a951060
4 files changed, 37 insertions, 3 deletions
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 17666cfc60a0..d01122e20306 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -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> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 0de9179e2f65..63934c4dc70b 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -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" /> diff --git a/services/core/java/com/android/server/power/ShutdownThread.java b/services/core/java/com/android/server/power/ShutdownThread.java index 6b7f2fa1cf0d..4b4e442b7b84 100644 --- a/services/core/java/com/android/server/power/ShutdownThread.java +++ b/services/core/java/com/android/server/power/ShutdownThread.java @@ -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; + } } } diff --git a/services/tests/powerservicetests/src/com/android/server/power/ShutdownThreadTest.java b/services/tests/powerservicetests/src/com/android/server/power/ShutdownThreadTest.java index 62075b828a62..ab1b0cc51d39 100644 --- a/services/tests/powerservicetests/src/com/android/server/power/ShutdownThreadTest.java +++ b/services/tests/powerservicetests/src/com/android/server/power/ShutdownThreadTest.java @@ -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; + } } } |