Merge "Restrict alarm broadcast" into rvc-dev am: a432e5ca8e
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14102043 Change-Id: Ia07231a472e1cd799baf562b3d90682fe74212d3
This commit is contained in:
@@ -6864,6 +6864,7 @@ public class NotificationManagerService extends SystemService {
|
|||||||
final PendingIntent pi = PendingIntent.getBroadcast(getContext(),
|
final PendingIntent pi = PendingIntent.getBroadcast(getContext(),
|
||||||
REQUEST_CODE_TIMEOUT,
|
REQUEST_CODE_TIMEOUT,
|
||||||
new Intent(ACTION_NOTIFICATION_TIMEOUT)
|
new Intent(ACTION_NOTIFICATION_TIMEOUT)
|
||||||
|
.setPackage(PackageManagerService.PLATFORM_PACKAGE_NAME)
|
||||||
.setData(new Uri.Builder().scheme(SCHEME_TIMEOUT)
|
.setData(new Uri.Builder().scheme(SCHEME_TIMEOUT)
|
||||||
.appendPath(record.getKey()).build())
|
.appendPath(record.getKey()).build())
|
||||||
.addFlags(Intent.FLAG_RECEIVER_FOREGROUND)
|
.addFlags(Intent.FLAG_RECEIVER_FOREGROUND)
|
||||||
|
|||||||
@@ -84,6 +84,7 @@ import static org.mockito.Mockito.when;
|
|||||||
|
|
||||||
import android.app.ActivityManager;
|
import android.app.ActivityManager;
|
||||||
import android.app.ActivityManagerInternal;
|
import android.app.ActivityManagerInternal;
|
||||||
|
import android.app.AlarmManager;
|
||||||
import android.app.AppOpsManager;
|
import android.app.AppOpsManager;
|
||||||
import android.app.AutomaticZenRule;
|
import android.app.AutomaticZenRule;
|
||||||
import android.app.IActivityManager;
|
import android.app.IActivityManager;
|
||||||
@@ -171,6 +172,7 @@ import com.android.server.lights.LightsManager;
|
|||||||
import com.android.server.lights.LogicalLight;
|
import com.android.server.lights.LogicalLight;
|
||||||
import com.android.server.notification.NotificationManagerService.NotificationAssistants;
|
import com.android.server.notification.NotificationManagerService.NotificationAssistants;
|
||||||
import com.android.server.notification.NotificationManagerService.NotificationListeners;
|
import com.android.server.notification.NotificationManagerService.NotificationListeners;
|
||||||
|
import com.android.server.pm.PackageManagerService;
|
||||||
import com.android.server.statusbar.StatusBarManagerInternal;
|
import com.android.server.statusbar.StatusBarManagerInternal;
|
||||||
import com.android.server.uri.UriGrantsManagerInternal;
|
import com.android.server.uri.UriGrantsManagerInternal;
|
||||||
import com.android.server.wm.ActivityTaskManagerInternal;
|
import com.android.server.wm.ActivityTaskManagerInternal;
|
||||||
@@ -282,6 +284,8 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
|
|||||||
NotificationHistoryManager mHistoryManager;
|
NotificationHistoryManager mHistoryManager;
|
||||||
@Mock
|
@Mock
|
||||||
StatsManager mStatsManager;
|
StatsManager mStatsManager;
|
||||||
|
@Mock
|
||||||
|
AlarmManager mAlarmManager;
|
||||||
NotificationRecordLoggerFake mNotificationRecordLogger = new NotificationRecordLoggerFake();
|
NotificationRecordLoggerFake mNotificationRecordLogger = new NotificationRecordLoggerFake();
|
||||||
private InstanceIdSequence mNotificationInstanceIdSequence = new InstanceIdSequenceFake(
|
private InstanceIdSequence mNotificationInstanceIdSequence = new InstanceIdSequenceFake(
|
||||||
1 << 30);
|
1 << 30);
|
||||||
@@ -423,6 +427,8 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
|
|||||||
LocalServices.addService(DeviceIdleInternal.class, deviceIdleInternal);
|
LocalServices.addService(DeviceIdleInternal.class, deviceIdleInternal);
|
||||||
LocalServices.removeServiceForTest(ActivityManagerInternal.class);
|
LocalServices.removeServiceForTest(ActivityManagerInternal.class);
|
||||||
LocalServices.addService(ActivityManagerInternal.class, activityManagerInternal);
|
LocalServices.addService(ActivityManagerInternal.class, activityManagerInternal);
|
||||||
|
mContext.addMockSystemService(Context.ALARM_SERVICE, mAlarmManager);
|
||||||
|
|
||||||
|
|
||||||
doNothing().when(mContext).sendBroadcastAsUser(any(), any(), any());
|
doNothing().when(mContext).sendBroadcastAsUser(any(), any(), any());
|
||||||
|
|
||||||
@@ -831,6 +837,26 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
|
|||||||
return nrSummary;
|
return nrSummary;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testLimitTimeOutBroadcast() {
|
||||||
|
NotificationChannel channel = new NotificationChannel("id", "name",
|
||||||
|
NotificationManager.IMPORTANCE_HIGH);
|
||||||
|
Notification.Builder nb = new Notification.Builder(mContext, channel.getId())
|
||||||
|
.setContentTitle("foo")
|
||||||
|
.setSmallIcon(android.R.drawable.sym_def_app_icon)
|
||||||
|
.setTimeoutAfter(1);
|
||||||
|
|
||||||
|
StatusBarNotification sbn = new StatusBarNotification(PKG, PKG, 8, "tag", mUid, 0,
|
||||||
|
nb.build(), UserHandle.getUserHandleForUid(mUid), null, 0);
|
||||||
|
NotificationRecord r = new NotificationRecord(mContext, sbn, channel);
|
||||||
|
|
||||||
|
mService.scheduleTimeoutLocked(r);
|
||||||
|
ArgumentCaptor<PendingIntent> captor = ArgumentCaptor.forClass(PendingIntent.class);
|
||||||
|
verify(mAlarmManager).setExactAndAllowWhileIdle(anyInt(), anyLong(), captor.capture());
|
||||||
|
assertEquals(PackageManagerService.PLATFORM_PACKAGE_NAME,
|
||||||
|
captor.getValue().getIntent().getPackage());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDefaultAssistant_overrideDefault() {
|
public void testDefaultAssistant_overrideDefault() {
|
||||||
final int userId = 0;
|
final int userId = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user