Commit bd69f576 authored by kinuko@chromium.org's avatar kinuko@chromium.org

Remove dependency to file_system_operation_impl.h outside from chrome/

Instead introducing a static FileSystemOperation::Create method.

As a preparation for moving fileapi code from webkit/ to content/.
(file_system_operation.h will be placed under content/public/browser/ while
file_system_operation_impl.{h,cc} will be placed under content/browser/fileapi
and will be hidden from chrome/)

BUG=265770
TEST=existing tests

Review URL: https://chromiumcodereview.appspot.com/23835005

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@221976 0039d316-1c4b-4281-b951-d872f2087c98
parent 9c43fbd4
......@@ -19,8 +19,8 @@
#include "webkit/browser/fileapi/external_mount_points.h"
#include "webkit/browser/fileapi/file_system_context.h"
#include "webkit/browser/fileapi/file_system_file_stream_reader.h"
#include "webkit/browser/fileapi/file_system_operation.h"
#include "webkit/browser/fileapi/file_system_operation_context.h"
#include "webkit/browser/fileapi/file_system_operation_impl.h"
#include "webkit/browser/fileapi/file_system_url.h"
#include "webkit/browser/fileapi/isolated_context.h"
#include "webkit/browser/fileapi/isolated_file_util.h"
......@@ -249,8 +249,8 @@ fileapi::FileSystemOperation* FileSystemBackend::CreateFileSystemOperation(
scoped_ptr<fileapi::FileSystemOperationContext> operation_context(
new fileapi::FileSystemOperationContext(context));
operation_context->set_root_path(GetFileSystemRootPath(url));
return new fileapi::FileSystemOperationImpl(url, context,
operation_context.Pass());
return fileapi::FileSystemOperation::Create(
url, context, operation_context.Pass());
}
scoped_ptr<webkit_blob::FileStreamReader>
......
......@@ -22,8 +22,8 @@
#include "webkit/browser/fileapi/copy_or_move_file_validator.h"
#include "webkit/browser/fileapi/file_system_context.h"
#include "webkit/browser/fileapi/file_system_file_stream_reader.h"
#include "webkit/browser/fileapi/file_system_operation.h"
#include "webkit/browser/fileapi/file_system_operation_context.h"
#include "webkit/browser/fileapi/file_system_operation_impl.h"
#include "webkit/browser/fileapi/isolated_context.h"
#include "webkit/browser/fileapi/isolated_file_util.h"
#include "webkit/browser/fileapi/local_file_stream_writer.h"
......@@ -162,8 +162,8 @@ MediaFileSystemBackend::CreateFileSystemOperation(
scoped_ptr<fileapi::FileSystemOperationContext> operation_context(
new fileapi::FileSystemOperationContext(
context, media_task_runner_.get()));
return new fileapi::FileSystemOperationImpl(url, context,
operation_context.Pass());
return fileapi::FileSystemOperation::Create(
url, context, operation_context.Pass());
}
scoped_ptr<webkit_blob::FileStreamReader>
......
......@@ -16,7 +16,7 @@
#include "content/public/browser/notification_service.h"
#include "webkit/browser/fileapi/file_system_context.h"
#include "webkit/browser/fileapi/file_system_file_stream_reader.h"
#include "webkit/browser/fileapi/file_system_operation_impl.h"
#include "webkit/browser/fileapi/file_system_operation.h"
#include "webkit/browser/fileapi/sandbox_file_stream_writer.h"
#include "webkit/browser/fileapi/sandbox_quota_observer.h"
#include "webkit/common/fileapi/file_system_util.h"
......@@ -160,7 +160,7 @@ SyncFileSystemBackend::CreateFileSystemOperation(
return NULL;
if (url.type() == fileapi::kFileSystemTypeSyncableForInternalSync) {
return new fileapi::FileSystemOperationImpl(
return fileapi::FileSystemOperation::Create(
url, context, operation_context.Pass());
}
......
......@@ -333,8 +333,7 @@ TEST_F(SyncableFileOperationRunnerTest, QueueAndCancel) {
EXPECT_EQ(2, callback_count_);
}
// Test if CopyInForeignFile runs cooperatively with other Sync operations
// when it is called directly via AsFileSystemOperationImpl.
// Test if CopyInForeignFile runs cooperatively with other Sync operations.
TEST_F(SyncableFileOperationRunnerTest, CopyInForeignFile) {
const std::string kTestData("test data");
......
......@@ -11,9 +11,10 @@
#include "chrome/browser/sync_file_system/syncable_file_system_util.h"
#include "net/url_request/url_request.h"
#include "webkit/browser/fileapi/file_system_context.h"
#include "webkit/browser/fileapi/file_system_operation.h"
#include "webkit/browser/fileapi/file_system_operation_context.h"
#include "webkit/browser/fileapi/file_system_operation_impl.h"
#include "webkit/browser/fileapi/file_system_url.h"
#include "webkit/browser/fileapi/file_writer_delegate.h"
#include "webkit/browser/fileapi/sandbox_file_system_backend.h"
#include "webkit/common/blob/shareable_file_reference.h"
......@@ -362,8 +363,8 @@ SyncableFileSystemOperation::SyncableFileSystemOperation(
// Returning here to leave operation_runner_ as NULL.
return;
}
impl_.reset(new fileapi::FileSystemOperationImpl(url_, file_system_context,
operation_context.Pass()));
impl_.reset(fileapi::FileSystemOperation::Create(
url_, file_system_context, operation_context.Pass()));
operation_runner_ = backend->sync_context()->operation_runner();
is_directory_operation_enabled_ = IsSyncFSDirectoryOperationEnabled();
}
......
......@@ -11,6 +11,8 @@
#include "base/files/file_path.h"
#include "base/platform_file.h"
#include "base/process/process.h"
#include "webkit/browser/fileapi/file_system_operation_context.h"
#include "webkit/browser/webkit_storage_browser_export.h"
#include "webkit/common/fileapi/directory_entry.h"
namespace base {
......@@ -29,9 +31,9 @@ class GURL;
namespace fileapi {
class FileSystemContext;
class FileSystemURL;
class FileWriterDelegate;
class FileSystemOperationImpl;
// The interface class for FileSystemOperation implementations.
//
......@@ -56,6 +58,11 @@ class FileSystemOperationImpl;
// it gets called.
class FileSystemOperation {
public:
WEBKIT_STORAGE_BROWSER_EXPORT static FileSystemOperation* Create(
const FileSystemURL& url,
FileSystemContext* file_system_context,
scoped_ptr<FileSystemOperationContext> operation_context);
virtual ~FileSystemOperation() {}
// Used for CreateFile(), etc. |result| is the return code of the operation.
......
......@@ -31,20 +31,12 @@ using webkit_blob::ScopedFile;
namespace fileapi {
FileSystemOperationImpl::FileSystemOperationImpl(
FileSystemOperation* FileSystemOperation::Create(
const FileSystemURL& url,
FileSystemContext* file_system_context,
scoped_ptr<FileSystemOperationContext> operation_context)
: file_system_context_(file_system_context),
operation_context_(operation_context.Pass()),
async_file_util_(NULL),
peer_handle_(base::kNullProcessHandle),
pending_operation_(kOperationNone),
weak_factory_(this) {
DCHECK(operation_context_.get());
operation_context_->DetachUserDataThread();
async_file_util_ = file_system_context_->GetAsyncFileUtil(url.type());
DCHECK(async_file_util_);
scoped_ptr<FileSystemOperationContext> operation_context) {
return new FileSystemOperationImpl(url, file_system_context,
operation_context.Pass());
}
FileSystemOperationImpl::~FileSystemOperationImpl() {
......@@ -318,6 +310,22 @@ base::PlatformFileError FileSystemOperationImpl::SyncGetPlatformPath(
return base::PLATFORM_FILE_OK;
}
FileSystemOperationImpl::FileSystemOperationImpl(
const FileSystemURL& url,
FileSystemContext* file_system_context,
scoped_ptr<FileSystemOperationContext> operation_context)
: file_system_context_(file_system_context),
operation_context_(operation_context.Pass()),
async_file_util_(NULL),
peer_handle_(base::kNullProcessHandle),
pending_operation_(kOperationNone),
weak_factory_(this) {
DCHECK(operation_context_.get());
operation_context_->DetachUserDataThread();
async_file_util_ = file_system_context_->GetAsyncFileUtil(url.type());
DCHECK(async_file_util_);
}
void FileSystemOperationImpl::GetUsageAndQuotaThenRunTask(
const FileSystemURL& url,
const base::Closure& task,
......
......@@ -28,15 +28,6 @@ class RecursiveOperationDelegate;
class WEBKIT_STORAGE_BROWSER_EXPORT FileSystemOperationImpl
: public NON_EXPORTED_BASE(FileSystemOperation) {
public:
// NOTE: This constructor should not be called outside FileSystemBackends;
// instead please consider using
// file_system_context->CreateFileSystemOperation() to instantiate
// an appropriate FileSystemOperation.
FileSystemOperationImpl(
const FileSystemURL& url,
FileSystemContext* file_system_context,
scoped_ptr<FileSystemOperationContext> operation_context);
virtual ~FileSystemOperationImpl();
// FileSystemOperation overrides.
......@@ -103,6 +94,13 @@ class WEBKIT_STORAGE_BROWSER_EXPORT FileSystemOperationImpl
}
private:
friend class FileSystemOperation;
FileSystemOperationImpl(
const FileSystemURL& url,
FileSystemContext* file_system_context,
scoped_ptr<FileSystemOperationContext> operation_context);
// Queries the quota and usage and then runs the given |task|.
// If an error occurs during the quota query it runs |error_callback| instead.
void GetUsageAndQuotaThenRunTask(
......
......@@ -12,7 +12,7 @@
#include "webkit/browser/fileapi/file_observers.h"
#include "webkit/browser/fileapi/file_stream_writer.h"
#include "webkit/browser/fileapi/file_system_context.h"
#include "webkit/browser/fileapi/file_system_operation_impl.h"
#include "webkit/browser/fileapi/file_system_operation.h"
#include "webkit/browser/fileapi/file_writer_delegate.h"
#include "webkit/common/blob/shareable_file_reference.h"
......
......@@ -18,8 +18,8 @@
#include "webkit/browser/fileapi/copy_or_move_file_validator.h"
#include "webkit/browser/fileapi/file_system_context.h"
#include "webkit/browser/fileapi/file_system_file_stream_reader.h"
#include "webkit/browser/fileapi/file_system_operation.h"
#include "webkit/browser/fileapi/file_system_operation_context.h"
#include "webkit/browser/fileapi/file_system_operation_impl.h"
#include "webkit/browser/fileapi/isolated_context.h"
#include "webkit/browser/fileapi/isolated_file_util.h"
#include "webkit/browser/fileapi/local_file_stream_writer.h"
......@@ -99,7 +99,7 @@ FileSystemOperation* IsolatedFileSystemBackend::CreateFileSystemOperation(
const FileSystemURL& url,
FileSystemContext* context,
base::PlatformFileError* error_code) const {
return new FileSystemOperationImpl(
return FileSystemOperation::Create(
url, context, make_scoped_ptr(new FileSystemOperationContext(context)));
}
......
......@@ -14,8 +14,8 @@
#include "webkit/browser/fileapi/copy_or_move_file_validator.h"
#include "webkit/browser/fileapi/file_system_context.h"
#include "webkit/browser/fileapi/file_system_file_stream_reader.h"
#include "webkit/browser/fileapi/file_system_operation.h"
#include "webkit/browser/fileapi/file_system_operation_context.h"
#include "webkit/browser/fileapi/file_system_operation_impl.h"
#include "webkit/browser/fileapi/file_system_options.h"
#include "webkit/browser/fileapi/file_system_usage_cache.h"
#include "webkit/browser/fileapi/obfuscated_file_util.h"
......@@ -120,7 +120,7 @@ FileSystemOperation* SandboxFileSystemBackend::CreateFileSystemOperation(
else
operation_context->set_quota_limit_type(quota::kQuotaLimitTypeLimited);
return new FileSystemOperationImpl(url, context, operation_context.Pass());
return FileSystemOperation::Create(url, context, operation_context.Pass());
}
scoped_ptr<webkit_blob::FileStreamReader>
......
......@@ -13,8 +13,8 @@
#include "webkit/browser/fileapi/copy_or_move_file_validator.h"
#include "webkit/browser/fileapi/file_observers.h"
#include "webkit/browser/fileapi/file_system_file_stream_reader.h"
#include "webkit/browser/fileapi/file_system_operation.h"
#include "webkit/browser/fileapi/file_system_operation_context.h"
#include "webkit/browser/fileapi/file_system_operation_impl.h"
#include "webkit/browser/fileapi/file_system_quota_util.h"
#include "webkit/browser/fileapi/local_file_util.h"
#include "webkit/browser/fileapi/native_file_util.h"
......@@ -183,7 +183,7 @@ FileSystemOperation* TestFileSystemBackend::CreateFileSystemOperation(
operation_context->set_change_observers(
*quota_util_->GetChangeObservers(url.type()));
operation_context->set_root_path(base_path_);
return new FileSystemOperationImpl(url, context, operation_context.Pass());
return FileSystemOperation::Create(url, context, operation_context.Pass());
}
scoped_ptr<webkit_blob::FileStreamReader>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment