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..2d1caf26034b16bea21eaaa072fbaf3d59c38c05 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, |
@@ -80,9 +87,13 @@ IPC_MESSAGE_CONTROL1(BlobHostMsg_IncrementRefCount, |
std::string /* uuid */) |
IPC_MESSAGE_CONTROL1(BlobHostMsg_DecrementRefCount, |
std::string /* uuid */) |
-IPC_MESSAGE_CONTROL2(BlobHostMsg_RegisterPublicURL, |
- GURL, |
- std::string /* uuid */) |
+// 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_CONTROL2_0(BlobHostMsg_RegisterPublicURL, |
+ GURL, |
+ std::string /* uuid */) |
IPC_MESSAGE_CONTROL1(BlobHostMsg_RevokePublicURL, |
GURL) |