Part of Lychee cleanup in CP2.

Removed code to populate Lychee related columns in ContactsProvider2.
Removed code to notify Lychee sync adapter when there is metadata
change.

Test: Unit tests by asserting metadata_dirty not set and metadata
  network not notified. Manual tests by installing the apk to device
  and add/edit/delete contacts in Contacts App.
Bug: 146447263

Change-Id: Ibbc0b553d0ea05702223e77d8eab00b9d14cca92
diff --git a/src/com/android/providers/contacts/ContactsProvider2.java b/src/com/android/providers/contacts/ContactsProvider2.java
index 2bad86e..352029d 100644
--- a/src/com/android/providers/contacts/ContactsProvider2.java
+++ b/src/com/android/providers/contacts/ContactsProvider2.java
@@ -532,23 +532,6 @@
             " SET " + RawContacts.DIRTY + "=1" +
             " WHERE " + RawContacts._ID + " IN (";
 
-    /** Sql for updating METADATA_DIRTY flag on multiple raw contacts */
-    private static final String UPDATE_RAW_CONTACT_SET_METADATA_DIRTY_SQL =
-            "UPDATE " + Tables.RAW_CONTACTS +
-                    " SET " + RawContacts.METADATA_DIRTY + "=1" +
-                    " WHERE " + RawContacts._ID + " IN (";
-
-    // Sql for updating MetadataSync.DELETED flag on multiple raw contacts.
-    // When using this sql, add comma separated raw contacts ids and "))".
-    private static final String UPDATE_METADATASYNC_SET_DELETED_SQL =
-            "UPDATE " + Tables.METADATA_SYNC
-                    + " SET " + MetadataSync.DELETED + "=1"
-                    + " WHERE " + MetadataSync._ID + " IN "
-                            + "(SELECT " + MetadataSyncColumns.CONCRETE_ID
-                            + " FROM " + Tables.RAW_CONTACTS_JOIN_METADATA_SYNC
-                            + " WHERE " + RawContactsColumns.CONCRETE_DELETED + "=1 AND "
-                            + RawContactsColumns.CONCRETE_ID + " IN (";
-
     /** Sql for updating VERSION on multiple raw contacts */
     private static final String UPDATE_RAW_CONTACT_SET_VERSION_SQL =
             "UPDATE " + Tables.RAW_CONTACTS +
@@ -2433,14 +2416,6 @@
         for (long rawContactId : mTransactionContext.get().getInsertedRawContactIds()) {
             mDbHelper.get().updateRawContactDisplayName(db, rawContactId);
             mAggregator.get().onRawContactInsert(mTransactionContext.get(), db, rawContactId);
-            if (mMetadataSyncEnabled) {
-                updateMetadataOnRawContactInsert(db, rawContactId);
-            }
-        }
-        if (mMetadataSyncEnabled) {
-            for (long rawContactId : mTransactionContext.get().getBackupIdChangedRawContacts()) {
-                updateMetadataOnRawContactInsert(db, rawContactId);
-            }
         }
 
         final Set<Long> dirtyRawContacts = mTransactionContext.get().getDirtyRawContactIds();
@@ -2461,29 +2436,8 @@
             db.execSQL(mSb.toString());
         }
 
-        final Set<Long> metadataDirtyRawContacts =
-                mTransactionContext.get().getMetadataDirtyRawContactIds();
-        if (!metadataDirtyRawContacts.isEmpty() && mMetadataSyncEnabled) {
-            mSb.setLength(0);
-            mSb.append(UPDATE_RAW_CONTACT_SET_METADATA_DIRTY_SQL);
-            appendIds(mSb, metadataDirtyRawContacts);
-            mSb.append(")");
-            db.execSQL(mSb.toString());
-            mSyncToMetadataNetWork = true;
-        }
-
         final Set<Long> changedRawContacts = mTransactionContext.get().getChangedRawContactIds();
         ContactsTableUtil.updateContactLastUpdateByRawContactId(db, changedRawContacts);
-        if (!changedRawContacts.isEmpty() && mMetadataSyncEnabled) {
-            // For the deleted raw contact, set related metadata as deleted
-            // if metadata flag is enabled.
-            mSb.setLength(0);
-            mSb.append(UPDATE_METADATASYNC_SET_DELETED_SQL);
-            appendIds(mSb, changedRawContacts);
-            mSb.append("))");
-            db.execSQL(mSb.toString());
-            mSyncToMetadataNetWork = true;
-        }
 
         // Update sync states.
         for (Map.Entry<Long, Object> entry : mTransactionContext.get().getUpdatedSyncStates()) {
@@ -2502,49 +2456,6 @@
         mMetadataSyncEnabled = enabled;
     }
 
