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

Side by Side Diff: webkit/plugins/ppapi/ppb_file_ref_impl.cc

Issue 6519057: Implement proxying for FileRef and FileChooser.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 9 years, 10 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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "webkit/plugins/ppapi/ppb_file_ref_impl.h" 5 #include "webkit/plugins/ppapi/ppb_file_ref_impl.h"
6 6
7 #include "base/string_util.h" 7 #include "base/string_util.h"
8 #include "base/utf_string_conversions.h" 8 #include "base/utf_string_conversions.h"
9 #include "ppapi/c/pp_errors.h" 9 #include "ppapi/c/pp_errors.h"
10 #include "webkit/plugins/ppapi/common.h" 10 #include "webkit/plugins/ppapi/common.h"
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 PluginInstance* instance = file_system->instance(); 127 PluginInstance* instance = file_system->instance();
128 if (!instance->delegate()->MakeDirectory( 128 if (!instance->delegate()->MakeDirectory(
129 directory_ref->GetSystemPath(), PPBoolToBool(make_ancestors), 129 directory_ref->GetSystemPath(), PPBoolToBool(make_ancestors),
130 new FileCallbacks(instance->module()->AsWeakPtr(), directory_ref_id, 130 new FileCallbacks(instance->module()->AsWeakPtr(), directory_ref_id,
131 callback, NULL, NULL, NULL))) 131 callback, NULL, NULL, NULL)))
132 return PP_ERROR_FAILED; 132 return PP_ERROR_FAILED;
133 133
134 return PP_ERROR_WOULDBLOCK; 134 return PP_ERROR_WOULDBLOCK;
135 } 135 }
136 136
137 int32_t Query(PP_Resource file_ref_id,
138 PP_FileInfo_Dev* info,
139 PP_CompletionCallback callback) {
140 scoped_refptr<PPB_FileRef_Impl> file_ref(
141 Resource::GetAs<PPB_FileRef_Impl>(file_ref_id));
142 if (!file_ref)
143 return PP_ERROR_BADRESOURCE;
144
145 scoped_refptr<PPB_FileSystem_Impl> file_system = file_ref->GetFileSystem();
146 if (!file_system || !file_system->opened() ||
147 (file_system->type() == PP_FILESYSTEMTYPE_EXTERNAL))
148 return PP_ERROR_NOACCESS;
149
150 PluginInstance* instance = file_system->instance();
151 if (!instance->delegate()->Query(
152 file_ref->GetSystemPath(),
153 new FileCallbacks(instance->module()->AsWeakPtr(), file_ref_id,
154 callback, info, file_system, NULL)))
155 return PP_ERROR_FAILED;
156
157 return PP_ERROR_WOULDBLOCK;
158 }
159
160 int32_t Touch(PP_Resource file_ref_id, 137 int32_t Touch(PP_Resource file_ref_id,
161 PP_Time last_access_time, 138 PP_Time last_access_time,
162 PP_Time last_modified_time, 139 PP_Time last_modified_time,
163 PP_CompletionCallback callback) { 140 PP_CompletionCallback callback) {
164 scoped_refptr<PPB_FileRef_Impl> file_ref( 141 scoped_refptr<PPB_FileRef_Impl> file_ref(
165 Resource::GetAs<PPB_FileRef_Impl>(file_ref_id)); 142 Resource::GetAs<PPB_FileRef_Impl>(file_ref_id));
166 if (!file_ref) 143 if (!file_ref)
167 return PP_ERROR_BADRESOURCE; 144 return PP_ERROR_BADRESOURCE;
168 145
169 scoped_refptr<PPB_FileSystem_Impl> file_system = file_ref->GetFileSystem(); 146 scoped_refptr<PPB_FileSystem_Impl> file_system = file_ref->GetFileSystem();
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 } 213 }
237 214
238 const PPB_FileRef_Dev ppb_fileref = { 215 const PPB_FileRef_Dev ppb_fileref = {
239 &Create, 216 &Create,
240 &IsFileRef, 217 &IsFileRef,
241 &GetFileSystemType, 218 &GetFileSystemType,
242 &GetName, 219 &GetName,
243 &GetPath, 220 &GetPath,
244 &GetParent, 221 &GetParent,
245 &MakeDirectory, 222 &MakeDirectory,
246 &Query,
247 &Touch, 223 &Touch,
248 &Delete, 224 &Delete,
249 &Rename 225 &Rename
250 }; 226 };
251 227
252 } // namespace 228 } // namespace
253 229
254 PPB_FileRef_Impl::PPB_FileRef_Impl() 230 PPB_FileRef_Impl::PPB_FileRef_Impl()
255 : Resource(NULL), 231 : Resource(NULL),
256 file_system_(NULL) { 232 file_system_(NULL) {
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 #else 332 #else
357 #error "Unsupported platform." 333 #error "Unsupported platform."
358 #endif 334 #endif
359 ); 335 );
360 return file_system_->root_path().Append(virtual_file_path); 336 return file_system_->root_path().Append(virtual_file_path);
361 } 337 }
362 338
363 } // namespace ppapi 339 } // namespace ppapi
364 } // namespace webkit 340 } // namespace webkit
365 341
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698