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 |
deleted file mode 100644 |
index f06e66045b0b1a14aa8b4a3b0667fe6774b8fd5d..0000000000000000000000000000000000000000 |
--- a/chrome/browser/chromeos/drive/file_system/create_directory_operation.cc |
+++ /dev/null |
@@ -1,182 +0,0 @@ |
-// Copyright (c) 2013 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#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_delegate.h" |
-#include "chrome/browser/chromeos/drive/file_system_core_util.h" |
-#include "chrome/browser/chromeos/drive/job_scheduler.h" |
-#include "chrome/browser/chromeos/drive/resource_metadata.h" |
- |
-namespace drive { |
-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, |
- 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); |
- DCHECK(!components.empty()); |
- base::FilePath title(components[0]); |
- base::FilePath remaining_path; |
- title.AppendRelativePath(relative_file_path, &remaining_path); |
- |
- ResourceEntry entry; |
- const base::Time now = base::Time::Now(); |
- entry.set_title(title.AsUTF8Unsafe()); |
- entry.mutable_file_info()->set_is_directory(true); |
- entry.mutable_file_info()->set_last_modified(now.ToInternalValue()); |
- entry.mutable_file_info()->set_last_accessed(now.ToInternalValue()); |
- entry.set_parent_local_id(parent_local_id); |
- entry.set_metadata_edit_state(ResourceEntry::DIRTY); |
- entry.set_modification_date(base::Time::Now().ToInternalValue()); |
- |
- std::string local_id; |
- FileError error = metadata->AddEntry(entry, &local_id); |
- if (error != FILE_ERROR_OK) |
- return error; |
- |
- base::FilePath path; |
- error = metadata->GetFilePath(local_id, &path); |
- if (error != FILE_ERROR_OK) |
- return error; |
- |
- updated_local_ids->insert(local_id); |
- DCHECK(changed_files); |
- changed_files->Update(path, FileChange::FILE_TYPE_DIRECTORY, |
- FileChange::CHANGE_TYPE_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_files); |
-} |
- |
-FileError UpdateLocalState(internal::ResourceMetadata* metadata, |
- const base::FilePath& directory_path, |
- bool is_exclusive, |
- bool is_recursive, |
- std::set<std::string>* updated_local_ids, |
- FileChange* changed_files) { |
- // Get the existing deepest entry. |
- std::vector<base::FilePath::StringType> components; |
- directory_path.GetComponents(&components); |
- |
- if (components.empty() || |
- components[0] != util::GetDriveGrandRootPath().value()) |
- return FILE_ERROR_NOT_FOUND; |
- |
- base::FilePath existing_deepest_path(components[0]); |
- std::string local_id = util::kDriveGrandRootLocalId; |
- for (size_t i = 1; i < components.size(); ++i) { |
- const std::string component = base::FilePath(components[i]).AsUTF8Unsafe(); |
- std::string child_local_id; |
- FileError error = |
- metadata->GetChildId(local_id, component, &child_local_id); |
- if (error == FILE_ERROR_NOT_FOUND) |
- break; |
- if (error != FILE_ERROR_OK) |
- return error; |
- existing_deepest_path = existing_deepest_path.Append(components[i]); |
- local_id = child_local_id; |
- } |
- |
- ResourceEntry entry; |
- FileError error = metadata->GetResourceEntryById(local_id, &entry); |
- if (error != FILE_ERROR_OK) |
- return error; |
- |
- if (!entry.file_info().is_directory()) |
- return FILE_ERROR_NOT_A_DIRECTORY; |
- |
- if (directory_path == existing_deepest_path) |
- return is_exclusive ? FILE_ERROR_EXISTS : FILE_ERROR_OK; |
- |
- // If it is not recursive creation, the found directory must be the direct |
- // parent of |directory_path| to ensure creating exact one directory. |
- if (!is_recursive && existing_deepest_path != directory_path.DirName()) |
- return FILE_ERROR_NOT_FOUND; |
- |
- // 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_files); |
-} |
- |
-} // namespace |
- |
-CreateDirectoryOperation::CreateDirectoryOperation( |
- base::SequencedTaskRunner* blocking_task_runner, |
- OperationDelegate* delegate, |
- internal::ResourceMetadata* metadata) |
- : blocking_task_runner_(blocking_task_runner), |
- delegate_(delegate), |
- metadata_(metadata), |
- weak_ptr_factory_(this) { |
-} |
- |
-CreateDirectoryOperation::~CreateDirectoryOperation() { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
-} |
- |
-void CreateDirectoryOperation::CreateDirectory( |
- const base::FilePath& directory_path, |
- bool is_exclusive, |
- bool is_recursive, |
- const FileOperationCallback& callback) { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
- DCHECK(!callback.is_null()); |
- |
- std::set<std::string>* updated_local_ids = new std::set<std::string>; |
- 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_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 FileChange* changed_files, |
- FileError error) { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
- DCHECK(!callback.is_null()); |
- |
- for (const auto& id : *updated_local_ids) { |
- delegate_->OnEntryUpdatedByOperation(ClientContext(USER_INITIATED), id); |
- } |
- |
- delegate_->OnFileChangedByOperation(*changed_files); |
- |
- callback.Run(error); |
-} |
- |
-} // namespace file_system |
-} // namespace drive |