-    interface MetadataSyncQuery {
-        String TABLE = Tables.RAW_CONTACTS_JOIN_METADATA_SYNC;
-        String[] COLUMNS = new String[] {
-                MetadataSyncColumns.CONCRETE_ID,
-                MetadataSync.DATA
-        };
-        int METADATA_SYNC_ID = 0;
-        int METADATA_SYNC_DATA = 1;
-        String SELECTION = MetadataSyncColumns.CONCRETE_DELETED + "=0 AND " +
-                RawContactsColumns.CONCRETE_ID + "=?";
-    }
-
-    /**
-     * Fetch the related metadataSync data column for the raw contact id.
-     * Returns null if there's no metadata for the raw contact.
-     */
-    private String queryMetadataSyncData(SQLiteDatabase db, long rawContactId) {
-        String metadataSyncData = null;
-        mSelectionArgs1[0] = String.valueOf(rawContactId);
-        final Cursor cursor = db.query(MetadataSyncQuery.TABLE,
-                MetadataSyncQuery.COLUMNS, MetadataSyncQuery.SELECTION,
-                mSelectionArgs1, null, null, null);
-        try {
-            if (cursor.moveToFirst()) {
-                metadataSyncData = cursor.getString(MetadataSyncQuery.METADATA_SYNC_DATA);
-            }
-        } finally {
-            cursor.close();
-        }
-        return metadataSyncData;
-    }
-
-    private void updateMetadataOnRawContactInsert(SQLiteDatabase db, long rawContactId) {
-        // Read metadata from MetadataSync table for the raw contact, and update.
-        final String metadataSyncData = queryMetadataSyncData(db, rawContactId);
-        if (TextUtils.isEmpty(metadataSyncData)) {
-            return;
-        }
-        final MetadataEntry metadataEntry = MetadataEntryParser.parseDataToMetaDataEntry(
-                metadataSyncData);
-        updateFromMetaDataEntry(db, metadataEntry);
-    }
-
     /**
      * Appends comma separated IDs.
      * @param ids Should not be empty
@@ -2566,10 +2477,7 @@
 
     protected void notifyChange(boolean syncToNetwork, boolean syncToMetadataNetwork) {
         getContext().getContentResolver().notifyChange(ContactsContract.AUTHORITY_URI, null,
-                syncToNetwork || syncToMetadataNetwork);
-
-        getContext().getContentResolver().notifyChange(MetadataSync.METADATA_AUTHORITY_URI,
-                null, syncToMetadataNetwork);
+                syncToNetwork);
     }
 
     protected void setProviderStatus(int status) {
@@ -2837,7 +2745,6 @@
             values.put(RawContacts.AGGREGATION_MODE, RawContacts.AGGREGATION_MODE_DISABLED);
         }
 
-        final boolean needToUpdateMetadata = shouldMarkMetadataDirtyForRawContact(values);
         // Databases that were created prior to the 906 upgrade have a default of Int.MAX_VALUE
         // for RawContacts.PINNED. Manually set the value to the correct default (0) if it is not
         // set.
@@ -2849,14 +2756,6 @@
         final SQLiteDatabase db = mDbHelper.get().getWritableDatabase();
         final long rawContactId = db.insert(Tables.RAW_CONTACTS, RawContacts.CONTACT_ID, values);
 
-        if (needToUpdateMetadata) {
-            mTransactionContext.get().markRawContactMetadataDirty(rawContactId,
-                    /* isMetadataSyncAdapter =*/false);
-        }
-        // If the new raw contact is inserted by a sync adapter, mark mSyncToMetadataNetWork as true
-        // so that it can trigger the metadata syncing from the server.
-        mSyncToMetadataNetWork |= callerIsSyncAdapter;
-
         final int aggregationMode = getIntValue(values, RawContacts.AGGREGATION_MODE,
                 RawContacts.AGGREGATION_MODE_DEFAULT);
         mAggregator.get().markNewForAggregation(rawContactId, aggregationMode);
@@ -4552,7 +4451,6 @@
         final boolean isDataSetChanging = values.containsKey(RawContacts.DATA_SET);
         final boolean isAccountChanging =
                 isAccountNameChanging || isAccountTypeChanging || isDataSetChanging;
-        final boolean isBackupIdChanging = values.containsKey(RawContacts.BACKUP_ID);
 
         int previousDeleted = 0;
         long accountId = 0;
@@ -4615,32 +4513,6 @@
             if (aggregationMode != RawContacts.AGGREGATION_MODE_DEFAULT) {
                 aggregator.markForAggregation(rawContactId, aggregationMode, false);
             }
-            if (shouldMarkMetadataDirtyForRawContact(values)) {
-                mTransactionContext.get().markRawContactMetadataDirty(
-                        rawContactId, callerIsMetadataSyncAdapter);
-            }
-            if (isBackupIdChanging) {
-                Cursor cursor = db.query(Tables.RAW_CONTACTS,
-                        new String[] {RawContactsColumns.CONCRETE_METADATA_DIRTY},
-                        selection, mSelectionArgs1, null, null, null);
-                int metadataDirty = 0;
-                try {
-                    if (cursor.moveToFirst()) {
-                        metadataDirty = cursor.getInt(0);
-                    }
-                } finally {
-                    cursor.close();
-                }
-
-                if (metadataDirty == 1) {
-                    // Re-notify metadata network if backup_id is updated and metadata is dirty.
-                    mTransactionContext.get().markRawContactMetadataDirty(
-                            rawContactId, callerIsMetadataSyncAdapter);
-                } else {
-                    // Merge from metadata sync table if backup_id is updated and no dirty change.
-                    mTransactionContext.get().markBackupIdChangedRawContact(rawContactId);
-                }
-            }
             if (flagExists(values, RawContacts.STARRED)) {
                 if (!callerIsSyncAdapter) {
                     updateFavoritesMembership(rawContactId, flagIsSet(values, RawContacts.STARRED));
@@ -4814,10 +4686,6 @@
             // Mark dirty when changing starred to trigger sync.
             values.put(RawContacts.DIRTY, 1);
         }
-        if (mMetadataSyncEnabled && (hasStarredValue || hasPinnedValue || hasVoiceMailValue)) {
-            // Mark dirty to trigger metadata syncing.
-            values.put(RawContacts.METADATA_DIRTY, 1);
-        }
 
         mSelectionArgs1[0] = String.valueOf(contactId);
         db.update(Tables.RAW_CONTACTS, values, RawContacts.CONTACT_ID + "=?"
@@ -4835,11 +4703,6 @@
                                 flagIsSet(values, RawContacts.STARRED));
                         mSyncToNetwork |= !callerIsSyncAdapter;
                     }
-
-                    if (hasStarredValue || hasPinnedValue || hasVoiceMailValue) {
-                        mTransactionContext.get().markRawContactMetadataDirty(rawContactId,
-                                false /*callerIsMetadataSyncAdapter*/);
-                    }
                 }
             } finally {
                 cursor.close();
@@ -4917,21 +4780,12 @@
 
         aggregator.aggregateContact(mTransactionContext.get(), db, rawContactId1);
         aggregator.aggregateContact(mTransactionContext.get(), db, rawContactId2);
-        mTransactionContext.get().markRawContactMetadataDirty(rawContactId1,
-                callerIsMetadataSyncAdapter);
-        mTransactionContext.get().markRawContactMetadataDirty(rawContactId2,
-                callerIsMetadataSyncAdapter);
 
         // The return value is fake - we just confirm that we made a change, not count actual
         // rows changed.
         return 1;
     }
 
-    private boolean shouldMarkMetadataDirtyForRawContact(ContentValues values) {
-        return (flagExists(values, RawContacts.STARRED) || flagExists(values, RawContacts.PINNED)
-                || flagExists(values, RawContacts.SEND_TO_VOICEMAIL));
-    }
-
     @Override
     public void onAccountsUpdated(Account[] accounts) {
         scheduleBackgroundTask(BACKGROUND_TASK_UPDATE_ACCOUNTS);
diff --git a/tests/src/com/android/providers/contacts/ContactsProvider2Test.java b/tests/src/com/android/providers/contacts/ContactsProvider2Test.java
index 0ad1da6..d5643d2 100644
--- a/tests/src/com/android/providers/contacts/ContactsProvider2Test.java
+++ b/tests/src/com/android/providers/contacts/ContactsProvider2Test.java
@@ -3061,16 +3061,16 @@
         long rawContactId = RawContactUtil.createRawContactWithBackupId(mResolver, backupId,
                 account);
         Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId);
