Chromium Code Reviews| 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.h" | 5 #include "chrome/browser/chromeos/gdata/gdata_file_system.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 1159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1170 | 1170 |
| 1171 void GDataFileSystem::OnTransferCompleted( | 1171 void GDataFileSystem::OnTransferCompleted( |
| 1172 const FileOperationCallback& callback, | 1172 const FileOperationCallback& callback, |
| 1173 base::PlatformFileError error, | 1173 base::PlatformFileError error, |
| 1174 UploadFileInfo* upload_file_info) { | 1174 UploadFileInfo* upload_file_info) { |
| 1175 DCHECK(upload_file_info); | 1175 DCHECK(upload_file_info); |
| 1176 if (error == base::PLATFORM_FILE_OK && upload_file_info->entry.get()) { | 1176 if (error == base::PLATFORM_FILE_OK && upload_file_info->entry.get()) { |
| 1177 AddUploadedFile(upload_file_info->gdata_path.DirName(), | 1177 AddUploadedFile(upload_file_info->gdata_path.DirName(), |
| 1178 upload_file_info->entry.get(), | 1178 upload_file_info->entry.get(), |
| 1179 upload_file_info->file_path, | 1179 upload_file_info->file_path, |
| 1180 GDataCache::FILE_OPERATION_COPY); | 1180 GDataCache::FILE_OPERATION_COPY, |
| 1181 base::Bind(&GDataFileSystem::OnAddUploadFileCompleted, | |
| 1182 ui_weak_ptr_, | |
| 1183 callback, | |
| 1184 error, | |
| 1185 upload_file_info)); | |
| 1186 } else { | |
|
satorux1
2012/06/14 20:30:06
maybe:
else if (upload_file_info->entry.get()) {
hshi1
2012/06/14 20:47:27
In the original code there is no such check; even
| |
| 1187 OnAddUploadFileCompleted(callback, error, upload_file_info); | |
| 1181 } | 1188 } |
| 1189 } | |
| 1190 | |
| 1191 void GDataFileSystem::OnAddUploadFileCompleted( | |
| 1192 const FileOperationCallback& callback, | |
| 1193 base::PlatformFileError error, | |
| 1194 UploadFileInfo* upload_file_info) { | |
| 1195 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
| 1196 | |
| 1182 if (!callback.is_null()) | 1197 if (!callback.is_null()) |
| 1183 callback.Run(error); | 1198 callback.Run(error); |
| 1184 | 1199 |
| 1185 // In case of error upload_file_info will be deleted by the uploader. | 1200 // In case of error upload_file_info will be deleted by the uploader. |
| 1186 if (error != base::PLATFORM_FILE_OK) | 1201 if (error != base::PLATFORM_FILE_OK) |
| 1187 return; | 1202 return; |
| 1188 | 1203 |
| 1189 // TODO(achuith): GDataFileSystem should not have to call DeleteUpload. | 1204 delete upload_file_info; |
| 1190 GDataSystemService* service = | |
| 1191 GDataSystemServiceFactory::GetForProfile(profile_); | |
| 1192 if (service) | |
| 1193 service->uploader()->DeleteUpload(upload_file_info); | |
| 1194 } | 1205 } |
| 1195 | 1206 |
| 1196 void GDataFileSystem::Copy(const FilePath& src_file_path, | 1207 void GDataFileSystem::Copy(const FilePath& src_file_path, |
| 1197 const FilePath& dest_file_path, | 1208 const FilePath& dest_file_path, |
| 1198 const FileOperationCallback& callback) { | 1209 const FileOperationCallback& callback) { |
| 1199 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI) || | 1210 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI) || |
| 1200 BrowserThread::CurrentlyOn(BrowserThread::IO)); | 1211 BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 1201 RunTaskOnUIThread(base::Bind(&GDataFileSystem::CopyOnUIThread, | 1212 RunTaskOnUIThread(base::Bind(&GDataFileSystem::CopyOnUIThread, |
| 1202 ui_weak_ptr_, | 1213 ui_weak_ptr_, |
| 1203 src_file_path, | 1214 src_file_path, |
| (...skipping 2319 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3523 return base::PLATFORM_FILE_ERROR_NOT_FOUND; | 3534 return base::PLATFORM_FILE_ERROR_NOT_FOUND; |
| 3524 | 3535 |
| 3525 NotifyDirectoryChanged(parent_dir->GetFilePath()); | 3536 NotifyDirectoryChanged(parent_dir->GetFilePath()); |
| 3526 return base::PLATFORM_FILE_OK; | 3537 return base::PLATFORM_FILE_OK; |
| 3527 } | 3538 } |
| 3528 | 3539 |
| 3529 void GDataFileSystem::AddUploadedFile( | 3540 void GDataFileSystem::AddUploadedFile( |
| 3530 const FilePath& virtual_dir_path, | 3541 const FilePath& virtual_dir_path, |
| 3531 DocumentEntry* entry, | 3542 DocumentEntry* entry, |
| 3532 const FilePath& file_content_path, | 3543 const FilePath& file_content_path, |
| 3533 GDataCache::FileOperationType cache_operation) { | 3544 GDataCache::FileOperationType cache_operation, |
| 3545 const base::Closure& callback) { | |
| 3534 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 3546 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 3535 | 3547 |
| 3548 // Post a task to the same thread, rather than calling it here, as | |
| 3549 // AddUploadedFile() is asynchronous. | |
| 3550 base::MessageLoopProxy::current()->PostTask( | |
| 3551 FROM_HERE, | |
| 3552 base::Bind(&GDataFileSystem::AddUploadedFileOnUIThread, | |
| 3553 ui_weak_ptr_, | |
| 3554 virtual_dir_path, | |
| 3555 entry, | |
| 3556 file_content_path, | |
| 3557 cache_operation, | |
| 3558 callback)); | |
| 3559 } | |
| 3560 | |
| 3561 void GDataFileSystem::AddUploadedFileOnUIThread( | |
| 3562 const FilePath& virtual_dir_path, | |
| 3563 DocumentEntry* entry, | |
| 3564 const FilePath& file_content_path, | |
| 3565 GDataCache::FileOperationType cache_operation, | |
| 3566 const base::Closure& callback) { | |
| 3567 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
| 3568 DCHECK(!callback.is_null()); | |
| 3569 | |
| 3536 if (!entry) { | 3570 if (!entry) { |
| 3537 NOTREACHED(); | 3571 NOTREACHED(); |
| 3572 callback.Run(); | |
| 3538 return; | 3573 return; |
| 3539 } | 3574 } |
| 3540 | 3575 |
| 3541 std::string resource_id; | 3576 std::string resource_id; |
| 3542 std::string md5; | 3577 std::string md5; |
| 3543 { | 3578 { |
| 3544 base::AutoLock lock(lock_); | 3579 base::AutoLock lock(lock_); |
| 3545 GDataEntry* dir_entry = GetGDataEntryByPath(virtual_dir_path); | 3580 GDataEntry* dir_entry = GetGDataEntryByPath(virtual_dir_path); |
| 3546 if (!dir_entry) | 3581 if (!dir_entry) { |
| 3582 callback.Run(); | |
| 3547 return; | 3583 return; |
| 3584 } | |
| 3548 | 3585 |
| 3549 GDataDirectory* parent_dir = dir_entry->AsGDataDirectory(); | 3586 GDataDirectory* parent_dir = dir_entry->AsGDataDirectory(); |
| 3550 if (!parent_dir) | 3587 if (!parent_dir) { |
| 3588 callback.Run(); | |
| 3551 return; | 3589 return; |
| 3590 } | |
| 3552 | 3591 |
| 3553 scoped_ptr<GDataEntry> new_entry( | 3592 scoped_ptr<GDataEntry> new_entry( |
| 3554 GDataEntry::FromDocumentEntry(parent_dir, entry, root_.get())); | 3593 GDataEntry::FromDocumentEntry(parent_dir, entry, root_.get())); |
| 3555 if (!new_entry.get()) | 3594 if (!new_entry.get()) { |
| 3595 callback.Run(); | |
| 3556 return; | 3596 return; |
| 3597 } | |
| 3557 | 3598 |
| 3558 GDataFile* file = new_entry->AsGDataFile(); | 3599 GDataFile* file = new_entry->AsGDataFile(); |
| 3559 DCHECK(file); | 3600 DCHECK(file); |
| 3560 resource_id = file->resource_id(); | 3601 resource_id = file->resource_id(); |
| 3561 md5 = file->file_md5(); | 3602 md5 = file->file_md5(); |
| 3562 parent_dir->AddEntry(new_entry.release()); | 3603 parent_dir->AddEntry(new_entry.release()); |
| 3563 } | 3604 } |
| 3564 NotifyDirectoryChanged(virtual_dir_path); | 3605 NotifyDirectoryChanged(virtual_dir_path); |
| 3565 | 3606 |
| 3566 StoreToCache(resource_id, md5, file_content_path, cache_operation, | 3607 StoreToCache(resource_id, md5, file_content_path, cache_operation, |
| 3567 CacheOperationCallback()); | 3608 CacheOperationCallback()); |
| 3609 callback.Run(); | |
|
satorux1
2012/06/14 20:30:06
Should we run the callback here? StoreToCache() is
hshi1
2012/06/14 20:47:27
You're right, does the new patch set work?
On 201
| |
| 3568 } | 3610 } |
| 3569 | 3611 |
| 3570 void GDataFileSystem::Observe(int type, | 3612 void GDataFileSystem::Observe(int type, |
| 3571 const content::NotificationSource& source, | 3613 const content::NotificationSource& source, |
| 3572 const content::NotificationDetails& details) { | 3614 const content::NotificationDetails& details) { |
| 3573 if (type == chrome::NOTIFICATION_PREF_CHANGED) { | 3615 if (type == chrome::NOTIFICATION_PREF_CHANGED) { |
| 3574 PrefService* pref_service = profile_->GetPrefs(); | 3616 PrefService* pref_service = profile_->GetPrefs(); |
| 3575 std::string* pref_name = content::Details<std::string>(details).ptr(); | 3617 std::string* pref_name = content::Details<std::string>(details).ptr(); |
| 3576 if (*pref_name == prefs::kDisableGDataHostedFiles) { | 3618 if (*pref_name == prefs::kDisableGDataHostedFiles) { |
| 3577 SetHideHostedDocuments( | 3619 SetHideHostedDocuments( |
| (...skipping 574 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4152 base::PlatformFileError error, | 4194 base::PlatformFileError error, |
| 4153 const std::string& resource_id, | 4195 const std::string& resource_id, |
| 4154 const std::string& md5) { | 4196 const std::string& md5) { |
| 4155 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 4197 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 4156 | 4198 |
| 4157 if (!callback.is_null()) | 4199 if (!callback.is_null()) |
| 4158 callback.Run(error); | 4200 callback.Run(error); |
| 4159 } | 4201 } |
| 4160 | 4202 |
| 4161 } // namespace gdata | 4203 } // namespace gdata |
| OLD | NEW |