| 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 "content/renderer/pepper/pepper_plugin_delegate_impl.h" | 5 #include "content/renderer/pepper/pepper_plugin_delegate_impl.h" |
| 6 | 6 |
| 7 #include <cmath> | 7 #include <cmath> |
| 8 #include <cstddef> | 8 #include <cstddef> |
| 9 #include <map> | 9 #include <map> |
| 10 #include <queue> | 10 #include <queue> |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 #include "content/renderer/pepper/pepper_file_system_host.h" | 45 #include "content/renderer/pepper/pepper_file_system_host.h" |
| 46 #include "content/renderer/pepper/pepper_graphics_2d_host.h" | 46 #include "content/renderer/pepper/pepper_graphics_2d_host.h" |
| 47 #include "content/renderer/pepper/pepper_hung_plugin_filter.h" | 47 #include "content/renderer/pepper/pepper_hung_plugin_filter.h" |
| 48 #include "content/renderer/pepper/pepper_in_process_resource_creation.h" | 48 #include "content/renderer/pepper/pepper_in_process_resource_creation.h" |
| 49 #include "content/renderer/pepper/pepper_in_process_router.h" | 49 #include "content/renderer/pepper/pepper_in_process_router.h" |
| 50 #include "content/renderer/pepper/pepper_plugin_instance_impl.h" | 50 #include "content/renderer/pepper/pepper_plugin_instance_impl.h" |
| 51 #include "content/renderer/pepper/pepper_plugin_registry.h" | 51 #include "content/renderer/pepper/pepper_plugin_registry.h" |
| 52 #include "content/renderer/pepper/pepper_url_loader_host.h" | 52 #include "content/renderer/pepper/pepper_url_loader_host.h" |
| 53 #include "content/renderer/pepper/pepper_webplugin_impl.h" | 53 #include "content/renderer/pepper/pepper_webplugin_impl.h" |
| 54 #include "content/renderer/pepper/plugin_module.h" | 54 #include "content/renderer/pepper/plugin_module.h" |
| 55 #include "content/renderer/pepper/ppb_tcp_server_socket_private_impl.h" | |
| 56 #include "content/renderer/pepper/ppb_tcp_socket_private_impl.h" | 55 #include "content/renderer/pepper/ppb_tcp_socket_private_impl.h" |
| 57 #include "content/renderer/pepper/renderer_ppapi_host_impl.h" | 56 #include "content/renderer/pepper/renderer_ppapi_host_impl.h" |
| 58 #include "content/renderer/pepper/resource_helper.h" | 57 #include "content/renderer/pepper/resource_helper.h" |
| 59 #include "content/renderer/pepper/url_response_info_util.h" | 58 #include "content/renderer/pepper/url_response_info_util.h" |
| 60 #include "content/renderer/render_thread_impl.h" | 59 #include "content/renderer/render_thread_impl.h" |
| 61 #include "content/renderer/render_view_impl.h" | 60 #include "content/renderer/render_view_impl.h" |
| 62 #include "content/renderer/render_widget_fullscreen_pepper.h" | 61 #include "content/renderer/render_widget_fullscreen_pepper.h" |
| 63 #include "content/renderer/webplugin_delegate_proxy.h" | 62 #include "content/renderer/webplugin_delegate_proxy.h" |
| 64 #include "ipc/ipc_channel_handle.h" | 63 #include "ipc/ipc_channel_handle.h" |
| 65 #include "media/base/audio_hardware_config.h" | 64 #include "media/base/audio_hardware_config.h" |
| (...skipping 890 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 956 render_view_->Send( | 955 render_view_->Send( |
| 957 new PpapiHostMsg_PPBTCPSocket_SetOption(socket_id, name, value)); | 956 new PpapiHostMsg_PPBTCPSocket_SetOption(socket_id, name, value)); |
| 958 } | 957 } |
| 959 | 958 |
| 960 void PepperPluginDelegateImpl::RegisterTCPSocket( | 959 void PepperPluginDelegateImpl::RegisterTCPSocket( |
| 961 PPB_TCPSocket_Private_Impl* socket, | 960 PPB_TCPSocket_Private_Impl* socket, |
| 962 uint32 socket_id) { | 961 uint32 socket_id) { |
| 963 tcp_sockets_.AddWithID(socket, socket_id); | 962 tcp_sockets_.AddWithID(socket, socket_id); |
| 964 } | 963 } |
| 965 | 964 |
| 966 void PepperPluginDelegateImpl::TCPServerSocketListen( | |
| 967 PP_Resource socket_resource, | |
| 968 const PP_NetAddress_Private& addr, | |
| 969 int32_t backlog) { | |
| 970 render_view_->Send( | |
| 971 new PpapiHostMsg_PPBTCPServerSocket_Listen( | |
| 972 render_view_->routing_id(), 0, socket_resource, addr, backlog)); | |
| 973 } | |
| 974 | |
| 975 void PepperPluginDelegateImpl::TCPServerSocketAccept(uint32 server_socket_id) { | |
| 976 DCHECK(tcp_server_sockets_.Lookup(server_socket_id)); | |
| 977 render_view_->Send(new PpapiHostMsg_PPBTCPServerSocket_Accept( | |
| 978 render_view_->routing_id(), server_socket_id)); | |
| 979 } | |
| 980 | |
| 981 void PepperPluginDelegateImpl::TCPServerSocketStopListening( | |
| 982 PP_Resource socket_resource, | |
| 983 uint32 socket_id) { | |
| 984 if (socket_id != 0) { | |
| 985 render_view_->Send(new PpapiHostMsg_PPBTCPServerSocket_Destroy(socket_id)); | |
| 986 tcp_server_sockets_.Remove(socket_id); | |
| 987 } | |
| 988 } | |
| 989 | |
| 990 bool PepperPluginDelegateImpl::X509CertificateParseDER( | 965 bool PepperPluginDelegateImpl::X509CertificateParseDER( |
| 991 const std::vector<char>& der, | 966 const std::vector<char>& der, |
| 992 ppapi::PPB_X509Certificate_Fields* fields) { | 967 ppapi::PPB_X509Certificate_Fields* fields) { |
| 993 bool succeeded = false; | 968 bool succeeded = false; |
| 994 render_view_->Send( | 969 render_view_->Send( |
| 995 new PpapiHostMsg_PPBX509Certificate_ParseDER(der, &succeeded, fields)); | 970 new PpapiHostMsg_PPBX509Certificate_ParseDER(der, &succeeded, fields)); |
| 996 return succeeded; | 971 return succeeded; |
| 997 } | 972 } |
| 998 | 973 |
| 999 FullscreenContainer* PepperPluginDelegateImpl::CreateFullscreenContainer( | 974 FullscreenContainer* PepperPluginDelegateImpl::CreateFullscreenContainer( |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1156 bool handled = true; | 1131 bool handled = true; |
| 1157 IPC_BEGIN_MESSAGE_MAP(PepperPluginDelegateImpl, message) | 1132 IPC_BEGIN_MESSAGE_MAP(PepperPluginDelegateImpl, message) |
| 1158 IPC_MESSAGE_HANDLER(PpapiMsg_PPBTCPSocket_ConnectACK, | 1133 IPC_MESSAGE_HANDLER(PpapiMsg_PPBTCPSocket_ConnectACK, |
| 1159 OnTCPSocketConnectACK) | 1134 OnTCPSocketConnectACK) |
| 1160 IPC_MESSAGE_HANDLER(PpapiMsg_PPBTCPSocket_SSLHandshakeACK, | 1135 IPC_MESSAGE_HANDLER(PpapiMsg_PPBTCPSocket_SSLHandshakeACK, |
| 1161 OnTCPSocketSSLHandshakeACK) | 1136 OnTCPSocketSSLHandshakeACK) |
| 1162 IPC_MESSAGE_HANDLER(PpapiMsg_PPBTCPSocket_ReadACK, OnTCPSocketReadACK) | 1137 IPC_MESSAGE_HANDLER(PpapiMsg_PPBTCPSocket_ReadACK, OnTCPSocketReadACK) |
| 1163 IPC_MESSAGE_HANDLER(PpapiMsg_PPBTCPSocket_WriteACK, OnTCPSocketWriteACK) | 1138 IPC_MESSAGE_HANDLER(PpapiMsg_PPBTCPSocket_WriteACK, OnTCPSocketWriteACK) |
| 1164 IPC_MESSAGE_HANDLER(PpapiMsg_PPBTCPSocket_SetOptionACK, | 1139 IPC_MESSAGE_HANDLER(PpapiMsg_PPBTCPSocket_SetOptionACK, |
| 1165 OnTCPSocketSetOptionACK) | 1140 OnTCPSocketSetOptionACK) |
| 1166 IPC_MESSAGE_HANDLER(PpapiMsg_PPBTCPServerSocket_ListenACK, | |
| 1167 OnTCPServerSocketListenACK) | |
| 1168 IPC_MESSAGE_HANDLER(PpapiMsg_PPBTCPServerSocket_AcceptACK, | |
| 1169 OnTCPServerSocketAcceptACK) | |
| 1170 IPC_MESSAGE_UNHANDLED(handled = false) | 1141 IPC_MESSAGE_UNHANDLED(handled = false) |
| 1171 IPC_END_MESSAGE_MAP() | 1142 IPC_END_MESSAGE_MAP() |
| 1172 return handled; | 1143 return handled; |
| 1173 } | 1144 } |
| 1174 | 1145 |
| 1175 void PepperPluginDelegateImpl::OnDestruct() { | 1146 void PepperPluginDelegateImpl::OnDestruct() { |
| 1176 // Nothing to do here. Default implementation in RenderViewObserver does | 1147 // Nothing to do here. Default implementation in RenderViewObserver does |
| 1177 // 'delete this' but it's not suitable for PepperPluginDelegateImpl because | 1148 // 'delete this' but it's not suitable for PepperPluginDelegateImpl because |
| 1178 // it's non-pointer member in RenderViewImpl. | 1149 // it's non-pointer member in RenderViewImpl. |
| 1179 } | 1150 } |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1220 | 1191 |
| 1221 void PepperPluginDelegateImpl::OnTCPSocketSetOptionACK( | 1192 void PepperPluginDelegateImpl::OnTCPSocketSetOptionACK( |
| 1222 uint32 plugin_dispatcher_id, | 1193 uint32 plugin_dispatcher_id, |
| 1223 uint32 socket_id, | 1194 uint32 socket_id, |
| 1224 int32_t result) { | 1195 int32_t result) { |
| 1225 PPB_TCPSocket_Private_Impl* socket = tcp_sockets_.Lookup(socket_id); | 1196 PPB_TCPSocket_Private_Impl* socket = tcp_sockets_.Lookup(socket_id); |
| 1226 if (socket) | 1197 if (socket) |
| 1227 socket->OnSetOptionCompleted(result); | 1198 socket->OnSetOptionCompleted(result); |
| 1228 } | 1199 } |
| 1229 | 1200 |
| 1230 void PepperPluginDelegateImpl::OnTCPServerSocketListenACK( | |
| 1231 uint32 plugin_dispatcher_id, | |
| 1232 PP_Resource socket_resource, | |
| 1233 uint32 socket_id, | |
| 1234 const PP_NetAddress_Private& local_addr, | |
| 1235 int32_t status) { | |
| 1236 ppapi::thunk::EnterResource<ppapi::thunk::PPB_TCPServerSocket_Private_API> | |
| 1237 enter(socket_resource, true); | |
| 1238 if (enter.succeeded()) { | |
| 1239 ppapi::PPB_TCPServerSocket_Shared* socket = | |
| 1240 static_cast<ppapi::PPB_TCPServerSocket_Shared*>(enter.object()); | |
| 1241 if (status == PP_OK) | |
| 1242 tcp_server_sockets_.AddWithID(socket, socket_id); | |
| 1243 socket->OnListenCompleted(socket_id, local_addr, status); | |
| 1244 } else if (socket_id != 0 && status == PP_OK) { | |
| 1245 // StopListening was called before completion of Listen. | |
| 1246 render_view_->Send(new PpapiHostMsg_PPBTCPServerSocket_Destroy(socket_id)); | |
| 1247 } | |
| 1248 } | |
| 1249 | |
| 1250 void PepperPluginDelegateImpl::OnTCPServerSocketAcceptACK( | |
| 1251 uint32 plugin_dispatcher_id, | |
| 1252 uint32 server_socket_id, | |
| 1253 uint32 accepted_socket_id, | |
| 1254 const PP_NetAddress_Private& local_addr, | |
| 1255 const PP_NetAddress_Private& remote_addr) { | |
| 1256 ppapi::PPB_TCPServerSocket_Shared* socket = | |
| 1257 tcp_server_sockets_.Lookup(server_socket_id); | |
| 1258 if (socket) { | |
| 1259 bool succeeded = (accepted_socket_id != 0); | |
| 1260 socket->OnAcceptCompleted(succeeded, | |
| 1261 accepted_socket_id, | |
| 1262 local_addr, | |
| 1263 remote_addr); | |
| 1264 } else if (accepted_socket_id != 0) { | |
| 1265 render_view_->Send( | |
| 1266 new PpapiHostMsg_PPBTCPSocket_Disconnect(accepted_socket_id)); | |
| 1267 } | |
| 1268 } | |
| 1269 | |
| 1270 int PepperPluginDelegateImpl::GetRoutingID() const { | 1201 int PepperPluginDelegateImpl::GetRoutingID() const { |
| 1271 return render_view_->routing_id(); | 1202 return render_view_->routing_id(); |
| 1272 } | 1203 } |
| 1273 | 1204 |
| 1274 MouseLockDispatcher::LockTarget* | 1205 MouseLockDispatcher::LockTarget* |
| 1275 PepperPluginDelegateImpl::GetOrCreateLockTargetAdapter( | 1206 PepperPluginDelegateImpl::GetOrCreateLockTargetAdapter( |
| 1276 PepperPluginInstanceImpl* instance) { | 1207 PepperPluginInstanceImpl* instance) { |
| 1277 MouseLockDispatcher::LockTarget* target = mouse_lock_instances_[instance]; | 1208 MouseLockDispatcher::LockTarget* target = mouse_lock_instances_[instance]; |
| 1278 if (target) | 1209 if (target) |
| 1279 return target; | 1210 return target; |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1315 should_close_source); | 1246 should_close_source); |
| 1316 } | 1247 } |
| 1317 | 1248 |
| 1318 bool PepperPluginDelegateImpl::IsRunningInProcess(PP_Instance instance) const { | 1249 bool PepperPluginDelegateImpl::IsRunningInProcess(PP_Instance instance) const { |
| 1319 RendererPpapiHostImpl* host = | 1250 RendererPpapiHostImpl* host = |
| 1320 RendererPpapiHostImpl::GetForPPInstance(instance); | 1251 RendererPpapiHostImpl::GetForPPInstance(instance); |
| 1321 return host && host->IsRunningInProcess(); | 1252 return host && host->IsRunningInProcess(); |
| 1322 } | 1253 } |
| 1323 | 1254 |
| 1324 } // namespace content | 1255 } // namespace content |
| OLD | NEW |