-        // Check if the raw contact is updated.
+        // 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, "1");
-        assertStoredValue(rawContactUri, RawContacts.STARRED, "1");
-        assertStoredValue(rawContactUri, RawContacts.PINNED, "1");
-        // Notify metadata network on raw contact insertion
-        assertMetadataNetworkNotified(true);
+        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 {
@@ -3128,15 +3128,15 @@
         ContentValues updatedValues = new ContentValues();
         updatedValues.put(RawContacts.BACKUP_ID, backupId);
         mResolver.update(RawContacts.CONTENT_URI, updatedValues, null, null);
-        // Check if the raw contact is updated because of backup_id change.
+        // 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, "1");
-        assertStoredValue(rawContactUri, RawContacts.STARRED, "1");
-        assertStoredValue(rawContactUri, RawContacts.PINNED, "1");
-        // Notify metadata network because of the changed raw contact.
-        assertMetadataNetworkNotified(true);
+        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 {
@@ -3186,12 +3186,12 @@
 
         // Delete raw contact.
         mResolver.delete(rawContactUri, null, null);
-        // Check if the metadata is deleted.
-        assertStoredValue(metadataUri, MetadataSync.DELETED, "1");
+        // 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);
-        // Notify metadata network on raw contact deletion
-        assertMetadataNetworkNotified(true);
+        // Lychee removed. Will not notify it.
+        assertMetadataNetworkNotified(false);
 
         // Add another rawcontact and metadata, and don't delete them.
         // Insert a raw contact.
@@ -3215,10 +3215,10 @@
 
         // Check if the metadata is not marked as deleted.
         assertStoredValue(metadataUri2, MetadataSync.DELETED, "0");
-        // check raw contact metadata_dirty column is changed on raw contact update
-        assertMetadataDirty(rawContactUri2, true);
-        // Notify metadata network on raw contact update
-        assertMetadataNetworkNotified(true);
+        // 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() {
@@ -5210,16 +5210,16 @@
         updateSendToVoicemailAndRingtone(contactId, true, "foo");
         assertSendToVoicemailAndRingtone(contactId, true, "foo");
         assertNetworkNotified(false);
-        assertMetadataNetworkNotified(true);
+        assertMetadataNetworkNotified(false);
         assertDirty(rawContactUri, false);
-        assertMetadataDirty(rawContactUri, true);
+        assertMetadataDirty(rawContactUri, false);
 
         updateSendToVoicemailAndRingtoneWithSelection(contactId, false, "bar");
         assertSendToVoicemailAndRingtone(contactId, false, "bar");
         assertNetworkNotified(false);
-        assertMetadataNetworkNotified(true);
+        assertMetadataNetworkNotified(false);
         assertDirty(rawContactUri, false);
-        assertMetadataDirty(rawContactUri, true);
+        assertMetadataDirty(rawContactUri, false);
     }
 
     public void testSendToVoicemailAndRingtoneAfterAggregation() {
@@ -5297,10 +5297,10 @@
 
         assertDirty(rawContactUri1, false);
         assertDirty(rawContactUri2, false);
-        assertMetadataDirty(rawContactUri1, true);
-        assertMetadataDirty(rawContactUri2, true);
+        assertMetadataDirty(rawContactUri1, false);
+        assertMetadataDirty(rawContactUri2, false);
         assertNetworkNotified(false);
-        assertMetadataNetworkNotified(true);
+        assertMetadataNetworkNotified(false);
     }
 
     public void testStatusUpdateInsert() {
@@ -6901,7 +6901,7 @@
         assertDirty(rawContactUri, false);
         assertMetadataDirty(rawContactUri, false);
         assertNetworkNotified(true);
-        assertMetadataNetworkNotified(true);
+        assertMetadataNetworkNotified(false);
 
         // When inserting a rawcontact with metadata.
         ContentValues values = new ContentValues();
@@ -6910,9 +6910,9 @@
         values.put(ContactsContract.RawContacts.ACCOUNT_TYPE, mAccount.type);
         Uri rawContactId2Uri = mResolver.insert(RawContacts.CONTENT_URI, values);
         assertDirty(rawContactId2Uri, false);
-        assertMetadataDirty(rawContactId2Uri, true);
+        assertMetadataDirty(rawContactId2Uri, false);
         assertNetworkNotified(true);
-        assertMetadataNetworkNotified(true);
+        assertMetadataNetworkNotified(false);
     }
 
     public void testRawContactDirtyAndVersion() {
@@ -6934,8 +6934,8 @@
 
         assertDirty(uri, false);
         assertNetworkNotified(false);
-        assertMetadataDirty(uri, true);
-        assertMetadataNetworkNotified(true);
+        assertMetadataDirty(uri, false);
+        assertMetadataNetworkNotified(false);
 
         Uri emailUri = insertEmail(rawContactId, "goo@woo.com");
         assertDirty(uri, true);
@@ -7005,9 +7005,8 @@
         long rawContactId = ContentUris.parseId(mResolver.insert(uri, new ContentValues()));
         Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId);
         assertMetadataDirty(rawContactUri, false);
-        // If the raw contact is inserted by sync adapter, it will notify metadata change no matter
-        // if there is any metadata change.
-        assertMetadataNetworkNotified(true);
+        // Will not notify Lychee since it's removed.
+        assertMetadataNetworkNotified(false);
     }
 
     public void testMarkAsMetadataDirtyForRawContactMetadataChange() {
@@ -7025,8 +7024,8 @@
         assertStoredValue(contactUri, Contacts.STARRED, 1);
 
         Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId);
