Snap for 4821244 from 8c892903f8eac55db45cdbf232ec7c2bc697ff48 to pi-release
Change-Id: Ib5920f8b5e1cbb9012b5cbb82c6cd6123da4ca37
diff --git a/src/com/android/providers/contacts/DbModifierWithNotification.java b/src/com/android/providers/contacts/DbModifierWithNotification.java
index 0580339..852301d 100644
--- a/src/com/android/providers/contacts/DbModifierWithNotification.java
+++ b/src/com/android/providers/contacts/DbModifierWithNotification.java
@@ -167,7 +167,8 @@
Set<String> packagesModified = getModifiedPackages(whereClause, whereArgs);
packagesModified.addAll(getModifiedPackages(values));
- boolean isVoicemail = packagesModified.size() != 0 && isUpdatingVoicemailColumns(values);
+ boolean isVoicemailContent =
+ packagesModified.size() != 0 && isUpdatingVoicemailColumns(values);
boolean hasMarkedRead = false;
if (mIsCallsTable) {
@@ -177,7 +178,7 @@
} else {
updateLastModified(table, whereClause, whereArgs);
}
- if (isVoicemail) {
+ if (isVoicemailContent) {
if (updateDirtyFlag(values, packagesModified)) {
if (values.containsKey(Calls.IS_READ)
&& getAsBoolean(values,
@@ -196,7 +197,7 @@
return 0;
}
int count = mDb.update(table, values, whereClause, whereArgs);
- if (count > 0 && isVoicemail) {
+ if (count > 0 && isVoicemailContent || Tables.VOICEMAIL_STATUS.equals(table)) {
notifyVoicemailChange(mBaseUri, packagesModified);
}
if (count > 0 && mIsCallsTable) {
diff --git a/tests/src/com/android/providers/contacts/VoicemailProviderTest.java b/tests/src/com/android/providers/contacts/VoicemailProviderTest.java
index 9f9ef00..d20b9b3 100644
--- a/tests/src/com/android/providers/contacts/VoicemailProviderTest.java
+++ b/tests/src/com/android/providers/contacts/VoicemailProviderTest.java
@@ -21,8 +21,10 @@
import android.content.ContentUris;
import android.content.ContentValues;
+import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
+import android.os.Handler;
import android.os.ParcelFileDescriptor;
import android.os.Process;
import android.provider.CallLog;
@@ -739,6 +741,28 @@
assertStoredValues(uri, values);
}
+ public void testStatusUpdate_observerNotified() throws Exception {
+ Uri uri = insertTestStatusEntry();
+ ContentValues values = getTestStatusValues();
+ values.put(Status.DATA_CHANNEL_STATE, Status.DATA_CHANNEL_STATE_NO_CONNECTION);
+ values.put(Status.NOTIFICATION_CHANNEL_STATE,
+ Status.NOTIFICATION_CHANNEL_STATE_MESSAGE_WAITING);
+ values.put(Status.SOURCE_TYPE,
+ "vvm_type_test2");
+ Boolean[] observerTriggered = new Boolean[]{false};
+ mResolver.registerContentObserver(Status.CONTENT_URI, true,
+ new ContentObserver(new Handler()) {
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ observerTriggered[0] = true;
+ }
+ });
+
+ mResolver.update(uri, values, null, null);
+
+ assertTrue(observerTriggered[0]);
+ }
+
public void testStatusUpsert() throws Exception {
ContentValues values = getTestStatusValues();
mResolver.insert(statusUri(), values);