OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/renderer/pepper/resource_converter.h" | 5 #include "content/renderer/pepper/resource_converter.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
84 } | 84 } |
85 | 85 |
86 // Given a V8 value containing a DOMFileSystem, creates a resource host and | 86 // Given a V8 value containing a DOMFileSystem, creates a resource host and |
87 // returns the resource information for serialization. | 87 // returns the resource information for serialization. |
88 // On error, false. | 88 // On error, false. |
89 bool DOMFileSystemToResource( | 89 bool DOMFileSystemToResource( |
90 PP_Instance instance, | 90 PP_Instance instance, |
91 RendererPpapiHost* host, | 91 RendererPpapiHost* host, |
92 const blink::WebDOMFileSystem& dom_file_system, | 92 const blink::WebDOMFileSystem& dom_file_system, |
93 int* pending_renderer_id, | 93 int* pending_renderer_id, |
94 scoped_ptr<IPC::Message>* create_message, | 94 std::unique_ptr<IPC::Message>* create_message, |
95 scoped_ptr<IPC::Message>* browser_host_create_message) { | 95 std::unique_ptr<IPC::Message>* browser_host_create_message) { |
96 DCHECK(!dom_file_system.isNull()); | 96 DCHECK(!dom_file_system.isNull()); |
97 | 97 |
98 PP_FileSystemType file_system_type = | 98 PP_FileSystemType file_system_type = |
99 WebFileSystemTypeToPPAPI(dom_file_system.type()); | 99 WebFileSystemTypeToPPAPI(dom_file_system.type()); |
100 GURL root_url = dom_file_system.rootURL(); | 100 GURL root_url = dom_file_system.rootURL(); |
101 | 101 |
102 // Raw external file system access is not allowed, but external file system | 102 // Raw external file system access is not allowed, but external file system |
103 // access through fileapi is allowed. (Without this check, there would be a | 103 // access through fileapi is allowed. (Without this check, there would be a |
104 // CHECK failure in FileRefResource.) | 104 // CHECK failure in FileRefResource.) |
105 if ((file_system_type == PP_FILESYSTEMTYPE_EXTERNAL) && | 105 if ((file_system_type == PP_FILESYSTEMTYPE_EXTERNAL) && |
106 (!root_url.is_valid())) { | 106 (!root_url.is_valid())) { |
107 return false; | 107 return false; |
108 } | 108 } |
109 | 109 |
110 *pending_renderer_id = host->GetPpapiHost()->AddPendingResourceHost( | 110 *pending_renderer_id = host->GetPpapiHost()->AddPendingResourceHost( |
111 scoped_ptr<ppapi::host::ResourceHost>(new PepperFileSystemHost( | 111 std::unique_ptr<ppapi::host::ResourceHost>(new PepperFileSystemHost( |
112 host, instance, 0, root_url, file_system_type))); | 112 host, instance, 0, root_url, file_system_type))); |
113 if (*pending_renderer_id == 0) | 113 if (*pending_renderer_id == 0) |
114 return false; | 114 return false; |
115 | 115 |
116 create_message->reset( | 116 create_message->reset( |
117 new PpapiPluginMsg_FileSystem_CreateFromPendingHost(file_system_type)); | 117 new PpapiPluginMsg_FileSystem_CreateFromPendingHost(file_system_type)); |
118 | 118 |
119 browser_host_create_message->reset( | 119 browser_host_create_message->reset( |
120 new PpapiHostMsg_FileSystem_CreateFromRenderer(root_url.spec(), | 120 new PpapiHostMsg_FileSystem_CreateFromRenderer(root_url.spec(), |
121 file_system_type)); | 121 file_system_type)); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
156 // blink::WebMediaStreamTrack track = host->track(); | 156 // blink::WebMediaStreamTrack track = host->track(); |
157 // *dom_video_track = track.toV8Value(); | 157 // *dom_video_track = track.toV8Value(); |
158 return false; | 158 return false; |
159 } | 159 } |
160 | 160 |
161 bool DOMMediaStreamTrackToResource( | 161 bool DOMMediaStreamTrackToResource( |
162 PP_Instance instance, | 162 PP_Instance instance, |
163 RendererPpapiHost* host, | 163 RendererPpapiHost* host, |
164 const blink::WebDOMMediaStreamTrack& dom_media_stream_track, | 164 const blink::WebDOMMediaStreamTrack& dom_media_stream_track, |
165 int* pending_renderer_id, | 165 int* pending_renderer_id, |
166 scoped_ptr<IPC::Message>* create_message) { | 166 std::unique_ptr<IPC::Message>* create_message) { |
167 DCHECK(!dom_media_stream_track.isNull()); | 167 DCHECK(!dom_media_stream_track.isNull()); |
168 *pending_renderer_id = 0; | 168 *pending_renderer_id = 0; |
169 #if defined(ENABLE_WEBRTC) | 169 #if defined(ENABLE_WEBRTC) |
170 const blink::WebMediaStreamTrack track = dom_media_stream_track.component(); | 170 const blink::WebMediaStreamTrack track = dom_media_stream_track.component(); |
171 const std::string id = track.source().id().utf8(); | 171 const std::string id = track.source().id().utf8(); |
172 | 172 |
173 if (track.source().getType() == blink::WebMediaStreamSource::TypeVideo) { | 173 if (track.source().getType() == blink::WebMediaStreamSource::TypeVideo) { |
174 *pending_renderer_id = host->GetPpapiHost()->AddPendingResourceHost( | 174 *pending_renderer_id = host->GetPpapiHost()->AddPendingResourceHost( |
175 scoped_ptr<ppapi::host::ResourceHost>( | 175 std::unique_ptr<ppapi::host::ResourceHost>( |
176 new PepperMediaStreamVideoTrackHost(host, instance, 0, track))); | 176 new PepperMediaStreamVideoTrackHost(host, instance, 0, track))); |
177 if (*pending_renderer_id == 0) | 177 if (*pending_renderer_id == 0) |
178 return false; | 178 return false; |
179 | 179 |
180 create_message->reset( | 180 create_message->reset( |
181 new PpapiPluginMsg_MediaStreamVideoTrack_CreateFromPendingHost(id)); | 181 new PpapiPluginMsg_MediaStreamVideoTrack_CreateFromPendingHost(id)); |
182 return true; | 182 return true; |
183 } else if (track.source().getType() == | 183 } else if (track.source().getType() == |
184 blink::WebMediaStreamSource::TypeAudio) { | 184 blink::WebMediaStreamSource::TypeAudio) { |
185 *pending_renderer_id = host->GetPpapiHost()->AddPendingResourceHost( | 185 *pending_renderer_id = host->GetPpapiHost()->AddPendingResourceHost( |
186 scoped_ptr<ppapi::host::ResourceHost>( | 186 std::unique_ptr<ppapi::host::ResourceHost>( |
187 new PepperMediaStreamAudioTrackHost(host, instance, 0, track))); | 187 new PepperMediaStreamAudioTrackHost(host, instance, 0, track))); |
188 if (*pending_renderer_id == 0) | 188 if (*pending_renderer_id == 0) |
189 return false; | 189 return false; |
190 | 190 |
191 create_message->reset( | 191 create_message->reset( |
192 new PpapiPluginMsg_MediaStreamAudioTrack_CreateFromPendingHost(id)); | 192 new PpapiPluginMsg_MediaStreamAudioTrack_CreateFromPendingHost(id)); |
193 return true; | 193 return true; |
194 } | 194 } |
195 #endif | 195 #endif |
196 return false; | 196 return false; |
(...skipping 19 matching lines...) Expand all Loading... |
216 v8::Context::Scope context_scope(context); | 216 v8::Context::Scope context_scope(context); |
217 v8::HandleScope handle_scope(context->GetIsolate()); | 217 v8::HandleScope handle_scope(context->GetIsolate()); |
218 RendererPpapiHost* host = RendererPpapiHost::GetForPPInstance(instance_); | 218 RendererPpapiHost* host = RendererPpapiHost::GetForPPInstance(instance_); |
219 | 219 |
220 *was_resource = false; | 220 *was_resource = false; |
221 | 221 |
222 blink::WebDOMFileSystem dom_file_system = | 222 blink::WebDOMFileSystem dom_file_system = |
223 blink::WebDOMFileSystem::fromV8Value(val); | 223 blink::WebDOMFileSystem::fromV8Value(val); |
224 if (!dom_file_system.isNull()) { | 224 if (!dom_file_system.isNull()) { |
225 int pending_renderer_id; | 225 int pending_renderer_id; |
226 scoped_ptr<IPC::Message> create_message; | 226 std::unique_ptr<IPC::Message> create_message; |
227 scoped_ptr<IPC::Message> browser_host_create_message; | 227 std::unique_ptr<IPC::Message> browser_host_create_message; |
228 if (!DOMFileSystemToResource(instance_, | 228 if (!DOMFileSystemToResource(instance_, |
229 host, | 229 host, |
230 dom_file_system, | 230 dom_file_system, |
231 &pending_renderer_id, | 231 &pending_renderer_id, |
232 &create_message, | 232 &create_message, |
233 &browser_host_create_message)) { | 233 &browser_host_create_message)) { |
234 return false; | 234 return false; |
235 } | 235 } |
236 DCHECK(create_message); | 236 DCHECK(create_message); |
237 DCHECK(browser_host_create_message); | 237 DCHECK(browser_host_create_message); |
238 scoped_refptr<HostResourceVar> result_var = | 238 scoped_refptr<HostResourceVar> result_var = |
239 CreateResourceVarWithBrowserHost( | 239 CreateResourceVarWithBrowserHost( |
240 pending_renderer_id, *create_message, *browser_host_create_message); | 240 pending_renderer_id, *create_message, *browser_host_create_message); |
241 *result = result_var->GetPPVar(); | 241 *result = result_var->GetPPVar(); |
242 *was_resource = true; | 242 *was_resource = true; |
243 return true; | 243 return true; |
244 } | 244 } |
245 | 245 |
246 blink::WebDOMMediaStreamTrack dom_media_stream_track = | 246 blink::WebDOMMediaStreamTrack dom_media_stream_track = |
247 blink::WebDOMMediaStreamTrack::fromV8Value(val); | 247 blink::WebDOMMediaStreamTrack::fromV8Value(val); |
248 if (!dom_media_stream_track.isNull()) { | 248 if (!dom_media_stream_track.isNull()) { |
249 int pending_renderer_id; | 249 int pending_renderer_id; |
250 scoped_ptr<IPC::Message> create_message; | 250 std::unique_ptr<IPC::Message> create_message; |
251 if (!DOMMediaStreamTrackToResource(instance_, | 251 if (!DOMMediaStreamTrackToResource(instance_, |
252 host, | 252 host, |
253 dom_media_stream_track, | 253 dom_media_stream_track, |
254 &pending_renderer_id, | 254 &pending_renderer_id, |
255 &create_message)) { | 255 &create_message)) { |
256 return false; | 256 return false; |
257 } | 257 } |
258 DCHECK(create_message); | 258 DCHECK(create_message); |
259 scoped_refptr<HostResourceVar> result_var = | 259 scoped_refptr<HostResourceVar> result_var = |
260 CreateResourceVar(pending_renderer_id, *create_message); | 260 CreateResourceVar(pending_renderer_id, *create_message); |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
347 const IPC::Message& create_message, | 347 const IPC::Message& create_message, |
348 const IPC::Message& browser_host_create_message) { | 348 const IPC::Message& browser_host_create_message) { |
349 scoped_refptr<HostResourceVar> result = | 349 scoped_refptr<HostResourceVar> result = |
350 CreateResourceVar(pending_renderer_id, create_message); | 350 CreateResourceVar(pending_renderer_id, create_message); |
351 browser_host_create_messages_.push_back(browser_host_create_message); | 351 browser_host_create_messages_.push_back(browser_host_create_message); |
352 browser_vars_.push_back(result); | 352 browser_vars_.push_back(result); |
353 return result; | 353 return result; |
354 } | 354 } |
355 | 355 |
356 } // namespace content | 356 } // namespace content |
OLD | NEW |