OLD | NEW |
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 "chrome/browser/chromeos/gdata/gdata_file_system_proxy.h" | 5 #include "chrome/browser/chromeos/gdata/gdata_file_system_proxy.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
208 return; | 208 return; |
209 } | 209 } |
210 | 210 |
211 file_system_->CreateDirectory(file_path, exclusive, recursive, callback); | 211 file_system_->CreateDirectory(file_path, exclusive, recursive, callback); |
212 } | 212 } |
213 | 213 |
214 void GDataFileSystemProxy::CreateSnapshotFile( | 214 void GDataFileSystemProxy::CreateSnapshotFile( |
215 const GURL& file_url, | 215 const GURL& file_url, |
216 const FileSystemOperationInterface::SnapshotFileCallback& callback) { | 216 const FileSystemOperationInterface::SnapshotFileCallback& callback) { |
217 FilePath file_path; | 217 FilePath file_path; |
218 base::PlatformFileInfo file_info; | 218 if (!ValidateUrl(file_url, &file_path)) { |
219 GDataFileProperties file_properties; | |
220 if (!ValidateUrl(file_url, &file_path) || | |
221 !file_system_->GetFileInfoByPath(file_path, &file_properties)) { | |
222 MessageLoopProxy::current()->PostTask(FROM_HERE, | 219 MessageLoopProxy::current()->PostTask(FROM_HERE, |
223 base::Bind(callback, | 220 base::Bind(callback, |
224 base::PLATFORM_FILE_ERROR_NOT_FOUND, | 221 base::PLATFORM_FILE_ERROR_NOT_FOUND, |
225 base::PlatformFileInfo(), | 222 base::PlatformFileInfo(), |
226 FilePath(), | 223 FilePath(), |
227 scoped_refptr<ShareableFileReference>(NULL))); | 224 scoped_refptr<ShareableFileReference>(NULL))); |
228 return; | 225 return; |
229 } | 226 } |
230 | 227 |
231 file_system_->GetFileByPath(file_path, | 228 file_system_->GetEntryInfoByPathAsync( |
| 229 file_path, |
| 230 base::Bind(&GDataFileSystemProxy::OnGetEntryInfoByPathAsync, |
| 231 this, callback)); |
| 232 } |
| 233 |
| 234 void GDataFileSystemProxy::OnGetEntryInfoByPathAsync( |
| 235 const FileSystemOperationInterface::SnapshotFileCallback& callback, |
| 236 base::PlatformFileError error, |
| 237 const FilePath& entry_path, |
| 238 scoped_ptr<GDataEntryProto> entry_proto) { |
| 239 if (error != base::PLATFORM_FILE_OK || !entry_proto.get()) { |
| 240 MessageLoopProxy::current()->PostTask(FROM_HERE, |
| 241 base::Bind(callback, |
| 242 base::PLATFORM_FILE_ERROR_NOT_FOUND, |
| 243 base::PlatformFileInfo(), |
| 244 FilePath(), |
| 245 scoped_refptr<ShareableFileReference>(NULL))); |
| 246 return; |
| 247 } |
| 248 |
| 249 base::PlatformFileInfo file_info; |
| 250 GDataEntry::ConvertProtoToPlatformFileInfo( |
| 251 entry_proto->file_info(), |
| 252 &file_info); |
| 253 |
| 254 file_system_->GetFileByPath(entry_path, |
232 base::Bind(&CallSnapshotFileCallback, | 255 base::Bind(&CallSnapshotFileCallback, |
233 callback, | 256 callback, |
234 file_properties.file_info), | 257 file_info), |
235 GetDownloadDataCallback()); | 258 GetDownloadDataCallback()); |
236 } | 259 } |
237 | 260 |
238 // static. | 261 // static. |
239 bool GDataFileSystemProxy::ValidateUrl(const GURL& url, FilePath* file_path) { | 262 bool GDataFileSystemProxy::ValidateUrl(const GURL& url, FilePath* file_path) { |
240 // what platform you're on. | 263 // what platform you're on. |
241 FilePath raw_path; | 264 FilePath raw_path; |
242 fileapi::FileSystemType type = fileapi::kFileSystemTypeUnknown; | 265 fileapi::FileSystemType type = fileapi::kFileSystemTypeUnknown; |
243 if (!fileapi::CrackFileSystemURL(url, NULL, &type, file_path) || | 266 if (!fileapi::CrackFileSystemURL(url, NULL, &type, file_path) || |
244 type != fileapi::kFileSystemTypeExternal) { | 267 type != fileapi::kFileSystemTypeExternal) { |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
289 if (hide_hosted_documents && proto.is_hosted_document()) | 312 if (hide_hosted_documents && proto.is_hosted_document()) |
290 continue; | 313 continue; |
291 entries.push_back( | 314 entries.push_back( |
292 GDataEntryProtoToFileUtilProxyEntry(proto.gdata_entry())); | 315 GDataEntryProtoToFileUtilProxyEntry(proto.gdata_entry())); |
293 } | 316 } |
294 | 317 |
295 callback.Run(base::PLATFORM_FILE_OK, entries, false); | 318 callback.Run(base::PLATFORM_FILE_OK, entries, false); |
296 } | 319 } |
297 | 320 |
298 } // namespace gdata | 321 } // namespace gdata |
OLD | NEW |