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(