Merge "[Settings] Replace VT and VOLTE provisioning API"

This commit is contained in:
Bonian Chen
2019-11-15 02:57:29 +00:00
committed by Android (Google) Code Review
6 changed files with 128 additions and 22 deletions

View File

@@ -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;
@@ -55,6 +58,8 @@ public class Enhanced4gBasePreferenceControllerTest {
private CarrierConfigManager mCarrierConfigManager;
@Mock
private ImsManager mImsManager;
@Mock
private ProvisioningManager mProvisioningManager;
private Enhanced4gLtePreferenceController mController;
private SwitchPreference mPreference;
@@ -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());
@@ -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);
@@ -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);

View File

@@ -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;
@@ -67,6 +70,8 @@ public class Enhanced4gLteSliceHelperTest {
@Mock
private ImsManager mMockImsManager;
@Mock
private ProvisioningManager mProvisioningManager;
private Context mContext;
private FakeEnhanced4gLteSliceHelper mEnhanced4gLteSliceHelper;
@@ -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);
@@ -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);
@@ -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
@@ -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;
@@ -265,6 +276,11 @@ public class Enhanced4gLteSliceHelperTest {
return mMockImsManager;
}
@Override
ProvisioningManager getProvisioningManager(int subId) {
return mProvisioningManager;
}
protected int getDefaultVoiceSubId() {
return mSubId;
}

View File

@@ -18,14 +18,18 @@ package com.android.settings.network.telephony;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.spy;
import android.content.Context;
import android.os.PersistableBundle;
import android.telephony.CarrierConfigManager;
import android.telephony.TelephonyManager;
import android.telephony.ims.ProvisioningManager;
import android.telephony.ims.feature.ImsFeature;
import android.telephony.ims.feature.MmTelFeature;
import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference;
@@ -49,6 +53,8 @@ public class VideoCallingPreferenceControllerTest {
@Mock
private ImsManager mImsManager;
@Mock
private ProvisioningManager mProvisioningManager;
@Mock
private CarrierConfigManager mCarrierConfigManager;
@Mock
private PreferenceScreen mPreferenceScreen;
@@ -65,7 +71,8 @@ public class VideoCallingPreferenceControllerTest {
mContext = spy(RuntimeEnvironment.application);
doReturn(mTelephonyManager).when(mContext).getSystemService(Context.TELEPHONY_SERVICE);
doReturn(mTelephonyManager).when(mContext).getSystemService(TelephonyManager.class);
doReturn(mCarrierConfigManager).when(mContext).getSystemService(CarrierConfigManager.class);
doReturn(mCarrierConfigManager).when(mContext)
.getSystemService(CarrierConfigManager.class);
doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(SUB_ID);
mCarrierConfig = new PersistableBundle();
@@ -74,13 +81,20 @@ public class VideoCallingPreferenceControllerTest {
doReturn(mCarrierConfig).when(mCarrierConfigManager).getConfigForSubId(SUB_ID);
mPreference = new SwitchPreference(mContext);
mController = new VideoCallingPreferenceController(mContext, "wifi_calling");
mController = new VideoCallingPreferenceController(mContext, "wifi_calling") {
@Override
ProvisioningManager getProvisioningManager(int subId) {
return mProvisioningManager;
}
};
mController.init(SUB_ID);
mController.mImsManager = mImsManager;
mPreference.setKey(mController.getPreferenceKey());
doReturn(true).when(mImsManager).isVtEnabledByPlatform();
doReturn(true).when(mImsManager).isVtProvisionedOnDevice();
doReturn(true).when(mProvisioningManager)
.getProvisioningStatusForCapability(
eq(MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VIDEO), anyInt());
doReturn(ImsFeature.STATE_READY).when(mImsManager).getImsServiceState();
doReturn(true).when(mTelephonyManager).isDataEnabled();
@@ -123,7 +137,7 @@ public class VideoCallingPreferenceControllerTest {
doReturn(true).when(mImsManager).isVtEnabledByUser();
doReturn(true).when(mImsManager).isEnhanced4gLteModeSettingEnabledByUser();
doReturn(true).when(mImsManager).isNonTtyOrTtyOnVolteEnabled();
doReturn(TelephonyManager.CALL_STATE_IDLE).when(mTelephonyManager).getCallState(SUB_ID);
mController.mCallState = TelephonyManager.CALL_STATE_IDLE;
mController.updateState(mPreference);