summaryrefslogtreecommitdiffstats
path: root/ppapi/proxy
diff options
context:
space:
mode:
authorwez@chromium.org <wez@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-22 11:17:08 +0000
committerwez@chromium.org <wez@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-22 11:17:08 +0000
commit466a583aa3b19736c510b0c10d481eb3787a6c8c (patch)
tree9f9951426645a7e60fc1153bb78bdd32ba6ab45a /ppapi/proxy
parent6601b6d4374c6d7e3ef93ff7ab79eb040ae71c02 (diff)
downloadchromium_src-466a583aa3b19736c510b0c10d481eb3787a6c8c.zip
chromium_src-466a583aa3b19736c510b0c10d481eb3787a6c8c.tar.gz
chromium_src-466a583aa3b19736c510b0c10d481eb3787a6c8c.tar.bz2
Provide a way to disable Nagle's algorithm on Pepper TCP sockets.
This CL adds a SetSocketFeature() API to PPB_TCPSocket_Private, supporting one option, to control Nagle's algorithim on the underlying socket. BUG=170248 Review URL: https://chromiumcodereview.appspot.com/12220050 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@184087 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/proxy')
-rw-r--r--ppapi/proxy/ppapi_messages.h8
-rw-r--r--ppapi/proxy/ppb_tcp_socket_private_proxy.cc23
-rw-r--r--ppapi/proxy/ppb_tcp_socket_private_proxy.h3
3 files changed, 34 insertions, 0 deletions
diff --git a/ppapi/proxy/ppapi_messages.h b/ppapi/proxy/ppapi_messages.h
index e1d496a..f27c803 100644
--- a/ppapi/proxy/ppapi_messages.h
+++ b/ppapi/proxy/ppapi_messages.h
@@ -674,6 +674,10 @@ IPC_MESSAGE_ROUTED4(PpapiMsg_PPBTCPSocket_WriteACK,
uint32 /* socket_id */,
bool /* succeeded */,
int32_t /* bytes_written */)
+IPC_MESSAGE_ROUTED3(PpapiMsg_PPBTCPSocket_SetBoolOptionACK,
+ uint32 /* plugin_dispatcher_id */,
+ uint32 /* socket_id */,
+ bool /* succeeded */)
// PPB_URLLoader_Trusted
IPC_MESSAGE_ROUTED1(
@@ -1200,6 +1204,10 @@ IPC_MESSAGE_CONTROL2(PpapiHostMsg_PPBTCPSocket_Write,
std::string /* data */)
IPC_MESSAGE_CONTROL1(PpapiHostMsg_PPBTCPSocket_Disconnect,
uint32 /* socket_id */)
+IPC_MESSAGE_CONTROL3(PpapiHostMsg_PPBTCPSocket_SetBoolOption,
+ uint32 /* socket_id */,
+ uint32 /* name */,
+ bool /* value */)
// UDPSocketPrivate.
IPC_MESSAGE_CONTROL0(PpapiHostMsg_UDPSocketPrivate_Create)
diff --git a/ppapi/proxy/ppb_tcp_socket_private_proxy.cc b/ppapi/proxy/ppb_tcp_socket_private_proxy.cc
index 7f11b28..7f7fb78 100644
--- a/ppapi/proxy/ppb_tcp_socket_private_proxy.cc
+++ b/ppapi/proxy/ppb_tcp_socket_private_proxy.cc
@@ -46,6 +46,8 @@ class TCPSocket : public TCPSocketPrivateImpl {
virtual void SendRead(int32_t bytes_to_read) OVERRIDE;
virtual void SendWrite(const std::string& buffer) OVERRIDE;
virtual void SendDisconnect() OVERRIDE;
+ virtual void SendSetBoolOption(PP_TCPSocketOption_Private name,
+ bool value) OVERRIDE;
private:
void SendToBrowser(IPC::Message* msg);
@@ -116,6 +118,11 @@ void TCPSocket::SendDisconnect() {
SendToBrowser(new PpapiHostMsg_PPBTCPSocket_Disconnect(socket_id_));
}
+void TCPSocket::SendSetBoolOption(PP_TCPSocketOption_Private name, bool value) {
+ SendToBrowser(
+ new PpapiHostMsg_PPBTCPSocket_SetBoolOption(socket_id_, name, value));
+}
+
void TCPSocket::SendToBrowser(IPC::Message* msg) {
PluginGlobals::Get()->GetBrowserSender()->Send(msg);
}
@@ -170,6 +177,8 @@ bool PPB_TCPSocket_Private_Proxy::OnMessageReceived(const IPC::Message& msg) {
OnMsgSSLHandshakeACK)
IPC_MESSAGE_HANDLER(PpapiMsg_PPBTCPSocket_ReadACK, OnMsgReadACK)
IPC_MESSAGE_HANDLER(PpapiMsg_PPBTCPSocket_WriteACK, OnMsgWriteACK)
+ IPC_MESSAGE_HANDLER(PpapiMsg_PPBTCPSocket_SetBoolOptionACK,
+ OnMsgSetBoolOptionACK)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
return handled;
@@ -236,5 +245,19 @@ void PPB_TCPSocket_Private_Proxy::OnMsgWriteACK(
iter->second->OnWriteCompleted(succeeded, bytes_written);
}
+void PPB_TCPSocket_Private_Proxy::OnMsgSetBoolOptionACK(
+ uint32 /* plugin_dispatcher_id */,
+ uint32 socket_id,
+ bool succeeded) {
+ if (!g_id_to_socket) {
+ NOTREACHED();
+ return;
+ }
+ IDToSocketMap::iterator iter = g_id_to_socket->find(socket_id);
+ if (iter == g_id_to_socket->end())
+ return;
+ iter->second->OnSetOptionCompleted(succeeded);
+}
+
} // namespace proxy
} // namespace ppapi
diff --git a/ppapi/proxy/ppb_tcp_socket_private_proxy.h b/ppapi/proxy/ppb_tcp_socket_private_proxy.h
index 4667216..ffceca7 100644
--- a/ppapi/proxy/ppb_tcp_socket_private_proxy.h
+++ b/ppapi/proxy/ppb_tcp_socket_private_proxy.h
@@ -57,6 +57,9 @@ class PPB_TCPSocket_Private_Proxy : public InterfaceProxy {
uint32 socket_id,
bool succeeded,
int32_t bytes_written);
+ void OnMsgSetBoolOptionACK(uint32 plugin_dispatcher_id,
+ uint32 socket_id,
+ bool succeeded);
DISALLOW_COPY_AND_ASSIGN(PPB_TCPSocket_Private_Proxy);
};