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

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_monitor_host.h" 14 #include "content/browser/renderer_host/pepper/pepper_network_monitor_host.h"
15 #include "content/browser/renderer_host/pepper/pepper_network_proxy_host.h" 15 #include "content/browser/renderer_host/pepper/pepper_network_proxy_host.h"
16 #include "content/browser/renderer_host/pepper/pepper_print_settings_manager.h" 16 #include "content/browser/renderer_host/pepper/pepper_print_settings_manager.h"
17 #include "content/browser/renderer_host/pepper/pepper_printing_host.h" 17 #include "content/browser/renderer_host/pepper/pepper_printing_host.h"
18 #include "content/browser/renderer_host/pepper/pepper_tcp_server_socket_message_ filter.h" 18 #include "content/browser/renderer_host/pepper/pepper_tcp_server_socket_message_ filter.h"
19 #include "content/browser/renderer_host/pepper/pepper_tcp_socket_message_filter. h" 19 #include "content/browser/renderer_host/pepper/pepper_tcp_socket_message_filter. h"
20 #include "content/browser/renderer_host/pepper/pepper_truetype_font_list_host.h" 20 #include "content/browser/renderer_host/pepper/pepper_truetype_font_list_host.h"
21 #include "content/browser/renderer_host/pepper/pepper_udp_socket_message_filter. h" 21 #include "content/browser/renderer_host/pepper/pepper_udp_socket_message_filter. h"
22 #include "net/socket/stream_socket.h"
23 #include "ppapi/host/message_filter_host.h" 22 #include "ppapi/host/message_filter_host.h"
24 #include "ppapi/host/ppapi_host.h" 23 #include "ppapi/host/ppapi_host.h"
25 #include "ppapi/host/resource_host.h" 24 #include "ppapi/host/resource_host.h"
26 #include "ppapi/proxy/ppapi_messages.h" 25 #include "ppapi/proxy/ppapi_messages.h"
27 #include "ppapi/shared_impl/ppapi_permissions.h" 26 #include "ppapi/shared_impl/ppapi_permissions.h"
28 27
29 using ppapi::host::MessageFilterHost; 28 using ppapi::host::MessageFilterHost;
30 using ppapi::host::ResourceHost; 29 using ppapi::host::ResourceHost;
31 using ppapi::host::ResourceMessageFilter; 30 using ppapi::host::ResourceMessageFilter;
32 using ppapi::UnpackMessage; 31 using ppapi::UnpackMessage;
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 std::string internal_path; 97 std::string internal_path;
99 if (!UnpackMessage<PpapiHostMsg_FileRef_CreateInternal>( 98 if (!UnpackMessage<PpapiHostMsg_FileRef_CreateInternal>(
100 message, &file_system, &internal_path)) { 99 message, &file_system, &internal_path)) {
101 NOTREACHED(); 100 NOTREACHED();
102 return scoped_ptr<ResourceHost>(); 101 return scoped_ptr<ResourceHost>();
103 } 102 }
104 return scoped_ptr<ResourceHost>(new PepperFileRefHost( 103 return scoped_ptr<ResourceHost>(new PepperFileRefHost(
105 host_, instance, params.pp_resource(), file_system, internal_path)); 104 host_, instance, params.pp_resource(), file_system, internal_path));
106 } 105 }
107 case PpapiHostMsg_TCPSocket_Create::ID: { 106 case PpapiHostMsg_TCPSocket_Create::ID: {
108 if (CanCreateSocket()) { 107 ppapi::TCPSocketVersion version;
109 scoped_refptr<ResourceMessageFilter> tcp_socket( 108 if (!UnpackMessage<PpapiHostMsg_TCPSocket_Create>(message, &version) ||
110 new PepperTCPSocketMessageFilter(host_, 109 version == ppapi::TCP_SOCKET_VERSION_PRIVATE) {
111 instance,
112 false));
113 return scoped_ptr<ResourceHost>(new MessageFilterHost(
114 host_->GetPpapiHost(), instance, params.pp_resource(), tcp_socket));
115 } else {
116 return scoped_ptr<ResourceHost>(); 110 return scoped_ptr<ResourceHost>();
117 } 111 }
112
113 return CreateNewTCPSocket(instance, params.pp_resource(), version);
118 } 114 }
119 case PpapiHostMsg_UDPSocket_Create::ID: { 115 case PpapiHostMsg_UDPSocket_Create::ID: {
120 if (CanCreateSocket()) { 116 if (CanCreateSocket()) {
121 scoped_refptr<ResourceMessageFilter> udp_socket( 117 scoped_refptr<ResourceMessageFilter> udp_socket(
122 new PepperUDPSocketMessageFilter(host_, instance, false)); 118 new PepperUDPSocketMessageFilter(host_, instance, false));
123 return scoped_ptr<ResourceHost>(new MessageFilterHost( 119 return scoped_ptr<ResourceHost>(new MessageFilterHost(
124 host_->GetPpapiHost(), instance, params.pp_resource(), udp_socket)); 120 host_->GetPpapiHost(), instance, params.pp_resource(), udp_socket));
125 } else { 121 } else {
126 return scoped_ptr<ResourceHost>(); 122 return scoped_ptr<ResourceHost>();
127 } 123 }
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 scoped_refptr<ResourceMessageFilter> tcp_server_socket( 167 scoped_refptr<ResourceMessageFilter> tcp_server_socket(
172 new PepperTCPServerSocketMessageFilter(this, host_, instance, true)); 168 new PepperTCPServerSocketMessageFilter(this, host_, instance, true));
173 return scoped_ptr<ResourceHost>(new MessageFilterHost( 169 return scoped_ptr<ResourceHost>(new MessageFilterHost(
174 host_->GetPpapiHost(), instance, params.pp_resource(), 170 host_->GetPpapiHost(), instance, params.pp_resource(),
175 tcp_server_socket)); 171 tcp_server_socket));
176 } else { 172 } else {
177 return scoped_ptr<ResourceHost>(); 173 return scoped_ptr<ResourceHost>();
178 } 174 }
179 } 175 }
180 if (message.type() == PpapiHostMsg_TCPSocket_CreatePrivate::ID) { 176 if (message.type() == PpapiHostMsg_TCPSocket_CreatePrivate::ID) {
181 if (CanCreateSocket()) { 177 return CreateNewTCPSocket(instance, params.pp_resource(),
182 scoped_refptr<ResourceMessageFilter> tcp_socket( 178 ppapi::TCP_SOCKET_VERSION_PRIVATE);
183 new PepperTCPSocketMessageFilter(host_,
184 instance,
185 true));
186 return scoped_ptr<ResourceHost>(new MessageFilterHost(
187 host_->GetPpapiHost(), instance, params.pp_resource(), tcp_socket));
188 } else {
189 return scoped_ptr<ResourceHost>();
190 }
191 } 179 }
192 if (message.type() == PpapiHostMsg_UDPSocket_CreatePrivate::ID) { 180 if (message.type() == PpapiHostMsg_UDPSocket_CreatePrivate::ID) {
193 if (CanCreateSocket()) { 181 if (CanCreateSocket()) {
194 scoped_refptr<ResourceMessageFilter> udp_socket( 182 scoped_refptr<ResourceMessageFilter> udp_socket(
195 new PepperUDPSocketMessageFilter(host_, instance, true)); 183 new PepperUDPSocketMessageFilter(host_, instance, true));
196 return scoped_ptr<ResourceHost>(new MessageFilterHost( 184 return scoped_ptr<ResourceHost>(new MessageFilterHost(
197 host_->GetPpapiHost(), instance, params.pp_resource(), udp_socket)); 185 host_->GetPpapiHost(), instance, params.pp_resource(), udp_socket));
198 } else { 186 } else {
199 return scoped_ptr<ResourceHost>(); 187 return scoped_ptr<ResourceHost>();
200 } 188 }
(...skipping 15 matching lines...) Expand all
216 } 204 }
217 } 205 }
218 } 206 }
219 207
220 return scoped_ptr<ResourceHost>(); 208 return scoped_ptr<ResourceHost>();
221 } 209 }
222 210
223 scoped_ptr<ppapi::host::ResourceHost> 211 scoped_ptr<ppapi::host::ResourceHost>
224 ContentBrowserPepperHostFactory::CreateAcceptedTCPSocket( 212 ContentBrowserPepperHostFactory::CreateAcceptedTCPSocket(
225 PP_Instance instance, 213 PP_Instance instance,
226 bool private_api, 214 ppapi::TCPSocketVersion version,
227 net::StreamSocket* socket) { 215 scoped_ptr<net::TCPSocket> socket) {
228 scoped_ptr<net::StreamSocket> s(socket);
229
230 if (!CanCreateSocket()) 216 if (!CanCreateSocket())
231 return scoped_ptr<ResourceHost>(); 217 return scoped_ptr<ResourceHost>();
232 scoped_refptr<ResourceMessageFilter> tcp_socket( 218 scoped_refptr<ResourceMessageFilter> tcp_socket(
233 new PepperTCPSocketMessageFilter(host_, 219 new PepperTCPSocketMessageFilter(host_, instance, version,
234 instance, 220 socket.Pass()));
235 private_api,
236 s.release()));
237 return scoped_ptr<ResourceHost>(new MessageFilterHost( 221 return scoped_ptr<ResourceHost>(new MessageFilterHost(
238 host_->GetPpapiHost(), instance, 0, tcp_socket)); 222 host_->GetPpapiHost(), instance, 0, tcp_socket));
239 } 223 }
240 224
225 scoped_ptr<ppapi::host::ResourceHost>
226 ContentBrowserPepperHostFactory::CreateNewTCPSocket(
227 PP_Instance instance,
228 PP_Resource resource,
229 ppapi::TCPSocketVersion version) {
230 if (!CanCreateSocket())
231 return scoped_ptr<ResourceHost>();
232
233 scoped_refptr<ResourceMessageFilter> tcp_socket(
234 new PepperTCPSocketMessageFilter(this, host_, instance, version));
235 if (!tcp_socket)
236 return scoped_ptr<ResourceHost>();
237
238 return scoped_ptr<ResourceHost>(new MessageFilterHost(
239 host_->GetPpapiHost(), instance, resource, tcp_socket));
240 }
241
241 const ppapi::PpapiPermissions& 242 const ppapi::PpapiPermissions&
242 ContentBrowserPepperHostFactory::GetPermissions() const { 243 ContentBrowserPepperHostFactory::GetPermissions() const {
243 return host_->GetPpapiHost()->permissions(); 244 return host_->GetPpapiHost()->permissions();
244 } 245 }
245 246
246 } // namespace content 247 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698