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 "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
9 #include "content/public/renderer/renderer_ppapi_host.h" | 9 #include "content/public/renderer/renderer_ppapi_host.h" |
10 #include "content/renderer/pepper/pepper_file_system_host.h" | 10 #include "content/renderer/pepper/pepper_file_system_host.h" |
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
190 return true; | 190 return true; |
191 } | 191 } |
192 #endif | 192 #endif |
193 return false; | 193 return false; |
194 } | 194 } |
195 | 195 |
196 } // namespace | 196 } // namespace |
197 | 197 |
198 ResourceConverter::~ResourceConverter() {} | 198 ResourceConverter::~ResourceConverter() {} |
199 | 199 |
200 ResourceConverterImpl::ResourceConverterImpl(PP_Instance instance, | 200 ResourceConverterImpl::ResourceConverterImpl(PP_Instance instance) |
201 RendererPpapiHost* host) | 201 : instance_(instance) {} |
202 : instance_(instance), host_(host) {} | |
203 | 202 |
204 ResourceConverterImpl::~ResourceConverterImpl() { | 203 ResourceConverterImpl::~ResourceConverterImpl() { |
205 // Verify Flush() was called. | 204 // Verify Flush() was called. |
206 DCHECK(browser_host_create_messages_.empty()); | 205 DCHECK(browser_host_create_messages_.empty()); |
207 DCHECK(browser_vars_.empty()); | 206 DCHECK(browser_vars_.empty()); |
208 } | 207 } |
209 | 208 |
210 bool ResourceConverterImpl::FromV8Value(v8::Handle<v8::Object> val, | 209 bool ResourceConverterImpl::FromV8Value(v8::Handle<v8::Object> val, |
211 v8::Handle<v8::Context> context, | 210 v8::Handle<v8::Context> context, |
212 PP_Var* result, | 211 PP_Var* result, |
213 bool* was_resource) { | 212 bool* was_resource) { |
214 v8::Context::Scope context_scope(context); | 213 v8::Context::Scope context_scope(context); |
215 v8::HandleScope handle_scope(context->GetIsolate()); | 214 v8::HandleScope handle_scope(context->GetIsolate()); |
| 215 RendererPpapiHost* host = RendererPpapiHost::GetForPPInstance(instance_); |
216 | 216 |
217 *was_resource = false; | 217 *was_resource = false; |
218 | 218 |
219 blink::WebDOMFileSystem dom_file_system = | 219 blink::WebDOMFileSystem dom_file_system = |
220 blink::WebDOMFileSystem::fromV8Value(val); | 220 blink::WebDOMFileSystem::fromV8Value(val); |
221 if (!dom_file_system.isNull()) { | 221 if (!dom_file_system.isNull()) { |
222 int pending_renderer_id; | 222 int pending_renderer_id; |
223 scoped_ptr<IPC::Message> create_message; | 223 scoped_ptr<IPC::Message> create_message; |
224 scoped_ptr<IPC::Message> browser_host_create_message; | 224 scoped_ptr<IPC::Message> browser_host_create_message; |
225 if (!DOMFileSystemToResource(instance_, | 225 if (!DOMFileSystemToResource(instance_, |
226 host_, | 226 host, |
227 dom_file_system, | 227 dom_file_system, |
228 &pending_renderer_id, | 228 &pending_renderer_id, |
229 &create_message, | 229 &create_message, |
230 &browser_host_create_message)) { | 230 &browser_host_create_message)) { |
231 return false; | 231 return false; |
232 } | 232 } |
233 DCHECK(create_message); | 233 DCHECK(create_message); |
234 DCHECK(browser_host_create_message); | 234 DCHECK(browser_host_create_message); |
235 scoped_refptr<HostResourceVar> result_var = | 235 scoped_refptr<HostResourceVar> result_var = |
236 CreateResourceVarWithBrowserHost( | 236 CreateResourceVarWithBrowserHost( |
237 pending_renderer_id, *create_message, *browser_host_create_message); | 237 pending_renderer_id, *create_message, *browser_host_create_message); |
238 *result = result_var->GetPPVar(); | 238 *result = result_var->GetPPVar(); |
239 *was_resource = true; | 239 *was_resource = true; |
240 return true; | 240 return true; |
241 } | 241 } |
242 | 242 |
243 blink::WebDOMMediaStreamTrack dom_media_stream_track = | 243 blink::WebDOMMediaStreamTrack dom_media_stream_track = |
244 blink::WebDOMMediaStreamTrack::fromV8Value(val); | 244 blink::WebDOMMediaStreamTrack::fromV8Value(val); |
245 if (!dom_media_stream_track.isNull()) { | 245 if (!dom_media_stream_track.isNull()) { |
246 int pending_renderer_id; | 246 int pending_renderer_id; |
247 scoped_ptr<IPC::Message> create_message; | 247 scoped_ptr<IPC::Message> create_message; |
248 if (!DOMMediaStreamTrackToResource(instance_, | 248 if (!DOMMediaStreamTrackToResource(instance_, |
249 host_, | 249 host, |
250 dom_media_stream_track, | 250 dom_media_stream_track, |
251 &pending_renderer_id, | 251 &pending_renderer_id, |
252 &create_message)) { | 252 &create_message)) { |
253 return false; | 253 return false; |
254 } | 254 } |
255 DCHECK(create_message); | 255 DCHECK(create_message); |
256 scoped_refptr<HostResourceVar> result_var = | 256 scoped_refptr<HostResourceVar> result_var = |
257 CreateResourceVar(pending_renderer_id, *create_message); | 257 CreateResourceVar(pending_renderer_id, *create_message); |
258 *result = result_var->GetPPVar(); | 258 *result = result_var->GetPPVar(); |
259 *was_resource = true; | 259 *was_resource = true; |
260 return true; | 260 return true; |
261 } | 261 } |
262 | 262 |
263 // The value was not convertible to a resource. Return true with | 263 // The value was not convertible to a resource. Return true with |
264 // |was_resource| set to false. As per the interface of FromV8Value, |result| | 264 // |was_resource| set to false. As per the interface of FromV8Value, |result| |
265 // may be left unmodified in this case. | 265 // may be left unmodified in this case. |
266 return true; | 266 return true; |
267 } | 267 } |
268 | 268 |
269 void ResourceConverterImpl::Reset() { | 269 void ResourceConverterImpl::Reset() { |
270 browser_host_create_messages_.clear(); | 270 browser_host_create_messages_.clear(); |
271 browser_vars_.clear(); | 271 browser_vars_.clear(); |
272 } | 272 } |
273 | 273 |
274 bool ResourceConverterImpl::NeedsFlush() { | 274 bool ResourceConverterImpl::NeedsFlush() { |
275 return !browser_host_create_messages_.empty(); | 275 return !browser_host_create_messages_.empty(); |
276 } | 276 } |
277 | 277 |
278 void ResourceConverterImpl::Flush(const base::Callback<void(bool)>& callback) { | 278 void ResourceConverterImpl::Flush(const base::Callback<void(bool)>& callback) { |
279 host_->CreateBrowserResourceHosts( | 279 RendererPpapiHost::GetForPPInstance(instance_)->CreateBrowserResourceHosts( |
280 instance_, | 280 instance_, |
281 browser_host_create_messages_, | 281 browser_host_create_messages_, |
282 base::Bind(&FlushComplete, callback, browser_vars_)); | 282 base::Bind(&FlushComplete, callback, browser_vars_)); |
283 browser_host_create_messages_.clear(); | 283 browser_host_create_messages_.clear(); |
284 browser_vars_.clear(); | 284 browser_vars_.clear(); |
285 } | 285 } |
286 | 286 |
287 bool ResourceConverterImpl::ToV8Value(const PP_Var& var, | 287 bool ResourceConverterImpl::ToV8Value(const PP_Var& var, |
288 v8::Handle<v8::Context> context, | 288 v8::Handle<v8::Context> context, |
289 v8::Handle<v8::Value>* result) { | 289 v8::Handle<v8::Value>* result) { |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
344 const IPC::Message& create_message, | 344 const IPC::Message& create_message, |
345 const IPC::Message& browser_host_create_message) { | 345 const IPC::Message& browser_host_create_message) { |
346 scoped_refptr<HostResourceVar> result = | 346 scoped_refptr<HostResourceVar> result = |
347 CreateResourceVar(pending_renderer_id, create_message); | 347 CreateResourceVar(pending_renderer_id, create_message); |
348 browser_host_create_messages_.push_back(browser_host_create_message); | 348 browser_host_create_messages_.push_back(browser_host_create_message); |
349 browser_vars_.push_back(result); | 349 browser_vars_.push_back(result); |
350 return result; | 350 return result; |
351 } | 351 } |
352 | 352 |
353 } // namespace content | 353 } // namespace content |
OLD | NEW |