From fb7274a3082a71c96ae565edb02d2afb77d7c861 Mon Sep 17 00:00:00 2001 From: Bonian Chen Date: Mon, 30 Mar 2020 13:41:47 +0800 Subject: [PATCH] [Settings] Replace ImsManager#isVtEnabledByPlatform() Replace ImsManager#isVtEnabledByPlatform() by ImsMmTelManager.isSupported(). Bug: 140542283 Test: m RunSettingsRoboTests -j ROBOTEST_FILTER=VideoCallingPreferenceControllerTest Change-Id: Ife5100ef288fbad6fc818e8fbdf8192c42d495b2 --- .../settings/network/ims/VtQueryImsState.java | 22 ++----------- .../network/ims/MockVtQueryImsState.java | 21 ++++++++---- .../VideoCallingPreferenceControllerTest.java | 32 ++++++++----------- 3 files changed, 30 insertions(+), 45 deletions(-) diff --git a/src/com/android/settings/network/ims/VtQueryImsState.java b/src/com/android/settings/network/ims/VtQueryImsState.java index f6de5126c98..5c48ff00380 100644 --- a/src/com/android/settings/network/ims/VtQueryImsState.java +++ b/src/com/android/settings/network/ims/VtQueryImsState.java @@ -27,9 +27,6 @@ import android.util.Log; import androidx.annotation.VisibleForTesting; -import com.android.ims.ImsManager; -import com.android.settings.network.SubscriptionUtil; - /** * Controller class for querying VT status */ @@ -65,12 +62,6 @@ public class VtQueryImsState extends ImsQueryController { return (new ImsQueryVtUserSetting(subId)).query(); } - @VisibleForTesting - ImsManager getImsManager(int subId) { - return ImsManager.getInstance(mContext, - SubscriptionUtil.getPhoneId(mContext, subId)); - } - /** * Check whether Video Call can be perform or not on this subscription * @@ -81,19 +72,10 @@ public class VtQueryImsState extends ImsQueryController { return false; } - final ImsManager imsManager = getImsManager(mSubId); - if (imsManager == null) { - return false; - } - - if (!imsManager.isVtEnabledByPlatform()) { - return false; - } - try { - return isServiceStateReady(mSubId); + return isEnabledByPlatform(mSubId) && isServiceStateReady(mSubId); } catch (InterruptedException | IllegalArgumentException | ImsException exception) { - Log.w(LOG_TAG, "fail to get Vt service status. subId=" + mSubId, exception); + Log.w(LOG_TAG, "fail to get Vt ready. subId=" + mSubId, exception); } return false; } diff --git a/tests/robotests/src/com/android/settings/network/ims/MockVtQueryImsState.java b/tests/robotests/src/com/android/settings/network/ims/MockVtQueryImsState.java index 3daf6cb0f1e..0949f1c0262 100644 --- a/tests/robotests/src/com/android/settings/network/ims/MockVtQueryImsState.java +++ b/tests/robotests/src/com/android/settings/network/ims/MockVtQueryImsState.java @@ -19,15 +19,13 @@ package com.android.settings.network.ims; import android.content.Context; import android.telephony.ims.ImsException; -import com.android.ims.ImsManager; - - /** * Controller class for mock VT status */ public class MockVtQueryImsState extends VtQueryImsState { private Boolean mIsTtyOnVolteEnabled; + private Boolean mIsEnabledOnPlatform; private Boolean mIsProvisionedOnDevice; private Boolean mIsEnabledByUser; private Boolean mIsServiceStateReady; @@ -42,10 +40,6 @@ public class MockVtQueryImsState extends VtQueryImsState { super(context, subId); } - public ImsManager getImsManager(int subId) { - return super.getImsManager(subId); - } - public void setIsTtyOnVolteEnabled(boolean enabled) { mIsTtyOnVolteEnabled = enabled; } @@ -58,6 +52,19 @@ public class MockVtQueryImsState extends VtQueryImsState { return super.isTtyOnVolteEnabled(subId); } + public void setIsEnabledByPlatform(boolean isEnabled) { + mIsEnabledOnPlatform = isEnabled; + } + + @Override + boolean isEnabledByPlatform(int subId) throws InterruptedException, ImsException, + IllegalArgumentException { + if (mIsEnabledOnPlatform != null) { + return mIsEnabledOnPlatform; + } + return super.isEnabledByPlatform(subId); + } + public void setIsProvisionedOnDevice(boolean isProvisioned) { mIsProvisionedOnDevice = isProvisioned; } diff --git a/tests/robotests/src/com/android/settings/network/telephony/VideoCallingPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/VideoCallingPreferenceControllerTest.java index 04fc4b94889..0aaf0d25069 100644 --- a/tests/robotests/src/com/android/settings/network/telephony/VideoCallingPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/telephony/VideoCallingPreferenceControllerTest.java @@ -31,9 +31,8 @@ import android.telephony.ims.ProvisioningManager; import androidx.preference.PreferenceScreen; import androidx.preference.SwitchPreference; -import com.android.ims.ImsManager; +import com.android.settings.network.ims.MockVolteQueryImsState; import com.android.settings.network.ims.MockVtQueryImsState; -import com.android.settings.network.ims.VolteQueryImsState; import org.junit.Before; import org.junit.Test; @@ -50,8 +49,6 @@ public class VideoCallingPreferenceControllerTest { @Mock private TelephonyManager mTelephonyManager; @Mock - private ImsManager mImsManager; - @Mock private ProvisioningManager mProvisioningManager; @Mock private CarrierConfigManager mCarrierConfigManager; @@ -59,7 +56,7 @@ public class VideoCallingPreferenceControllerTest { private PreferenceScreen mPreferenceScreen; private MockVtQueryImsState mQueryImsState; - private VolteQueryImsState mQueryVoLteState; + private MockVolteQueryImsState mQueryVoLteState; private VideoCallingPreferenceController mController; private PersistableBundle mCarrierConfig; @@ -81,12 +78,11 @@ public class VideoCallingPreferenceControllerTest { CarrierConfigManager.KEY_IGNORE_DATA_ENABLED_CHANGED_FOR_VIDEO_CALLS, true); doReturn(mCarrierConfig).when(mCarrierConfigManager).getConfigForSubId(SUB_ID); - mQueryImsState = spy(new MockVtQueryImsState(mContext, SUB_ID)); - doReturn(true).when(mQueryImsState).isEnabledByUser(); - doReturn(mImsManager).when(mQueryImsState).getImsManager(anyInt()); + mQueryImsState = new MockVtQueryImsState(mContext, SUB_ID); + mQueryImsState.setIsEnabledByUser(true); - mQueryVoLteState = spy(new VolteQueryImsState(mContext, SUB_ID)); - doReturn(true).when(mQueryVoLteState).isEnabledByUser(); + mQueryVoLteState = new MockVolteQueryImsState(mContext, SUB_ID); + mQueryVoLteState.setIsEnabledByUser(true); mPreference = new SwitchPreference(mContext); mController = spy(new VideoCallingPreferenceController(mContext, "wifi_calling")); @@ -95,7 +91,7 @@ public class VideoCallingPreferenceControllerTest { doReturn(mQueryVoLteState).when(mController).queryVoLteState(anyInt()); mPreference.setKey(mController.getPreferenceKey()); - doReturn(true).when(mImsManager).isVtEnabledByPlatform(); + mQueryImsState.setIsEnabledByPlatform(true); mQueryImsState.setIsProvisionedOnDevice(true); mQueryImsState.setServiceStateReady(true); doReturn(true).when(mTelephonyManager).isDataEnabled(); @@ -111,7 +107,7 @@ public class VideoCallingPreferenceControllerTest { @Test public void isVideoCallEnabled_disabledByPlatform_returnFalse() { mQueryImsState.setIsProvisionedOnDevice(false); - doReturn(false).when(mImsManager).isVtEnabledByPlatform(); + mQueryImsState.setIsEnabledByPlatform(false); assertThat(mController.isVideoCallEnabled(SUB_ID)).isFalse(); } @@ -127,8 +123,8 @@ public class VideoCallingPreferenceControllerTest { @Test public void updateState_4gLteOff_disabled() { - doReturn(false).when(mQueryImsState).isEnabledByUser(); - doReturn(false).when(mQueryVoLteState).isEnabledByUser(); + mQueryImsState.setIsEnabledByUser(false); + mQueryVoLteState.setIsEnabledByUser(false); mController.updateState(mPreference); @@ -138,9 +134,9 @@ public class VideoCallingPreferenceControllerTest { @Test public void updateState_4gLteOnWithoutCall_checked() { - doReturn(true).when(mQueryImsState).isEnabledByUser(); - doReturn(true).when(mQueryVoLteState).isEnabledByUser(); - doReturn(true).when(mImsManager).isNonTtyOrTtyOnVolteEnabled(); + mQueryImsState.setIsEnabledByUser(true); + mQueryVoLteState.setIsEnabledByUser(true); + mQueryImsState.setIsTtyOnVolteEnabled(true); mController.mCallState = TelephonyManager.CALL_STATE_IDLE; mController.updateState(mPreference); @@ -152,7 +148,7 @@ public class VideoCallingPreferenceControllerTest { @Test public void displayPreference_notAvailable_setPreferenceInvisible() { - doReturn(false).when(mImsManager).isVtEnabledByPlatform(); + mQueryImsState.setIsEnabledByPlatform(false); mController.displayPreference(mPreferenceScreen);