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"
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);
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);
37 return PP_FILESYSTEMTYPE_INVALID
;
38 return enter
.object()->GetFileSystemType();
41 PP_Var
GetName(PP_Resource file_ref
) {
42 EnterFileRef
enter(file_ref
, true);
44 return PP_MakeUndefined();
45 return enter
.object()->GetName();
48 PP_Var
GetPath(PP_Resource file_ref
) {
49 EnterFileRef
enter(file_ref
, true);
51 return PP_MakeUndefined();
52 return enter
.object()->GetPath();
55 PP_Resource
GetParent(PP_Resource file_ref
) {
56 EnterFileRef
enter(file_ref
, true);
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);
67 return enter
.retval();
68 return enter
.SetResult(enter
.object()->MakeDirectory(make_ancestors
,
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);
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);
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);
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);
103 return PP_MakeUndefined();
104 return enter
.object()->GetAbsolutePath();
107 const PPB_FileRef g_ppb_file_ref_thunk
= {
120 const PPB_FileRefPrivate g_ppb_file_ref_private_thunk
= {
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
;