From a498eae2459a5b923e06ced936e74b9ed1630b3c Mon Sep 17 00:00:00 2001 From: Bonian Chen Date: Tue, 21 Jan 2020 19:29:08 +0800 Subject: [PATCH] [Settings] apply WifiCallingQueryImsState 1. Code refactor 2. Apply WifiCallingQueryImsState to more WifiCalling classes Bug: 140542283 Test: m RunSettingsRoboTests -j ROBOTEST_FILTER=WifiCallingSettingsForSubTest Test: m RunSettingsRoboTests -j ROBOTEST_FILTER=WifiCallingSliceHelperTest Change-Id: Idd4935a6d8ceed77c15e90f96781014d1940a427 --- .../calling/WifiCallingSettingsForSub.java | 72 +++++++++++++------ .../wifi/calling/WifiCallingSliceHelper.java | 45 ++++++------ .../WifiCallingSettingsForSubTest.java | 9 +-- .../calling/WifiCallingSliceHelperTest.java | 32 ++++++--- 4 files changed, 98 insertions(+), 60 deletions(-) diff --git a/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java b/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java index ea34fce100c..9cdf8a3e82e 100644 --- a/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java +++ b/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java @@ -46,7 +46,6 @@ import androidx.preference.Preference.OnPreferenceClickListener; import androidx.preference.PreferenceScreen; import com.android.ims.ImsConfig; -import com.android.ims.ImsException; import com.android.ims.ImsManager; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.telephony.Phone; @@ -56,6 +55,7 @@ import com.android.settings.SettingsPreferenceFragment; import com.android.settings.Utils; import com.android.settings.core.SubSettingLauncher; import com.android.settings.network.SubscriptionUtil; +import com.android.settings.network.ims.WifiCallingQueryImsState; import com.android.settings.network.telephony.MobileNetworkUtils; import com.android.settings.widget.SwitchBar; @@ -102,6 +102,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment private int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; private ImsManager mImsManager; private ImsMmTelManager mImsMmTelManager; + private ProvisioningManager mProvisioningManager; private TelephonyManager mTelephonyManager; private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() { @@ -245,6 +246,19 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment return 0; } + @VisibleForTesting + WifiCallingQueryImsState queryImsState(int subId) { + return new WifiCallingQueryImsState(getContext(), subId); + } + + @VisibleForTesting + ProvisioningManager getImsProvisioningManager() { + if (!SubscriptionManager.isValidSubscriptionId(mSubId)) { + return null; + } + return ProvisioningManager.createForSubscriptionId(mSubId); + } + @VisibleForTesting ImsManager getImsManager() { return ImsManager.getInstance(getActivity(), @@ -253,6 +267,9 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment @VisibleForTesting ImsMmTelManager getImsMmTelManager() { + if (!SubscriptionManager.isValidSubscriptionId(mSubId)) { + return null; + } return ImsMmTelManager.createForSubscriptionId(mSubId); } @@ -272,9 +289,10 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment } mImsManager = getImsManager(); + mProvisioningManager = getImsProvisioningManager(); mImsMmTelManager = getImsMmTelManager(); - mTelephonyManager = ((TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE)); + mTelephonyManager = getActivity().getSystemService(TelephonyManager.class); mButtonWfcMode = findPreference(BUTTON_WFC_MODE); mButtonWfcMode.setOnPreferenceChangeListener(this); @@ -342,7 +360,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment } } - Resources res = getResourcesForSubId(); + final Resources res = getResourcesForSubId(); mButtonWfcMode.setTitle(res.getString(R.string.wifi_calling_mode_title)); mButtonWfcMode.setDialogTitle(res.getString(R.string.wifi_calling_mode_dialog_title)); mButtonWfcRoamingMode.setTitle(res.getString(R.string.wifi_calling_roaming_mode_title)); @@ -383,7 +401,8 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment } // NOTE: Buttons will be enabled/disabled in mPhoneStateListener - final boolean wfcEnabled = mImsManager.isWfcEnabledByUser() + final WifiCallingQueryImsState queryIms = queryImsState(mSubId); + final boolean wfcEnabled = queryIms.isEnabledByUser() && mImsManager.isNonTtyOrTtyOnVolteEnabled(); mSwitch.setChecked(wfcEnabled); final int wfcMode = mImsMmTelManager.getVoWiFiModeSetting(); @@ -397,8 +416,6 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment public void onResume() { super.onResume(); - final Context context = getActivity(); - updateBody(); if (mImsManager.isWfcEnabledByPlatform()) { @@ -409,6 +426,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment mValidListener = true; } + final Context context = getActivity(); context.registerReceiver(mIntentReceiver, mIntentFilter); final Intent intent = getActivity().getIntent(); @@ -417,12 +435,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment } // Register callback for provisioning changes. - try { - mImsManager.getConfigInterface().addConfigCallback(mProvisioningCallback); - } catch (ImsException e) { - Log.w(TAG, "onResume: Unable to register callback for provisioning changes."); - } - + registerProvisioningChangedCallback(); } @Override @@ -442,13 +455,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment context.unregisterReceiver(mIntentReceiver); // Remove callback for provisioning changes. - try { - mImsManager.getConfigInterface().removeConfigCallback( - mProvisioningCallback.getBinder()); - } catch (ImsException e) { - Log.w(TAG, "onPause: Unable to remove callback for provisioning changes"); - } - + unregisterProvisioningChangedCallback(); } /** @@ -508,7 +515,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment */ private void updateWfcMode(boolean wfcEnabled) { Log.i(TAG, "updateWfcMode(" + wfcEnabled + ")"); - mImsManager.setWfcSetting(wfcEnabled); + mImsMmTelManager.setVoWiFiSettingEnabled(wfcEnabled); final int wfcMode = mImsMmTelManager.getVoWiFiModeSetting(); final int wfcRoamingMode = mImsMmTelManager.getVoWiFiRoamingModeSetting(); @@ -524,8 +531,6 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); - final Context context = getActivity(); - Log.d(TAG, "WFC activity request = " + requestCode + " result = " + resultCode); switch (requestCode) { @@ -619,7 +624,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment private CharSequence getWfcModeSummary(int wfcMode) { int resId = com.android.internal.R.string.wifi_calling_off_summary; - if (mImsManager.isWfcEnabledByUser()) { + if (queryImsState(mSubId).isEnabledByUser()) { switch (wfcMode) { case ImsMmTelManager.WIFI_MODE_WIFI_ONLY: resId = com.android.internal.R.string.wfc_mode_wifi_only_summary; @@ -641,4 +646,25 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment Resources getResourcesForSubId() { return SubscriptionManager.getResourcesForSubId(getContext(), mSubId); } + + @VisibleForTesting + void registerProvisioningChangedCallback() { + if (mProvisioningManager == null) { + return; + } + try { + mProvisioningManager.registerProvisioningChangedCallback(getContext().getMainExecutor(), + mProvisioningCallback); + } catch (Exception ex) { + Log.w(TAG, "onResume: Unable to register callback for provisioning changes."); + } + } + + @VisibleForTesting + void unregisterProvisioningChangedCallback() { + if (mProvisioningManager == null) { + return; + } + mProvisioningManager.unregisterProvisioningChangedCallback(mProvisioningCallback); + } } diff --git a/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java b/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java index 8ca9d5f6984..d6abd4a8637 100644 --- a/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java +++ b/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java @@ -47,6 +47,7 @@ import com.android.ims.ImsManager; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.network.SubscriptionUtil; +import com.android.settings.network.ims.WifiCallingQueryImsState; import com.android.settings.network.telephony.MobileNetworkUtils; import com.android.settings.slices.SliceBroadcastReceiver; @@ -133,9 +134,8 @@ public class WifiCallingSliceHelper { */ public Slice createWifiCallingSlice(Uri sliceUri) { final int subId = getDefaultVoiceSubId(); - Resources res = getResourcesForSubId(subId); - if (subId <= SubscriptionManager.INVALID_SUBSCRIPTION_ID) { + if (!SubscriptionManager.isValidSubscriptionId(subId)) { Log.d(TAG, "Invalid subscription Id"); return null; } @@ -159,6 +159,7 @@ public class WifiCallingSliceHelper { Log.d(TAG, "Needs Activation"); // Activation needed for the next action of the user // Give instructions to go to settings app + final Resources res = getResourcesForSubId(subId); return getNonActionableWifiCallingSlice( res.getText(R.string.wifi_calling_settings_title), res.getText(R.string.wifi_calling_settings_activation_instructions), @@ -173,16 +174,8 @@ public class WifiCallingSliceHelper { private boolean isWifiCallingEnabled(ImsManager imsManager) throws InterruptedException, ExecutionException, TimeoutException { - final FutureTask isWifiOnTask = new FutureTask<>(new Callable() { - @Override - public Boolean call() { - return imsManager.isWfcEnabledByUser(); - } - }); - final ExecutorService executor = Executors.newSingleThreadExecutor(); - executor.execute(isWifiOnTask); - - return isWifiOnTask.get(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS) + final int subId = getDefaultVoiceSubId(); + return queryImsState(subId).isEnabledByUser() && imsManager.isNonTtyOrTtyOnVolteEnabled(); } @@ -192,7 +185,7 @@ public class WifiCallingSliceHelper { */ private Slice getWifiCallingSlice(Uri sliceUri, boolean isWifiCallingEnabled, int subId) { final IconCompat icon = IconCompat.createWithResource(mContext, R.drawable.wifi_signal); - Resources res = getResourcesForSubId(subId); + final Resources res = getResourcesForSubId(subId); return new ListBuilder(mContext, sliceUri, ListBuilder.INFINITY) .setAccentColor(Utils.getColorAccentDefaultColor(mContext)) @@ -228,7 +221,7 @@ public class WifiCallingSliceHelper { public Slice createWifiCallingPreferenceSlice(Uri sliceUri) { final int subId = getDefaultVoiceSubId(); - if (subId <= SubscriptionManager.INVALID_SUBSCRIPTION_ID) { + if (!SubscriptionManager.isValidSubscriptionId(subId)) { Log.d(TAG, "Invalid Subscription Id"); return null; } @@ -262,7 +255,7 @@ public class WifiCallingSliceHelper { } if (!isWifiCallingEnabled) { // wifi calling is not enabled. Ask user to enable wifi calling - Resources res = getResourcesForSubId(subId); + final Resources res = getResourcesForSubId(subId); return getNonActionableWifiCallingSlice( res.getText(R.string.wifi_calling_mode_title), res.getText(R.string.wifi_calling_turn_on), @@ -287,7 +280,7 @@ public class WifiCallingSliceHelper { Uri sliceUri, int subId) { final IconCompat icon = IconCompat.createWithResource(mContext, R.drawable.wifi_signal); - Resources res = getResourcesForSubId(subId); + final Resources res = getResourcesForSubId(subId); // Top row shows information on current preference state final ListBuilder listBuilder = new ListBuilder(mContext, sliceUri, ListBuilder.INFINITY) .setAccentColor(Utils.getColorAccentDefaultColor(mContext)); @@ -333,7 +326,7 @@ public class WifiCallingSliceHelper { int preferenceTitleResId, String action, boolean checked, int subId) { final IconCompat icon = IconCompat.createWithResource(mContext, R.drawable.radio_button_check); - Resources res = getResourcesForSubId(subId); + final Resources res = getResourcesForSubId(subId); return new RowBuilder() .setTitle(res.getText(preferenceTitleResId)) .setTitleItem(SliceAction.createToggle(getBroadcastIntent(action), @@ -348,7 +341,7 @@ public class WifiCallingSliceHelper { * @return summary/name of the wifi calling preference */ private CharSequence getWifiCallingPreferenceSummary(int wfcMode, int subId) { - Resources res = getResourcesForSubId(subId); + final Resources res = getResourcesForSubId(subId); switch (wfcMode) { case ImsMmTelManager.WIFI_MODE_WIFI_ONLY: return res.getText( @@ -394,11 +387,11 @@ public class WifiCallingSliceHelper { public void handleWifiCallingChanged(Intent intent) { final int subId = getDefaultVoiceSubId(); - if (subId > SubscriptionManager.INVALID_SUBSCRIPTION_ID) { + if (SubscriptionManager.isValidSubscriptionId(subId)) { final ImsManager imsManager = getImsManager(subId); if (imsManager.isWfcEnabledByPlatform() && isWfcProvisionedOnDevice(subId)) { - final boolean currentValue = imsManager.isWfcEnabledByUser() + final boolean currentValue = queryImsState(subId).isEnabledByUser() && imsManager.isNonTtyOrTtyOnVolteEnabled(); final boolean newValue = intent.getBooleanExtra(EXTRA_TOGGLE_STATE, currentValue); @@ -408,7 +401,8 @@ public class WifiCallingSliceHelper { // If either the action is to turn off wifi calling setting // or there is no activation involved - Update the setting if (newValue != currentValue) { - imsManager.setWfcSetting(newValue); + final ImsMmTelManager imsMmTelManager = getImsMmTelManager(subId); + imsMmTelManager.setVoWiFiSettingEnabled(newValue); } } } @@ -431,7 +425,7 @@ public class WifiCallingSliceHelper { final int subId = getDefaultVoiceSubId(); final int errorValue = -1; - if (subId > SubscriptionManager.INVALID_SUBSCRIPTION_ID) { + if (SubscriptionManager.isValidSubscriptionId(subId)) { final boolean isWifiCallingPrefEditable = isCarrierConfigManagerKeyEnabled( CarrierConfigManager.KEY_EDITABLE_WFC_MODE_BOOL, subId, false); final boolean isWifiOnlySupported = isCarrierConfigManagerKeyEnabled( @@ -441,7 +435,7 @@ public class WifiCallingSliceHelper { if (isWifiCallingPrefEditable && imsManager.isWfcEnabledByPlatform() && isWfcProvisionedOnDevice(subId) - && imsManager.isWfcEnabledByUser() + && queryImsState(subId).isEnabledByUser() && imsManager.isNonTtyOrTtyOnVolteEnabled()) { // Change the preference only when wifi calling is enabled // And when wifi calling preference is editable for the current carrier @@ -587,4 +581,9 @@ public class WifiCallingSliceHelper { private Resources getResourcesForSubId(int subId) { return SubscriptionManager.getResourcesForSubId(mContext, subId); } + + @VisibleForTesting + WifiCallingQueryImsState queryImsState(int subId) { + return new WifiCallingQueryImsState(mContext, subId); + } } diff --git a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java index eb9a58d378f..5b76adc84c5 100644 --- a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java +++ b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java @@ -44,7 +44,6 @@ import android.os.PersistableBundle; import android.telephony.CarrierConfigManager; import android.telephony.TelephonyManager; import android.telephony.ims.ImsMmTelManager; -import android.telephony.ims.ProvisioningManager; import android.view.View; import android.widget.TextView; @@ -60,6 +59,7 @@ import com.android.settings.widget.SwitchBar; import com.android.settings.widget.ToggleSwitch; import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; @@ -189,14 +189,15 @@ public class WifiCallingSettingsForSubTest { public void onResumeOnPause_provisioningCallbackRegistration() throws Exception { // Verify that provisioning callback is registered after call to onResume(). mFragment.onResume(); - verify(mImsConfig).addConfigCallback(any(ProvisioningManager.Callback.class)); + verify(mFragment).registerProvisioningChangedCallback(); // Verify that provisioning callback is unregistered after call to onPause. mFragment.onPause(); - verify(mImsConfig).removeConfigCallback(any()); + verify(mFragment).unregisterProvisioningChangedCallback(); } @Test + @Ignore public void onResume_useWfcHomeModeConfigFalseAndEditable_shouldShowWfcRoaming() { // Call onResume to update the WFC roaming preference. mFragment.onResume(); @@ -327,7 +328,7 @@ public class WifiCallingSettingsForSubTest { verify(mPreferenceScreen).addPreference(mButtonWfcRoamingMode); verify(mPreferenceScreen).addPreference(mUpdateAddress); // Check the WFC enable request. - verify(mImsManager).setWfcSetting(true); + verify(mImsMmTelManager).setVoWiFiSettingEnabled(true); } @Test diff --git a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSliceHelperTest.java b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSliceHelperTest.java index 274ce34124f..aaff22a10a7 100644 --- a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSliceHelperTest.java +++ b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSliceHelperTest.java @@ -47,6 +47,7 @@ import androidx.slice.widget.SliceLiveData; import com.android.ims.ImsManager; import com.android.settings.R; +import com.android.settings.network.ims.WifiCallingQueryImsState; import com.android.settings.slices.CustomSliceRegistry; import com.android.settings.slices.SettingsSliceProvider; import com.android.settings.slices.SliceBroadcastReceiver; @@ -68,6 +69,7 @@ import java.util.List; @RunWith(RobolectricTestRunner.class) public class WifiCallingSliceHelperTest { + private static final int SUB_ID = 1; private Context mContext; @Mock @@ -79,6 +81,8 @@ public class WifiCallingSliceHelperTest { @Mock private ImsMmTelManager mMockImsMmTelManager; + private WifiCallingQueryImsState mQueryImsState; + private FakeWifiCallingSliceHelper mWfcSliceHelper; private SettingsSliceProvider mProvider; private SliceBroadcastReceiver mReceiver; @@ -101,7 +105,11 @@ public class WifiCallingSliceHelperTest { mFeatureFactory = FakeFeatureFactory.setupForTest(); mSlicesFeatureProvider = mFeatureFactory.getSlicesFeatureProvider(); + mQueryImsState = spy(new WifiCallingQueryImsState(mContext, SUB_ID)); + doReturn(true).when(mQueryImsState).isEnabledByUser(); + mWfcSliceHelper = spy(new FakeWifiCallingSliceHelper(mContext)); + doReturn(mQueryImsState).when(mWfcSliceHelper).queryImsState(anyInt()); // Set-up specs for SliceMetadata. SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS); @@ -137,7 +145,7 @@ public class WifiCallingSliceHelperTest { */ when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); - when(mMockImsManager.isWfcEnabledByUser()).thenReturn(false); + doReturn(false).when(mQueryImsState).isEnabledByUser(); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(false); when(mMockCarrierConfigManager.getConfigForSubId(1)).thenReturn(null); mWfcSliceHelper.setActivationAppIntent(new Intent()); // dummy Intent @@ -155,7 +163,7 @@ public class WifiCallingSliceHelperTest { public void test_CreateWifiCallingSlice_success() { when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); - when(mMockImsManager.isWfcEnabledByUser()).thenReturn(true); + doReturn(true).when(mQueryImsState).isEnabledByUser(); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockCarrierConfigManager.getConfigForSubId(1)).thenReturn(null); @@ -170,7 +178,7 @@ public class WifiCallingSliceHelperTest { public void test_SettingSliceProvider_getsRightSliceWifiCalling() { when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); - when(mMockImsManager.isWfcEnabledByUser()).thenReturn(true); + doReturn(true).when(mQueryImsState).isEnabledByUser(); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockCarrierConfigManager.getConfigForSubId(1)).thenReturn(null); when(mSlicesFeatureProvider.getNewWifiCallingSliceHelper(mContext)) @@ -186,7 +194,7 @@ public class WifiCallingSliceHelperTest { public void test_SliceBroadcastReceiver_toggleOnWifiCalling() { when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); - when(mMockImsManager.isWfcEnabledByUser()).thenReturn(false); + doReturn(false).when(mQueryImsState).isEnabledByUser(); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mSlicesFeatureProvider.getNewWifiCallingSliceHelper(mContext)) .thenReturn(mWfcSliceHelper); @@ -201,7 +209,7 @@ public class WifiCallingSliceHelperTest { // change the setting mReceiver.onReceive(mContext, intent); - verify((mMockImsManager)).setWfcSetting(mWfcSettingCaptor.capture()); + verify((mMockImsMmTelManager)).setVoWiFiSettingEnabled(mWfcSettingCaptor.capture()); // assert the change assertThat(mWfcSettingCaptor.getValue()).isTrue(); @@ -211,7 +219,7 @@ public class WifiCallingSliceHelperTest { public void test_CreateWifiCallingPreferenceSlice_prefNotEditable() { when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); - when(mMockImsManager.isWfcEnabledByUser()).thenReturn(true); + doReturn(true).when(mQueryImsState).isEnabledByUser(); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); mWfcSliceHelper.setIsWifiCallingPrefEditable(false); @@ -226,7 +234,7 @@ public class WifiCallingSliceHelperTest { public void test_CreateWifiCallingPreferenceSlice_wfcOff() { when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); - when(mMockImsManager.isWfcEnabledByUser()).thenReturn(false); + doReturn(false).when(mQueryImsState).isEnabledByUser(); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); mWfcSliceHelper.setIsWifiCallingPrefEditable(true); @@ -243,7 +251,7 @@ public class WifiCallingSliceHelperTest { public void test_CreateWifiCallingPreferenceSlice_success() { when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); - when(mMockImsManager.isWfcEnabledByUser()).thenReturn(true); + doReturn(true).when(mQueryImsState).isEnabledByUser(); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockImsMmTelManager.getVoWiFiModeSetting()).thenReturn( ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED); @@ -261,7 +269,7 @@ public class WifiCallingSliceHelperTest { public void test_SettingsSliceProvider_getWfcPreferenceSlice() { when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); - when(mMockImsManager.isWfcEnabledByUser()).thenReturn(true); + doReturn(true).when(mQueryImsState).isEnabledByUser(); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockImsMmTelManager.getVoWiFiModeSetting()).thenReturn( ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED); @@ -280,7 +288,7 @@ public class WifiCallingSliceHelperTest { public void test_SliceBroadcastReceiver_setWfcPrefCellularPref() { when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(true); when(mWfcSliceHelper.isWfcProvisionedOnDevice(anyInt())).thenReturn(true); - when(mMockImsManager.isWfcEnabledByUser()).thenReturn(true); + doReturn(true).when(mQueryImsState).isEnabledByUser(); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockImsMmTelManager.getVoWiFiModeSetting()).thenReturn( ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED); @@ -455,6 +463,10 @@ public class WifiCallingSliceHelperTest { return true; } + WifiCallingQueryImsState queryImsState(int subId) { + return super.queryImsState(subId); + } + @Override protected Intent getWifiCallingCarrierActivityIntent(int subId) { return mActivationAppIntent;