Merge "Check isWfcProvisionedOnDevice in WifiCallingSettings" into qt-dev
diff --git a/src/com/android/settings/wifi/calling/WifiCallingSettings.java b/src/com/android/settings/wifi/calling/WifiCallingSettings.java
index 1644b39..8a342c8 100644
--- a/src/com/android/settings/wifi/calling/WifiCallingSettings.java
+++ b/src/com/android/settings/wifi/calling/WifiCallingSettings.java
@@ -199,6 +199,12 @@
         return imsManager.isWfcEnabledByPlatform();
     }
 
+    @VisibleForTesting
+    boolean isWfcProvisionedOnDevice(SubscriptionInfo info) {
+        ImsManager imsManager = ImsManager.getInstance(getActivity(), info.getSimSlotIndex());
+        return imsManager.isWfcProvisionedOnDevice();
+    }
+
     private void updateSubList() {
         mSil = SubscriptionUtil.getActiveSubscriptions(
                 getContext().getSystemService(SubscriptionManager.class));
@@ -208,7 +214,8 @@
             return;
         }
         for (int i = 0; i < mSil.size(); ) {
-            if (!isWfcEnabledByPlatform(mSil.get(i))) {
+            final SubscriptionInfo info = mSil.get(i);
+            if (!isWfcEnabledByPlatform(info) || !isWfcProvisionedOnDevice(info)) {
                 mSil.remove(i);
             } else {
                 i++;
diff --git a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsTest.java b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsTest.java
index a87ac32..cc9ebb3 100644
--- a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsTest.java
@@ -19,6 +19,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
@@ -106,4 +107,30 @@
                 (WifiCallingSettings.WifiCallingViewPagerAdapter) pager.getAdapter();
         assertThat(adapter.getCount()).isEqualTo(2);
     }
+
+    @Test
+    public void setupFragment_twoSubscriptionsOneNotProvisionedOnDevice_oneResult() {
+        SubscriptionInfo info1 = mock(SubscriptionInfo.class);
+        SubscriptionInfo info2 = mock(SubscriptionInfo.class);
+        when(info1.getSubscriptionId()).thenReturn(111);
+        when(info2.getSubscriptionId()).thenReturn(222);
+
+        SubscriptionUtil.setActiveSubscriptionsForTesting(new ArrayList<>(
+                Arrays.asList(info1, info2)));
+        doReturn(true).when(mFragment).isWfcEnabledByPlatform(any(SubscriptionInfo.class));
+        doReturn(false).when(mFragment).isWfcProvisionedOnDevice(eq(info2));
+
+        Intent intent = new Intent();
+        intent.putExtra(Settings.EXTRA_SUB_ID, info1.getSubscriptionId());
+        FragmentController.of(mFragment, intent).create(0 /* containerViewId*/,
+                null /* bundle */).start().resume().visible().get();
+
+        View view = mFragment.getView();
+        RtlCompatibleViewPager pager = view.findViewById(R.id.view_pager);
+        assertThat(pager.getCurrentItem()).isEqualTo(0);
+
+        WifiCallingSettings.WifiCallingViewPagerAdapter adapter =
+                (WifiCallingSettings.WifiCallingViewPagerAdapter) pager.getAdapter();
+        assertThat(adapter.getCount()).isEqualTo(1);
+    }
 }