summaryrefslogtreecommitdiffstats
path: root/chromium/content/browser/renderer_host/pepper/pepper_tcp_socket.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/browser/renderer_host/pepper/pepper_tcp_socket.cc')
-rw-r--r--chromium/content/browser/renderer_host/pepper/pepper_tcp_socket.cc159
1 files changed, 86 insertions, 73 deletions
diff --git a/chromium/content/browser/renderer_host/pepper/pepper_tcp_socket.cc b/chromium/content/browser/renderer_host/pepper/pepper_tcp_socket.cc
index c5b752aa7f5..474a2fd6bd5 100644
--- a/chromium/content/browser/renderer_host/pepper/pepper_tcp_socket.cc
+++ b/chromium/content/browser/renderer_host/pepper/pepper_tcp_socket.cc
@@ -37,12 +37,11 @@ using ppapi::NetAddressPrivateImpl;
namespace content {
-PepperTCPSocket::PepperTCPSocket(
- PepperMessageFilter* manager,
- int32 routing_id,
- uint32 plugin_dispatcher_id,
- uint32 socket_id,
- bool private_api)
+PepperTCPSocket::PepperTCPSocket(PepperMessageFilter* manager,
+ int32 routing_id,
+ uint32 plugin_dispatcher_id,
+ uint32 socket_id,
+ bool private_api)
: manager_(manager),
routing_id_(routing_id),
plugin_dispatcher_id_(plugin_dispatcher_id),
@@ -53,13 +52,12 @@ PepperTCPSocket::PepperTCPSocket(
DCHECK(manager);
}
-PepperTCPSocket::PepperTCPSocket(
- PepperMessageFilter* manager,
- int32 routing_id,
- uint32 plugin_dispatcher_id,
- uint32 socket_id,
- net::StreamSocket* socket,
- bool private_api)
+PepperTCPSocket::PepperTCPSocket(PepperMessageFilter* manager,
+ int32 routing_id,
+ uint32 plugin_dispatcher_id,
+ uint32 socket_id,
+ net::StreamSocket* socket,
+ bool private_api)
: manager_(manager),
routing_id_(routing_id),
plugin_dispatcher_id_(plugin_dispatcher_id),
@@ -78,7 +76,7 @@ PepperTCPSocket::~PepperTCPSocket() {
}
void PepperTCPSocket::Connect(const std::string& host, uint16_t port) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+ DCHECK_CURRENTLY_ON(BrowserThread::IO);
if (connection_state_ != BEFORE_CONNECT) {
SendConnectACKError(PP_ERROR_FAILED);
@@ -101,7 +99,7 @@ void PepperTCPSocket::Connect(const std::string& host, uint16_t port) {
void PepperTCPSocket::ConnectWithNetAddress(
const PP_NetAddress_Private& net_addr) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+ DCHECK_CURRENTLY_ON(BrowserThread::IO);
if (connection_state_ != BEFORE_CONNECT) {
SendConnectACKError(PP_ERROR_FAILED);
@@ -110,8 +108,8 @@ void PepperTCPSocket::ConnectWithNetAddress(
net::IPAddressNumber address;
int port;
- if (!NetAddressPrivateImpl::NetAddressToIPEndPoint(net_addr, &address,
- &port)) {
+ if (!NetAddressPrivateImpl::NetAddressToIPEndPoint(
+ net_addr, &address, &port)) {
SendConnectACKError(PP_ERROR_ADDRESS_INVALID);
return;
}
@@ -128,7 +126,7 @@ void PepperTCPSocket::SSLHandshake(
uint16_t server_port,
const std::vector<std::vector<char> >& trusted_certs,
const std::vector<std::vector<char> >& untrusted_certs) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+ DCHECK_CURRENTLY_ON(BrowserThread::IO);
// Allow to do SSL handshake only if currently the socket has been connected
// and there isn't pending read or write.
@@ -159,15 +157,14 @@ void PepperTCPSocket::SSLHandshake(
return;
}
- int net_result = socket_->Connect(
- base::Bind(&PepperTCPSocket::OnSSLHandshakeCompleted,
- base::Unretained(this)));
+ int net_result = socket_->Connect(base::Bind(
+ &PepperTCPSocket::OnSSLHandshakeCompleted, base::Unretained(this)));
if (net_result != net::ERR_IO_PENDING)
OnSSLHandshakeCompleted(net_result);
}
void PepperTCPSocket::Read(int32 bytes_to_read) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+ DCHECK_CURRENTLY_ON(BrowserThread::IO);
if (!IsConnected() || end_of_file_reached_) {
SendReadACKError(PP_ERROR_FAILED);
@@ -195,7 +192,7 @@ void PepperTCPSocket::Read(int32 bytes_to_read) {
}
void PepperTCPSocket::Write(const std::string& data) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+ DCHECK_CURRENTLY_ON(BrowserThread::IO);
if (!IsConnected()) {
SendWriteACKError(PP_ERROR_FAILED);
@@ -223,7 +220,7 @@ void PepperTCPSocket::Write(const std::string& data) {
void PepperTCPSocket::SetOption(PP_TCPSocket_Option name,
const ppapi::SocketOptionData& value) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+ DCHECK_CURRENTLY_ON(BrowserThread::IO);
if (!IsConnected() || IsSsl()) {
SendSetOptionACK(PP_ERROR_FAILED);
@@ -242,8 +239,8 @@ void PepperTCPSocket::SetOption(PP_TCPSocket_Option name,
return;
}
- SendSetOptionACK(
- tcp_socket->SetNoDelay(boolean_value) ? PP_OK : PP_ERROR_FAILED);
+ SendSetOptionACK(tcp_socket->SetNoDelay(boolean_value) ? PP_OK
+ : PP_ERROR_FAILED);
return;
}
case PP_TCPSOCKET_OPTION_SEND_BUFFER_SIZE:
@@ -254,21 +251,22 @@ void PepperTCPSocket::SetOption(PP_TCPSocket_Option name,
return;
}
- bool result = false;
+ int net_result = net::OK;
if (name == PP_TCPSOCKET_OPTION_SEND_BUFFER_SIZE) {
if (integer_value > ppapi::TCPSocketShared::kMaxSendBufferSize) {
SendSetOptionACK(PP_ERROR_BADARGUMENT);
return;
}
- result = tcp_socket->SetSendBufferSize(integer_value);
+ net_result = tcp_socket->SetSendBufferSize(integer_value);
} else {
if (integer_value > ppapi::TCPSocketShared::kMaxReceiveBufferSize) {
SendSetOptionACK(PP_ERROR_BADARGUMENT);
return;
}
- result = tcp_socket->SetReceiveBufferSize(integer_value);
+ net_result = tcp_socket->SetReceiveBufferSize(integer_value);
}
- SendSetOptionACK(result ? PP_OK : PP_ERROR_FAILED);
+ // TODO(wtc): Add error mapping.
+ SendSetOptionACK((net_result == net::OK) ? PP_OK : PP_ERROR_FAILED);
return;
}
default: {
@@ -282,18 +280,20 @@ void PepperTCPSocket::SetOption(PP_TCPSocket_Option name,
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 net_result = socket_->Connect(
- base::Bind(&PepperTCPSocket::OnConnectCompleted,
- base::Unretained(this)));
+ base::Bind(&PepperTCPSocket::OnConnectCompleted, base::Unretained(this)));
if (net_result != net::ERR_IO_PENDING)
OnConnectCompleted(net_result);
}
void PepperTCPSocket::SendConnectACKError(int32_t error) {
manager_->Send(new PpapiMsg_PPBTCPSocket_ConnectACK(
- routing_id_, plugin_dispatcher_id_, socket_id_, error,
+ routing_id_,
+ plugin_dispatcher_id_,
+ socket_id_,
+ error,
NetAddressPrivateImpl::kInvalidNetAddress,
NetAddressPrivateImpl::kInvalidNetAddress));
}
@@ -304,43 +304,48 @@ bool PepperTCPSocket::GetCertificateFields(
ppapi::PPB_X509Certificate_Fields* fields) {
const net::CertPrincipal& issuer = cert.issuer();
fields->SetField(PP_X509CERTIFICATE_PRIVATE_ISSUER_COMMON_NAME,
- new base::StringValue(issuer.common_name));
+ new base::StringValue(issuer.common_name));
fields->SetField(PP_X509CERTIFICATE_PRIVATE_ISSUER_LOCALITY_NAME,
- new base::StringValue(issuer.locality_name));
+ new base::StringValue(issuer.locality_name));
fields->SetField(PP_X509CERTIFICATE_PRIVATE_ISSUER_STATE_OR_PROVINCE_NAME,
- new base::StringValue(issuer.state_or_province_name));
+ new base::StringValue(issuer.state_or_province_name));
fields->SetField(PP_X509CERTIFICATE_PRIVATE_ISSUER_COUNTRY_NAME,
- new base::StringValue(issuer.country_name));
- fields->SetField(PP_X509CERTIFICATE_PRIVATE_ISSUER_ORGANIZATION_NAME,
+ new base::StringValue(issuer.country_name));
+ fields->SetField(
+ PP_X509CERTIFICATE_PRIVATE_ISSUER_ORGANIZATION_NAME,
new base::StringValue(JoinString(issuer.organization_names, '\n')));
- fields->SetField(PP_X509CERTIFICATE_PRIVATE_ISSUER_ORGANIZATION_UNIT_NAME,
+ fields->SetField(
+ PP_X509CERTIFICATE_PRIVATE_ISSUER_ORGANIZATION_UNIT_NAME,
new base::StringValue(JoinString(issuer.organization_unit_names, '\n')));
const net::CertPrincipal& subject = cert.subject();
fields->SetField(PP_X509CERTIFICATE_PRIVATE_SUBJECT_COMMON_NAME,
- new base::StringValue(subject.common_name));
+ new base::StringValue(subject.common_name));
fields->SetField(PP_X509CERTIFICATE_PRIVATE_SUBJECT_LOCALITY_NAME,
- new base::StringValue(subject.locality_name));
+ new base::StringValue(subject.locality_name));
fields->SetField(PP_X509CERTIFICATE_PRIVATE_SUBJECT_STATE_OR_PROVINCE_NAME,
- new base::StringValue(subject.state_or_province_name));
+ new base::StringValue(subject.state_or_province_name));
fields->SetField(PP_X509CERTIFICATE_PRIVATE_SUBJECT_COUNTRY_NAME,
- new base::StringValue(subject.country_name));
- fields->SetField(PP_X509CERTIFICATE_PRIVATE_SUBJECT_ORGANIZATION_NAME,
+ new base::StringValue(subject.country_name));
+ fields->SetField(
+ PP_X509CERTIFICATE_PRIVATE_SUBJECT_ORGANIZATION_NAME,
new base::StringValue(JoinString(subject.organization_names, '\n')));
- fields->SetField(PP_X509CERTIFICATE_PRIVATE_SUBJECT_ORGANIZATION_UNIT_NAME,
+ fields->SetField(
+ PP_X509CERTIFICATE_PRIVATE_SUBJECT_ORGANIZATION_UNIT_NAME,
new base::StringValue(JoinString(subject.organization_unit_names, '\n')));
const std::string& serial_number = cert.serial_number();
fields->SetField(PP_X509CERTIFICATE_PRIVATE_SERIAL_NUMBER,
- base::BinaryValue::CreateWithCopiedBuffer(serial_number.data(),
- serial_number.length()));
+ base::BinaryValue::CreateWithCopiedBuffer(
+ serial_number.data(), serial_number.length()));
fields->SetField(PP_X509CERTIFICATE_PRIVATE_VALIDITY_NOT_BEFORE,
- new base::FundamentalValue(cert.valid_start().ToDoubleT()));
+ new base::FundamentalValue(cert.valid_start().ToDoubleT()));
fields->SetField(PP_X509CERTIFICATE_PRIVATE_VALIDITY_NOT_AFTER,
- new base::FundamentalValue(cert.valid_expiry().ToDoubleT()));
+ new base::FundamentalValue(cert.valid_expiry().ToDoubleT()));
std::string der;
net::X509Certificate::GetDEREncoded(cert.os_cert_handle(), &der);
- fields->SetField(PP_X509CERTIFICATE_PRIVATE_RAW,
+ fields->SetField(
+ PP_X509CERTIFICATE_PRIVATE_RAW,
base::BinaryValue::CreateWithCopiedBuffer(der.data(), der.length()));
return true;
}
@@ -359,7 +364,7 @@ bool PepperTCPSocket::GetCertificateFields(
void PepperTCPSocket::SendReadACKError(int32_t error) {
manager_->Send(new PpapiMsg_PPBTCPSocket_ReadACK(
- routing_id_, plugin_dispatcher_id_, socket_id_, error, std::string()));
+ routing_id_, plugin_dispatcher_id_, socket_id_, error, std::string()));
}
void PepperTCPSocket::SendWriteACKError(int32_t error) {
@@ -379,12 +384,12 @@ void PepperTCPSocket::SendSSLHandshakeACK(bool succeeded) {
if (ssl_info.cert.get())
GetCertificateFields(*ssl_info.cert.get(), &certificate_fields);
}
- manager_->Send(new PpapiMsg_PPBTCPSocket_SSLHandshakeACK(
- routing_id_,
- plugin_dispatcher_id_,
- socket_id_,
- succeeded,
- certificate_fields));
+ manager_->Send(
+ new PpapiMsg_PPBTCPSocket_SSLHandshakeACK(routing_id_,
+ plugin_dispatcher_id_,
+ socket_id_,
+ succeeded,
+ certificate_fields));
}
void PepperTCPSocket::SendSetOptionACK(int32_t result) {
@@ -414,12 +419,12 @@ void PepperTCPSocket::OnConnectCompleted(int net_result) {
net::IPEndPoint ip_end_point_local;
net::IPEndPoint ip_end_point_remote;
- pp_result = NetErrorToPepperError(
- socket_->GetLocalAddress(&ip_end_point_local));
+ pp_result =
+ NetErrorToPepperError(socket_->GetLocalAddress(&ip_end_point_local));
if (pp_result != PP_OK)
break;
- pp_result = NetErrorToPepperError(
- socket_->GetPeerAddress(&ip_end_point_remote));
+ pp_result =
+ NetErrorToPepperError(socket_->GetPeerAddress(&ip_end_point_remote));
if (pp_result != PP_OK)
break;
@@ -439,9 +444,12 @@ void PepperTCPSocket::OnConnectCompleted(int net_result) {
break;
}
- manager_->Send(new PpapiMsg_PPBTCPSocket_ConnectACK(
- routing_id_, plugin_dispatcher_id_, socket_id_, PP_OK,
- local_addr, remote_addr));
+ manager_->Send(new PpapiMsg_PPBTCPSocket_ConnectACK(routing_id_,
+ plugin_dispatcher_id_,
+ socket_id_,
+ PP_OK,
+ local_addr,
+ remote_addr));
connection_state_ = CONNECTED;
return;
} while (false);
@@ -463,7 +471,10 @@ void PepperTCPSocket::OnReadCompleted(int net_result) {
if (net_result > 0) {
manager_->Send(new PpapiMsg_PPBTCPSocket_ReadACK(
- routing_id_, plugin_dispatcher_id_, socket_id_, PP_OK,
+ routing_id_,
+ plugin_dispatcher_id_,
+ socket_id_,
+ PP_OK,
std::string(read_buffer_->data(), net_result)));
} else if (net_result == 0) {
end_of_file_reached_ = true;
@@ -490,9 +501,11 @@ void PepperTCPSocket::OnWriteCompleted(int net_result) {
}
if (net_result >= 0) {
- manager_->Send(new PpapiMsg_PPBTCPSocket_WriteACK(
- routing_id_, plugin_dispatcher_id_, socket_id_,
- write_buffer_->BytesConsumed()));
+ manager_->Send(
+ new PpapiMsg_PPBTCPSocket_WriteACK(routing_id_,
+ plugin_dispatcher_id_,
+ socket_id_,
+ write_buffer_->BytesConsumed()));
} else {
SendWriteACKError(NetErrorToPepperError(net_result));
}
@@ -506,9 +519,9 @@ bool PepperTCPSocket::IsConnected() const {
}
bool PepperTCPSocket::IsSsl() const {
- return connection_state_ == SSL_HANDSHAKE_IN_PROGRESS ||
- connection_state_ == SSL_CONNECTED ||
- connection_state_ == SSL_HANDSHAKE_FAILED;
+ return connection_state_ == SSL_HANDSHAKE_IN_PROGRESS ||
+ connection_state_ == SSL_CONNECTED ||
+ connection_state_ == SSL_HANDSHAKE_FAILED;
}
void PepperTCPSocket::DoWrite() {