| Index: chrome/browser/chromeos/drive/file_system/remove_operation.cc
|
| diff --git a/chrome/browser/chromeos/drive/file_system/remove_operation.cc b/chrome/browser/chromeos/drive/file_system/remove_operation.cc
|
| index d11efb823b379400a54749602142d35c6af21b26..f415fc08226b1f91fcbcd50cb6356cae87986218 100644
|
| --- a/chrome/browser/chromeos/drive/file_system/remove_operation.cc
|
| +++ b/chrome/browser/chromeos/drive/file_system/remove_operation.cc
|
| @@ -7,6 +7,7 @@
|
| #include "base/sequenced_task_runner.h"
|
| #include "chrome/browser/chromeos/drive/drive.pb.h"
|
| #include "chrome/browser/chromeos/drive/file_cache.h"
|
| +#include "chrome/browser/chromeos/drive/file_change.h"
|
| #include "chrome/browser/chromeos/drive/file_system/operation_observer.h"
|
| #include "chrome/browser/chromeos/drive/file_system_util.h"
|
| #include "chrome/browser/chromeos/drive/resource_metadata.h"
|
| @@ -25,17 +26,17 @@ FileError UpdateLocalState(internal::ResourceMetadata* metadata,
|
| const base::FilePath& path,
|
| bool is_recursive,
|
| std::string* local_id,
|
| - base::FilePath* changed_directory_path) {
|
| + ResourceEntry* entry,
|
| + base::FilePath* changed_path) {
|
| FileError error = metadata->GetIdByPath(path, local_id);
|
| if (error != FILE_ERROR_OK)
|
| return error;
|
|
|
| - ResourceEntry entry;
|
| - error = metadata->GetResourceEntryById(*local_id, &entry);
|
| + error = metadata->GetResourceEntryById(*local_id, entry);
|
| if (error != FILE_ERROR_OK)
|
| return error;
|
|
|
| - if (entry.file_info().is_directory() && !is_recursive) {
|
| + if (entry->file_info().is_directory() && !is_recursive) {
|
| // Check emptiness of the directory.
|
| ResourceEntryVector entries;
|
| error = metadata->ReadDirectoryByPath(path, &entries);
|
| @@ -49,11 +50,11 @@ FileError UpdateLocalState(internal::ResourceMetadata* metadata,
|
| if (error != FILE_ERROR_OK)
|
| return error;
|
|
|
| - *changed_directory_path = path.DirName();
|
| + *changed_path = path;
|
|
|
| // Move to the trash.
|
| - entry.set_parent_local_id(util::kDriveTrashDirLocalId);
|
| - return metadata->RefreshEntry(entry);
|
| + entry->set_parent_local_id(util::kDriveTrashDirLocalId);
|
| + return metadata->RefreshEntry(*entry);
|
| }
|
|
|
| } // namespace
|
| @@ -82,7 +83,8 @@ void RemoveOperation::Remove(const base::FilePath& path,
|
| DCHECK(!callback.is_null());
|
|
|
| std::string* local_id = new std::string;
|
| - base::FilePath* changed_directory_path = new base::FilePath;
|
| + base::FilePath* changed_path = new base::FilePath;
|
| + ResourceEntry* entry = new ResourceEntry;
|
| base::PostTaskAndReplyWithResult(
|
| blocking_task_runner_.get(),
|
| FROM_HERE,
|
| @@ -92,25 +94,32 @@ void RemoveOperation::Remove(const base::FilePath& path,
|
| path,
|
| is_recursive,
|
| local_id,
|
| - changed_directory_path),
|
| + entry,
|
| + changed_path),
|
| base::Bind(&RemoveOperation::RemoveAfterUpdateLocalState,
|
| weak_ptr_factory_.GetWeakPtr(),
|
| callback,
|
| base::Owned(local_id),
|
| - base::Owned(changed_directory_path)));
|
| + base::Owned(entry),
|
| + base::Owned(changed_path)));
|
| }
|
|
|
| void RemoveOperation::RemoveAfterUpdateLocalState(
|
| const FileOperationCallback& callback,
|
| const std::string* local_id,
|
| - const base::FilePath* changed_directory_path,
|
| + const ResourceEntry* entry,
|
| + const base::FilePath* changed_path,
|
| FileError error) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| DCHECK(!callback.is_null());
|
|
|
| - if (error == FILE_ERROR_OK) {
|
| - observer_->OnDirectoryChangedByOperation(*changed_directory_path);
|
| - observer_->OnEntryUpdatedByOperation(*local_id);
|
| + if (!changed_path->empty()) {
|
| + FileChange changed_file;
|
| + changed_file.Update(*changed_path, *entry, FileChange::DELETE);
|
| + if (error == FILE_ERROR_OK) {
|
| + observer_->OnFileChangedByOperation(changed_file);
|
| + observer_->OnEntryUpdatedByOperation(*local_id);
|
| + }
|
| }
|
|
|
| callback.Run(error);
|
|
|