| 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 f0cefc40396d5e06c1b2a85fc9d06448ba8ef1f0..97e31738f00709cbbc20012fbec6064162dafd96 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
|
| @@ -15,8 +15,10 @@
|
| #include "content/browser/renderer_host/pepper/pepper_print_settings_manager.h"
|
| #include "content/browser/renderer_host/pepper/pepper_printing_host.h"
|
| #include "content/browser/renderer_host/pepper/pepper_tcp_server_socket_message_filter.h"
|
| +#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"
|
| @@ -36,18 +38,17 @@ const size_t kMaxSocketsAllowed = 1024;
|
|
|
| bool CanCreateSocket() {
|
| return
|
| - PepperUDPSocketMessageFilter::GetNumInstances() +
|
| - PepperTCPServerSocketMessageFilter::GetNumInstances() <
|
| + PepperTCPServerSocketMessageFilter::GetNumInstances() +
|
| + PepperTCPSocketMessageFilter::GetNumInstances() +
|
| + PepperUDPSocketMessageFilter::GetNumInstances() <
|
| kMaxSocketsAllowed;
|
| }
|
|
|
| } // namespace
|
|
|
| ContentBrowserPepperHostFactory::ContentBrowserPepperHostFactory(
|
| - BrowserPpapiHostImpl* host,
|
| - const scoped_refptr<PepperMessageFilter>& pepper_message_filter)
|
| - : host_(host),
|
| - pepper_message_filter_(pepper_message_filter) {
|
| + BrowserPpapiHostImpl* host)
|
| + : host_(host) {
|
| }
|
|
|
| ContentBrowserPepperHostFactory::~ContentBrowserPepperHostFactory() {
|
| @@ -102,6 +103,18 @@ scoped_ptr<ResourceHost> ContentBrowserPepperHostFactory::CreateResourceHost(
|
| return scoped_ptr<ResourceHost>(new PepperFileRefHost(
|
| 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 {
|
| + return scoped_ptr<ResourceHost>();
|
| + }
|
| + }
|
| case PpapiHostMsg_UDPSocket_Create::ID: {
|
| if (CanCreateSocket()) {
|
| scoped_refptr<ResourceMessageFilter> udp_socket(
|
| @@ -155,8 +168,7 @@ scoped_ptr<ResourceHost> ContentBrowserPepperHostFactory::CreateResourceHost(
|
| if (message.type() == PpapiHostMsg_TCPServerSocket_CreatePrivate::ID) {
|
| if (CanCreateSocket()) {
|
| scoped_refptr<ResourceMessageFilter> tcp_server_socket(
|
| - new PepperTCPServerSocketMessageFilter(host_, instance, true,
|
| - pepper_message_filter_));
|
| + new PepperTCPServerSocketMessageFilter(this, host_, instance, true));
|
| return scoped_ptr<ResourceHost>(new MessageFilterHost(
|
| host_->GetPpapiHost(), instance, params.pp_resource(),
|
| tcp_server_socket));
|
| @@ -164,6 +176,18 @@ scoped_ptr<ResourceHost> ContentBrowserPepperHostFactory::CreateResourceHost(
|
| return scoped_ptr<ResourceHost>();
|
| }
|
| }
|
| + 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>();
|
| + }
|
| + }
|
| if (message.type() == PpapiHostMsg_UDPSocket_CreatePrivate::ID) {
|
| if (CanCreateSocket()) {
|
| scoped_refptr<ResourceMessageFilter> udp_socket(
|
| @@ -191,6 +215,24 @@ scoped_ptr<ResourceHost> ContentBrowserPepperHostFactory::CreateResourceHost(
|
| return scoped_ptr<ResourceHost>();
|
| }
|
|
|
| +scoped_ptr<ppapi::host::ResourceHost>
|
| +ContentBrowserPepperHostFactory::CreateAcceptedTCPSocket(
|
| + PP_Instance instance,
|
| + bool private_api,
|
| + net::StreamSocket* socket) {
|
| + scoped_ptr<net::StreamSocket> s(socket);
|
| +
|
| + if (!CanCreateSocket())
|
| + return scoped_ptr<ResourceHost>();
|
| + scoped_refptr<ResourceMessageFilter> tcp_socket(
|
| + new PepperTCPSocketMessageFilter(host_,
|
| + instance,
|
| + private_api,
|
| + s.release()));
|
| + return scoped_ptr<ResourceHost>(new MessageFilterHost(
|
| + host_->GetPpapiHost(), instance, 0, tcp_socket));
|
| +}
|
| +
|
| const ppapi::PpapiPermissions&
|
| ContentBrowserPepperHostFactory::GetPermissions() const {
|
| return host_->GetPpapiHost()->permissions();
|
|
|