Index: chrome/browser/chromeos/drive/sync/entry_revert_performer.cc |
diff --git a/chrome/browser/chromeos/drive/sync/entry_revert_performer.cc b/chrome/browser/chromeos/drive/sync/entry_revert_performer.cc |
index 2dc5d2fa710a25488a409b06cfce29b54c43ffb4..cf45e8e31b3bc483e75ea58eaec12462cd7a8b73 100644 |
--- a/chrome/browser/chromeos/drive/sync/entry_revert_performer.cc |
+++ b/chrome/browser/chromeos/drive/sync/entry_revert_performer.cc |
@@ -6,6 +6,7 @@ |
#include "chrome/browser/chromeos/drive/change_list_processor.h" |
#include "chrome/browser/chromeos/drive/drive.pb.h" |
+#include "chrome/browser/chromeos/drive/file_change.h" |
#include "chrome/browser/chromeos/drive/file_system/operation_observer.h" |
#include "chrome/browser/chromeos/drive/job_scheduler.h" |
#include "chrome/browser/chromeos/drive/resource_entry_conversion.h" |
@@ -24,7 +25,7 @@ FileError FinishRevert(ResourceMetadata* metadata, |
const std::string& local_id, |
google_apis::GDataErrorCode status, |
scoped_ptr<google_apis::FileResource> file_resource, |
- std::set<base::FilePath>* changed_directories) { |
+ FileChange* changed_files) { |
ResourceEntry entry; |
std::string parent_resource_id; |
FileError error = GDataToFileError(status); |
@@ -53,8 +54,13 @@ FileError FinishRevert(ResourceMetadata* metadata, |
if (error != FILE_ERROR_OK) |
return error; |
- changed_directories->insert(original_path.DirName()); |
+ changed_files->Update( |
+ original_path, |
+ FileChange::FILE_TYPE_UNKNOWN, // Undetermined type for deleted file. |
+ FileChange::DELETE); |
} else { |
+ changed_files->Update(original_path, entry, FileChange::DELETE); |
+ |
error = ChangeListProcessor::SetParentLocalIdOfEntry(metadata, &entry, |
parent_resource_id); |
if (error != FILE_ERROR_OK) |
@@ -65,12 +71,12 @@ FileError FinishRevert(ResourceMetadata* metadata, |
if (error != FILE_ERROR_OK) |
return error; |
- base::FilePath new_parent_path; |
- error = metadata->GetFilePath(entry.parent_local_id(), &new_parent_path); |
+ base::FilePath new_path; |
+ error = metadata->GetFilePath(local_id, &new_path); |
if (error != FILE_ERROR_OK) |
return error; |
- changed_directories->insert(new_parent_path); |
- changed_directories->insert(original_path.DirName()); |
+ |
+ changed_files->Update(new_path, entry, FileChange::ADD_OR_UPDATE); |
} |
return FILE_ERROR_OK; |
} |
@@ -143,27 +149,30 @@ void EntryRevertPerformer::RevertEntryAfterGetFileResource( |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
DCHECK(!callback.is_null()); |
- std::set<base::FilePath>* changed_directories = new std::set<base::FilePath>; |
+ FileChange* changed_files = new FileChange; |
base::PostTaskAndReplyWithResult( |
blocking_task_runner_.get(), |
FROM_HERE, |
- base::Bind(&FinishRevert, metadata_, local_id, status, |
- base::Passed(&entry), changed_directories), |
+ base::Bind(&FinishRevert, |
+ metadata_, |
+ local_id, |
+ status, |
+ base::Passed(&entry), |
+ changed_files), |
base::Bind(&EntryRevertPerformer::RevertEntryAfterFinishRevert, |
- weak_ptr_factory_.GetWeakPtr(), callback, |
- base::Owned(changed_directories))); |
+ weak_ptr_factory_.GetWeakPtr(), |
+ callback, |
+ base::Owned(changed_files))); |
} |
void EntryRevertPerformer::RevertEntryAfterFinishRevert( |
const FileOperationCallback& callback, |
- const std::set<base::FilePath>* changed_directories, |
+ const FileChange* changed_files, |
FileError error) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
DCHECK(!callback.is_null()); |
- for (std::set<base::FilePath>::const_iterator it = |
- changed_directories->begin(); it != changed_directories->end(); ++it) |
- observer_->OnDirectoryChangedByOperation(*it); |
+ observer_->OnFileChangedByOperation(*changed_files); |
callback.Run(error); |
} |