|
|
|
|
@@ -4910,6 +4910,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
|
|
|
|
|
assertEquals(0, mService.mToastQueue.size());
|
|
|
|
|
mService.isSystemUid = false;
|
|
|
|
|
setToastRateIsWithinQuota(true);
|
|
|
|
|
setIfPackageHasPermissionToAvoidToastRateLimiting(testPackage, false);
|
|
|
|
|
|
|
|
|
|
// package is not suspended
|
|
|
|
|
when(mPackageManager.isPackageSuspendedForUser(testPackage, UserHandle.getUserId(mUid)))
|
|
|
|
|
@@ -4933,6 +4934,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
|
|
|
|
|
assertEquals(0, mService.mToastQueue.size());
|
|
|
|
|
mService.isSystemUid = false;
|
|
|
|
|
setToastRateIsWithinQuota(true);
|
|
|
|
|
setIfPackageHasPermissionToAvoidToastRateLimiting(testPackage, false);
|
|
|
|
|
|
|
|
|
|
// package is not suspended
|
|
|
|
|
when(mPackageManager.isPackageSuspendedForUser(testPackage, UserHandle.getUserId(mUid)))
|
|
|
|
|
@@ -4952,6 +4954,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
|
|
|
|
|
assertEquals(0, mService.mToastQueue.size());
|
|
|
|
|
mService.isSystemUid = false;
|
|
|
|
|
setToastRateIsWithinQuota(true);
|
|
|
|
|
setIfPackageHasPermissionToAvoidToastRateLimiting(testPackage, false);
|
|
|
|
|
|
|
|
|
|
// package is not suspended
|
|
|
|
|
when(mPackageManager.isPackageSuspendedForUser(testPackage, UserHandle.getUserId(mUid)))
|
|
|
|
|
@@ -4974,11 +4977,12 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testToastRateLimiterCanPreventsShowCallForCustomToast() throws Exception {
|
|
|
|
|
public void testToastRateLimiterCanPreventShowCallForCustomToast() throws Exception {
|
|
|
|
|
final String testPackage = "testPackageName";
|
|
|
|
|
assertEquals(0, mService.mToastQueue.size());
|
|
|
|
|
mService.isSystemUid = false;
|
|
|
|
|
setToastRateIsWithinQuota(false); // rate limit reached
|
|
|
|
|
setIfPackageHasPermissionToAvoidToastRateLimiting(testPackage, false);
|
|
|
|
|
|
|
|
|
|
// package is not suspended
|
|
|
|
|
when(mPackageManager.isPackageSuspendedForUser(testPackage, UserHandle.getUserId(mUid)))
|
|
|
|
|
@@ -4994,6 +4998,29 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
|
|
|
|
|
verify(callback, times(0)).show(any());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testCustomToastRateLimiterAllowsLimitAvoidanceWithPermission() throws Exception {
|
|
|
|
|
final String testPackage = "testPackageName";
|
|
|
|
|
assertEquals(0, mService.mToastQueue.size());
|
|
|
|
|
mService.isSystemUid = false;
|
|
|
|
|
setToastRateIsWithinQuota(false); // rate limit reached
|
|
|
|
|
// Avoids rate limiting.
|
|
|
|
|
setIfPackageHasPermissionToAvoidToastRateLimiting(testPackage, true);
|
|
|
|
|
|
|
|
|
|
// package is not suspended
|
|
|
|
|
when(mPackageManager.isPackageSuspendedForUser(testPackage, UserHandle.getUserId(mUid)))
|
|
|
|
|
.thenReturn(false);
|
|
|
|
|
|
|
|
|
|
setAppInForegroundForToasts(mUid, true);
|
|
|
|
|
|
|
|
|
|
Binder token = new Binder();
|
|
|
|
|
ITransientNotification callback = mock(ITransientNotification.class);
|
|
|
|
|
INotificationManager nmService = (INotificationManager) mService.mService;
|
|
|
|
|
|
|
|
|
|
nmService.enqueueToast(testPackage, token, callback, 2000, 0);
|
|
|
|
|
verify(callback).show(any());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testCustomToastPostedWhileInForeground_blockedIfAppGoesToBackground()
|
|
|
|
|
throws Exception {
|
|
|
|
|
@@ -5001,6 +5028,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
|
|
|
|
|
assertEquals(0, mService.mToastQueue.size());
|
|
|
|
|
mService.isSystemUid = false;
|
|
|
|
|
setToastRateIsWithinQuota(true);
|
|
|
|
|
setIfPackageHasPermissionToAvoidToastRateLimiting(testPackage, false);
|
|
|
|
|
|
|
|
|
|
// package is not suspended
|
|
|
|
|
when(mPackageManager.isPackageSuspendedForUser(testPackage, UserHandle.getUserId(mUid)))
|
|
|
|
|
@@ -5034,6 +5062,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
|
|
|
|
|
assertEquals(0, mService.mToastQueue.size());
|
|
|
|
|
mService.isSystemUid = false;
|
|
|
|
|
setToastRateIsWithinQuota(true);
|
|
|
|
|
setIfPackageHasPermissionToAvoidToastRateLimiting(testPackage, false);
|
|
|
|
|
|
|
|
|
|
// package is not suspended
|
|
|
|
|
when(mPackageManager.isPackageSuspendedForUser(testPackage, UserHandle.getUserId(mUid)))
|
|
|
|
|
@@ -5053,6 +5082,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
|
|
|
|
|
assertEquals(0, mService.mToastQueue.size());
|
|
|
|
|
mService.isSystemUid = false;
|
|
|
|
|
setToastRateIsWithinQuota(true);
|
|
|
|
|
setIfPackageHasPermissionToAvoidToastRateLimiting(testPackage, false);
|
|
|
|
|
|
|
|
|
|
// package is not suspended
|
|
|
|
|
when(mPackageManager.isPackageSuspendedForUser(testPackage, UserHandle.getUserId(mUid)))
|
|
|
|
|
@@ -5072,6 +5102,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
|
|
|
|
|
assertEquals(0, mService.mToastQueue.size());
|
|
|
|
|
mService.isSystemUid = false;
|
|
|
|
|
setToastRateIsWithinQuota(true);
|
|
|
|
|
setIfPackageHasPermissionToAvoidToastRateLimiting(testPackage, false);
|
|
|
|
|
|
|
|
|
|
// package is not suspended
|
|
|
|
|
when(mPackageManager.isPackageSuspendedForUser(testPackage, UserHandle.getUserId(mUid)))
|
|
|
|
|
@@ -5095,11 +5126,12 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testToastRateLimiterCanPreventsShowCallForTextToast() throws Exception {
|
|
|
|
|
public void testToastRateLimiterCanPreventShowCallForTextToast() throws Exception {
|
|
|
|
|
final String testPackage = "testPackageName";
|
|
|
|
|
assertEquals(0, mService.mToastQueue.size());
|
|
|
|
|
mService.isSystemUid = false;
|
|
|
|
|
setToastRateIsWithinQuota(false); // rate limit reached
|
|
|
|
|
setIfPackageHasPermissionToAvoidToastRateLimiting(testPackage, false);
|
|
|
|
|
|
|
|
|
|
// package is not suspended
|
|
|
|
|
when(mPackageManager.isPackageSuspendedForUser(testPackage, UserHandle.getUserId(mUid)))
|
|
|
|
|
@@ -5113,6 +5145,25 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
|
|
|
|
|
.showToast(anyInt(), any(), any(), any(), any(), anyInt(), any());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testTextToastRateLimiterAllowsLimitAvoidanceWithPermission() throws Exception {
|
|
|
|
|
final String testPackage = "testPackageName";
|
|
|
|
|
assertEquals(0, mService.mToastQueue.size());
|
|
|
|
|
mService.isSystemUid = false;
|
|
|
|
|
setToastRateIsWithinQuota(false); // rate limit reached
|
|
|
|
|
setIfPackageHasPermissionToAvoidToastRateLimiting(testPackage, true);
|
|
|
|
|
|
|
|
|
|
// package is not suspended
|
|
|
|
|
when(mPackageManager.isPackageSuspendedForUser(testPackage, UserHandle.getUserId(mUid)))
|
|
|
|
|
.thenReturn(false);
|
|
|
|
|
|
|
|
|
|
Binder token = new Binder();
|
|
|
|
|
INotificationManager nmService = (INotificationManager) mService.mService;
|
|
|
|
|
|
|
|
|
|
nmService.enqueueTextToast(testPackage, token, "Text", 2000, 0, null);
|
|
|
|
|
verify(mStatusBar).showToast(anyInt(), any(), any(), any(), any(), anyInt(), any());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void backgroundSystemCustomToast_callsSetProcessImportantAsForegroundForToast() throws
|
|
|
|
|
Exception {
|
|
|
|
|
@@ -5120,6 +5171,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
|
|
|
|
|
assertEquals(0, mService.mToastQueue.size());
|
|
|
|
|
mService.isSystemUid = true;
|
|
|
|
|
setToastRateIsWithinQuota(true);
|
|
|
|
|
setIfPackageHasPermissionToAvoidToastRateLimiting(testPackage, false);
|
|
|
|
|
|
|
|
|
|
// package is not suspended
|
|
|
|
|
when(mPackageManager.isPackageSuspendedForUser(testPackage, UserHandle.getUserId(mUid)))
|
|
|
|
|
@@ -5145,6 +5197,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
|
|
|
|
|
assertEquals(0, mService.mToastQueue.size());
|
|
|
|
|
mService.isSystemUid = false;
|
|
|
|
|
setToastRateIsWithinQuota(true);
|
|
|
|
|
setIfPackageHasPermissionToAvoidToastRateLimiting(testPackage, false);
|
|
|
|
|
|
|
|
|
|
// package is not suspended
|
|
|
|
|
when(mPackageManager.isPackageSuspendedForUser(testPackage, UserHandle.getUserId(mUid)))
|
|
|
|
|
@@ -5166,6 +5219,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
|
|
|
|
|
assertEquals(0, mService.mToastQueue.size());
|
|
|
|
|
mService.isSystemUid = false;
|
|
|
|
|
setToastRateIsWithinQuota(true);
|
|
|
|
|
setIfPackageHasPermissionToAvoidToastRateLimiting(testPackage, false);
|
|
|
|
|
|
|
|
|
|
// package is not suspended
|
|
|
|
|
when(mPackageManager.isPackageSuspendedForUser(testPackage, UserHandle.getUserId(mUid)))
|
|
|
|
|
@@ -5186,6 +5240,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
|
|
|
|
|
assertEquals(0, mService.mToastQueue.size());
|
|
|
|
|
mService.isSystemUid = false;
|
|
|
|
|
setToastRateIsWithinQuota(true);
|
|
|
|
|
setIfPackageHasPermissionToAvoidToastRateLimiting(testPackage, false);
|
|
|
|
|
|
|
|
|
|
// package is not suspended
|
|
|
|
|
when(mPackageManager.isPackageSuspendedForUser(testPackage, UserHandle.getUserId(mUid)))
|
|
|
|
|
@@ -5203,6 +5258,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
|
|
|
|
|
assertEquals(0, mService.mToastQueue.size());
|
|
|
|
|
mService.isSystemUid = false;
|
|
|
|
|
setToastRateIsWithinQuota(true);
|
|
|
|
|
setIfPackageHasPermissionToAvoidToastRateLimiting(testPackage, false);
|
|
|
|
|
|
|
|
|
|
// package is suspended
|
|
|
|
|
when(mPackageManager.isPackageSuspendedForUser(testPackage, UserHandle.getUserId(mUid)))
|
|
|
|
|
@@ -5224,6 +5280,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
|
|
|
|
|
assertEquals(0, mService.mToastQueue.size());
|
|
|
|
|
mService.isSystemUid = false;
|
|
|
|
|
setToastRateIsWithinQuota(true);
|
|
|
|
|
setIfPackageHasPermissionToAvoidToastRateLimiting(testPackage, false);
|
|
|
|
|
|
|
|
|
|
// package is not suspended
|
|
|
|
|
when(mPackageManager.isPackageSuspendedForUser(testPackage, UserHandle.getUserId(mUid)))
|
|
|
|
|
@@ -5247,6 +5304,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
|
|
|
|
|
assertEquals(0, mService.mToastQueue.size());
|
|
|
|
|
mService.isSystemUid = true;
|
|
|
|
|
setToastRateIsWithinQuota(true);
|
|
|
|
|
setIfPackageHasPermissionToAvoidToastRateLimiting(testPackage, false);
|
|
|
|
|
|
|
|
|
|
// package is suspended
|
|
|
|
|
when(mPackageManager.isPackageSuspendedForUser(testPackage, UserHandle.getUserId(mUid)))
|
|
|
|
|
@@ -5270,6 +5328,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
|
|
|
|
|
assertEquals(0, mService.mToastQueue.size());
|
|
|
|
|
mService.isSystemUid = false;
|
|
|
|
|
setToastRateIsWithinQuota(true);
|
|
|
|
|
setIfPackageHasPermissionToAvoidToastRateLimiting(testPackage, false);
|
|
|
|
|
|
|
|
|
|
// package is not suspended
|
|
|
|
|
when(mPackageManager.isPackageSuspendedForUser(testPackage, UserHandle.getUserId(mUid)))
|
|
|
|
|
@@ -5305,6 +5364,13 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
|
|
|
|
|
.thenReturn(isWithinQuota);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void setIfPackageHasPermissionToAvoidToastRateLimiting(
|
|
|
|
|
String pkg, boolean hasPermission) throws Exception {
|
|
|
|
|
when(mPackageManager.checkPermission(android.Manifest.permission.UNLIMITED_TOASTS,
|
|
|
|
|
pkg, UserHandle.getUserId(mUid)))
|
|
|
|
|
.thenReturn(hasPermission ? PERMISSION_GRANTED : PERMISSION_DENIED);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testOnPanelRevealedAndHidden() {
|
|
|
|
|
int items = 5;
|
|
|
|
|
|