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

Side by Side Diff: ppapi/proxy/ppb_file_ref_proxy.cc

Issue 7006022: Revert 87415 - Convert more interfaces to the new thunk system. This goes up to and including (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 6 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
« no previous file with comments | « ppapi/proxy/ppb_file_ref_proxy.h ('k') | ppapi/proxy/ppb_file_system_proxy.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "ppapi/c/dev/ppb_file_ref_dev.h" 7 #include "ppapi/c/dev/ppb_file_ref_dev.h"
8 #include "ppapi/c/pp_errors.h" 8 #include "ppapi/c/pp_errors.h"
9 #include "ppapi/c/private/ppb_proxy_private.h" 9 #include "ppapi/c/private/ppb_proxy_private.h"
10 #include "ppapi/proxy/enter_proxy.h"
11 #include "ppapi/proxy/host_dispatcher.h" 10 #include "ppapi/proxy/host_dispatcher.h"
12 #include "ppapi/proxy/plugin_dispatcher.h" 11 #include "ppapi/proxy/plugin_dispatcher.h"
13 #include "ppapi/proxy/plugin_resource.h" 12 #include "ppapi/proxy/plugin_resource.h"
14 #include "ppapi/proxy/ppapi_messages.h" 13 #include "ppapi/proxy/ppapi_messages.h"
15 #include "ppapi/proxy/serialized_var.h" 14 #include "ppapi/proxy/serialized_var.h"
16 #include "ppapi/thunk/ppb_file_ref_api.h"
17 #include "ppapi/thunk/resource_creation_api.h"
18 #include "ppapi/thunk/thunk.h"
19
20 using ppapi::thunk::EnterFunctionNoLock;
21 using ppapi::thunk::EnterResourceNoLock;
22 using ppapi::thunk::PPB_FileRef_API;
23 using ppapi::thunk::ResourceCreationAPI;
24 15
25 namespace pp { 16 namespace pp {
26 namespace proxy { 17 namespace proxy {
27 18
28 namespace { 19 // This object maintains most of the state of the ref in the plugin for fast
29 20 // querying. It's all set in the constructor from the "create info" sent from
30 InterfaceProxy* CreateFileRefProxy(Dispatcher* dispatcher, 21 // the host.
31 const void* target_interface) { 22 class FileRef : public PluginResource {
32 return new PPB_FileRef_Proxy(dispatcher, target_interface);
33 }
34
35 } // namespace
36
37 class FileRef : public PluginResource, public PPB_FileRef_API {
38 public: 23 public:
39 explicit FileRef(const PPBFileRef_CreateInfo& info); 24 FileRef(const PPBFileRef_CreateInfo& info);
40 virtual ~FileRef(); 25 virtual ~FileRef();
41 26
42 // ResourceObjectBase overrides. 27 virtual FileRef* AsFileRef();
43 virtual PPB_FileRef_API* AsPPB_FileRef_API() OVERRIDE;
44 28
45 // PPB_FileRef_API implementation. 29 PP_FileSystemType_Dev file_system_type() const { return file_system_type_; }
46 virtual PP_FileSystemType_Dev GetFileSystemType() const OVERRIDE; 30 const PP_Var& path() const { return path_; }
47 virtual PP_Var GetName() const OVERRIDE; 31 const PP_Var& name() const { return name_; }
48 virtual PP_Var GetPath() const OVERRIDE;
49 virtual PP_Resource GetParent() OVERRIDE;
50 virtual int32_t MakeDirectory(PP_Bool make_ancestors,
51 PP_CompletionCallback callback) OVERRIDE;
52 virtual int32_t Touch(PP_Time last_access_time,
53 PP_Time last_modified_time,
54 PP_CompletionCallback callback) OVERRIDE;
55 virtual int32_t Delete(PP_CompletionCallback callback) OVERRIDE;
56 virtual int32_t Rename(PP_Resource new_file_ref,
57 PP_CompletionCallback callback) OVERRIDE;
58 32
59 private: 33 private:
60 PP_FileSystemType_Dev file_system_type_; 34 PP_FileSystemType_Dev file_system_type_;
61 PP_Var path_; 35 PP_Var path_;
62 PP_Var name_; 36 PP_Var name_;
63 37
64 DISALLOW_COPY_AND_ASSIGN(FileRef); 38 DISALLOW_COPY_AND_ASSIGN(FileRef);
65 }; 39 };
66 40
67 FileRef::FileRef(const PPBFileRef_CreateInfo& info) 41 FileRef::FileRef(const PPBFileRef_CreateInfo& info)
68 : PluginResource(info.resource) { 42 : PluginResource(info.resource) {
69 Dispatcher* dispatcher = PluginDispatcher::GetForInstance(instance()); 43 Dispatcher* dispatcher = PluginDispatcher::GetForInstance(instance());
70 44
71 file_system_type_ = static_cast<PP_FileSystemType_Dev>(info.file_system_type); 45 file_system_type_ = static_cast<PP_FileSystemType_Dev>(info.file_system_type);
72 46
73 name_ = ReceiveSerializedVarReturnValue(info.name).Return(dispatcher); 47 name_ = ReceiveSerializedVarReturnValue(info.name).Return(dispatcher);
74 path_ = ReceiveSerializedVarReturnValue(info.path).Return(dispatcher); 48 path_ = ReceiveSerializedVarReturnValue(info.path).Return(dispatcher);
75 } 49 }
76 50
77 FileRef::~FileRef() { 51 FileRef::~FileRef() {
78 PluginVarTracker::GetInstance()->Release(path_); 52 PluginVarTracker::GetInstance()->Release(path_);
79 PluginVarTracker::GetInstance()->Release(name_); 53 PluginVarTracker::GetInstance()->Release(name_);
80 } 54 }
81 55
82 PPB_FileRef_API* FileRef::AsPPB_FileRef_API() { 56 FileRef* FileRef::AsFileRef() {
83 return this; 57 return this;
84 } 58 }
85 59
86 PP_FileSystemType_Dev FileRef::GetFileSystemType() const { 60 namespace {
87 return file_system_type_; 61
62 bool FileRefAndDispatcherForResource(PP_Resource resource,
63 FileRef** file_ref,
64 Dispatcher** dispatcher) {
65 *file_ref = PluginResource::GetAs<FileRef>(resource);
66 if (!file_ref)
67 return false;
68 *dispatcher = PluginDispatcher::GetForInstance((*file_ref)->instance());
69 return !!(*dispatcher);
88 } 70 }
89 71
90 PP_Var FileRef::GetName() const { 72 PP_Resource Create(PP_Resource file_system, const char* path) {
91 PluginVarTracker::GetInstance()->AddRef(name_); 73 PluginResource* file_system_object =
92 return name_; 74 PluginResourceTracker::GetInstance()->GetResourceObject(file_system);
93 } 75 if (!file_system_object)
76 return 0;
94 77
95 PP_Var FileRef::GetPath() const { 78 Dispatcher* dispatcher =
96 PluginVarTracker::GetInstance()->AddRef(path_); 79 PluginDispatcher::GetForInstance(file_system_object->instance());
97 return path_; 80 if (!dispatcher)
98 } 81 return 0;
99 82
100 PP_Resource FileRef::GetParent() {
101 PPBFileRef_CreateInfo create_info; 83 PPBFileRef_CreateInfo create_info;
102 GetDispatcher()->Send(new PpapiHostMsg_PPBFileRef_GetParent( 84 dispatcher->Send(new PpapiHostMsg_PPBFileRef_Create(
103 INTERFACE_ID_PPB_FILE_REF, host_resource(), &create_info)); 85 INTERFACE_ID_PPB_FILE_REF, file_system_object->host_resource(),
86 path, &create_info));
104 return PPB_FileRef_Proxy::DeserializeFileRef(create_info); 87 return PPB_FileRef_Proxy::DeserializeFileRef(create_info);
105 } 88 }
106 89
107 int32_t FileRef::MakeDirectory(PP_Bool make_ancestors, 90 PP_Bool IsFileRef(PP_Resource resource) {
108 PP_CompletionCallback callback) { 91 FileRef* object = PluginResource::GetAs<FileRef>(resource);
109 GetDispatcher()->Send(new PpapiHostMsg_PPBFileRef_MakeDirectory( 92 return BoolToPPBool(!!object);
110 INTERFACE_ID_PPB_FILE_REF, host_resource(), make_ancestors, 93 }
111 GetDispatcher()->callback_tracker().SendCallback(callback))); 94
95 PP_FileSystemType_Dev GetFileSystemType(PP_Resource file_ref) {
96 FileRef* object = PluginResource::GetAs<FileRef>(file_ref);
97 if (!object)
98 return PP_FILESYSTEMTYPE_EXTERNAL;
99 return object->file_system_type();
100 }
101
102 PP_Var GetName(PP_Resource file_ref) {
103 FileRef* object = PluginResource::GetAs<FileRef>(file_ref);
104 if (!object)
105 return PP_MakeUndefined();
106
107 PluginVarTracker::GetInstance()->AddRef(object->name());
108 return object->name();
109 }
110
111 PP_Var GetPath(PP_Resource file_ref) {
112 FileRef* object = PluginResource::GetAs<FileRef>(file_ref);
113 if (!object)
114 return PP_MakeUndefined();
115
116 PluginVarTracker::GetInstance()->AddRef(object->path());
117 return object->path();
118 }
119
120 PP_Resource GetParent(PP_Resource file_ref) {
121 FileRef* object;
122 Dispatcher* dispatcher;
123 if (!FileRefAndDispatcherForResource(file_ref, &object, &dispatcher))
124 return 0;
125
126 PPBFileRef_CreateInfo create_info;
127 dispatcher->Send(new PpapiHostMsg_PPBFileRef_GetParent(
128 INTERFACE_ID_PPB_FILE_REF, object->host_resource(), &create_info));
129 return PPB_FileRef_Proxy::DeserializeFileRef(create_info);
130 }
131
132 int32_t MakeDirectory(PP_Resource directory_ref,
133 PP_Bool make_ancestors,
134 struct PP_CompletionCallback callback) {
135 FileRef* object;
136 Dispatcher* dispatcher;
137 if (!FileRefAndDispatcherForResource(directory_ref, &object, &dispatcher))
138 return PP_ERROR_BADRESOURCE;
139
140 dispatcher->Send(new PpapiHostMsg_PPBFileRef_MakeDirectory(
141 INTERFACE_ID_PPB_FILE_REF, object->host_resource(), make_ancestors,
142 dispatcher->callback_tracker().SendCallback(callback)));
112 return PP_OK_COMPLETIONPENDING; 143 return PP_OK_COMPLETIONPENDING;
113 } 144 }
114 145
115 int32_t FileRef::Touch(PP_Time last_access_time, 146 int32_t Touch(PP_Resource file_ref,
116 PP_Time last_modified_time, 147 PP_Time last_access_time,
117 PP_CompletionCallback callback) { 148 PP_Time last_modified_time,
118 GetDispatcher()->Send(new PpapiHostMsg_PPBFileRef_Touch( 149 struct PP_CompletionCallback callback) {
119 INTERFACE_ID_PPB_FILE_REF, host_resource(), 150 FileRef* object;
151 Dispatcher* dispatcher;
152 if (!FileRefAndDispatcherForResource(file_ref, &object, &dispatcher))
153 return PP_ERROR_BADRESOURCE;
154
155 dispatcher->Send(new PpapiHostMsg_PPBFileRef_Touch(
156 INTERFACE_ID_PPB_FILE_REF, object->host_resource(),
120 last_access_time, last_modified_time, 157 last_access_time, last_modified_time,
121 GetDispatcher()->callback_tracker().SendCallback(callback))); 158 dispatcher->callback_tracker().SendCallback(callback)));
122 return PP_OK_COMPLETIONPENDING; 159 return PP_OK_COMPLETIONPENDING;
123 } 160 }
124 161
125 int32_t FileRef::Delete(PP_CompletionCallback callback) { 162 int32_t Delete(PP_Resource file_ref,
126 GetDispatcher()->Send(new PpapiHostMsg_PPBFileRef_Delete( 163 struct PP_CompletionCallback callback) {
127 INTERFACE_ID_PPB_FILE_REF, host_resource(), 164 FileRef* object;
128 GetDispatcher()->callback_tracker().SendCallback(callback))); 165 Dispatcher* dispatcher;
166 if (!FileRefAndDispatcherForResource(file_ref, &object, &dispatcher))
167 return PP_ERROR_BADRESOURCE;
168
169 dispatcher->Send(new PpapiHostMsg_PPBFileRef_Delete(
170 INTERFACE_ID_PPB_FILE_REF, object->host_resource(),
171 dispatcher->callback_tracker().SendCallback(callback)));
129 return PP_OK_COMPLETIONPENDING; 172 return PP_OK_COMPLETIONPENDING;
130 } 173 }
131 174
132 int32_t FileRef::Rename(PP_Resource new_file_ref, 175 int32_t Rename(PP_Resource file_ref,
133 PP_CompletionCallback callback) { 176 PP_Resource new_file_ref,
134 PluginResource* new_file_ref_object = 177 struct PP_CompletionCallback callback) {
135 PluginResourceTracker::GetInstance()->GetResourceObject(new_file_ref); 178 FileRef* obj1;
136 if (!new_file_ref_object || 179 Dispatcher* dispatcher1;
137 new_file_ref_object->host_resource().instance() != instance()) 180 if (!FileRefAndDispatcherForResource(file_ref, &obj1, &dispatcher1))
138 return PP_ERROR_BADRESOURCE; 181 return PP_ERROR_BADRESOURCE;
139 182
140 GetDispatcher()->Send(new PpapiHostMsg_PPBFileRef_Rename( 183 FileRef* obj2;
141 INTERFACE_ID_PPB_FILE_REF, host_resource(), 184 Dispatcher* dispatcher2;
142 new_file_ref_object->host_resource(), 185 if (!FileRefAndDispatcherForResource(new_file_ref, &obj2, &dispatcher2))
143 GetDispatcher()->callback_tracker().SendCallback(callback))); 186 return PP_ERROR_BADRESOURCE;
187
188 if (obj1->instance() != obj2->instance())
189 return PP_ERROR_BADRESOURCE;
190
191 dispatcher1->Send(new PpapiHostMsg_PPBFileRef_Rename(
192 INTERFACE_ID_PPB_FILE_REF, obj1->host_resource(),
193 obj2->host_resource(),
194 dispatcher1->callback_tracker().SendCallback(callback)));
144 return PP_OK_COMPLETIONPENDING; 195 return PP_OK_COMPLETIONPENDING;
145 } 196 }
146 197
198 const PPB_FileRef_Dev file_ref_interface = {
199 &Create,
200 &IsFileRef,
201 &GetFileSystemType,
202 &GetName,
203 &GetPath,
204 &GetParent,
205 &MakeDirectory,
206 &Touch,
207 &Delete,
208 &Rename
209 };
210
211 InterfaceProxy* CreateFileRefProxy(Dispatcher* dispatcher,
212 const void* target_interface) {
213 return new PPB_FileRef_Proxy(dispatcher, target_interface);
214 }
215
216 } // namespace
217
147 PPB_FileRef_Proxy::PPB_FileRef_Proxy(Dispatcher* dispatcher, 218 PPB_FileRef_Proxy::PPB_FileRef_Proxy(Dispatcher* dispatcher,
148 const void* target_interface) 219 const void* target_interface)
149 : InterfaceProxy(dispatcher, target_interface) { 220 : InterfaceProxy(dispatcher, target_interface) {
150 } 221 }
151 222
152 PPB_FileRef_Proxy::~PPB_FileRef_Proxy() { 223 PPB_FileRef_Proxy::~PPB_FileRef_Proxy() {
153 } 224 }
154 225
155 const InterfaceProxy::Info* PPB_FileRef_Proxy::GetInfo() { 226 const InterfaceProxy::Info* PPB_FileRef_Proxy::GetInfo() {
156 static const Info info = { 227 static const Info info = {
157 ::ppapi::thunk::GetPPB_FileRef_Thunk(), 228 &file_ref_interface,
158 PPB_FILEREF_DEV_INTERFACE, 229 PPB_FILEREF_DEV_INTERFACE,
159 INTERFACE_ID_PPB_FILE_REF, 230 INTERFACE_ID_PPB_FILE_REF,
160 false, 231 false,
161 &CreateFileRefProxy, 232 &CreateFileRefProxy,
162 }; 233 };
163 return &info; 234 return &info;
164 } 235 }
165 236
166 // static
167 PP_Resource PPB_FileRef_Proxy::CreateProxyResource(PP_Resource file_system,
168 const char* path) {
169 PluginResource* file_system_object =
170 PluginResourceTracker::GetInstance()->GetResourceObject(file_system);
171 if (!file_system_object)
172 return 0;
173
174 PPBFileRef_CreateInfo create_info;
175 file_system_object->GetDispatcher()->Send(new PpapiHostMsg_PPBFileRef_Create(
176 INTERFACE_ID_PPB_FILE_REF, file_system_object->host_resource(),
177 path, &create_info));
178 return PPB_FileRef_Proxy::DeserializeFileRef(create_info);
179 }
180
181 bool PPB_FileRef_Proxy::OnMessageReceived(const IPC::Message& msg) { 237 bool PPB_FileRef_Proxy::OnMessageReceived(const IPC::Message& msg) {
182 bool handled = true; 238 bool handled = true;
183 IPC_BEGIN_MESSAGE_MAP(PPB_FileRef_Proxy, msg) 239 IPC_BEGIN_MESSAGE_MAP(PPB_FileRef_Proxy, msg)
184 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFileRef_Create, OnMsgCreate) 240 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFileRef_Create, OnMsgCreate)
185 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFileRef_GetParent, OnMsgGetParent) 241 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFileRef_GetParent, OnMsgGetParent)
186 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFileRef_MakeDirectory, 242 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFileRef_MakeDirectory,
187 OnMsgMakeDirectory) 243 OnMsgMakeDirectory)
188 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFileRef_Touch, OnMsgTouch) 244 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFileRef_Touch, OnMsgTouch)
189 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFileRef_Delete, OnMsgDelete) 245 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFileRef_Delete, OnMsgDelete)
190 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFileRef_Rename, OnMsgRename) 246 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFileRef_Rename, OnMsgRename)
191 IPC_MESSAGE_UNHANDLED(handled = false) 247 IPC_MESSAGE_UNHANDLED(handled = false)
192 IPC_END_MESSAGE_MAP() 248 IPC_END_MESSAGE_MAP()
193 return handled; 249 return handled;
194 } 250 }
195 251
196 void PPB_FileRef_Proxy::SerializeFileRef(PP_Resource file_ref, 252 void PPB_FileRef_Proxy::SerializeFileRef(PP_Resource file_ref,
197 PPBFileRef_CreateInfo* result) { 253 PPBFileRef_CreateInfo* result) {
198 EnterResourceNoLock<PPB_FileRef_API> enter(file_ref, false);
199 if (enter.failed()) {
200 NOTREACHED();
201 return;
202 }
203
204 // We need the instance out of the resource for serializing back to the 254 // We need the instance out of the resource for serializing back to the
205 // plugin. This code can only run in the host. 255 // plugin. This code can only run in the host.
206 if (dispatcher()->IsPlugin()) { 256 if (dispatcher()->IsPlugin()) {
207 NOTREACHED(); 257 NOTREACHED();
208 return; 258 return;
209 } 259 }
210 HostDispatcher* host_dispatcher = static_cast<HostDispatcher*>(dispatcher()); 260 HostDispatcher* host_dispatcher = static_cast<HostDispatcher*>(dispatcher());
211 PP_Instance instance = 261 PP_Instance instance =
212 host_dispatcher->ppb_proxy()->GetInstanceForResource(file_ref); 262 host_dispatcher->ppb_proxy()->GetInstanceForResource(file_ref);
213 263
214 result->resource.SetHostResource(instance, file_ref); 264 result->resource.SetHostResource(instance, file_ref);
215 result->file_system_type = 265 result->file_system_type =
216 static_cast<int>(enter.object()->GetFileSystemType()); 266 static_cast<int>(ppb_file_ref_target()->GetFileSystemType(file_ref));
217 result->path = SerializedVarReturnValue::Convert(dispatcher(), 267 result->path = SerializedVarReturnValue::Convert(
218 enter.object()->GetPath()); 268 dispatcher(),
219 result->name = SerializedVarReturnValue::Convert(dispatcher(), 269 ppb_file_ref_target()->GetPath(file_ref));
220 enter.object()->GetName()); 270 result->name = SerializedVarReturnValue::Convert(
271 dispatcher(),
272 ppb_file_ref_target()->GetName(file_ref));
221 } 273 }
222 274
223 // static 275 // static
224 PP_Resource PPB_FileRef_Proxy::DeserializeFileRef( 276 PP_Resource PPB_FileRef_Proxy::DeserializeFileRef(
225 const PPBFileRef_CreateInfo& serialized) { 277 const PPBFileRef_CreateInfo& serialized) {
226 if (serialized.resource.is_null()) 278 if (serialized.resource.is_null())
227 return 0; // Resource invalid. 279 return 0; // Resource invalid.
228 280
229 linked_ptr<FileRef> object(new FileRef(serialized)); 281 linked_ptr<FileRef> object(new FileRef(serialized));
230 return PluginResourceTracker::GetInstance()->AddResource(object); 282 return PluginResourceTracker::GetInstance()->AddResource(object);
231 } 283 }
232 284
233 void PPB_FileRef_Proxy::OnMsgCreate(const HostResource& file_system, 285 void PPB_FileRef_Proxy::OnMsgCreate(const HostResource& file_system,
234 const std::string& path, 286 const std::string& path,
235 PPBFileRef_CreateInfo* result) { 287 PPBFileRef_CreateInfo* result) {
236 EnterFunctionNoLock<ResourceCreationAPI> enter(file_system.instance(), true); 288
237 if (enter.failed()) 289 PP_Resource resource = ppb_file_ref_target()->Create(
238 return;
239 PP_Resource resource = enter.functions()->CreateFileRef(
240 file_system.host_resource(), path.c_str()); 290 file_system.host_resource(), path.c_str());
241 if (!resource) 291 if (!resource)
242 return; // CreateInfo default constructor initializes to 0. 292 return; // CreateInfo default constructor initializes to 0.
243 SerializeFileRef(resource, result); 293 SerializeFileRef(resource, result);
244 } 294 }
245 295
246 void PPB_FileRef_Proxy::OnMsgGetParent(const HostResource& host_resource, 296 void PPB_FileRef_Proxy::OnMsgGetParent(const HostResource& host_resource,
247 PPBFileRef_CreateInfo* result) { 297 PPBFileRef_CreateInfo* result) {
248 EnterHostFromHostResource<PPB_FileRef_API> enter(host_resource); 298 PP_Resource resource = ppb_file_ref_target()->GetParent(
249 if (enter.succeeded()) 299 host_resource.host_resource());
250 SerializeFileRef(enter.object()->GetParent(), result); 300 SerializeFileRef(resource, result);
251 } 301 }
252 302
253 void PPB_FileRef_Proxy::OnMsgMakeDirectory(const HostResource& host_resource, 303 void PPB_FileRef_Proxy::OnMsgMakeDirectory(const HostResource& host_resource,
254 PP_Bool make_ancestors, 304 PP_Bool make_ancestors,
255 uint32_t serialized_callback) { 305 uint32_t serialized_callback) {
256 EnterHostFromHostResource<PPB_FileRef_API> enter(host_resource);
257 if (enter.failed())
258 return;
259 PP_CompletionCallback callback = ReceiveCallback(serialized_callback); 306 PP_CompletionCallback callback = ReceiveCallback(serialized_callback);
260 int32_t result = enter.object()->MakeDirectory(make_ancestors, callback); 307 int32_t result =
308 ppb_file_ref_target()->MakeDirectory(host_resource.host_resource(),
309 make_ancestors, callback);
261 if (result != PP_OK_COMPLETIONPENDING) 310 if (result != PP_OK_COMPLETIONPENDING)
262 PP_RunCompletionCallback(&callback, result); 311 PP_RunCompletionCallback(&callback, result);
263 } 312 }
264 313
265 void PPB_FileRef_Proxy::OnMsgTouch(const HostResource& host_resource, 314 void PPB_FileRef_Proxy::OnMsgTouch(const HostResource& host_resource,
266 PP_Time last_access, 315 PP_Time last_access,
267 PP_Time last_modified, 316 PP_Time last_modified,
268 uint32_t serialized_callback) { 317 uint32_t serialized_callback) {
269 EnterHostFromHostResource<PPB_FileRef_API> enter(host_resource);
270 if (enter.failed())
271 return;
272 PP_CompletionCallback callback = ReceiveCallback(serialized_callback); 318 PP_CompletionCallback callback = ReceiveCallback(serialized_callback);
273 int32_t result = enter.object()->Touch(last_access, last_modified, callback); 319 int32_t result =
320 ppb_file_ref_target()->Touch(host_resource.host_resource(),
321 last_access, last_modified, callback);
274 if (result != PP_OK_COMPLETIONPENDING) 322 if (result != PP_OK_COMPLETIONPENDING)
275 PP_RunCompletionCallback(&callback, result); 323 PP_RunCompletionCallback(&callback, result);
276 } 324 }
277 325
278 void PPB_FileRef_Proxy::OnMsgDelete(const HostResource& host_resource, 326 void PPB_FileRef_Proxy::OnMsgDelete(const HostResource& host_resource,
279 uint32_t serialized_callback) { 327 uint32_t serialized_callback) {
280 EnterHostFromHostResource<PPB_FileRef_API> enter(host_resource);
281 if (enter.failed())
282 return;
283 PP_CompletionCallback callback = ReceiveCallback(serialized_callback); 328 PP_CompletionCallback callback = ReceiveCallback(serialized_callback);
284 int32_t result = enter.object()->Delete(callback); 329 int32_t result =
330 ppb_file_ref_target()->Delete(host_resource.host_resource(), callback);
285 if (result != PP_OK_COMPLETIONPENDING) 331 if (result != PP_OK_COMPLETIONPENDING)
286 PP_RunCompletionCallback(&callback, result); 332 PP_RunCompletionCallback(&callback, result);
287 } 333 }
288 334
289 void PPB_FileRef_Proxy::OnMsgRename(const HostResource& file_ref, 335 void PPB_FileRef_Proxy::OnMsgRename(const HostResource& file_ref,
290 const HostResource& new_file_ref, 336 const HostResource& new_file_ref,
291 uint32_t serialized_callback) { 337 uint32_t serialized_callback) {
292 EnterHostFromHostResource<PPB_FileRef_API> enter(file_ref);
293 if (enter.failed())
294 return;
295 PP_CompletionCallback callback = ReceiveCallback(serialized_callback); 338 PP_CompletionCallback callback = ReceiveCallback(serialized_callback);
296 int32_t result = enter.object()->Rename(new_file_ref.host_resource(), 339 int32_t result =
297 callback); 340 ppb_file_ref_target()->Rename(file_ref.host_resource(),
341 new_file_ref.host_resource(),
342 callback);
298 if (result != PP_OK_COMPLETIONPENDING) 343 if (result != PP_OK_COMPLETIONPENDING)
299 PP_RunCompletionCallback(&callback, result); 344 PP_RunCompletionCallback(&callback, result);
300 } 345 }
301 346
302 } // namespace proxy 347 } // namespace proxy
303 } // namespace pp 348 } // namespace pp
OLDNEW
« no previous file with comments | « ppapi/proxy/ppb_file_ref_proxy.h ('k') | ppapi/proxy/ppb_file_system_proxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698