From b90fe0b04cda3647f8ab81bb4444cb213e793530 Mon Sep 17 00:00:00 2001 From: Bonian Chen Date: Fri, 20 Mar 2020 23:30:17 +0800 Subject: [PATCH] [Settings] Apply ImsQueryController#isServiceStateReady to VoLte Apply ImsQueryController#isServiceStateReady() to VoLte part Bug: 140542283 Test: m RunSettingsRoboTests -j ROBOTEST_FILTER=Enhanced4gBasePreferenceControllerTest Test: m RunSettingsRoboTests -j ROBOTEST_FILTER=Enhanced4gLteSliceHelperTest Change-Id: I1535df837f2e015cd1afb0891fd69a98c7d6991a --- .../network/ims/VolteQueryImsState.java | 21 ++++++++---------- .../network/ims/MockVolteQueryImsState.java | 22 ++++++++++++------- ...nhanced4gBasePreferenceControllerTest.java | 17 +++++--------- .../Enhanced4gLteSliceHelperTest.java | 11 +++------- 4 files changed, 31 insertions(+), 40 deletions(-) diff --git a/src/com/android/settings/network/ims/VolteQueryImsState.java b/src/com/android/settings/network/ims/VolteQueryImsState.java index 1fa72d7fb4d..167b4b13a3e 100644 --- a/src/com/android/settings/network/ims/VolteQueryImsState.java +++ b/src/com/android/settings/network/ims/VolteQueryImsState.java @@ -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 Volte status */ @@ -66,12 +62,6 @@ public class VolteQueryImsState extends ImsQueryController { return (new ImsQueryEnhanced4gLteModeUserSetting(subId)).query(); } - @VisibleForTesting - ImsManager getImsManager(int subId) { - return ImsManager.getInstance(mContext, - SubscriptionUtil.getPhoneId(mContext, subId)); - } - /** * Check whether VoLTE has been provisioned or not on this subscription * @@ -101,8 +91,15 @@ public class VolteQueryImsState extends ImsQueryController { if (!SubscriptionManager.isValidSubscriptionId(mSubId)) { return false; } - return isVoLteProvisioned() - && MobileNetworkUtils.isImsServiceStateReady(getImsManager(mSubId)); + if (!isVoLteProvisioned()) { + return false; + } + try { + return isServiceStateReady(mSubId); + } catch (InterruptedException | IllegalArgumentException | ImsException exception) { + Log.w(LOG_TAG, "fail to get VoLte service status. subId=" + mSubId, exception); + } + return false; } /** diff --git a/tests/robotests/src/com/android/settings/network/ims/MockVolteQueryImsState.java b/tests/robotests/src/com/android/settings/network/ims/MockVolteQueryImsState.java index 97d76ca7beb..515ab5b659b 100644 --- a/tests/robotests/src/com/android/settings/network/ims/MockVolteQueryImsState.java +++ b/tests/robotests/src/com/android/settings/network/ims/MockVolteQueryImsState.java @@ -19,10 +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 VoLte status */ @@ -31,6 +27,7 @@ public class MockVolteQueryImsState extends VolteQueryImsState { private Boolean mIsTtyOnVolteEnabled; private Boolean mIsSupported; private Boolean mIsProvisionedOnDevice; + private Boolean mIsServiceStateReady; private Boolean mIsEnabledByUser; /** @@ -43,10 +40,6 @@ public class MockVolteQueryImsState extends VolteQueryImsState { super(context, subId); } - public ImsManager getImsManager(int subId) { - return super.getImsManager(subId); - } - public void setIsTtyOnVolteEnabled(boolean enabled) { mIsTtyOnVolteEnabled = enabled; } @@ -84,6 +77,19 @@ public class MockVolteQueryImsState extends VolteQueryImsState { 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; } diff --git a/tests/robotests/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceControllerTest.java index ba71a7952fe..598f30ae06d 100644 --- a/tests/robotests/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceControllerTest.java @@ -28,12 +28,9 @@ import android.telephony.CarrierConfigManager; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.telephony.ims.ProvisioningManager; -import android.telephony.ims.feature.MmTelFeature; -import android.telephony.ims.stub.ImsRegistrationImplBase; import androidx.preference.SwitchPreference; -import com.android.ims.ImsManager; import com.android.settings.core.BasePreferenceController; import com.android.settings.network.ims.MockVolteQueryImsState; import com.android.settingslib.RestrictedSwitchPreference; @@ -59,8 +56,6 @@ public class Enhanced4gBasePreferenceControllerTest { @Mock private CarrierConfigManager mCarrierConfigManager; @Mock - private ImsManager mImsManager; - @Mock private ProvisioningManager mProvisioningManager; private MockVolteQueryImsState mQueryImsState; @@ -86,9 +81,10 @@ public class Enhanced4gBasePreferenceControllerTest { doReturn(mCarrierConfig).when(mCarrierConfigManager).getConfigForSubId(SUB_ID); mQueryImsState = spy(new MockVolteQueryImsState(mContext, SUB_ID)); - doReturn(mImsManager).when(mQueryImsState).getImsManager(anyInt()); mQueryImsState.setEnabledByPlatform(true); mQueryImsState.setIsProvisionedOnDevice(true); + mQueryImsState.setIsTtyOnVolteEnabled(true); + mQueryImsState.setServiceStateReady(true); mQueryImsState.setIsEnabledByUser(true); mPreference = new RestrictedSwitchPreference(mContext); @@ -100,6 +96,9 @@ public class Enhanced4gBasePreferenceControllerTest { @Test public void getAvailabilityStatus_default_returnUnavailable() { + mQueryImsState.setEnabledByPlatform(false); + mQueryImsState.setIsProvisionedOnDevice(false); + mController.init(SUB_ID); assertThat(mController.getAvailabilityStatus()).isEqualTo( @@ -109,9 +108,6 @@ public class Enhanced4gBasePreferenceControllerTest { @Test public void getAvailabilityStatus_volteDisabled_returnUnavailable() { mQueryImsState.setEnabledByPlatform(false); - doReturn(true).when(mProvisioningManager).getProvisioningStatusForCapability( - MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE, - ImsRegistrationImplBase.REGISTRATION_TECH_LTE); assertThat(mController.getAvailabilityStatus()).isEqualTo( BasePreferenceController.CONDITIONALLY_UNAVAILABLE); @@ -123,7 +119,6 @@ public class Enhanced4gBasePreferenceControllerTest { mPreference.setEnabled(false); mCarrierConfig.putInt(CarrierConfigManager.KEY_ENHANCED_4G_LTE_TITLE_VARIANT_INT, 1); mController.mCallState = TelephonyManager.CALL_STATE_IDLE; - doReturn(true).when(mImsManager).isNonTtyOrTtyOnVolteEnabled(); mCarrierConfig.putBoolean(CarrierConfigManager.KEY_EDITABLE_ENHANCED_4G_LTE_BOOL, true); mController.updateState(mPreference); @@ -135,8 +130,6 @@ public class Enhanced4gBasePreferenceControllerTest { public void updateState_configOn_prefChecked() { mQueryImsState.setIsEnabledByUser(true); mPreference.setChecked(false); - doReturn(true).when(mImsManager).isEnhanced4gLteModeSettingEnabledByUser(); - doReturn(true).when(mImsManager).isNonTtyOrTtyOnVolteEnabled(); mController.updateState(mPreference); diff --git a/tests/robotests/src/com/android/settings/network/telephony/Enhanced4gLteSliceHelperTest.java b/tests/robotests/src/com/android/settings/network/telephony/Enhanced4gLteSliceHelperTest.java index 944d8e623b2..50446ad2f14 100644 --- a/tests/robotests/src/com/android/settings/network/telephony/Enhanced4gLteSliceHelperTest.java +++ b/tests/robotests/src/com/android/settings/network/telephony/Enhanced4gLteSliceHelperTest.java @@ -43,7 +43,6 @@ import androidx.slice.core.SliceAction; import androidx.slice.core.SliceQuery; import androidx.slice.widget.SliceLiveData; -import com.android.ims.ImsManager; import com.android.settings.R; import com.android.settings.network.ims.MockVolteQueryImsState; import com.android.settings.slices.CustomSliceRegistry; @@ -73,8 +72,6 @@ public class Enhanced4gLteSliceHelperTest { @Mock private CarrierConfigManager mMockCarrierConfigManager; - @Mock - private ImsManager mMockImsManager; @Mock private ProvisioningManager mProvisioningManager; @@ -109,9 +106,10 @@ public class Enhanced4gLteSliceHelperTest { mReceiver = spy(new SliceBroadcastReceiver()); mQueryImsState = spy(new MockVolteQueryImsState(mContext, SUB_ID)); - doReturn(mMockImsManager).when(mQueryImsState).getImsManager(anyInt()); mQueryImsState.setEnabledByPlatform(true); mQueryImsState.setIsProvisionedOnDevice(true); + mQueryImsState.setIsTtyOnVolteEnabled(true); + mQueryImsState.setServiceStateReady(true); mQueryImsState.setIsEnabledByUser(true); mEnhanced4gLteSliceHelper = spy(new FakeEnhanced4gLteSliceHelper(mContext)); @@ -149,7 +147,6 @@ public class Enhanced4gLteSliceHelperTest { public void test_CreateEnhanced4gLteSlice_success() { mQueryImsState.setEnabledByPlatform(true); mQueryImsState.setIsProvisionedOnDevice(true); - when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockCarrierConfigManager.getConfigForSubId(1)).thenReturn(null); final Slice slice = mEnhanced4gLteSliceHelper.createEnhanced4gLteSlice( @@ -163,7 +160,6 @@ public class Enhanced4gLteSliceHelperTest { public void test_SettingSliceProvider_getsRightSliceEnhanced4gLte() { mQueryImsState.setEnabledByPlatform(true); mQueryImsState.setIsProvisionedOnDevice(true); - when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockCarrierConfigManager.getConfigForSubId(1)).thenReturn(null); when(mSlicesFeatureProvider.getNewEnhanced4gLteSliceHelper(mContext)) .thenReturn(mEnhanced4gLteSliceHelper); @@ -180,7 +176,6 @@ public class Enhanced4gLteSliceHelperTest { mQueryImsState.setEnabledByPlatform(true); mQueryImsState.setIsProvisionedOnDevice(true); mQueryImsState.setIsEnabledByUser(false); - when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mSlicesFeatureProvider.getNewEnhanced4gLteSliceHelper(mContext)) .thenReturn(mEnhanced4gLteSliceHelper); @@ -194,7 +189,7 @@ public class Enhanced4gLteSliceHelperTest { // change the setting mReceiver.onReceive(mContext, intent); - verify((mMockImsManager)).setEnhanced4gLteModeSetting( + verify(mEnhanced4gLteSliceHelper).setEnhanced4gLteModeSetting(anyInt(), mEnhanced4gLteSettingCaptor.capture()); // assert the change