Loading src/java/com/android/internal/telephony/data/DataProfileManager.java +7 −2 Original line number Diff line number Diff line Loading @@ -312,14 +312,15 @@ public class DataProfileManager extends Handler { profilesChanged = true; } // Reload the latest preferred data profile from either database or config. profilesChanged |= updatePreferredDataProfile(); int setId = getPreferredDataProfileSetId(); if (setId != mPreferredDataProfileSetId) { logl("Changed preferred data profile set id to " + setId); mPreferredDataProfileSetId = setId; profilesChanged = true; } // Reload the latest preferred data profile from either database or config. profilesChanged |= updatePreferredDataProfile(); updateDataProfilesAtModem(); updateInitialAttachDataProfileAtModem(); Loading Loading @@ -461,6 +462,10 @@ public class DataProfileManager extends Handler { preferredDataProfile = getPreferredDataProfileFromDb(); if (preferredDataProfile == null) { preferredDataProfile = getPreferredDataProfileFromConfig(); if (preferredDataProfile != null) { // Save the carrier specified preferred data profile into database setPreferredDataProfile(preferredDataProfile); } } } else { preferredDataProfile = null; Loading tests/telephonytests/src/com/android/internal/telephony/data/DataProfileManagerTest.java +42 −0 Original line number Diff line number Diff line Loading @@ -364,6 +364,16 @@ public class DataProfileManagerTest extends TelephonyTest { logd("ApnSettingContentProvider: uri=" + uri + ", values=" + values); if (uri.isPathPrefixMatch(Telephony.Carriers.PREFERRED_APN_URI)) { mPreferredApnId = values.getAsInteger(Telephony.Carriers.APN_ID); if (mPreferredApnId != -1) { for (Object apnSetting : mAllApnSettings) { int id = (int) ((Object[]) apnSetting)[0]; if (id == mPreferredApnId) { mPreferredApnSet = (int) ((Object[]) apnSetting)[28]; //update setId too } } } else { mPreferredApnSet = 0; // db is emptied } logd("mPreferredApnId=" + mPreferredApnId); } return null; Loading Loading @@ -863,6 +873,38 @@ public class DataProfileManagerTest extends TelephonyTest { assertThat(mDataProfileManagerUT.isDataProfilePreferred(dataProfile)).isFalse(); } @Test public void testResetApnWithPreferredConfig() { // carrier configured preferred data profile should be picked doReturn(GENERAL_PURPOSE_APN1).when(mDataConfigManager).getDefaultPreferredApn(); TelephonyNetworkRequest tnr = new TelephonyNetworkRequest( new NetworkRequest.Builder() .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .build(), mPhone); mSimInserted = true; mDataProfileManagerUT.obtainMessage(2 /*EVENT_APN_DATABASE_CHANGED*/).sendToTarget(); processAllMessages(); // The carrier configured data profile should be the preferred APN after APN reset DataProfile dataProfile = mDataProfileManagerUT.getDataProfileForNetworkRequest( tnr, TelephonyManager.NETWORK_TYPE_LTE); assertThat(dataProfile.getApnSetting().getApnName()).isEqualTo(GENERAL_PURPOSE_APN1); assertThat(mDataProfileManagerUT.isDataProfilePreferred(dataProfile)).isTrue(); // APN reset mPreferredApnId = -1; mDataProfileManagerUT.obtainMessage(2 /*EVENT_APN_DATABASE_CHANGED*/).sendToTarget(); Mockito.clearInvocations(mDataConfigManager); processAllMessages(); // The carrier configured data profile should be the preferred APN after APN reset dataProfile = mDataProfileManagerUT.getDataProfileForNetworkRequest( tnr, TelephonyManager.NETWORK_TYPE_LTE); assertThat(dataProfile.getApnSetting().getApnName()).isEqualTo(GENERAL_PURPOSE_APN1); assertThat(mDataProfileManagerUT.isDataProfilePreferred(dataProfile)).isTrue(); } @Test public void testTetheringApnExisting() { assertThat(mDataProfileManagerUT.isTetheringDataProfileExisting( Loading Loading
src/java/com/android/internal/telephony/data/DataProfileManager.java +7 −2 Original line number Diff line number Diff line Loading @@ -312,14 +312,15 @@ public class DataProfileManager extends Handler { profilesChanged = true; } // Reload the latest preferred data profile from either database or config. profilesChanged |= updatePreferredDataProfile(); int setId = getPreferredDataProfileSetId(); if (setId != mPreferredDataProfileSetId) { logl("Changed preferred data profile set id to " + setId); mPreferredDataProfileSetId = setId; profilesChanged = true; } // Reload the latest preferred data profile from either database or config. profilesChanged |= updatePreferredDataProfile(); updateDataProfilesAtModem(); updateInitialAttachDataProfileAtModem(); Loading Loading @@ -461,6 +462,10 @@ public class DataProfileManager extends Handler { preferredDataProfile = getPreferredDataProfileFromDb(); if (preferredDataProfile == null) { preferredDataProfile = getPreferredDataProfileFromConfig(); if (preferredDataProfile != null) { // Save the carrier specified preferred data profile into database setPreferredDataProfile(preferredDataProfile); } } } else { preferredDataProfile = null; Loading
tests/telephonytests/src/com/android/internal/telephony/data/DataProfileManagerTest.java +42 −0 Original line number Diff line number Diff line Loading @@ -364,6 +364,16 @@ public class DataProfileManagerTest extends TelephonyTest { logd("ApnSettingContentProvider: uri=" + uri + ", values=" + values); if (uri.isPathPrefixMatch(Telephony.Carriers.PREFERRED_APN_URI)) { mPreferredApnId = values.getAsInteger(Telephony.Carriers.APN_ID); if (mPreferredApnId != -1) { for (Object apnSetting : mAllApnSettings) { int id = (int) ((Object[]) apnSetting)[0]; if (id == mPreferredApnId) { mPreferredApnSet = (int) ((Object[]) apnSetting)[28]; //update setId too } } } else { mPreferredApnSet = 0; // db is emptied } logd("mPreferredApnId=" + mPreferredApnId); } return null; Loading Loading @@ -863,6 +873,38 @@ public class DataProfileManagerTest extends TelephonyTest { assertThat(mDataProfileManagerUT.isDataProfilePreferred(dataProfile)).isFalse(); } @Test public void testResetApnWithPreferredConfig() { // carrier configured preferred data profile should be picked doReturn(GENERAL_PURPOSE_APN1).when(mDataConfigManager).getDefaultPreferredApn(); TelephonyNetworkRequest tnr = new TelephonyNetworkRequest( new NetworkRequest.Builder() .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .build(), mPhone); mSimInserted = true; mDataProfileManagerUT.obtainMessage(2 /*EVENT_APN_DATABASE_CHANGED*/).sendToTarget(); processAllMessages(); // The carrier configured data profile should be the preferred APN after APN reset DataProfile dataProfile = mDataProfileManagerUT.getDataProfileForNetworkRequest( tnr, TelephonyManager.NETWORK_TYPE_LTE); assertThat(dataProfile.getApnSetting().getApnName()).isEqualTo(GENERAL_PURPOSE_APN1); assertThat(mDataProfileManagerUT.isDataProfilePreferred(dataProfile)).isTrue(); // APN reset mPreferredApnId = -1; mDataProfileManagerUT.obtainMessage(2 /*EVENT_APN_DATABASE_CHANGED*/).sendToTarget(); Mockito.clearInvocations(mDataConfigManager); processAllMessages(); // The carrier configured data profile should be the preferred APN after APN reset dataProfile = mDataProfileManagerUT.getDataProfileForNetworkRequest( tnr, TelephonyManager.NETWORK_TYPE_LTE); assertThat(dataProfile.getApnSetting().getApnName()).isEqualTo(GENERAL_PURPOSE_APN1); assertThat(mDataProfileManagerUT.isDataProfilePreferred(dataProfile)).isTrue(); } @Test public void testTetheringApnExisting() { assertThat(mDataProfileManagerUT.isTetheringDataProfileExisting( Loading