Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(164)

Unified Diff: chrome/browser/chromeos/drive/file_system/create_directory_operation.cc

Issue 343073003: Files.app: Provide detailed change information on onDirectoryChanged event (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/drive/file_system/create_directory_operation.cc
diff --git a/chrome/browser/chromeos/drive/file_system/create_directory_operation.cc b/chrome/browser/chromeos/drive/file_system/create_directory_operation.cc
index ae45d8387034eb8e612deeef53dba721ade23988..8a84c3cddb2f478b47a88bdeba9d89ff8ee21a7b 100644
--- a/chrome/browser/chromeos/drive/file_system/create_directory_operation.cc
+++ b/chrome/browser/chromeos/drive/file_system/create_directory_operation.cc
@@ -5,6 +5,7 @@
#include "chrome/browser/chromeos/drive/file_system/create_directory_operation.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/file_system_util.h"
#include "chrome/browser/chromeos/drive/resource_metadata.h"
@@ -17,12 +18,11 @@ namespace file_system {
namespace {
-FileError CreateDirectoryRecursively(
- internal::ResourceMetadata* metadata,
- const std::string& parent_local_id,
- const base::FilePath& relative_file_path,
- std::set<std::string>* updated_local_ids,
- std::set<base::FilePath>* changed_directories) {
+FileError CreateDirectoryRecursively(internal::ResourceMetadata* metadata,
+ const std::string& parent_local_id,
+ const base::FilePath& relative_file_path,
+ std::set<std::string>* updated_local_ids,
+ FileChange* changed_files) {
// Split the first component and remaining ones of |relative_file_path|.
std::vector<base::FilePath::StringType> components;
relative_file_path.GetComponents(&components);
@@ -52,14 +52,16 @@ FileError CreateDirectoryRecursively(
return error;
updated_local_ids->insert(local_id);
- changed_directories->insert(path.DirName());
+ DCHECK(changed_files);
+ changed_files->Update(
+ path, FileChange::FILE_TYPE_DIRECTORY, FileChange::ADD_OR_UPDATE);
if (remaining_path.empty()) // All directories are created successfully.
return FILE_ERROR_OK;
// Create descendant directories.
- return CreateDirectoryRecursively(metadata, local_id, remaining_path,
- updated_local_ids, changed_directories);
+ return CreateDirectoryRecursively(
+ metadata, local_id, remaining_path, updated_local_ids, changed_files);
}
FileError UpdateLocalState(internal::ResourceMetadata* metadata,
@@ -67,7 +69,7 @@ FileError UpdateLocalState(internal::ResourceMetadata* metadata,
bool is_exclusive,
bool is_recursive,
std::set<std::string>* updated_local_ids,
- std::set<base::FilePath>* changed_directories) {
+ FileChange* changed_files) {
// Get the existing deepest entry.
std::vector<base::FilePath::StringType> components;
directory_path.GetComponents(&components);
@@ -108,8 +110,11 @@ FileError UpdateLocalState(internal::ResourceMetadata* metadata,
// Create directories under the found directory.
base::FilePath remaining_path;
existing_deepest_path.AppendRelativePath(directory_path, &remaining_path);
- return CreateDirectoryRecursively(metadata, entry.local_id(), remaining_path,
- updated_local_ids, changed_directories);
+ return CreateDirectoryRecursively(metadata,
+ entry.local_id(),
+ remaining_path,
+ updated_local_ids,
+ changed_files);
}
} // namespace
@@ -138,26 +143,30 @@ void CreateDirectoryOperation::CreateDirectory(
DCHECK(!callback.is_null());
std::set<std::string>* updated_local_ids = new std::set<std::string>;
- 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(&UpdateLocalState,
- metadata_, directory_path, is_exclusive, is_recursive,
- updated_local_ids, changed_directories),
- base::Bind(&CreateDirectoryOperation::
- CreateDirectoryAfterUpdateLocalState,
- weak_ptr_factory_.GetWeakPtr(),
- callback,
- base::Owned(updated_local_ids),
- base::Owned(changed_directories)));
+ metadata_,
+ directory_path,
+ is_exclusive,
+ is_recursive,
+ updated_local_ids,
+ changed_files),
+ base::Bind(
+ &CreateDirectoryOperation::CreateDirectoryAfterUpdateLocalState,
+ weak_ptr_factory_.GetWeakPtr(),
+ callback,
+ base::Owned(updated_local_ids),
+ base::Owned(changed_files)));
}
void CreateDirectoryOperation::CreateDirectoryAfterUpdateLocalState(
- const FileOperationCallback& callback,
- const std::set<std::string>* updated_local_ids,
- const std::set<base::FilePath>* changed_directories,
- FileError error) {
+ const FileOperationCallback& callback,
+ const std::set<std::string>* updated_local_ids,
+ const FileChange* changed_files,
+ FileError error) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DCHECK(!callback.is_null());
@@ -165,9 +174,7 @@ void CreateDirectoryOperation::CreateDirectoryAfterUpdateLocalState(
it != updated_local_ids->end(); ++it)
observer_->OnEntryUpdatedByOperation(*it);
- 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);
}

Powered by Google App Engine
This is Rietveld 408576698