camera2 api: marshal rect, size, string for metadata

Change-Id: Iec2fd823bc92394da44abb32ca38a625d7638e3d
diff --git a/core/jni/android_hardware_photography_CameraMetadata.cpp b/core/jni/android_hardware_photography_CameraMetadata.cpp
index 5070d2c..5190a37 100644
--- a/core/jni/android_hardware_photography_CameraMetadata.cpp
+++ b/core/jni/android_hardware_photography_CameraMetadata.cpp
@@ -267,7 +267,13 @@
 
     if (src == NULL) {
         // If array is NULL, delete the entry
-        res = metadata->erase(tag);
+        if (metadata->exists(tag)) {
+            res = metadata->erase(tag);
+            ALOGV("%s: Erase values (res = %d)", __FUNCTION__, res);
+        } else {
+            res = OK;
+            ALOGV("%s: Don't need to erase", __FUNCTION__);
+        }
     } else {
         // Copy from java array into native array
         ScopedByteArrayRO arrayReader(env, src);
@@ -275,6 +281,8 @@
 
         res = Helpers::updateAny(metadata, static_cast<uint32_t>(tag),
                                  tagType, arrayReader.get(), arrayReader.size());
+
+        ALOGV("%s: Update values (res = %d)", __FUNCTION__, res);
     }
 
     if (res == OK) {