Loading src/com/android/settings/network/ims/WifiCallingQueryImsState.java +9 −12 Original line number Diff line number Diff line Loading @@ -27,10 +27,6 @@ import android.util.Log; import androidx.annotation.VisibleForTesting; import com.android.ims.ImsManager; import com.android.settings.network.SubscriptionUtil; import com.android.settings.network.telephony.MobileNetworkUtils; /** * Controller class for querying Wifi calling status */ Loading Loading @@ -66,12 +62,6 @@ public class WifiCallingQueryImsState extends ImsQueryController { return (new ImsQueryWfcUserSetting(subId)).query(); } @VisibleForTesting ImsManager getImsManager(int subId) { return ImsManager.getInstance(mContext, SubscriptionUtil.getPhoneId(mContext, subId)); } /** * Check whether Wifi Calling is a supported feature on this subscription * Loading Loading @@ -107,8 +97,15 @@ public class WifiCallingQueryImsState extends ImsQueryController { if (!SubscriptionManager.isValidSubscriptionId(mSubId)) { return false; } return isWifiCallingProvisioned() && MobileNetworkUtils.isImsServiceStateReady(getImsManager(mSubId)); if (!isWifiCallingProvisioned()) { return false; } try { return isServiceStateReady(mSubId); } catch (InterruptedException | IllegalArgumentException | ImsException exception) { Log.w(LOG_TAG, "fail to get WFC service status. subId=" + mSubId, exception); } return false; } /** Loading src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java +1 −13 Original line number Diff line number Diff line Loading @@ -54,9 +54,7 @@ import com.android.settings.SettingsActivity; 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; /** Loading Loading @@ -100,7 +98,6 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment private boolean mUseWfcHomeModeForRoaming = false; private int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; private com.android.ims.ImsManager mImsManager; private ImsMmTelManager mImsMmTelManager; private ProvisioningManager mProvisioningManager; private TelephonyManager mTelephonyManager; Loading Loading @@ -270,12 +267,6 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment return ProvisioningManager.createForSubscriptionId(mSubId); } @VisibleForTesting com.android.ims.ImsManager getImsManager() { return com.android.ims.ImsManager.getInstance(getActivity(), SubscriptionUtil.getPhoneId(getActivity(), mSubId)); } @VisibleForTesting ImsMmTelManager getImsMmTelManager() { if (!SubscriptionManager.isValidSubscriptionId(mSubId)) { Loading @@ -299,12 +290,9 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment FRAGMENT_BUNDLE_SUBID, SubscriptionManager.INVALID_SUBSCRIPTION_ID); } mImsManager = getImsManager(); mProvisioningManager = getImsProvisioningManager(); mImsMmTelManager = getImsMmTelManager(); mTelephonyManager = getActivity().getSystemService(TelephonyManager.class); mButtonWfcMode = findPreference(BUTTON_WFC_MODE); mButtonWfcMode.setOnPreferenceChangeListener(this); Loading Loading @@ -341,7 +329,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment @VisibleForTesting boolean isWfcProvisionedOnDevice() { return MobileNetworkUtils.isWfcProvisionedOnDevice(mSubId); return queryImsState(mSubId).isWifiCallingProvisioned(); } private void updateBody() { Loading src/com/android/settings/wifi/calling/WifiCallingSuggestionActivity.java +2 −8 Original line number Diff line number Diff line Loading @@ -19,10 +19,8 @@ package com.android.settings.wifi.calling; import android.content.Context; import android.telephony.SubscriptionManager; import com.android.ims.ImsManager; import com.android.settings.SettingsActivity; import com.android.settings.network.ims.WifiCallingQueryImsState; import com.android.settings.network.telephony.MobileNetworkUtils; public class WifiCallingSuggestionActivity extends SettingsActivity { Loading @@ -30,11 +28,7 @@ public class WifiCallingSuggestionActivity extends SettingsActivity { final WifiCallingQueryImsState queryState = new WifiCallingQueryImsState(context, SubscriptionManager.getDefaultVoiceSubscriptionId()); if (!ImsManager.isWfcEnabledByPlatform(context) || !MobileNetworkUtils.isWfcProvisionedOnDevice( SubscriptionManager.getDefaultVoiceSubscriptionId())) { return true; } return queryState.isEnabledByUser() && queryState.isAllowUserControl(); return (!queryState.isWifiCallingProvisioned()) || (queryState.isEnabledByUser() && queryState.isAllowUserControl()); } } tests/robotests/src/com/android/settings/network/ims/MockWifiCallingQueryImsState.java +14 −7 Original line number Diff line number Diff line Loading @@ -19,9 +19,6 @@ package com.android.settings.network.ims; import android.content.Context; import android.telephony.ims.ImsException; import com.android.ims.ImsManager; /** * Controller class for mock Wifi calling status */ Loading @@ -30,6 +27,7 @@ public class MockWifiCallingQueryImsState extends WifiCallingQueryImsState { private Boolean mIsTtyOnVolteEnabled; private Boolean mIsEnabledOnPlatform; private Boolean mIsProvisionedOnDevice; private Boolean mIsServiceStateReady; private Boolean mIsEnabledByUser; /** Loading @@ -42,10 +40,6 @@ public class MockWifiCallingQueryImsState extends WifiCallingQueryImsState { super(context, subId); } public ImsManager getImsManager(int subId) { return super.getImsManager(subId); } public void setIsTtyOnVolteEnabled(boolean enabled) { mIsTtyOnVolteEnabled = enabled; } Loading Loading @@ -84,6 +78,19 @@ public class MockWifiCallingQueryImsState extends WifiCallingQueryImsState { return super.isProvisionedOnDevice(subId); } public void setServiceStateReady(boolean isReady) { mIsServiceStateReady = isReady; } @Override boolean isServiceStateReady(int subId) throws InterruptedException, ImsException, IllegalArgumentException { if (mIsServiceStateReady != null) { return mIsServiceStateReady; } return super.isServiceStateReady(subId); } public void setIsEnabledByUser(boolean enabled) { mIsEnabledByUser = enabled; } Loading tests/robotests/src/com/android/settings/network/telephony/WifiCallingPreferenceControllerTest.java +5 −9 Original line number Diff line number Diff line Loading @@ -37,7 +37,6 @@ import android.telephony.ims.ImsMmTelManager; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.ims.ImsManager; import com.android.internal.R; import com.android.settings.core.BasePreferenceController; import com.android.settings.network.ims.MockWifiCallingQueryImsState; Loading @@ -60,8 +59,6 @@ public class WifiCallingPreferenceControllerTest { @Mock private TelephonyManager mTelephonyManager; @Mock private ImsManager mImsManager; @Mock private ImsMmTelManager mImsMmTelManager; @Mock private PreferenceScreen mPreferenceScreen; Loading @@ -79,9 +76,8 @@ public class WifiCallingPreferenceControllerTest { mContext = spy(RuntimeEnvironment.application); mQueryImsState = spy(new MockWifiCallingQueryImsState(mContext, SUB_ID)); doReturn(true).when(mQueryImsState).isEnabledByUser(); doReturn(mImsManager).when(mQueryImsState).getImsManager(anyInt()); mQueryImsState = new MockWifiCallingQueryImsState(mContext, SUB_ID); mQueryImsState.setIsEnabledByUser(true); mQueryImsState.setIsProvisionedOnDevice(true); mPreference = new Preference(mContext); Loading Loading @@ -109,7 +105,7 @@ public class WifiCallingPreferenceControllerTest { @Test public void updateState_noSimCallManager_setCorrectSummary() { mController.mSimCallManager = null; doReturn(true).when(mQueryImsState).isEnabledByUser(); mQueryImsState.setIsEnabledByUser(true); when(mImsMmTelManager.getVoWiFiRoamingModeSetting()).thenReturn( ImsMmTelManager.WIFI_MODE_WIFI_ONLY); when(mImsMmTelManager.getVoWiFiModeSetting()).thenReturn( Loading Loading @@ -149,7 +145,7 @@ public class WifiCallingPreferenceControllerTest { ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED); when(mImsMmTelManager.getVoWiFiModeSetting()).thenReturn( ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED); doReturn(true).when(mQueryImsState).isEnabledByUser(); mQueryImsState.setIsEnabledByUser(true); when(mTelephonyManager.isNetworkRoaming()).thenReturn(true); mController.updateState(mPreference); Loading @@ -166,7 +162,7 @@ public class WifiCallingPreferenceControllerTest { ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED); when(mImsMmTelManager.getVoWiFiModeSetting()).thenReturn( ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED); doReturn(true).when(mQueryImsState).isEnabledByUser(); mQueryImsState.setIsEnabledByUser(true); when(mTelephonyManager.isNetworkRoaming()).thenReturn(true); mController.updateState(mPreference); Loading Loading
src/com/android/settings/network/ims/WifiCallingQueryImsState.java +9 −12 Original line number Diff line number Diff line Loading @@ -27,10 +27,6 @@ import android.util.Log; import androidx.annotation.VisibleForTesting; import com.android.ims.ImsManager; import com.android.settings.network.SubscriptionUtil; import com.android.settings.network.telephony.MobileNetworkUtils; /** * Controller class for querying Wifi calling status */ Loading Loading @@ -66,12 +62,6 @@ public class WifiCallingQueryImsState extends ImsQueryController { return (new ImsQueryWfcUserSetting(subId)).query(); } @VisibleForTesting ImsManager getImsManager(int subId) { return ImsManager.getInstance(mContext, SubscriptionUtil.getPhoneId(mContext, subId)); } /** * Check whether Wifi Calling is a supported feature on this subscription * Loading Loading @@ -107,8 +97,15 @@ public class WifiCallingQueryImsState extends ImsQueryController { if (!SubscriptionManager.isValidSubscriptionId(mSubId)) { return false; } return isWifiCallingProvisioned() && MobileNetworkUtils.isImsServiceStateReady(getImsManager(mSubId)); if (!isWifiCallingProvisioned()) { return false; } try { return isServiceStateReady(mSubId); } catch (InterruptedException | IllegalArgumentException | ImsException exception) { Log.w(LOG_TAG, "fail to get WFC service status. subId=" + mSubId, exception); } return false; } /** Loading
src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java +1 −13 Original line number Diff line number Diff line Loading @@ -54,9 +54,7 @@ import com.android.settings.SettingsActivity; 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; /** Loading Loading @@ -100,7 +98,6 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment private boolean mUseWfcHomeModeForRoaming = false; private int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; private com.android.ims.ImsManager mImsManager; private ImsMmTelManager mImsMmTelManager; private ProvisioningManager mProvisioningManager; private TelephonyManager mTelephonyManager; Loading Loading @@ -270,12 +267,6 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment return ProvisioningManager.createForSubscriptionId(mSubId); } @VisibleForTesting com.android.ims.ImsManager getImsManager() { return com.android.ims.ImsManager.getInstance(getActivity(), SubscriptionUtil.getPhoneId(getActivity(), mSubId)); } @VisibleForTesting ImsMmTelManager getImsMmTelManager() { if (!SubscriptionManager.isValidSubscriptionId(mSubId)) { Loading @@ -299,12 +290,9 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment FRAGMENT_BUNDLE_SUBID, SubscriptionManager.INVALID_SUBSCRIPTION_ID); } mImsManager = getImsManager(); mProvisioningManager = getImsProvisioningManager(); mImsMmTelManager = getImsMmTelManager(); mTelephonyManager = getActivity().getSystemService(TelephonyManager.class); mButtonWfcMode = findPreference(BUTTON_WFC_MODE); mButtonWfcMode.setOnPreferenceChangeListener(this); Loading Loading @@ -341,7 +329,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment @VisibleForTesting boolean isWfcProvisionedOnDevice() { return MobileNetworkUtils.isWfcProvisionedOnDevice(mSubId); return queryImsState(mSubId).isWifiCallingProvisioned(); } private void updateBody() { Loading
src/com/android/settings/wifi/calling/WifiCallingSuggestionActivity.java +2 −8 Original line number Diff line number Diff line Loading @@ -19,10 +19,8 @@ package com.android.settings.wifi.calling; import android.content.Context; import android.telephony.SubscriptionManager; import com.android.ims.ImsManager; import com.android.settings.SettingsActivity; import com.android.settings.network.ims.WifiCallingQueryImsState; import com.android.settings.network.telephony.MobileNetworkUtils; public class WifiCallingSuggestionActivity extends SettingsActivity { Loading @@ -30,11 +28,7 @@ public class WifiCallingSuggestionActivity extends SettingsActivity { final WifiCallingQueryImsState queryState = new WifiCallingQueryImsState(context, SubscriptionManager.getDefaultVoiceSubscriptionId()); if (!ImsManager.isWfcEnabledByPlatform(context) || !MobileNetworkUtils.isWfcProvisionedOnDevice( SubscriptionManager.getDefaultVoiceSubscriptionId())) { return true; } return queryState.isEnabledByUser() && queryState.isAllowUserControl(); return (!queryState.isWifiCallingProvisioned()) || (queryState.isEnabledByUser() && queryState.isAllowUserControl()); } }
tests/robotests/src/com/android/settings/network/ims/MockWifiCallingQueryImsState.java +14 −7 Original line number Diff line number Diff line Loading @@ -19,9 +19,6 @@ package com.android.settings.network.ims; import android.content.Context; import android.telephony.ims.ImsException; import com.android.ims.ImsManager; /** * Controller class for mock Wifi calling status */ Loading @@ -30,6 +27,7 @@ public class MockWifiCallingQueryImsState extends WifiCallingQueryImsState { private Boolean mIsTtyOnVolteEnabled; private Boolean mIsEnabledOnPlatform; private Boolean mIsProvisionedOnDevice; private Boolean mIsServiceStateReady; private Boolean mIsEnabledByUser; /** Loading @@ -42,10 +40,6 @@ public class MockWifiCallingQueryImsState extends WifiCallingQueryImsState { super(context, subId); } public ImsManager getImsManager(int subId) { return super.getImsManager(subId); } public void setIsTtyOnVolteEnabled(boolean enabled) { mIsTtyOnVolteEnabled = enabled; } Loading Loading @@ -84,6 +78,19 @@ public class MockWifiCallingQueryImsState extends WifiCallingQueryImsState { return super.isProvisionedOnDevice(subId); } public void setServiceStateReady(boolean isReady) { mIsServiceStateReady = isReady; } @Override boolean isServiceStateReady(int subId) throws InterruptedException, ImsException, IllegalArgumentException { if (mIsServiceStateReady != null) { return mIsServiceStateReady; } return super.isServiceStateReady(subId); } public void setIsEnabledByUser(boolean enabled) { mIsEnabledByUser = enabled; } Loading
tests/robotests/src/com/android/settings/network/telephony/WifiCallingPreferenceControllerTest.java +5 −9 Original line number Diff line number Diff line Loading @@ -37,7 +37,6 @@ import android.telephony.ims.ImsMmTelManager; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.ims.ImsManager; import com.android.internal.R; import com.android.settings.core.BasePreferenceController; import com.android.settings.network.ims.MockWifiCallingQueryImsState; Loading @@ -60,8 +59,6 @@ public class WifiCallingPreferenceControllerTest { @Mock private TelephonyManager mTelephonyManager; @Mock private ImsManager mImsManager; @Mock private ImsMmTelManager mImsMmTelManager; @Mock private PreferenceScreen mPreferenceScreen; Loading @@ -79,9 +76,8 @@ public class WifiCallingPreferenceControllerTest { mContext = spy(RuntimeEnvironment.application); mQueryImsState = spy(new MockWifiCallingQueryImsState(mContext, SUB_ID)); doReturn(true).when(mQueryImsState).isEnabledByUser(); doReturn(mImsManager).when(mQueryImsState).getImsManager(anyInt()); mQueryImsState = new MockWifiCallingQueryImsState(mContext, SUB_ID); mQueryImsState.setIsEnabledByUser(true); mQueryImsState.setIsProvisionedOnDevice(true); mPreference = new Preference(mContext); Loading Loading @@ -109,7 +105,7 @@ public class WifiCallingPreferenceControllerTest { @Test public void updateState_noSimCallManager_setCorrectSummary() { mController.mSimCallManager = null; doReturn(true).when(mQueryImsState).isEnabledByUser(); mQueryImsState.setIsEnabledByUser(true); when(mImsMmTelManager.getVoWiFiRoamingModeSetting()).thenReturn( ImsMmTelManager.WIFI_MODE_WIFI_ONLY); when(mImsMmTelManager.getVoWiFiModeSetting()).thenReturn( Loading Loading @@ -149,7 +145,7 @@ public class WifiCallingPreferenceControllerTest { ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED); when(mImsMmTelManager.getVoWiFiModeSetting()).thenReturn( ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED); doReturn(true).when(mQueryImsState).isEnabledByUser(); mQueryImsState.setIsEnabledByUser(true); when(mTelephonyManager.isNetworkRoaming()).thenReturn(true); mController.updateState(mPreference); Loading @@ -166,7 +162,7 @@ public class WifiCallingPreferenceControllerTest { ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED); when(mImsMmTelManager.getVoWiFiModeSetting()).thenReturn( ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED); doReturn(true).when(mQueryImsState).isEnabledByUser(); mQueryImsState.setIsEnabledByUser(true); when(mTelephonyManager.isNetworkRoaming()).thenReturn(true); mController.updateState(mPreference); Loading