Loading services/core/java/com/android/server/notification/NotificationManagerService.java +14 −7 Original line number Diff line number Diff line Loading @@ -2636,19 +2636,26 @@ public class NotificationManagerService extends SystemService { ParceledListSlice channelsList) { List<NotificationChannel> channels = channelsList.getList(); final int channelsSize = channels.size(); boolean needsPolicyFileChange = false; for (int i = 0; i < channelsSize; i++) { final NotificationChannel channel = channels.get(i); Preconditions.checkNotNull(channel, "channel in list is null"); mPreferencesHelper.createNotificationChannel(pkg, uid, channel, true /* fromTargetApp */, mConditionProviders.isPackageOrComponentAllowed( needsPolicyFileChange = mPreferencesHelper.createNotificationChannel(pkg, uid, channel, true /* fromTargetApp */, mConditionProviders.isPackageOrComponentAllowed( pkg, UserHandle.getUserId(uid))); if (needsPolicyFileChange) { mListeners.notifyNotificationChannelChanged(pkg, UserHandle.getUserHandleForUid(uid), mPreferencesHelper.getNotificationChannel(pkg, uid, channel.getId(), false), mPreferencesHelper.getNotificationChannel(pkg, uid, channel.getId(), false), NOTIFICATION_CHANNEL_OR_GROUP_ADDED); } } if (needsPolicyFileChange) { handleSavePolicyFile(); } } @Override public void createNotificationChannels(String pkg, Loading services/core/java/com/android/server/notification/PreferencesHelper.java +31 −10 Original line number Diff line number Diff line Loading @@ -615,12 +615,13 @@ public class PreferencesHelper implements RankingConfig { } @Override public void createNotificationChannel(String pkg, int uid, NotificationChannel channel, public boolean createNotificationChannel(String pkg, int uid, NotificationChannel channel, boolean fromTargetApp, boolean hasDndAccess) { Preconditions.checkNotNull(pkg); Preconditions.checkNotNull(channel); Preconditions.checkNotNull(channel.getId()); Preconditions.checkArgument(!TextUtils.isEmpty(channel.getName())); boolean needsPolicyFileChange = false; synchronized (mPackagePreferences) { PackagePreferences r = getOrCreatePackagePreferencesLocked(pkg, uid); if (r == null) { Loading @@ -637,17 +638,28 @@ public class PreferencesHelper implements RankingConfig { if (existing != null && fromTargetApp) { if (existing.isDeleted()) { existing.setDeleted(false); needsPolicyFileChange = true; // log a resurrected channel as if it's new again MetricsLogger.action(getChannelLog(channel, pkg).setType( com.android.internal.logging.nano.MetricsProto.MetricsEvent.TYPE_OPEN)); } if (!Objects.equals(channel.getName().toString(), existing.getName().toString())) { existing.setName(channel.getName().toString()); needsPolicyFileChange = true; } if (!Objects.equals(channel.getDescription(), existing.getDescription())) { existing.setDescription(channel.getDescription()); needsPolicyFileChange = true; } if (channel.isBlockableSystem() != existing.isBlockableSystem()) { existing.setBlockableSystem(channel.isBlockableSystem()); if (existing.getGroup() == null) { needsPolicyFileChange = true; } if (channel.getGroup() != null && existing.getGroup() == null) { existing.setGroup(channel.getGroup()); needsPolicyFileChange = true; } // Apps are allowed to downgrade channel importance if the user has not changed any Loading @@ -656,23 +668,30 @@ public class PreferencesHelper implements RankingConfig { if (existing.getUserLockedFields() == 0 && channel.getImportance() < existing.getImportance()) { existing.setImportance(channel.getImportance()); needsPolicyFileChange = true; } // system apps and dnd access apps can bypass dnd if the user hasn't changed any // fields on the channel yet if (existing.getUserLockedFields() == 0 && hasDndAccess) { boolean bypassDnd = channel.canBypassDnd(); if (bypassDnd != existing.canBypassDnd()) { existing.setBypassDnd(bypassDnd); needsPolicyFileChange = true; if (bypassDnd != mAreChannelsBypassingDnd || previousExistingImportance != existing.getImportance()) { updateChannelsBypassingDnd(mContext.getUserId()); } } } updateConfig(); return; return needsPolicyFileChange; } needsPolicyFileChange = true; if (channel.getImportance() < IMPORTANCE_NONE || channel.getImportance() > NotificationManager.IMPORTANCE_MAX) { throw new IllegalArgumentException("Invalid importance level"); Loading Loading @@ -708,6 +727,8 @@ public class PreferencesHelper implements RankingConfig { MetricsLogger.action(getChannelLog(channel, pkg).setType( com.android.internal.logging.nano.MetricsProto.MetricsEvent.TYPE_OPEN)); } return needsPolicyFileChange; } void clearLockedFieldsLocked(NotificationChannel channel) { Loading services/core/java/com/android/server/notification/RankingConfig.java +1 −1 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ public interface RankingConfig { boolean fromTargetApp); ParceledListSlice<NotificationChannelGroup> getNotificationChannelGroups(String pkg, int uid, boolean includeDeleted, boolean includeNonGrouped, boolean includeEmpty); void createNotificationChannel(String pkg, int uid, NotificationChannel channel, boolean createNotificationChannel(String pkg, int uid, NotificationChannel channel, boolean fromTargetApp, boolean hasDndAccess); void updateNotificationChannel(String pkg, int uid, NotificationChannel channel, boolean fromUser); NotificationChannel getNotificationChannel(String pkg, int uid, String channelId, boolean includeDeleted); Loading services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java +4 −1 Original line number Diff line number Diff line Loading @@ -1659,11 +1659,14 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { when(mPreferencesHelper.getNotificationChannel(eq(PKG), anyInt(), eq(channel2.getId()), anyBoolean())) .thenReturn(channel2); when(mPreferencesHelper.createNotificationChannel(eq(PKG), anyInt(), eq(channel2), anyBoolean(), anyBoolean())) .thenReturn(true); reset(mListeners); mBinderService.createNotificationChannels(PKG, new ParceledListSlice(Arrays.asList(mTestNotificationChannel, channel2))); verify(mListeners, times(1)).notifyNotificationChannelChanged(eq(PKG), verify(mListeners, never()).notifyNotificationChannelChanged(eq(PKG), eq(Process.myUserHandle()), eq(mTestNotificationChannel), eq(NotificationListenerService.NOTIFICATION_CHANNEL_OR_GROUP_ADDED)); verify(mListeners, times(1)).notifyNotificationChannelChanged(eq(PKG), Loading services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java +34 −27 Original line number Diff line number Diff line Loading @@ -262,13 +262,13 @@ public class PreferencesHelperTest extends UiServiceTestCase { int uid0 = 1001; setUpPackageWithUid(package0, uid0); NotificationChannel channel0 = new NotificationChannel("id0", "name0", IMPORTANCE_HIGH); mHelper.createNotificationChannel(package0, uid0, channel0, true, false); assertTrue(mHelper.createNotificationChannel(package0, uid0, channel0, true, false)); String package10 = "test.package.user10"; int uid10 = 1001001; setUpPackageWithUid(package10, uid10); NotificationChannel channel10 = new NotificationChannel("id10", "name10", IMPORTANCE_HIGH); mHelper.createNotificationChannel(package10, uid10, channel10, true, false); assertTrue(mHelper.createNotificationChannel(package10, uid10, channel10, true, false)); ByteArrayOutputStream baos = writeXmlAndPurge(package10, uid10, true, 10); Loading @@ -293,7 +293,7 @@ public class PreferencesHelperTest extends UiServiceTestCase { int uid0 = 1001; setUpPackageWithUid(package0, uid0); NotificationChannel channel0 = new NotificationChannel("id0", "name0", IMPORTANCE_HIGH); mHelper.createNotificationChannel(package0, uid0, channel0, true, false); assertTrue(mHelper.createNotificationChannel(package0, uid0, channel0, true, false)); ByteArrayOutputStream baos = writeXmlAndPurge(package0, uid0, true, 0); Loading Loading @@ -334,8 +334,8 @@ public class PreferencesHelperTest extends UiServiceTestCase { mHelper.createNotificationChannelGroup(PKG_N_MR1, UID_N_MR1, ncg, true); mHelper.createNotificationChannelGroup(PKG_N_MR1, UID_N_MR1, ncg2, true); mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, channel1, true, false); mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, channel2, false, false); assertTrue(mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, channel1, true, false)); assertTrue(mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, channel2, false, false)); mHelper.setShowBadge(PKG_N_MR1, UID_N_MR1, true); mHelper.setAppImportanceLocked(PKG_N_MR1, UID_N_MR1); Loading Loading @@ -716,8 +716,8 @@ public class PreferencesHelperTest extends UiServiceTestCase { public void testCreateChannel_blocked() throws Exception { mHelper.setImportance(PKG_N_MR1, UID_N_MR1, IMPORTANCE_NONE); mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, new NotificationChannel("bananas", "bananas", IMPORTANCE_LOW), true, false); assertTrue(mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, new NotificationChannel("bananas", "bananas", IMPORTANCE_LOW), true, false)); } @Test Loading Loading @@ -746,10 +746,10 @@ public class PreferencesHelperTest extends UiServiceTestCase { } catch (IllegalArgumentException e) { // yay } mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, new NotificationChannel("bananas", "bananas", IMPORTANCE_NONE), true, false); mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, new NotificationChannel("bananas", "bananas", IMPORTANCE_MAX), true, false); assertTrue(mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, new NotificationChannel("bananas", "bananas", IMPORTANCE_NONE), true, false)); assertFalse(mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, new NotificationChannel("bananas", "bananas", IMPORTANCE_MAX), true, false)); } Loading @@ -763,7 +763,7 @@ public class PreferencesHelperTest extends UiServiceTestCase { channel.setBypassDnd(true); channel.setLockscreenVisibility(Notification.VISIBILITY_SECRET); mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, channel, false, false); assertTrue(mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, channel, false, false)); // same id, try to update all fields final NotificationChannel channel2 = Loading @@ -776,7 +776,8 @@ public class PreferencesHelperTest extends UiServiceTestCase { mHelper.updateNotificationChannel(PKG_N_MR1, UID_N_MR1, channel2, true); // all fields should be changed assertEquals(channel2, mHelper.getNotificationChannel(PKG_N_MR1, UID_N_MR1, channel.getId(), false)); assertEquals(channel2, mHelper.getNotificationChannel(PKG_N_MR1, UID_N_MR1, channel.getId(), false)); verify(mHandler, times(1)).requestSort(); } Loading Loading @@ -894,7 +895,7 @@ public class PreferencesHelperTest extends UiServiceTestCase { } channel.lockFields(lockMask); mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, channel, true, false); assertTrue(mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, channel, true, false)); NotificationChannel savedChannel = mHelper.getNotificationChannel(PKG_N_MR1, UID_N_MR1, channel.getId(), false); Loading Loading @@ -1469,13 +1470,18 @@ public class PreferencesHelperTest extends UiServiceTestCase { new NotificationChannel("id2", "name2", IMPORTANCE_LOW); channel.setVibrationPattern(vibration); mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, channel, true, false); assertTrue(mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, channel, true, false)); NotificationChannel newChannel = new NotificationChannel( channel.getId(), channel.getName(), NotificationManager.IMPORTANCE_HIGH); newChannel.setVibrationPattern(new long[]{100}); newChannel.setAllowBubbles(!channel.canBubble()); newChannel.setLightColor(Color.BLUE); newChannel.setSound(Uri.EMPTY, null); newChannel.setShowBadge(!channel.canShowBadge()); mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, newChannel, true, false); assertFalse(mHelper.createNotificationChannel( PKG_N_MR1, UID_N_MR1, newChannel, true, false)); // Old settings not overridden compareChannels(channel, Loading Loading @@ -1588,16 +1594,17 @@ public class PreferencesHelperTest extends UiServiceTestCase { new NotificationChannel("id1", "name1", NotificationManager.IMPORTANCE_HIGH); mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, channel1, true, false); mHelper.onPackagesChanged(true, UserHandle.USER_SYSTEM, new String[]{PKG_N_MR1}, new int[]{ UID_N_MR1}); assertTrue(mHelper.onPackagesChanged(true, UserHandle.USER_SYSTEM, new String[]{PKG_N_MR1}, new int[]{UID_N_MR1})); assertEquals(0, mHelper.getNotificationChannels(PKG_N_MR1, UID_N_MR1, true).getList().size()); assertEquals(0, mHelper.getNotificationChannels( PKG_N_MR1, UID_N_MR1, true).getList().size()); // Not deleted mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, channel1, true, false); mHelper.onPackagesChanged(false, UserHandle.USER_SYSTEM, new String[]{PKG_N_MR1}, new int[]{ UID_N_MR1}); assertFalse(mHelper.onPackagesChanged(false, UserHandle.USER_SYSTEM, new String[]{PKG_N_MR1}, new int[]{UID_N_MR1})); assertEquals(2, mHelper.getNotificationChannels(PKG_N_MR1, UID_N_MR1, false).getList().size()); } Loading Loading @@ -1825,13 +1832,13 @@ public class PreferencesHelperTest extends UiServiceTestCase { @Test public void testCreateChannel_updateName() { NotificationChannel nc = new NotificationChannel("id", "hello", IMPORTANCE_DEFAULT); mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, nc, true, false); assertTrue(mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, nc, true, false)); NotificationChannel actual = mHelper.getNotificationChannel(PKG_N_MR1, UID_N_MR1, "id", false); assertEquals("hello", actual.getName()); nc = new NotificationChannel("id", "goodbye", IMPORTANCE_HIGH); mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, nc, true, false); assertTrue(mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, nc, true, false)); actual = mHelper.getNotificationChannel(PKG_N_MR1, UID_N_MR1, "id", false); assertEquals("goodbye", actual.getName()); Loading @@ -1845,14 +1852,14 @@ public class PreferencesHelperTest extends UiServiceTestCase { NotificationChannelGroup group = new NotificationChannelGroup("group", ""); mHelper.createNotificationChannelGroup(PKG_N_MR1, UID_N_MR1, group, true); NotificationChannel nc = new NotificationChannel("id", "hello", IMPORTANCE_DEFAULT); mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, nc, true, false); assertTrue(mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, nc, true, false)); NotificationChannel actual = mHelper.getNotificationChannel(PKG_N_MR1, UID_N_MR1, "id", false); assertNull(actual.getGroup()); nc = new NotificationChannel("id", "hello", IMPORTANCE_HIGH); nc.setGroup(group.getId()); mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, nc, true, false); assertTrue(mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, nc, true, false)); actual = mHelper.getNotificationChannel(PKG_N_MR1, UID_N_MR1, "id", false); assertNotNull(actual.getGroup()); Loading Loading @@ -2109,7 +2116,7 @@ public class PreferencesHelperTest extends UiServiceTestCase { NotificationChannel update = new NotificationChannel("A", "a", IMPORTANCE_LOW); update.setBypassDnd(true); mHelper.createNotificationChannel(SYSTEM_PKG, SYSTEM_UID, update, true, false); assertFalse(mHelper.createNotificationChannel(SYSTEM_PKG, SYSTEM_UID, update, true, false)); assertFalse(mHelper.getNotificationChannel(SYSTEM_PKG, SYSTEM_UID, "A", false) .canBypassDnd()); Loading @@ -2122,7 +2129,7 @@ public class PreferencesHelperTest extends UiServiceTestCase { NotificationChannel update = new NotificationChannel("A", "a", IMPORTANCE_LOW); update.setBypassDnd(true); mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, update, true, true); assertTrue(mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, update, true, true)); assertTrue(mHelper.getNotificationChannel(PKG_N_MR1, UID_N_MR1, "A", false).canBypassDnd()); } Loading Loading
services/core/java/com/android/server/notification/NotificationManagerService.java +14 −7 Original line number Diff line number Diff line Loading @@ -2636,19 +2636,26 @@ public class NotificationManagerService extends SystemService { ParceledListSlice channelsList) { List<NotificationChannel> channels = channelsList.getList(); final int channelsSize = channels.size(); boolean needsPolicyFileChange = false; for (int i = 0; i < channelsSize; i++) { final NotificationChannel channel = channels.get(i); Preconditions.checkNotNull(channel, "channel in list is null"); mPreferencesHelper.createNotificationChannel(pkg, uid, channel, true /* fromTargetApp */, mConditionProviders.isPackageOrComponentAllowed( needsPolicyFileChange = mPreferencesHelper.createNotificationChannel(pkg, uid, channel, true /* fromTargetApp */, mConditionProviders.isPackageOrComponentAllowed( pkg, UserHandle.getUserId(uid))); if (needsPolicyFileChange) { mListeners.notifyNotificationChannelChanged(pkg, UserHandle.getUserHandleForUid(uid), mPreferencesHelper.getNotificationChannel(pkg, uid, channel.getId(), false), mPreferencesHelper.getNotificationChannel(pkg, uid, channel.getId(), false), NOTIFICATION_CHANNEL_OR_GROUP_ADDED); } } if (needsPolicyFileChange) { handleSavePolicyFile(); } } @Override public void createNotificationChannels(String pkg, Loading
services/core/java/com/android/server/notification/PreferencesHelper.java +31 −10 Original line number Diff line number Diff line Loading @@ -615,12 +615,13 @@ public class PreferencesHelper implements RankingConfig { } @Override public void createNotificationChannel(String pkg, int uid, NotificationChannel channel, public boolean createNotificationChannel(String pkg, int uid, NotificationChannel channel, boolean fromTargetApp, boolean hasDndAccess) { Preconditions.checkNotNull(pkg); Preconditions.checkNotNull(channel); Preconditions.checkNotNull(channel.getId()); Preconditions.checkArgument(!TextUtils.isEmpty(channel.getName())); boolean needsPolicyFileChange = false; synchronized (mPackagePreferences) { PackagePreferences r = getOrCreatePackagePreferencesLocked(pkg, uid); if (r == null) { Loading @@ -637,17 +638,28 @@ public class PreferencesHelper implements RankingConfig { if (existing != null && fromTargetApp) { if (existing.isDeleted()) { existing.setDeleted(false); needsPolicyFileChange = true; // log a resurrected channel as if it's new again MetricsLogger.action(getChannelLog(channel, pkg).setType( com.android.internal.logging.nano.MetricsProto.MetricsEvent.TYPE_OPEN)); } if (!Objects.equals(channel.getName().toString(), existing.getName().toString())) { existing.setName(channel.getName().toString()); needsPolicyFileChange = true; } if (!Objects.equals(channel.getDescription(), existing.getDescription())) { existing.setDescription(channel.getDescription()); needsPolicyFileChange = true; } if (channel.isBlockableSystem() != existing.isBlockableSystem()) { existing.setBlockableSystem(channel.isBlockableSystem()); if (existing.getGroup() == null) { needsPolicyFileChange = true; } if (channel.getGroup() != null && existing.getGroup() == null) { existing.setGroup(channel.getGroup()); needsPolicyFileChange = true; } // Apps are allowed to downgrade channel importance if the user has not changed any Loading @@ -656,23 +668,30 @@ public class PreferencesHelper implements RankingConfig { if (existing.getUserLockedFields() == 0 && channel.getImportance() < existing.getImportance()) { existing.setImportance(channel.getImportance()); needsPolicyFileChange = true; } // system apps and dnd access apps can bypass dnd if the user hasn't changed any // fields on the channel yet if (existing.getUserLockedFields() == 0 && hasDndAccess) { boolean bypassDnd = channel.canBypassDnd(); if (bypassDnd != existing.canBypassDnd()) { existing.setBypassDnd(bypassDnd); needsPolicyFileChange = true; if (bypassDnd != mAreChannelsBypassingDnd || previousExistingImportance != existing.getImportance()) { updateChannelsBypassingDnd(mContext.getUserId()); } } } updateConfig(); return; return needsPolicyFileChange; } needsPolicyFileChange = true; if (channel.getImportance() < IMPORTANCE_NONE || channel.getImportance() > NotificationManager.IMPORTANCE_MAX) { throw new IllegalArgumentException("Invalid importance level"); Loading Loading @@ -708,6 +727,8 @@ public class PreferencesHelper implements RankingConfig { MetricsLogger.action(getChannelLog(channel, pkg).setType( com.android.internal.logging.nano.MetricsProto.MetricsEvent.TYPE_OPEN)); } return needsPolicyFileChange; } void clearLockedFieldsLocked(NotificationChannel channel) { Loading
services/core/java/com/android/server/notification/RankingConfig.java +1 −1 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ public interface RankingConfig { boolean fromTargetApp); ParceledListSlice<NotificationChannelGroup> getNotificationChannelGroups(String pkg, int uid, boolean includeDeleted, boolean includeNonGrouped, boolean includeEmpty); void createNotificationChannel(String pkg, int uid, NotificationChannel channel, boolean createNotificationChannel(String pkg, int uid, NotificationChannel channel, boolean fromTargetApp, boolean hasDndAccess); void updateNotificationChannel(String pkg, int uid, NotificationChannel channel, boolean fromUser); NotificationChannel getNotificationChannel(String pkg, int uid, String channelId, boolean includeDeleted); Loading
services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java +4 −1 Original line number Diff line number Diff line Loading @@ -1659,11 +1659,14 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { when(mPreferencesHelper.getNotificationChannel(eq(PKG), anyInt(), eq(channel2.getId()), anyBoolean())) .thenReturn(channel2); when(mPreferencesHelper.createNotificationChannel(eq(PKG), anyInt(), eq(channel2), anyBoolean(), anyBoolean())) .thenReturn(true); reset(mListeners); mBinderService.createNotificationChannels(PKG, new ParceledListSlice(Arrays.asList(mTestNotificationChannel, channel2))); verify(mListeners, times(1)).notifyNotificationChannelChanged(eq(PKG), verify(mListeners, never()).notifyNotificationChannelChanged(eq(PKG), eq(Process.myUserHandle()), eq(mTestNotificationChannel), eq(NotificationListenerService.NOTIFICATION_CHANNEL_OR_GROUP_ADDED)); verify(mListeners, times(1)).notifyNotificationChannelChanged(eq(PKG), Loading
services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java +34 −27 Original line number Diff line number Diff line Loading @@ -262,13 +262,13 @@ public class PreferencesHelperTest extends UiServiceTestCase { int uid0 = 1001; setUpPackageWithUid(package0, uid0); NotificationChannel channel0 = new NotificationChannel("id0", "name0", IMPORTANCE_HIGH); mHelper.createNotificationChannel(package0, uid0, channel0, true, false); assertTrue(mHelper.createNotificationChannel(package0, uid0, channel0, true, false)); String package10 = "test.package.user10"; int uid10 = 1001001; setUpPackageWithUid(package10, uid10); NotificationChannel channel10 = new NotificationChannel("id10", "name10", IMPORTANCE_HIGH); mHelper.createNotificationChannel(package10, uid10, channel10, true, false); assertTrue(mHelper.createNotificationChannel(package10, uid10, channel10, true, false)); ByteArrayOutputStream baos = writeXmlAndPurge(package10, uid10, true, 10); Loading @@ -293,7 +293,7 @@ public class PreferencesHelperTest extends UiServiceTestCase { int uid0 = 1001; setUpPackageWithUid(package0, uid0); NotificationChannel channel0 = new NotificationChannel("id0", "name0", IMPORTANCE_HIGH); mHelper.createNotificationChannel(package0, uid0, channel0, true, false); assertTrue(mHelper.createNotificationChannel(package0, uid0, channel0, true, false)); ByteArrayOutputStream baos = writeXmlAndPurge(package0, uid0, true, 0); Loading Loading @@ -334,8 +334,8 @@ public class PreferencesHelperTest extends UiServiceTestCase { mHelper.createNotificationChannelGroup(PKG_N_MR1, UID_N_MR1, ncg, true); mHelper.createNotificationChannelGroup(PKG_N_MR1, UID_N_MR1, ncg2, true); mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, channel1, true, false); mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, channel2, false, false); assertTrue(mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, channel1, true, false)); assertTrue(mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, channel2, false, false)); mHelper.setShowBadge(PKG_N_MR1, UID_N_MR1, true); mHelper.setAppImportanceLocked(PKG_N_MR1, UID_N_MR1); Loading Loading @@ -716,8 +716,8 @@ public class PreferencesHelperTest extends UiServiceTestCase { public void testCreateChannel_blocked() throws Exception { mHelper.setImportance(PKG_N_MR1, UID_N_MR1, IMPORTANCE_NONE); mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, new NotificationChannel("bananas", "bananas", IMPORTANCE_LOW), true, false); assertTrue(mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, new NotificationChannel("bananas", "bananas", IMPORTANCE_LOW), true, false)); } @Test Loading Loading @@ -746,10 +746,10 @@ public class PreferencesHelperTest extends UiServiceTestCase { } catch (IllegalArgumentException e) { // yay } mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, new NotificationChannel("bananas", "bananas", IMPORTANCE_NONE), true, false); mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, new NotificationChannel("bananas", "bananas", IMPORTANCE_MAX), true, false); assertTrue(mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, new NotificationChannel("bananas", "bananas", IMPORTANCE_NONE), true, false)); assertFalse(mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, new NotificationChannel("bananas", "bananas", IMPORTANCE_MAX), true, false)); } Loading @@ -763,7 +763,7 @@ public class PreferencesHelperTest extends UiServiceTestCase { channel.setBypassDnd(true); channel.setLockscreenVisibility(Notification.VISIBILITY_SECRET); mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, channel, false, false); assertTrue(mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, channel, false, false)); // same id, try to update all fields final NotificationChannel channel2 = Loading @@ -776,7 +776,8 @@ public class PreferencesHelperTest extends UiServiceTestCase { mHelper.updateNotificationChannel(PKG_N_MR1, UID_N_MR1, channel2, true); // all fields should be changed assertEquals(channel2, mHelper.getNotificationChannel(PKG_N_MR1, UID_N_MR1, channel.getId(), false)); assertEquals(channel2, mHelper.getNotificationChannel(PKG_N_MR1, UID_N_MR1, channel.getId(), false)); verify(mHandler, times(1)).requestSort(); } Loading Loading @@ -894,7 +895,7 @@ public class PreferencesHelperTest extends UiServiceTestCase { } channel.lockFields(lockMask); mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, channel, true, false); assertTrue(mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, channel, true, false)); NotificationChannel savedChannel = mHelper.getNotificationChannel(PKG_N_MR1, UID_N_MR1, channel.getId(), false); Loading Loading @@ -1469,13 +1470,18 @@ public class PreferencesHelperTest extends UiServiceTestCase { new NotificationChannel("id2", "name2", IMPORTANCE_LOW); channel.setVibrationPattern(vibration); mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, channel, true, false); assertTrue(mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, channel, true, false)); NotificationChannel newChannel = new NotificationChannel( channel.getId(), channel.getName(), NotificationManager.IMPORTANCE_HIGH); newChannel.setVibrationPattern(new long[]{100}); newChannel.setAllowBubbles(!channel.canBubble()); newChannel.setLightColor(Color.BLUE); newChannel.setSound(Uri.EMPTY, null); newChannel.setShowBadge(!channel.canShowBadge()); mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, newChannel, true, false); assertFalse(mHelper.createNotificationChannel( PKG_N_MR1, UID_N_MR1, newChannel, true, false)); // Old settings not overridden compareChannels(channel, Loading Loading @@ -1588,16 +1594,17 @@ public class PreferencesHelperTest extends UiServiceTestCase { new NotificationChannel("id1", "name1", NotificationManager.IMPORTANCE_HIGH); mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, channel1, true, false); mHelper.onPackagesChanged(true, UserHandle.USER_SYSTEM, new String[]{PKG_N_MR1}, new int[]{ UID_N_MR1}); assertTrue(mHelper.onPackagesChanged(true, UserHandle.USER_SYSTEM, new String[]{PKG_N_MR1}, new int[]{UID_N_MR1})); assertEquals(0, mHelper.getNotificationChannels(PKG_N_MR1, UID_N_MR1, true).getList().size()); assertEquals(0, mHelper.getNotificationChannels( PKG_N_MR1, UID_N_MR1, true).getList().size()); // Not deleted mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, channel1, true, false); mHelper.onPackagesChanged(false, UserHandle.USER_SYSTEM, new String[]{PKG_N_MR1}, new int[]{ UID_N_MR1}); assertFalse(mHelper.onPackagesChanged(false, UserHandle.USER_SYSTEM, new String[]{PKG_N_MR1}, new int[]{UID_N_MR1})); assertEquals(2, mHelper.getNotificationChannels(PKG_N_MR1, UID_N_MR1, false).getList().size()); } Loading Loading @@ -1825,13 +1832,13 @@ public class PreferencesHelperTest extends UiServiceTestCase { @Test public void testCreateChannel_updateName() { NotificationChannel nc = new NotificationChannel("id", "hello", IMPORTANCE_DEFAULT); mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, nc, true, false); assertTrue(mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, nc, true, false)); NotificationChannel actual = mHelper.getNotificationChannel(PKG_N_MR1, UID_N_MR1, "id", false); assertEquals("hello", actual.getName()); nc = new NotificationChannel("id", "goodbye", IMPORTANCE_HIGH); mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, nc, true, false); assertTrue(mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, nc, true, false)); actual = mHelper.getNotificationChannel(PKG_N_MR1, UID_N_MR1, "id", false); assertEquals("goodbye", actual.getName()); Loading @@ -1845,14 +1852,14 @@ public class PreferencesHelperTest extends UiServiceTestCase { NotificationChannelGroup group = new NotificationChannelGroup("group", ""); mHelper.createNotificationChannelGroup(PKG_N_MR1, UID_N_MR1, group, true); NotificationChannel nc = new NotificationChannel("id", "hello", IMPORTANCE_DEFAULT); mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, nc, true, false); assertTrue(mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, nc, true, false)); NotificationChannel actual = mHelper.getNotificationChannel(PKG_N_MR1, UID_N_MR1, "id", false); assertNull(actual.getGroup()); nc = new NotificationChannel("id", "hello", IMPORTANCE_HIGH); nc.setGroup(group.getId()); mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, nc, true, false); assertTrue(mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, nc, true, false)); actual = mHelper.getNotificationChannel(PKG_N_MR1, UID_N_MR1, "id", false); assertNotNull(actual.getGroup()); Loading Loading @@ -2109,7 +2116,7 @@ public class PreferencesHelperTest extends UiServiceTestCase { NotificationChannel update = new NotificationChannel("A", "a", IMPORTANCE_LOW); update.setBypassDnd(true); mHelper.createNotificationChannel(SYSTEM_PKG, SYSTEM_UID, update, true, false); assertFalse(mHelper.createNotificationChannel(SYSTEM_PKG, SYSTEM_UID, update, true, false)); assertFalse(mHelper.getNotificationChannel(SYSTEM_PKG, SYSTEM_UID, "A", false) .canBypassDnd()); Loading @@ -2122,7 +2129,7 @@ public class PreferencesHelperTest extends UiServiceTestCase { NotificationChannel update = new NotificationChannel("A", "a", IMPORTANCE_LOW); update.setBypassDnd(true); mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, update, true, true); assertTrue(mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, update, true, true)); assertTrue(mHelper.getNotificationChannel(PKG_N_MR1, UID_N_MR1, "A", false).canBypassDnd()); } Loading