Loading src/java/com/android/internal/telephony/Phone.java +0 −5 Original line number Diff line number Diff line Loading @@ -124,10 +124,6 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { } else if (intent.getAction().equals(ImsManager.ACTION_IMS_SERVICE_DOWN)) { mImsServiceReady = false; updateImsPhone(); } else if (intent.getAction().equals(ImsConfig.ACTION_IMS_CONFIG_CHANGED)) { int item = intent.getIntExtra(ImsConfig.EXTRA_CHANGED_ITEM, -1); String value = intent.getStringExtra(ImsConfig.EXTRA_NEW_VALUE); ImsManager.onProvisionedValueChanged(context, item, value); } } } Loading Loading @@ -561,7 +557,6 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { filter.addAction(ImsManager.ACTION_IMS_SERVICE_UP); filter.addAction(ImsManager.ACTION_IMS_SERVICE_DOWN); } filter.addAction(ImsConfig.ACTION_IMS_CONFIG_CHANGED); mContext.registerReceiver(mImsIntentReceiver, filter); // Monitor IMS service - but first poll to see if already up (could miss Loading tests/telephonytests/src/com/android/internal/telephony/ims/ImsManagerTest.java +147 −13 Original line number Diff line number Diff line Loading @@ -17,17 +17,21 @@ package com.android.internal.telephony.ims; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.anyInt; import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.os.IBinder; import android.os.PersistableBundle; import android.os.RemoteException; import android.telephony.CarrierConfigManager; import android.telephony.SubscriptionManager; import android.telephony.ims.stub.ImsConfigImplBase; import android.test.suitebuilder.annotation.SmallTest; import com.android.ims.ImsConfig; Loading @@ -39,11 +43,30 @@ import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import java.util.Hashtable; public class ImsManagerTest extends TelephonyTest { private static final String UNSET_PROVISIONED_STRING = "unset"; private static final boolean ENHANCED_4G_MODE_DEFAULT_VAL = true; private static final boolean ENHANCED_4G_MODE_EDITABLE = true; private static final boolean WFC_IMS_ENABLE_DEFAULT_VAL = false; private static final boolean WFC_IMS_ROAMING_ENABLE_DEFAULT_VAL = true; private static final boolean VT_IMS_ENABLE_DEFAULT_VAL = true; private static final int WFC_IMS_MODE_DEFAULT_VAL = 2; private static final int WFC_IMS_ROAMING_MODE_DEFAULT_VAL = 3; PersistableBundle mBundle; @Mock IBinder mBinder; @Mock ImsConfigImplBase mImsConfigImplBaseMock; Hashtable<Integer, Integer> mProvisionedIntVals = new Hashtable<>(); Hashtable<Integer, String> mProvisionedStringVals = new Hashtable<>(); ImsConfigImplBase.ImsConfigStub mImsConfigStub; ImsConfig mImsConfig; private final int[] mSubId = {0}; private int mPhoneId; @Before public void setUp() throws Exception { Loading @@ -57,6 +80,8 @@ public class ImsManagerTest extends TelephonyTest { mServiceManagerMockedServices.put("isub", mBinder); mImsManagerInstances.remove(mPhoneId); setDefaultValues(); } @After Loading @@ -77,26 +102,14 @@ public class ImsManagerTest extends TelephonyTest { WFC_IMS_ROAMING_MODE_DEFAULT_VAL); mBundle.putBoolean(CarrierConfigManager.KEY_ENHANCED_4G_LTE_ON_BY_DEFAULT_BOOL, ENHANCED_4G_MODE_DEFAULT_VAL); mBundle.putBoolean(CarrierConfigManager.KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL, true); } private static final boolean ENHANCED_4G_MODE_DEFAULT_VAL = true; private static final boolean ENHANCED_4G_MODE_EDITABLE = true; private static final boolean WFC_IMS_ENABLE_DEFAULT_VAL = false; private static final boolean WFC_IMS_ROAMING_ENABLE_DEFAULT_VAL = true; private static final boolean VT_IMS_ENABLE_DEFAULT_VAL = true; private static final int WFC_IMS_MODE_DEFAULT_VAL = 2; private static final int WFC_IMS_ROAMING_MODE_DEFAULT_VAL = 3; private final int[] mSubId = {0}; private int mPhoneId; @Test @SmallTest public void testGetDefaultValues() { doReturn("-1").when(mSubscriptionController) .getSubscriptionProperty(anyInt(), anyString(), anyString()); setDefaultValues(); ImsManager imsManager = ImsManager.getInstance(mContext, mPhoneId); assertEquals(WFC_IMS_ENABLE_DEFAULT_VAL, imsManager.isWfcEnabledByUser()); Loading Loading @@ -168,4 +181,125 @@ public class ImsManagerTest extends TelephonyTest { eq(SubscriptionManager.WFC_IMS_ENABLED), eq("1")); } @Test public void testGetProvisionedValues() throws Exception { ImsManager imsManager = initializeProvisionedValues(); assertEquals(true, imsManager.isWfcProvisionedOnDevice()); verify(mImsConfigImplBaseMock, times(1)).getProvisionedValue( eq(ImsConfig.ConfigConstants.VOICE_OVER_WIFI_SETTING_ENABLED)); assertEquals(true, imsManager.isVtProvisionedOnDevice()); verify(mImsConfigImplBaseMock, times(1)).getProvisionedValue( eq(ImsConfig.ConfigConstants.LVC_SETTING_ENABLED)); assertEquals(true, imsManager.isVolteProvisionedOnDevice()); verify(mImsConfigImplBaseMock, times(1)).getProvisionedValue( eq(ImsConfig.ConfigConstants.VLT_SETTING_ENABLED)); // If we call get again, times should still be one because the value should be fetched // from cache. assertEquals(true, imsManager.isWfcProvisionedOnDevice()); verify(mImsConfigImplBaseMock, times(1)).getProvisionedValue( eq(ImsConfig.ConfigConstants.VOICE_OVER_WIFI_SETTING_ENABLED)); assertEquals(true, imsManager.isVtProvisionedOnDevice()); verify(mImsConfigImplBaseMock, times(1)).getProvisionedValue( eq(ImsConfig.ConfigConstants.LVC_SETTING_ENABLED)); assertEquals(true, imsManager.isVolteProvisionedOnDevice()); verify(mImsConfigImplBaseMock, times(1)).getProvisionedValue( eq(ImsConfig.ConfigConstants.VLT_SETTING_ENABLED)); } @Test public void testSetProvisionedValues() throws Exception { ImsManager imsManager = initializeProvisionedValues(); assertEquals(true, imsManager.isWfcProvisionedOnDevice()); verify(mImsConfigImplBaseMock, times(1)).getProvisionedValue( eq(ImsConfig.ConfigConstants.VOICE_OVER_WIFI_SETTING_ENABLED)); imsManager.getConfigInterface().setProvisionedValue( ImsConfig.ConfigConstants.VOICE_OVER_WIFI_SETTING_ENABLED, ImsConfig.FeatureValueConstants.OFF); assertEquals(0, (int) mProvisionedIntVals.get( ImsConfig.ConfigConstants.VOICE_OVER_WIFI_SETTING_ENABLED)); assertEquals(false, imsManager.isWfcProvisionedOnDevice()); verify(mImsConfigImplBaseMock, times(1)).setProvisionedValue( eq(ImsConfig.ConfigConstants.VOICE_OVER_WIFI_SETTING_ENABLED), eq(0)); verify(mImsConfigImplBaseMock, times(1)).getProvisionedValue( eq(ImsConfig.ConfigConstants.VOICE_OVER_WIFI_SETTING_ENABLED)); } private ImsManager initializeProvisionedValues() { try { when(mImsConfigImplBaseMock.getProvisionedValue(anyInt())) .thenAnswer(invocation -> { return getProvisionedInt((Integer) (invocation.getArguments()[0])); }); when(mImsConfigImplBaseMock.setProvisionedValue(anyInt(), anyInt())) .thenAnswer(invocation -> { mProvisionedIntVals.put((Integer) (invocation.getArguments()[0]), (Integer) (invocation.getArguments()[1])); return ImsConfig.OperationStatusConstants.SUCCESS; }); when(mImsConfigImplBaseMock.getProvisionedStringValue(anyInt())) .thenAnswer(invocation -> { return getProvisionedString((Integer) (invocation.getArguments()[0])); }); when(mImsConfigImplBaseMock.setProvisionedStringValue(anyInt(), anyString())) .thenAnswer(invocation -> { mProvisionedStringVals.put((Integer) (invocation.getArguments()[0]), (String) (invocation.getArguments()[1])); return ImsConfig.OperationStatusConstants.SUCCESS; }); } catch (RemoteException ex) { fail("initializeProvisionedValues failed with " + ex); } // Configure ImsConfigStub mImsConfigStub = new ImsConfigImplBase.ImsConfigStub(mImsConfigImplBaseMock, mContext); doReturn(mImsConfigStub).when(mImsConfigImplBaseMock).getIImsConfig(); // Configure ImsConfig mImsConfig = new ImsConfig(mImsConfigStub, mContext); // Configure ImsManager ImsManager imsManager = ImsManager.getInstance(mContext, mPhoneId); try { replaceInstance(ImsManager.class, "mConfig", imsManager, mImsConfig); } catch (Exception ex) { fail("failed with " + ex); } return imsManager; } // If the value is ever set, return the set value. If not, return a constant value 1000. private int getProvisionedInt(int item) { if (mProvisionedIntVals.containsKey(item)) { return mProvisionedIntVals.get(item); } else { return ImsConfig.FeatureValueConstants.ON; } } // If the value is ever set, return the set value. If not, return a constant value "unset". private String getProvisionedString(int item) { if (mProvisionedStringVals.containsKey(item)) { return mProvisionedStringVals.get(item); } else { return UNSET_PROVISIONED_STRING; } } } Loading
src/java/com/android/internal/telephony/Phone.java +0 −5 Original line number Diff line number Diff line Loading @@ -124,10 +124,6 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { } else if (intent.getAction().equals(ImsManager.ACTION_IMS_SERVICE_DOWN)) { mImsServiceReady = false; updateImsPhone(); } else if (intent.getAction().equals(ImsConfig.ACTION_IMS_CONFIG_CHANGED)) { int item = intent.getIntExtra(ImsConfig.EXTRA_CHANGED_ITEM, -1); String value = intent.getStringExtra(ImsConfig.EXTRA_NEW_VALUE); ImsManager.onProvisionedValueChanged(context, item, value); } } } Loading Loading @@ -561,7 +557,6 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { filter.addAction(ImsManager.ACTION_IMS_SERVICE_UP); filter.addAction(ImsManager.ACTION_IMS_SERVICE_DOWN); } filter.addAction(ImsConfig.ACTION_IMS_CONFIG_CHANGED); mContext.registerReceiver(mImsIntentReceiver, filter); // Monitor IMS service - but first poll to see if already up (could miss Loading
tests/telephonytests/src/com/android/internal/telephony/ims/ImsManagerTest.java +147 −13 Original line number Diff line number Diff line Loading @@ -17,17 +17,21 @@ package com.android.internal.telephony.ims; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.anyInt; import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.os.IBinder; import android.os.PersistableBundle; import android.os.RemoteException; import android.telephony.CarrierConfigManager; import android.telephony.SubscriptionManager; import android.telephony.ims.stub.ImsConfigImplBase; import android.test.suitebuilder.annotation.SmallTest; import com.android.ims.ImsConfig; Loading @@ -39,11 +43,30 @@ import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import java.util.Hashtable; public class ImsManagerTest extends TelephonyTest { private static final String UNSET_PROVISIONED_STRING = "unset"; private static final boolean ENHANCED_4G_MODE_DEFAULT_VAL = true; private static final boolean ENHANCED_4G_MODE_EDITABLE = true; private static final boolean WFC_IMS_ENABLE_DEFAULT_VAL = false; private static final boolean WFC_IMS_ROAMING_ENABLE_DEFAULT_VAL = true; private static final boolean VT_IMS_ENABLE_DEFAULT_VAL = true; private static final int WFC_IMS_MODE_DEFAULT_VAL = 2; private static final int WFC_IMS_ROAMING_MODE_DEFAULT_VAL = 3; PersistableBundle mBundle; @Mock IBinder mBinder; @Mock ImsConfigImplBase mImsConfigImplBaseMock; Hashtable<Integer, Integer> mProvisionedIntVals = new Hashtable<>(); Hashtable<Integer, String> mProvisionedStringVals = new Hashtable<>(); ImsConfigImplBase.ImsConfigStub mImsConfigStub; ImsConfig mImsConfig; private final int[] mSubId = {0}; private int mPhoneId; @Before public void setUp() throws Exception { Loading @@ -57,6 +80,8 @@ public class ImsManagerTest extends TelephonyTest { mServiceManagerMockedServices.put("isub", mBinder); mImsManagerInstances.remove(mPhoneId); setDefaultValues(); } @After Loading @@ -77,26 +102,14 @@ public class ImsManagerTest extends TelephonyTest { WFC_IMS_ROAMING_MODE_DEFAULT_VAL); mBundle.putBoolean(CarrierConfigManager.KEY_ENHANCED_4G_LTE_ON_BY_DEFAULT_BOOL, ENHANCED_4G_MODE_DEFAULT_VAL); mBundle.putBoolean(CarrierConfigManager.KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL, true); } private static final boolean ENHANCED_4G_MODE_DEFAULT_VAL = true; private static final boolean ENHANCED_4G_MODE_EDITABLE = true; private static final boolean WFC_IMS_ENABLE_DEFAULT_VAL = false; private static final boolean WFC_IMS_ROAMING_ENABLE_DEFAULT_VAL = true; private static final boolean VT_IMS_ENABLE_DEFAULT_VAL = true; private static final int WFC_IMS_MODE_DEFAULT_VAL = 2; private static final int WFC_IMS_ROAMING_MODE_DEFAULT_VAL = 3; private final int[] mSubId = {0}; private int mPhoneId; @Test @SmallTest public void testGetDefaultValues() { doReturn("-1").when(mSubscriptionController) .getSubscriptionProperty(anyInt(), anyString(), anyString()); setDefaultValues(); ImsManager imsManager = ImsManager.getInstance(mContext, mPhoneId); assertEquals(WFC_IMS_ENABLE_DEFAULT_VAL, imsManager.isWfcEnabledByUser()); Loading Loading @@ -168,4 +181,125 @@ public class ImsManagerTest extends TelephonyTest { eq(SubscriptionManager.WFC_IMS_ENABLED), eq("1")); } @Test public void testGetProvisionedValues() throws Exception { ImsManager imsManager = initializeProvisionedValues(); assertEquals(true, imsManager.isWfcProvisionedOnDevice()); verify(mImsConfigImplBaseMock, times(1)).getProvisionedValue( eq(ImsConfig.ConfigConstants.VOICE_OVER_WIFI_SETTING_ENABLED)); assertEquals(true, imsManager.isVtProvisionedOnDevice()); verify(mImsConfigImplBaseMock, times(1)).getProvisionedValue( eq(ImsConfig.ConfigConstants.LVC_SETTING_ENABLED)); assertEquals(true, imsManager.isVolteProvisionedOnDevice()); verify(mImsConfigImplBaseMock, times(1)).getProvisionedValue( eq(ImsConfig.ConfigConstants.VLT_SETTING_ENABLED)); // If we call get again, times should still be one because the value should be fetched // from cache. assertEquals(true, imsManager.isWfcProvisionedOnDevice()); verify(mImsConfigImplBaseMock, times(1)).getProvisionedValue( eq(ImsConfig.ConfigConstants.VOICE_OVER_WIFI_SETTING_ENABLED)); assertEquals(true, imsManager.isVtProvisionedOnDevice()); verify(mImsConfigImplBaseMock, times(1)).getProvisionedValue( eq(ImsConfig.ConfigConstants.LVC_SETTING_ENABLED)); assertEquals(true, imsManager.isVolteProvisionedOnDevice()); verify(mImsConfigImplBaseMock, times(1)).getProvisionedValue( eq(ImsConfig.ConfigConstants.VLT_SETTING_ENABLED)); } @Test public void testSetProvisionedValues() throws Exception { ImsManager imsManager = initializeProvisionedValues(); assertEquals(true, imsManager.isWfcProvisionedOnDevice()); verify(mImsConfigImplBaseMock, times(1)).getProvisionedValue( eq(ImsConfig.ConfigConstants.VOICE_OVER_WIFI_SETTING_ENABLED)); imsManager.getConfigInterface().setProvisionedValue( ImsConfig.ConfigConstants.VOICE_OVER_WIFI_SETTING_ENABLED, ImsConfig.FeatureValueConstants.OFF); assertEquals(0, (int) mProvisionedIntVals.get( ImsConfig.ConfigConstants.VOICE_OVER_WIFI_SETTING_ENABLED)); assertEquals(false, imsManager.isWfcProvisionedOnDevice()); verify(mImsConfigImplBaseMock, times(1)).setProvisionedValue( eq(ImsConfig.ConfigConstants.VOICE_OVER_WIFI_SETTING_ENABLED), eq(0)); verify(mImsConfigImplBaseMock, times(1)).getProvisionedValue( eq(ImsConfig.ConfigConstants.VOICE_OVER_WIFI_SETTING_ENABLED)); } private ImsManager initializeProvisionedValues() { try { when(mImsConfigImplBaseMock.getProvisionedValue(anyInt())) .thenAnswer(invocation -> { return getProvisionedInt((Integer) (invocation.getArguments()[0])); }); when(mImsConfigImplBaseMock.setProvisionedValue(anyInt(), anyInt())) .thenAnswer(invocation -> { mProvisionedIntVals.put((Integer) (invocation.getArguments()[0]), (Integer) (invocation.getArguments()[1])); return ImsConfig.OperationStatusConstants.SUCCESS; }); when(mImsConfigImplBaseMock.getProvisionedStringValue(anyInt())) .thenAnswer(invocation -> { return getProvisionedString((Integer) (invocation.getArguments()[0])); }); when(mImsConfigImplBaseMock.setProvisionedStringValue(anyInt(), anyString())) .thenAnswer(invocation -> { mProvisionedStringVals.put((Integer) (invocation.getArguments()[0]), (String) (invocation.getArguments()[1])); return ImsConfig.OperationStatusConstants.SUCCESS; }); } catch (RemoteException ex) { fail("initializeProvisionedValues failed with " + ex); } // Configure ImsConfigStub mImsConfigStub = new ImsConfigImplBase.ImsConfigStub(mImsConfigImplBaseMock, mContext); doReturn(mImsConfigStub).when(mImsConfigImplBaseMock).getIImsConfig(); // Configure ImsConfig mImsConfig = new ImsConfig(mImsConfigStub, mContext); // Configure ImsManager ImsManager imsManager = ImsManager.getInstance(mContext, mPhoneId); try { replaceInstance(ImsManager.class, "mConfig", imsManager, mImsConfig); } catch (Exception ex) { fail("failed with " + ex); } return imsManager; } // If the value is ever set, return the set value. If not, return a constant value 1000. private int getProvisionedInt(int item) { if (mProvisionedIntVals.containsKey(item)) { return mProvisionedIntVals.get(item); } else { return ImsConfig.FeatureValueConstants.ON; } } // If the value is ever set, return the set value. If not, return a constant value "unset". private String getProvisionedString(int item) { if (mProvisionedStringVals.containsKey(item)) { return mProvisionedStringVals.get(item); } else { return UNSET_PROVISIONED_STRING; } } }