Loading apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java +16 −14 Original line number Diff line number Diff line Loading @@ -4891,13 +4891,15 @@ public class AlarmManagerService extends SystemService { filter.addAction(Intent.ACTION_PACKAGE_RESTARTED); filter.addAction(Intent.ACTION_QUERY_PACKAGE_RESTART); filter.addDataScheme(IntentFilter.SCHEME_PACKAGE); getContext().registerReceiver(this, filter); getContext().registerReceiverForAllUsers(this, filter, /* broadcastPermission */ null, /* scheduler */ null); // Register for events related to sdcard installation. IntentFilter sdFilter = new IntentFilter(); sdFilter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE); sdFilter.addAction(Intent.ACTION_USER_STOPPED); sdFilter.addAction(Intent.ACTION_UID_REMOVED); getContext().registerReceiver(this, sdFilter); getContext().registerReceiverForAllUsers(this, sdFilter, /* broadcastPermission */ null, /* scheduler */ null); } @Override Loading @@ -4915,9 +4917,6 @@ public class AlarmManagerService extends SystemService { } } return; case Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE: pkgList = intent.getStringArrayExtra(Intent.EXTRA_CHANGED_PACKAGE_LIST); break; case Intent.ACTION_USER_STOPPED: final int userHandle = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, -1); if (userHandle >= 0) { Loading @@ -4932,6 +4931,18 @@ public class AlarmManagerService extends SystemService { mRemovalHistory.delete(uid); mLastOpScheduleExactAlarm.delete(uid); return; case Intent.ACTION_PACKAGE_ADDED: if (intent.getBooleanExtra(Intent.EXTRA_REPLACING, false)) { final String packageUpdated = intent.getData().getSchemeSpecificPart(); mHandler.obtainMessage( AlarmHandler.CHECK_EXACT_ALARM_PERMISSION_ON_UPDATE, uid, -1, packageUpdated).sendToTarget(); } mHandler.sendEmptyMessage(AlarmHandler.REFRESH_EXACT_ALARM_CANDIDATES); return; case Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE: pkgList = intent.getStringArrayExtra(Intent.EXTRA_CHANGED_PACKAGE_LIST); break; case Intent.ACTION_PACKAGE_REMOVED: if (intent.getBooleanExtra(Intent.EXTRA_REPLACING, false)) { // This package is being updated; don't kill its alarms. Loading @@ -4950,15 +4961,6 @@ public class AlarmManagerService extends SystemService { } } break; case Intent.ACTION_PACKAGE_ADDED: if (intent.getBooleanExtra(Intent.EXTRA_REPLACING, false)) { final String packageUpdated = intent.getData().getSchemeSpecificPart(); mHandler.obtainMessage( AlarmHandler.CHECK_EXACT_ALARM_PERMISSION_ON_UPDATE, uid, -1, packageUpdated).sendToTarget(); } mHandler.sendEmptyMessage(AlarmHandler.REFRESH_EXACT_ALARM_CANDIDATES); return; } if (pkgList != null && (pkgList.length > 0)) { for (String pkg : pkgList) { Loading services/tests/mockingservicestests/src/com/android/server/alarm/AlarmManagerServiceTest.java +2 −2 Original line number Diff line number Diff line Loading @@ -494,9 +494,9 @@ public class AlarmManagerServiceTest { final ArgumentCaptor<AlarmManagerService.UninstallReceiver> packageReceiverCaptor = ArgumentCaptor.forClass(AlarmManagerService.UninstallReceiver.class); verify(mMockContext).registerReceiver(packageReceiverCaptor.capture(), verify(mMockContext).registerReceiverForAllUsers(packageReceiverCaptor.capture(), argThat((filter) -> filter.hasAction(Intent.ACTION_PACKAGE_ADDED) && filter.hasAction(Intent.ACTION_PACKAGE_REMOVED))); && filter.hasAction(Intent.ACTION_PACKAGE_REMOVED)), isNull(), isNull()); mPackageChangesReceiver = packageReceiverCaptor.getValue(); assertEquals(mService.mExactAlarmCandidates, Collections.emptySet()); Loading Loading
apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java +16 −14 Original line number Diff line number Diff line Loading @@ -4891,13 +4891,15 @@ public class AlarmManagerService extends SystemService { filter.addAction(Intent.ACTION_PACKAGE_RESTARTED); filter.addAction(Intent.ACTION_QUERY_PACKAGE_RESTART); filter.addDataScheme(IntentFilter.SCHEME_PACKAGE); getContext().registerReceiver(this, filter); getContext().registerReceiverForAllUsers(this, filter, /* broadcastPermission */ null, /* scheduler */ null); // Register for events related to sdcard installation. IntentFilter sdFilter = new IntentFilter(); sdFilter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE); sdFilter.addAction(Intent.ACTION_USER_STOPPED); sdFilter.addAction(Intent.ACTION_UID_REMOVED); getContext().registerReceiver(this, sdFilter); getContext().registerReceiverForAllUsers(this, sdFilter, /* broadcastPermission */ null, /* scheduler */ null); } @Override Loading @@ -4915,9 +4917,6 @@ public class AlarmManagerService extends SystemService { } } return; case Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE: pkgList = intent.getStringArrayExtra(Intent.EXTRA_CHANGED_PACKAGE_LIST); break; case Intent.ACTION_USER_STOPPED: final int userHandle = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, -1); if (userHandle >= 0) { Loading @@ -4932,6 +4931,18 @@ public class AlarmManagerService extends SystemService { mRemovalHistory.delete(uid); mLastOpScheduleExactAlarm.delete(uid); return; case Intent.ACTION_PACKAGE_ADDED: if (intent.getBooleanExtra(Intent.EXTRA_REPLACING, false)) { final String packageUpdated = intent.getData().getSchemeSpecificPart(); mHandler.obtainMessage( AlarmHandler.CHECK_EXACT_ALARM_PERMISSION_ON_UPDATE, uid, -1, packageUpdated).sendToTarget(); } mHandler.sendEmptyMessage(AlarmHandler.REFRESH_EXACT_ALARM_CANDIDATES); return; case Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE: pkgList = intent.getStringArrayExtra(Intent.EXTRA_CHANGED_PACKAGE_LIST); break; case Intent.ACTION_PACKAGE_REMOVED: if (intent.getBooleanExtra(Intent.EXTRA_REPLACING, false)) { // This package is being updated; don't kill its alarms. Loading @@ -4950,15 +4961,6 @@ public class AlarmManagerService extends SystemService { } } break; case Intent.ACTION_PACKAGE_ADDED: if (intent.getBooleanExtra(Intent.EXTRA_REPLACING, false)) { final String packageUpdated = intent.getData().getSchemeSpecificPart(); mHandler.obtainMessage( AlarmHandler.CHECK_EXACT_ALARM_PERMISSION_ON_UPDATE, uid, -1, packageUpdated).sendToTarget(); } mHandler.sendEmptyMessage(AlarmHandler.REFRESH_EXACT_ALARM_CANDIDATES); return; } if (pkgList != null && (pkgList.length > 0)) { for (String pkg : pkgList) { Loading
services/tests/mockingservicestests/src/com/android/server/alarm/AlarmManagerServiceTest.java +2 −2 Original line number Diff line number Diff line Loading @@ -494,9 +494,9 @@ public class AlarmManagerServiceTest { final ArgumentCaptor<AlarmManagerService.UninstallReceiver> packageReceiverCaptor = ArgumentCaptor.forClass(AlarmManagerService.UninstallReceiver.class); verify(mMockContext).registerReceiver(packageReceiverCaptor.capture(), verify(mMockContext).registerReceiverForAllUsers(packageReceiverCaptor.capture(), argThat((filter) -> filter.hasAction(Intent.ACTION_PACKAGE_ADDED) && filter.hasAction(Intent.ACTION_PACKAGE_REMOVED))); && filter.hasAction(Intent.ACTION_PACKAGE_REMOVED)), isNull(), isNull()); mPackageChangesReceiver = packageReceiverCaptor.getValue(); assertEquals(mService.mExactAlarmCandidates, Collections.emptySet()); Loading