Chromium Code Reviews| Index: content/common/websocket_messages.h |
| diff --git a/content/common/websocket_messages.h b/content/common/websocket_messages.h |
| index e0af254960e62e89adb95258b5f209435c7bad31..91d23e398696812a8f35571ef4198a57b1435c34 100644 |
| --- a/content/common/websocket_messages.h |
| +++ b/content/common/websocket_messages.h |
| @@ -73,6 +73,23 @@ IPC_MESSAGE_ROUTED4(WebSocketHostMsg_AddChannelRequest, |
| url::Origin /* origin */, |
| int /* render_frame_id */) |
| +// Send a complete binary WebSocket message consisting of the Blob identified by |
| +// |uuid|. The message will be split into frames as necessary. |expected_size| |
| +// must match the browser's idea of the size of the Blob to prevent flow control |
| +// from becoming desynchronised. If it does not match the connection will be |
| +// terminated with a WebSocketMsg_NotifyFailure message. On success, the browser |
| +// will have consumed |expected_size| bytes of flow control send quota and the |
| +// renderer needs to subtract that from its running total of flow control send |
| +// quota. See the design doc at |
| +// https://docs.google.com/document/d/1CDiXB9pBumhFVVfmIn1CRI6v6byxyqWu2urEE9xp714/edit |
| +// SendFrame or SendBlob IPCs must not be sent by the renderer until the |
| +// BlobSendComplete message has been received from the browser. The renderer |
| +// should retain a reference to the Blob until either a BlobSendComplete or |
| +// NotifyFailure IPC is received. |
| +IPC_MESSAGE_ROUTED2(WebSocketHostMsg_SendBlob, |
| + std::string /* uuid */, |
| + uint64_t /* expected_size */) |
| + |
| // WebSocket messages sent from the browser to the renderer. |
| // Respond to an AddChannelRequest. |selected_protocol| is the sub-protocol the |
| @@ -111,6 +128,11 @@ IPC_MESSAGE_ROUTED1(WebSocketMsg_NotifyFinishOpeningHandshake, |
| IPC_MESSAGE_ROUTED1(WebSocketMsg_NotifyFailure, |
| std::string /* message */) |
| +// Indicates tbat the current Blob has finished sending. The renderer can |
| +// release its reference on the Blob, and may now use SendFrame or SendBlob to |
| +// send more messages. |
| +IPC_MESSAGE_ROUTED0(WebSocketMsg_BlobSendComplete); |
|
Nico
2016/02/08 19:03:55
please remove this trailing semicolon:
..\..\cont
Adam Rice
2016/02/09 06:18:58
Sorry about that. This was fixed by mbarbella in h
|
| + |
| // WebSocket messages that can be sent in either direction. |
| // Send a non-control frame to the channel. |
| @@ -136,6 +158,14 @@ IPC_MESSAGE_ROUTED3(WebSocketMsg_SendFrame, |
| // Both sides start a new channel with a quota of 0, and must wait for a |
| // FlowControl message before calling SendFrame. The total available quota on |
| // one side must never exceed 0x7FFFFFFFFFFFFFFF tokens. |
| +// |
| +// During "blob sending mode", ie. between the renderer sending a |
| +// WebSocketHostMsg_SendBlob IPC and receiving a WebSocketMsg_BlobSendComplete |
| +// IPC, quota is used up in the browser process to send the blob, but |
| +// FlowControl IPCs for that quota are still sent to the renderer. The render |
| +// process needs to take into account that quota equal to the size of the Blob |
| +// has already been used when calculating how much send quota it has left after |
| +// receiving BlobSendComplete. |
| IPC_MESSAGE_ROUTED1(WebSocketMsg_FlowControl, int64_t /* quota */) |
| // Drop the channel. |