15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Multiply-included message file, hence no include guard.
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector>
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/content_export.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ipc/ipc_message_macros.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ipc/ipc_param_traits.h"
117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "url/gurl.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef IPC_MESSAGE_EXPORT
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define IPC_MESSAGE_EXPORT CONTENT_EXPORT
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define IPC_MESSAGE_START SocketStreamMsgStart
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Web Sockets messages sent from the renderer to the browser.
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Open new Socket Stream for the |socket_url| identified by |socket_id|
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// in the renderer process.
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The browser starts connecting asynchronously.
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Once Socket Stream connection is established, the browser will send
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// SocketStreamMsg_Connected back.
245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// |render_frame_id| must be the routing id of RenderFrameImpl to which the
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Socket Stream belongs.
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL3(SocketStreamHostMsg_Connect,
275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                     int /* render_frame_id */,
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     GURL /* socket_url */,
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     int /* socket_id */)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Request to send data on the Socket Stream.
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// SocketStreamHandle can send data at most |max_pending_send_allowed| bytes,
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// which is given by ViewMsg_SocketStream_Connected at any time.
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The number of pending bytes can be tracked by size of |data| sent
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// and |amount_sent| parameter of ViewMsg_SocketStream_DataSent.
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// That is, the following constraints is applied:
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//  (accumulated total of |data|) - (accumulated total of |amount_sent|)
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// <= |max_pending_send_allowed|
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// If the SocketStreamHandle ever tries to exceed the
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// |max_pending_send_allowed|, the connection will be closed.
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL2(SocketStreamHostMsg_SendData,
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     int /* socket_id */,
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     std::vector<char> /* data */)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Request to close the Socket Stream.
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The browser will send ViewMsg_SocketStream_Closed back when the Socket
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Stream is completely closed.
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL1(SocketStreamHostMsg_Close,
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     int /* socket_id */)
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Speech input messages sent from the browser to the renderer.
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// A |socket_id| is assigned by SocketStreamHostMsg_Connect.
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The Socket Stream is connected. The SocketStreamHandle should keep track
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// of how much it has pending (how much it has requested to be sent) and
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// shouldn't go over |max_pending_send_allowed| bytes.
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL2(SocketStreamMsg_Connected,
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     int /* socket_id */,
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     int /* max_pending_send_allowed */)
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// |data| is received on the Socket Stream.
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL2(SocketStreamMsg_ReceivedData,
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     int /* socket_id */,
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     std::vector<char> /* data */)
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// |amount_sent| bytes of data requested by
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// SocketStreamHostMsg_SendData has been sent on the Socket Stream.
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL2(SocketStreamMsg_SentData,
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     int /* socket_id */,
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     int /* amount_sent */)
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The Socket Stream is closed.
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL1(SocketStreamMsg_Closed,
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     int /* socket_id */)
76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// The Socket Stream is failed.
78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IPC_MESSAGE_CONTROL2(SocketStreamMsg_Failed,
79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                     int /* socket_id */,
80c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                     int /* error_code */)
81