aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2021-07-17 03:07:17 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2021-07-17 03:07:17 +0000
commitfc5572715b9901ba4b1cec081eea28896346ad58 (patch)
treec453c84db4ad6173d359006761f9beddded5d97b
parentf17f4f110a00dad5496d6aa3330ad65b7326cf75 (diff)
parente93db40636d9cca57797fa5a338851ba779c0d24 (diff)
downloadims-android12-s3-release.tar.gz
Snap for 7557983 from e93db40636d9cca57797fa5a338851ba779c0d24 to sc-releaseandroid-vts-12.0_r9android-vts-12.0_r8android-vts-12.0_r7android-vts-12.0_r6android-vts-12.0_r5android-vts-12.0_r4android-vts-12.0_r3android-vts-12.0_r2android-vts-12.0_r12android-vts-12.0_r11android-vts-12.0_r10android-vts-12.0_r1android-security-12.0.0_r59android-security-12.0.0_r58android-security-12.0.0_r57android-security-12.0.0_r56android-security-12.0.0_r55android-security-12.0.0_r54android-security-12.0.0_r53android-security-12.0.0_r52android-security-12.0.0_r51android-security-12.0.0_r50android-security-12.0.0_r49android-security-12.0.0_r48android-security-12.0.0_r47android-security-12.0.0_r46android-security-12.0.0_r45android-security-12.0.0_r44android-security-12.0.0_r43android-security-12.0.0_r42android-security-12.0.0_r41android-security-12.0.0_r40android-security-12.0.0_r39android-security-12.0.0_r38android-security-12.0.0_r37android-security-12.0.0_r36android-security-12.0.0_r35android-security-12.0.0_r34android-platform-12.0.0_r1android-cts-12.0_r9android-cts-12.0_r8android-cts-12.0_r7android-cts-12.0_r6android-cts-12.0_r5android-cts-12.0_r4android-cts-12.0_r3android-cts-12.0_r2android-cts-12.0_r12android-cts-12.0_r11android-cts-12.0_r10android-cts-12.0_r1android-12.0.0_r9android-12.0.0_r8android-12.0.0_r34android-12.0.0_r33android-12.0.0_r31android-12.0.0_r30android-12.0.0_r3android-12.0.0_r25android-12.0.0_r2android-12.0.0_r11android-12.0.0_r10android-12.0.0_r1android12-tests-releaseandroid12-security-releaseandroid12-s5-releaseandroid12-s4-releaseandroid12-s3-releaseandroid12-s2-releaseandroid12-s1-releaseandroid12-release
Change-Id: Ie99200f6e00d7139899e0fdc48909eb50b2b6888
-rw-r--r--src/java/com/android/ims/rcs/uce/eab/EabProvider.java47
-rw-r--r--tests/src/com/android/ims/rcs/uce/eab/EabControllerTest.java64
-rw-r--r--tests/src/com/android/ims/rcs/uce/eab/EabProviderTest.java6
3 files changed, 90 insertions, 27 deletions
diff --git a/src/java/com/android/ims/rcs/uce/eab/EabProvider.java b/src/java/com/android/ims/rcs/uce/eab/EabProvider.java
index 60283c22..da70349a 100644
--- a/src/java/com/android/ims/rcs/uce/eab/EabProvider.java
+++ b/src/java/com/android/ims/rcs/uce/eab/EabProvider.java
@@ -81,7 +81,7 @@ public class EabProvider extends ContentProvider {
public static final String AUTHORITY = "eab";
private static final String TAG = "EabProvider";
- private static final int DATABASE_VERSION = 2;
+ private static final int DATABASE_VERSION = 3;
public static final String EAB_CONTACT_TABLE_NAME = "eab_contact";
public static final String EAB_COMMON_TABLE_NAME = "eab_common";
@@ -332,8 +332,6 @@ public class EabProvider extends ContentProvider {
static {
CONTACT_UNIQUE_FIELDS.add(ContactColumns.PHONE_NUMBER);
-
- COMMON_UNIQUE_FIELDS.add(EabCommonColumns.EAB_CONTACT_ID);
}
@VisibleForTesting
@@ -356,8 +354,7 @@ public class EabProvider extends ContentProvider {
+ EabCommonColumns.EAB_CONTACT_ID + " INTEGER DEFAULT -1, "
+ EabCommonColumns.MECHANISM + " INTEGER DEFAULT NULL, "
+ EabCommonColumns.REQUEST_RESULT + " INTEGER DEFAULT -1, "
- + EabCommonColumns.SUBSCRIPTION_ID + " INTEGER DEFAULT -1, "
- + "UNIQUE (" + TextUtils.join(", ", COMMON_UNIQUE_FIELDS) + ")"
+ + EabCommonColumns.SUBSCRIPTION_ID + " INTEGER DEFAULT -1 "
+ ");";
@VisibleForTesting
@@ -410,6 +407,46 @@ public class EabProvider extends ContentProvider {
+ ContactColumns.CONTACT_ID + " INTEGER DEFAULT -1;");
oldVersion = 2;
}
+
+ if (oldVersion < 3) {
+ // Drop UNIQUE constraint in EAB_COMMON_TABLE, SQLite didn't support DROP
+ // constraint, so drop the old one and migrate data to new one
+
+ // Create temp table
+ final String createTempTableCommand = "CREATE TABLE temp"
+ + " ("
+ + EabCommonColumns._ID + " INTEGER PRIMARY KEY, "
+ + EabCommonColumns.EAB_CONTACT_ID + " INTEGER DEFAULT -1, "
+ + EabCommonColumns.MECHANISM + " INTEGER DEFAULT NULL, "
+ + EabCommonColumns.REQUEST_RESULT + " INTEGER DEFAULT -1, "
+ + EabCommonColumns.SUBSCRIPTION_ID + " INTEGER DEFAULT -1 "
+ + ");";
+ sqLiteDatabase.execSQL(createTempTableCommand);
+
+ // Migrate data to temp table
+ sqLiteDatabase.execSQL("INSERT INTO temp ("
+ + EabCommonColumns._ID + ", "
+ + EabCommonColumns.EAB_CONTACT_ID + ", "
+ + EabCommonColumns.MECHANISM + ", "
+ + EabCommonColumns.REQUEST_RESULT + ", "
+ + EabCommonColumns.SUBSCRIPTION_ID + ") "
+ + " SELECT "
+ + EabCommonColumns._ID + ", "
+ + EabCommonColumns.EAB_CONTACT_ID + ", "
+ + EabCommonColumns.MECHANISM + ", "
+ + EabCommonColumns.REQUEST_RESULT + ", "
+ + EabCommonColumns.SUBSCRIPTION_ID + " "
+ + " FROM "
+ + EAB_COMMON_TABLE_NAME
+ +";");
+
+ // Drop old one
+ sqLiteDatabase.execSQL("DROP TABLE " + EAB_COMMON_TABLE_NAME + ";");
+
+ // Rename temp to eab_common
+ sqLiteDatabase.execSQL("ALTER TABLE temp RENAME TO " + EAB_COMMON_TABLE_NAME + ";");
+ oldVersion = 3;
+ }
}
}
diff --git a/tests/src/com/android/ims/rcs/uce/eab/EabControllerTest.java b/tests/src/com/android/ims/rcs/uce/eab/EabControllerTest.java
index 5138445f..96147b43 100644
--- a/tests/src/com/android/ims/rcs/uce/eab/EabControllerTest.java
+++ b/tests/src/com/android/ims/rcs/uce/eab/EabControllerTest.java
@@ -66,7 +66,8 @@ import java.util.concurrent.TimeUnit;
@RunWith(AndroidJUnit4.class)
public class EabControllerTest extends ImsTestBase {
EabProviderTestable mEabProviderTestable = new EabProviderTestable();
- EabControllerImpl mEabController;
+ EabControllerImpl mEabControllerSub1;
+ EabControllerImpl mEabControllerSub2;
PersistableBundle mBundle;
ExecutorService mExecutor = Executors.newSingleThreadExecutor();
@@ -74,6 +75,7 @@ public class EabControllerTest extends ImsTestBase {
EabControllerImpl.ExpirationTimeFactory mExpirationTimeFactory;
private static final int TEST_SUB_ID = 1;
+ private static final int TEST_SECOND_SUB_ID = 2;
private static final String TEST_PHONE_NUMBER = "16661234567";
private static final String TEST_SERVICE_STATUS = "status";
private static final String TEST_SERVICE_SERVICE_ID = "serviceId";
@@ -94,9 +96,14 @@ public class EabControllerTest extends ImsTestBase {
mockContentResolver.addProvider(EabProvider.AUTHORITY, mEabProviderTestable);
insertContactInfoToDB();
- mEabController = new EabControllerImpl(
+ mEabControllerSub1 = new EabControllerImpl(
mContext, TEST_SUB_ID, null, Looper.getMainLooper());
- mEabController.setExpirationTimeFactory(mExpirationTimeFactory);
+ mEabControllerSub1.setExpirationTimeFactory(mExpirationTimeFactory);
+
+ mEabControllerSub2 = new EabControllerImpl(
+ mContext, TEST_SECOND_SUB_ID, null, Looper.getMainLooper());
+ mEabControllerSub2.setExpirationTimeFactory(mExpirationTimeFactory);
+
doReturn(Instant.now().getEpochSecond()).when(mExpirationTimeFactory).getExpirationTime();
mBundle = mContextFixture.getTestCarrierConfigBundle();
@@ -113,9 +120,9 @@ public class EabControllerTest extends ImsTestBase {
List<RcsContactUceCapability> contactList = new ArrayList<>();
contactList.add(createPresenceCapability());
- mEabController.saveCapabilities(contactList);
+ mEabControllerSub1.saveCapabilities(contactList);
- EabCapabilityResult result = mEabController.getAvailability(TEST_CONTACT_URI);
+ EabCapabilityResult result = mEabControllerSub1.getAvailability(TEST_CONTACT_URI);
Assert.assertEquals(EabCapabilityResult.EAB_QUERY_SUCCESSFUL, result.getStatus());
Assert.assertEquals(TEST_CONTACT_URI,
result.getContactCapabilities().getContactUri());
@@ -127,14 +134,14 @@ public class EabControllerTest extends ImsTestBase {
List<RcsContactUceCapability> contactList = new ArrayList<>();
contactList.add(createPresenceCapability());
- mEabController.saveCapabilities(contactList);
+ mEabControllerSub1.saveCapabilities(contactList);
List<Uri> contactUriList = new ArrayList<>();
contactUriList.add(TEST_CONTACT_URI);
Assert.assertEquals(1,
- mEabController.getCapabilities(contactUriList).size());
+ mEabControllerSub1.getCapabilities(contactUriList).size());
Assert.assertEquals(EabCapabilityResult.EAB_QUERY_SUCCESSFUL,
- mEabController.getCapabilities(contactUriList).get(0).getStatus());
+ mEabControllerSub1.getCapabilities(contactUriList).get(0).getStatus());
}
@Test
@@ -145,14 +152,14 @@ public class EabControllerTest extends ImsTestBase {
contactList.add(createPresenceCapability());
- mEabController.saveCapabilities(contactList);
+ mEabControllerSub1.saveCapabilities(contactList);
List<Uri> contactUriList = new ArrayList<>();
contactUriList.add(TEST_CONTACT_URI);
Assert.assertEquals(1,
- mEabController.getCapabilities(contactUriList).size());
+ mEabControllerSub1.getCapabilities(contactUriList).size());
Assert.assertEquals(EabCapabilityResult.EAB_CONTACT_EXPIRED_FAILURE,
- mEabController.getCapabilities(contactUriList).get(0).getStatus());
+ mEabControllerSub1.getCapabilities(contactUriList).get(0).getStatus());
}
@Test
@@ -164,16 +171,16 @@ public class EabControllerTest extends ImsTestBase {
List<RcsContactUceCapability> contactList = new ArrayList<>();
contactList.add(createPresenceNonRcsCapability());
- mEabController.saveCapabilities(contactList);
+ mEabControllerSub1.saveCapabilities(contactList);
List<Uri> contactUriList = new ArrayList<>();
contactUriList.add(TEST_CONTACT_URI);
// Verify result is not expired
Assert.assertEquals(1,
- mEabController.getCapabilities(contactUriList).size());
+ mEabControllerSub1.getCapabilities(contactUriList).size());
Assert.assertEquals(EabCapabilityResult.EAB_QUERY_SUCCESSFUL,
- mEabController.getCapabilities(contactUriList).get(0).getStatus());
+ mEabControllerSub1.getCapabilities(contactUriList).get(0).getStatus());
}
@Test
@@ -187,15 +194,15 @@ public class EabControllerTest extends ImsTestBase {
List<RcsContactUceCapability> contactList = new ArrayList<>();
contactList.add(createPresenceNonRcsCapability());
- mEabController.saveCapabilities(contactList);
+ mEabControllerSub1.saveCapabilities(contactList);
// Verify result is expired
List<Uri> contactUriList = new ArrayList<>();
contactUriList.add(TEST_CONTACT_URI);
Assert.assertEquals(1,
- mEabController.getCapabilities(contactUriList).size());
+ mEabControllerSub1.getCapabilities(contactUriList).size());
Assert.assertEquals(EabCapabilityResult.EAB_CONTACT_EXPIRED_FAILURE,
- mEabController.getCapabilities(contactUriList).get(0).getStatus());
+ mEabControllerSub1.getCapabilities(contactUriList).get(0).getStatus());
}
@Test
@@ -209,7 +216,7 @@ public class EabControllerTest extends ImsTestBase {
data.put(EabProvider.EabCommonColumns.SUBSCRIPTION_ID, -1);
mContext.getContentResolver().insert(COMMON_URI, data);
- mExecutor.execute(mEabController.mCapabilityCleanupRunnable);
+ mExecutor.execute(mEabControllerSub1.mCapabilityCleanupRunnable);
mExecutor.awaitTermination(TIME_OUT_IN_SEC, TimeUnit.SECONDS);
// Verify the entry that cannot map to presence/option table has been removed
@@ -242,7 +249,7 @@ public class EabControllerTest extends ImsTestBase {
expiredDate.getTime().getTime() / 1000);
mContext.getContentResolver().insert(PRESENCE_URI, data);
- mExecutor.execute(mEabController.mCapabilityCleanupRunnable);
+ mExecutor.execute(mEabControllerSub1.mCapabilityCleanupRunnable);
mExecutor.awaitTermination(TIME_OUT_IN_SEC, TimeUnit.SECONDS);
// Verify the invalid data has been removed after save capabilities
@@ -275,7 +282,7 @@ public class EabControllerTest extends ImsTestBase {
expiredDate.getTime().getTime() / 1000);
mContext.getContentResolver().insert(OPTIONS_URI, data);
- mExecutor.execute(mEabController.mCapabilityCleanupRunnable);
+ mExecutor.execute(mEabControllerSub1.mCapabilityCleanupRunnable);
mExecutor.awaitTermination(TIME_OUT_IN_SEC, TimeUnit.SECONDS);
// Verify the invalid data has been removed after save capabilities
@@ -289,6 +296,23 @@ public class EabControllerTest extends ImsTestBase {
}
}
+ @Test
+ @SmallTest
+ public void testSaveCapabilityForDifferentSubId() {
+ List<RcsContactUceCapability> contactList = new ArrayList<>();
+ contactList.add(createPresenceCapability());
+
+ mEabControllerSub1.saveCapabilities(contactList);
+ mEabControllerSub2.saveCapabilities(contactList);
+
+ List<Uri> contactUriList = new ArrayList<>();
+ contactUriList.add(TEST_CONTACT_URI);
+ Assert.assertEquals(1,
+ mEabControllerSub1.getCapabilities(contactUriList).size());
+ Assert.assertEquals(1,
+ mEabControllerSub2.getCapabilities(contactUriList).size());
+ }
+
private RcsContactUceCapability createPresenceCapability() {
RcsContactPresenceTuple.ServiceCapabilities.Builder serviceCapabilitiesBuilder =
new RcsContactPresenceTuple.ServiceCapabilities.Builder(TEST_AUDIO_CAPABLE,
diff --git a/tests/src/com/android/ims/rcs/uce/eab/EabProviderTest.java b/tests/src/com/android/ims/rcs/uce/eab/EabProviderTest.java
index 3c22e0ed..6d09ebf8 100644
--- a/tests/src/com/android/ims/rcs/uce/eab/EabProviderTest.java
+++ b/tests/src/com/android/ims/rcs/uce/eab/EabProviderTest.java
@@ -117,17 +117,19 @@ public class EabProviderTest extends ImsTestBase {
@Test
@SmallTest
- public void testCommonIsUnique() {
+ public void testCommonIsNotUnique() {
ContentValues data = new ContentValues();
data.put(EabProvider.EabCommonColumns.EAB_CONTACT_ID, 1);
data.put(EabProvider.EabCommonColumns.MECHANISM, CAPABILITY_MECHANISM_PRESENCE);
data.put(EabProvider.EabCommonColumns.REQUEST_RESULT, REQUEST_RESULT_FOUND);
+ data.put(EabProvider.EabCommonColumns.SUBSCRIPTION_ID, 1);
mContext.getContentResolver().insert(COMMON_URI, data);
data = new ContentValues();
data.put(EabProvider.EabCommonColumns.EAB_CONTACT_ID, 1);
data.put(EabProvider.EabCommonColumns.MECHANISM, CAPABILITY_MECHANISM_PRESENCE);
data.put(EabProvider.EabCommonColumns.REQUEST_RESULT, REQUEST_RESULT_FOUND);
+ data.put(EabProvider.EabCommonColumns.SUBSCRIPTION_ID, 2);
mContext.getContentResolver().insert(COMMON_URI, data);
Cursor cursor = mContext.getContentResolver().query(COMMON_URI,
@@ -136,7 +138,7 @@ public class EabProviderTest extends ImsTestBase {
null,
null);
- assertEquals(1, cursor.getCount());
+ assertEquals(2, cursor.getCount());
}
@Test