| Index: chrome/browser/chromeos/gdata/gdata_file_system.cc
|
| diff --git a/chrome/browser/chromeos/gdata/gdata_file_system.cc b/chrome/browser/chromeos/gdata/gdata_file_system.cc
|
| index e52546500c80ed5edb44b65a8f2b3a1edc4015f1..664ed65ec9d1cd6744e9ec2c45e128b32f76f98b 100644
|
| --- a/chrome/browser/chromeos/gdata/gdata_file_system.cc
|
| +++ b/chrome/browser/chromeos/gdata/gdata_file_system.cc
|
| @@ -3229,16 +3229,16 @@ void GDataFileSystem::CloseFileOnUIThread(
|
| // Step 1 of CloseFile: Get resource_id and md5 for |file_path|.
|
| directory_service_->GetEntryInfoByPath(
|
| file_path,
|
| - base::Bind(&GDataFileSystem::OnGetEntryInfoCompleteForCloseFile,
|
| + base::Bind(&GDataFileSystem::CloseFileOnUIThreadAfterGetEntryInfo,
|
| ui_weak_ptr_,
|
| file_path,
|
| - base::Bind(&GDataFileSystem::OnCloseFileFinished,
|
| + base::Bind(&GDataFileSystem::CloseFileOnUIThreadFinalize,
|
| ui_weak_ptr_,
|
| file_path,
|
| callback)));
|
| }
|
|
|
| -void GDataFileSystem::OnGetEntryInfoCompleteForCloseFile(
|
| +void GDataFileSystem::CloseFileOnUIThreadAfterGetEntryInfo(
|
| const FilePath& file_path,
|
| const FileOperationCallback& callback,
|
| GDataFileError error,
|
| @@ -3254,118 +3254,21 @@ void GDataFileSystem::OnGetEntryInfoCompleteForCloseFile(
|
| return;
|
| }
|
|
|
| - // Step 2 of CloseFile: Get the local path of the cache. Since CloseFile must
|
| - // always be called on paths opened by OpenFile, the file must be cached,
|
| - cache_->GetFileOnUIThread(
|
| - entry_proto->resource_id(),
|
| - entry_proto->file_specific_info().file_md5(),
|
| - base::Bind(&GDataFileSystem::OnGetCacheFilePathCompleteForCloseFile,
|
| - ui_weak_ptr_,
|
| - file_path,
|
| - callback));
|
| -}
|
| -
|
| -void GDataFileSystem::OnGetCacheFilePathCompleteForCloseFile(
|
| - const FilePath& file_path,
|
| - const FileOperationCallback& callback,
|
| - GDataFileError error,
|
| - const std::string& resource_id,
|
| - const std::string& md5,
|
| - const FilePath& local_cache_path) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| - DCHECK(!callback.is_null());
|
| -
|
| - if (error != GDATA_FILE_OK) {
|
| - callback.Run(error);
|
| - return;
|
| - }
|
| -
|
| - // Step 3 of CloseFile: Retrieves the (possibly modified) PlatformFileInfo of
|
| - // the cache file.
|
| - base::PlatformFileInfo* file_info = new base::PlatformFileInfo;
|
| - bool* get_file_info_result = new bool(false);
|
| - util::PostBlockingPoolSequencedTaskAndReply(
|
| - FROM_HERE,
|
| - blocking_task_runner_,
|
| - base::Bind(&GetFileInfoOnBlockingPool,
|
| - local_cache_path,
|
| - base::Unretained(file_info),
|
| - base::Unretained(get_file_info_result)),
|
| - base::Bind(&GDataFileSystem::OnGetModifiedFileInfoCompleteForCloseFile,
|
| - ui_weak_ptr_,
|
| - file_path,
|
| - base::Owned(file_info),
|
| - base::Owned(get_file_info_result),
|
| - callback));
|
| -}
|
| -
|
| -void GDataFileSystem::OnGetModifiedFileInfoCompleteForCloseFile(
|
| - const FilePath& file_path,
|
| - base::PlatformFileInfo* file_info,
|
| - bool* get_file_info_result,
|
| - const FileOperationCallback& callback) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| - DCHECK(!callback.is_null());
|
| -
|
| - if (!*get_file_info_result) {
|
| - callback.Run(GDATA_FILE_ERROR_NOT_FOUND);
|
| - return;
|
| - }
|
| -
|
| - // Step 4 of CloseFile: Find GDataEntry corresponding to |file_path|, for
|
| - // modifying the entry's metadata.
|
| - FindEntryByPathAsyncOnUIThread(
|
| - file_path,
|
| - base::Bind(&GDataFileSystem::OnGetEntryCompleteForCloseFile,
|
| - ui_weak_ptr_,
|
| - *file_info,
|
| - callback));
|
| -}
|
| -
|
| -void GDataFileSystem::OnGetEntryCompleteForCloseFile(
|
| - const base::PlatformFileInfo& file_info,
|
| - const FileOperationCallback& callback,
|
| - GDataFileError error,
|
| - GDataEntry* entry) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| - DCHECK(!callback.is_null());
|
| -
|
| - if (error != GDATA_FILE_OK) {
|
| - callback.Run(error);
|
| - return;
|
| - }
|
| -
|
| - DCHECK(entry);
|
| - GDataFile* file = entry->AsGDataFile();
|
| - if (!file || file->file_md5().empty() || file->is_hosted_document()) {
|
| - // No support for opening a directory or hosted document.
|
| - callback.Run(GDATA_FILE_ERROR_INVALID_OPERATION);
|
| - return;
|
| - }
|
| - DCHECK(!file->resource_id().empty());
|
| -
|
| - // Step 5 of CloseFile:
|
| - // Update the in-memory meta data. Until the committed cache is uploaded in
|
| - // background to the server and the change is propagated back, this in-memory
|
| - // meta data is referred by subsequent file operations. So it needs to reflect
|
| - // the modification made before committing.
|
| - file->set_file_info(file_info);
|
| -
|
| - // Step 6 of CloseFile: Commit the modification in cache. This will trigger
|
| + // Step 2 of CloseFile: Commit the modification in cache. This will trigger
|
| // background upload.
|
| // TODO(benchan,kinaba): Call ClearDirtyInCache instead of CommitDirtyInCache
|
| // if the file has not been modified. Come up with a way to detect the
|
| // intactness effectively, or provide a method for user to declare it when
|
| // calling CloseFile().
|
| cache_->CommitDirtyOnUIThread(
|
| - file->resource_id(),
|
| - file->file_md5(),
|
| - base::Bind(&GDataFileSystem::OnCommitDirtyInCacheCompleteForCloseFile,
|
| + entry_proto->resource_id(),
|
| + entry_proto->file_specific_info().file_md5(),
|
| + base::Bind(&GDataFileSystem::CloseFileOnUIThreadAfterCommitDirtyInCache,
|
| ui_weak_ptr_,
|
| callback));
|
| }
|
|
|
| -void GDataFileSystem::OnCommitDirtyInCacheCompleteForCloseFile(
|
| +void GDataFileSystem::CloseFileOnUIThreadAfterCommitDirtyInCache(
|
| const FileOperationCallback& callback,
|
| GDataFileError error,
|
| const std::string& /* resource_id */,
|
| @@ -3376,14 +3279,14 @@ void GDataFileSystem::OnCommitDirtyInCacheCompleteForCloseFile(
|
| callback.Run(error);
|
| }
|
|
|
| -void GDataFileSystem::OnCloseFileFinished(
|
| +void GDataFileSystem::CloseFileOnUIThreadFinalize(
|
| const FilePath& file_path,
|
| const FileOperationCallback& callback,
|
| GDataFileError result) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| DCHECK(!callback.is_null());
|
|
|
| - // Step 7 of CloseFile.
|
| + // Step 3 of CloseFile.
|
| // All the invocation of |callback| from operations initiated from CloseFile
|
| // must go through here. Removes the |file_path| from the remembered set so
|
| // that subsequent operations can open the file again.
|
|
|