Send broadcast message when default messaging application changed
Bug: 191414756
Test: atest TeleServiceTests:RcsProvisioningMonitorTest
Change-Id: I09b7192d91f831d773dfd8a940b88bae5686ae2b
diff --git a/src/com/android/phone/RcsProvisioningMonitor.java b/src/com/android/phone/RcsProvisioningMonitor.java
index 8f4cd86..23c4c5a 100644
--- a/src/com/android/phone/RcsProvisioningMonitor.java
+++ b/src/com/android/phone/RcsProvisioningMonitor.java
@@ -129,7 +129,6 @@
public void onRoleHoldersChanged(String role, UserHandle user) {
if (RoleManager.ROLE_SMS.equals(role)) {
logv("default messaging application changed.");
- String packageName = getDmaPackageName();
mHandler.sendEmptyMessage(EVENT_DMA_CHANGED);
}
}
@@ -676,6 +675,8 @@
logv("new default messaging application " + mDmaPackageName);
mRcsProvisioningInfos.forEach((k, v) -> {
+ notifyDmaForSub(k, v.getSingleRegistrationCapability());
+
byte[] cachedConfig = v.getConfig();
//clear old callbacks
v.clear();
@@ -803,7 +804,7 @@
intent.setPackage(mDmaPackageName);
intent.putExtra(ProvisioningManager.EXTRA_SUBSCRIPTION_ID, subId);
intent.putExtra(ProvisioningManager.EXTRA_STATUS, capability);
- logv("notify " + intent);
+ logv("notify " + intent + ", sub:" + subId + ", capability:" + capability);
// Only send permission to the default sms app if it has the correct permissions
// except test mode enabled
if (!mTestModeEnabled) {
diff --git a/tests/src/com/android/phone/RcsProvisioningMonitorTest.java b/tests/src/com/android/phone/RcsProvisioningMonitorTest.java
index 85e190e..4fba922 100644
--- a/tests/src/com/android/phone/RcsProvisioningMonitorTest.java
+++ b/tests/src/com/android/phone/RcsProvisioningMonitorTest.java
@@ -579,6 +579,18 @@
@Test
@SmallTest
+ public void testSendBroadcastWhenDmaChanged() throws Exception {
+ createMonitor(3);
+ verify(mPhone, times(3)).sendBroadcast(any(), any());
+
+ updateDefaultMessageApplication(DEFAULT_MESSAGING_APP2);
+ processAllMessages();
+
+ verify(mPhone, times(6)).sendBroadcast(any(), any());
+ }
+
+ @Test
+ @SmallTest
public void testRcsConnectedAndDisconnected() throws Exception {
createMonitor(1);
mRcsProvisioningMonitor.registerRcsProvisioningCallback(