Index: content/browser/renderer_host/pepper/content_browser_pepper_host_factory.cc |
diff --git a/content/browser/renderer_host/pepper/content_browser_pepper_host_factory.cc b/content/browser/renderer_host/pepper/content_browser_pepper_host_factory.cc |
index 97e31738f00709cbbc20012fbec6064162dafd96..bc10c328f52b7c318ea1bc0d9f18a7d4337cc12a 100644 |
--- a/content/browser/renderer_host/pepper/content_browser_pepper_host_factory.cc |
+++ b/content/browser/renderer_host/pepper/content_browser_pepper_host_factory.cc |
@@ -18,7 +18,6 @@ |
#include "content/browser/renderer_host/pepper/pepper_tcp_socket_message_filter.h" |
#include "content/browser/renderer_host/pepper/pepper_truetype_font_list_host.h" |
#include "content/browser/renderer_host/pepper/pepper_udp_socket_message_filter.h" |
-#include "net/socket/stream_socket.h" |
#include "ppapi/host/message_filter_host.h" |
#include "ppapi/host/ppapi_host.h" |
#include "ppapi/host/resource_host.h" |
@@ -104,16 +103,13 @@ scoped_ptr<ResourceHost> ContentBrowserPepperHostFactory::CreateResourceHost( |
host_, instance, params.pp_resource(), file_system, internal_path)); |
} |
case PpapiHostMsg_TCPSocket_Create::ID: { |
- if (CanCreateSocket()) { |
- scoped_refptr<ResourceMessageFilter> tcp_socket( |
- new PepperTCPSocketMessageFilter(host_, |
- instance, |
- false)); |
- return scoped_ptr<ResourceHost>(new MessageFilterHost( |
- host_->GetPpapiHost(), instance, params.pp_resource(), tcp_socket)); |
- } else { |
+ ppapi::TCPSocketVersion version; |
+ if (!UnpackMessage<PpapiHostMsg_TCPSocket_Create>(message, &version) || |
+ version == ppapi::TCP_SOCKET_VERSION_PRIVATE) { |
return scoped_ptr<ResourceHost>(); |
} |
+ |
+ return CreateNewTCPSocket(instance, params.pp_resource(), version); |
} |
case PpapiHostMsg_UDPSocket_Create::ID: { |
if (CanCreateSocket()) { |
@@ -177,16 +173,8 @@ scoped_ptr<ResourceHost> ContentBrowserPepperHostFactory::CreateResourceHost( |
} |
} |
if (message.type() == PpapiHostMsg_TCPSocket_CreatePrivate::ID) { |
- if (CanCreateSocket()) { |
- scoped_refptr<ResourceMessageFilter> tcp_socket( |
- new PepperTCPSocketMessageFilter(host_, |
- instance, |
- true)); |
- return scoped_ptr<ResourceHost>(new MessageFilterHost( |
- host_->GetPpapiHost(), instance, params.pp_resource(), tcp_socket)); |
- } else { |
- return scoped_ptr<ResourceHost>(); |
- } |
+ return CreateNewTCPSocket(instance, params.pp_resource(), |
+ ppapi::TCP_SOCKET_VERSION_PRIVATE); |
} |
if (message.type() == PpapiHostMsg_UDPSocket_CreatePrivate::ID) { |
if (CanCreateSocket()) { |
@@ -218,21 +206,34 @@ scoped_ptr<ResourceHost> ContentBrowserPepperHostFactory::CreateResourceHost( |
scoped_ptr<ppapi::host::ResourceHost> |
ContentBrowserPepperHostFactory::CreateAcceptedTCPSocket( |
PP_Instance instance, |
- bool private_api, |
- net::StreamSocket* socket) { |
- scoped_ptr<net::StreamSocket> s(socket); |
- |
+ ppapi::TCPSocketVersion version, |
+ scoped_ptr<net::TCPSocket> socket) { |
if (!CanCreateSocket()) |
return scoped_ptr<ResourceHost>(); |
scoped_refptr<ResourceMessageFilter> tcp_socket( |
- new PepperTCPSocketMessageFilter(host_, |
- instance, |
- private_api, |
- s.release())); |
+ new PepperTCPSocketMessageFilter(host_, instance, version, |
+ socket.Pass())); |
return scoped_ptr<ResourceHost>(new MessageFilterHost( |
host_->GetPpapiHost(), instance, 0, tcp_socket)); |
} |
+scoped_ptr<ppapi::host::ResourceHost> |
+ContentBrowserPepperHostFactory::CreateNewTCPSocket( |
+ PP_Instance instance, |
+ PP_Resource resource, |
+ ppapi::TCPSocketVersion version) { |
+ if (!CanCreateSocket()) |
+ return scoped_ptr<ResourceHost>(); |
+ |
+ scoped_refptr<ResourceMessageFilter> tcp_socket( |
+ new PepperTCPSocketMessageFilter(this, host_, instance, version)); |
+ if (!tcp_socket) |
+ return scoped_ptr<ResourceHost>(); |
+ |
+ return scoped_ptr<ResourceHost>(new MessageFilterHost( |
+ host_->GetPpapiHost(), instance, resource, tcp_socket)); |
+} |
+ |
const ppapi::PpapiPermissions& |
ContentBrowserPepperHostFactory::GetPermissions() const { |
return host_->GetPpapiHost()->permissions(); |