diff options
author | Chinmay Dhodapkar <chinmayd@google.com> | 2022-06-17 14:29:47 -0700 |
---|---|---|
committer | Chinmay Dhodapkar <chinmayd@google.com> | 2022-06-21 18:25:44 +0000 |
commit | ed6a388e3f5a65065c11acd80f175b7e7169e9b2 (patch) | |
tree | 10368e5a7a3c5e12b5159c18540f1b53dd771fd7 | |
parent | 5b3b33b910708852cb50babd3b124b4f6657b9ae (diff) | |
download | ims-ed6a388e3f5a65065c11acd80f175b7e7169e9b2.tar.gz |
Add MODIFY_PHONE_STATE when registering receiver
Without this additional check we can end up handling
ACTION_TTY_PREFERRED_MODE_CHANGE from an unpriviledged app
Currently this intent is sent by dialer on 1P devices, so
it cannot be converted to a protected-broadcast
Bug: 236264289
Tests: atest DeviceCapabilityListenerTest
Change-Id: I221b28dd3e1f7ed51f915dc79a62f8818f8a65a2
3 files changed, 11 insertions, 2 deletions
diff --git a/src/java/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityListener.java b/src/java/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityListener.java index 442cf7da..cc5cadb2 100644 --- a/src/java/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityListener.java +++ b/src/java/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityListener.java @@ -274,7 +274,8 @@ public class DeviceCapabilityListener { IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED); filter.addAction(TelecomManager.ACTION_TTY_PREFERRED_MODE_CHANGED); - mContext.registerReceiver(mReceiver, filter); + mContext.registerReceiver(mReceiver, filter, android.Manifest.permission.MODIFY_PHONE_STATE, + null); ContentResolver resolver = mContext.getContentResolver(); if (resolver != null) { diff --git a/tests/src/com/android/ims/ContextFixture.java b/tests/src/com/android/ims/ContextFixture.java index e987b387..48cb9ab1 100644 --- a/tests/src/com/android/ims/ContextFixture.java +++ b/tests/src/com/android/ims/ContextFixture.java @@ -33,6 +33,7 @@ import android.content.IntentFilter; import android.content.pm.PackageManager; import android.content.res.Resources; import android.net.ConnectivityManager; +import android.os.Handler; import android.os.PersistableBundle; import android.telecom.TelecomManager; import android.telephony.CarrierConfigManager; @@ -131,6 +132,12 @@ public class ContextFixture { } @Override + public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter, + String broadcastPermission, Handler scheduler) { + return null; + } + + @Override public void unregisterReceiver(BroadcastReceiver receiver) { } diff --git a/tests/src/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityListenerTest.java b/tests/src/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityListenerTest.java index 2d170ab6..f6221720 100644 --- a/tests/src/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityListenerTest.java +++ b/tests/src/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityListenerTest.java @@ -107,7 +107,8 @@ public class DeviceCapabilityListenerTest extends ImsTestBase { deviceCapListener.initialize(); - verify(mContext).registerReceiver(any(), any()); + verify(mContext).registerReceiver(any(), any(), + eq(android.Manifest.permission.MODIFY_PHONE_STATE), any()); verify(mProvisioningManager).registerProvisioningChangedCallback(any(), any()); } |