| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ppapi/proxy/ppb_tcp_socket_private_proxy.h" | 5 #include "ppapi/proxy/ppb_tcp_socket_private_proxy.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "ppapi/proxy/plugin_dispatcher.h" | 10 #include "ppapi/proxy/plugin_dispatcher.h" |
| 11 #include "ppapi/proxy/plugin_globals.h" | 11 #include "ppapi/proxy/plugin_globals.h" |
| 12 #include "ppapi/proxy/plugin_proxy_delegate.h" | 12 #include "ppapi/proxy/plugin_proxy_delegate.h" |
| 13 #include "ppapi/proxy/plugin_resource_tracker.h" | 13 #include "ppapi/proxy/plugin_resource_tracker.h" |
| 14 #include "ppapi/proxy/ppapi_messages.h" | 14 #include "ppapi/proxy/ppapi_messages.h" |
| 15 #include "ppapi/shared_impl/private/tcp_socket_private_impl.h" | 15 #include "ppapi/shared_impl/private/tcp_socket_private_impl.h" |
| 16 #include "ppapi/shared_impl/resource.h" | 16 #include "ppapi/shared_impl/resource.h" |
| 17 #include "ppapi/thunk/thunk.h" | 17 #include "ppapi/thunk/thunk.h" |
| 18 | 18 |
| 19 namespace ppapi { | 19 namespace ppapi { |
| 20 class PPB_X509Certificate_Fields; |
| 21 |
| 20 namespace proxy { | 22 namespace proxy { |
| 21 | 23 |
| 22 namespace { | 24 namespace { |
| 23 | 25 |
| 24 typedef std::map<uint32, TCPSocketPrivateImpl*> IDToSocketMap; | 26 typedef std::map<uint32, TCPSocketPrivateImpl*> IDToSocketMap; |
| 25 IDToSocketMap* g_id_to_socket = NULL; | 27 IDToSocketMap* g_id_to_socket = NULL; |
| 26 | 28 |
| 27 class TCPSocket : public TCPSocketPrivateImpl { | 29 class TCPSocket : public TCPSocketPrivateImpl { |
| 28 public: | 30 public: |
| 29 TCPSocket(const HostResource& resource, uint32 socket_id); | 31 TCPSocket(const HostResource& resource, uint32 socket_id); |
| 30 virtual ~TCPSocket(); | 32 virtual ~TCPSocket(); |
| 31 | 33 |
| 32 virtual void SendConnect(const std::string& host, uint16_t port) OVERRIDE; | 34 virtual void SendConnect(const std::string& host, uint16_t port) OVERRIDE; |
| 33 virtual void SendConnectWithNetAddress( | 35 virtual void SendConnectWithNetAddress( |
| 34 const PP_NetAddress_Private& addr) OVERRIDE; | 36 const PP_NetAddress_Private& addr) OVERRIDE; |
| 35 virtual void SendSSLHandshake(const std::string& server_name, | 37 virtual void SendSSLHandshake( |
| 36 uint16_t server_port) OVERRIDE; | 38 const std::string& server_name, |
| 39 uint16_t server_port, |
| 40 const std::vector<std::vector<char> >& trusted_certs, |
| 41 const std::vector<std::vector<char> >& untrusted_certs) |
| 42 OVERRIDE; |
| 37 virtual void SendRead(int32_t bytes_to_read) OVERRIDE; | 43 virtual void SendRead(int32_t bytes_to_read) OVERRIDE; |
| 38 virtual void SendWrite(const std::string& buffer) OVERRIDE; | 44 virtual void SendWrite(const std::string& buffer) OVERRIDE; |
| 39 virtual void SendDisconnect() OVERRIDE; | 45 virtual void SendDisconnect() OVERRIDE; |
| 40 | 46 |
| 41 private: | 47 private: |
| 42 void SendToBrowser(IPC::Message* msg); | 48 void SendToBrowser(IPC::Message* msg); |
| 43 | 49 |
| 44 DISALLOW_COPY_AND_ASSIGN(TCPSocket); | 50 DISALLOW_COPY_AND_ASSIGN(TCPSocket); |
| 45 }; | 51 }; |
| 46 | 52 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 59 void TCPSocket::SendConnect(const std::string& host, uint16_t port) { | 65 void TCPSocket::SendConnect(const std::string& host, uint16_t port) { |
| 60 SendToBrowser(new PpapiHostMsg_PPBTCPSocket_Connect( | 66 SendToBrowser(new PpapiHostMsg_PPBTCPSocket_Connect( |
| 61 API_ID_PPB_TCPSOCKET_PRIVATE, socket_id_, host, port)); | 67 API_ID_PPB_TCPSOCKET_PRIVATE, socket_id_, host, port)); |
| 62 } | 68 } |
| 63 | 69 |
| 64 void TCPSocket::SendConnectWithNetAddress(const PP_NetAddress_Private& addr) { | 70 void TCPSocket::SendConnectWithNetAddress(const PP_NetAddress_Private& addr) { |
| 65 SendToBrowser(new PpapiHostMsg_PPBTCPSocket_ConnectWithNetAddress( | 71 SendToBrowser(new PpapiHostMsg_PPBTCPSocket_ConnectWithNetAddress( |
| 66 API_ID_PPB_TCPSOCKET_PRIVATE, socket_id_, addr)); | 72 API_ID_PPB_TCPSOCKET_PRIVATE, socket_id_, addr)); |
| 67 } | 73 } |
| 68 | 74 |
| 69 void TCPSocket::SendSSLHandshake(const std::string& server_name, | 75 void TCPSocket::SendSSLHandshake( |
| 70 uint16_t server_port) { | 76 const std::string& server_name, |
| 77 uint16_t server_port, |
| 78 const std::vector<std::vector<char> >& trusted_certs, |
| 79 const std::vector<std::vector<char> >& untrusted_certs) { |
| 71 SendToBrowser(new PpapiHostMsg_PPBTCPSocket_SSLHandshake( | 80 SendToBrowser(new PpapiHostMsg_PPBTCPSocket_SSLHandshake( |
| 72 socket_id_, server_name, server_port)); | 81 socket_id_, server_name, server_port, trusted_certs, untrusted_certs)); |
| 73 } | 82 } |
| 74 | 83 |
| 75 void TCPSocket::SendRead(int32_t bytes_to_read) { | 84 void TCPSocket::SendRead(int32_t bytes_to_read) { |
| 76 SendToBrowser(new PpapiHostMsg_PPBTCPSocket_Read(socket_id_, bytes_to_read)); | 85 SendToBrowser(new PpapiHostMsg_PPBTCPSocket_Read(socket_id_, bytes_to_read)); |
| 77 } | 86 } |
| 78 | 87 |
| 79 void TCPSocket::SendWrite(const std::string& buffer) { | 88 void TCPSocket::SendWrite(const std::string& buffer) { |
| 80 SendToBrowser(new PpapiHostMsg_PPBTCPSocket_Write(socket_id_, buffer)); | 89 SendToBrowser(new PpapiHostMsg_PPBTCPSocket_Write(socket_id_, buffer)); |
| 81 } | 90 } |
| 82 | 91 |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 147 } | 156 } |
| 148 IDToSocketMap::iterator iter = g_id_to_socket->find(socket_id); | 157 IDToSocketMap::iterator iter = g_id_to_socket->find(socket_id); |
| 149 if (iter == g_id_to_socket->end()) | 158 if (iter == g_id_to_socket->end()) |
| 150 return; | 159 return; |
| 151 iter->second->OnConnectCompleted(succeeded, local_addr, remote_addr); | 160 iter->second->OnConnectCompleted(succeeded, local_addr, remote_addr); |
| 152 } | 161 } |
| 153 | 162 |
| 154 void PPB_TCPSocket_Private_Proxy::OnMsgSSLHandshakeACK( | 163 void PPB_TCPSocket_Private_Proxy::OnMsgSSLHandshakeACK( |
| 155 uint32 /* plugin_dispatcher_id */, | 164 uint32 /* plugin_dispatcher_id */, |
| 156 uint32 socket_id, | 165 uint32 socket_id, |
| 157 bool succeeded) { | 166 bool succeeded, |
| 167 const PPB_X509Certificate_Fields& certificate_fields) { |
| 158 if (!g_id_to_socket) { | 168 if (!g_id_to_socket) { |
| 159 NOTREACHED(); | 169 NOTREACHED(); |
| 160 return; | 170 return; |
| 161 } | 171 } |
| 162 IDToSocketMap::iterator iter = g_id_to_socket->find(socket_id); | 172 IDToSocketMap::iterator iter = g_id_to_socket->find(socket_id); |
| 163 if (iter == g_id_to_socket->end()) | 173 if (iter == g_id_to_socket->end()) |
| 164 return; | 174 return; |
| 165 iter->second->OnSSLHandshakeCompleted(succeeded); | 175 iter->second->OnSSLHandshakeCompleted(succeeded, certificate_fields); |
| 166 } | 176 } |
| 167 | 177 |
| 168 void PPB_TCPSocket_Private_Proxy::OnMsgReadACK( | 178 void PPB_TCPSocket_Private_Proxy::OnMsgReadACK( |
| 169 uint32 /* plugin_dispatcher_id */, | 179 uint32 /* plugin_dispatcher_id */, |
| 170 uint32 socket_id, | 180 uint32 socket_id, |
| 171 bool succeeded, | 181 bool succeeded, |
| 172 const std::string& data) { | 182 const std::string& data) { |
| 173 if (!g_id_to_socket) { | 183 if (!g_id_to_socket) { |
| 174 NOTREACHED(); | 184 NOTREACHED(); |
| 175 return; | 185 return; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 190 return; | 200 return; |
| 191 } | 201 } |
| 192 IDToSocketMap::iterator iter = g_id_to_socket->find(socket_id); | 202 IDToSocketMap::iterator iter = g_id_to_socket->find(socket_id); |
| 193 if (iter == g_id_to_socket->end()) | 203 if (iter == g_id_to_socket->end()) |
| 194 return; | 204 return; |
| 195 iter->second->OnWriteCompleted(succeeded, bytes_written); | 205 iter->second->OnWriteCompleted(succeeded, bytes_written); |
| 196 } | 206 } |
| 197 | 207 |
| 198 } // namespace proxy | 208 } // namespace proxy |
| 199 } // namespace ppapi | 209 } // namespace ppapi |
| OLD | NEW |