OLD | NEW |
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 "ppapi/proxy/ppb_file_ref_proxy.h" | 5 #include "ppapi/proxy/ppb_file_ref_proxy.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "ppapi/c/pp_errors.h" | 10 #include "ppapi/c/pp_errors.h" |
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
197 | 197 |
198 PPB_FileRef_Proxy::PPB_FileRef_Proxy(Dispatcher* dispatcher) | 198 PPB_FileRef_Proxy::PPB_FileRef_Proxy(Dispatcher* dispatcher) |
199 : InterfaceProxy(dispatcher), | 199 : InterfaceProxy(dispatcher), |
200 callback_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { | 200 callback_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { |
201 } | 201 } |
202 | 202 |
203 PPB_FileRef_Proxy::~PPB_FileRef_Proxy() { | 203 PPB_FileRef_Proxy::~PPB_FileRef_Proxy() { |
204 } | 204 } |
205 | 205 |
206 // static | 206 // static |
207 PP_Resource PPB_FileRef_Proxy::CreateProxyResource(PP_Resource file_system, | 207 PP_Resource PPB_FileRef_Proxy::CreateProxyResource(PP_Instance instance, |
| 208 PP_Resource file_system, |
208 const char* path) { | 209 const char* path) { |
209 Resource* file_system_object = | |
210 PpapiGlobals::Get()->GetResourceTracker()->GetResource(file_system); | |
211 if (!file_system_object) | |
212 return 0; | |
213 | |
214 PPB_FileRef_CreateInfo create_info; | 210 PPB_FileRef_CreateInfo create_info; |
215 PluginDispatcher::GetForResource(file_system_object)->Send( | 211 PluginDispatcher::GetForInstance(instance)->Send( |
216 new PpapiHostMsg_PPBFileRef_Create( | 212 new PpapiHostMsg_PPBFileRef_Create( |
217 API_ID_PPB_FILE_REF, file_system_object->host_resource(), | 213 API_ID_PPB_FILE_REF, instance, file_system, path, &create_info)); |
218 path, &create_info)); | |
219 return PPB_FileRef_Proxy::DeserializeFileRef(create_info); | 214 return PPB_FileRef_Proxy::DeserializeFileRef(create_info); |
220 } | 215 } |
221 | 216 |
222 bool PPB_FileRef_Proxy::OnMessageReceived(const IPC::Message& msg) { | 217 bool PPB_FileRef_Proxy::OnMessageReceived(const IPC::Message& msg) { |
223 bool handled = true; | 218 bool handled = true; |
224 IPC_BEGIN_MESSAGE_MAP(PPB_FileRef_Proxy, msg) | 219 IPC_BEGIN_MESSAGE_MAP(PPB_FileRef_Proxy, msg) |
225 #if !defined(OS_NACL) | 220 #if !defined(OS_NACL) |
226 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFileRef_Create, OnMsgCreate) | 221 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFileRef_Create, OnMsgCreate) |
227 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFileRef_GetParent, OnMsgGetParent) | 222 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFileRef_GetParent, OnMsgGetParent) |
228 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFileRef_MakeDirectory, | 223 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFileRef_MakeDirectory, |
(...skipping 25 matching lines...) Expand all Loading... |
254 | 249 |
255 // static | 250 // static |
256 PP_Resource PPB_FileRef_Proxy::DeserializeFileRef( | 251 PP_Resource PPB_FileRef_Proxy::DeserializeFileRef( |
257 const PPB_FileRef_CreateInfo& serialized) { | 252 const PPB_FileRef_CreateInfo& serialized) { |
258 if (serialized.resource.is_null()) | 253 if (serialized.resource.is_null()) |
259 return 0; // Resource invalid. | 254 return 0; // Resource invalid. |
260 return (new FileRef(serialized))->GetReference(); | 255 return (new FileRef(serialized))->GetReference(); |
261 } | 256 } |
262 | 257 |
263 #if !defined(OS_NACL) | 258 #if !defined(OS_NACL) |
264 void PPB_FileRef_Proxy::OnMsgCreate(const HostResource& file_system, | 259 void PPB_FileRef_Proxy::OnMsgCreate(PP_Instance pp_instance, |
| 260 PP_Resource file_system, |
265 const std::string& path, | 261 const std::string& path, |
266 PPB_FileRef_CreateInfo* result) { | 262 PPB_FileRef_CreateInfo* result) { |
267 thunk::EnterResourceCreation enter(file_system.instance()); | 263 thunk::EnterResourceCreation enter(pp_instance); |
268 if (enter.failed()) | 264 if (enter.failed()) |
269 return; | 265 return; |
| 266 |
270 PP_Resource resource = enter.functions()->CreateFileRef( | 267 PP_Resource resource = enter.functions()->CreateFileRef( |
271 file_system.host_resource(), path.c_str()); | 268 pp_instance, file_system, path.c_str()); |
272 if (!resource) | 269 if (!resource) |
273 return; // CreateInfo default constructor initializes to 0. | 270 return; // CreateInfo default constructor initializes to 0. |
274 SerializeFileRef(resource, result); | 271 SerializeFileRef(resource, result); |
275 } | 272 } |
276 | 273 |
277 void PPB_FileRef_Proxy::OnMsgGetParent(const HostResource& host_resource, | 274 void PPB_FileRef_Proxy::OnMsgGetParent(const HostResource& host_resource, |
278 PPB_FileRef_CreateInfo* result) { | 275 PPB_FileRef_CreateInfo* result) { |
279 EnterHostFromHostResource<PPB_FileRef_API> enter(host_resource); | 276 EnterHostFromHostResource<PPB_FileRef_API> enter(host_resource); |
280 if (enter.succeeded()) | 277 if (enter.succeeded()) |
281 SerializeFileRef(enter.object()->GetParent(), result); | 278 SerializeFileRef(enter.object()->GetParent(), result); |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
384 const HostResource& host_resource, | 381 const HostResource& host_resource, |
385 base::internal::OwnedWrapper<PP_FileInfo> info, | 382 base::internal::OwnedWrapper<PP_FileInfo> info, |
386 uint32_t callback_id) { | 383 uint32_t callback_id) { |
387 Send(new PpapiMsg_PPBFileRef_QueryCallbackComplete( | 384 Send(new PpapiMsg_PPBFileRef_QueryCallbackComplete( |
388 API_ID_PPB_FILE_REF, host_resource, *info.get(), callback_id, result)); | 385 API_ID_PPB_FILE_REF, host_resource, *info.get(), callback_id, result)); |
389 } | 386 } |
390 #endif // !defined(OS_NACL) | 387 #endif // !defined(OS_NACL) |
391 | 388 |
392 } // namespace proxy | 389 } // namespace proxy |
393 } // namespace ppapi | 390 } // namespace ppapi |
OLD | NEW |