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

Unified Diff: content/browser/renderer_host/pepper/content_browser_pepper_host_factory.cc

Issue 24195004: PPB_TCPSocket: add support for TCP server socket operations. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 3 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 side-by-side diff with in-line comments
Download patch
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 46e8c13d0bf59f8a963926d932f4f1d38ebaee36..39e778dfe6b2b162e53c51caa498d8f2b6cb2163 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
@@ -19,7 +19,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"
@@ -105,16 +104,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()) {
@@ -178,16 +174,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()) {
@@ -223,21 +211,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();

Powered by Google App Engine
This is Rietveld 408576698