Loading src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java +30 −4 Original line number Diff line number Diff line Loading @@ -23,6 +23,9 @@ import android.telephony.CarrierConfigManager; import android.telephony.PhoneStateListener; 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.annotation.VisibleForTesting; import androidx.preference.Preference; Loading Loading @@ -50,6 +53,8 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc @VisibleForTesting ImsManager mImsManager; private PhoneCallStateListener mPhoneStateListener; @VisibleForTesting Integer mCallState; private final List<On4gLteUpdateListener> m4gLteListeners; protected static final int MODE_NONE = -1; Loading @@ -70,7 +75,8 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc return this; } mSubId = subId; mTelephonyManager = TelephonyManager.from(mContext).createForSubscriptionId(mSubId); mTelephonyManager = mContext.getSystemService(TelephonyManager.class) .createForSubscriptionId(mSubId); mCarrierConfig = mCarrierConfigManager.getConfigForSubId(mSubId); if (mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { mImsManager = ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(mSubId)); Loading @@ -86,6 +92,11 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc return this; } @VisibleForTesting ProvisioningManager getProvisioningManager(int subId) { return ProvisioningManager.createForSubscriptionId(subId); } @Override public int getAvailabilityStatus(int subId) { init(subId); Loading @@ -96,7 +107,7 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc final boolean isVisible = subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID && mImsManager != null && carrierConfig != null && mImsManager.isVolteEnabledByPlatform() && mImsManager.isVolteProvisionedOnDevice() && isVolteProvisionedOnDevice(mSubId) && MobileNetworkUtils.isImsServiceStateReady(mImsManager) && !carrierConfig.getBoolean(CarrierConfigManager.KEY_HIDE_ENHANCED_4G_LTE_BOOL); return isVisible Loading Loading @@ -159,13 +170,26 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc private boolean isPrefEnabled() { return mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID && mTelephonyManager.getCallState(mSubId) == TelephonyManager.CALL_STATE_IDLE && (mCallState != null) && (mCallState == TelephonyManager.CALL_STATE_IDLE) && mImsManager != null && mImsManager.isNonTtyOrTtyOnVolteEnabled() && mCarrierConfig.getBoolean( CarrierConfigManager.KEY_EDITABLE_ENHANCED_4G_LTE_BOOL); } private boolean isVolteProvisionedOnDevice(int subId) { if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { return true; } final ProvisioningManager provisioningMgr = getProvisioningManager(subId); if (provisioningMgr == null) { return true; } return provisioningMgr.getProvisioningStatusForCapability( MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE, ImsRegistrationImplBase.REGISTRATION_TECH_LTE); } private class PhoneCallStateListener extends PhoneStateListener { public PhoneCallStateListener(Looper looper) { Loading @@ -174,15 +198,17 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc @Override public void onCallStateChanged(int state, String incomingNumber) { mCallState = state; updateState(mPreference); } public void register(int subId) { mSubId = subId; Enhanced4gBasePreferenceController.this.mSubId = subId; mTelephonyManager.listen(this, PhoneStateListener.LISTEN_CALL_STATE); } public void unregister() { mCallState = null; mTelephonyManager.listen(this, PhoneStateListener.LISTEN_NONE); } } Loading src/com/android/settings/network/telephony/Enhanced4gLteSliceHelper.java +20 −3 Original line number Diff line number Diff line Loading @@ -27,6 +27,9 @@ import android.net.Uri; import android.os.PersistableBundle; import android.telephony.CarrierConfigManager; import android.telephony.SubscriptionManager; import android.telephony.ims.ProvisioningManager; import android.telephony.ims.feature.MmTelFeature; import android.telephony.ims.stub.ImsRegistrationImplBase; import android.util.Log; import androidx.annotation.VisibleForTesting; Loading Loading @@ -122,7 +125,7 @@ public class Enhanced4gLteSliceHelper { final ImsManager imsManager = getImsManager(subId); if (!imsManager.isVolteEnabledByPlatform() || !imsManager.isVolteProvisionedOnDevice()) { || !isVolteProvisionedOnDevice(subId)) { Log.d(TAG, "Setting is either not provisioned or not enabled by Platform"); return null; } Loading Loading @@ -188,6 +191,11 @@ public class Enhanced4gLteSliceHelper { return ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(subId)); } @VisibleForTesting ProvisioningManager getProvisioningManager(int subId) { return ProvisioningManager.createForSubscriptionId(subId); } /** * Handles Enhanced 4G LTE mode setting change from Enhanced 4G LTE slice and posts * notification. Should be called when intent action is ACTION_ENHANCED_4G_LTE_CHANGED Loading @@ -199,8 +207,7 @@ public class Enhanced4gLteSliceHelper { if (subId > SubscriptionManager.INVALID_SUBSCRIPTION_ID) { final ImsManager imsManager = getImsManager(subId); if (imsManager.isVolteEnabledByPlatform() && imsManager.isVolteProvisionedOnDevice()) { if (imsManager.isVolteEnabledByPlatform() && isVolteProvisionedOnDevice(subId)) { final boolean currentValue = imsManager.isEnhanced4gLteModeSettingEnabledByUser() && imsManager.isNonTtyOrTtyOnVolteEnabled(); final boolean newValue = intent.getBooleanExtra(EXTRA_TOGGLE_STATE, Loading Loading @@ -278,5 +285,15 @@ public class Enhanced4gLteSliceHelper { intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); return PendingIntent.getActivity(mContext, 0 /* requestCode */, intent, 0 /* flags */); } private boolean isVolteProvisionedOnDevice(int subId) { final ProvisioningManager provisioningMgr = getProvisioningManager(subId); if (provisioningMgr == null) { return true; } return provisioningMgr.getProvisioningStatusForCapability( MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE, ImsRegistrationImplBase.REGISTRATION_TECH_LTE); } } src/com/android/settings/network/telephony/VideoCallingPreferenceController.java +23 −2 Original line number Diff line number Diff line Loading @@ -23,6 +23,9 @@ import android.telephony.CarrierConfigManager; import android.telephony.PhoneStateListener; 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.annotation.VisibleForTesting; import androidx.preference.Preference; Loading Loading @@ -133,6 +136,24 @@ public class VideoCallingPreferenceController extends TelephonyTogglePreferenceC return isVideoCallEnabled(subId, imsManager); } @VisibleForTesting ProvisioningManager getProvisioningManager(int subId) { return ProvisioningManager.createForSubscriptionId(subId); } private boolean isVtProvisionedOnDevice(int subId) { if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { return true; } final ProvisioningManager provisioningMgr = getProvisioningManager(subId); if (provisioningMgr == null) { return true; } return provisioningMgr.getProvisioningStatusForCapability( MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VIDEO, ImsRegistrationImplBase.REGISTRATION_TECH_LTE); } @VisibleForTesting boolean isVideoCallEnabled(int subId, ImsManager imsManager) { final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(subId); Loading @@ -142,7 +163,7 @@ public class VideoCallingPreferenceController extends TelephonyTogglePreferenceC } return carrierConfig != null && imsManager != null && imsManager.isVtEnabledByPlatform() && imsManager.isVtProvisionedOnDevice() && isVtProvisionedOnDevice(subId) && MobileNetworkUtils.isImsServiceStateReady(imsManager) && (carrierConfig.getBoolean( CarrierConfigManager.KEY_IGNORE_DATA_ENABLED_CHANGED_FOR_VIDEO_CALLS) Loading @@ -167,7 +188,7 @@ public class VideoCallingPreferenceController extends TelephonyTogglePreferenceC } public void register(int subId) { mSubId = subId; VideoCallingPreferenceController.this.mSubId = subId; mTelephonyManager.listen(this, PhoneStateListener.LISTEN_CALL_STATE); } Loading tests/robotests/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceControllerTest.java +15 −3 Original line number Diff line number Diff line Loading @@ -26,6 +26,9 @@ import android.os.PersistableBundle; 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; Loading Loading @@ -55,6 +58,8 @@ public class Enhanced4gBasePreferenceControllerTest { private CarrierConfigManager mCarrierConfigManager; @Mock private ImsManager mImsManager; @Mock private ProvisioningManager mProvisioningManager; private Enhanced4gLtePreferenceController mController; private SwitchPreference mPreference; Loading @@ -77,7 +82,12 @@ public class Enhanced4gBasePreferenceControllerTest { doReturn(mCarrierConfig).when(mCarrierConfigManager).getConfigForSubId(SUB_ID); mPreference = new RestrictedSwitchPreference(mContext); mController = new Enhanced4gLtePreferenceController(mContext, "roaming"); mController = new Enhanced4gLtePreferenceController(mContext, "roaming") { @Override ProvisioningManager getProvisioningManager(int subId) { return mProvisioningManager; } }; mController.init(SUB_ID); mController.mImsManager = mImsManager; mPreference.setKey(mController.getPreferenceKey()); Loading @@ -94,7 +104,9 @@ public class Enhanced4gBasePreferenceControllerTest { @Test public void getAvailabilityStatus_volteDisabled_returnUnavailable() { doReturn(false).when(mImsManager).isVolteEnabledByPlatform(); doReturn(true).when(mImsManager).isVolteProvisionedOnDevice(); doReturn(true).when(mProvisioningManager).getProvisioningStatusForCapability( MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE, ImsRegistrationImplBase.REGISTRATION_TECH_LTE); assertThat(mController.getAvailabilityStatus()).isEqualTo( BasePreferenceController.CONDITIONALLY_UNAVAILABLE); Loading @@ -104,7 +116,7 @@ public class Enhanced4gBasePreferenceControllerTest { public void updateState_configEnabled_prefEnabled() { mPreference.setEnabled(false); mCarrierConfig.putInt(CarrierConfigManager.KEY_ENHANCED_4G_LTE_TITLE_VARIANT_INT, 1); doReturn(TelephonyManager.CALL_STATE_IDLE).when(mTelephonyManager).getCallState(SUB_ID); mController.mCallState = TelephonyManager.CALL_STATE_IDLE; doReturn(true).when(mImsManager).isNonTtyOrTtyOnVolteEnabled(); mCarrierConfig.putBoolean(CarrierConfigManager.KEY_EDITABLE_ENHANCED_4G_LTE_BOOL, true); Loading tests/robotests/src/com/android/settings/network/telephony/Enhanced4gLteSliceHelperTest.java +22 −6 Original line number Diff line number Diff line Loading @@ -31,6 +31,9 @@ import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.telephony.CarrierConfigManager; import android.telephony.ims.ProvisioningManager; import android.telephony.ims.feature.MmTelFeature; import android.telephony.ims.stub.ImsRegistrationImplBase; import androidx.slice.Slice; import androidx.slice.SliceItem; Loading Loading @@ -67,6 +70,8 @@ public class Enhanced4gLteSliceHelperTest { @Mock private ImsManager mMockImsManager; @Mock private ProvisioningManager mProvisioningManager; private Context mContext; private FakeEnhanced4gLteSliceHelper mEnhanced4gLteSliceHelper; Loading Loading @@ -121,7 +126,9 @@ public class Enhanced4gLteSliceHelperTest { @Test public void test_CreateEnhanced4gLteSlice_success() { when(mMockImsManager.isVolteEnabledByPlatform()).thenReturn(true); when(mMockImsManager.isVolteProvisionedOnDevice()).thenReturn(true); when(mProvisioningManager.getProvisioningStatusForCapability( MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE, ImsRegistrationImplBase.REGISTRATION_TECH_LTE)).thenReturn(true); when(mMockImsManager.isEnhanced4gLteModeSettingEnabledByUser()).thenReturn(true); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockCarrierConfigManager.getConfigForSubId(1)).thenReturn(null); Loading @@ -136,7 +143,9 @@ public class Enhanced4gLteSliceHelperTest { @Test public void test_SettingSliceProvider_getsRightSliceEnhanced4gLte() { when(mMockImsManager.isVolteEnabledByPlatform()).thenReturn(true); when(mMockImsManager.isVolteProvisionedOnDevice()).thenReturn(true); when(mProvisioningManager.getProvisioningStatusForCapability( MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE, ImsRegistrationImplBase.REGISTRATION_TECH_LTE)).thenReturn(true); when(mMockImsManager.isEnhanced4gLteModeSettingEnabledByUser()).thenReturn(true); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockCarrierConfigManager.getConfigForSubId(1)).thenReturn(null); Loading @@ -152,17 +161,19 @@ public class Enhanced4gLteSliceHelperTest { @Test public void test_SliceBroadcastReceiver_toggleOffEnhanced4gLte() { when(mMockImsManager.isVolteEnabledByPlatform()).thenReturn(true); when(mMockImsManager.isVolteProvisionedOnDevice()).thenReturn(true); when(mProvisioningManager.getProvisioningStatusForCapability( MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE, ImsRegistrationImplBase.REGISTRATION_TECH_LTE)).thenReturn(true); when(mMockImsManager.isEnhanced4gLteModeSettingEnabledByUser()).thenReturn(false); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mSlicesFeatureProvider.getNewEnhanced4gLteSliceHelper(mContext)) .thenReturn(mEnhanced4gLteSliceHelper); ArgumentCaptor<Boolean> mEnhanced4gLteSettingCaptor = ArgumentCaptor.forClass( final ArgumentCaptor<Boolean> mEnhanced4gLteSettingCaptor = ArgumentCaptor.forClass( Boolean.class); // turn on Enhanced4gLte setting Intent intent = new Intent(Enhanced4gLteSliceHelper.ACTION_ENHANCED_4G_LTE_CHANGED); final Intent intent = new Intent(Enhanced4gLteSliceHelper.ACTION_ENHANCED_4G_LTE_CHANGED); intent.putExtra(EXTRA_TOGGLE_STATE, true); // change the setting Loading Loading @@ -234,7 +245,7 @@ public class Enhanced4gLteSliceHelperTest { private void assertTitle(List<SliceItem> sliceItems, String title) { boolean hasTitle = false; for (SliceItem item : sliceItems) { List<SliceItem> titleItems = SliceQuery.findAll(item, FORMAT_TEXT, HINT_TITLE, final List<SliceItem> titleItems = SliceQuery.findAll(item, FORMAT_TEXT, HINT_TITLE, null /* non-hints */); if (titleItems == null) { continue; Loading Loading @@ -265,6 +276,11 @@ public class Enhanced4gLteSliceHelperTest { return mMockImsManager; } @Override ProvisioningManager getProvisioningManager(int subId) { return mProvisioningManager; } protected int getDefaultVoiceSubId() { return mSubId; } Loading Loading
src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java +30 −4 Original line number Diff line number Diff line Loading @@ -23,6 +23,9 @@ import android.telephony.CarrierConfigManager; import android.telephony.PhoneStateListener; 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.annotation.VisibleForTesting; import androidx.preference.Preference; Loading Loading @@ -50,6 +53,8 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc @VisibleForTesting ImsManager mImsManager; private PhoneCallStateListener mPhoneStateListener; @VisibleForTesting Integer mCallState; private final List<On4gLteUpdateListener> m4gLteListeners; protected static final int MODE_NONE = -1; Loading @@ -70,7 +75,8 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc return this; } mSubId = subId; mTelephonyManager = TelephonyManager.from(mContext).createForSubscriptionId(mSubId); mTelephonyManager = mContext.getSystemService(TelephonyManager.class) .createForSubscriptionId(mSubId); mCarrierConfig = mCarrierConfigManager.getConfigForSubId(mSubId); if (mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { mImsManager = ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(mSubId)); Loading @@ -86,6 +92,11 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc return this; } @VisibleForTesting ProvisioningManager getProvisioningManager(int subId) { return ProvisioningManager.createForSubscriptionId(subId); } @Override public int getAvailabilityStatus(int subId) { init(subId); Loading @@ -96,7 +107,7 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc final boolean isVisible = subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID && mImsManager != null && carrierConfig != null && mImsManager.isVolteEnabledByPlatform() && mImsManager.isVolteProvisionedOnDevice() && isVolteProvisionedOnDevice(mSubId) && MobileNetworkUtils.isImsServiceStateReady(mImsManager) && !carrierConfig.getBoolean(CarrierConfigManager.KEY_HIDE_ENHANCED_4G_LTE_BOOL); return isVisible Loading Loading @@ -159,13 +170,26 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc private boolean isPrefEnabled() { return mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID && mTelephonyManager.getCallState(mSubId) == TelephonyManager.CALL_STATE_IDLE && (mCallState != null) && (mCallState == TelephonyManager.CALL_STATE_IDLE) && mImsManager != null && mImsManager.isNonTtyOrTtyOnVolteEnabled() && mCarrierConfig.getBoolean( CarrierConfigManager.KEY_EDITABLE_ENHANCED_4G_LTE_BOOL); } private boolean isVolteProvisionedOnDevice(int subId) { if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { return true; } final ProvisioningManager provisioningMgr = getProvisioningManager(subId); if (provisioningMgr == null) { return true; } return provisioningMgr.getProvisioningStatusForCapability( MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE, ImsRegistrationImplBase.REGISTRATION_TECH_LTE); } private class PhoneCallStateListener extends PhoneStateListener { public PhoneCallStateListener(Looper looper) { Loading @@ -174,15 +198,17 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc @Override public void onCallStateChanged(int state, String incomingNumber) { mCallState = state; updateState(mPreference); } public void register(int subId) { mSubId = subId; Enhanced4gBasePreferenceController.this.mSubId = subId; mTelephonyManager.listen(this, PhoneStateListener.LISTEN_CALL_STATE); } public void unregister() { mCallState = null; mTelephonyManager.listen(this, PhoneStateListener.LISTEN_NONE); } } Loading
src/com/android/settings/network/telephony/Enhanced4gLteSliceHelper.java +20 −3 Original line number Diff line number Diff line Loading @@ -27,6 +27,9 @@ import android.net.Uri; import android.os.PersistableBundle; import android.telephony.CarrierConfigManager; import android.telephony.SubscriptionManager; import android.telephony.ims.ProvisioningManager; import android.telephony.ims.feature.MmTelFeature; import android.telephony.ims.stub.ImsRegistrationImplBase; import android.util.Log; import androidx.annotation.VisibleForTesting; Loading Loading @@ -122,7 +125,7 @@ public class Enhanced4gLteSliceHelper { final ImsManager imsManager = getImsManager(subId); if (!imsManager.isVolteEnabledByPlatform() || !imsManager.isVolteProvisionedOnDevice()) { || !isVolteProvisionedOnDevice(subId)) { Log.d(TAG, "Setting is either not provisioned or not enabled by Platform"); return null; } Loading Loading @@ -188,6 +191,11 @@ public class Enhanced4gLteSliceHelper { return ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(subId)); } @VisibleForTesting ProvisioningManager getProvisioningManager(int subId) { return ProvisioningManager.createForSubscriptionId(subId); } /** * Handles Enhanced 4G LTE mode setting change from Enhanced 4G LTE slice and posts * notification. Should be called when intent action is ACTION_ENHANCED_4G_LTE_CHANGED Loading @@ -199,8 +207,7 @@ public class Enhanced4gLteSliceHelper { if (subId > SubscriptionManager.INVALID_SUBSCRIPTION_ID) { final ImsManager imsManager = getImsManager(subId); if (imsManager.isVolteEnabledByPlatform() && imsManager.isVolteProvisionedOnDevice()) { if (imsManager.isVolteEnabledByPlatform() && isVolteProvisionedOnDevice(subId)) { final boolean currentValue = imsManager.isEnhanced4gLteModeSettingEnabledByUser() && imsManager.isNonTtyOrTtyOnVolteEnabled(); final boolean newValue = intent.getBooleanExtra(EXTRA_TOGGLE_STATE, Loading Loading @@ -278,5 +285,15 @@ public class Enhanced4gLteSliceHelper { intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); return PendingIntent.getActivity(mContext, 0 /* requestCode */, intent, 0 /* flags */); } private boolean isVolteProvisionedOnDevice(int subId) { final ProvisioningManager provisioningMgr = getProvisioningManager(subId); if (provisioningMgr == null) { return true; } return provisioningMgr.getProvisioningStatusForCapability( MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE, ImsRegistrationImplBase.REGISTRATION_TECH_LTE); } }
src/com/android/settings/network/telephony/VideoCallingPreferenceController.java +23 −2 Original line number Diff line number Diff line Loading @@ -23,6 +23,9 @@ import android.telephony.CarrierConfigManager; import android.telephony.PhoneStateListener; 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.annotation.VisibleForTesting; import androidx.preference.Preference; Loading Loading @@ -133,6 +136,24 @@ public class VideoCallingPreferenceController extends TelephonyTogglePreferenceC return isVideoCallEnabled(subId, imsManager); } @VisibleForTesting ProvisioningManager getProvisioningManager(int subId) { return ProvisioningManager.createForSubscriptionId(subId); } private boolean isVtProvisionedOnDevice(int subId) { if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { return true; } final ProvisioningManager provisioningMgr = getProvisioningManager(subId); if (provisioningMgr == null) { return true; } return provisioningMgr.getProvisioningStatusForCapability( MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VIDEO, ImsRegistrationImplBase.REGISTRATION_TECH_LTE); } @VisibleForTesting boolean isVideoCallEnabled(int subId, ImsManager imsManager) { final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(subId); Loading @@ -142,7 +163,7 @@ public class VideoCallingPreferenceController extends TelephonyTogglePreferenceC } return carrierConfig != null && imsManager != null && imsManager.isVtEnabledByPlatform() && imsManager.isVtProvisionedOnDevice() && isVtProvisionedOnDevice(subId) && MobileNetworkUtils.isImsServiceStateReady(imsManager) && (carrierConfig.getBoolean( CarrierConfigManager.KEY_IGNORE_DATA_ENABLED_CHANGED_FOR_VIDEO_CALLS) Loading @@ -167,7 +188,7 @@ public class VideoCallingPreferenceController extends TelephonyTogglePreferenceC } public void register(int subId) { mSubId = subId; VideoCallingPreferenceController.this.mSubId = subId; mTelephonyManager.listen(this, PhoneStateListener.LISTEN_CALL_STATE); } Loading
tests/robotests/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceControllerTest.java +15 −3 Original line number Diff line number Diff line Loading @@ -26,6 +26,9 @@ import android.os.PersistableBundle; 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; Loading Loading @@ -55,6 +58,8 @@ public class Enhanced4gBasePreferenceControllerTest { private CarrierConfigManager mCarrierConfigManager; @Mock private ImsManager mImsManager; @Mock private ProvisioningManager mProvisioningManager; private Enhanced4gLtePreferenceController mController; private SwitchPreference mPreference; Loading @@ -77,7 +82,12 @@ public class Enhanced4gBasePreferenceControllerTest { doReturn(mCarrierConfig).when(mCarrierConfigManager).getConfigForSubId(SUB_ID); mPreference = new RestrictedSwitchPreference(mContext); mController = new Enhanced4gLtePreferenceController(mContext, "roaming"); mController = new Enhanced4gLtePreferenceController(mContext, "roaming") { @Override ProvisioningManager getProvisioningManager(int subId) { return mProvisioningManager; } }; mController.init(SUB_ID); mController.mImsManager = mImsManager; mPreference.setKey(mController.getPreferenceKey()); Loading @@ -94,7 +104,9 @@ public class Enhanced4gBasePreferenceControllerTest { @Test public void getAvailabilityStatus_volteDisabled_returnUnavailable() { doReturn(false).when(mImsManager).isVolteEnabledByPlatform(); doReturn(true).when(mImsManager).isVolteProvisionedOnDevice(); doReturn(true).when(mProvisioningManager).getProvisioningStatusForCapability( MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE, ImsRegistrationImplBase.REGISTRATION_TECH_LTE); assertThat(mController.getAvailabilityStatus()).isEqualTo( BasePreferenceController.CONDITIONALLY_UNAVAILABLE); Loading @@ -104,7 +116,7 @@ public class Enhanced4gBasePreferenceControllerTest { public void updateState_configEnabled_prefEnabled() { mPreference.setEnabled(false); mCarrierConfig.putInt(CarrierConfigManager.KEY_ENHANCED_4G_LTE_TITLE_VARIANT_INT, 1); doReturn(TelephonyManager.CALL_STATE_IDLE).when(mTelephonyManager).getCallState(SUB_ID); mController.mCallState = TelephonyManager.CALL_STATE_IDLE; doReturn(true).when(mImsManager).isNonTtyOrTtyOnVolteEnabled(); mCarrierConfig.putBoolean(CarrierConfigManager.KEY_EDITABLE_ENHANCED_4G_LTE_BOOL, true); Loading
tests/robotests/src/com/android/settings/network/telephony/Enhanced4gLteSliceHelperTest.java +22 −6 Original line number Diff line number Diff line Loading @@ -31,6 +31,9 @@ import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.telephony.CarrierConfigManager; import android.telephony.ims.ProvisioningManager; import android.telephony.ims.feature.MmTelFeature; import android.telephony.ims.stub.ImsRegistrationImplBase; import androidx.slice.Slice; import androidx.slice.SliceItem; Loading Loading @@ -67,6 +70,8 @@ public class Enhanced4gLteSliceHelperTest { @Mock private ImsManager mMockImsManager; @Mock private ProvisioningManager mProvisioningManager; private Context mContext; private FakeEnhanced4gLteSliceHelper mEnhanced4gLteSliceHelper; Loading Loading @@ -121,7 +126,9 @@ public class Enhanced4gLteSliceHelperTest { @Test public void test_CreateEnhanced4gLteSlice_success() { when(mMockImsManager.isVolteEnabledByPlatform()).thenReturn(true); when(mMockImsManager.isVolteProvisionedOnDevice()).thenReturn(true); when(mProvisioningManager.getProvisioningStatusForCapability( MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE, ImsRegistrationImplBase.REGISTRATION_TECH_LTE)).thenReturn(true); when(mMockImsManager.isEnhanced4gLteModeSettingEnabledByUser()).thenReturn(true); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockCarrierConfigManager.getConfigForSubId(1)).thenReturn(null); Loading @@ -136,7 +143,9 @@ public class Enhanced4gLteSliceHelperTest { @Test public void test_SettingSliceProvider_getsRightSliceEnhanced4gLte() { when(mMockImsManager.isVolteEnabledByPlatform()).thenReturn(true); when(mMockImsManager.isVolteProvisionedOnDevice()).thenReturn(true); when(mProvisioningManager.getProvisioningStatusForCapability( MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE, ImsRegistrationImplBase.REGISTRATION_TECH_LTE)).thenReturn(true); when(mMockImsManager.isEnhanced4gLteModeSettingEnabledByUser()).thenReturn(true); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mMockCarrierConfigManager.getConfigForSubId(1)).thenReturn(null); Loading @@ -152,17 +161,19 @@ public class Enhanced4gLteSliceHelperTest { @Test public void test_SliceBroadcastReceiver_toggleOffEnhanced4gLte() { when(mMockImsManager.isVolteEnabledByPlatform()).thenReturn(true); when(mMockImsManager.isVolteProvisionedOnDevice()).thenReturn(true); when(mProvisioningManager.getProvisioningStatusForCapability( MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE, ImsRegistrationImplBase.REGISTRATION_TECH_LTE)).thenReturn(true); when(mMockImsManager.isEnhanced4gLteModeSettingEnabledByUser()).thenReturn(false); when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true); when(mSlicesFeatureProvider.getNewEnhanced4gLteSliceHelper(mContext)) .thenReturn(mEnhanced4gLteSliceHelper); ArgumentCaptor<Boolean> mEnhanced4gLteSettingCaptor = ArgumentCaptor.forClass( final ArgumentCaptor<Boolean> mEnhanced4gLteSettingCaptor = ArgumentCaptor.forClass( Boolean.class); // turn on Enhanced4gLte setting Intent intent = new Intent(Enhanced4gLteSliceHelper.ACTION_ENHANCED_4G_LTE_CHANGED); final Intent intent = new Intent(Enhanced4gLteSliceHelper.ACTION_ENHANCED_4G_LTE_CHANGED); intent.putExtra(EXTRA_TOGGLE_STATE, true); // change the setting Loading Loading @@ -234,7 +245,7 @@ public class Enhanced4gLteSliceHelperTest { private void assertTitle(List<SliceItem> sliceItems, String title) { boolean hasTitle = false; for (SliceItem item : sliceItems) { List<SliceItem> titleItems = SliceQuery.findAll(item, FORMAT_TEXT, HINT_TITLE, final List<SliceItem> titleItems = SliceQuery.findAll(item, FORMAT_TEXT, HINT_TITLE, null /* non-hints */); if (titleItems == null) { continue; Loading Loading @@ -265,6 +276,11 @@ public class Enhanced4gLteSliceHelperTest { return mMockImsManager; } @Override ProvisioningManager getProvisioningManager(int subId) { return mProvisioningManager; } protected int getDefaultVoiceSubId() { return mSubId; } Loading