Merge "Respect empty vibration effect configs in PhoneWindowManager and VibratorService" into oc-dev
diff --git a/services/core/java/com/android/server/VibratorService.java b/services/core/java/com/android/server/VibratorService.java
index 9fa6624..03e9dd2 100644
--- a/services/core/java/com/android/server/VibratorService.java
+++ b/services/core/java/com/android/server/VibratorService.java
@@ -222,7 +222,9 @@
long[] clickEffectTimings = getLongIntArray(context.getResources(),
com.android.internal.R.array.config_virtualKeyVibePattern);
VibrationEffect clickEffect;
- if (clickEffectTimings.length == 1) {
+ if (clickEffectTimings.length == 0) {
+ clickEffect = null;
+ } else if (clickEffectTimings.length == 1) {
clickEffect = VibrationEffect.createOneShot(
clickEffectTimings[0], VibrationEffect.DEFAULT_AMPLITUDE);
} else {
@@ -232,7 +234,6 @@
new long[] {0, 30, 100, 30} /*timings*/, -1);
mFallbackEffects = new VibrationEffect[] { clickEffect, doubleClickEffect };
-
}
public void systemReady() {
@@ -701,7 +702,7 @@
}
}
final int id = prebaked.getId();
- if (id < 0 || id >= mFallbackEffects.length) {
+ if (id < 0 || id >= mFallbackEffects.length || mFallbackEffects[id] == null) {
Slog.w(TAG, "Failed to play prebaked effect, no fallback");
return 0;
}
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 8b8e3c4..908e517 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -7691,7 +7691,10 @@
default:
return null;
}
- if (pattern.length == 1) {
+ if (pattern.length == 0) {
+ // No vibration
+ return null;
+ } else if (pattern.length == 1) {
// One-shot vibration
return VibrationEffect.createOneShot(pattern[0], VibrationEffect.DEFAULT_AMPLITUDE);
} else {