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 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
115 new PpapiPluginMsg_FileSystem_CreateFromPendingHost(file_system_type)); | 115 new PpapiPluginMsg_FileSystem_CreateFromPendingHost(file_system_type)); |
116 | 116 |
117 browser_host_create_message->reset( | 117 browser_host_create_message->reset( |
118 new PpapiHostMsg_FileSystem_CreateFromRenderer(root_url.spec(), | 118 new PpapiHostMsg_FileSystem_CreateFromRenderer(root_url.spec(), |
119 file_system_type)); | 119 file_system_type)); |
120 return true; | 120 return true; |
121 } | 121 } |
122 | 122 |
123 bool ResourceHostToDOMFileSystem( | 123 bool ResourceHostToDOMFileSystem( |
124 content::PepperFileSystemHost* file_system_host, | 124 content::PepperFileSystemHost* file_system_host, |
125 v8::Handle<v8::Context> context, | 125 v8::Local<v8::Context> context, |
126 v8::Handle<v8::Value>* dom_file_system) { | 126 v8::Local<v8::Value>* dom_file_system) { |
127 GURL root_url = file_system_host->GetRootUrl(); | 127 GURL root_url = file_system_host->GetRootUrl(); |
128 GURL origin; | 128 GURL origin; |
129 storage::FileSystemType type; | 129 storage::FileSystemType type; |
130 base::FilePath virtual_path; | 130 base::FilePath virtual_path; |
131 storage::ParseFileSystemSchemeURL(root_url, &origin, &type, &virtual_path); | 131 storage::ParseFileSystemSchemeURL(root_url, &origin, &type, &virtual_path); |
132 | 132 |
133 std::string name = storage::GetFileSystemName(origin, type); | 133 std::string name = storage::GetFileSystemName(origin, type); |
134 blink::WebFileSystemType blink_type; | 134 blink::WebFileSystemType blink_type; |
135 if (!FileApiFileSystemTypeToWebFileSystemType(type, &blink_type)) | 135 if (!FileApiFileSystemTypeToWebFileSystemType(type, &blink_type)) |
136 return false; | 136 return false; |
137 blink::WebLocalFrame* frame = blink::WebLocalFrame::frameForContext(context); | 137 blink::WebLocalFrame* frame = blink::WebLocalFrame::frameForContext(context); |
138 blink::WebDOMFileSystem web_dom_file_system = blink::WebDOMFileSystem::create( | 138 blink::WebDOMFileSystem web_dom_file_system = blink::WebDOMFileSystem::create( |
139 frame, | 139 frame, |
140 blink_type, | 140 blink_type, |
141 blink::WebString::fromUTF8(name), | 141 blink::WebString::fromUTF8(name), |
142 root_url, | 142 root_url, |
143 blink::WebDOMFileSystem::SerializableTypeSerializable); | 143 blink::WebDOMFileSystem::SerializableTypeSerializable); |
144 *dom_file_system = | 144 *dom_file_system = |
145 web_dom_file_system.toV8Value(context->Global(), context->GetIsolate()); | 145 web_dom_file_system.toV8Value(context->Global(), context->GetIsolate()); |
146 return true; | 146 return true; |
147 } | 147 } |
148 | 148 |
149 bool ResourceHostToDOMMediaStreamVideoTrack( | 149 bool ResourceHostToDOMMediaStreamVideoTrack( |
150 content::PepperMediaStreamVideoTrackHost* host, | 150 content::PepperMediaStreamVideoTrackHost* host, |
151 v8::Handle<v8::Context> context, | 151 v8::Local<v8::Context> context, |
152 v8::Handle<v8::Value>* dom_video_track) { | 152 v8::Local<v8::Value>* dom_video_track) { |
153 // TODO(ronghuawu): Implement this once crbug/352219 is resolved. | 153 // TODO(ronghuawu): Implement this once crbug/352219 is resolved. |
154 // blink::WebMediaStreamTrack track = host->track(); | 154 // blink::WebMediaStreamTrack track = host->track(); |
155 // *dom_video_track = track.toV8Value(); | 155 // *dom_video_track = track.toV8Value(); |
156 return false; | 156 return false; |
157 } | 157 } |
158 | 158 |
159 bool DOMMediaStreamTrackToResource( | 159 bool DOMMediaStreamTrackToResource( |
160 PP_Instance instance, | 160 PP_Instance instance, |
161 RendererPpapiHost* host, | 161 RendererPpapiHost* host, |
162 const blink::WebDOMMediaStreamTrack& dom_media_stream_track, | 162 const blink::WebDOMMediaStreamTrack& dom_media_stream_track, |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
199 | 199 |
200 ResourceConverterImpl::ResourceConverterImpl(PP_Instance instance) | 200 ResourceConverterImpl::ResourceConverterImpl(PP_Instance instance) |
201 : instance_(instance) {} | 201 : instance_(instance) {} |
202 | 202 |
203 ResourceConverterImpl::~ResourceConverterImpl() { | 203 ResourceConverterImpl::~ResourceConverterImpl() { |
204 // Verify Flush() was called. | 204 // Verify Flush() was called. |
205 DCHECK(browser_host_create_messages_.empty()); | 205 DCHECK(browser_host_create_messages_.empty()); |
206 DCHECK(browser_vars_.empty()); | 206 DCHECK(browser_vars_.empty()); |
207 } | 207 } |
208 | 208 |
209 bool ResourceConverterImpl::FromV8Value(v8::Handle<v8::Object> val, | 209 bool ResourceConverterImpl::FromV8Value(v8::Local<v8::Object> val, |
210 v8::Handle<v8::Context> context, | 210 v8::Local<v8::Context> context, |
211 PP_Var* result, | 211 PP_Var* result, |
212 bool* was_resource) { | 212 bool* was_resource) { |
213 v8::Context::Scope context_scope(context); | 213 v8::Context::Scope context_scope(context); |
214 v8::HandleScope handle_scope(context->GetIsolate()); | 214 v8::HandleScope handle_scope(context->GetIsolate()); |
215 RendererPpapiHost* host = RendererPpapiHost::GetForPPInstance(instance_); | 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); |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
278 void ResourceConverterImpl::Flush(const base::Callback<void(bool)>& callback) { | 278 void ResourceConverterImpl::Flush(const base::Callback<void(bool)>& callback) { |
279 RendererPpapiHost::GetForPPInstance(instance_)->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::Local<v8::Context> context, |
289 v8::Handle<v8::Value>* result) { | 289 v8::Local<v8::Value>* result) { |
290 DCHECK(var.type == PP_VARTYPE_RESOURCE); | 290 DCHECK(var.type == PP_VARTYPE_RESOURCE); |
291 | 291 |
292 ResourceVar* resource = ResourceVar::FromPPVar(var); | 292 ResourceVar* resource = ResourceVar::FromPPVar(var); |
293 if (!resource) { | 293 if (!resource) { |
294 NOTREACHED(); | 294 NOTREACHED(); |
295 return false; | 295 return false; |
296 } | 296 } |
297 PP_Resource resource_id = resource->GetPPResource(); | 297 PP_Resource resource_id = resource->GetPPResource(); |
298 | 298 |
299 // Get the renderer-side resource host for this resource. | 299 // Get the renderer-side resource host for this resource. |
(...skipping 44 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 |