ash: Update app list layout:
[chromium-blink-merge.git] / ppapi / thunk / ppb_file_ref_thunk.cc
blob8752b7fb9b79f24261ac801a36b32703f9556005
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
3 // found in the LICENSE file.
5 #include "ppapi/c/pp_file_info.h"
6 #include "ppapi/c/ppb_file_ref.h"
7 #include "ppapi/c/pp_completion_callback.h"
8 #include "ppapi/c/pp_errors.h"
9 #include "ppapi/c/private/ppb_file_ref_private.h"
10 #include "ppapi/thunk/enter.h"
11 #include "ppapi/thunk/thunk.h"
12 #include "ppapi/thunk/ppb_file_ref_api.h"
13 #include "ppapi/thunk/resource_creation_api.h"
15 namespace ppapi {
16 namespace thunk {
18 namespace {
20 typedef EnterResource<PPB_FileRef_API> EnterFileRef;
22 PP_Resource Create(PP_Resource file_system, const char* path) {
23 EnterFunctionGivenResource<ResourceCreationAPI> enter(file_system, true);
24 if (enter.failed())
25 return 0;
26 return enter.functions()->CreateFileRef(file_system, path);
29 PP_Bool IsFileRef(PP_Resource resource) {
30 EnterFileRef enter(resource, false);
31 return PP_FromBool(enter.succeeded());
34 PP_FileSystemType GetFileSystemType(PP_Resource file_ref) {
35 EnterFileRef enter(file_ref, true);
36 if (enter.failed())
37 return PP_FILESYSTEMTYPE_INVALID;
38 return enter.object()->GetFileSystemType();
41 PP_Var GetName(PP_Resource file_ref) {
42 EnterFileRef enter(file_ref, true);
43 if (enter.failed())
44 return PP_MakeUndefined();
45 return enter.object()->GetName();
48 PP_Var GetPath(PP_Resource file_ref) {
49 EnterFileRef enter(file_ref, true);
50 if (enter.failed())
51 return PP_MakeUndefined();
52 return enter.object()->GetPath();
55 PP_Resource GetParent(PP_Resource file_ref) {
56 EnterFileRef enter(file_ref, true);
57 if (enter.failed())
58 return 0;
59 return enter.object()->GetParent();
62 int32_t MakeDirectory(PP_Resource directory_ref,
63 PP_Bool make_ancestors,
64 PP_CompletionCallback callback) {
65 EnterFileRef enter(directory_ref, callback, true);
66 if (enter.failed())
67 return enter.retval();
68 return enter.SetResult(enter.object()->MakeDirectory(make_ancestors,
69 callback));
72 int32_t Touch(PP_Resource file_ref,
73 PP_Time last_access_time,
74 PP_Time last_modified_time,
75 PP_CompletionCallback callback) {
76 EnterFileRef enter(file_ref, callback, true);
77 if (enter.failed())
78 return enter.retval();
79 return enter.SetResult(enter.object()->Touch(
80 last_access_time, last_modified_time, callback));
83 int32_t Delete(PP_Resource file_ref,
84 PP_CompletionCallback callback) {
85 EnterFileRef enter(file_ref, callback, true);
86 if (enter.failed())
87 return enter.retval();
88 return enter.SetResult(enter.object()->Delete(callback));
91 int32_t Rename(PP_Resource file_ref,
92 PP_Resource new_file_ref,
93 PP_CompletionCallback callback) {
94 EnterFileRef enter(file_ref, callback, true);
95 if (enter.failed())
96 return enter.retval();
97 return enter.SetResult(enter.object()->Rename(new_file_ref, callback));
100 PP_Var GetAbsolutePath(PP_Resource file_ref) {
101 EnterFileRef enter(file_ref, true);
102 if (enter.failed())
103 return PP_MakeUndefined();
104 return enter.object()->GetAbsolutePath();
107 const PPB_FileRef g_ppb_file_ref_thunk = {
108 &Create,
109 &IsFileRef,
110 &GetFileSystemType,
111 &GetName,
112 &GetPath,
113 &GetParent,
114 &MakeDirectory,
115 &Touch,
116 &Delete,
117 &Rename
120 const PPB_FileRefPrivate g_ppb_file_ref_private_thunk = {
121 &GetAbsolutePath
124 } // namespace
126 const PPB_FileRef_1_0* GetPPB_FileRef_1_0_Thunk() {
127 return &g_ppb_file_ref_thunk;
130 const PPB_FileRefPrivate_0_1* GetPPB_FileRefPrivate_0_1_Thunk() {
131 return &g_ppb_file_ref_private_thunk;
134 } // namespace thunk
135 } // namespace ppapi