Loading src/java/com/android/internal/telephony/data/DataProfileManager.java +6 −9 Original line number Diff line number Diff line Loading @@ -445,20 +445,17 @@ public class DataProfileManager extends Handler { .orElse(null); } if (initialAttachDataProfile == null) { loge("Cannot find initial attach data profile. APN database needs to be configured" + " correctly."); // return here as we can't push a null data profile to the modem as initial attach APN. return; } if (!Objects.equals(mInitialAttachDataProfile, initialAttachDataProfile)) { mInitialAttachDataProfile = initialAttachDataProfile; logl("Initial attach data profile updated as " + mInitialAttachDataProfile); // TODO: Push the null data profile to modem on new AIDL HAL. Modem should clear the IA // APN. if (mInitialAttachDataProfile != null) { mWwanDataServiceManager.setInitialAttachApn(mInitialAttachDataProfile, mPhone.getServiceState().getDataRoamingFromRegistration(), null); } } } /** * Update the data profiles at modem. Loading tests/telephonytests/src/com/android/internal/telephony/data/DataProfileManagerTest.java +69 −6 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.verify; Loading Loading @@ -51,6 +52,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.Mockito; import java.util.Arrays; import java.util.List; Loading @@ -77,6 +79,8 @@ public class DataProfileManagerTest extends TelephonyTest { private DataNetworkControllerCallback mDataNetworkControllerCallback; private boolean mSimInserted = true; private class ApnSettingContentProvider extends MockContentProvider { public final String[] APN_COLUMNS = new String[]{ Telephony.Carriers._ID, Telephony.Carriers.NUMERIC, Loading Loading @@ -125,7 +129,7 @@ public class DataProfileManagerTest extends TelephonyTest { "", // user "", // password -1, // authtype "default,supl,mms", // types "default,supl,mms,ia", // types "IPV4V6", // protocol "IPV4V6", // roaming_protocol 1, // carrier_enabled Loading Loading @@ -281,11 +285,12 @@ public class DataProfileManagerTest extends TelephonyTest { logd("Query '" + PLMN + "' APN settings"); MatrixCursor mc = new MatrixCursor(APN_COLUMNS); if (mSimInserted) { mc.addRow(getFakeApn1()); mc.addRow(getFakeApn2()); mc.addRow(getFakeApn3()); mc.addRow(getFakeApn4()); } return mc; } } else if (isPathPrefixMatch(uri, Loading Loading @@ -520,4 +525,62 @@ public class DataProfileManagerTest extends TelephonyTest { // The small timestamp profile should be returned. assertThat(mPreferredApnId).isEqualTo(dp2.getApnSetting().getId()); } @Test public void testSetInitialAttachDataProfile() { verify(mMockedWwanDataServiceManager).setInitialAttachApn(any(DataProfile.class), eq(false), eq(null)); List<DataProfile> dataProfiles = mDataProfileManagerUT .getDataProfilesForNetworkCapabilities( new int[]{NetworkCapabilities.NET_CAPABILITY_IA}); assertThat(dataProfiles).hasSize(1); assertThat(dataProfiles.get(0).getApnSetting().getApnName()).isEqualTo(GENERAL_PURPOSE_APN); } @Test public void testSimRemoval() throws Exception { testGetDataProfileForNetworkCapabilities(); Mockito.clearInvocations(mDataProfileManagerCallback); mSimInserted = false; mDataProfileManagerUT.obtainMessage(2 /*EVENT_APN_DATABASE_CHANGED*/).sendToTarget(); processAllMessages(); verify(mDataProfileManagerCallback).onDataProfilesChanged(); List<DataProfile> dataProfiles = mDataProfileManagerUT .getDataProfilesForNetworkCapabilities( new int[]{NetworkCapabilities.NET_CAPABILITY_INTERNET}); assertThat(dataProfiles).isEmpty(); dataProfiles = mDataProfileManagerUT.getDataProfilesForNetworkCapabilities( new int[]{NetworkCapabilities.NET_CAPABILITY_EIMS}); assertThat(dataProfiles).hasSize(1); assertThat(dataProfiles.get(0).getApnSetting().getApnName()).isEqualTo("sos"); dataProfiles = mDataProfileManagerUT.getDataProfilesForNetworkCapabilities( new int[]{NetworkCapabilities.NET_CAPABILITY_IMS}); assertThat(dataProfiles).hasSize(1); assertThat(dataProfiles.get(0).getApnSetting().getApnName()).isEqualTo("ims"); } @Test public void testSimInsertedAgain() throws Exception { testSimRemoval(); Mockito.clearInvocations(mDataProfileManagerCallback); Mockito.clearInvocations(mMockedWwanDataServiceManager); mSimInserted = true; mDataProfileManagerUT.obtainMessage(2 /*EVENT_APN_DATABASE_CHANGED*/).sendToTarget(); processAllMessages(); verify(mDataProfileManagerCallback).onDataProfilesChanged(); verify(mMockedWwanDataServiceManager).setInitialAttachApn(any(DataProfile.class), eq(false), eq(null)); List<DataProfile> dataProfiles = mDataProfileManagerUT .getDataProfilesForNetworkCapabilities( new int[]{NetworkCapabilities.NET_CAPABILITY_IMS}); assertThat(dataProfiles).hasSize(1); assertThat(dataProfiles.get(0).getApnSetting().getApnName()).isEqualTo(IMS_APN); } } Loading
src/java/com/android/internal/telephony/data/DataProfileManager.java +6 −9 Original line number Diff line number Diff line Loading @@ -445,20 +445,17 @@ public class DataProfileManager extends Handler { .orElse(null); } if (initialAttachDataProfile == null) { loge("Cannot find initial attach data profile. APN database needs to be configured" + " correctly."); // return here as we can't push a null data profile to the modem as initial attach APN. return; } if (!Objects.equals(mInitialAttachDataProfile, initialAttachDataProfile)) { mInitialAttachDataProfile = initialAttachDataProfile; logl("Initial attach data profile updated as " + mInitialAttachDataProfile); // TODO: Push the null data profile to modem on new AIDL HAL. Modem should clear the IA // APN. if (mInitialAttachDataProfile != null) { mWwanDataServiceManager.setInitialAttachApn(mInitialAttachDataProfile, mPhone.getServiceState().getDataRoamingFromRegistration(), null); } } } /** * Update the data profiles at modem. Loading
tests/telephonytests/src/com/android/internal/telephony/data/DataProfileManagerTest.java +69 −6 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.verify; Loading Loading @@ -51,6 +52,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.Mockito; import java.util.Arrays; import java.util.List; Loading @@ -77,6 +79,8 @@ public class DataProfileManagerTest extends TelephonyTest { private DataNetworkControllerCallback mDataNetworkControllerCallback; private boolean mSimInserted = true; private class ApnSettingContentProvider extends MockContentProvider { public final String[] APN_COLUMNS = new String[]{ Telephony.Carriers._ID, Telephony.Carriers.NUMERIC, Loading Loading @@ -125,7 +129,7 @@ public class DataProfileManagerTest extends TelephonyTest { "", // user "", // password -1, // authtype "default,supl,mms", // types "default,supl,mms,ia", // types "IPV4V6", // protocol "IPV4V6", // roaming_protocol 1, // carrier_enabled Loading Loading @@ -281,11 +285,12 @@ public class DataProfileManagerTest extends TelephonyTest { logd("Query '" + PLMN + "' APN settings"); MatrixCursor mc = new MatrixCursor(APN_COLUMNS); if (mSimInserted) { mc.addRow(getFakeApn1()); mc.addRow(getFakeApn2()); mc.addRow(getFakeApn3()); mc.addRow(getFakeApn4()); } return mc; } } else if (isPathPrefixMatch(uri, Loading Loading @@ -520,4 +525,62 @@ public class DataProfileManagerTest extends TelephonyTest { // The small timestamp profile should be returned. assertThat(mPreferredApnId).isEqualTo(dp2.getApnSetting().getId()); } @Test public void testSetInitialAttachDataProfile() { verify(mMockedWwanDataServiceManager).setInitialAttachApn(any(DataProfile.class), eq(false), eq(null)); List<DataProfile> dataProfiles = mDataProfileManagerUT .getDataProfilesForNetworkCapabilities( new int[]{NetworkCapabilities.NET_CAPABILITY_IA}); assertThat(dataProfiles).hasSize(1); assertThat(dataProfiles.get(0).getApnSetting().getApnName()).isEqualTo(GENERAL_PURPOSE_APN); } @Test public void testSimRemoval() throws Exception { testGetDataProfileForNetworkCapabilities(); Mockito.clearInvocations(mDataProfileManagerCallback); mSimInserted = false; mDataProfileManagerUT.obtainMessage(2 /*EVENT_APN_DATABASE_CHANGED*/).sendToTarget(); processAllMessages(); verify(mDataProfileManagerCallback).onDataProfilesChanged(); List<DataProfile> dataProfiles = mDataProfileManagerUT .getDataProfilesForNetworkCapabilities( new int[]{NetworkCapabilities.NET_CAPABILITY_INTERNET}); assertThat(dataProfiles).isEmpty(); dataProfiles = mDataProfileManagerUT.getDataProfilesForNetworkCapabilities( new int[]{NetworkCapabilities.NET_CAPABILITY_EIMS}); assertThat(dataProfiles).hasSize(1); assertThat(dataProfiles.get(0).getApnSetting().getApnName()).isEqualTo("sos"); dataProfiles = mDataProfileManagerUT.getDataProfilesForNetworkCapabilities( new int[]{NetworkCapabilities.NET_CAPABILITY_IMS}); assertThat(dataProfiles).hasSize(1); assertThat(dataProfiles.get(0).getApnSetting().getApnName()).isEqualTo("ims"); } @Test public void testSimInsertedAgain() throws Exception { testSimRemoval(); Mockito.clearInvocations(mDataProfileManagerCallback); Mockito.clearInvocations(mMockedWwanDataServiceManager); mSimInserted = true; mDataProfileManagerUT.obtainMessage(2 /*EVENT_APN_DATABASE_CHANGED*/).sendToTarget(); processAllMessages(); verify(mDataProfileManagerCallback).onDataProfilesChanged(); verify(mMockedWwanDataServiceManager).setInitialAttachApn(any(DataProfile.class), eq(false), eq(null)); List<DataProfile> dataProfiles = mDataProfileManagerUT .getDataProfilesForNetworkCapabilities( new int[]{NetworkCapabilities.NET_CAPABILITY_IMS}); assertThat(dataProfiles).hasSize(1); assertThat(dataProfiles.get(0).getApnSetting().getApnName()).isEqualTo(IMS_APN); } }