summaryrefslogtreecommitdiffstats
path: root/src/com/android/providers/contacts/DbModifierWithNotification.java
diff options
context:
space:
mode:
authorTa-wei Yen <twyen@google.com>2018-01-05 14:51:01 -0800
committerTa-wei Yen <twyen@google.com>2018-01-05 14:52:00 -0800
commit0c37d7518d22c34dc68a613b65a673c47f48f6a8 (patch)
treeb5297f96812cee9d6234b628c1360203ac396580 /src/com/android/providers/contacts/DbModifierWithNotification.java
parent824e243907916013705b42a8566c26bf3a55266f (diff)
downloadandroid_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.java20
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());