aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNancy Chen <nancychen@google.com>2015-06-19 17:42:21 -0700
committerNancy Chen <nancychen@google.com>2015-06-23 12:02:32 -0700
commit5c466282ff1ebecb37c93dcb6d6ccfc845330e65 (patch)
tree77b57450152007a18536377c97368ac754769475
parent876a6a921e532b6c1ca653e4c52c1819a75ff3be (diff)
downloadContactsProvider-5c466282ff1ebecb37c93dcb6d6ccfc845330e65.tar.gz
Fix read voicemails being marked as "new".
Originally was comparing content values with "1" but some other sources use "true", check for boolean value instead of integer value. Bug: 21281858 Change-Id: I0124311ba7343826d094c621e6b2899053d6dabf
-rw-r--r--src/com/android/providers/contacts/VoicemailContentTable.java2
-rw-r--r--tests/src/com/android/providers/contacts/VoicemailProviderTest.java28
2 files changed, 29 insertions, 1 deletions
diff --git a/src/com/android/providers/contacts/VoicemailContentTable.java b/src/com/android/providers/contacts/VoicemailContentTable.java
index 87a23495..5cf1f355 100644
--- a/src/com/android/providers/contacts/VoicemailContentTable.java
+++ b/src/com/android/providers/contacts/VoicemailContentTable.java
@@ -142,7 +142,7 @@ public class VoicemailContentTable implements VoicemailTable.Delegate {
copiedValues.put(Calls.TYPE, Calls.VOICEMAIL_TYPE);
// A voicemail is marked as new unless it is marked as read or explicitly overridden.
boolean isRead = values.containsKey(Calls.IS_READ) ?
- values.get(Calls.IS_READ).equals(1) : false;
+ values.getAsBoolean(Calls.IS_READ) : false;
if (!values.containsKey(Calls.NEW)) {
copiedValues.put(Calls.NEW, !isRead);
}
diff --git a/tests/src/com/android/providers/contacts/VoicemailProviderTest.java b/tests/src/com/android/providers/contacts/VoicemailProviderTest.java
index dc4335c4..aa35b7a1 100644
--- a/tests/src/com/android/providers/contacts/VoicemailProviderTest.java
+++ b/tests/src/com/android/providers/contacts/VoicemailProviderTest.java
@@ -88,6 +88,28 @@ public class VoicemailProviderTest extends BaseVoicemailProviderTest {
assertEquals(1, countFilesInTestDirectory());
}
+ public void testInsertReadMessageIsNotNew() throws Exception {
+ ContentValues values = getTestReadVoicemailValues();
+ Uri uri = mResolver.insert(voicemailUri(), values);
+ String[] projection = {Voicemails.NUMBER, Voicemails.DATE, Voicemails.DURATION,
+ Voicemails.TRANSCRIPTION, Voicemails.IS_READ, Voicemails.HAS_CONTENT,
+ Voicemails.SOURCE_DATA, Voicemails.STATE,
+ };
+ Cursor c = mResolver.query(uri, projection, Calls.NEW + "=0", null,
+ null);
+ try {
+ assertEquals("Record count", 1, c.getCount());
+ c.moveToFirst();
+ assertEquals(1, countFilesInTestDirectory());
+ assertCursorValues(c, values);
+ } catch (Error e) {
+ TestUtils.dumpCursor(c);
+ throw e;
+ } finally {
+ c.close();
+ }
+ }
+
// Test to ensure that media content can be written and read back.
public void testFileContent() throws Exception {
Uri uri = insertVoicemail();
@@ -673,6 +695,12 @@ public class VoicemailProviderTest extends BaseVoicemailProviderTest {
return values;
}
+ private ContentValues getTestReadVoicemailValues() {
+ ContentValues values = getTestVoicemailValues();
+ values.put(Voicemails.IS_READ, 1);
+ return values;
+ }
+
private Uri insertTestStatusEntry() {
return mResolver.insert(statusUri(), getTestStatusValues());
}