OLD | NEW |
| (Empty) |
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 | |
3 // found in the LICENSE file. | |
4 | |
5 #include "ppapi/c/dev/pp_file_info_dev.h" | |
6 #include "ppapi/c/dev/ppb_file_ref_dev.h" | |
7 #include "ppapi/c/pp_completion_callback.h" | |
8 #include "ppapi/c/pp_errors.h" | |
9 #include "ppapi/thunk/thunk.h" | |
10 #include "ppapi/thunk/enter.h" | |
11 #include "ppapi/thunk/ppb_file_ref_api.h" | |
12 #include "ppapi/thunk/resource_creation_api.h" | |
13 | |
14 namespace ppapi { | |
15 namespace thunk { | |
16 | |
17 namespace { | |
18 | |
19 PP_Resource Create(PP_Resource file_system, const char* path) { | |
20 EnterFunctionGivenResource<ResourceCreationAPI> enter(file_system, true); | |
21 if (enter.failed()) | |
22 return 0; | |
23 return enter.functions()->CreateFileRef(file_system, path); | |
24 } | |
25 | |
26 PP_Bool IsFileRef(PP_Resource resource) { | |
27 EnterResource<PPB_FileRef_API> enter(resource, false); | |
28 return PP_FromBool(enter.succeeded()); | |
29 } | |
30 | |
31 PP_FileSystemType_Dev GetFileSystemType(PP_Resource file_ref) { | |
32 EnterResource<PPB_FileRef_API> enter(file_ref, true); | |
33 if (enter.failed()) | |
34 return PP_FILESYSTEMTYPE_INVALID; | |
35 return enter.object()->GetFileSystemType(); | |
36 } | |
37 | |
38 PP_Var GetName(PP_Resource file_ref) { | |
39 EnterResource<PPB_FileRef_API> enter(file_ref, true); | |
40 if (enter.failed()) | |
41 return PP_MakeUndefined(); | |
42 return enter.object()->GetName(); | |
43 } | |
44 | |
45 PP_Var GetPath(PP_Resource file_ref) { | |
46 EnterResource<PPB_FileRef_API> enter(file_ref, true); | |
47 if (enter.failed()) | |
48 return PP_MakeUndefined(); | |
49 return enter.object()->GetPath(); | |
50 } | |
51 | |
52 PP_Resource GetParent(PP_Resource file_ref) { | |
53 EnterResource<PPB_FileRef_API> enter(file_ref, true); | |
54 if (enter.failed()) | |
55 return PP_ERROR_BADRESOURCE; | |
56 return enter.object()->GetParent(); | |
57 } | |
58 | |
59 int32_t MakeDirectory(PP_Resource directory_ref, | |
60 PP_Bool make_ancestors, | |
61 PP_CompletionCallback callback) { | |
62 EnterResource<PPB_FileRef_API> enter(directory_ref, true); | |
63 if (enter.failed()) | |
64 return PP_ERROR_BADRESOURCE; | |
65 return enter.object()->MakeDirectory(make_ancestors, callback); | |
66 } | |
67 | |
68 int32_t Touch(PP_Resource file_ref, | |
69 PP_Time last_access_time, | |
70 PP_Time last_modified_time, | |
71 PP_CompletionCallback callback) { | |
72 EnterResource<PPB_FileRef_API> enter(file_ref, true); | |
73 if (enter.failed()) | |
74 return PP_ERROR_BADRESOURCE; | |
75 return enter.object()->Touch(last_access_time, last_modified_time, callback); | |
76 } | |
77 | |
78 int32_t Delete(PP_Resource file_ref, | |
79 PP_CompletionCallback callback) { | |
80 EnterResource<PPB_FileRef_API> enter(file_ref, true); | |
81 if (enter.failed()) | |
82 return PP_ERROR_BADRESOURCE; | |
83 return enter.object()->Delete(callback); | |
84 } | |
85 | |
86 int32_t Rename(PP_Resource file_ref, | |
87 PP_Resource new_file_ref, | |
88 PP_CompletionCallback callback) { | |
89 EnterResource<PPB_FileRef_API> enter(file_ref, true); | |
90 if (enter.failed()) | |
91 return PP_ERROR_BADRESOURCE; | |
92 return enter.object()->Rename(new_file_ref, callback); | |
93 } | |
94 | |
95 const PPB_FileRef_Dev g_ppb_file_ref_thunk = { | |
96 &Create, | |
97 &IsFileRef, | |
98 &GetFileSystemType, | |
99 &GetName, | |
100 &GetPath, | |
101 &GetParent, | |
102 &MakeDirectory, | |
103 &Touch, | |
104 &Delete, | |
105 &Rename | |
106 }; | |
107 | |
108 } // namespace | |
109 | |
110 const PPB_FileRef_Dev* GetPPB_FileRef_Thunk() { | |
111 return &g_ppb_file_ref_thunk; | |
112 } | |
113 | |
114 } // namespace thunk | |
115 } // namespace ppapi | |
OLD | NEW |