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

Side by Side Diff: content/renderer/pepper/pepper_plugin_delegate_impl.cc

Issue 9669038: Added out-of-process support for server sockets. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Fixed codereview issues, sync. Created 8 years, 9 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 unified diff | Download patch
OLDNEW
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 <map> 8 #include <map>
9 #include <queue> 9 #include <queue>
10 10
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 #include "media/video/capture/video_capture_proxy.h" 56 #include "media/video/capture/video_capture_proxy.h"
57 #include "ppapi/c/dev/pp_video_dev.h" 57 #include "ppapi/c/dev/pp_video_dev.h"
58 #include "ppapi/c/pp_errors.h" 58 #include "ppapi/c/pp_errors.h"
59 #include "ppapi/c/private/ppb_flash.h" 59 #include "ppapi/c/private/ppb_flash.h"
60 #include "ppapi/c/private/ppb_flash_net_connector.h" 60 #include "ppapi/c/private/ppb_flash_net_connector.h"
61 #include "ppapi/proxy/host_dispatcher.h" 61 #include "ppapi/proxy/host_dispatcher.h"
62 #include "ppapi/proxy/ppapi_messages.h" 62 #include "ppapi/proxy/ppapi_messages.h"
63 #include "ppapi/shared_impl/ppb_device_ref_shared.h" 63 #include "ppapi/shared_impl/ppb_device_ref_shared.h"
64 #include "ppapi/shared_impl/platform_file.h" 64 #include "ppapi/shared_impl/platform_file.h"
65 #include "ppapi/shared_impl/ppapi_preferences.h" 65 #include "ppapi/shared_impl/ppapi_preferences.h"
66 #include "ppapi/thunk/enter.h"
67 #include "ppapi/thunk/ppb_tcp_server_socket_private_api.h"
66 #include "third_party/WebKit/Source/WebKit/chromium/public/WebCursorInfo.h" 68 #include "third_party/WebKit/Source/WebKit/chromium/public/WebCursorInfo.h"
67 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h" 69 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h"
68 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFileChooserComplet ion.h" 70 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFileChooserComplet ion.h"
69 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFileChooserParams. h" 71 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFileChooserParams. h"
70 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" 72 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
71 #include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h" 73 #include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h"
72 #include "third_party/WebKit/Source/WebKit/chromium/public/WebPluginContainer.h" 74 #include "third_party/WebKit/Source/WebKit/chromium/public/WebPluginContainer.h"
73 #include "third_party/WebKit/Source/WebKit/chromium/public/WebScreenInfo.h" 75 #include "third_party/WebKit/Source/WebKit/chromium/public/WebScreenInfo.h"
74 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" 76 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
75 #include "ui/gfx/size.h" 77 #include "ui/gfx/size.h"
(...skipping 976 matching lines...) Expand 10 before | Expand all | Expand 10 after
1052 1054
1053 void PepperPluginDelegateImpl::UDPSocketClose(uint32 socket_id) { 1055 void PepperPluginDelegateImpl::UDPSocketClose(uint32 socket_id) {
1054 // There are no DCHECK(udp_sockets_.Lookup(socket_id)) because it 1056 // There are no DCHECK(udp_sockets_.Lookup(socket_id)) because it
1055 // can be called before UDPSocketBind is called. 1057 // can be called before UDPSocketBind is called.
1056 render_view_->Send(new PpapiHostMsg_PPBUDPSocket_Close(socket_id)); 1058 render_view_->Send(new PpapiHostMsg_PPBUDPSocket_Close(socket_id));
1057 if (udp_sockets_.Lookup(socket_id)) 1059 if (udp_sockets_.Lookup(socket_id))
1058 udp_sockets_.Remove(socket_id); 1060 udp_sockets_.Remove(socket_id);
1059 } 1061 }
1060 1062
1061 void PepperPluginDelegateImpl::TCPServerSocketListen( 1063 void PepperPluginDelegateImpl::TCPServerSocketListen(
1062 webkit::ppapi::PPB_TCPServerSocket_Private_Impl* socket, 1064 PP_Resource socket_resource,
1063 uint32 temp_socket_id,
1064 const PP_NetAddress_Private& addr, 1065 const PP_NetAddress_Private& addr,
1065 int32_t backlog) { 1066 int32_t backlog) {
1066 uninitialized_tcp_server_sockets_.AddWithID(socket, temp_socket_id);
1067 render_view_->Send( 1067 render_view_->Send(
1068 new PpapiHostMsg_PPBTCPServerSocket_Listen( 1068 new PpapiHostMsg_PPBTCPServerSocket_Listen(
1069 render_view_->routing_id(), 0, temp_socket_id, addr, backlog)); 1069 render_view_->routing_id(), 0, socket_resource, addr, backlog));
1070 } 1070 }
1071 1071
1072 void PepperPluginDelegateImpl::TCPServerSocketAccept(uint32 real_socket_id) { 1072 void PepperPluginDelegateImpl::TCPServerSocketAccept(uint32 server_socket_id) {
1073 DCHECK(tcp_server_sockets_.Lookup(real_socket_id)); 1073 DCHECK(tcp_server_sockets_.Lookup(server_socket_id));
1074 render_view_->Send(new PpapiHostMsg_PPBTCPServerSocket_Accept( 1074 render_view_->Send(new PpapiHostMsg_PPBTCPServerSocket_Accept(
1075 real_socket_id)); 1075 render_view_->routing_id(), server_socket_id));
1076 } 1076 }
1077 1077
1078 void PepperPluginDelegateImpl::TCPServerSocketStopListening( 1078 void PepperPluginDelegateImpl::TCPServerSocketStopListening(
1079 uint32 real_socket_id, 1079 PP_Resource socket_resource,
1080 uint32 temp_socket_id) { 1080 uint32 socket_id) {
1081 if (real_socket_id == 0) { 1081 if (socket_id != 0) {
1082 if (uninitialized_tcp_server_sockets_.Lookup(temp_socket_id)) { 1082 render_view_->Send(new PpapiHostMsg_PPBTCPServerSocket_Destroy(socket_id));
1083 // Pending Listen request. 1083 tcp_server_sockets_.Remove(socket_id);
1084 uninitialized_tcp_server_sockets_.Remove(temp_socket_id);
1085 }
1086 } else {
1087 render_view_->Send(
1088 new PpapiHostMsg_PPBTCPServerSocket_Destroy(real_socket_id));
1089 tcp_server_sockets_.Remove(real_socket_id);
1090 } 1084 }
1091 } 1085 }
1092 1086
1093 bool PepperPluginDelegateImpl::AddNetworkListObserver( 1087 bool PepperPluginDelegateImpl::AddNetworkListObserver(
1094 webkit_glue::NetworkListObserver* observer) { 1088 webkit_glue::NetworkListObserver* observer) {
1095 #if defined(ENABLE_P2P_APIS) 1089 #if defined(ENABLE_P2P_APIS)
1096 content::P2PSocketDispatcher* socket_dispatcher = 1090 content::P2PSocketDispatcher* socket_dispatcher =
1097 render_view_->p2p_socket_dispatcher(); 1091 render_view_->p2p_socket_dispatcher();
1098 if (!socket_dispatcher) { 1092 if (!socket_dispatcher) {
1099 return false; 1093 return false;
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after
1456 bool succeeded, 1450 bool succeeded,
1457 int32_t bytes_written) { 1451 int32_t bytes_written) {
1458 webkit::ppapi::PPB_UDPSocket_Private_Impl* socket = 1452 webkit::ppapi::PPB_UDPSocket_Private_Impl* socket =
1459 udp_sockets_.Lookup(socket_id); 1453 udp_sockets_.Lookup(socket_id);
1460 if (socket) 1454 if (socket)
1461 socket->OnSendToCompleted(succeeded, bytes_written); 1455 socket->OnSendToCompleted(succeeded, bytes_written);
1462 } 1456 }
1463 1457
1464 void PepperPluginDelegateImpl::OnTCPServerSocketListenACK( 1458 void PepperPluginDelegateImpl::OnTCPServerSocketListenACK(
1465 uint32 plugin_dispatcher_id, 1459 uint32 plugin_dispatcher_id,
1466 uint32 real_socket_id, 1460 PP_Resource socket_resource,
1467 uint32 temp_socket_id, 1461 uint32 socket_id,
1468 int32_t status) { 1462 int32_t status) {
1469 webkit::ppapi::PPB_TCPServerSocket_Private_Impl* socket = 1463 ppapi::thunk::EnterResource<ppapi::thunk::PPB_TCPServerSocket_Private_API>
1470 uninitialized_tcp_server_sockets_.Lookup(temp_socket_id); 1464 enter(socket_resource, true);
1471 if (socket == NULL) { 1465 if (enter.succeeded()) {
1466 ppapi::PPB_TCPServerSocket_Shared* socket =
1467 static_cast<ppapi::PPB_TCPServerSocket_Shared*>(enter.object());
1468 if (status == PP_OK)
1469 tcp_server_sockets_.AddWithID(socket, socket_id);
1470 socket->OnListenCompleted(socket_id, status);
1471 } else if (socket_id != 0 && status == PP_OK) {
1472 // StopListening was called before completion of Listen. 1472 // StopListening was called before completion of Listen.
1473 render_view_->Send( 1473 render_view_->Send(new PpapiHostMsg_PPBTCPServerSocket_Destroy(socket_id));
1474 new PpapiHostMsg_PPBTCPServerSocket_Destroy(real_socket_id));
1475 } else {
1476 uninitialized_tcp_server_sockets_.Remove(temp_socket_id);
1477
1478 if (status == PP_OK)
1479 tcp_server_sockets_.AddWithID(socket, real_socket_id);
1480 socket->OnListenCompleted(real_socket_id, status);
1481 } 1474 }
1482 } 1475 }
1483 1476
1484 void PepperPluginDelegateImpl::OnTCPServerSocketAcceptACK( 1477 void PepperPluginDelegateImpl::OnTCPServerSocketAcceptACK(
1485 uint32 plugin_dispatcher_id, 1478 uint32 plugin_dispatcher_id,
1486 uint32 real_server_socket_id, 1479 uint32 server_socket_id,
1487 uint32 accepted_socket_id, 1480 uint32 accepted_socket_id,
1488 const PP_NetAddress_Private& local_addr, 1481 const PP_NetAddress_Private& local_addr,
1489 const PP_NetAddress_Private& remote_addr) { 1482 const PP_NetAddress_Private& remote_addr) {
1490 webkit::ppapi::PPB_TCPServerSocket_Private_Impl* socket = 1483 ppapi::PPB_TCPServerSocket_Shared* socket =
1491 tcp_server_sockets_.Lookup(real_server_socket_id); 1484 tcp_server_sockets_.Lookup(server_socket_id);
1492 if (socket) { 1485 if (socket) {
1493 bool succeeded = accepted_socket_id != 0; 1486 bool succeeded = (accepted_socket_id != 0);
1494 socket->OnAcceptCompleted(succeeded, 1487 socket->OnAcceptCompleted(succeeded,
1495 accepted_socket_id, 1488 accepted_socket_id,
1496 local_addr, 1489 local_addr,
1497 remote_addr); 1490 remote_addr);
1491 } else {
1492 render_view_->Send(
yzshen1 2012/03/14 17:05:04 nit: only send Disconnect when accepted_socket_id
ygorshenin1 2012/03/15 07:08:04 Done.
1493 new PpapiHostMsg_PPBTCPSocket_Disconnect(accepted_socket_id));
1498 } 1494 }
1499 } 1495 }
1500 1496
1501 int PepperPluginDelegateImpl::GetRoutingID() const { 1497 int PepperPluginDelegateImpl::GetRoutingID() const {
1502 return render_view_->routing_id(); 1498 return render_view_->routing_id();
1503 } 1499 }
1504 1500
1505 int PepperPluginDelegateImpl::OpenDevice(PP_DeviceType_Dev type, 1501 int PepperPluginDelegateImpl::OpenDevice(PP_DeviceType_Dev type,
1506 const std::string& device_id, 1502 const std::string& device_id,
1507 const OpenDeviceCallback& callback) { 1503 const OpenDeviceCallback& callback) {
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
1582 render_view_->mouse_lock_dispatcher()->OnLockTargetDestroyed(target); 1578 render_view_->mouse_lock_dispatcher()->OnLockTargetDestroyed(target);
1583 delete target; 1579 delete target;
1584 mouse_lock_instances_.erase(it); 1580 mouse_lock_instances_.erase(it);
1585 } 1581 }
1586 } 1582 }
1587 1583
1588 webkit_glue::ClipboardClient* 1584 webkit_glue::ClipboardClient*
1589 PepperPluginDelegateImpl::CreateClipboardClient() const { 1585 PepperPluginDelegateImpl::CreateClipboardClient() const {
1590 return new RendererClipboardClient; 1586 return new RendererClipboardClient;
1591 } 1587 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698