1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Multiply-included message file, hence no include guard.
6#include <vector>
7
8#include "content/common/content_export.h"
9#include "ipc/ipc_message_macros.h"
10#include "ipc/ipc_param_traits.h"
11#include "url/gurl.h"
12
13#undef IPC_MESSAGE_EXPORT
14#define IPC_MESSAGE_EXPORT CONTENT_EXPORT
15#define IPC_MESSAGE_START SocketStreamMsgStart
16
17// Web Sockets messages sent from the renderer to the browser.
18
19// Open new Socket Stream for the |socket_url| identified by |socket_id|
20// in the renderer process.
21// The browser starts connecting asynchronously.
22// Once Socket Stream connection is established, the browser will send
23// SocketStreamMsg_Connected back.
24// |render_frame_id| must be the routing id of RenderFrameImpl to which the
25// Socket Stream belongs.
26IPC_MESSAGE_CONTROL3(SocketStreamHostMsg_Connect,
27                     int /* render_frame_id */,
28                     GURL /* socket_url */,
29                     int /* socket_id */)
30
31// Request to send data on the Socket Stream.
32// SocketStreamHandle can send data at most |max_pending_send_allowed| bytes,
33// which is given by ViewMsg_SocketStream_Connected at any time.
34// The number of pending bytes can be tracked by size of |data| sent
35// and |amount_sent| parameter of ViewMsg_SocketStream_DataSent.
36// That is, the following constraints is applied:
37//  (accumulated total of |data|) - (accumulated total of |amount_sent|)
38// <= |max_pending_send_allowed|
39// If the SocketStreamHandle ever tries to exceed the
40// |max_pending_send_allowed|, the connection will be closed.
41IPC_MESSAGE_CONTROL2(SocketStreamHostMsg_SendData,
42                     int /* socket_id */,
43                     std::vector<char> /* data */)
44
45// Request to close the Socket Stream.
46// The browser will send ViewMsg_SocketStream_Closed back when the Socket
47// Stream is completely closed.
48IPC_MESSAGE_CONTROL1(SocketStreamHostMsg_Close,
49                     int /* socket_id */)
50
51
52// Speech input messages sent from the browser to the renderer.
53
54// A |socket_id| is assigned by SocketStreamHostMsg_Connect.
55// The Socket Stream is connected. The SocketStreamHandle should keep track
56// of how much it has pending (how much it has requested to be sent) and
57// shouldn't go over |max_pending_send_allowed| bytes.
58IPC_MESSAGE_CONTROL2(SocketStreamMsg_Connected,
59                     int /* socket_id */,
60                     int /* max_pending_send_allowed */)
61
62// |data| is received on the Socket Stream.
63IPC_MESSAGE_CONTROL2(SocketStreamMsg_ReceivedData,
64                     int /* socket_id */,
65                     std::vector<char> /* data */)
66
67// |amount_sent| bytes of data requested by
68// SocketStreamHostMsg_SendData has been sent on the Socket Stream.
69IPC_MESSAGE_CONTROL2(SocketStreamMsg_SentData,
70                     int /* socket_id */,
71                     int /* amount_sent */)
72
73// The Socket Stream is closed.
74IPC_MESSAGE_CONTROL1(SocketStreamMsg_Closed,
75                     int /* socket_id */)
76
77// The Socket Stream is failed.
78IPC_MESSAGE_CONTROL2(SocketStreamMsg_Failed,
79                     int /* socket_id */,
80                     int /* error_code */)
81