[Settings] add VolteQueryImsState for IMS
1. Code refactor 2. Introduce VolteQueryImsState for user enable/disable configuration Bug: 140542283 Test: m RunSettingsRoboTests -j ROBOTEST_FILTER=Enhanced4gBasePreferenceControllerTest Test: m RunSettingsRoboTests -j ROBOTEST_FILTER=Enhanced4gLteSliceHelperTest Change-Id: I9c18c8900ac01909030d9433935650c1581a0fb0
This commit is contained in:
@@ -18,6 +18,7 @@ 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.spy;
|
||||
|
||||
@@ -34,6 +35,7 @@ import androidx.preference.SwitchPreference;
|
||||
|
||||
import com.android.ims.ImsManager;
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
import com.android.settings.network.ims.VolteQueryImsState;
|
||||
import com.android.settingslib.RestrictedSwitchPreference;
|
||||
|
||||
import org.junit.Before;
|
||||
@@ -61,6 +63,8 @@ public class Enhanced4gBasePreferenceControllerTest {
|
||||
@Mock
|
||||
private ProvisioningManager mProvisioningManager;
|
||||
|
||||
private VolteQueryImsState mQueryImsState;
|
||||
|
||||
private Enhanced4gLtePreferenceController mController;
|
||||
private SwitchPreference mPreference;
|
||||
private PersistableBundle mCarrierConfig;
|
||||
@@ -81,15 +85,18 @@ public class Enhanced4gBasePreferenceControllerTest {
|
||||
mCarrierConfig = new PersistableBundle();
|
||||
doReturn(mCarrierConfig).when(mCarrierConfigManager).getConfigForSubId(SUB_ID);
|
||||
|
||||
mQueryImsState = spy(new VolteQueryImsState(mContext, SUB_ID));
|
||||
|
||||
mPreference = new RestrictedSwitchPreference(mContext);
|
||||
mController = new Enhanced4gLtePreferenceController(mContext, "roaming") {
|
||||
mController = spy(new Enhanced4gLtePreferenceController(mContext, "roaming") {
|
||||
@Override
|
||||
ProvisioningManager getProvisioningManager(int subId) {
|
||||
return mProvisioningManager;
|
||||
}
|
||||
};
|
||||
});
|
||||
mController.init(SUB_ID);
|
||||
mController.mImsManager = mImsManager;
|
||||
doReturn(mQueryImsState).when(mController).queryImsState(anyInt());
|
||||
mPreference.setKey(mController.getPreferenceKey());
|
||||
}
|
||||
|
||||
@@ -114,6 +121,7 @@ public class Enhanced4gBasePreferenceControllerTest {
|
||||
|
||||
@Test
|
||||
public void updateState_configEnabled_prefEnabled() {
|
||||
doReturn(true).when(mQueryImsState).isEnabledByUser();
|
||||
mPreference.setEnabled(false);
|
||||
mCarrierConfig.putInt(CarrierConfigManager.KEY_ENHANCED_4G_LTE_TITLE_VARIANT_INT, 1);
|
||||
mController.mCallState = TelephonyManager.CALL_STATE_IDLE;
|
||||
@@ -127,6 +135,7 @@ public class Enhanced4gBasePreferenceControllerTest {
|
||||
|
||||
@Test
|
||||
public void updateState_configOn_prefChecked() {
|
||||
doReturn(true).when(mQueryImsState).isEnabledByUser();
|
||||
mPreference.setChecked(false);
|
||||
doReturn(true).when(mImsManager).isEnhanced4gLteModeSettingEnabledByUser();
|
||||
doReturn(true).when(mImsManager).isNonTtyOrTtyOnVolteEnabled();
|
||||
|
@@ -22,6 +22,7 @@ import static android.app.slice.SliceItem.FORMAT_TEXT;
|
||||
|
||||
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.spy;
|
||||
import static org.mockito.Mockito.verify;
|
||||
@@ -31,6 +32,7 @@ import android.app.PendingIntent;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
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;
|
||||
@@ -45,6 +47,7 @@ import androidx.slice.widget.SliceLiveData;
|
||||
|
||||
import com.android.ims.ImsManager;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.network.ims.VolteQueryImsState;
|
||||
import com.android.settings.slices.CustomSliceRegistry;
|
||||
import com.android.settings.slices.SettingsSliceProvider;
|
||||
import com.android.settings.slices.SliceBroadcastReceiver;
|
||||
@@ -52,6 +55,7 @@ import com.android.settings.slices.SlicesFeatureProvider;
|
||||
import com.android.settings.testutils.FakeFeatureFactory;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
@@ -59,11 +63,14 @@ import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
import org.robolectric.shadow.api.Shadow;
|
||||
import org.robolectric.shadows.ShadowSubscriptionManager;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
public class Enhanced4gLteSliceHelperTest {
|
||||
private static final int SUB_ID = 1;
|
||||
|
||||
@Mock
|
||||
private CarrierConfigManager mMockCarrierConfigManager;
|
||||
@@ -73,6 +80,9 @@ public class Enhanced4gLteSliceHelperTest {
|
||||
@Mock
|
||||
private ProvisioningManager mProvisioningManager;
|
||||
|
||||
private ShadowSubscriptionManager mShadowSubscriptionManager;
|
||||
private VolteQueryImsState mQueryImsState;
|
||||
|
||||
private Context mContext;
|
||||
private FakeEnhanced4gLteSliceHelper mEnhanced4gLteSliceHelper;
|
||||
private SettingsSliceProvider mProvider;
|
||||
@@ -85,6 +95,10 @@ public class Enhanced4gLteSliceHelperTest {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mContext = RuntimeEnvironment.application;
|
||||
|
||||
mShadowSubscriptionManager = Shadow.extract(mContext.getSystemService(
|
||||
SubscriptionManager.class));
|
||||
mShadowSubscriptionManager.setDefaultVoiceSubscriptionId(SUB_ID);
|
||||
|
||||
mFeatureFactory = FakeFeatureFactory.setupForTest();
|
||||
mSlicesFeatureProvider = mFeatureFactory.getSlicesFeatureProvider();
|
||||
|
||||
@@ -96,7 +110,10 @@ public class Enhanced4gLteSliceHelperTest {
|
||||
//setup for SliceBroadcastReceiver test
|
||||
mReceiver = spy(new SliceBroadcastReceiver());
|
||||
|
||||
mEnhanced4gLteSliceHelper = new FakeEnhanced4gLteSliceHelper(mContext);
|
||||
mQueryImsState = spy(new VolteQueryImsState(mContext, SUB_ID));
|
||||
|
||||
mEnhanced4gLteSliceHelper = spy(new FakeEnhanced4gLteSliceHelper(mContext));
|
||||
doReturn(mQueryImsState).when(mEnhanced4gLteSliceHelper).queryImsState(anyInt());
|
||||
|
||||
// Set-up specs for SliceMetadata.
|
||||
SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS);
|
||||
@@ -104,7 +121,7 @@ public class Enhanced4gLteSliceHelperTest {
|
||||
|
||||
@Test
|
||||
public void test_CreateEnhanced4gLteSlice_invalidSubId() {
|
||||
mEnhanced4gLteSliceHelper.setDefaultVoiceSubId(-1);
|
||||
mShadowSubscriptionManager.setDefaultVoiceSubscriptionId(-1);
|
||||
|
||||
final Slice slice = mEnhanced4gLteSliceHelper.createEnhanced4gLteSlice(
|
||||
CustomSliceRegistry.ENHANCED_4G_SLICE_URI);
|
||||
@@ -129,7 +146,7 @@ public class Enhanced4gLteSliceHelperTest {
|
||||
when(mProvisioningManager.getProvisioningStatusForCapability(
|
||||
MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE,
|
||||
ImsRegistrationImplBase.REGISTRATION_TECH_LTE)).thenReturn(true);
|
||||
when(mMockImsManager.isEnhanced4gLteModeSettingEnabledByUser()).thenReturn(true);
|
||||
doReturn(true).when(mQueryImsState).isEnabledByUser();
|
||||
when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true);
|
||||
when(mMockCarrierConfigManager.getConfigForSubId(1)).thenReturn(null);
|
||||
|
||||
@@ -146,7 +163,7 @@ public class Enhanced4gLteSliceHelperTest {
|
||||
when(mProvisioningManager.getProvisioningStatusForCapability(
|
||||
MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE,
|
||||
ImsRegistrationImplBase.REGISTRATION_TECH_LTE)).thenReturn(true);
|
||||
when(mMockImsManager.isEnhanced4gLteModeSettingEnabledByUser()).thenReturn(true);
|
||||
doReturn(true).when(mQueryImsState).isEnabledByUser();
|
||||
when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true);
|
||||
when(mMockCarrierConfigManager.getConfigForSubId(1)).thenReturn(null);
|
||||
when(mSlicesFeatureProvider.getNewEnhanced4gLteSliceHelper(mContext))
|
||||
@@ -159,12 +176,13 @@ public class Enhanced4gLteSliceHelperTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void test_SliceBroadcastReceiver_toggleOffEnhanced4gLte() {
|
||||
when(mMockImsManager.isVolteEnabledByPlatform()).thenReturn(true);
|
||||
when(mProvisioningManager.getProvisioningStatusForCapability(
|
||||
MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE,
|
||||
ImsRegistrationImplBase.REGISTRATION_TECH_LTE)).thenReturn(true);
|
||||
when(mMockImsManager.isEnhanced4gLteModeSettingEnabledByUser()).thenReturn(false);
|
||||
doReturn(false).when(mQueryImsState).isEnabledByUser();
|
||||
when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true);
|
||||
when(mSlicesFeatureProvider.getNewEnhanced4gLteSliceHelper(mContext))
|
||||
.thenReturn(mEnhanced4gLteSliceHelper);
|
||||
|
Reference in New Issue
Block a user