Index: content/common/fileapi/webblob_messages.h |
diff --git a/content/common/fileapi/webblob_messages.h b/content/common/fileapi/webblob_messages.h |
index 3b22b7f588e9883626dce4866b72e73a0f3fcb53..c5bda1fc3a41aa3ee54820dd54d27ad9c86973b9 100644 |
--- a/content/common/fileapi/webblob_messages.h |
+++ b/content/common/fileapi/webblob_messages.h |
@@ -54,11 +54,18 @@ IPC_STRUCT_TRAITS_END() |
// * 'shortcut' transport the memory up to the IPC limit so the browser can use |
// it if it's not currently full. |
// See https://bit.ly/BlobStorageRefactor |
-IPC_MESSAGE_CONTROL4(BlobStorageMsg_RegisterBlob, |
- std::string /* uuid */, |
- std::string /* content_type */, |
- std::string /* content_disposition */, |
- std::vector<storage::DataElement> /* item_descriptions */) |
+// |
+// NOTE: This message is synchronous to ensure that the browser is aware of the |
+// UUID before the UUID is passed to another process. This protects against a |
+// race condition in which the browser could be asked about a UUID that doesn't |
+// yet exist from its perspective. See also https://goo.gl/bfdE64. |
+// |
+IPC_SYNC_MESSAGE_CONTROL4_0( |
+ BlobStorageMsg_RegisterBlob, |
+ std::string /* uuid */, |
+ std::string /* content_type */, |
+ std::string /* content_disposition */, |
+ std::vector<storage::DataElement> /* item_descriptions */) |
IPC_MESSAGE_CONTROL4( |
BlobStorageMsg_RequestMemoryItem, |