diff options
| author | 2025-01-17 16:14:06 +0100 | |
|---|---|---|
| committer | 2025-01-17 16:14:06 +0100 | |
| commit | 8cb2e87ca021446a8a8d3241daa642f79fe47d5f (patch) | |
| tree | 60825287106490803a8b8a0a8edd9cea5a3eaee3 | |
| parent | 265bf0b27c3d99e746262f426996901c9f8ec102 (diff) | |
Make areAutomaticZenRulesUserManaged() return false on TV
Same as WATCH and AUTOMOBILE, these devices don't have the appropriate Settings UI to resolve ACTION_AUTOMATIC_ZEN_RULE_SETTINGS.
Bug: 390623353
Test: atest NotificationManagerTest
Flag: EXEMPT trivial fix
Change-Id: I1670b511eb7552fb3c5fedb2f1e12aa73544ca35
| -rw-r--r-- | core/java/android/app/NotificationManager.java | 3 | ||||
| -rw-r--r-- | core/tests/coretests/src/android/app/NotificationManagerTest.java | 53 |
2 files changed, 55 insertions, 1 deletions
diff --git a/core/java/android/app/NotificationManager.java b/core/java/android/app/NotificationManager.java index 24f2495d8f09..bef07e07cd84 100644 --- a/core/java/android/app/NotificationManager.java +++ b/core/java/android/app/NotificationManager.java @@ -1644,7 +1644,8 @@ public class NotificationManager { if (Flags.modesApi() && Flags.modesUi()) { PackageManager pm = mContext.getPackageManager(); return !pm.hasSystemFeature(PackageManager.FEATURE_WATCH) - && !pm.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE); + && !pm.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE) + && !pm.hasSystemFeature(PackageManager.FEATURE_LEANBACK); } else { return false; } diff --git a/core/tests/coretests/src/android/app/NotificationManagerTest.java b/core/tests/coretests/src/android/app/NotificationManagerTest.java index 18ba6a16bf72..b1f1bdc68cdc 100644 --- a/core/tests/coretests/src/android/app/NotificationManagerTest.java +++ b/core/tests/coretests/src/android/app/NotificationManagerTest.java @@ -30,8 +30,10 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import android.annotation.Nullable; import android.content.Context; import android.content.ContextWrapper; +import android.content.pm.PackageManager; import android.content.pm.ParceledListSlice; import android.os.UserHandle; import android.platform.test.annotations.EnableFlags; @@ -409,6 +411,46 @@ public class NotificationManagerTest { .getOrCreateNotificationChannels(any(), any(), anyInt(), anyBoolean()); } + @Test + @EnableFlags({Flags.FLAG_MODES_API, Flags.FLAG_MODES_UI}) + public void areAutomaticZenRulesUserManaged_handheld_isTrue() { + PackageManager pm = mock(PackageManager.class); + when(pm.hasSystemFeature(any())).thenReturn(false); + mContext.setPackageManager(pm); + + assertThat(mNotificationManager.areAutomaticZenRulesUserManaged()).isTrue(); + } + + @Test + @EnableFlags({Flags.FLAG_MODES_API, Flags.FLAG_MODES_UI}) + public void areAutomaticZenRulesUserManaged_auto_isFalse() { + PackageManager pm = mock(PackageManager.class); + when(pm.hasSystemFeature(eq(PackageManager.FEATURE_AUTOMOTIVE))).thenReturn(true); + mContext.setPackageManager(pm); + + assertThat(mNotificationManager.areAutomaticZenRulesUserManaged()).isFalse(); + } + + @Test + @EnableFlags({Flags.FLAG_MODES_API, Flags.FLAG_MODES_UI}) + public void areAutomaticZenRulesUserManaged_tv_isFalse() { + PackageManager pm = mock(PackageManager.class); + when(pm.hasSystemFeature(eq(PackageManager.FEATURE_LEANBACK))).thenReturn(true); + mContext.setPackageManager(pm); + + assertThat(mNotificationManager.areAutomaticZenRulesUserManaged()).isFalse(); + } + + @Test + @EnableFlags({Flags.FLAG_MODES_API, Flags.FLAG_MODES_UI}) + public void areAutomaticZenRulesUserManaged_watch_isFalse() { + PackageManager pm = mock(PackageManager.class); + when(pm.hasSystemFeature(eq(PackageManager.FEATURE_WATCH))).thenReturn(true); + mContext.setPackageManager(pm); + + assertThat(mNotificationManager.areAutomaticZenRulesUserManaged()).isFalse(); + } + private Notification exampleNotification() { return new Notification.Builder(mContext, "channel") .setSmallIcon(android.R.drawable.star_big_on) @@ -438,6 +480,7 @@ public class NotificationManagerTest { // Helper context wrapper class where we can control just the return values of getPackageName, // getOpPackageName, and getUserId (used in getNotificationChannels). private static class PackageTestableContext extends ContextWrapper { + private PackageManager mPm; private String mPackage; private String mOpPackage; private Integer mUserId; @@ -446,6 +489,10 @@ public class NotificationManagerTest { super(base); } + void setPackageManager(@Nullable PackageManager pm) { + mPm = pm; + } + void setParameters(String packageName, String opPackageName, int userId) { mPackage = packageName; mOpPackage = opPackageName; @@ -453,6 +500,12 @@ public class NotificationManagerTest { } @Override + public PackageManager getPackageManager() { + if (mPm != null) return mPm; + return super.getPackageManager(); + } + + @Override public String getPackageName() { if (mPackage != null) return mPackage; return super.getPackageName(); |