summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2020-07-18 01:14:51 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2020-07-18 01:14:51 +0000
commitd255ed4c14c08931c4be56542724c8ed501e03fb (patch)
treec2a0d254ac75313d852a5acf109f7be596a68136
parent6109b7fc98842dadaa254918eae94260d2e8c083 (diff)
parent748c832f0eedd4a0cab8768a067eb9f68260d5d3 (diff)
downloadplatform_packages_providers_TelephonyProvider-android11-d1-s7-release.tar.gz
platform_packages_providers_TelephonyProvider-android11-d1-s7-release.tar.bz2
platform_packages_providers_TelephonyProvider-android11-d1-s7-release.zip
Change-Id: I4a2e9b51d4023942d55956264d3b99433cae2260
-rw-r--r--src/com/android/providers/telephony/TelephonyProvider.java12
-rw-r--r--tests/src/com/android/providers/telephony/TelephonyProviderTest.java22
2 files changed, 28 insertions, 6 deletions
diff --git a/src/com/android/providers/telephony/TelephonyProvider.java b/src/com/android/providers/telephony/TelephonyProvider.java
index 4966e5ae..f9767477 100644
--- a/src/com/android/providers/telephony/TelephonyProvider.java
+++ b/src/com/android/providers/telephony/TelephonyProvider.java
@@ -169,6 +169,9 @@ public class TelephonyProvider extends ContentProvider
private static final int URL_FILTERED = 18;
private static final int URL_FILTERED_ID = 19;
private static final int URL_ENFORCE_MANAGED = 20;
+ // URL_PREFERAPNSET and URL_PREFERAPNSET_USING_SUBID return all APNs for the current
+ // carrier which have an apn_set_id equal to the preferred APN
+ // (if no preferred APN, or preferred APN has no set id, the query will return null)
private static final int URL_PREFERAPNSET = 21;
private static final int URL_PREFERAPNSET_USING_SUBID = 22;
private static final int URL_SIM_APN_LIST = 23;
@@ -3009,10 +3012,13 @@ public class TelephonyProvider extends ContentProvider
// intentional fall through from above case
case URL_PREFERAPNSET: {
final int set = getPreferredApnSetId(subId);
- if (set != NO_APN_SET_ID) {
- constraints.add(APN_SET_ID + "=" + set);
+ if (set == NO_APN_SET_ID) {
+ return null;
}
- break;
+ constraints.add(APN_SET_ID + "=" + set);
+ qb.appendWhere(TextUtils.join(" AND ", constraints));
+ return getSubscriptionMatchingAPNList(qb, projectionIn, selection, selectionArgs,
+ sort, subId);
}
case URL_DPC: {
diff --git a/tests/src/com/android/providers/telephony/TelephonyProviderTest.java b/tests/src/com/android/providers/telephony/TelephonyProviderTest.java
index 18c8d089..e0f07bc7 100644
--- a/tests/src/com/android/providers/telephony/TelephonyProviderTest.java
+++ b/tests/src/com/android/providers/telephony/TelephonyProviderTest.java
@@ -1298,20 +1298,35 @@ public class TelephonyProviderTest extends TestCase {
values3.put(Carriers.NUMERIC, TEST_OPERATOR);
values3.put(Carriers.APN_SET_ID, 1);
+ // values4 has a matching setId but it belongs to a different carrier
+ ContentValues values4 = new ContentValues();
+ final String apn4 = "fourthApnName";
+ final String name4 = "name4";
+ values4.put(Carriers.APN, apn4);
+ values4.put(Carriers.NAME, name4);
+ values4.put(Carriers.NUMERIC, "999888");
+ values4.put(Carriers.APN_SET_ID, 1);
+
// insert APNs
// we explicitly include subid, as SubscriptionManager.getDefaultSubscriptionId() returns -1
Log.d(TAG, "testPreferApnSetUrl: inserting contentValues=" + values1 + ", " + values2
- + ", " + values3);
+ + ", " + values3 + ", " + values4);
mContentResolver.insert(CONTENT_URI_WITH_SUBID, values1);
mContentResolver.insert(CONTENT_URI_WITH_SUBID, values2);
+ mContentResolver.insert(CONTENT_URI_WITH_SUBID, values4);
Uri uri = mContentResolver.insert(CONTENT_URI_WITH_SUBID, values3);
- // before there's a preferred APN set, assert that all APNs are returned
+ // verify all APNs were correctly inserted
final String[] testProjection = { Carriers.NAME };
Cursor cursor = mContentResolver.query(
+ Carriers.CONTENT_URI, testProjection, null, null, null);
+ assertEquals(4, cursor.getCount());
+
+ // preferapnset/subId returns null when there is no preferred APN
+ cursor = mContentResolver.query(
Uri.withAppendedPath(Carriers.CONTENT_URI, "preferapnset/subId/" + TEST_SUBID),
testProjection, null, null, null);
- assertEquals(3, cursor.getCount());
+ assertNull(cursor);
// set the APN from values3 (apn_set_id = 1) to the preferred APN
final String preferredApnIdString = uri.getLastPathSegment();
@@ -1326,6 +1341,7 @@ public class TelephonyProviderTest extends TestCase {
cursor = mContentResolver.query(
Uri.withAppendedPath(Carriers.CONTENT_URI, "preferapnset/subId/" + TEST_SUBID),
testProjection, null, null, null);
+ // values4 which was inserted with a different carrier is not included in the results
assertEquals(2, cursor.getCount());
cursor.moveToFirst();
assertEquals(name2, cursor.getString(0));