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

Unified Diff: webkit/fileapi/syncable/syncable_file_system_operation.cc

Issue 15806012: Move webkit/fileapi/syncable/* code to webkit/browser/fileapi (final!) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 7 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: webkit/fileapi/syncable/syncable_file_system_operation.cc
diff --git a/webkit/fileapi/syncable/syncable_file_system_operation.cc b/webkit/fileapi/syncable/syncable_file_system_operation.cc
deleted file mode 100644
index 5caffbe7d0ecf9e72812f3712c91eca72552e1cf..0000000000000000000000000000000000000000
--- a/webkit/fileapi/syncable/syncable_file_system_operation.cc
+++ /dev/null
@@ -1,408 +0,0 @@
-// Copyright (c) 2012 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 "webkit/fileapi/syncable/syncable_file_system_operation.h"
-
-#include "base/logging.h"
-#include "webkit/blob/shareable_file_reference.h"
-#include "webkit/browser/fileapi/file_system_context.h"
-#include "webkit/browser/fileapi/file_system_operation_context.h"
-#include "webkit/browser/fileapi/file_system_url.h"
-#include "webkit/browser/fileapi/sandbox_mount_point_provider.h"
-#include "webkit/fileapi/syncable/local_file_sync_context.h"
-#include "webkit/fileapi/syncable/syncable_file_operation_runner.h"
-#include "webkit/fileapi/syncable/syncable_file_system_util.h"
-
-using fileapi::FileSystemURL;
-using fileapi::FileSystemOperationContext;
-using fileapi::LocalFileSystemOperation;
-
-namespace sync_file_system {
-
-namespace {
-
-void WriteCallbackAdapter(
- const SyncableFileSystemOperation::WriteCallback& callback,
- base::PlatformFileError status) {
- callback.Run(status, 0, true);
-}
-
-} // namespace
-
-class SyncableFileSystemOperation::QueueableTask
- : public SyncableFileOperationRunner::Task {
- public:
- QueueableTask(SyncableFileSystemOperation* operation,
- const base::Closure& task)
- : operation_(operation), task_(task) {}
-
- virtual ~QueueableTask() {
- DCHECK(!operation_);
- }
-
- virtual void Run() OVERRIDE {
- DCHECK(!task_.is_null());
- task_.Run();
- operation_ = NULL;
- }
-
- virtual void Cancel() OVERRIDE {
- DCHECK(!task_.is_null());
- DCHECK(operation_);
- operation_->OnCancelled();
- task_.Reset(); // This will delete operation_.
- operation_ = NULL;
- }
-
- virtual std::vector<FileSystemURL>& target_paths() const OVERRIDE {
- DCHECK(operation_);
- return operation_->target_paths_;
- }
-
- private:
- SyncableFileSystemOperation* operation_;
- base::Closure task_;
- DISALLOW_COPY_AND_ASSIGN(QueueableTask);
-};
-
-SyncableFileSystemOperation::~SyncableFileSystemOperation() {}
-
-void SyncableFileSystemOperation::CreateFile(
- const FileSystemURL& url,
- bool exclusive,
- const StatusCallback& callback) {
- DCHECK(CalledOnValidThread());
- if (!operation_runner_) {
- AbortOperation(callback, base::PLATFORM_FILE_ERROR_NOT_FOUND);
- return;
- }
- DCHECK(operation_runner_.get());
- target_paths_.push_back(url);
- completion_callback_ = callback;
- scoped_ptr<SyncableFileOperationRunner::Task> task(new QueueableTask(
- this,
- base::Bind(&FileSystemOperation::CreateFile,
- base::Unretained(NewOperation()),
- url, exclusive,
- base::Bind(&self::DidFinish, base::Owned(this)))));
- operation_runner_->PostOperationTask(task.Pass());
-}
-
-void SyncableFileSystemOperation::CreateDirectory(
- const FileSystemURL& url,
- bool exclusive,
- bool recursive,
- const StatusCallback& callback) {
- DCHECK(CalledOnValidThread());
- if (!operation_runner_) {
- AbortOperation(callback, base::PLATFORM_FILE_ERROR_NOT_FOUND);
- return;
- }
- if (!is_directory_operation_enabled_) {
- AbortOperation(callback, base::PLATFORM_FILE_ERROR_INVALID_OPERATION);
- return;
- }
- DCHECK(operation_runner_.get());
- target_paths_.push_back(url);
- completion_callback_ = callback;
- scoped_ptr<SyncableFileOperationRunner::Task> task(new QueueableTask(
- this,
- base::Bind(&FileSystemOperation::CreateDirectory,
- base::Unretained(NewOperation()),
- url, exclusive, recursive,
- base::Bind(&self::DidFinish, base::Owned(this)))));
- operation_runner_->PostOperationTask(task.Pass());
-}
-
-void SyncableFileSystemOperation::Copy(
- const FileSystemURL& src_url,
- const FileSystemURL& dest_url,
- const StatusCallback& callback) {
- DCHECK(CalledOnValidThread());
- if (!operation_runner_) {
- AbortOperation(callback, base::PLATFORM_FILE_ERROR_NOT_FOUND);
- return;
- }
- DCHECK(operation_runner_.get());
- target_paths_.push_back(dest_url);
- completion_callback_ = callback;
- scoped_ptr<SyncableFileOperationRunner::Task> task(new QueueableTask(
- this,
- base::Bind(&FileSystemOperation::Copy,
- base::Unretained(NewOperation()),
- src_url, dest_url,
- base::Bind(&self::DidFinish, base::Owned(this)))));
- operation_runner_->PostOperationTask(task.Pass());
-}
-
-void SyncableFileSystemOperation::Move(
- const FileSystemURL& src_url,
- const FileSystemURL& dest_url,
- const StatusCallback& callback) {
- DCHECK(CalledOnValidThread());
- if (!operation_runner_) {
- AbortOperation(callback, base::PLATFORM_FILE_ERROR_NOT_FOUND);
- return;
- }
- DCHECK(operation_runner_.get());
- target_paths_.push_back(src_url);
- target_paths_.push_back(dest_url);
- completion_callback_ = callback;
- scoped_ptr<SyncableFileOperationRunner::Task> task(new QueueableTask(
- this,
- base::Bind(&FileSystemOperation::Move,
- base::Unretained(NewOperation()),
- src_url, dest_url,
- base::Bind(&self::DidFinish, base::Owned(this)))));
- operation_runner_->PostOperationTask(task.Pass());
-}
-
-void SyncableFileSystemOperation::DirectoryExists(
- const FileSystemURL& url,
- const StatusCallback& callback) {
- DCHECK(CalledOnValidThread());
- if (!operation_runner_) {
- AbortOperation(callback, base::PLATFORM_FILE_ERROR_NOT_FOUND);
- return;
- }
- NewOperation()->DirectoryExists(url, callback);
- delete this;
-}
-
-void SyncableFileSystemOperation::FileExists(
- const FileSystemURL& url,
- const StatusCallback& callback) {
- DCHECK(CalledOnValidThread());
- if (!operation_runner_) {
- AbortOperation(callback, base::PLATFORM_FILE_ERROR_NOT_FOUND);
- return;
- }
- NewOperation()->FileExists(url, callback);
- delete this;
-}
-
-void SyncableFileSystemOperation::GetMetadata(
- const FileSystemURL& url,
- const GetMetadataCallback& callback) {
- DCHECK(CalledOnValidThread());
- if (!operation_runner_) {
- callback.Run(base::PLATFORM_FILE_ERROR_NOT_FOUND,
- base::PlatformFileInfo(), base::FilePath());
- delete this;
- return;
- }
- NewOperation()->GetMetadata(url, callback);
- delete this;
-}
-
-void SyncableFileSystemOperation::ReadDirectory(
- const FileSystemURL& url,
- const ReadDirectoryCallback& callback) {
- DCHECK(CalledOnValidThread());
- if (!operation_runner_) {
- callback.Run(base::PLATFORM_FILE_ERROR_NOT_FOUND, FileEntryList(), false);
- delete this;
- return;
- }
- // This is a read operation and there'd be no hard to let it go even if
- // directory operation is disabled. (And we should allow this if it's made
- // on the root directory)
- NewOperation()->ReadDirectory(url, callback);
- delete this;
-}
-
-void SyncableFileSystemOperation::Remove(
- const FileSystemURL& url, bool recursive,
- const StatusCallback& callback) {
- DCHECK(CalledOnValidThread());
- if (!operation_runner_) {
- AbortOperation(callback, base::PLATFORM_FILE_ERROR_NOT_FOUND);
- return;
- }
- DCHECK(operation_runner_.get());
- target_paths_.push_back(url);
- completion_callback_ = callback;
- scoped_ptr<SyncableFileOperationRunner::Task> task(new QueueableTask(
- this,
- base::Bind(&FileSystemOperation::Remove,
- base::Unretained(NewOperation()),
- url, recursive,
- base::Bind(&self::DidFinish, base::Owned(this)))));
- operation_runner_->PostOperationTask(task.Pass());
-}
-
-void SyncableFileSystemOperation::Write(
- const net::URLRequestContext* url_request_context,
- const FileSystemURL& url,
- const GURL& blob_url,
- int64 offset,
- const WriteCallback& callback) {
- DCHECK(CalledOnValidThread());
- if (!operation_runner_) {
- callback.Run(base::PLATFORM_FILE_ERROR_NOT_FOUND, 0, true);
- delete this;
- return;
- }
- DCHECK(operation_runner_.get());
- target_paths_.push_back(url);
- completion_callback_ = base::Bind(&WriteCallbackAdapter, callback);
- scoped_ptr<SyncableFileOperationRunner::Task> task(new QueueableTask(
- this,
- NewOperation()->GetWriteClosure(
- url_request_context, url, blob_url, offset,
- base::Bind(&self::DidWrite, base::Owned(this), callback))));
- operation_runner_->PostOperationTask(task.Pass());
-}
-
-void SyncableFileSystemOperation::Truncate(
- const FileSystemURL& url, int64 length,
- const StatusCallback& callback) {
- DCHECK(CalledOnValidThread());
- if (!operation_runner_) {
- AbortOperation(callback, base::PLATFORM_FILE_ERROR_NOT_FOUND);
- return;
- }
- DCHECK(operation_runner_.get());
- target_paths_.push_back(url);
- completion_callback_ = callback;
- scoped_ptr<SyncableFileOperationRunner::Task> task(new QueueableTask(
- this,
- base::Bind(&FileSystemOperation::Truncate,
- base::Unretained(NewOperation()),
- url, length,
- base::Bind(&self::DidFinish, base::Owned(this)))));
- operation_runner_->PostOperationTask(task.Pass());
-}
-
-void SyncableFileSystemOperation::TouchFile(
- const FileSystemURL& url,
- const base::Time& last_access_time,
- const base::Time& last_modified_time,
- const StatusCallback& callback) {
- DCHECK(CalledOnValidThread());
- if (!operation_runner_) {
- AbortOperation(callback, base::PLATFORM_FILE_ERROR_NOT_FOUND);
- return;
- }
- NewOperation()->TouchFile(url, last_access_time,
- last_modified_time, callback);
- delete this;
-}
-
-void SyncableFileSystemOperation::OpenFile(
- const FileSystemURL& url,
- int file_flags,
- base::ProcessHandle peer_handle,
- const OpenFileCallback& callback) {
- NOTREACHED();
- delete this;
-}
-
-void SyncableFileSystemOperation::Cancel(
- const StatusCallback& cancel_callback) {
- DCHECK(CalledOnValidThread());
- DCHECK(inflight_operation_);
- completion_callback_ = cancel_callback;
- NewOperation()->Cancel(base::Bind(&self::DidFinish, base::Owned(this)));
-}
-
-void SyncableFileSystemOperation::CreateSnapshotFile(
- const FileSystemURL& path,
- const SnapshotFileCallback& callback) {
- DCHECK(CalledOnValidThread());
- if (!operation_runner_) {
- callback.Run(base::PLATFORM_FILE_ERROR_NOT_FOUND,
- base::PlatformFileInfo(), base::FilePath(), NULL);
- delete this;
- return;
- }
- NewOperation()->CreateSnapshotFile(path, callback);
- delete this;
-}
-
-void SyncableFileSystemOperation::CopyInForeignFile(
- const base::FilePath& src_local_disk_path,
- const FileSystemURL& dest_url,
- const StatusCallback& callback) {
- DCHECK(CalledOnValidThread());
- if (!operation_runner_) {
- AbortOperation(callback, base::PLATFORM_FILE_ERROR_NOT_FOUND);
- return;
- }
- DCHECK(operation_runner_.get());
- target_paths_.push_back(dest_url);
- completion_callback_ = callback;
- scoped_ptr<SyncableFileOperationRunner::Task> task(new QueueableTask(
- this,
- base::Bind(&LocalFileSystemOperation::CopyInForeignFile,
- base::Unretained(NewOperation()),
- src_local_disk_path, dest_url,
- base::Bind(&self::DidFinish, base::Owned(this)))));
- operation_runner_->PostOperationTask(task.Pass());
-}
-
-SyncableFileSystemOperation::SyncableFileSystemOperation(
- fileapi::FileSystemContext* file_system_context,
- scoped_ptr<FileSystemOperationContext> operation_context)
- : LocalFileSystemOperation(file_system_context,
- operation_context.Pass()),
- inflight_operation_(NULL) {
- DCHECK(file_system_context);
- if (!file_system_context->sync_context()) {
- // Syncable FileSystem is opened in a file system context which doesn't
- // support (or is not initialized for) the API.
- // Returning here to leave operation_runner_ as NULL.
- return;
- }
- operation_runner_ = file_system_context->sync_context()->operation_runner();
- is_directory_operation_enabled_ = IsSyncFSDirectoryOperationEnabled();
-}
-
-LocalFileSystemOperation* SyncableFileSystemOperation::NewOperation() {
- DCHECK(operation_context_);
- inflight_operation_ = new LocalFileSystemOperation(
- file_system_context(),
- operation_context_.Pass());
- DCHECK(inflight_operation_);
- return inflight_operation_;
-}
-
-void SyncableFileSystemOperation::DidFinish(base::PlatformFileError status) {
- DCHECK(CalledOnValidThread());
- DCHECK(!completion_callback_.is_null());
- if (operation_runner_)
- operation_runner_->OnOperationCompleted(target_paths_);
- completion_callback_.Run(status);
-}
-
-void SyncableFileSystemOperation::DidWrite(
- const WriteCallback& callback,
- base::PlatformFileError result,
- int64 bytes,
- bool complete) {
- DCHECK(CalledOnValidThread());
- if (!complete) {
- callback.Run(result, bytes, complete);
- return;
- }
- if (operation_runner_)
- operation_runner_->OnOperationCompleted(target_paths_);
- callback.Run(result, bytes, complete);
-}
-
-void SyncableFileSystemOperation::OnCancelled() {
- DCHECK(!completion_callback_.is_null());
- completion_callback_.Run(base::PLATFORM_FILE_ERROR_ABORT);
- delete inflight_operation_;
-}
-
-void SyncableFileSystemOperation::AbortOperation(
- const StatusCallback& callback,
- base::PlatformFileError error) {
- callback.Run(error);
- delete inflight_operation_;
- delete this;
-}
-
-} // namespace sync_file_system
« no previous file with comments | « webkit/fileapi/syncable/syncable_file_system_operation.h ('k') | webkit/fileapi/syncable/syncable_file_system_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698