aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLing Ma <linggm@google.com>2022-06-02 23:20:54 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2022-06-02 23:20:54 +0000
commit51613ffbcc8aeaa471456cabb2bf4d7e803eea9f (patch)
treeb64e574123ce15e226ed10d6fd501696e2f32ce1
parent36e5ecf1ba146c8a097f5edbb55ccd57dfbf1d0b (diff)
parentc9d38985575291cb7b325a64e5cf17af4c3b4083 (diff)
downloadtelephony-51613ffbcc8aeaa471456cabb2bf4d7e803eea9f.tar.gz
Fix Sync preferred apn and preferred apn set id am: c9d3898557
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/opt/telephony/+/18719908 Change-Id: Ia14743488645f5832c7cf145436502587fc26a90 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--src/java/com/android/internal/telephony/data/DataProfileManager.java9
-rw-r--r--tests/telephonytests/src/com/android/internal/telephony/data/DataProfileManagerTest.java42
2 files changed, 49 insertions, 2 deletions
diff --git a/src/java/com/android/internal/telephony/data/DataProfileManager.java b/src/java/com/android/internal/telephony/data/DataProfileManager.java
index abf1009358..1ec345c943 100644
--- a/src/java/com/android/internal/telephony/data/DataProfileManager.java
+++ b/src/java/com/android/internal/telephony/data/DataProfileManager.java
@@ -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();
@@ -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;
diff --git a/tests/telephonytests/src/com/android/internal/telephony/data/DataProfileManagerTest.java b/tests/telephonytests/src/com/android/internal/telephony/data/DataProfileManagerTest.java
index 96e2098673..783df82e39 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/data/DataProfileManagerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/data/DataProfileManagerTest.java
@@ -363,6 +363,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;
@@ -864,6 +874,38 @@ public class DataProfileManagerTest extends TelephonyTest {
}
@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(
TelephonyManager.NETWORK_TYPE_NR)).isTrue();