Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(916)

Unified Diff: content/browser/renderer_host/pepper/pepper_tcp_socket.cc

Issue 12220050: Provide a way to disable Nagle's algorithm on Pepper TCP sockets. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Actually export v0.5 interface, and add thunk for it. Fix unit-test and add missing IsConnected che… Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/renderer_host/pepper/pepper_tcp_socket.cc
diff --git a/content/browser/renderer_host/pepper/pepper_tcp_socket.cc b/content/browser/renderer_host/pepper/pepper_tcp_socket.cc
index 61ccdc2bafe5157b81294c6ad642c303292678b0..e397d2a56accc69eaabec67d113580a4f74c5edb 100644
--- a/content/browser/renderer_host/pepper/pepper_tcp_socket.cc
+++ b/content/browser/renderer_host/pepper/pepper_tcp_socket.cc
@@ -196,11 +196,33 @@ void PepperTCPSocket::Write(const std::string& data) {
DoWrite();
}
+void PepperTCPSocket::SetBoolOption(uint32_t name, bool value) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+ DCHECK(socket_.get());
+
+ switch (static_cast<PP_TCPSocketOption_Private>(name)) {
+ case PP_TCPSOCKETOPTION_NO_DELAY:
+ if (!IsSsl()) {
+ net::TCPClientSocket* tcp_socket =
+ static_cast<net::TCPClientSocket*>(socket_.get());
+ SendSetBoolOptionACK(tcp_socket->SetNoDelay(value));
+ } else {
+ SendSetBoolOptionACK(false);
+ }
+ return;
+ default:
+ break;
+ }
+
+ NOTREACHED();
+ SendSetBoolOptionACK(false);
+}
+
void PepperTCPSocket::StartConnect(const net::AddressList& addresses) {
DCHECK(connection_state_ == CONNECT_IN_PROGRESS);
- socket_.reset(
- new net::TCPClientSocket(addresses, NULL, net::NetLog::Source()));
+ socket_.reset(new net::TCPClientSocket(addresses, NULL,
+ net::NetLog::Source()));
int result = socket_->Connect(
base::Bind(&PepperTCPSocket::OnConnectCompleted,
base::Unretained(this)));
@@ -303,6 +325,11 @@ void PepperTCPSocket::SendSSLHandshakeACK(bool succeeded) {
certificate_fields));
}
+void PepperTCPSocket::SendSetBoolOptionACK(bool succeeded) {
+ manager_->Send(new PpapiMsg_PPBTCPSocket_SetBoolOptionACK(
+ routing_id_, plugin_dispatcher_id_, socket_id_, succeeded));
+}
+
void PepperTCPSocket::OnResolveCompleted(int result) {
DCHECK(connection_state_ == CONNECT_IN_PROGRESS);
@@ -405,6 +432,12 @@ bool PepperTCPSocket::IsConnected() const {
return connection_state_ == CONNECTED || connection_state_ == SSL_CONNECTED;
}
+bool PepperTCPSocket::IsSsl() const {
+ return connection_state_ == SSL_HANDSHAKE_IN_PROGRESS ||
+ connection_state_ == SSL_CONNECTED ||
+ connection_state_ == SSL_HANDSHAKE_FAILED;
+}
+
void PepperTCPSocket::DoWrite() {
DCHECK(write_buffer_base_.get());
DCHECK(write_buffer_.get());

Powered by Google App Engine
This is Rietveld 408576698