Define DevTools content API
[chromium-blink-merge.git] / ppapi / thunk / ppb_file_ref_thunk.cc
blob5041c55ab26067f7258f82bb4fcca50c50b525a3
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.
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/common.h"
11 #include "ppapi/thunk/enter.h"
12 #include "ppapi/thunk/thunk.h"
13 #include "ppapi/thunk/ppb_file_ref_api.h"
14 #include "ppapi/thunk/resource_creation_api.h"
16 namespace ppapi {
17 namespace thunk {
19 namespace {
21 PP_Resource Create(PP_Resource file_system, const char* path) {
22 EnterFunctionGivenResource<ResourceCreationAPI> enter(file_system, true);
23 if (enter.failed())
24 return 0;
25 return enter.functions()->CreateFileRef(file_system, path);
28 PP_Bool IsFileRef(PP_Resource resource) {
29 EnterResource<PPB_FileRef_API> enter(resource, false);
30 return PP_FromBool(enter.succeeded());
33 PP_FileSystemType GetFileSystemType(PP_Resource file_ref) {
34 EnterResource<PPB_FileRef_API> enter(file_ref, true);
35 if (enter.failed())
36 return PP_FILESYSTEMTYPE_INVALID;
37 return enter.object()->GetFileSystemType();
40 PP_Var GetName(PP_Resource file_ref) {
41 EnterResource<PPB_FileRef_API> enter(file_ref, true);
42 if (enter.failed())
43 return PP_MakeUndefined();
44 return enter.object()->GetName();
47 PP_Var GetPath(PP_Resource file_ref) {
48 EnterResource<PPB_FileRef_API> enter(file_ref, true);
49 if (enter.failed())
50 return PP_MakeUndefined();
51 return enter.object()->GetPath();
54 PP_Resource GetParent(PP_Resource file_ref) {
55 EnterResource<PPB_FileRef_API> enter(file_ref, true);
56 if (enter.failed())
57 return PP_ERROR_BADRESOURCE;
58 return enter.object()->GetParent();
61 int32_t MakeDirectory(PP_Resource directory_ref,
62 PP_Bool make_ancestors,
63 PP_CompletionCallback callback) {
64 EnterResource<PPB_FileRef_API> enter(directory_ref, true);
65 if (enter.failed())
66 return MayForceCallback(callback, PP_ERROR_BADRESOURCE);
67 int32_t result = enter.object()->MakeDirectory(make_ancestors, callback);
68 return MayForceCallback(callback, result);
71 int32_t Touch(PP_Resource file_ref,
72 PP_Time last_access_time,
73 PP_Time last_modified_time,
74 PP_CompletionCallback callback) {
75 EnterResource<PPB_FileRef_API> enter(file_ref, true);
76 if (enter.failed())
77 return MayForceCallback(callback, PP_ERROR_BADRESOURCE);
78 int32_t result = enter.object()->Touch(last_access_time, last_modified_time,
79 callback);
80 return MayForceCallback(callback, result);
83 int32_t Delete(PP_Resource file_ref,
84 PP_CompletionCallback callback) {
85 EnterResource<PPB_FileRef_API> enter(file_ref, true);
86 if (enter.failed())
87 return MayForceCallback(callback, PP_ERROR_BADRESOURCE);
88 int32_t result = enter.object()->Delete(callback);
89 return MayForceCallback(callback, result);
92 int32_t Rename(PP_Resource file_ref,
93 PP_Resource new_file_ref,
94 PP_CompletionCallback callback) {
95 EnterResource<PPB_FileRef_API> enter(file_ref, true);
96 if (enter.failed())
97 return MayForceCallback(callback, PP_ERROR_BADRESOURCE);
98 int32_t result = enter.object()->Rename(new_file_ref, callback);
99 return MayForceCallback(callback, result);
102 PP_Var GetAbsolutePath(PP_Resource file_ref) {
103 EnterResource<PPB_FileRef_API> enter(file_ref, true);
104 if (enter.failed())
105 return PP_MakeUndefined();
106 return enter.object()->GetAbsolutePath();
109 const PPB_FileRef g_ppb_file_ref_thunk = {
110 &Create,
111 &IsFileRef,
112 &GetFileSystemType,
113 &GetName,
114 &GetPath,
115 &GetParent,
116 &MakeDirectory,
117 &Touch,
118 &Delete,
119 &Rename
122 const PPB_FileRefPrivate g_ppb_file_ref_private_thunk = {
123 &GetAbsolutePath
126 } // namespace
128 const PPB_FileRef* GetPPB_FileRef_Thunk() {
129 return &g_ppb_file_ref_thunk;
132 const PPB_FileRefPrivate* GetPPB_FileRefPrivate_Thunk() {
133 return &g_ppb_file_ref_private_thunk;
136 } // namespace thunk
137 } // namespace ppapi