Roll forward "Make notification effects for automotive configurable."
This reverts commit a9d0bffa06bb094301dc8a1abfb20f2e58991fde.
Reason for revert: Rolling forward after fixing test. The test was failing because NotificationManagerService.init() was not called in the test. Added another setter for testing purpose.
Bug: 129677989
Test: runtest -x frameworks/base/services/tests/uiservicestests/src/com/android/server/notification/BuzzBeepBlinkTest.java
Change-Id: I2307052aeedb5a72d04930c7a5233c74390c1085
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 5268189..edcc057 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -745,6 +745,10 @@
<!-- XXXXXX END OF RESOURCES USING WRONG NAMING CONVENTION -->
+ <!-- If this is true, notification effects will be played by the notification server.
+ When false, car notification effects will be handled elsewhere. -->
+ <bool name="config_enableServerNotificationEffectsForAutomotive">false</bool>
+
<!-- If this is true, the screen will come on when you unplug usb/power/whatever. -->
<bool name="config_unplugTurnsOnScreen">false</bool>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 94b5da6..da2f890 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -1910,6 +1910,7 @@
<java-symbol type="array" name="config_testLocationProviders" />
<java-symbol type="array" name="config_defaultNotificationVibePattern" />
<java-symbol type="array" name="config_notificationFallbackVibePattern" />
+ <java-symbol type="bool" name="config_enableServerNotificationEffectsForAutomotive" />
<java-symbol type="bool" name="config_useAttentionLight" />
<java-symbol type="bool" name="config_adaptive_sleep_available" />
<java-symbol type="bool" name="config_animateScreenLights" />
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index 7f1b25ca..b6e0963 100644
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -455,6 +455,7 @@
private int mAutoGroupAtCount;
private boolean mIsTelevision;
private boolean mIsAutomotive;
+ private boolean mNotificationEffectsEnabledForAutomotive;
private MetricsLogger mMetricsLogger;
private TriPredicate<String, Integer, String> mAllowedManagedServicePackages;
@@ -1526,6 +1527,11 @@
}
@VisibleForTesting
+ void setNotificationEffectsEnabledForAutomotive(boolean isEnabled) {
+ mNotificationEffectsEnabledForAutomotive = isEnabled;
+ }
+
+ @VisibleForTesting
void setIsTelevision(boolean isTelevision) {
mIsTelevision = isTelevision;
}
@@ -1686,6 +1692,8 @@
mIsAutomotive =
mPackageManagerClient.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE, 0);
+ mNotificationEffectsEnabledForAutomotive =
+ resources.getBoolean(R.bool.config_enableServerNotificationEffectsForAutomotive);
mPreferencesHelper.lockChannelsForOEM(getContext().getResources().getStringArray(
com.android.internal.R.array.config_nonBlockableNotificationPackages));
@@ -5560,6 +5568,9 @@
@VisibleForTesting
@GuardedBy("mNotificationLock")
void buzzBeepBlinkLocked(NotificationRecord record) {
+ if (mIsAutomotive && !mNotificationEffectsEnabledForAutomotive) {
+ return;
+ }
boolean buzz = false;
boolean beep = false;
boolean blink = false;
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/BuzzBeepBlinkTest.java b/services/tests/uiservicestests/src/com/android/server/notification/BuzzBeepBlinkTest.java
index 6be2c2e..6061d51 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/BuzzBeepBlinkTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/BuzzBeepBlinkTest.java
@@ -455,8 +455,23 @@
}
@Test
- public void testNoBeepForImportanceDefaultInAutomotive() throws Exception {
+ public void testNoBeepForAutomotiveIfEffectsDisabled() throws Exception {
mService.setIsAutomotive(true);
+ mService.setNotificationEffectsEnabledForAutomotive(false);
+
+ NotificationRecord r = getBeepyNotification();
+ r.setSystemImportance(NotificationManager.IMPORTANCE_HIGH);
+
+ mService.buzzBeepBlinkLocked(r);
+
+ verifyNeverBeep();
+ assertFalse(r.isInterruptive());
+ }
+
+ @Test
+ public void testNoBeepForImportanceDefaultInAutomotiveIfEffectsEnabled() throws Exception {
+ mService.setIsAutomotive(true);
+ mService.setNotificationEffectsEnabledForAutomotive(true);
NotificationRecord r = getBeepyNotification();
r.setSystemImportance(NotificationManager.IMPORTANCE_DEFAULT);
@@ -468,10 +483,12 @@
}
@Test
- public void testBeepForImportanceHighInAutomotive() throws Exception {
+ public void testBeepForImportanceHighInAutomotiveIfEffectsEnabled() throws Exception {
mService.setIsAutomotive(true);
+ mService.setNotificationEffectsEnabledForAutomotive(true);
NotificationRecord r = getBeepyNotification();
+ r.setSystemImportance(NotificationManager.IMPORTANCE_HIGH);
mService.buzzBeepBlinkLocked(r);