-        assertMetadataDirty(rawContactUri, true);
-        assertMetadataNetworkNotified(true);
+        assertMetadataDirty(rawContactUri, false);
+        assertMetadataNetworkNotified(false);
 
         clearMetadataDirty(rawContactUri);
         values = new ContentValues();
@@ -7034,8 +7033,8 @@
         mResolver.update(contactUri, values, null, null);
         assertStoredValue(contactUri, Contacts.PINNED, 1);
 
-        assertMetadataDirty(rawContactUri, true);
-        assertMetadataNetworkNotified(true);
+        assertMetadataDirty(rawContactUri, false);
+        assertMetadataNetworkNotified(false);
 
         clearMetadataDirty(rawContactUri);
         values = new ContentValues();
@@ -7043,8 +7042,8 @@
         mResolver.update(contactUri, values, null, null);
         assertStoredValue(contactUri, Contacts.SEND_TO_VOICEMAIL, 1);
 
-        assertMetadataDirty(rawContactUri, true);
-        assertMetadataNetworkNotified(true);
+        assertMetadataDirty(rawContactUri, false);
+        assertMetadataNetworkNotified(false);
     }
 
     public void testMarkAsMetadataDirtyForRawContactBackupIdChange() {
@@ -7059,15 +7058,15 @@
         ContentValues values = new ContentValues();
         values.put(RawContacts.SEND_TO_VOICEMAIL, "1");
         mResolver.update(rawContactUri, values, null, null);
-        assertMetadataDirty(rawContactUri, true);
+        assertMetadataDirty(rawContactUri, false);
 
         // Update the backup_id and check metadata network should be notified.
         values = new ContentValues();
         values.put(RawContacts.BACKUP_ID, "newBackupId");
         mResolver.update(rawContactUri, values, null, null);
         assertStoredValue(rawContactUri, RawContacts.BACKUP_ID, "newBackupId");
-        assertMetadataDirty(rawContactUri, true);
-        assertMetadataNetworkNotified(true);
+        assertMetadataDirty(rawContactUri, false);
+        assertMetadataNetworkNotified(false);
     }
 
     public void testMarkAsMetadataDirtyForAggregationExceptionChange() {
@@ -7082,10 +7081,10 @@
                 rawContactId1, rawContactId2);
 
         assertMetadataDirty(ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId1),
-                true);
+                false);
         assertMetadataDirty(ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId2),
-                true);
-        assertMetadataNetworkNotified(true);
+                false);
+        assertMetadataNetworkNotified(false);
     }
 
     public void testMarkAsMetadataNotDirtyForUsageStatsChange() {
@@ -7113,8 +7112,8 @@
         assertStoredValue(mailUri11, Data.IS_PRIMARY, 1);
         assertStoredValue(mailUri11, Data.IS_SUPER_PRIMARY, 1);
         assertMetadataDirty(ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId1),
-                true);
-        assertMetadataNetworkNotified(true);
+                false);
+        assertMetadataNetworkNotified(false);
     }
 
     public void testMarkAsMetadataDirtyForDataPrimarySettingUpdate() {
@@ -7133,8 +7132,8 @@
         mResolver.update(mailUri1, values, null, null);
 
         assertMetadataDirty(ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId),
-                true);
-        assertMetadataNetworkNotified(true);
+                false);
+        assertMetadataNetworkNotified(false);
     }
 
     public void testMarkAsMetadataDirtyForDataDelete() {
@@ -7148,8 +7147,8 @@
         mResolver.delete(mailUri1, null, null);
 
         assertMetadataDirty(ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId),
-                true);
-        assertMetadataNetworkNotified(true);
+                false);
+        assertMetadataNetworkNotified(false);
     }
 
     public void testDeleteContactWithoutName() {
@@ -9021,9 +9020,9 @@
 
         ContactUtil.update(mResolver, ids.mContactId, values);
         assertDirty(rawContactUri, false);
-        assertMetadataDirty(rawContactUri, true);
+        assertMetadataDirty(rawContactUri, false);
         assertNetworkNotified(false);
-        assertMetadataNetworkNotified(true);
+        assertMetadataNetworkNotified(false);
     }
 
     public void testContactUpdate_updatesContactUpdatedTimestamp() {