X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fchrome%2Fbrowser%2Fchromeos%2Fdrive%2Ffile_system%2Fcreate_directory_operation.cc;h=71f28542f826912639085bf39a24815254bbd9b1;hb=4a1a0bdd01eef90b0826a0e761d3379d3715c10f;hp=ae45d8387034eb8e612deeef53dba721ade23988;hpb=b1be5ca53587d23e7aeb77b26861fdc0a181ffd8;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/chrome/browser/chromeos/drive/file_system/create_directory_operation.cc b/src/chrome/browser/chromeos/drive/file_system/create_directory_operation.cc index ae45d83..71f2854 100644 --- a/src/chrome/browser/chromeos/drive/file_system/create_directory_operation.cc +++ b/src/chrome/browser/chromeos/drive/file_system/create_directory_operation.cc @@ -5,7 +5,8 @@ #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_system/operation_observer.h" +#include "chrome/browser/chromeos/drive/file_change.h" +#include "chrome/browser/chromeos/drive/file_system/operation_delegate.h" #include "chrome/browser/chromeos/drive/file_system_util.h" #include "chrome/browser/chromeos/drive/resource_metadata.h" #include "content/public/browser/browser_thread.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* updated_local_ids, - std::set* changed_directories) { +FileError CreateDirectoryRecursively(internal::ResourceMetadata* metadata, + const std::string& parent_local_id, + const base::FilePath& relative_file_path, + std::set* updated_local_ids, + FileChange* changed_files) { // Split the first component and remaining ones of |relative_file_path|. std::vector 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* updated_local_ids, - std::set* changed_directories) { + FileChange* changed_files) { // Get the existing deepest entry. std::vector components; directory_path.GetComponents(&components); @@ -108,18 +110,21 @@ 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 CreateDirectoryOperation::CreateDirectoryOperation( base::SequencedTaskRunner* blocking_task_runner, - OperationObserver* observer, + OperationDelegate* delegate, internal::ResourceMetadata* metadata) : blocking_task_runner_(blocking_task_runner), - observer_(observer), + delegate_(delegate), metadata_(metadata), weak_ptr_factory_(this) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); @@ -138,36 +143,38 @@ void CreateDirectoryOperation::CreateDirectory( DCHECK(!callback.is_null()); std::set* updated_local_ids = new std::set; - std::set* changed_directories = new std::set; + 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* updated_local_ids, - const std::set* changed_directories, - FileError error) { + const FileOperationCallback& callback, + const std::set* updated_local_ids, + const FileChange* changed_files, + FileError error) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); DCHECK(!callback.is_null()); for (std::set::const_iterator it = updated_local_ids->begin(); it != updated_local_ids->end(); ++it) - observer_->OnEntryUpdatedByOperation(*it); + delegate_->OnEntryUpdatedByOperation(*it); - for (std::set::const_iterator it = - changed_directories->begin(); it != changed_directories->end(); ++it) - observer_->OnDirectoryChangedByOperation(*it); + delegate_->OnFileChangedByOperation(*changed_files); callback.Run(error); }