diff options
author | Ta-wei Yen <twyen@google.com> | 2018-01-05 14:51:01 -0800 |
---|---|---|
committer | Ta-wei Yen <twyen@google.com> | 2018-01-05 14:52:00 -0800 |
commit | 0c37d7518d22c34dc68a613b65a673c47f48f6a8 (patch) | |
tree | b5297f96812cee9d6234b628c1360203ac396580 /src/com/android/providers/contacts/DbModifierWithNotification.java | |
parent | 824e243907916013705b42a8566c26bf3a55266f (diff) | |
download | android_packages_providers_ContactsProvider-0c37d7518d22c34dc68a613b65a673c47f48f6a8.tar.gz android_packages_providers_ContactsProvider-0c37d7518d22c34dc68a613b65a673c47f48f6a8.tar.bz2 android_packages_providers_ContactsProvider-0c37d7518d22c34dc68a613b65a673c47f48f6a8.zip |
Don't update DIRTY flag when updating non-voicemail columns
Caching contact data should not cause an upload.
Fixes: 71605105
Test: VoicemailProviderTest
Change-Id: I9301c00ccb14580c5c20268a3e4bbe1f0bbb52f5
Diffstat (limited to 'src/com/android/providers/contacts/DbModifierWithNotification.java')
-rw-r--r-- | src/com/android/providers/contacts/DbModifierWithNotification.java | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/com/android/providers/contacts/DbModifierWithNotification.java b/src/com/android/providers/contacts/DbModifierWithNotification.java index 0babe1b9..05803391 100644 --- a/src/com/android/providers/contacts/DbModifierWithNotification.java +++ b/src/com/android/providers/contacts/DbModifierWithNotification.java @@ -167,7 +167,7 @@ public class DbModifierWithNotification implements DatabaseModifier { Set<String> packagesModified = getModifiedPackages(whereClause, whereArgs); packagesModified.addAll(getModifiedPackages(values)); - boolean isVoicemail = packagesModified.size() != 0; + boolean isVoicemail = packagesModified.size() != 0 && isUpdatingVoicemailColumns(values); boolean hasMarkedRead = false; if (mIsCallsTable) { @@ -189,13 +189,12 @@ public class DbModifierWithNotification implements DatabaseModifier { } } } - // updateDirtyFlag might remove the value and leave values empty. - if(values.isEmpty()){ - return 0; - } } } - + // updateDirtyFlag might remove the value and leave values empty. + if (values.isEmpty()) { + return 0; + } int count = mDb.update(table, values, whereClause, whereArgs); if (count > 0 && isVoicemail) { notifyVoicemailChange(mBaseUri, packagesModified); @@ -237,6 +236,15 @@ public class DbModifierWithNotification implements DatabaseModifier { return isDirty == 0; } + private boolean isUpdatingVoicemailColumns(ContentValues values) { + for (String key : values.keySet()) { + if (VoicemailContentTable.ALLOWED_COLUMNS.contains(key)) { + return true; + } + } + return false; + } + private void updateLastModified(String table, String whereClause, String[] whereArgs) { ContentValues values = new ContentValues(); values.put(Calls.LAST_MODIFIED, getTimeMillis()); |