aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorTingting Wang <tingtingw@google.com>2020-08-20 18:17:05 +0000
committerTingting Wang <tingtingw@google.com>2020-08-20 21:37:19 +0000
commit649eb0848ded5c793eef1cb08615a1ae0cb4dd4f (patch)
tree9e7e68c68d84a08306f950b440929fe74341dd37 /tests
parent3eda14ff66d7e16780773b4c446a5399df48335c (diff)
downloadContactsProvider-649eb0848ded5c793eef1cb08615a1ae0cb4dd4f.tar.gz
Remove Lychee tables and provider in S.
Test: unit tests by running "atest ContactsProviderTests ContactsProviderTests2" and "atest CtsProviderTestCases", manually tested by installing the apk to device and search and update in Contacts App. Bug: 146447263 Change-Id: I70312e421ec5732a42937fa87e5c32abe61dcf15
Diffstat (limited to 'tests')
-rw-r--r--tests/assets/test1/testFileDeviceContactMetadataJSON.txt69
-rw-r--r--tests/src/com/android/providers/contacts/BaseContactsProvider2Test.java4
-rw-r--r--tests/src/com/android/providers/contacts/ContactMetadataProviderTest.java586
-rw-r--r--tests/src/com/android/providers/contacts/ContactMetadataProviderTestable.java23
-rw-r--r--tests/src/com/android/providers/contacts/ContactsDatabaseHelperUpgradeTest.java20
-rw-r--r--tests/src/com/android/providers/contacts/ContactsProvider2Test.java529
-rw-r--r--tests/src/com/android/providers/contacts/MetadataEntryParserTest.java304
-rw-r--r--tests/src/com/android/providers/contacts/SynchronousContactsProvider2.java9
8 files changed, 3 insertions, 1541 deletions
diff --git a/tests/assets/test1/testFileDeviceContactMetadataJSON.txt b/tests/assets/test1/testFileDeviceContactMetadataJSON.txt
deleted file mode 100644
index 65e624d1..00000000
--- a/tests/assets/test1/testFileDeviceContactMetadataJSON.txt
+++ /dev/null
@@ -1,69 +0,0 @@
-{
- "unique_contact_id": {
- "account_type": "CUSTOM_ACCOUNT",
- "custom_account_type": "facebook",
- "account_name": "android-test",
- "contact_id": "1111111",
- "data_set": "FOCUS"
- },
- "contact_prefs": {
- "send_to_voicemail": true,
- "starred": false,
- "pinned": 2
- },
- "aggregation_data": [
- {
- "type": "TOGETHER",
- "contact_ids": [
- {
- "account_type": "GOOGLE_ACCOUNT",
- "account_name": "android-test2",
- "contact_id": "2222222",
- "data_set": "GOOGLE_PLUS"
- },
- {
- "account_type": "GOOGLE_ACCOUNT",
- "account_name": "android-test3",
- "contact_id": "3333333",
- "data_set": "CUSTOM",
- "custom_data_set": "custom type"
- }
- ]
- }
- ],
- "field_data": [
- {
- "field_data_id": "1001",
- "field_data_prefs": {
- "is_primary": true,
- "is_super_primary": true
- },
- "usage_stats": [
- {
- "usage_type": "CALL",
- "last_time_used": 10000001,
- "usage_count": 10
- },
- {
- "usage_type": "SHORT_TEXT",
- "last_time_used": 20000002,
- "usage_count": 20
- }
- ]
- },
- {
- "field_data_id": "1002",
- "field_data_prefs": {
- "is_primary": false,
- "is_super_primary": false
- },
- "usage_stats": [
- {
- "usage_type": "LONG_TEXT",
- "last_time_used": 30000003,
- "usage_count": 30
- }
- ]
- }
- ]
-} \ No newline at end of file
diff --git a/tests/src/com/android/providers/contacts/BaseContactsProvider2Test.java b/tests/src/com/android/providers/contacts/BaseContactsProvider2Test.java
index 91a76a31..816d10d7 100644
--- a/tests/src/com/android/providers/contacts/BaseContactsProvider2Test.java
+++ b/tests/src/com/android/providers/contacts/BaseContactsProvider2Test.java
@@ -1331,10 +1331,6 @@ public abstract class BaseContactsProvider2Test extends PhotoLoadingTestCase {
assertEquals(expected, (getContactsProvider()).isNetworkNotified());
}
- protected void assertMetadataNetworkNotified(boolean expected) {
- assertEquals(expected, (getContactsProvider()).isMetadataNetworkNotified());
- }
-
protected void assertProjection(Uri uri, String[] expectedProjection) {
Cursor cursor = mResolver.query(uri, null, "0", null, null);
String[] actualProjection = cursor.getColumnNames();
diff --git a/tests/src/com/android/providers/contacts/ContactMetadataProviderTest.java b/tests/src/com/android/providers/contacts/ContactMetadataProviderTest.java
deleted file mode 100644
index 3d8b8eb3..00000000
--- a/tests/src/com/android/providers/contacts/ContactMetadataProviderTest.java
+++ /dev/null
@@ -1,586 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.providers.contacts;
-
-import android.content.ContentProviderOperation;
-import android.content.ContentUris;
-import android.content.ContentValues;
-import android.database.Cursor;
-import android.net.Uri;
-import android.provider.ContactsContract.MetadataSync;
-import android.provider.ContactsContract.MetadataSyncState;
-import android.provider.ContactsContract.RawContacts;
-import android.test.MoreAsserts;
-import android.test.suitebuilder.annotation.MediumTest;
-import com.android.providers.contacts.ContactsDatabaseHelper.MetadataSyncColumns;
-import com.android.providers.contacts.testutil.RawContactUtil;
-import com.google.android.collect.Lists;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- * Unit tests for {@link com.android.providers.contacts.ContactMetadataProvider}.
- * <p/>
- * Run the test like this:
- * <code>
- * adb shell am instrument -e class com.android.providers.contacts.ContactMetadataProviderTest -w \
- * com.android.providers.contacts.tests/android.test.InstrumentationTestRunner
- * </code>
- */
-@MediumTest
-public class ContactMetadataProviderTest extends BaseContactsProvider2Test {
- private static String TEST_ACCOUNT_TYPE1 = "test_account_type1";
- private static String TEST_ACCOUNT_NAME1 = "test_account_name1";
- private static String TEST_DATA_SET1 = "plus";
- private static String TEST_BACKUP_ID1 = "1001";
- private static String TEST_DATA1 = "{\n" +
- " \"unique_contact_id\": {\n" +
- " \"account_type\": \"CUSTOM_ACCOUNT\",\n" +
- " \"custom_account_type\": " + TEST_ACCOUNT_TYPE1 + ",\n" +
- " \"account_name\": " + TEST_ACCOUNT_NAME1 + ",\n" +
- " \"contact_id\": " + TEST_BACKUP_ID1 + ",\n" +
- " \"data_set\": \"GOOGLE_PLUS\"\n" +
- " },\n" +
- " \"contact_prefs\": {\n" +
- " \"send_to_voicemail\": true,\n" +
- " \"starred\": true,\n" +
- " \"pinned\": 2\n" +
- " }\n" +
- " }";
- private static byte[] TEST_SYNC_STATE1 = "sync state1".getBytes();
- private static String TEST_ACCOUNT_TYPE2 = "test_account_type2";
- private static String TEST_ACCOUNT_NAME2 = "test_account_name2";
- private static String TEST_DATA_SET2 = null;
- private static String TEST_BACKUP_ID2 = "1002";
- private static String TEST_DATA2 = "{\n" +
- " \"unique_contact_id\": {\n" +
- " \"account_type\": \"CUSTOM_ACCOUNT\",\n" +
- " \"custom_account_type\": " + TEST_ACCOUNT_TYPE2 + ",\n" +
- " \"account_name\": " + TEST_ACCOUNT_NAME2 + ",\n" +
- " \"contact_id\": " + TEST_BACKUP_ID2 + ",\n" +
- " \"data_set\": \"GOOGLE_PLUS\"\n" +
- " },\n" +
- " \"contact_prefs\": {\n" +
- " \"send_to_voicemail\": true,\n" +
- " \"starred\": true,\n" +
- " \"pinned\": 2\n" +
- " }\n" +
- " }";
- private static byte[] TEST_SYNC_STATE2 = "sync state2".getBytes();
- private static String SELECTION_BY_TEST_ACCOUNT1 = MetadataSync.ACCOUNT_NAME + "='" +
- TEST_ACCOUNT_NAME1 + "' AND " + MetadataSync.ACCOUNT_TYPE + "='" + TEST_ACCOUNT_TYPE1 +
- "' AND " + MetadataSync.DATA_SET + "='" + TEST_DATA_SET1 + "'";
-
- private static String SELECTION_BY_TEST_ACCOUNT2 = MetadataSync.ACCOUNT_NAME + "='" +
- TEST_ACCOUNT_NAME2 + "' AND " + MetadataSync.ACCOUNT_TYPE + "='" + TEST_ACCOUNT_TYPE2 +
- "' AND " + MetadataSync.DATA_SET + "='" + TEST_DATA_SET2 + "'";
-
- private ContactMetadataProvider mContactMetadataProvider;
- private ContentValues defaultValues;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- mContactMetadataProvider = addProvider(
- ContactMetadataProviderTestable.class, MetadataSync.METADATA_AUTHORITY);
- // Reset the dbHelper to be the one ContactsProvider2 is using. Before this, two providers
- // are using different dbHelpers.
- mContactMetadataProvider.setDatabaseHelper(((SynchronousContactsProvider2)
- mActor.provider).getDatabaseHelper());
- setupData();
- }
-
- public void testInsertWithInvalidUri() {
- try {
- mResolver.insert(Uri.withAppendedPath(MetadataSync.METADATA_AUTHORITY_URI,
- "metadata"), getDefaultValues());
- fail("the insert was expected to fail, but it succeeded");
- } catch (IllegalArgumentException e) {
- // this was expected
- }
- }
-
- public void testUpdateWithInvalidUri() {
- try {
- mResolver.update(Uri.withAppendedPath(MetadataSync.METADATA_AUTHORITY_URI,
- "metadata"), getDefaultValues(), null, null);
- fail("the update was expected to fail, but it succeeded");
- } catch (IllegalArgumentException e) {
- // this was expected
- }
- }
-
- public void testGetMetadataByAccount() {
- Cursor c = mResolver.query(MetadataSync.CONTENT_URI, null, SELECTION_BY_TEST_ACCOUNT1,
- null, null);
- assertEquals(1, c.getCount());
-
- ContentValues expectedValues = defaultValues;
- expectedValues.remove(MetadataSyncColumns.ACCOUNT_ID);
- c.moveToFirst();
- assertCursorValues(c, expectedValues);
- c.close();
- }
-
- public void testFailOnInsertMetadataForSameAccountIdAndBackupId() {
- // Insert a new metadata with same account and backupId as defaultValues should fail.
- String newData = "{\n" +
- " \"unique_contact_id\": {\n" +
- " \"account_type\": \"CUSTOM_ACCOUNT\",\n" +
- " \"custom_account_type\": " + TEST_ACCOUNT_TYPE1 + ",\n" +
- " \"account_name\": " + TEST_ACCOUNT_NAME1 + ",\n" +
- " \"contact_id\": " + TEST_BACKUP_ID1 + ",\n" +
- " \"data_set\": \"GOOGLE_PLUS\"\n" +
- " },\n" +
- " \"contact_prefs\": {\n" +
- " \"send_to_voicemail\": false,\n" +
- " \"starred\": false,\n" +
- " \"pinned\": 1\n" +
- " }\n" +
- " }";
-
- ContentValues newValues = new ContentValues();
- newValues.put(MetadataSync.ACCOUNT_NAME, TEST_ACCOUNT_NAME1);
- newValues.put(MetadataSync.ACCOUNT_TYPE, TEST_ACCOUNT_TYPE1);
- newValues.put(MetadataSync.DATA_SET, TEST_DATA_SET1);
- newValues.put(MetadataSync.RAW_CONTACT_BACKUP_ID, TEST_BACKUP_ID1);
- newValues.put(MetadataSync.DATA, newData);
- newValues.put(MetadataSync.DELETED, 0);
- try {
- mResolver.insert(MetadataSync.CONTENT_URI, newValues);
- } catch (Exception e) {
- // Expected.
- }
- }
-
- public void testInsertAndUpdateMetadataSync() {
- // Create a raw contact with backupId.
- String backupId = "backupId10001";
- long rawContactId = RawContactUtil.createRawContactWithAccountDataSet(
- mResolver, TEST_ACCOUNT_NAME1, TEST_ACCOUNT_TYPE1, TEST_DATA_SET1);
- Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId);
- ContentValues values = new ContentValues();
- values.put(RawContacts.BACKUP_ID, backupId);
- assertEquals(1, mResolver.update(rawContactUri, values, null, null));
-
- assertStoredValue(rawContactUri, RawContacts._ID, rawContactId);
- assertStoredValue(rawContactUri, RawContacts.ACCOUNT_TYPE, TEST_ACCOUNT_TYPE1);
- assertStoredValue(rawContactUri, RawContacts.ACCOUNT_NAME, TEST_ACCOUNT_NAME1);
- assertStoredValue(rawContactUri, RawContacts.BACKUP_ID, backupId);
- assertStoredValue(rawContactUri, RawContacts.DATA_SET, TEST_DATA_SET1);
-
- String deleted = "0";
- String insertJson = "{\n" +
- " \"unique_contact_id\": {\n" +
- " \"account_type\": \"CUSTOM_ACCOUNT\",\n" +
- " \"custom_account_type\": " + TEST_ACCOUNT_TYPE1 + ",\n" +
- " \"account_name\": " + TEST_ACCOUNT_NAME1 + ",\n" +
- " \"contact_id\": " + backupId + ",\n" +
- " \"data_set\": \"GOOGLE_PLUS\"\n" +
- " },\n" +
- " \"contact_prefs\": {\n" +
- " \"send_to_voicemail\": true,\n" +
- " \"starred\": true,\n" +
- " \"pinned\": 2\n" +
- " }\n" +
- " }";
-
- // Insert to MetadataSync table.
- ContentValues insertedValues = new ContentValues();
- insertedValues.put(MetadataSync.RAW_CONTACT_BACKUP_ID, backupId);
- insertedValues.put(MetadataSync.ACCOUNT_TYPE, TEST_ACCOUNT_TYPE1);
- insertedValues.put(MetadataSync.ACCOUNT_NAME, TEST_ACCOUNT_NAME1);
- insertedValues.put(MetadataSync.DATA_SET, TEST_DATA_SET1);
- insertedValues.put(MetadataSync.DATA, insertJson);
- insertedValues.put(MetadataSync.DELETED, deleted);
- Uri metadataUri = mResolver.insert(MetadataSync.CONTENT_URI, insertedValues);
-
- long metadataId = ContentUris.parseId(metadataUri);
- assertEquals(true, metadataId > 0);
-
- // Check if RawContact table is updated after inserting metadata.
- assertStoredValue(rawContactUri, RawContacts.ACCOUNT_TYPE, TEST_ACCOUNT_TYPE1);
- assertStoredValue(rawContactUri, RawContacts.ACCOUNT_NAME, TEST_ACCOUNT_NAME1);
- assertStoredValue(rawContactUri, RawContacts.BACKUP_ID, backupId);
- assertStoredValue(rawContactUri, RawContacts.DATA_SET, TEST_DATA_SET1);
- assertStoredValue(rawContactUri, RawContacts.SEND_TO_VOICEMAIL, "1");
- assertStoredValue(rawContactUri, RawContacts.STARRED, "1");
- assertStoredValue(rawContactUri, RawContacts.PINNED, "2");
-
- // Update the MetadataSync table.
- String updatedJson = "{\n" +
- " \"unique_contact_id\": {\n" +
- " \"account_type\": \"CUSTOM_ACCOUNT\",\n" +
- " \"custom_account_type\": " + TEST_ACCOUNT_TYPE1 + ",\n" +
- " \"account_name\": " + TEST_ACCOUNT_NAME1 + ",\n" +
- " \"contact_id\": " + backupId + ",\n" +
- " \"data_set\": \"GOOGLE_PLUS\"\n" +
- " },\n" +
- " \"contact_prefs\": {\n" +
- " \"send_to_voicemail\": false,\n" +
- " \"starred\": false,\n" +
- " \"pinned\": 1\n" +
- " }\n" +
- " }";
- ContentValues updatedValues = new ContentValues();
- updatedValues.put(MetadataSync.RAW_CONTACT_BACKUP_ID, backupId);
- updatedValues.put(MetadataSync.ACCOUNT_TYPE, TEST_ACCOUNT_TYPE1);
- updatedValues.put(MetadataSync.ACCOUNT_NAME, TEST_ACCOUNT_NAME1);
- updatedValues.put(MetadataSync.DATA_SET, TEST_DATA_SET1);
- updatedValues.put(MetadataSync.DATA, updatedJson);
- updatedValues.put(MetadataSync.DELETED, deleted);
- mResolver.insert(MetadataSync.CONTENT_URI, updatedValues);
-
- // Check if the insert (actually update) is correct.
- assertStoredValue(rawContactUri, RawContacts.ACCOUNT_TYPE, TEST_ACCOUNT_TYPE1);
- assertStoredValue(rawContactUri, RawContacts.ACCOUNT_NAME, TEST_ACCOUNT_NAME1);
- assertStoredValue(rawContactUri, RawContacts.DATA_SET, TEST_DATA_SET1);
- assertStoredValue(rawContactUri, RawContacts.SEND_TO_VOICEMAIL, "0");
- assertStoredValue(rawContactUri, RawContacts.STARRED, "0");
- assertStoredValue(rawContactUri, RawContacts.PINNED, "1");
- }
-
- public void testInsertMetadata() {
- String backupId = "newBackupId";
- String deleted = "0";
- String insertJson = "{\n" +
- " \"unique_contact_id\": {\n" +
- " \"account_type\": \"CUSTOM_ACCOUNT\",\n" +
- " \"custom_account_type\": " + TEST_ACCOUNT_TYPE1 + ",\n" +
- " \"account_name\": " + TEST_ACCOUNT_NAME1 + ",\n" +
- " \"contact_id\": " + backupId + ",\n" +
- " \"data_set\": \"GOOGLE_PLUS\"\n" +
- " },\n" +
- " \"contact_prefs\": {\n" +
- " \"send_to_voicemail\": true,\n" +
- " \"starred\": true,\n" +
- " \"pinned\": 2\n" +
- " }\n" +
- " }";
-
- // Insert to MetadataSync table.
- ContentValues insertedValues = new ContentValues();
- insertedValues.put(MetadataSync.RAW_CONTACT_BACKUP_ID, backupId);
- insertedValues.put(MetadataSync.ACCOUNT_TYPE, TEST_ACCOUNT_TYPE1);
- insertedValues.put(MetadataSync.ACCOUNT_NAME, TEST_ACCOUNT_NAME1);
- insertedValues.put(MetadataSync.DATA_SET, TEST_DATA_SET1);
- insertedValues.put(MetadataSync.DATA, insertJson);
- insertedValues.put(MetadataSync.DELETED, deleted);
- Uri metadataUri = mResolver.insert(MetadataSync.CONTENT_URI, insertedValues);
-
- long metadataId = ContentUris.parseId(metadataUri);
- assertEquals(true, metadataId > 0);
- }
-
- public void testFailUpdateDeletedMetadata() {
- String backupId = "backupId001";
- String newData = "{\n" +
- " \"unique_contact_id\": {\n" +
- " \"account_type\": \"CUSTOM_ACCOUNT\",\n" +
- " \"custom_account_type\": " + TEST_ACCOUNT_TYPE1 + ",\n" +
- " \"account_name\": " + TEST_ACCOUNT_NAME1 + ",\n" +
- " \"contact_id\": " + backupId + ",\n" +
- " \"data_set\": \"GOOGLE_PLUS\"\n" +
- " },\n" +
- " \"contact_prefs\": {\n" +
- " \"send_to_voicemail\": false,\n" +
- " \"starred\": false,\n" +
- " \"pinned\": 1\n" +
- " }\n" +
- " }";
-
- ContentValues newValues = new ContentValues();
- newValues.put(MetadataSync.ACCOUNT_NAME, TEST_ACCOUNT_NAME1);
- newValues.put(MetadataSync.ACCOUNT_TYPE, TEST_ACCOUNT_TYPE1);
- newValues.put(MetadataSync.DATA_SET, TEST_DATA_SET1);
- newValues.put(MetadataSync.RAW_CONTACT_BACKUP_ID, backupId);
- newValues.put(MetadataSync.DATA, newData);
- newValues.put(MetadataSync.DELETED, 1);
-
- try {
- mResolver.insert(MetadataSync.CONTENT_URI, newValues);
- fail("the update was expected to fail, but it succeeded");
- } catch (IllegalArgumentException e) {
- // Expected
- }
- }
-
- public void testInsertWithNullData() {
- ContentValues newValues = new ContentValues();
- String data = null;
- String backupId = "backupId002";
- newValues.put(MetadataSync.ACCOUNT_NAME, TEST_ACCOUNT_NAME1);
- newValues.put(MetadataSync.ACCOUNT_TYPE, TEST_ACCOUNT_TYPE1);
- newValues.put(MetadataSync.DATA_SET, TEST_DATA_SET1);
- newValues.put(MetadataSync.RAW_CONTACT_BACKUP_ID, backupId);
- newValues.put(MetadataSync.DATA, data);
- newValues.put(MetadataSync.DELETED, 0);
-
- try {
- mResolver.insert(MetadataSync.CONTENT_URI, newValues);
- } catch (IllegalArgumentException e) {
- // Expected.
- }
- }
-
- public void testDeleteMetadata() {
- //insert another metadata for TEST_ACCOUNT
- insertMetadata(TEST_ACCOUNT_NAME1, TEST_ACCOUNT_TYPE1, TEST_DATA_SET1, "2", TEST_DATA1, 0);
- Cursor c = mResolver.query(MetadataSync.CONTENT_URI, null, SELECTION_BY_TEST_ACCOUNT1,
- null, null);
- assertEquals(2, c.getCount());
- int numOfDeletion = mResolver.delete(MetadataSync.CONTENT_URI, SELECTION_BY_TEST_ACCOUNT1,
- null);
- assertEquals(2, numOfDeletion);
- c = mResolver.query(MetadataSync.CONTENT_URI, null, SELECTION_BY_TEST_ACCOUNT1,
- null, null);
- assertEquals(0, c.getCount());
- }
-
- public void testBulkInsert() {
- Cursor c = mResolver.query(MetadataSync.CONTENT_URI, new String[]{MetadataSync._ID},
- SELECTION_BY_TEST_ACCOUNT1, null, null);
- assertEquals(1, c.getCount());
-
- ContentValues values1 = getMetadataContentValues(
- TEST_ACCOUNT_NAME1, TEST_ACCOUNT_TYPE1, TEST_DATA_SET1, "123", TEST_DATA1, 0);
- ContentValues values2 = getMetadataContentValues(
- TEST_ACCOUNT_NAME1, TEST_ACCOUNT_TYPE1, TEST_DATA_SET1, "456", TEST_DATA1, 0);
- ContentValues[] values = new ContentValues[] {values1, values2};
-
- mResolver.bulkInsert(MetadataSync.CONTENT_URI, values);
- c = mResolver.query(MetadataSync.CONTENT_URI, new String[] {MetadataSync._ID},
- SELECTION_BY_TEST_ACCOUNT1, null, null);
- assertEquals(3, c.getCount());
- }
-
- public void testBatchOperations() throws Exception {
- // Two mentadata_sync entries in the beginning, one for TEST_ACCOUNT1 and another for
- // TEST_ACCOUNT2
- Cursor c = mResolver.query(MetadataSync.CONTENT_URI, new String[] {MetadataSync._ID},
- null, null, null);
- assertEquals(2, c.getCount());
-
- String updatedData = "{\n" +
- " \"unique_contact_id\": {\n" +
- " \"account_type\": \"CUSTOM_ACCOUNT\",\n" +
- " \"custom_account_type\": " + TEST_ACCOUNT_TYPE1 + ",\n" +
- " \"account_name\": " + TEST_ACCOUNT_NAME1 + ",\n" +
- " \"contact_id\": " + TEST_BACKUP_ID1 + ",\n" +
- " \"data_set\": \"GOOGLE_PLUS\"\n" +
- " },\n" +
- " \"contact_prefs\": {\n" +
- " \"send_to_voicemail\": true,\n" +
- " \"starred\": false,\n" +
- " \"pinned\": 5\n" +
- " }\n" +
- " }";
-
- String newBackupId = "2222";
- String newData = "{\n" +
- " \"unique_contact_id\": {\n" +
- " \"account_type\": \"CUSTOM_ACCOUNT\",\n" +
- " \"custom_account_type\": " + TEST_ACCOUNT_TYPE1 + ",\n" +
- " \"account_name\": " + TEST_ACCOUNT_NAME1 + ",\n" +
- " \"contact_id\": " + newBackupId + ",\n" +
- " \"data_set\": \"GOOGLE_PLUS\"\n" +
- " },\n" +
- " \"contact_prefs\": {\n" +
- " \"send_to_voicemail\": true,\n" +
- " \"starred\": false,\n" +
- " \"pinned\": 5\n" +
- " }\n" +
- " }";
-
- ArrayList<ContentProviderOperation> ops = Lists.newArrayList();
- ops.add(ContentProviderOperation.newInsert(MetadataSync.CONTENT_URI)
- .withValue(MetadataSync.ACCOUNT_NAME, TEST_ACCOUNT_NAME1)
- .withValue(MetadataSync.ACCOUNT_TYPE, TEST_ACCOUNT_TYPE1)
- .withValue(MetadataSync.DATA_SET, TEST_DATA_SET1)
- .withValue(MetadataSync.RAW_CONTACT_BACKUP_ID, TEST_BACKUP_ID1)
- .withValue(MetadataSync.DATA, updatedData)
- .withValue(MetadataSync.DELETED, 0)
- .build());
-
- ops.add(ContentProviderOperation.newInsert(MetadataSync.CONTENT_URI)
- .withValue(MetadataSync.ACCOUNT_NAME, TEST_ACCOUNT_NAME1)
- .withValue(MetadataSync.ACCOUNT_TYPE, TEST_ACCOUNT_TYPE1)
- .withValue(MetadataSync.DATA_SET, TEST_DATA_SET1)
- .withValue(MetadataSync.RAW_CONTACT_BACKUP_ID, newBackupId)
- .withValue(MetadataSync.DATA, newData)
- .withValue(MetadataSync.DELETED, 0)
- .build());
-
- ops.add(ContentProviderOperation.newDelete(MetadataSync.CONTENT_URI)
- .withSelection(SELECTION_BY_TEST_ACCOUNT2, null)
- .build());
-
- // Batch three operations: update the metadata_entry of TEST_ACCOUNT1; insert one new
- // metadata_entry for TEST_ACCOUNT1; delete metadata_entry of TEST_ACCOUNT2
- mResolver.applyBatch(MetadataSync.METADATA_AUTHORITY, ops);
-
- // After the batch operations, there should be two metadata_entry for TEST_ACCOUNT1 with
- // new data value and no metadata_entry for TEST_ACCOUNT2.
- c = mResolver.query(MetadataSync.CONTENT_URI, new String[] {MetadataSync.DATA},
- SELECTION_BY_TEST_ACCOUNT1, null, null);
- assertEquals(2, c.getCount());
- Set<String> actualData = new HashSet<>();
- while (c.moveToNext()) {
- actualData.add(c.getString(0));
- }
- c.close();
- MoreAsserts.assertContentsInAnyOrder(actualData, updatedData, newData);
-
- c = mResolver.query(MetadataSync.CONTENT_URI, new String[] {MetadataSync._ID},
- SELECTION_BY_TEST_ACCOUNT2, null, null);
- assertEquals(0, c.getCount());
- }
-
- public void testQueryMetadataSyncState() {
- String selection = MetadataSyncState.ACCOUNT_NAME + "=?1 AND " +
- MetadataSyncState.ACCOUNT_TYPE + "=?2 AND " + MetadataSyncState.DATA_SET + "=?3";
- final String[] args = new String[]{TEST_ACCOUNT_NAME1, TEST_ACCOUNT_TYPE1, TEST_DATA_SET1};
- final String[] projection = new String[]{MetadataSyncState.STATE};
- Cursor c = mResolver.query(MetadataSyncState.CONTENT_URI, projection, selection, args,
- null);
- assertEquals(1, c.getCount());
- c.moveToFirst();
- assertTrue(Arrays.equals(TEST_SYNC_STATE1, c.getBlob(0)));
- c.close();
- }
-
- public void testUpdateMetadataSyncState() {
- mResolver.update(MetadataSyncState.CONTENT_URI, getSyncStateValues(TEST_ACCOUNT_NAME1,
- TEST_ACCOUNT_TYPE1, TEST_DATA_SET1, TEST_SYNC_STATE2), null, null);
- String selection = MetadataSyncState.ACCOUNT_NAME + "=?1 AND " +
- MetadataSyncState.ACCOUNT_TYPE + "=?2 AND " + MetadataSyncState.DATA_SET + "=?3";
- final String[] args = new String[]{TEST_ACCOUNT_NAME1, TEST_ACCOUNT_TYPE1, TEST_DATA_SET1};
- final String[] projection = new String[] {MetadataSyncState.STATE};
- Cursor c = mResolver.query(MetadataSyncState.CONTENT_URI, projection, selection, args,
- null);
-
- assertEquals(1, c.getCount());
- c.moveToFirst();
- assertTrue(Arrays.equals(TEST_SYNC_STATE2, c.getBlob(0)));
- c.close();
- }
-
- public void testUpdateMetadataSyncState_NonExisting() {
- // Delete the existing one first.
- String selection = MetadataSyncState.ACCOUNT_NAME + "=?1 AND " +
- MetadataSyncState.ACCOUNT_TYPE + "=?2 AND " + MetadataSyncState.DATA_SET + "=?3";
- final String[] args = new String[]{TEST_ACCOUNT_NAME1, TEST_ACCOUNT_TYPE1, TEST_DATA_SET1};
-
- mResolver.delete(MetadataSyncState.CONTENT_URI, selection, args);
-
- mResolver.update(MetadataSyncState.CONTENT_URI, getSyncStateValues(TEST_ACCOUNT_NAME1,
- TEST_ACCOUNT_TYPE1, TEST_DATA_SET1, TEST_SYNC_STATE2), null, null);
- final String[] projection = new String[] {MetadataSyncState.STATE};
- Cursor c = mResolver.query(MetadataSyncState.CONTENT_URI, projection, selection, args,
- null);
-
- assertEquals(1, c.getCount());
- c.moveToFirst();
- assertTrue(Arrays.equals(TEST_SYNC_STATE2, c.getBlob(0)));
- c.close();
- }
-
- public void testDeleteMetadataSyncState() {
- String selection = MetadataSyncState.ACCOUNT_NAME + "=?1 AND " +
- MetadataSyncState.ACCOUNT_TYPE + "=?2 AND " + MetadataSyncState.DATA_SET + "=?3";
- final String[] args = new String[]{TEST_ACCOUNT_NAME1, TEST_ACCOUNT_TYPE1, TEST_DATA_SET1};
- final String[] projection = new String[]{MetadataSyncState.STATE};
- Cursor c = mResolver.query(MetadataSyncState.CONTENT_URI, projection, selection, args,
- null);
- assertEquals(1, c.getCount());
- c.close();
-
- mResolver.delete(MetadataSyncState.CONTENT_URI, selection, args);
- c = mResolver.query(MetadataSyncState.CONTENT_URI, projection, selection, args,
- null);
- assertEquals(0, c.getCount());
- c.close();
- }
-
- private void setupData() {
- long rawContactId1 = RawContactUtil.createRawContactWithAccountDataSet(
- mResolver, TEST_ACCOUNT_NAME1, TEST_ACCOUNT_TYPE1, TEST_DATA_SET1);
- createAccount(TEST_ACCOUNT_NAME1, TEST_ACCOUNT_TYPE1, TEST_DATA_SET1);
- insertMetadata(getDefaultValues());
- insertMetadataSyncState(TEST_ACCOUNT_NAME1, TEST_ACCOUNT_TYPE1, TEST_DATA_SET1,
- TEST_SYNC_STATE1);
-
- // Insert another entry for another account
- createAccount(TEST_ACCOUNT_NAME2, TEST_ACCOUNT_TYPE2, TEST_DATA_SET2);
- insertMetadata(TEST_ACCOUNT_NAME2, TEST_ACCOUNT_TYPE2, TEST_DATA_SET2, TEST_BACKUP_ID2,
- TEST_DATA2, 0);
- insertMetadataSyncState(TEST_ACCOUNT_NAME2, TEST_ACCOUNT_TYPE2, TEST_DATA_SET2,
- TEST_SYNC_STATE2);
- }
-
- private ContentValues getDefaultValues() {
- defaultValues = new ContentValues();
- defaultValues.put(MetadataSync.ACCOUNT_NAME, TEST_ACCOUNT_NAME1);
- defaultValues.put(MetadataSync.ACCOUNT_TYPE, TEST_ACCOUNT_TYPE1);
- defaultValues.put(MetadataSync.DATA_SET, TEST_DATA_SET1);
- defaultValues.put(MetadataSync.RAW_CONTACT_BACKUP_ID, TEST_BACKUP_ID1);
- defaultValues.put(MetadataSync.DATA, TEST_DATA1);
- defaultValues.put(MetadataSync.DELETED, 0);
- return defaultValues;
- }
-
- private long insertMetadata(String accountName, String accountType, String dataSet,
- String backupId, String data, int deleted) {
- return insertMetadata(getMetadataContentValues(
- accountName, accountType, dataSet, backupId, data, deleted));
- }
-
- private ContentValues getMetadataContentValues(String accountName, String accountType,
- String dataSet, String backupId, String data, int deleted) {
- ContentValues values = new ContentValues();
- values.put(MetadataSync.ACCOUNT_NAME, accountName);
- values.put(MetadataSync.ACCOUNT_TYPE, accountType);
- values.put(MetadataSync.DATA_SET, dataSet);
- values.put(MetadataSync.RAW_CONTACT_BACKUP_ID, backupId);
- values.put(MetadataSync.DATA, data);
- values.put(MetadataSync.DELETED, deleted);
- return values;
- }
-
- private long insertMetadata(ContentValues values) {
- return ContentUris.parseId(mResolver.insert(MetadataSync.CONTENT_URI, values));
- }
-
- private long insertMetadataSyncState(String accountName, String accountType,
- String dataSet, byte[] state) {
- return ContentUris.parseId(mResolver.insert(MetadataSyncState.CONTENT_URI,
- getSyncStateValues(accountName, accountType, dataSet, state)));
- }
-
- private ContentValues getSyncStateValues(String accountName, String accountType,
- String dataSet, byte[] state) {
- ContentValues values = new ContentValues();
- values.put(MetadataSyncState.ACCOUNT_NAME, accountName);
- values.put(MetadataSyncState.ACCOUNT_TYPE, accountType);
- values.put(MetadataSyncState.DATA_SET, dataSet);
- values.put(MetadataSyncState.STATE, state);
- return values;
- }
-}
diff --git a/tests/src/com/android/providers/contacts/ContactMetadataProviderTestable.java b/tests/src/com/android/providers/contacts/ContactMetadataProviderTestable.java
deleted file mode 100644
index c46643f2..00000000
--- a/tests/src/com/android/providers/contacts/ContactMetadataProviderTestable.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.providers.contacts;
-
-public class ContactMetadataProviderTestable extends ContactMetadataProvider {
- @Override
- void ensureCaller() {
- // Not testable, skip.
- }
-}
diff --git a/tests/src/com/android/providers/contacts/ContactsDatabaseHelperUpgradeTest.java b/tests/src/com/android/providers/contacts/ContactsDatabaseHelperUpgradeTest.java
index 1832b4e4..a2bc5ca1 100644
--- a/tests/src/com/android/providers/contacts/ContactsDatabaseHelperUpgradeTest.java
+++ b/tests/src/com/android/providers/contacts/ContactsDatabaseHelperUpgradeTest.java
@@ -30,8 +30,6 @@ import android.provider.ContactsContract.DeletedContacts;
import android.provider.ContactsContract.Directory;
import android.provider.ContactsContract.DisplayNameSources;
import android.provider.ContactsContract.Groups;
-import android.provider.ContactsContract.MetadataSync;
-import android.provider.ContactsContract.MetadataSyncState;
import android.provider.ContactsContract.PhotoFiles;
import android.provider.ContactsContract.PinnedPositions;
import android.provider.ContactsContract.RawContacts;
@@ -51,8 +49,6 @@ import com.android.providers.contacts.ContactsDatabaseHelper.DataColumns;
import com.android.providers.contacts.ContactsDatabaseHelper.DataUsageStatColumns;
import com.android.providers.contacts.ContactsDatabaseHelper.DirectoryColumns;
import com.android.providers.contacts.ContactsDatabaseHelper.GroupsColumns;
-import com.android.providers.contacts.ContactsDatabaseHelper.MetadataSyncColumns;
-import com.android.providers.contacts.ContactsDatabaseHelper.MetadataSyncStateColumns;
import com.android.providers.contacts.ContactsDatabaseHelper.MimetypesColumns;
import com.android.providers.contacts.ContactsDatabaseHelper.NameLookupColumns;
import com.android.providers.contacts.ContactsDatabaseHelper.NicknameLookupColumns;
@@ -529,26 +525,12 @@ public class ContactsDatabaseHelperUpgradeTest extends BaseDatabaseHelperUpgrade
new TableColumn(DataUsageStatColumns.LR_LAST_TIME_USED, INTEGER, true, "0"),
};
- private static final TableColumn[] METADATA_SYNC_COLUMNS = new TableColumn[] {
- new TableColumn(MetadataSync._ID, INTEGER, false, null),
- new TableColumn(MetadataSync.RAW_CONTACT_BACKUP_ID, TEXT, true, null),
- new TableColumn(MetadataSyncColumns.ACCOUNT_ID, INTEGER, true, null),
- new TableColumn(MetadataSync.DATA, TEXT, false, null),
- new TableColumn(MetadataSync.DELETED, INTEGER, true, "0"),
- };
-
private static final TableColumn[] PRE_AUTHORIZED_URIS_COLUMNS = new TableColumn[] {
new TableColumn(PreAuthorizedUris._ID, INTEGER, false, null),
new TableColumn(PreAuthorizedUris.URI, STRING, true, null),
new TableColumn(PreAuthorizedUris.EXPIRATION, INTEGER, true, "0"),
};
- private static final TableColumn[] METADATA_SYNC_STATE_COLUMNS = new TableColumn[] {
- new TableColumn(MetadataSyncState._ID, INTEGER, false, null),
- new TableColumn(MetadataSyncStateColumns.ACCOUNT_ID, INTEGER, true, null),
- new TableColumn(MetadataSyncState.STATE, BLOB, false, null),
- };
-
private static final TableColumn[] PRESENCE_COLUMNS = new TableColumn[] {
new TableColumn(StatusUpdates.DATA_ID, INTEGER, false, null),
new TableColumn(StatusUpdates.PROTOCOL, INTEGER, true, null),
@@ -592,9 +574,7 @@ public class ContactsDatabaseHelperUpgradeTest extends BaseDatabaseHelperUpgrade
new TableListEntry(Tables.STATUS_UPDATES, STATUS_UPDATES_COLUMNS),
new TableListEntry(Tables.DIRECTORIES, DIRECTORIES_COLUMNS),
new TableListEntry(Tables.DATA_USAGE_STAT, DATA_USAGE_STAT_COLUMNS),
- new TableListEntry(Tables.METADATA_SYNC, METADATA_SYNC_COLUMNS),
new TableListEntry(Tables.PRE_AUTHORIZED_URIS, PRE_AUTHORIZED_URIS_COLUMNS),
- new TableListEntry(Tables.METADATA_SYNC_STATE, METADATA_SYNC_STATE_COLUMNS),
new TableListEntry(Tables.PRESENCE, PRESENCE_COLUMNS),
new TableListEntry(Tables.AGGREGATED_PRESENCE, AGGREGATED_PRESENCE_COLUMNS)
};
diff --git a/tests/src/com/android/providers/contacts/ContactsProvider2Test.java b/tests/src/com/android/providers/contacts/ContactsProvider2Test.java
index d5643d25..0f5b652d 100644
--- a/tests/src/com/android/providers/contacts/ContactsProvider2Test.java
+++ b/tests/src/com/android/providers/contacts/ContactsProvider2Test.java
@@ -55,8 +55,6 @@ import android.provider.ContactsContract.DisplayNameSources;
import android.provider.ContactsContract.DisplayPhoto;
import android.provider.ContactsContract.FullNameStyle;
import android.provider.ContactsContract.Groups;
-import android.provider.ContactsContract.MetadataSync;
-import android.provider.ContactsContract.MetadataSyncState;
import android.provider.ContactsContract.PhoneLookup;
import android.provider.ContactsContract.PhoneticNameStyle;
import android.provider.ContactsContract.PinnedPositions;
@@ -86,11 +84,6 @@ import com.android.providers.contacts.ContactsDatabaseHelper.DbProperties;
import com.android.providers.contacts.ContactsDatabaseHelper.PresenceColumns;
import com.android.providers.contacts.ContactsDatabaseHelper.RawContactsColumns;
import com.android.providers.contacts.ContactsDatabaseHelper.Tables;
-import com.android.providers.contacts.MetadataEntryParser.AggregationData;
-import com.android.providers.contacts.MetadataEntryParser.FieldData;
-import com.android.providers.contacts.MetadataEntryParser.MetadataEntry;
-import com.android.providers.contacts.MetadataEntryParser.RawContactInfo;
-import com.android.providers.contacts.MetadataEntryParser.UsageStats;
import com.android.providers.contacts.testutil.CommonDatabaseUtils;
import com.android.providers.contacts.testutil.ContactUtil;
import com.android.providers.contacts.testutil.DataUtil;
@@ -2894,333 +2887,6 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test {
}
}
- public void testUpdateFromMetadataEntry() {
- String accountType1 = "accountType1";
- String accountName1 = "accountName1";
- String dataSet1 = "plus";
- Account account1 = new Account(accountName1, accountType1);
- long rawContactId = RawContactUtil.createRawContactWithName(mResolver, account1);
- Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId);
- // Add backup_id for the raw contact.
- String backupId = "backupId100001";
- ContentValues values = new ContentValues();
- values.put(RawContacts.BACKUP_ID, backupId);
- assertEquals(1, mResolver.update(rawContactUri, values, null, null));
-
- String emailAddress = "address@email.com";
- Uri dataUri = insertEmail(rawContactId, emailAddress);
- String hashId = getStoredValue(dataUri, Data.HASH_ID);
-
- // Another data that should not be updated.
- String phoneNumber = "111-111-1111";
- Uri dataUri2 = insertPhoneNumber(rawContactId, phoneNumber);
-
- // Aggregation should be deleted from local since it doesn't exist in server.
- long toBeDeletedAggRawContactId = RawContactUtil.createRawContactWithName(
- mResolver, account1);
- setAggregationException(AggregationExceptions.TYPE_KEEP_SEPARATE,
- rawContactId, toBeDeletedAggRawContactId);
-
- // Check if AggregationException table has one value.
- assertStoredValue(AggregationExceptions.CONTENT_URI, AggregationExceptions.RAW_CONTACT_ID1,
- rawContactId);
- assertStoredValue(AggregationExceptions.CONTENT_URI, AggregationExceptions.RAW_CONTACT_ID2,
- toBeDeletedAggRawContactId);
- assertStoredValue(AggregationExceptions.CONTENT_URI, AggregationExceptions.TYPE,
- AggregationExceptions.TYPE_KEEP_SEPARATE);
-
- String accountType2 = "accountType2";
- String accountName2 = "accountName2";
- Account account2 = new Account(accountName2, accountType2);
- long rawContactId2 = RawContactUtil.createRawContactWithName(mResolver, account2);
- Uri rawContactUri2 = ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId2);
- String backupId2 = "backupId100003";
- ContentValues values2 = new ContentValues();
- values2.put(RawContacts.BACKUP_ID, backupId2);
- assertEquals(1, mResolver.update(rawContactUri2, values2, null, null));
-
- String usageTypeString = "CALL";
- int lastTimeUsed = 1111111;
- int timesUsed = 5;
- String aggregationTypeString = "TOGETHER";
- int aggregationType = AggregationExceptions.TYPE_KEEP_TOGETHER;
-
- RawContactInfo rawContactInfo = new RawContactInfo(
- backupId, accountType1, accountName1, null);
- UsageStats usageStats = new UsageStats(usageTypeString, lastTimeUsed, timesUsed);
- ArrayList<UsageStats> usageStatsList = new ArrayList<>();
- usageStatsList.add(usageStats);
- FieldData fieldData = new FieldData(hashId, true, true, usageStatsList);
- ArrayList<FieldData> fieldDataList = new ArrayList<>();
- fieldDataList.add(fieldData);
- ArrayList<AggregationData> aggregationDataList = new ArrayList<>();
- MetadataEntry metadataEntry = new MetadataEntry(rawContactInfo,
- 1, 1, 1, fieldDataList, aggregationDataList);
-
- ContactsProvider2 provider = (ContactsProvider2) getProvider();
- final ContactsDatabaseHelper helper =
- ((ContactsDatabaseHelper) provider.getDatabaseHelper());
- SQLiteDatabase db = helper.getWritableDatabase();
-
- // Before updating tables from MetadataEntry.
- assertStoredValue(rawContactUri, RawContacts.ACCOUNT_TYPE, accountType1);
- assertStoredValue(rawContactUri, RawContacts.ACCOUNT_NAME, accountName1);
- assertStoredValue(rawContactUri, RawContacts.SEND_TO_VOICEMAIL, "0");
- assertStoredValue(rawContactUri, RawContacts.STARRED, "0");
- assertStoredValue(rawContactUri, RawContacts.PINNED, "0");
- assertStoredValue(dataUri, Data.IS_PRIMARY, 0);
- assertStoredValue(dataUri, Data.IS_SUPER_PRIMARY, 0);
-
- // Update tables without aggregation first, since aggregator will affect pinned value.
- provider.updateFromMetaDataEntry(db, metadataEntry);
-
- // After updating tables from MetadataEntry.
- assertStoredValue(rawContactUri, RawContacts.ACCOUNT_TYPE, accountType1);
- assertStoredValue(rawContactUri, RawContacts.ACCOUNT_NAME, accountName1);
- assertStoredValue(rawContactUri, RawContacts.SEND_TO_VOICEMAIL, "1");
- assertStoredValue(rawContactUri, RawContacts.STARRED, "1");
- assertStoredValue(rawContactUri, RawContacts.PINNED, "1");
- assertStoredValue(dataUri, Data.IS_PRIMARY, 1);
- assertStoredValue(dataUri, Data.IS_SUPER_PRIMARY, 1);
- assertStoredValue(dataUri2, Data.IS_PRIMARY, 0);
- assertStoredValue(dataUri2, Data.IS_SUPER_PRIMARY, 0);
- final Uri dataUriWithUsageType = Data.CONTENT_URI.buildUpon().appendQueryParameter(
- DataUsageFeedback.USAGE_TYPE, usageTypeString).build();
- assertDataUsageZero(dataUriWithUsageType, emailAddress);
-
- // Update AggregationException table.
- RawContactInfo aggregationContact = new RawContactInfo(
- backupId2, accountType2, accountName2, null);
- AggregationData aggregationData = new AggregationData(
- rawContactInfo, aggregationContact, aggregationTypeString);
- aggregationDataList.add(aggregationData);
- metadataEntry = new MetadataEntry(rawContactInfo,
- 1, 1, 1, fieldDataList, aggregationDataList);
- provider.updateFromMetaDataEntry(db, metadataEntry);
-
- // Check if AggregationException table is updated.
- assertStoredValue(AggregationExceptions.CONTENT_URI, AggregationExceptions.RAW_CONTACT_ID1,
- rawContactId);
- assertStoredValue(AggregationExceptions.CONTENT_URI, AggregationExceptions.RAW_CONTACT_ID2,
- rawContactId2);
- assertStoredValue(AggregationExceptions.CONTENT_URI, AggregationExceptions.TYPE,
- aggregationType);
-
- // After aggregation, check if rawContacts.starred/send_to_voicemail
- // were copied to contacts table.
- final long contactId = queryContactId(rawContactId);
- Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId);
- // The merged contact should be starred if any of the rawcontact is starred.
- assertStoredValue(contactUri, Contacts.STARRED, 1);
- // The merged contact should be send_to_voicemail
- // if all of the rawcontact is send_to_voicemail.
- assertStoredValue(contactUri, Contacts.SEND_TO_VOICEMAIL, 0);
- }
-
- public void testUpdateMetadataOnRawContactInsert() throws Exception {
- ContactMetadataProvider contactMetadataProvider = addProvider(
- ContactMetadataProviderTestable.class, MetadataSync.METADATA_AUTHORITY);
- // Reset the dbHelper to be the one ContactsProvider2 is using. Before this, two providers
- // are using different dbHelpers.
- contactMetadataProvider.setDatabaseHelper(((SynchronousContactsProvider2)
- mActor.provider).getDatabaseHelper());
- // Create an account first.
- String backupId = "backupId001";
- String accountType = "accountType";
- String accountName = "accountName";
- Account account = new Account(accountName, accountType);
- createAccount(accountName, accountType, null);
-
- // Insert a metadata to MetadataSync table.
- String data = "{\n" +
- " \"unique_contact_id\": {\n" +
- " \"account_type\": \"CUSTOM_ACCOUNT\",\n" +
- " \"custom_account_type\": " + accountType + ",\n" +
- " \"account_name\": " + accountName + ",\n" +
- " \"contact_id\": " + backupId + ",\n" +
- " \"data_set\": \"FOCUS\"\n" +
- " },\n" +
- " \"contact_prefs\": {\n" +
- " \"send_to_voicemail\": true,\n" +
- " \"starred\": true,\n" +
- " \"pinned\": 1\n" +
- " }\n" +
- " }";
-
- ContentValues insertedValues = new ContentValues();
- insertedValues.put(MetadataSync.RAW_CONTACT_BACKUP_ID, backupId);
- insertedValues.put(MetadataSync.ACCOUNT_TYPE, accountType);
- insertedValues.put(MetadataSync.ACCOUNT_NAME, accountName);
- insertedValues.put(MetadataSync.DATA, data);
- mResolver.insert(MetadataSync.CONTENT_URI, insertedValues);
-
- // Enable metadataSync flag.
- final ContactsProvider2 cp = (ContactsProvider2) getProvider();
- cp.setMetadataSyncForTest(true);
- // Insert a raw contact.
- long rawContactId = RawContactUtil.createRawContactWithBackupId(mResolver, backupId,
- account);
- Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId);
- // Check if the raw contact is not updated since Lychee is removed.
- assertStoredValue(rawContactUri, RawContacts._ID, rawContactId);
- assertStoredValue(rawContactUri, RawContacts.ACCOUNT_TYPE, accountType);
- assertStoredValue(rawContactUri, RawContacts.ACCOUNT_NAME, accountName);
- assertStoredValue(rawContactUri, RawContacts.BACKUP_ID, backupId);
- assertStoredValue(rawContactUri, RawContacts.SEND_TO_VOICEMAIL, "0");
- assertStoredValue(rawContactUri, RawContacts.STARRED, "0");
- assertStoredValue(rawContactUri, RawContacts.PINNED, "0");
- // No metadata network notify.
- assertMetadataNetworkNotified(false);
- }
-
- public void testUpdateMetadataOnRawContactBackupIdChange() throws Exception {
- ContactMetadataProvider contactMetadataProvider = addProvider(
- ContactMetadataProviderTestable.class, MetadataSync.METADATA_AUTHORITY);
- // Reset the dbHelper to be the one ContactsProvider2 is using. Before this, two providers
- // are using different dbHelpers.
- contactMetadataProvider.setDatabaseHelper(((SynchronousContactsProvider2)
- mActor.provider).getDatabaseHelper());
- // Create an account first.
- String backupId = "backupId001";
- String accountType = "accountType";
- String accountName = "accountName";
- Account account = new Account(accountName, accountType);
- createAccount(accountName, accountType, null);
-
- // Insert a metadata to MetadataSync table.
- String data = "{\n" +
- " \"unique_contact_id\": {\n" +
- " \"account_type\": \"CUSTOM_ACCOUNT\",\n" +
- " \"custom_account_type\": " + accountType + ",\n" +
- " \"account_name\": " + accountName + ",\n" +
- " \"contact_id\": " + backupId + ",\n" +
- " \"data_set\": \"FOCUS\"\n" +
- " },\n" +
- " \"contact_prefs\": {\n" +
- " \"send_to_voicemail\": true,\n" +
- " \"starred\": true,\n" +
- " \"pinned\": 1\n" +
- " }\n" +
- " }";
-
- ContentValues insertedValues = new ContentValues();
- insertedValues.put(MetadataSync.RAW_CONTACT_BACKUP_ID, backupId);
- insertedValues.put(MetadataSync.ACCOUNT_TYPE, accountType);
- insertedValues.put(MetadataSync.ACCOUNT_NAME, accountName);
- insertedValues.put(MetadataSync.DATA, data);
- mResolver.insert(MetadataSync.CONTENT_URI, insertedValues);
-
- // Enable metadataSync flag.
- final ContactsProvider2 cp = (ContactsProvider2) getProvider();
- cp.setMetadataSyncForTest(true);
- // Insert a raw contact without backup_id.
- long rawContactId = RawContactUtil.createRawContact(mResolver, account);
- Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId);
- // Check if the raw contact is not updated because of no backup_id.
- assertStoredValue(rawContactUri, RawContacts._ID, rawContactId);
- assertStoredValue(rawContactUri, RawContacts.ACCOUNT_TYPE, accountType);
- assertStoredValue(rawContactUri, RawContacts.ACCOUNT_NAME, accountName);
- assertStoredValue(rawContactUri, RawContacts.SEND_TO_VOICEMAIL, "0");
- assertStoredValue(rawContactUri, RawContacts.STARRED, "0");
- assertStoredValue(rawContactUri, RawContacts.PINNED, "0");
-
- // Update the raw contact with backup_id.
- ContentValues updatedValues = new ContentValues();
- updatedValues.put(RawContacts.BACKUP_ID, backupId);
- mResolver.update(RawContacts.CONTENT_URI, updatedValues, null, null);
- // Check if the raw contact is still not updated.
- assertStoredValue(rawContactUri, RawContacts._ID, rawContactId);
- assertStoredValue(rawContactUri, RawContacts.ACCOUNT_TYPE, accountType);
- assertStoredValue(rawContactUri, RawContacts.ACCOUNT_NAME, accountName);
- assertStoredValue(rawContactUri, RawContacts.SEND_TO_VOICEMAIL, "0");
- assertStoredValue(rawContactUri, RawContacts.STARRED, "0");
- assertStoredValue(rawContactUri, RawContacts.PINNED, "0");
- // No metadata network notify.
- assertMetadataNetworkNotified(false);
- }
-
- public void testDeleteMetadataOnRawContactDelete() throws Exception {
- ContactMetadataProvider contactMetadataProvider = addProvider(
- ContactMetadataProviderTestable.class, MetadataSync.METADATA_AUTHORITY);
- // Reset the dbHelper to be the one ContactsProvider2 is using. Before this, two providers
- // are using different dbHelpers.
- contactMetadataProvider.setDatabaseHelper(((SynchronousContactsProvider2)
- mActor.provider).getDatabaseHelper());
- // Enable metadataSync flag.
- final ContactsProvider2 cp = (ContactsProvider2) getProvider();
- cp.setMetadataSyncForTest(true);
- // Create an account first.
- String backupId = "backupId001";
- String accountType = "accountType";
- String accountName = "accountName";
- Account account = new Account(accountName, accountType);
- createAccount(accountName, accountType, null);
-
- // Insert a raw contact.
- long rawContactId = RawContactUtil.createRawContactWithBackupId(mResolver, backupId,
- account);
- Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId);
-
- // Insert a metadata to MetadataSync table.
- String data = "{\n" +
- " \"unique_contact_id\": {\n" +
- " \"account_type\": \"CUSTOM_ACCOUNT\",\n" +
- " \"custom_account_type\": " + accountType + ",\n" +
- " \"account_name\": " + accountName + ",\n" +
- " \"contact_id\": " + backupId + ",\n" +
- " \"data_set\": \"FOCUS\"\n" +
- " },\n" +
- " \"contact_prefs\": {\n" +
- " \"send_to_voicemail\": true,\n" +
- " \"starred\": true,\n" +
- " \"pinned\": 1\n" +
- " }\n" +
- " }";
-
- ContentValues insertedValues = new ContentValues();
- insertedValues.put(MetadataSync.RAW_CONTACT_BACKUP_ID, backupId);
- insertedValues.put(MetadataSync.ACCOUNT_TYPE, accountType);
- insertedValues.put(MetadataSync.ACCOUNT_NAME, accountName);
- insertedValues.put(MetadataSync.DATA, data);
- Uri metadataUri = mResolver.insert(MetadataSync.CONTENT_URI, insertedValues);
-
- // Delete raw contact.
- mResolver.delete(rawContactUri, null, null);
- // Check if the metadata is not deleted.
- assertStoredValue(metadataUri, MetadataSync.DELETED, "0");
- // check raw contact metadata_dirty column is not changed on raw contact deletion
- assertMetadataDirty(rawContactUri, false);
- // Lychee removed. Will not notify it.
- assertMetadataNetworkNotified(false);
-
- // Add another rawcontact and metadata, and don't delete them.
- // Insert a raw contact.
- String backupId2 = "newBackupId";
- long rawContactId2 = RawContactUtil.createRawContactWithBackupId(mResolver, backupId2,
- account);
- Uri rawContactUri2 = ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId);
-
- // Insert a metadata to MetadataSync table.
- ContentValues insertedValues2 = new ContentValues();
- insertedValues2.put(MetadataSync.RAW_CONTACT_BACKUP_ID, backupId2);
- insertedValues2.put(MetadataSync.ACCOUNT_TYPE, accountType);
- insertedValues2.put(MetadataSync.ACCOUNT_NAME, accountName);
- insertedValues2.put(MetadataSync.DATA, data);
- Uri metadataUri2 = mResolver.insert(MetadataSync.CONTENT_URI, insertedValues2);
-
- // Update raw contact but not delete.
- ContentValues values = new ContentValues();
- values.put(RawContacts.STARRED, "1");
- mResolver.update(rawContactUri2, values, null, null);
-
- // Check if the metadata is not marked as deleted.
- assertStoredValue(metadataUri2, MetadataSync.DELETED, "0");
- // Will not set metadata_dirty since Lychee is removed.
- assertMetadataDirty(rawContactUri2, false);
- // Will not notify Lychee since it's removed.
- assertMetadataNetworkNotified(false);
- }
-
public void testPostalsQuery() {
long rawContactId = RawContactUtil.createRawContactWithName(mResolver, "Alice", "Nextore");
Uri dataUri = insertPostalAddress(rawContactId, "1600 Amphiteatre Ave, Mountain View");
@@ -5197,10 +4863,6 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test {
}
public void testSetSendToVoicemailAndRingtone() {
- // Enable metadataSync flag.
- final ContactsProvider2 cp = (ContactsProvider2) getProvider();
- cp.setMetadataSyncForTest(true);
-
long rawContactId = RawContactUtil.createRawContactWithName(mResolver);
Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId);
assertDirty(rawContactUri, true);
@@ -5210,14 +4872,12 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test {
updateSendToVoicemailAndRingtone(contactId, true, "foo");
assertSendToVoicemailAndRingtone(contactId, true, "foo");
assertNetworkNotified(false);
- assertMetadataNetworkNotified(false);
assertDirty(rawContactUri, false);
assertMetadataDirty(rawContactUri, false);
updateSendToVoicemailAndRingtoneWithSelection(contactId, false, "bar");
assertSendToVoicemailAndRingtone(contactId, false, "bar");
assertNetworkNotified(false);
- assertMetadataNetworkNotified(false);
assertDirty(rawContactUri, false);
assertMetadataDirty(rawContactUri, false);
}
@@ -5278,10 +4938,6 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test {
}
public void testMarkMetadataDirtyAfterAggregation() {
- // Enable metadataSync flag.
- final ContactsProvider2 cp = (ContactsProvider2) getProvider();
- cp.setMetadataSyncForTest(true);
-
long rawContactId1 = RawContactUtil.createRawContactWithName(mResolver, "i", "j");
long rawContactId2 = RawContactUtil.createRawContactWithName(mResolver, "k", "l");
Uri rawContactUri1 = ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId1);
@@ -5300,7 +4956,6 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test {
assertMetadataDirty(rawContactUri1, false);
assertMetadataDirty(rawContactUri2, false);
assertNetworkNotified(false);
- assertMetadataNetworkNotified(false);
}
public void testStatusUpdateInsert() {
@@ -6766,98 +6421,6 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test {
assertStoredValue(safeStreamItemPhotoUri, StreamItemPhotos._ID, safeStreamItemPhotoId);
}
- public void testMetadataSyncCleanedUpOnAccountRemoval() throws Exception {
- Account doomedAccount = new Account("doom", "doom");
- createAccount(doomedAccount.name, doomedAccount.type, null);
- Account safeAccount = new Account("safe", "safe");
- createAccount(safeAccount.name, safeAccount.type, null);
- ContactsProvider2 cp = (ContactsProvider2) getProvider();
- mActor.setAccounts(new Account[]{doomedAccount, safeAccount});
- cp.onAccountsUpdated(new Account[]{doomedAccount, safeAccount});
-
- ContactMetadataProvider contactMetadataProvider = addProvider(
- ContactMetadataProviderTestable.class, MetadataSync.METADATA_AUTHORITY);
- // Reset the dbHelper to be the one ContactsProvider2 is using. Before this, two providers
- // are using different dbHelpers.
- contactMetadataProvider.setDatabaseHelper(((SynchronousContactsProvider2)
- mActor.provider).getDatabaseHelper());
-
- // Create a doomed metadata.
- String backupId = "backupIdForDoomed";
- ContentValues metadataValues = new ContentValues();
- metadataValues.put(MetadataSync.RAW_CONTACT_BACKUP_ID, backupId);
- metadataValues.put(MetadataSync.ACCOUNT_TYPE, doomedAccount.type);
- metadataValues.put(MetadataSync.ACCOUNT_NAME, doomedAccount.name);
- metadataValues.put(MetadataSync.DATA,
- getDefaultMetadataJSONString(doomedAccount.type, doomedAccount.name, backupId));
- Uri doomedMetadataUri = mResolver.insert(MetadataSync.CONTENT_URI, metadataValues);
- // Create a doomed metadata sync state.
- ContentValues syncStateValues = new ContentValues();
- syncStateValues.put(MetadataSyncState.ACCOUNT_TYPE, doomedAccount.type);
- syncStateValues.put(MetadataSyncState.ACCOUNT_NAME, doomedAccount.name);
- syncStateValues.put(MetadataSyncState.STATE, "syncState");
- mResolver.insert(MetadataSyncState.CONTENT_URI, syncStateValues);
-
- // Create a safe metadata.
- String backupId2 = "backupIdForSafe";
- ContentValues insertedValues2 = new ContentValues();
- insertedValues2.put(MetadataSync.RAW_CONTACT_BACKUP_ID, backupId2);
- insertedValues2.put(MetadataSync.ACCOUNT_TYPE, safeAccount.type);
- insertedValues2.put(MetadataSync.ACCOUNT_NAME, safeAccount.name);
- insertedValues2.put(MetadataSync.DATA,
- getDefaultMetadataJSONString(safeAccount.type, safeAccount.name, backupId2));
- Uri safeMetadataUri = mResolver.insert(MetadataSync.CONTENT_URI, insertedValues2);
- // Create a safe metadata sync state.
- ContentValues syncStateValues2 = new ContentValues();
- syncStateValues2.put(MetadataSyncState.ACCOUNT_TYPE, safeAccount.type);
- syncStateValues2.put(MetadataSyncState.ACCOUNT_NAME, safeAccount.name);
- syncStateValues2.put(MetadataSyncState.STATE, "syncState2");
- mResolver.insert(MetadataSyncState.CONTENT_URI, syncStateValues2);
-
- // Remove the doomed account.
- mActor.setAccounts(new Account[]{safeAccount});
- cp.onAccountsUpdated(new Account[]{safeAccount});
-
- // Check that the doomed stuff has all been nuked.
- ContentValues[] noValues = new ContentValues[0];
- assertStoredValues(doomedMetadataUri, noValues);
- String selection = MetadataSyncState.ACCOUNT_NAME + "=?1 AND "
- + MetadataSyncState.ACCOUNT_TYPE + "=?2";
- String[] args = new String[]{doomedAccount.name, doomedAccount.type};
- final String[] projection = new String[]{MetadataSyncState.STATE};
- Cursor c = mResolver.query(MetadataSyncState.CONTENT_URI, projection, selection, args,
- null);
- assertEquals(0, c.getCount());
-
- // Check that the safe stuff lives on.
- assertStoredValue(safeMetadataUri, MetadataSync.RAW_CONTACT_BACKUP_ID, backupId2);
- args = new String[]{safeAccount.name, safeAccount.type};
- c = mResolver.query(MetadataSyncState.CONTENT_URI, projection, selection, args,
- null);
- assertEquals(1, c.getCount());
- c.moveToNext();
- assertEquals("syncState2", c.getString(0));
- c.close();
- }
-
- private String getDefaultMetadataJSONString(
- String accountType, String accountName, String backupId) {
- return "{\n" +
- " \"unique_contact_id\": {\n" +
- " \"account_type\": \"CUSTOM_ACCOUNT\",\n" +
- " \"custom_account_type\": " + accountType + ",\n" +
- " \"account_name\": " + accountName + ",\n" +
- " \"contact_id\": " + backupId + ",\n" +
- " \"data_set\": \"FOCUS\"\n" +
- " },\n" +
- " \"contact_prefs\": {\n" +
- " \"send_to_voicemail\": true,\n" +
- " \"starred\": true,\n" +
- " \"pinned\": 1\n" +
- " }\n" +
- " }";
- }
-
public void testContactDeletion() {
long rawContactId1 = RawContactUtil.createRawContactWithName(mResolver, "John", "Doe",
TestUtil.ACCOUNT_1);
@@ -6891,35 +6454,15 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test {
}
public void testDirtyWhenRawContactInsert() {
- // Enable metadataSync flag.
- final ContactsProvider2 cp = (ContactsProvider2) getProvider();
- cp.setMetadataSyncForTest(true);
-
- // When inserting a rawcontact without metadata.
+ // When inserting a rawcontact.
long rawContactId = RawContactUtil.createRawContact(mResolver, mAccount);
Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId);
assertDirty(rawContactUri, false);
assertMetadataDirty(rawContactUri, false);
assertNetworkNotified(true);
- assertMetadataNetworkNotified(false);
-
- // When inserting a rawcontact with metadata.
- ContentValues values = new ContentValues();
- values.put(ContactsContract.RawContacts.STARRED, 1);
- values.put(ContactsContract.RawContacts.ACCOUNT_NAME, mAccount.name);
- values.put(ContactsContract.RawContacts.ACCOUNT_TYPE, mAccount.type);
- Uri rawContactId2Uri = mResolver.insert(RawContacts.CONTENT_URI, values);
- assertDirty(rawContactId2Uri, false);
- assertMetadataDirty(rawContactId2Uri, false);
- assertNetworkNotified(true);
- assertMetadataNetworkNotified(false);
}
public void testRawContactDirtyAndVersion() {
- // Enable metadataSync flag.
- final ContactsProvider2 cp = (ContactsProvider2) getProvider();
- cp.setMetadataSyncForTest(true);
-
final long rawContactId = RawContactUtil.createRawContact(mResolver, mAccount);
Uri uri = ContentUris.withAppendedId(ContactsContract.RawContacts.CONTENT_URI, rawContactId);
assertDirty(uri, false);
@@ -6933,9 +6476,8 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test {
assertEquals(version, getVersion(uri));
assertDirty(uri, false);
- assertNetworkNotified(false);
assertMetadataDirty(uri, false);
- assertMetadataNetworkNotified(false);
+ assertNetworkNotified(false);
Uri emailUri = insertEmail(rawContactId, "goo@woo.com");
assertDirty(uri, true);
@@ -6992,10 +6534,6 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test {
}
public void testNotifyMetadataChangeForRawContactInsertBySyncAdapter() {
- // Enable metadataSync flag.
- final ContactsProvider2 cp = (ContactsProvider2) getProvider();
- cp.setMetadataSyncForTest(true);
-
Uri uri = RawContacts.CONTENT_URI.buildUpon()
.appendQueryParameter(RawContacts.ACCOUNT_NAME, mAccount.name)
.appendQueryParameter(RawContacts.ACCOUNT_TYPE, mAccount.type)
@@ -7005,15 +6543,9 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test {
long rawContactId = ContentUris.parseId(mResolver.insert(uri, new ContentValues()));
Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId);
assertMetadataDirty(rawContactUri, false);
- // Will not notify Lychee since it's removed.
- assertMetadataNetworkNotified(false);
}
public void testMarkAsMetadataDirtyForRawContactMetadataChange() {
- // Enable metadataSync flag.
- final ContactsProvider2 cp = (ContactsProvider2) getProvider();
- cp.setMetadataSyncForTest(true);
-
long rawContactId = RawContactUtil.createRawContact(mResolver, mAccount);
long contactId = queryContactId(rawContactId);
Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId);
@@ -7025,7 +6557,6 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test {
Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId);
assertMetadataDirty(rawContactUri, false);
- assertMetadataNetworkNotified(false);
clearMetadataDirty(rawContactUri);
values = new ContentValues();
@@ -7034,7 +6565,6 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test {
assertStoredValue(contactUri, Contacts.PINNED, 1);
assertMetadataDirty(rawContactUri, false);
- assertMetadataNetworkNotified(false);
clearMetadataDirty(rawContactUri);
values = new ContentValues();
@@ -7043,14 +6573,9 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test {
assertStoredValue(contactUri, Contacts.SEND_TO_VOICEMAIL, 1);
assertMetadataDirty(rawContactUri, false);
- assertMetadataNetworkNotified(false);
}
public void testMarkAsMetadataDirtyForRawContactBackupIdChange() {
- // Enable metadataSync flag.
- final ContactsProvider2 cp = (ContactsProvider2) getProvider();
- cp.setMetadataSyncForTest(true);
-
long rawContactId = RawContactUtil.createRawContact(mResolver, mAccount);
Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId);
@@ -7066,14 +6591,9 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test {
mResolver.update(rawContactUri, values, null, null);
assertStoredValue(rawContactUri, RawContacts.BACKUP_ID, "newBackupId");
assertMetadataDirty(rawContactUri, false);
- assertMetadataNetworkNotified(false);
}
public void testMarkAsMetadataDirtyForAggregationExceptionChange() {
- // Enable metadataSync flag.
- final ContactsProvider2 cp = (ContactsProvider2) getProvider();
- cp.setMetadataSyncForTest(true);
-
long rawContactId1 = RawContactUtil.createRawContact(mResolver, new Account("a", "a"));
long rawContactId2 = RawContactUtil.createRawContact(mResolver, new Account("b", "b"));
@@ -7084,28 +6604,18 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test {
false);
assertMetadataDirty(ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId2),
false);
- assertMetadataNetworkNotified(false);
}
public void testMarkAsMetadataNotDirtyForUsageStatsChange() {
- // Enable metadataSync flag.
- final ContactsProvider2 cp = (ContactsProvider2) getProvider();
- cp.setMetadataSyncForTest(true);
-
final long rid1 = RawContactUtil.createRawContactWithName(mResolver, "contact", "a");
final long did1a = ContentUris.parseId(insertEmail(rid1, "email_1_a@email.com"));
updateDataUsageFeedback(DataUsageFeedback.USAGE_TYPE_LONG_TEXT, did1a);
// Usage feedback no longer works, so "false".
assertMetadataDirty(ContentUris.withAppendedId(RawContacts.CONTENT_URI, rid1), false);
- assertMetadataNetworkNotified(false);
}
public void testMarkAsMetadataDirtyForDataPrimarySettingInsert() {
- // Enable metadataSync flag.
- final ContactsProvider2 cp = (ContactsProvider2) getProvider();
- cp.setMetadataSyncForTest(true);
-
long rawContactId1 = RawContactUtil.createRawContact(mResolver, new Account("a", "a"));
Uri mailUri11 = insertEmail(rawContactId1, "test1@domain1.com", true, true);
@@ -7113,14 +6623,9 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test {
assertStoredValue(mailUri11, Data.IS_SUPER_PRIMARY, 1);
assertMetadataDirty(ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId1),
false);
- assertMetadataNetworkNotified(false);
}
public void testMarkAsMetadataDirtyForDataPrimarySettingUpdate() {
- // Enable metadataSync flag.
- final ContactsProvider2 cp = (ContactsProvider2) getProvider();
- cp.setMetadataSyncForTest(true);
-
long rawContactId = RawContactUtil.createRawContact(mResolver, new Account("a", "a"));
Uri mailUri1 = insertEmail(rawContactId, "test1@domain1.com");
@@ -7133,14 +6638,9 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test {
assertMetadataDirty(ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId),
false);
- assertMetadataNetworkNotified(false);
}
public void testMarkAsMetadataDirtyForDataDelete() {
- // Enable metadataSync flag.
- final ContactsProvider2 cp = (ContactsProvider2) getProvider();
- cp.setMetadataSyncForTest(true);
-
long rawContactId = RawContactUtil.createRawContact(mResolver, new Account("a", "a"));
Uri mailUri1 = insertEmail(rawContactId, "test1@domain1.com", true, true);
@@ -7148,7 +6648,6 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test {
assertMetadataDirty(ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId),
false);
- assertMetadataNetworkNotified(false);
}
public void testDeleteContactWithoutName() {
@@ -8809,25 +8308,6 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test {
}
}
- public void testMarkMetadataNotDirtyWhenDataUsageUpdate() {
- // Enable metadataSync flag.
- final ContactsProvider2 cp = (ContactsProvider2) getProvider();
- cp.setMetadataSyncForTest(true);
-
- final long rid1 = RawContactUtil.createRawContactWithName(mResolver, "contact", "a");
- final long did1a = ContentUris.parseId(insertEmail(rid1, "email_1_a@email.com"));
- final Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, rid1);
- assertDirty(rawContactUri, true);
- clearDirty(rawContactUri);
- updateDataUsageFeedback(DataUsageFeedback.USAGE_TYPE_LONG_TEXT, did1a);
-
- assertDirty(rawContactUri, false);
- // Usage feedback no longer works, so "false".
- assertMetadataDirty(rawContactUri, false);
- assertNetworkNotified(false);
- assertMetadataNetworkNotified(false);
- }
-
public void testDataUsageFeedbackAndDelete() {
sMockClock.install();
@@ -9006,10 +8486,6 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test {
}
public void testContactUpdate_metadataChange() {
- // Enable metadataSync flag.
- final ContactsProvider2 cp = (ContactsProvider2) getProvider();
- cp.setMetadataSyncForTest(true);
-
DatabaseAsserts.ContactIdPair ids = DatabaseAsserts.assertAndCreateContact(mResolver);
Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, ids.mRawContactId);
assertDirty(rawContactUri, true);
@@ -9022,7 +8498,6 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test {
assertDirty(rawContactUri, false);
assertMetadataDirty(rawContactUri, false);
assertNetworkNotified(false);
- assertMetadataNetworkNotified(false);
}
public void testContactUpdate_updatesContactUpdatedTimestamp() {
diff --git a/tests/src/com/android/providers/contacts/MetadataEntryParserTest.java b/tests/src/com/android/providers/contacts/MetadataEntryParserTest.java
deleted file mode 100644
index fe6ed132..00000000
--- a/tests/src/com/android/providers/contacts/MetadataEntryParserTest.java
+++ /dev/null
@@ -1,304 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.providers.contacts;
-
-import android.content.Context;
-import android.test.suitebuilder.annotation.SmallTest;
-import com.android.providers.contacts.MetadataEntryParser.AggregationData;
-import com.android.providers.contacts.MetadataEntryParser.FieldData;
-import com.android.providers.contacts.MetadataEntryParser.MetadataEntry;
-import com.android.providers.contacts.MetadataEntryParser.RawContactInfo;
-import com.android.providers.contacts.MetadataEntryParser.UsageStats;
-import org.json.JSONException;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-
-/**
- * Unit tests for {@link MetadataEntryParser}.
- *
- * Run the test like this:
- * <code>
- adb shell am instrument -e class com.android.providers.contacts.MetadataEntryParserTest -w \
- com.android.providers.contacts.tests/android.test.InstrumentationTestRunner
- * </code>
- */
-@SmallTest
-public class MetadataEntryParserTest extends FixedAndroidTestCase {
-
- public void testErrorForEmptyInput() {
- try {
- MetadataEntryParser.parseDataToMetaDataEntry("");
- } catch (IllegalArgumentException e) {
- // Expected.
- }
- }
-
- public void testParseDataToMetadataEntry() throws IOException {
- String contactBackupId = "1111111";
- String accountType = "facebook";
- String accountName = "android-test";
- String dataSet = null;
- int sendToVoicemail = 1;
- int starred = 0;
- int pinned = 2;
- String dataHashId1 = "1001";
- String usageType1_1 = "CALL";
- long lastTimeUsed1_1 = 10000001;
- int timesUsed1_1 = 10;
- String usageType1_2 = "SHORT_TEXT";
- long lastTimeUsed1_2 = 20000002;
- int timesUsed1_2 = 20;
- String dataHashId2 = "1002";
- String usageType2 = "LONG_TEXT";
- long lastTimeUsed2 = 30000003;
- int timesUsed2 = 30;
- String aggregationContactBackupId1 = "2222222";
- String aggregationAccountType1 = "com.google";
- String aggregationAccountName1 = "android-test2";
- String aggregationDataSet1 = "plus";
- String aggregationContactBackupId2 = "3333333";
- String aggregationAccountType2 = "com.google";
- String aggregationAccountName2 = "android-test3";
- String aggregationDataSet2 = "custom type";
- String type = "TOGETHER";
- String inputFile = "test1/testFileDeviceContactMetadataJSON.txt";
-
- RawContactInfo rawContactInfo = new RawContactInfo(
- contactBackupId, accountType, accountName, dataSet);
- RawContactInfo aggregationContact1 = new RawContactInfo(aggregationContactBackupId1,
- aggregationAccountType1, aggregationAccountName1, aggregationDataSet1);
- RawContactInfo aggregationContact2 = new RawContactInfo(aggregationContactBackupId2,
- aggregationAccountType2, aggregationAccountName2, aggregationDataSet2);
- AggregationData aggregationData = new AggregationData(
- aggregationContact1, aggregationContact2, type);
- ArrayList<AggregationData> aggregationDataList = new ArrayList<>();
- aggregationDataList.add(aggregationData);
-
- UsageStats usageStats1_1 = new UsageStats(usageType1_1, lastTimeUsed1_1, timesUsed1_1);
- UsageStats usageStats1_2 = new UsageStats(usageType1_2, lastTimeUsed1_2, timesUsed1_2);
- UsageStats usageStats2 = new UsageStats(usageType2, lastTimeUsed2, timesUsed2);
-
- ArrayList<UsageStats> usageStats1List = new ArrayList<>();
- usageStats1List.add(usageStats1_1);
- usageStats1List.add(usageStats1_2);
- FieldData fieldData1 = new FieldData(dataHashId1, true, true, usageStats1List);
-
- ArrayList<UsageStats> usageStats2List = new ArrayList<>();
- usageStats2List.add(usageStats2);
- FieldData fieldData2 = new FieldData(dataHashId2, false, false, usageStats2List);
-
- ArrayList<FieldData> fieldDataList = new ArrayList<>();
- fieldDataList.add(fieldData1);
- fieldDataList.add(fieldData2);
-
- MetadataEntry expectedResult = new MetadataEntry(rawContactInfo,
- sendToVoicemail, starred, pinned, fieldDataList, aggregationDataList);
-
- String inputJson = readAssetAsString(inputFile);
- MetadataEntry metadataEntry = MetadataEntryParser.parseDataToMetaDataEntry(
- inputJson.toString());
- assertMetaDataEntry(expectedResult, metadataEntry);
- }
-
- public void testErrorForMissingContactId() {
- String input = "{\"unique_contact_id\": {\n" +
- " \"account_type\": \"CUSTOM_ACCOUNT\",\n" +
- " \"custom_account_type\": \"facebook\",\n" +
- " \"account_name\": \"android-test\"\n" +
- " }}";
- try {
- MetadataEntryParser.parseDataToMetaDataEntry(input);
- } catch (IllegalArgumentException e) {
- // Expected.
- }
- }
-
- public void testErrorForNullContactId() throws JSONException {
- String input = "{\"unique_contact_id\": {\n" +
- " \"account_type\": \"CUSTOM_ACCOUNT\",\n" +
- " \"custom_account_type\": \"facebook\",\n" +
- " \"account_name\": \"android-test\",\n" +
- " \"contact_id\": \"\"\n" +
- " }}";
- try {
- MetadataEntryParser.parseDataToMetaDataEntry(input);
- } catch (IllegalArgumentException e) {
- // Expected.
- }
- }
-
- public void testErrorForNullAccountType() throws JSONException {
- String input = "{\"unique_contact_id\": {\n" +
- " \"account_type\": \"\",\n" +
- " \"custom_account_type\": \"facebook\",\n" +
- " \"account_name\": \"android-test\",\n" +
- " \"contact_id\": \"\"\n" +
- " }}";
- try {
- MetadataEntryParser.parseDataToMetaDataEntry(input);
- } catch (IllegalArgumentException e) {
- // Expected.
- }
- }
-
- public void testErrorForNullAccountName() throws JSONException {
- String input = "{\"unique_contact_id\": {\n" +
- " \"account_type\": \"CUSTOM_ACCOUNT\",\n" +
- " \"custom_account_type\": \"facebook\",\n" +
- " \"account_name\": \"\",\n" +
- " \"contact_id\": \"1111111\"\n" +
- " }}";
- try {
- MetadataEntryParser.parseDataToMetaDataEntry(input);
- } catch (IllegalArgumentException e) {
- // Expected.
- }
- }
-
- public void testErrorForNullFieldDataId() throws JSONException {
- String input = "{\"unique_contact_id\": {\n" +
- " \"account_type\": \"CUSTOM_ACCOUNT\",\n" +
- " \"custom_account_type\": \"facebook\",\n" +
- " \"account_name\": \"android-test\",\n" +
- " \"contact_id\": \"1111111\"\n" +
- " },\n" +
- " \"contact_prefs\": {\n" +
- " \"send_to_voicemail\": true,\n" +
- " \"starred\": false,\n" +
- " \"pinned\": 2\n" +
- " }," +
- " \"field_data\": [{\n" +
- " \"field_data_id\": \"\"}]" +
- "}";
- try {
- MetadataEntryParser.parseDataToMetaDataEntry(input);
- } catch (IllegalArgumentException e) {
- // Expected.
- }
- }
-
- public void testErrorForNullAggregationType() throws JSONException {
- String input = "{\n" +
- " \"unique_contact_id\": {\n" +
- " \"account_type\": \"CUSTOM_ACCOUNT\",\n" +
- " \"custom_account_type\": \"facebook\",\n" +
- " \"account_name\": \"android-test\",\n" +
- " \"contact_id\": \"1111111\"\n" +
- " },\n" +
- " \"contact_prefs\": {\n" +
- " \"send_to_voicemail\": true,\n" +
- " \"starred\": false,\n" +
- " \"pinned\": 2\n" +
- " },\n" +
- " \"aggregation_data\": [\n" +
- " {\n" +
- " \"type\": \"\",\n" +
- " \"contact_ids\": [\n" +
- " {\n" +
- " \"contact_id\": \"2222222\"\n" +
- " },\n" +
- " {\n" +
- " \"contact_id\": \"3333333\"\n" +
- " }\n" +
- " ]\n" +
- " }\n" +
- " ]}";
- try {
- MetadataEntryParser.parseDataToMetaDataEntry(input);
- } catch (IllegalArgumentException e) {
- // Expected.
- }
- }
-
- private String readAssetAsString(String fileName) throws IOException {
- Context context = getTestContext();
- InputStream input = context.getAssets().open(fileName);
- ByteArrayOutputStream contents = new ByteArrayOutputStream();
- int len;
- byte[] data = new byte[1024];
- do {
- len = input.read(data);
- if (len > 0) contents.write(data, 0, len);
- } while (len == data.length);
- return contents.toString();
- }
-
- private void assertMetaDataEntry(MetadataEntry entry1, MetadataEntry entry2) {
- assertRawContactInfoEquals(entry1.mRawContactInfo, entry2.mRawContactInfo);
- assertEquals(entry1.mSendToVoicemail, entry2.mSendToVoicemail);
- assertEquals(entry1.mStarred, entry2.mStarred);
- assertEquals(entry1.mPinned, entry2.mPinned);
- assertAggregationDataListEquals(entry1.mAggregationDatas, entry2.mAggregationDatas);
- assertFieldDataListEquals(entry1.mFieldDatas, entry2.mFieldDatas);
- }
-
- private void assertRawContactInfoEquals(RawContactInfo contact1, RawContactInfo contact2) {
- assertEquals(contact1.mBackupId, contact2.mBackupId);
- assertEquals(contact1.mAccountType, contact2.mAccountType);
- assertEquals(contact1.mAccountName, contact2.mAccountName);
- assertEquals(contact1.mDataSet, contact2.mDataSet);
- }
-
- private void assertAggregationDataListEquals(ArrayList<AggregationData> aggregationList1,
- ArrayList<AggregationData> aggregationList2) {
- assertEquals(aggregationList1.size(), aggregationList2.size());
- for (int i = 0; i < aggregationList1.size(); i++) {
- assertAggregationDataEquals(aggregationList1.get(i), aggregationList2.get(i));
- }
- }
-
- private void assertAggregationDataEquals(AggregationData aggregationData1,
- AggregationData aggregationData2) {
- assertRawContactInfoEquals(aggregationData1.mRawContactInfo1,
- aggregationData2.mRawContactInfo1);
- assertRawContactInfoEquals(aggregationData1.mRawContactInfo2,
- aggregationData2.mRawContactInfo2);
- assertEquals(aggregationData1.mType, aggregationData2.mType);
- }
-
- private void assertFieldDataListEquals(ArrayList<FieldData> fieldDataList1,
- ArrayList<FieldData> fieldDataList2) {
- assertEquals(fieldDataList1.size(), fieldDataList2.size());
- for (int i = 0; i < fieldDataList1.size(); i++) {
- assertFieldDataEquals(fieldDataList1.get(i), fieldDataList2.get(i));
- }
- }
-
- private void assertFieldDataEquals(FieldData fieldData1, FieldData fieldData2) {
- assertEquals(fieldData1.mDataHashId, fieldData2.mDataHashId);
- assertEquals(fieldData1.mIsPrimary, fieldData2.mIsPrimary);
- assertEquals(fieldData1.mIsSuperPrimary, fieldData2.mIsSuperPrimary);
- assertUsageStatsListEquals(fieldData1.mUsageStatsList, fieldData2.mUsageStatsList);
- }
-
- private void assertUsageStatsListEquals(ArrayList<UsageStats> usageStatsList1,
- ArrayList<UsageStats> usageStatsList2) {
- assertEquals(usageStatsList1.size(), usageStatsList2.size());
- for (int i = 0; i < usageStatsList1.size(); i++) {
- assertUsageStatsEquals(usageStatsList1.get(i), usageStatsList2.get(i));
- }
- }
-
- private void assertUsageStatsEquals(UsageStats usageStats1, UsageStats usageStats2) {
- assertEquals(usageStats1.mUsageType, usageStats2.mUsageType);
- assertEquals(usageStats1.mLastTimeUsed, usageStats2.mLastTimeUsed);
- assertEquals(usageStats1.mTimesUsed, usageStats2.mTimesUsed);
- }
-}
diff --git a/tests/src/com/android/providers/contacts/SynchronousContactsProvider2.java b/tests/src/com/android/providers/contacts/SynchronousContactsProvider2.java
index f674dd5b..c2ab74fc 100644
--- a/tests/src/com/android/providers/contacts/SynchronousContactsProvider2.java
+++ b/tests/src/com/android/providers/contacts/SynchronousContactsProvider2.java
@@ -36,7 +36,6 @@ public class SynchronousContactsProvider2 extends ContactsProvider2 {
private static ContactsDatabaseHelper sDbHelper;
private Account mAccount;
private boolean mNetworkNotified;
- private boolean mMetadataNetworkNotified;
private boolean mIsPhone = true;
private boolean mIsVoiceCapable = true;
@@ -62,23 +61,17 @@ public class SynchronousContactsProvider2 extends ContactsProvider2 {
public void onBegin() {
super.onBegin();
mNetworkNotified = false;
- mMetadataNetworkNotified = false;
}
@Override
- protected void notifyChange(boolean syncToNetwork, boolean syncToMetadataNetwork) {
+ protected void notifyChange(boolean syncToNetwork) {
mNetworkNotified |= syncToNetwork;
- mMetadataNetworkNotified |= syncToMetadataNetwork;
}
public boolean isNetworkNotified() {
return mNetworkNotified;
}
- public boolean isMetadataNetworkNotified() {
- return mMetadataNetworkNotified;
- }
-
public void setIsPhone(boolean flag) {
mIsPhone = flag;
}