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: