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

Side by Side Diff: trunk/src/ppapi/cpp/file_ref.cc

Issue 131473002: Revert 243802 "PPAPI: Add new PPB_FileRef.MakeDirectory to suppo..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 11 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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/cpp/file_ref.h" 5 #include "ppapi/cpp/file_ref.h"
6 6
7 #include "ppapi/c/pp_bool.h"
8 #include "ppapi/c/pp_errors.h" 7 #include "ppapi/c/pp_errors.h"
9 #include "ppapi/cpp/completion_callback.h" 8 #include "ppapi/cpp/completion_callback.h"
10 #include "ppapi/cpp/directory_entry.h" 9 #include "ppapi/cpp/directory_entry.h"
11 #include "ppapi/cpp/file_system.h" 10 #include "ppapi/cpp/file_system.h"
12 #include "ppapi/cpp/module_impl.h" 11 #include "ppapi/cpp/module_impl.h"
13 12
14 namespace pp { 13 namespace pp {
15 14
16 namespace { 15 namespace {
17 16
18 template <> const char* interface_name<PPB_FileRef_1_0>() { 17 template <> const char* interface_name<PPB_FileRef_1_0>() {
19 return PPB_FILEREF_INTERFACE_1_0; 18 return PPB_FILEREF_INTERFACE_1_0;
20 } 19 }
21 20
22 template <> const char* interface_name<PPB_FileRef_1_1>() { 21 template <> const char* interface_name<PPB_FileRef_1_1>() {
23 return PPB_FILEREF_INTERFACE_1_1; 22 return PPB_FILEREF_INTERFACE_1_1;
24 } 23 }
25 24
26 template <> const char* interface_name<PPB_FileRef_1_2>() {
27 return PPB_FILEREF_INTERFACE_1_2;
28 }
29
30 } // namespace 25 } // namespace
31 26
32 FileRef::FileRef(PP_Resource resource) : Resource(resource) { 27 FileRef::FileRef(PP_Resource resource) : Resource(resource) {
33 } 28 }
34 29
35 FileRef::FileRef(PassRef, PP_Resource resource) : Resource(PASS_REF, resource) { 30 FileRef::FileRef(PassRef, PP_Resource resource) : Resource(PASS_REF, resource) {
36 } 31 }
37 32
38 FileRef::FileRef(const FileSystem& file_system, 33 FileRef::FileRef(const FileSystem& file_system,
39 const char* path) { 34 const char* path) {
40 if (has_interface<PPB_FileRef_1_2>()) { 35 if (has_interface<PPB_FileRef_1_1>()) {
41 PassRefFromConstructor(get_interface<PPB_FileRef_1_2>()->Create(
42 file_system.pp_resource(), path));
43 } else if (has_interface<PPB_FileRef_1_1>()) {
44 PassRefFromConstructor(get_interface<PPB_FileRef_1_1>()->Create( 36 PassRefFromConstructor(get_interface<PPB_FileRef_1_1>()->Create(
45 file_system.pp_resource(), path)); 37 file_system.pp_resource(), path));
46 } else if (has_interface<PPB_FileRef_1_0>()) { 38 } else if (has_interface<PPB_FileRef_1_0>()) {
47 PassRefFromConstructor(get_interface<PPB_FileRef_1_0>()->Create( 39 PassRefFromConstructor(get_interface<PPB_FileRef_1_0>()->Create(
48 file_system.pp_resource(), path)); 40 file_system.pp_resource(), path));
49 } 41 }
50 } 42 }
51 43
52 FileRef::FileRef(const FileRef& other) 44 FileRef::FileRef(const FileRef& other)
53 : Resource(other) { 45 : Resource(other) {
54 } 46 }
55 47
56 PP_FileSystemType FileRef::GetFileSystemType() const { 48 PP_FileSystemType FileRef::GetFileSystemType() const {
57 if (has_interface<PPB_FileRef_1_2>())
58 return get_interface<PPB_FileRef_1_2>()->GetFileSystemType(pp_resource());
59 if (has_interface<PPB_FileRef_1_1>()) 49 if (has_interface<PPB_FileRef_1_1>())
60 return get_interface<PPB_FileRef_1_1>()->GetFileSystemType(pp_resource()); 50 return get_interface<PPB_FileRef_1_1>()->GetFileSystemType(pp_resource());
61 if (has_interface<PPB_FileRef_1_0>()) 51 if (has_interface<PPB_FileRef_1_0>())
62 return get_interface<PPB_FileRef_1_0>()->GetFileSystemType(pp_resource()); 52 return get_interface<PPB_FileRef_1_0>()->GetFileSystemType(pp_resource());
63 return PP_FILESYSTEMTYPE_EXTERNAL; 53 return PP_FILESYSTEMTYPE_EXTERNAL;
64 } 54 }
65 55
66 Var FileRef::GetName() const { 56 Var FileRef::GetName() const {
67 if (has_interface<PPB_FileRef_1_2>()) {
68 return Var(PASS_REF,
69 get_interface<PPB_FileRef_1_2>()->GetName(pp_resource()));
70 }
71 if (has_interface<PPB_FileRef_1_1>()) { 57 if (has_interface<PPB_FileRef_1_1>()) {
72 return Var(PASS_REF, 58 return Var(PASS_REF,
73 get_interface<PPB_FileRef_1_1>()->GetName(pp_resource())); 59 get_interface<PPB_FileRef_1_1>()->GetName(pp_resource()));
74 } 60 }
75 if (has_interface<PPB_FileRef_1_0>()) { 61 if (has_interface<PPB_FileRef_1_0>()) {
76 return Var(PASS_REF, 62 return Var(PASS_REF,
77 get_interface<PPB_FileRef_1_0>()->GetName(pp_resource())); 63 get_interface<PPB_FileRef_1_0>()->GetName(pp_resource()));
78 } 64 }
79 return Var(); 65 return Var();
80 } 66 }
81 67
82 Var FileRef::GetPath() const { 68 Var FileRef::GetPath() const {
83 if (has_interface<PPB_FileRef_1_2>()) {
84 return Var(PASS_REF,
85 get_interface<PPB_FileRef_1_2>()->GetPath(pp_resource()));
86 }
87 if (has_interface<PPB_FileRef_1_1>()) { 69 if (has_interface<PPB_FileRef_1_1>()) {
88 return Var(PASS_REF, 70 return Var(PASS_REF,
89 get_interface<PPB_FileRef_1_1>()->GetPath(pp_resource())); 71 get_interface<PPB_FileRef_1_1>()->GetPath(pp_resource()));
90 } 72 }
91 if (has_interface<PPB_FileRef_1_0>()) { 73 if (has_interface<PPB_FileRef_1_0>()) {
92 return Var(PASS_REF, 74 return Var(PASS_REF,
93 get_interface<PPB_FileRef_1_0>()->GetPath(pp_resource())); 75 get_interface<PPB_FileRef_1_0>()->GetPath(pp_resource()));
94 } 76 }
95 return Var(); 77 return Var();
96 } 78 }
97 79
98 FileRef FileRef::GetParent() const { 80 FileRef FileRef::GetParent() const {
99 if (has_interface<PPB_FileRef_1_2>()) {
100 return FileRef(PASS_REF,
101 get_interface<PPB_FileRef_1_2>()->GetParent(pp_resource()));
102 }
103 if (has_interface<PPB_FileRef_1_1>()) { 81 if (has_interface<PPB_FileRef_1_1>()) {
104 return FileRef(PASS_REF, 82 return FileRef(PASS_REF,
105 get_interface<PPB_FileRef_1_1>()->GetParent(pp_resource())); 83 get_interface<PPB_FileRef_1_1>()->GetParent(pp_resource()));
106 } 84 }
107 if (has_interface<PPB_FileRef_1_0>()) { 85 if (has_interface<PPB_FileRef_1_0>()) {
108 return FileRef(PASS_REF, 86 return FileRef(PASS_REF,
109 get_interface<PPB_FileRef_1_0>()->GetParent(pp_resource())); 87 get_interface<PPB_FileRef_1_0>()->GetParent(pp_resource()));
110 } 88 }
111 return FileRef(); 89 return FileRef();
112 } 90 }
113 91
114 int32_t FileRef::MakeDirectory(int32_t make_directory_flags, 92 int32_t FileRef::MakeDirectory(const CompletionCallback& cc) {
115 const CompletionCallback& cc) {
116 if (has_interface<PPB_FileRef_1_2>()) {
117 return get_interface<PPB_FileRef_1_2>()->MakeDirectory(
118 pp_resource(),
119 make_directory_flags,
120 cc.pp_completion_callback());
121 }
122 if (has_interface<PPB_FileRef_1_1>()) { 93 if (has_interface<PPB_FileRef_1_1>()) {
123 if (make_directory_flags & ~PP_MAKEDIRECTORYFLAG_WITH_ANCESTORS)
124 return cc.MayForce(PP_ERROR_NOTSUPPORTED);
125 return get_interface<PPB_FileRef_1_1>()->MakeDirectory( 94 return get_interface<PPB_FileRef_1_1>()->MakeDirectory(
126 pp_resource(), 95 pp_resource(),
127 PP_FromBool(make_directory_flags & PP_MAKEDIRECTORYFLAG_WITH_ANCESTORS), 96 PP_FALSE, // make_ancestors
128 cc.pp_completion_callback()); 97 cc.pp_completion_callback());
129 } 98 }
130 if (has_interface<PPB_FileRef_1_0>()) { 99 if (has_interface<PPB_FileRef_1_0>()) {
131 if (make_directory_flags & ~PP_MAKEDIRECTORYFLAG_WITH_ANCESTORS)
132 return cc.MayForce(PP_ERROR_NOTSUPPORTED);
133 return get_interface<PPB_FileRef_1_0>()->MakeDirectory( 100 return get_interface<PPB_FileRef_1_0>()->MakeDirectory(
134 pp_resource(), 101 pp_resource(),
135 PP_FromBool(make_directory_flags & PP_MAKEDIRECTORYFLAG_WITH_ANCESTORS), 102 PP_FALSE, // make_ancestors
136 cc.pp_completion_callback()); 103 cc.pp_completion_callback());
137 } 104 }
138 return cc.MayForce(PP_ERROR_NOINTERFACE); 105 return cc.MayForce(PP_ERROR_NOINTERFACE);
106 }
107
108 int32_t FileRef::MakeDirectoryIncludingAncestors(
109 const CompletionCallback& cc) {
110 if (has_interface<PPB_FileRef_1_1>()) {
111 return get_interface<PPB_FileRef_1_1>()->MakeDirectory(
112 pp_resource(),
113 PP_TRUE, // make_ancestors
114 cc.pp_completion_callback());
115 }
116 if (has_interface<PPB_FileRef_1_0>()) {
117 return get_interface<PPB_FileRef_1_0>()->MakeDirectory(
118 pp_resource(),
119 PP_TRUE, // make_ancestors
120 cc.pp_completion_callback());
121 }
122 return cc.MayForce(PP_ERROR_NOINTERFACE);
139 } 123 }
140 124
141 int32_t FileRef::Touch(PP_Time last_access_time, 125 int32_t FileRef::Touch(PP_Time last_access_time,
142 PP_Time last_modified_time, 126 PP_Time last_modified_time,
143 const CompletionCallback& cc) { 127 const CompletionCallback& cc) {
144 if (has_interface<PPB_FileRef_1_2>()) {
145 return get_interface<PPB_FileRef_1_2>()->Touch(
146 pp_resource(), last_access_time, last_modified_time,
147 cc.pp_completion_callback());
148 }
149 if (has_interface<PPB_FileRef_1_1>()) { 128 if (has_interface<PPB_FileRef_1_1>()) {
150 return get_interface<PPB_FileRef_1_1>()->Touch( 129 return get_interface<PPB_FileRef_1_1>()->Touch(
151 pp_resource(), last_access_time, last_modified_time, 130 pp_resource(), last_access_time, last_modified_time,
152 cc.pp_completion_callback()); 131 cc.pp_completion_callback());
153 } 132 }
154 if (has_interface<PPB_FileRef_1_0>()) { 133 if (has_interface<PPB_FileRef_1_0>()) {
155 return get_interface<PPB_FileRef_1_0>()->Touch( 134 return get_interface<PPB_FileRef_1_0>()->Touch(
156 pp_resource(), last_access_time, last_modified_time, 135 pp_resource(), last_access_time, last_modified_time,
157 cc.pp_completion_callback()); 136 cc.pp_completion_callback());
158 } 137 }
159 return cc.MayForce(PP_ERROR_NOINTERFACE); 138 return cc.MayForce(PP_ERROR_NOINTERFACE);
160 } 139 }
161 140
162 int32_t FileRef::Delete(const CompletionCallback& cc) { 141 int32_t FileRef::Delete(const CompletionCallback& cc) {
163 if (has_interface<PPB_FileRef_1_2>()) {
164 return get_interface<PPB_FileRef_1_2>()->Delete(
165 pp_resource(), cc.pp_completion_callback());
166 }
167 if (has_interface<PPB_FileRef_1_1>()) { 142 if (has_interface<PPB_FileRef_1_1>()) {
168 return get_interface<PPB_FileRef_1_1>()->Delete( 143 return get_interface<PPB_FileRef_1_1>()->Delete(
169 pp_resource(), cc.pp_completion_callback()); 144 pp_resource(), cc.pp_completion_callback());
170 } 145 }
171 if (has_interface<PPB_FileRef_1_0>()) { 146 if (has_interface<PPB_FileRef_1_0>()) {
172 return get_interface<PPB_FileRef_1_0>()->Delete( 147 return get_interface<PPB_FileRef_1_0>()->Delete(
173 pp_resource(), cc.pp_completion_callback()); 148 pp_resource(), cc.pp_completion_callback());
174 } 149 }
175 return cc.MayForce(PP_ERROR_NOINTERFACE); 150 return cc.MayForce(PP_ERROR_NOINTERFACE);
176 } 151 }
177 152
178 int32_t FileRef::Rename(const FileRef& new_file_ref, 153 int32_t FileRef::Rename(const FileRef& new_file_ref,
179 const CompletionCallback& cc) { 154 const CompletionCallback& cc) {
180 if (has_interface<PPB_FileRef_1_2>()) {
181 return get_interface<PPB_FileRef_1_2>()->Rename(
182 pp_resource(), new_file_ref.pp_resource(), cc.pp_completion_callback());
183 }
184 if (has_interface<PPB_FileRef_1_1>()) { 155 if (has_interface<PPB_FileRef_1_1>()) {
185 return get_interface<PPB_FileRef_1_1>()->Rename( 156 return get_interface<PPB_FileRef_1_1>()->Rename(
186 pp_resource(), new_file_ref.pp_resource(), cc.pp_completion_callback()); 157 pp_resource(), new_file_ref.pp_resource(), cc.pp_completion_callback());
187 } 158 }
188 if (has_interface<PPB_FileRef_1_0>()) { 159 if (has_interface<PPB_FileRef_1_0>()) {
189 return get_interface<PPB_FileRef_1_0>()->Rename( 160 return get_interface<PPB_FileRef_1_0>()->Rename(
190 pp_resource(), new_file_ref.pp_resource(), cc.pp_completion_callback()); 161 pp_resource(), new_file_ref.pp_resource(), cc.pp_completion_callback());
191 } 162 }
192 return cc.MayForce(PP_ERROR_NOINTERFACE); 163 return cc.MayForce(PP_ERROR_NOINTERFACE);
193 } 164 }
194 165
195 int32_t FileRef::Query(const CompletionCallbackWithOutput<PP_FileInfo>& cc) { 166 int32_t FileRef::Query(const CompletionCallbackWithOutput<PP_FileInfo>& cc) {
196 if (has_interface<PPB_FileRef_1_2>()) { 167 if (!has_interface<PPB_FileRef_1_1>())
197 return get_interface<PPB_FileRef_1_2>()->Query( 168 return cc.MayForce(PP_ERROR_NOINTERFACE);
198 pp_resource(), cc.output(), cc.pp_completion_callback()); 169 return get_interface<PPB_FileRef_1_1>()->Query(
199 } 170 pp_resource(), cc.output(), cc.pp_completion_callback());
200 if (has_interface<PPB_FileRef_1_1>()) {
201 return get_interface<PPB_FileRef_1_1>()->Query(
202 pp_resource(), cc.output(), cc.pp_completion_callback());
203 }
204 return cc.MayForce(PP_ERROR_NOINTERFACE);
205 } 171 }
206 172
207 int32_t FileRef::ReadDirectoryEntries( 173 int32_t FileRef::ReadDirectoryEntries(
208 const CompletionCallbackWithOutput<std::vector<DirectoryEntry> >& 174 const CompletionCallbackWithOutput<std::vector<DirectoryEntry> >&
209 callback) { 175 callback) {
210 if (has_interface<PPB_FileRef_1_2>()) { 176 if (!has_interface<PPB_FileRef_1_1>())
211 return get_interface<PPB_FileRef_1_2>()->ReadDirectoryEntries( 177 return callback.MayForce(PP_ERROR_NOINTERFACE);
212 pp_resource(), callback.output(), callback.pp_completion_callback()); 178 return get_interface<PPB_FileRef_1_1>()->ReadDirectoryEntries(
213 } 179 pp_resource(), callback.output(), callback.pp_completion_callback());
214 if (has_interface<PPB_FileRef_1_1>()) {
215 return get_interface<PPB_FileRef_1_1>()->ReadDirectoryEntries(
216 pp_resource(), callback.output(), callback.pp_completion_callback());
217 }
218 return callback.MayForce(PP_ERROR_NOINTERFACE);
219 } 180 }
220 181
221 } // namespace pp 182 } // namespace pp
OLDNEW
« no previous file with comments | « trunk/src/ppapi/cpp/file_ref.h ('k') | trunk/src/ppapi/native_client/src/untrusted/pnacl_irt_shim/pnacl_shim.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698