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 |