Loading src/java/com/android/internal/telephony/SubscriptionController.java +7 −5 Original line number Original line Diff line number Diff line Loading @@ -3714,13 +3714,15 @@ public class SubscriptionController extends ISub.Stub { if (slotsInfo == null) return false; if (slotsInfo == null) return false; for (int i = 0; i < slotsInfo.length; i++) { for (int i = 0; i < slotsInfo.length; i++) { UiccSlotInfo curSlotInfo = slotsInfo[i]; UiccSlotInfo curSlotInfo = slotsInfo[i]; if (curSlotInfo.getCardStateInfo() == CARD_STATE_INFO_PRESENT if (curSlotInfo.getCardStateInfo() == CARD_STATE_INFO_PRESENT) { && TextUtils.equals(curSlotInfo.getCardId(), info.getCardString())) { if (TextUtils.equals(IccUtils.stripTrailingFs(curSlotInfo.getCardId()), IccUtils.stripTrailingFs(info.getCardString()))) { slotInfo = curSlotInfo; slotInfo = curSlotInfo; physicalSlotIndex = i; physicalSlotIndex = i; break; break; } } } } } // Can't find the existing SIM. // Can't find the existing SIM. if (slotInfo == null) return false; if (slotInfo == null) return false; Loading src/java/com/android/internal/telephony/dataconnection/DataConnection.java +1 −0 Original line number Original line Diff line number Diff line Loading @@ -2130,6 +2130,7 @@ public class DataConnection extends StateMachine { final NetworkAgentConfig.Builder configBuilder = new NetworkAgentConfig.Builder(); final NetworkAgentConfig.Builder configBuilder = new NetworkAgentConfig.Builder(); configBuilder.setLegacyType(ConnectivityManager.TYPE_MOBILE); configBuilder.setLegacyType(ConnectivityManager.TYPE_MOBILE); configBuilder.setLegacyTypeName(NETWORK_TYPE); configBuilder.setLegacyTypeName(NETWORK_TYPE); configBuilder.setLegacyExtraInfo(mApnSetting.getApnName()); final CarrierSignalAgent carrierSignalAgent = mPhone.getCarrierSignalAgent(); final CarrierSignalAgent carrierSignalAgent = mPhone.getCarrierSignalAgent(); if (carrierSignalAgent.hasRegisteredReceivers(TelephonyManager if (carrierSignalAgent.hasRegisteredReceivers(TelephonyManager .ACTION_CARRIER_SIGNAL_REDIRECTED)) { .ACTION_CARRIER_SIGNAL_REDIRECTED)) { Loading tests/telephonytests/src/com/android/internal/telephony/SubscriptionControllerTest.java +25 −1 Original line number Original line Diff line number Diff line Loading @@ -26,7 +26,9 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotSame; import static org.junit.Assert.assertNotSame; import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import static org.junit.Assert.fail; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.Mockito.atLeast; import static org.mockito.Mockito.atLeast; Loading @@ -42,6 +44,7 @@ import android.content.ContentValues; import android.content.Intent; import android.content.Intent; import android.os.Build; import android.os.Build; import android.os.Bundle; import android.os.Bundle; import android.os.Handler; import android.os.ParcelUuid; import android.os.ParcelUuid; import android.os.UserHandle; import android.os.UserHandle; import android.provider.Settings; import android.provider.Settings; Loading Loading @@ -86,6 +89,8 @@ public class SubscriptionControllerTest extends TelephonyTest { private MultiSimSettingController mMultiSimSettingControllerMock; private MultiSimSettingController mMultiSimSettingControllerMock; @Mock @Mock private ISetOpportunisticDataCallback mSetOpptDataCallback; private ISetOpportunisticDataCallback mSetOpptDataCallback; @Mock private Handler mHandler; private static final String MAC_ADDRESS_PREFIX = "mac_"; private static final String MAC_ADDRESS_PREFIX = "mac_"; private static final String DISPLAY_NAME_PREFIX = "my_phone_"; private static final String DISPLAY_NAME_PREFIX = "my_phone_"; Loading Loading @@ -1453,7 +1458,11 @@ public class SubscriptionControllerTest extends TelephonyTest { private UiccSlotInfo getFakeUiccSlotInfo(boolean active, int logicalSlotIndex) { private UiccSlotInfo getFakeUiccSlotInfo(boolean active, int logicalSlotIndex) { return new UiccSlotInfo(active, false, "fake card Id", return getFakeUiccSlotInfo(active, logicalSlotIndex, "fake card Id"); } private UiccSlotInfo getFakeUiccSlotInfo(boolean active, int logicalSlotIndex, String cardId) { return new UiccSlotInfo(active, false, cardId, UiccSlotInfo.CARD_STATE_INFO_PRESENT, logicalSlotIndex, true, true); UiccSlotInfo.CARD_STATE_INFO_PRESENT, logicalSlotIndex, true, true); } } Loading Loading @@ -1534,4 +1543,19 @@ public class SubscriptionControllerTest extends TelephonyTest { assertEquals(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, assertEquals(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, mSubscriptionControllerUT.getPreferredDataSubscriptionId()); mSubscriptionControllerUT.getPreferredDataSubscriptionId()); } } @Test public void testSetSubscriptionEnabled_disableActivePsim_cardIdWithTrailingF() { String iccId = "123F"; mSubscriptionControllerUT.addSubInfoRecord(iccId, 0); mSubscriptionControllerUT.registerForUiccAppsEnabled(mHandler, 0, null, false); UiccSlotInfo slot = getFakeUiccSlotInfo(true, 0, iccId + "FF"); UiccSlotInfo[] uiccSlotInfos = {slot}; doReturn(uiccSlotInfos).when(mTelephonyManager).getUiccSlotsInfo(); mSubscriptionControllerUT.setSubscriptionEnabled(false, 1); verify(mHandler).sendMessageAtTime(any(), anyLong()); assertFalse(mSubscriptionControllerUT.getActiveSubscriptionInfo( 1, mContext.getOpPackageName(), null).areUiccApplicationsEnabled()); } } } Loading
src/java/com/android/internal/telephony/SubscriptionController.java +7 −5 Original line number Original line Diff line number Diff line Loading @@ -3714,13 +3714,15 @@ public class SubscriptionController extends ISub.Stub { if (slotsInfo == null) return false; if (slotsInfo == null) return false; for (int i = 0; i < slotsInfo.length; i++) { for (int i = 0; i < slotsInfo.length; i++) { UiccSlotInfo curSlotInfo = slotsInfo[i]; UiccSlotInfo curSlotInfo = slotsInfo[i]; if (curSlotInfo.getCardStateInfo() == CARD_STATE_INFO_PRESENT if (curSlotInfo.getCardStateInfo() == CARD_STATE_INFO_PRESENT) { && TextUtils.equals(curSlotInfo.getCardId(), info.getCardString())) { if (TextUtils.equals(IccUtils.stripTrailingFs(curSlotInfo.getCardId()), IccUtils.stripTrailingFs(info.getCardString()))) { slotInfo = curSlotInfo; slotInfo = curSlotInfo; physicalSlotIndex = i; physicalSlotIndex = i; break; break; } } } } } // Can't find the existing SIM. // Can't find the existing SIM. if (slotInfo == null) return false; if (slotInfo == null) return false; Loading
src/java/com/android/internal/telephony/dataconnection/DataConnection.java +1 −0 Original line number Original line Diff line number Diff line Loading @@ -2130,6 +2130,7 @@ public class DataConnection extends StateMachine { final NetworkAgentConfig.Builder configBuilder = new NetworkAgentConfig.Builder(); final NetworkAgentConfig.Builder configBuilder = new NetworkAgentConfig.Builder(); configBuilder.setLegacyType(ConnectivityManager.TYPE_MOBILE); configBuilder.setLegacyType(ConnectivityManager.TYPE_MOBILE); configBuilder.setLegacyTypeName(NETWORK_TYPE); configBuilder.setLegacyTypeName(NETWORK_TYPE); configBuilder.setLegacyExtraInfo(mApnSetting.getApnName()); final CarrierSignalAgent carrierSignalAgent = mPhone.getCarrierSignalAgent(); final CarrierSignalAgent carrierSignalAgent = mPhone.getCarrierSignalAgent(); if (carrierSignalAgent.hasRegisteredReceivers(TelephonyManager if (carrierSignalAgent.hasRegisteredReceivers(TelephonyManager .ACTION_CARRIER_SIGNAL_REDIRECTED)) { .ACTION_CARRIER_SIGNAL_REDIRECTED)) { Loading
tests/telephonytests/src/com/android/internal/telephony/SubscriptionControllerTest.java +25 −1 Original line number Original line Diff line number Diff line Loading @@ -26,7 +26,9 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotSame; import static org.junit.Assert.assertNotSame; import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import static org.junit.Assert.fail; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.Mockito.atLeast; import static org.mockito.Mockito.atLeast; Loading @@ -42,6 +44,7 @@ import android.content.ContentValues; import android.content.Intent; import android.content.Intent; import android.os.Build; import android.os.Build; import android.os.Bundle; import android.os.Bundle; import android.os.Handler; import android.os.ParcelUuid; import android.os.ParcelUuid; import android.os.UserHandle; import android.os.UserHandle; import android.provider.Settings; import android.provider.Settings; Loading Loading @@ -86,6 +89,8 @@ public class SubscriptionControllerTest extends TelephonyTest { private MultiSimSettingController mMultiSimSettingControllerMock; private MultiSimSettingController mMultiSimSettingControllerMock; @Mock @Mock private ISetOpportunisticDataCallback mSetOpptDataCallback; private ISetOpportunisticDataCallback mSetOpptDataCallback; @Mock private Handler mHandler; private static final String MAC_ADDRESS_PREFIX = "mac_"; private static final String MAC_ADDRESS_PREFIX = "mac_"; private static final String DISPLAY_NAME_PREFIX = "my_phone_"; private static final String DISPLAY_NAME_PREFIX = "my_phone_"; Loading Loading @@ -1453,7 +1458,11 @@ public class SubscriptionControllerTest extends TelephonyTest { private UiccSlotInfo getFakeUiccSlotInfo(boolean active, int logicalSlotIndex) { private UiccSlotInfo getFakeUiccSlotInfo(boolean active, int logicalSlotIndex) { return new UiccSlotInfo(active, false, "fake card Id", return getFakeUiccSlotInfo(active, logicalSlotIndex, "fake card Id"); } private UiccSlotInfo getFakeUiccSlotInfo(boolean active, int logicalSlotIndex, String cardId) { return new UiccSlotInfo(active, false, cardId, UiccSlotInfo.CARD_STATE_INFO_PRESENT, logicalSlotIndex, true, true); UiccSlotInfo.CARD_STATE_INFO_PRESENT, logicalSlotIndex, true, true); } } Loading Loading @@ -1534,4 +1543,19 @@ public class SubscriptionControllerTest extends TelephonyTest { assertEquals(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, assertEquals(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, mSubscriptionControllerUT.getPreferredDataSubscriptionId()); mSubscriptionControllerUT.getPreferredDataSubscriptionId()); } } @Test public void testSetSubscriptionEnabled_disableActivePsim_cardIdWithTrailingF() { String iccId = "123F"; mSubscriptionControllerUT.addSubInfoRecord(iccId, 0); mSubscriptionControllerUT.registerForUiccAppsEnabled(mHandler, 0, null, false); UiccSlotInfo slot = getFakeUiccSlotInfo(true, 0, iccId + "FF"); UiccSlotInfo[] uiccSlotInfos = {slot}; doReturn(uiccSlotInfos).when(mTelephonyManager).getUiccSlotsInfo(); mSubscriptionControllerUT.setSubscriptionEnabled(false, 1); verify(mHandler).sendMessageAtTime(any(), anyLong()); assertFalse(mSubscriptionControllerUT.getActiveSubscriptionInfo( 1, mContext.getOpPackageName(), null).areUiccApplicationsEnabled()); } } }