diff options
author | Tingting Wang <tingtingw@google.com> | 2020-08-20 18:17:05 +0000 |
---|---|---|
committer | Tingting Wang <tingtingw@google.com> | 2020-08-20 21:37:19 +0000 |
commit | 649eb0848ded5c793eef1cb08615a1ae0cb4dd4f (patch) | |
tree | 9e7e68c68d84a08306f950b440929fe74341dd37 /tests | |
parent | 3eda14ff66d7e16780773b4c446a5399df48335c (diff) | |
download | ContactsProvider-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')
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; } |