Merge "Delay sending notif block state broadcast"
This commit is contained in:
committed by
Android (Google) Code Review
commit
9639159a6b
@@ -2657,16 +2657,20 @@ public class NotificationManagerService extends SystemService {
|
||||
}
|
||||
|
||||
private void sendAppBlockStateChangedBroadcast(String pkg, int uid, boolean blocked) {
|
||||
try {
|
||||
getContext().sendBroadcastAsUser(
|
||||
new Intent(ACTION_APP_BLOCK_STATE_CHANGED)
|
||||
.putExtra(NotificationManager.EXTRA_BLOCKED_STATE, blocked)
|
||||
.addFlags(Intent.FLAG_RECEIVER_FOREGROUND)
|
||||
.setPackage(pkg),
|
||||
UserHandle.of(UserHandle.getUserId(uid)), null);
|
||||
} catch (SecurityException e) {
|
||||
Slog.w(TAG, "Can't notify app about app block change", e);
|
||||
}
|
||||
// From Android T, revoking the notification permission will cause the app to be killed.
|
||||
// delay this broadcast so it doesn't race with that process death
|
||||
mHandler.postDelayed(() -> {
|
||||
try {
|
||||
getContext().sendBroadcastAsUser(
|
||||
new Intent(ACTION_APP_BLOCK_STATE_CHANGED)
|
||||
.putExtra(NotificationManager.EXTRA_BLOCKED_STATE, blocked)
|
||||
.addFlags(Intent.FLAG_RECEIVER_FOREGROUND)
|
||||
.setPackage(pkg),
|
||||
UserHandle.of(UserHandle.getUserId(uid)), null);
|
||||
} catch (SecurityException e) {
|
||||
Slog.w(TAG, "Can't notify app about app block change", e);
|
||||
}
|
||||
}, 500);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -2701,6 +2701,8 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
|
||||
|
||||
// should trigger a broadcast
|
||||
mBinderService.setNotificationsEnabledForPackage(PKG, 0, true);
|
||||
Thread.sleep(500);
|
||||
waitForIdle();
|
||||
ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
|
||||
verify(mContext, times(1)).sendBroadcastAsUser(captor.capture(), any(), eq(null));
|
||||
|
||||
@@ -2728,6 +2730,8 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
|
||||
|
||||
// should trigger a broadcast
|
||||
mBinderService.setNotificationsEnabledForPackage(PKG, 0, true);
|
||||
Thread.sleep(500);
|
||||
waitForIdle();
|
||||
ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
|
||||
verify(mContext, times(1)).sendBroadcastAsUser(captor.capture(), any(), eq(null));
|
||||
|
||||
|
||||
@@ -601,6 +601,8 @@ public class NotificationPermissionMigrationTest extends UiServiceTestCase {
|
||||
when(mAppOpsManager.checkOpNoThrow(anyInt(), eq(mUid), eq(PKG))).thenReturn(MODE_IGNORED);
|
||||
|
||||
mService.mAppOpsCallback.opChanged(0, mUid, PKG);
|
||||
Thread.sleep(500);
|
||||
waitForIdle();
|
||||
|
||||
ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
|
||||
verify(mContext, times(1)).sendBroadcastAsUser(captor.capture(), any(), eq(null));
|
||||
@@ -616,6 +618,8 @@ public class NotificationPermissionMigrationTest extends UiServiceTestCase {
|
||||
when(mAppOpsManager.checkOpNoThrow(anyInt(), eq(mUid), eq(PKG))).thenReturn(MODE_ALLOWED);
|
||||
|
||||
mService.mAppOpsCallback.opChanged(0, mUid, PKG);
|
||||
Thread.sleep(500);
|
||||
waitForIdle();
|
||||
|
||||
ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
|
||||
verify(mContext, times(1)).sendBroadcastAsUser(captor.capture(), any(), eq(null));
|
||||
|
||||
Reference in New Issue
Block a user