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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
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/browser/renderer_host/pepper/content_browser_pepper_host_facto ry.h" 5 #include "content/browser/renderer_host/pepper/content_browser_pepper_host_facto ry.h"
6 6
7 #include "content/browser/renderer_host/pepper/browser_ppapi_host_impl.h" 7 #include "content/browser/renderer_host/pepper/browser_ppapi_host_impl.h"
8 #include "content/browser/renderer_host/pepper/pepper_browser_font_singleton_hos t.h" 8 #include "content/browser/renderer_host/pepper/pepper_browser_font_singleton_hos t.h"
9 #include "content/browser/renderer_host/pepper/pepper_file_ref_host.h" 9 #include "content/browser/renderer_host/pepper/pepper_file_ref_host.h"
10 #include "content/browser/renderer_host/pepper/pepper_file_system_browser_host.h " 10 #include "content/browser/renderer_host/pepper/pepper_file_system_browser_host.h "
11 #include "content/browser/renderer_host/pepper/pepper_flash_file_message_filter. h" 11 #include "content/browser/renderer_host/pepper/pepper_flash_file_message_filter. h"
12 #include "content/browser/renderer_host/pepper/pepper_gamepad_host.h" 12 #include "content/browser/renderer_host/pepper/pepper_gamepad_host.h"
13 #include "content/browser/renderer_host/pepper/pepper_host_resolver_message_filt er.h" 13 #include "content/browser/renderer_host/pepper/pepper_host_resolver_message_filt er.h"
14 #include "content/browser/renderer_host/pepper/pepper_network_proxy_host.h" 14 #include "content/browser/renderer_host/pepper/pepper_network_proxy_host.h"
15 #include "content/browser/renderer_host/pepper/pepper_print_settings_manager.h" 15 #include "content/browser/renderer_host/pepper/pepper_print_settings_manager.h"
16 #include "content/browser/renderer_host/pepper/pepper_printing_host.h" 16 #include "content/browser/renderer_host/pepper/pepper_printing_host.h"
17 #include "content/browser/renderer_host/pepper/pepper_tcp_server_socket_message_ filter.h" 17 #include "content/browser/renderer_host/pepper/pepper_tcp_server_socket_message_ filter.h"
18 #include "content/browser/renderer_host/pepper/pepper_tcp_socket_message_filter. h" 18 #include "content/browser/renderer_host/pepper/pepper_tcp_socket_message_filter. h"
19 #include "content/browser/renderer_host/pepper/pepper_truetype_font_list_host.h" 19 #include "content/browser/renderer_host/pepper/pepper_truetype_font_list_host.h"
20 #include "content/browser/renderer_host/pepper/pepper_udp_socket_message_filter. h" 20 #include "content/browser/renderer_host/pepper/pepper_udp_socket_message_filter. h"
21 #include "net/socket/stream_socket.h" 21 #include "ppapi/c/ppb_net_address.h"
22 #include "ppapi/host/message_filter_host.h" 22 #include "ppapi/host/message_filter_host.h"
23 #include "ppapi/host/ppapi_host.h" 23 #include "ppapi/host/ppapi_host.h"
24 #include "ppapi/host/resource_host.h" 24 #include "ppapi/host/resource_host.h"
25 #include "ppapi/proxy/ppapi_messages.h" 25 #include "ppapi/proxy/ppapi_messages.h"
26 #include "ppapi/shared_impl/ppapi_permissions.h" 26 #include "ppapi/shared_impl/ppapi_permissions.h"
27 27
28 using ppapi::host::MessageFilterHost; 28 using ppapi::host::MessageFilterHost;
29 using ppapi::host::ResourceHost; 29 using ppapi::host::ResourceHost;
30 using ppapi::host::ResourceMessageFilter; 30 using ppapi::host::ResourceMessageFilter;
31 using ppapi::UnpackMessage; 31 using ppapi::UnpackMessage;
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 std::string internal_path; 97 std::string internal_path;
98 if (!UnpackMessage<PpapiHostMsg_FileRef_CreateInternal>( 98 if (!UnpackMessage<PpapiHostMsg_FileRef_CreateInternal>(
99 message, &file_system, &internal_path)) { 99 message, &file_system, &internal_path)) {
100 NOTREACHED(); 100 NOTREACHED();
101 return scoped_ptr<ResourceHost>(); 101 return scoped_ptr<ResourceHost>();
102 } 102 }
103 return scoped_ptr<ResourceHost>(new PepperFileRefHost( 103 return scoped_ptr<ResourceHost>(new PepperFileRefHost(
104 host_, instance, params.pp_resource(), file_system, internal_path)); 104 host_, instance, params.pp_resource(), file_system, internal_path));
105 } 105 }
106 case PpapiHostMsg_TCPSocket_Create::ID: { 106 case PpapiHostMsg_TCPSocket_Create::ID: {
107 if (CanCreateSocket()) { 107 ppapi::TCPSocketVersion version;
108 scoped_refptr<ResourceMessageFilter> tcp_socket( 108 PP_NetAddress_Family family;
109 new PepperTCPSocketMessageFilter(host_, 109 if (!CanCreateSocket() ||
110 instance, 110 !UnpackMessage<PpapiHostMsg_TCPSocket_Create>(
111 false)); 111 message, &version, &family)) {
112 return scoped_ptr<ResourceHost>(new MessageFilterHost(
113 host_->GetPpapiHost(), instance, params.pp_resource(), tcp_socket));
114 } else {
115 return scoped_ptr<ResourceHost>(); 112 return scoped_ptr<ResourceHost>();
116 } 113 }
114
115 scoped_refptr<ResourceMessageFilter> tcp_socket(
116 PepperTCPSocketMessageFilter::Create(this, host_, instance, version,
117 family));
118 if (!tcp_socket)
119 return scoped_ptr<ResourceHost>();
120
121 return scoped_ptr<ResourceHost>(new MessageFilterHost(
122 host_->GetPpapiHost(), instance, params.pp_resource(), tcp_socket));
117 } 123 }
118 case PpapiHostMsg_UDPSocket_Create::ID: { 124 case PpapiHostMsg_UDPSocket_Create::ID: {
119 if (CanCreateSocket()) { 125 if (CanCreateSocket()) {
120 scoped_refptr<ResourceMessageFilter> udp_socket( 126 scoped_refptr<ResourceMessageFilter> udp_socket(
121 new PepperUDPSocketMessageFilter(host_, instance, false)); 127 new PepperUDPSocketMessageFilter(host_, instance, false));
122 return scoped_ptr<ResourceHost>(new MessageFilterHost( 128 return scoped_ptr<ResourceHost>(new MessageFilterHost(
123 host_->GetPpapiHost(), instance, params.pp_resource(), udp_socket)); 129 host_->GetPpapiHost(), instance, params.pp_resource(), udp_socket));
124 } else { 130 } else {
125 return scoped_ptr<ResourceHost>(); 131 return scoped_ptr<ResourceHost>();
126 } 132 }
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 scoped_refptr<ResourceMessageFilter> tcp_server_socket( 176 scoped_refptr<ResourceMessageFilter> tcp_server_socket(
171 new PepperTCPServerSocketMessageFilter(this, host_, instance, true)); 177 new PepperTCPServerSocketMessageFilter(this, host_, instance, true));
172 return scoped_ptr<ResourceHost>(new MessageFilterHost( 178 return scoped_ptr<ResourceHost>(new MessageFilterHost(
173 host_->GetPpapiHost(), instance, params.pp_resource(), 179 host_->GetPpapiHost(), instance, params.pp_resource(),
174 tcp_server_socket)); 180 tcp_server_socket));
175 } else { 181 } else {
176 return scoped_ptr<ResourceHost>(); 182 return scoped_ptr<ResourceHost>();
177 } 183 }
178 } 184 }
179 if (message.type() == PpapiHostMsg_TCPSocket_CreatePrivate::ID) { 185 if (message.type() == PpapiHostMsg_TCPSocket_CreatePrivate::ID) {
180 if (CanCreateSocket()) { 186 if (!CanCreateSocket())
181 scoped_refptr<ResourceMessageFilter> tcp_socket(
182 new PepperTCPSocketMessageFilter(host_,
183 instance,
184 true));
185 return scoped_ptr<ResourceHost>(new MessageFilterHost(
186 host_->GetPpapiHost(), instance, params.pp_resource(), tcp_socket));
187 } else {
188 return scoped_ptr<ResourceHost>(); 187 return scoped_ptr<ResourceHost>();
189 } 188
189 scoped_refptr<ResourceMessageFilter> tcp_socket(
190 PepperTCPSocketMessageFilter::Create(
191 this, host_, instance, ppapi::TCP_SOCKET_VERSION_PRIVATE,
192 PP_NETADDRESS_FAMILY_UNSPECIFIED));
193 if (!tcp_socket)
194 return scoped_ptr<ResourceHost>();
195
196 return scoped_ptr<ResourceHost>(new MessageFilterHost(
197 host_->GetPpapiHost(), instance, params.pp_resource(), tcp_socket));
bbudge 2013/09/17 19:42:18 There's a lot of code in common here and above. Co
yzshen1 2013/09/18 16:56:26 Done.
190 } 198 }
191 if (message.type() == PpapiHostMsg_UDPSocket_CreatePrivate::ID) { 199 if (message.type() == PpapiHostMsg_UDPSocket_CreatePrivate::ID) {
192 if (CanCreateSocket()) { 200 if (CanCreateSocket()) {
193 scoped_refptr<ResourceMessageFilter> udp_socket( 201 scoped_refptr<ResourceMessageFilter> udp_socket(
194 new PepperUDPSocketMessageFilter(host_, instance, true)); 202 new PepperUDPSocketMessageFilter(host_, instance, true));
195 return scoped_ptr<ResourceHost>(new MessageFilterHost( 203 return scoped_ptr<ResourceHost>(new MessageFilterHost(
196 host_->GetPpapiHost(), instance, params.pp_resource(), udp_socket)); 204 host_->GetPpapiHost(), instance, params.pp_resource(), udp_socket));
197 } else { 205 } else {
198 return scoped_ptr<ResourceHost>(); 206 return scoped_ptr<ResourceHost>();
199 } 207 }
(...skipping 11 matching lines...) Expand all
211 } 219 }
212 } 220 }
213 } 221 }
214 222
215 return scoped_ptr<ResourceHost>(); 223 return scoped_ptr<ResourceHost>();
216 } 224 }
217 225
218 scoped_ptr<ppapi::host::ResourceHost> 226 scoped_ptr<ppapi::host::ResourceHost>
219 ContentBrowserPepperHostFactory::CreateAcceptedTCPSocket( 227 ContentBrowserPepperHostFactory::CreateAcceptedTCPSocket(
220 PP_Instance instance, 228 PP_Instance instance,
221 bool private_api, 229 ppapi::TCPSocketVersion version,
222 net::StreamSocket* socket) { 230 scoped_ptr<net::TCPSocket> socket) {
223 scoped_ptr<net::StreamSocket> s(socket);
224
225 if (!CanCreateSocket()) 231 if (!CanCreateSocket())
226 return scoped_ptr<ResourceHost>(); 232 return scoped_ptr<ResourceHost>();
227 scoped_refptr<ResourceMessageFilter> tcp_socket( 233 scoped_refptr<ResourceMessageFilter> tcp_socket(
228 new PepperTCPSocketMessageFilter(host_, 234 new PepperTCPSocketMessageFilter(host_, instance, version,
bbudge 2013/09/17 19:42:18 Why don't you call PepperTCPSocketMessageFilter::C
yzshen1 2013/09/18 16:56:26 Because this class has a static Create() method fo
229 instance, 235 socket.Pass()));
230 private_api,
231 s.release()));
232 return scoped_ptr<ResourceHost>(new MessageFilterHost( 236 return scoped_ptr<ResourceHost>(new MessageFilterHost(
233 host_->GetPpapiHost(), instance, 0, tcp_socket)); 237 host_->GetPpapiHost(), instance, 0, tcp_socket));
234 } 238 }
235 239
236 const ppapi::PpapiPermissions& 240 const ppapi::PpapiPermissions&
237 ContentBrowserPepperHostFactory::GetPermissions() const { 241 ContentBrowserPepperHostFactory::GetPermissions() const {
238 return host_->GetPpapiHost()->permissions(); 242 return host_->GetPpapiHost()->permissions();
239 } 243 }
240 244
241 } // namespace content 245 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698