Merge "isRcsVolteSingleRegistrationCapable does not check provisioned config"
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index e1affa9..d7cdbc2 100755
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -9767,9 +9767,13 @@
         try {
             RcsProvisioningMonitor rpm = RcsProvisioningMonitor.getInstance();
             if (rpm != null) {
-                return rpm.isRcsVolteSingleRegistrationEnabled(subId);
+                Boolean isCapable = rpm.isRcsVolteSingleRegistrationEnabled(subId);
+                if (isCapable != null) {
+                    return isCapable;
+                }
             }
-            return false;
+            throw new ServiceSpecificException(ImsException.CODE_ERROR_SERVICE_UNAVAILABLE,
+                    "service is temporarily unavailable.");
         } finally {
             Binder.restoreCallingIdentity(identity);
         }
diff --git a/src/com/android/phone/RcsProvisioningMonitor.java b/src/com/android/phone/RcsProvisioningMonitor.java
index 9e30728..8f4cd86 100644
--- a/src/com/android/phone/RcsProvisioningMonitor.java
+++ b/src/com/android/phone/RcsProvisioningMonitor.java
@@ -537,19 +537,12 @@
     /**
      * Returns whether Rcs Volte single registration is enabled for the sub.
      */
-    public boolean isRcsVolteSingleRegistrationEnabled(int subId) {
+    public Boolean isRcsVolteSingleRegistrationEnabled(int subId) {
         if (mRcsProvisioningInfos.containsKey(subId)) {
-            if (mRcsProvisioningInfos.get(subId).getSingleRegistrationCapability()
-                    == ProvisioningManager.STATUS_CAPABLE) {
-                try {
-                    RcsConfig rcsConfig = new RcsConfig(getConfig(subId));
-                    return rcsConfig.isRcsVolteSingleRegistrationSupported();
-                } catch (IllegalArgumentException e) {
-                    logd("fail to get rcs config for sub:" + subId);
-                }
-            }
+            return mRcsProvisioningInfos.get(subId).getSingleRegistrationCapability()
+                    == ProvisioningManager.STATUS_CAPABLE;
         }
-        return false;
+        return null;
     }
 
     /**
diff --git a/tests/src/com/android/phone/RcsProvisioningMonitorTest.java b/tests/src/com/android/phone/RcsProvisioningMonitorTest.java
index 57e01f0..85e190e 100644
--- a/tests/src/com/android/phone/RcsProvisioningMonitorTest.java
+++ b/tests/src/com/android/phone/RcsProvisioningMonitorTest.java
@@ -512,7 +512,7 @@
 
         mRcsProvisioningMonitor.updateConfig(FAKE_SUB_ID_BASE, null, false);
         processAllMessages();
-        assertFalse(mRcsProvisioningMonitor.isRcsVolteSingleRegistrationEnabled(FAKE_SUB_ID_BASE));
+        assertTrue(mRcsProvisioningMonitor.isRcsVolteSingleRegistrationEnabled(FAKE_SUB_ID_BASE));
 
         mRcsProvisioningMonitor.updateConfig(FAKE_SUB_ID_BASE, CONFIG_DEFAULT.getBytes(), false);
         processAllMessages();
@@ -521,7 +521,10 @@
         mRcsProvisioningMonitor.updateConfig(FAKE_SUB_ID_BASE,
                 CONFIG_SINGLE_REGISTRATION_DISABLED.getBytes(), false);
         processAllMessages();
-        assertFalse(mRcsProvisioningMonitor.isRcsVolteSingleRegistrationEnabled(FAKE_SUB_ID_BASE));
+        assertTrue(mRcsProvisioningMonitor.isRcsVolteSingleRegistrationEnabled(FAKE_SUB_ID_BASE));
+
+        assertNull(mRcsProvisioningMonitor.isRcsVolteSingleRegistrationEnabled(
+                FAKE_SUB_ID_BASE + 1));
     }
 
     @Test