Treat updates into non-existent body rows as inserts.
Bug: 11245727
Change-Id: I648b0267e9149f3f431ce01be9789087f73edab1
diff --git a/emailcommon/src/com/android/emailcommon/provider/EmailContent.java b/emailcommon/src/com/android/emailcommon/provider/EmailContent.java
index cd6db26..89e7303 100755
--- a/emailcommon/src/com/android/emailcommon/provider/EmailContent.java
+++ b/emailcommon/src/com/android/emailcommon/provider/EmailContent.java
@@ -314,6 +314,8 @@
public static final class Body extends EmailContent implements BodyColumns {
public static final String TABLE_NAME = "Body";
+ public static final String SELECTION_BY_MESSAGE_KEY = MESSAGE_KEY + "=?";
+
public static Uri CONTENT_URI;
public static void initBody() {
diff --git a/src/com/android/email/provider/EmailProvider.java b/src/com/android/email/provider/EmailProvider.java
index a9bdbff..644d745 100644
--- a/src/com/android/email/provider/EmailProvider.java
+++ b/src/com/android/email/provider/EmailProvider.java
@@ -1857,6 +1857,16 @@
}
break;
case BODY:
+ result = db.update(tableName, values, selection, selectionArgs);
+ if (result == 0 && selection.equals(Body.SELECTION_BY_MESSAGE_KEY)) {
+ // TODO: This is a hack. Notably, the selection equality test above
+ // is hokey at best.
+ LogUtils.i(TAG, "Body Update to non-existent row, morphing to insert");
+ final ContentValues insertValues = new ContentValues(values);
+ insertValues.put(EmailContent.Body.MESSAGE_KEY, selectionArgs[0]);
+ insert(EmailContent.Body.CONTENT_URI, insertValues);
+ }
+ break;
case MESSAGE:
case UPDATED_MESSAGE:
case ATTACHMENT: