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

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

Powered by Google App Engine
This is Rietveld 408576698