diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginManagerImpl.java b/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginManagerImpl.java index 7539f995dab4..851ea6558697 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginManagerImpl.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginManagerImpl.java @@ -137,7 +137,8 @@ public class PluginManagerImpl extends BroadcastReceiver implements PluginManage filter.addAction(PLUGIN_CHANGED); filter.addAction(DISABLE_PLUGIN); filter.addDataScheme("package"); - mContext.registerReceiver(this, filter, PluginActionManager.PLUGIN_PERMISSION, null); + mContext.registerReceiver(this, filter, PluginActionManager.PLUGIN_PERMISSION, null, + Context.RECEIVER_EXPORTED_UNAUDITED); filter = new IntentFilter(Intent.ACTION_USER_UNLOCKED); mContext.registerReceiver(this, filter); } diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardEsimArea.java b/packages/SystemUI/src/com/android/keyguard/KeyguardEsimArea.java index 26c227dc8929..8bcb7c9e29c2 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardEsimArea.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardEsimArea.java @@ -91,7 +91,8 @@ class KeyguardEsimArea extends Button implements View.OnClickListener { protected void onAttachedToWindow() { super.onAttachedToWindow(); mContext.registerReceiver(mReceiver, new IntentFilter(ACTION_DISABLE_ESIM), - PERMISSION_SELF, null /* scheduler */); + PERMISSION_SELF, null /* scheduler */, + Context.RECEIVER_EXPORTED_UNAUDITED); } public static boolean isEsimLocked(Context context, int subId) { diff --git a/packages/SystemUI/src/com/android/systemui/SliceBroadcastRelayHandler.java b/packages/SystemUI/src/com/android/systemui/SliceBroadcastRelayHandler.java index d7da63b9e262..1f2de4cfc346 100644 --- a/packages/SystemUI/src/com/android/systemui/SliceBroadcastRelayHandler.java +++ b/packages/SystemUI/src/com/android/systemui/SliceBroadcastRelayHandler.java @@ -112,7 +112,8 @@ public class SliceBroadcastRelayHandler extends CoreStartable { public void register(Context context, ComponentName receiver, IntentFilter filter) { mReceivers.add(receiver); - context.registerReceiver(this, filter); + context.registerReceiver(this, filter, + Context.RECEIVER_EXPORTED_UNAUDITED); } public void unregister(Context context) { diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java index 1ac9016a1ee8..2b12f67acd5b 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java @@ -518,7 +518,7 @@ public class AuthController extends CoreStartable implements CommandQueue.Callba IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); - context.registerReceiver(mBroadcastReceiver, filter); + context.registerReceiver(mBroadcastReceiver, filter, Context.RECEIVER_EXPORTED_UNAUDITED); mSensorPrivacyManager = context.getSystemService(SensorPrivacyManager.class); } diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java index d20844143ad6..6581490030dc 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java @@ -539,7 +539,8 @@ public class UdfpsController implements DozeReceiver { final IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); - context.registerReceiver(mBroadcastReceiver, filter); + context.registerReceiver(mBroadcastReceiver, filter, + Context.RECEIVER_EXPORTED_UNAUDITED); udfpsHapticsSimulator.setUdfpsController(this); } diff --git a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebug.java b/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebug.java index 89623f4566bd..f3b721c02635 100644 --- a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebug.java +++ b/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebug.java @@ -88,7 +88,8 @@ public class FeatureFlagsDebug implements FeatureFlags, Dumpable { filter.addAction(ACTION_GET_FLAGS); flagManager.setRestartAction(this::restartSystemUI); flagManager.setClearCacheAction(this::removeFromCache); - context.registerReceiver(mReceiver, filter, null, null); + context.registerReceiver(mReceiver, filter, null, null, + Context.RECEIVER_EXPORTED_UNAUDITED); dumpManager.registerDumpable(TAG, this); } diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java index 094b1927480d..87dbc5f1a2c0 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java @@ -894,7 +894,8 @@ public class KeyguardViewMediator extends CoreStartable implements Dumpable, delayedActionFilter.addAction(DELAYED_KEYGUARD_ACTION); delayedActionFilter.addAction(DELAYED_LOCK_PROFILE_ACTION); mContext.registerReceiver(mDelayedLockBroadcastReceiver, delayedActionFilter, - SYSTEMUI_PERMISSION, null /* scheduler */); + SYSTEMUI_PERMISSION, null /* scheduler */, + Context.RECEIVER_EXPORTED_UNAUDITED); mAlarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java index 9dc823b63290..d785059e3de7 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java @@ -293,7 +293,8 @@ public class NotificationLockscreenUserManagerImpl implements IntentFilter internalFilter = new IntentFilter(); internalFilter.addAction(NOTIFICATION_UNLOCKED_BY_WORK_CHALLENGE_ACTION); - mContext.registerReceiver(mBaseBroadcastReceiver, internalFilter, PERMISSION_SELF, null); + mContext.registerReceiver(mBaseBroadcastReceiver, internalFilter, PERMISSION_SELF, null, + Context.RECEIVER_EXPORTED_UNAUDITED); mCurrentUserId = ActivityManager.getCurrentUser(); // in case we reg'd receiver too late updateCurrentProfilesCache(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index a9b3927acc88..d32aab9aa5b1 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -1003,7 +1003,7 @@ public class StatusBar extends CoreStartable implements internalFilter.addAction(BANNER_ACTION_CANCEL); internalFilter.addAction(BANNER_ACTION_SETUP); mContext.registerReceiver(mBannerActionBroadcastReceiver, internalFilter, PERMISSION_SELF, - null); + null, Context.RECEIVER_EXPORTED_UNAUDITED); if (mWallpaperSupported) { IWallpaperManager wallpaperManager = IWallpaperManager.Stub.asInterface( @@ -1332,7 +1332,8 @@ public class StatusBar extends CoreStartable implements demoFilter.addAction(ACTION_FAKE_ARTWORK); } mContext.registerReceiverAsUser(mDemoReceiver, UserHandle.ALL, demoFilter, - android.Manifest.permission.DUMP, null); + android.Manifest.permission.DUMP, null, + Context.RECEIVER_EXPORTED_UNAUDITED); // listen for USER_SETUP_COMPLETE setting (per-user) mDeviceProvisionedController.addCallback(mUserSetupObserver); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardStateControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardStateControllerImpl.java index c1f63b80dbf8..05a586b1cdc2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardStateControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardStateControllerImpl.java @@ -128,7 +128,7 @@ public class KeyguardStateControllerImpl implements KeyguardStateController, Dum update(true /* updateAlways */); } } - }, filter, null, null); + }, filter, null, null, Context.RECEIVER_EXPORTED_UNAUDITED); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserInfoControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserInfoControllerImpl.java index f42e3885fe62..29285f886f4e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserInfoControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserInfoControllerImpl.java @@ -74,7 +74,7 @@ public class UserInfoControllerImpl implements UserInfoController { profileFilter.addAction(ContactsContract.Intents.ACTION_PROFILE_CHANGED); profileFilter.addAction(Intent.ACTION_USER_INFO_CHANGED); mContext.registerReceiverAsUser(mProfileReceiver, UserHandle.ALL, profileFilter, - null, null); + null, null, Context.RECEIVER_EXPORTED_UNAUDITED); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java index 79ee7468b5fe..9f20bc55ebc9 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java @@ -229,7 +229,8 @@ public class UserSwitcherController implements Dumpable { filter = new IntentFilter(); mContext.registerReceiverAsUser(mReceiver, UserHandle.SYSTEM, filter, - PERMISSION_SELF, null /* scheduler */); + PERMISSION_SELF, null /* scheduler */, + Context.RECEIVER_EXPORTED_UNAUDITED); mSettingsObserver = new ContentObserver(mHandler) { @Override diff --git a/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java b/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java index 90c7f1f7ac72..cf361ec304e5 100644 --- a/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java +++ b/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java @@ -167,9 +167,11 @@ public class StorageNotification extends CoreStartable { mStorageManager.registerListener(mListener); mContext.registerReceiver(mSnoozeReceiver, new IntentFilter(ACTION_SNOOZE_VOLUME), - android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS, null); + android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS, null, + Context.RECEIVER_EXPORTED_UNAUDITED); mContext.registerReceiver(mFinishReceiver, new IntentFilter(ACTION_FINISH_WIZARD), - android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS, null); + android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS, null, + Context.RECEIVER_EXPORTED_UNAUDITED); // Kick current state into place final List disks = mStorageManager.getDisks(); diff --git a/packages/SystemUI/src/com/android/systemui/volume/SafetyWarningDialog.java b/packages/SystemUI/src/com/android/systemui/volume/SafetyWarningDialog.java index a40cf4f37cc3..5b188b24d7dd 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/SafetyWarningDialog.java +++ b/packages/SystemUI/src/com/android/systemui/volume/SafetyWarningDialog.java @@ -63,7 +63,8 @@ abstract public class SafetyWarningDialog extends SystemUIDialog setOnDismissListener(this); final IntentFilter filter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); - context.registerReceiver(mReceiver, filter); + context.registerReceiver(mReceiver, filter, + Context.RECEIVER_EXPORTED_UNAUDITED); } abstract protected void cleanUp(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/SliceBroadcastRelayHandlerTest.java b/packages/SystemUI/tests/src/com/android/systemui/SliceBroadcastRelayHandlerTest.java index 7d556236b518..7c121e1754bf 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/SliceBroadcastRelayHandlerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/SliceBroadcastRelayHandlerTest.java @@ -15,6 +15,7 @@ package com.android.systemui; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; @@ -79,7 +80,7 @@ public class SliceBroadcastRelayHandlerTest extends SysuiTestCase { intent.putExtra(SliceBroadcastRelay.EXTRA_URI, testUri); mRelayHandler.handleIntent(intent); - verify(mSpyContext).registerReceiver(any(), eq(value)); + verify(mSpyContext).registerReceiver(any(), eq(value), anyInt()); } @Test @@ -99,7 +100,7 @@ public class SliceBroadcastRelayHandlerTest extends SysuiTestCase { mRelayHandler.handleIntent(intent); ArgumentCaptor relay = ArgumentCaptor.forClass(BroadcastReceiver.class); - verify(mSpyContext).registerReceiver(relay.capture(), eq(value)); + verify(mSpyContext).registerReceiver(relay.capture(), eq(value), anyInt()); intent = new Intent(SliceBroadcastRelay.ACTION_UNREGISTER); intent.putExtra(SliceBroadcastRelay.EXTRA_URI, ContentProvider.maybeAddUserId(testUri, 0)); @@ -138,7 +139,7 @@ public class SliceBroadcastRelayHandlerTest extends SysuiTestCase { mRelayHandler.handleIntent(intent); ArgumentCaptor relay = ArgumentCaptor.forClass(BroadcastReceiver.class); - verify(mSpyContext).registerReceiver(relay.capture(), eq(value)); + verify(mSpyContext).registerReceiver(relay.capture(), eq(value), anyInt()); relay.getValue().onReceive(mSpyContext, new Intent(TEST_ACTION)); verify(Receiver.sReceiver, timeout(2000)).onReceive(any(), any()); diff --git a/packages/SystemUI/tests/src/com/android/systemui/SysuiTestableContext.java b/packages/SystemUI/tests/src/com/android/systemui/SysuiTestableContext.java index 3d679deaa426..0674ea855d7f 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/SysuiTestableContext.java +++ b/packages/SystemUI/tests/src/com/android/systemui/SysuiTestableContext.java @@ -82,6 +82,16 @@ public class SysuiTestableContext extends TestableContext { return super.registerReceiver(receiver, filter); } + @Override + public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter, int flags) { + if (receiver != null) { + synchronized (mRegisteredReceivers) { + mRegisteredReceivers.add(receiver); + } + } + return super.registerReceiver(receiver, filter, flags); + } + @Override public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter, String broadcastPermission, Handler scheduler) { @@ -93,6 +103,17 @@ public class SysuiTestableContext extends TestableContext { return super.registerReceiver(receiver, filter, broadcastPermission, scheduler); } + @Override + public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter, + String broadcastPermission, Handler scheduler, int flags) { + if (receiver != null) { + synchronized (mRegisteredReceivers) { + mRegisteredReceivers.add(receiver); + } + } + return super.registerReceiver(receiver, filter, broadcastPermission, scheduler, flags); + } + @Override public Intent registerReceiverAsUser(BroadcastReceiver receiver, UserHandle user, IntentFilter filter, String broadcastPermission, Handler scheduler) { @@ -104,6 +125,18 @@ public class SysuiTestableContext extends TestableContext { return super.registerReceiverAsUser(receiver, user, filter, broadcastPermission, scheduler); } + @Override + public Intent registerReceiverAsUser(BroadcastReceiver receiver, UserHandle user, + IntentFilter filter, String broadcastPermission, Handler scheduler, int flags) { + if (receiver != null) { + synchronized (mRegisteredReceivers) { + mRegisteredReceivers.add(receiver); + } + } + return super.registerReceiverAsUser(receiver, user, filter, broadcastPermission, scheduler, + flags); + } + @Override public void unregisterReceiver(BroadcastReceiver receiver) { if (receiver != null) { diff --git a/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsDebugTest.kt b/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsDebugTest.kt index cb16becc48fd..87bc732d2f66 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsDebugTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsDebugTest.kt @@ -76,7 +76,8 @@ class FeatureFlagsDebugTest : SysuiTestCase() { ) verify(mFlagManager).restartAction = any() mBroadcastReceiver = withArgCaptor { - verify(mMockContext).registerReceiver(capture(), any(), nullable(), nullable()) + verify(mMockContext).registerReceiver(capture(), any(), nullable(), nullable(), + any()) } mClearCacheAction = withArgCaptor { verify(mFlagManager).clearCacheAction = capture() diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/RemoteInputViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/RemoteInputViewTest.java index ba7bbfe11bdc..20a3fdaa99a5 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/RemoteInputViewTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/RemoteInputViewTest.java @@ -102,7 +102,8 @@ public class RemoteInputViewTest extends SysuiTestCase { mReceiver = new BlockingQueueIntentReceiver(); mContext.registerReceiver(mReceiver, new IntentFilter(TEST_ACTION), null, - Handler.createAsync(Dependency.get(Dependency.BG_LOOPER))); + Handler.createAsync(Dependency.get(Dependency.BG_LOOPER)), + Context.RECEIVER_EXPORTED_UNAUDITED); // Avoid SecurityException RemoteInputView#sendRemoteInput(). mContext.addMockSystemService(ShortcutManager.class, mShortcutManager); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SmartReplyViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SmartReplyViewTest.java index 32aee2bd6554..0e25d24bea58 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SmartReplyViewTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SmartReplyViewTest.java @@ -30,6 +30,7 @@ import static org.mockito.Mockito.when; import android.app.Notification; import android.app.PendingIntent; import android.app.RemoteInput; +import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.res.Resources; @@ -119,7 +120,8 @@ public class SmartReplyViewTest extends SysuiTestCase { public void setUp() { MockitoAnnotations.initMocks(this); mReceiver = new BlockingQueueIntentReceiver(); - mContext.registerReceiver(mReceiver, new IntentFilter(TEST_ACTION)); + mContext.registerReceiver(mReceiver, new IntentFilter(TEST_ACTION), + Context.RECEIVER_EXPORTED_UNAUDITED); mKeyguardDismissUtil.setDismissHandler((action, unused, afterKgGone) -> action.onDismiss()); mDependency.injectMockDependency(KeyguardUpdateMonitor.class); mDependency.injectMockDependency(ShadeController.class); diff --git a/tests/DozeTest/src/com/android/dreams/dozetest/DozeTestDream.java b/tests/DozeTest/src/com/android/dreams/dozetest/DozeTestDream.java index 6985702c24e6..9a88abdd7b37 100644 --- a/tests/DozeTest/src/com/android/dreams/dozetest/DozeTestDream.java +++ b/tests/DozeTest/src/com/android/dreams/dozetest/DozeTestDream.java @@ -81,7 +81,8 @@ public class DozeTestDream extends DreamService { intent.setPackage(getPackageName()); IntentFilter filter = new IntentFilter(); filter.addAction(intent.getAction()); - registerReceiver(mAlarmReceiver, filter); + registerReceiver(mAlarmReceiver, filter, + Context.RECEIVER_EXPORTED_UNAUDITED); mAlarmIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_MUTABLE_UNAUDITED);