summaryrefslogtreecommitdiffstats
path: root/webkit/fileapi
diff options
context:
space:
mode:
authordmikurube@chromium.org <dmikurube@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-27 06:06:43 +0000
committerdmikurube@chromium.org <dmikurube@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-27 06:06:43 +0000
commitb0e2a4f2793a60b8979b738758f63a4df7539665 (patch)
treef917b27caf5fba78f0bf1ec721ad3c3bc5fa2fd4 /webkit/fileapi
parent7e494c6d13267fe91a649c81ca858a58c449d6c4 (diff)
downloadchromium_src-b0e2a4f2793a60b8979b738758f63a4df7539665.zip
chromium_src-b0e2a4f2793a60b8979b738758f63a4df7539665.tar.gz
chromium_src-b0e2a4f2793a60b8979b738758f63a4df7539665.tar.bz2
Refactoring: Change all -FileUtils non-Singleton and to own underlying FileUtils.
Based on the discussion at http://codereview.chromium.org/7174002/diff/26001/webkit/fileapi/local_file_system_file_util.h#newcode38, this change * also reduces dependency between FileUtils, * enables more flexible stacking of -FileUtils, such as QuotaFileUtil over other -FileUtils, and * makes -FileUtils symmetry so owner handling for these objects gets unified. BUG=none TEST=FileSystemFileUtilTest.*,FileSystemOperationTest.*,FileSystemOperationWriteTest.*,FileSystemQuotaTest.*,FileWriterDelegateTest.*,LocalFileSystemFileUtilTest.*,ObfuscatedFileSystemFileUtil.*,QuotaFileUtil.*,SandboxMountPointProviderTest.* Review URL: http://codereview.chromium.org/7312023 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@94251 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/fileapi')
-rw-r--r--webkit/fileapi/file_system_file_util.cc6
-rw-r--r--webkit/fileapi/file_system_file_util.h8
-rw-r--r--webkit/fileapi/file_system_file_util_unittest.cc2
-rw-r--r--webkit/fileapi/file_system_operation_unittest.cc2
-rw-r--r--webkit/fileapi/file_system_operation_write_unittest.cc2
-rw-r--r--webkit/fileapi/file_system_quota_client_unittest.cc2
-rw-r--r--webkit/fileapi/file_system_quota_unittest.cc2
-rw-r--r--webkit/fileapi/file_writer_delegate_unittest.cc7
-rw-r--r--webkit/fileapi/local_file_system_file_util.cc3
-rw-r--r--webkit/fileapi/local_file_system_file_util.h10
-rw-r--r--webkit/fileapi/local_file_system_file_util_unittest.cc2
-rw-r--r--webkit/fileapi/obfuscated_file_system_file_util.h8
-rw-r--r--webkit/fileapi/obfuscated_file_system_file_util_unittest.cc2
-rw-r--r--webkit/fileapi/quota_file_util.cc37
-rw-r--r--webkit/fileapi/quota_file_util.h27
-rw-r--r--webkit/fileapi/quota_file_util_unittest.cc126
-rw-r--r--webkit/fileapi/sandbox_mount_point_provider.cc2
17 files changed, 133 insertions, 115 deletions
diff --git a/webkit/fileapi/file_system_file_util.cc b/webkit/fileapi/file_system_file_util.cc
index 7765962..afb6453 100644
--- a/webkit/fileapi/file_system_file_util.cc
+++ b/webkit/fileapi/file_system_file_util.cc
@@ -8,7 +8,6 @@
#include <vector>
#include "base/file_util_proxy.h"
-#include "base/logging.h"
#include "base/memory/scoped_ptr.h"
#include "webkit/fileapi/file_system_operation_context.h"
@@ -29,11 +28,6 @@ bool ParentExists(FileSystemOperationContext* context,
} // namespace
-// static
-FileSystemFileUtil* FileSystemFileUtil::GetInstance() {
- return Singleton<FileSystemFileUtil>::get();
-}
-
PlatformFileError FileSystemFileUtil::CreateOrOpen(
FileSystemOperationContext* unused,
const FilePath& file_path, int file_flags,
diff --git a/webkit/fileapi/file_system_file_util.h b/webkit/fileapi/file_system_file_util.h
index b0e23cf..8a46fbd 100644
--- a/webkit/fileapi/file_system_file_util.h
+++ b/webkit/fileapi/file_system_file_util.h
@@ -10,7 +10,6 @@
#include "base/file_util.h"
#include "base/file_util_proxy.h"
#include "base/memory/ref_counted.h"
-#include "base/memory/singleton.h"
#include "base/platform_file.h"
#include "base/tracked_objects.h"
#include "webkit/fileapi/file_system_types.h"
@@ -47,7 +46,8 @@ class FileSystemOperationContext;
// PerformCommonCheckAndPreparationForMoveAndCopy and CopyOrMoveDirectory.
class FileSystemFileUtil {
public:
- static FileSystemFileUtil* GetInstance();
+ FileSystemFileUtil() {}
+ virtual ~FileSystemFileUtil() {}
// Creates or opens a file with the given flags. It is invalid to pass NULL
// for the callback.
@@ -239,9 +239,6 @@ class FileSystemFileUtil {
const FilePath& root_path);
protected:
- FileSystemFileUtil() { }
- virtual ~FileSystemFileUtil() { }
-
// Deletes a directory and all entries under the directory.
//
// This method is called from Delete. It internally calls two following
@@ -281,7 +278,6 @@ class FileSystemFileUtil {
const FilePath& dest_file_path,
bool copy);
- friend struct DefaultSingletonTraits<FileSystemFileUtil>;
DISALLOW_COPY_AND_ASSIGN(FileSystemFileUtil);
};
diff --git a/webkit/fileapi/file_system_file_util_unittest.cc b/webkit/fileapi/file_system_file_util_unittest.cc
index 9becaaa..afa742b 100644
--- a/webkit/fileapi/file_system_file_util_unittest.cc
+++ b/webkit/fileapi/file_system_file_util_unittest.cc
@@ -75,7 +75,7 @@ class FileSystemFileUtilTest : public testing::Test {
ASSERT_TRUE(base_dir.CreateUniqueTempDir());
scoped_refptr<ObfuscatedFileSystemFileUtil> file_util(
new ObfuscatedFileSystemFileUtil(base_dir.path(),
- FileSystemFileUtil::GetInstance()));
+ new FileSystemFileUtil()));
FileSystemTestOriginHelper src_helper(src_origin, src_type);
src_helper.SetUp(base_dir.path(),
false, // incognito
diff --git a/webkit/fileapi/file_system_operation_unittest.cc b/webkit/fileapi/file_system_operation_unittest.cc
index e1ece0ec..6c609c5 100644
--- a/webkit/fileapi/file_system_operation_unittest.cc
+++ b/webkit/fileapi/file_system_operation_unittest.cc
@@ -156,7 +156,7 @@ class FileSystemOperationTest : public testing::Test {
FileSystemOperationTest()
: status_(kFileOperationStatusNotSet),
local_file_util_(
- new LocalFileSystemFileUtil(QuotaFileUtil::GetInstance())) {
+ new LocalFileSystemFileUtil(QuotaFileUtil::CreateDefault())) {
EXPECT_TRUE(base_.CreateUniqueTempDir());
}
diff --git a/webkit/fileapi/file_system_operation_write_unittest.cc b/webkit/fileapi/file_system_operation_write_unittest.cc
index 769ea2d..22c26c8 100644
--- a/webkit/fileapi/file_system_operation_write_unittest.cc
+++ b/webkit/fileapi/file_system_operation_write_unittest.cc
@@ -68,7 +68,7 @@ class FileSystemOperationWriteTest : public testing::Test {
public:
FileSystemOperationWriteTest()
: local_file_util_(
- new LocalFileSystemFileUtil(QuotaFileUtil::GetInstance())),
+ new LocalFileSystemFileUtil(QuotaFileUtil::CreateDefault())),
loop_(MessageLoop::TYPE_IO),
status_(base::PLATFORM_FILE_OK),
bytes_written_(0),
diff --git a/webkit/fileapi/file_system_quota_client_unittest.cc b/webkit/fileapi/file_system_quota_client_unittest.cc
index d54978a..654419d 100644
--- a/webkit/fileapi/file_system_quota_client_unittest.cc
+++ b/webkit/fileapi/file_system_quota_client_unittest.cc
@@ -217,7 +217,7 @@ class FileSystemQuotaClientTest : public testing::Test {
if (!path.empty()) {
// TODO(dmikurube): Use QuotaFileUtil in the actual -FileUtil stack.
file_paths_cost +=
- QuotaFileUtil::GetInstance()->ComputeFilePathCost(path);
+ QuotaFileUtil::CreateDefault()->ComputeFilePathCost(path);
}
}
}
diff --git a/webkit/fileapi/file_system_quota_unittest.cc b/webkit/fileapi/file_system_quota_unittest.cc
index bfc5603..e0bd554 100644
--- a/webkit/fileapi/file_system_quota_unittest.cc
+++ b/webkit/fileapi/file_system_quota_unittest.cc
@@ -33,7 +33,7 @@ const int kFileOperationStatusNotSet = 1;
class FileSystemQuotaTest : public testing::Test {
public:
FileSystemQuotaTest()
- : quota_file_util_(QuotaFileUtil::GetInstance()),
+ : quota_file_util_(QuotaFileUtil::CreateDefault()),
local_file_util_(new LocalFileSystemFileUtil(quota_file_util_)),
callback_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)),
file_path_cost_(0),
diff --git a/webkit/fileapi/file_writer_delegate_unittest.cc b/webkit/fileapi/file_writer_delegate_unittest.cc
index 4281bee..5af69c1 100644
--- a/webkit/fileapi/file_writer_delegate_unittest.cc
+++ b/webkit/fileapi/file_writer_delegate_unittest.cc
@@ -82,7 +82,8 @@ class FileWriterDelegateTest : public PlatformTest {
virtual void TearDown();
virtual void SetUpTestHelper(const FilePath& base_dir) {
- test_helper_.SetUp(base_dir, QuotaFileUtil::GetInstance());
+ quota_file_util_.reset(QuotaFileUtil::CreateDefault());
+ test_helper_.SetUp(base_dir, quota_file_util_.get());
}
int64 ComputeCurrentOriginUsage() {
@@ -115,6 +116,7 @@ class FileWriterDelegateTest : public PlatformTest {
static net::URLRequest::ProtocolFactory Factory;
+ scoped_ptr<QuotaFileUtil> quota_file_util_;
scoped_ptr<FileWriterDelegate> file_writer_delegate_;
scoped_ptr<net::URLRequest> request_;
scoped_ptr<Result> result_;
@@ -480,12 +482,13 @@ class FileWriterDelegateUnlimitedTest : public FileWriterDelegateTest {
};
void FileWriterDelegateUnlimitedTest::SetUpTestHelper(const FilePath& path) {
+ quota_file_util_.reset(QuotaFileUtil::CreateDefault());
test_helper_.SetUp(
path,
false /* incognito */,
true /* unlimited */,
NULL /* quota manager proxy */,
- QuotaFileUtil::GetInstance());
+ quota_file_util_.get());
}
TEST_F(FileWriterDelegateUnlimitedTest, WriteWithQuota) {
diff --git a/webkit/fileapi/local_file_system_file_util.cc b/webkit/fileapi/local_file_system_file_util.cc
index 535d008..5d14644 100644
--- a/webkit/fileapi/local_file_system_file_util.cc
+++ b/webkit/fileapi/local_file_system_file_util.cc
@@ -19,6 +19,9 @@ LocalFileSystemFileUtil::LocalFileSystemFileUtil(
: underlying_file_util_(underlying_file_util) {
}
+LocalFileSystemFileUtil::~LocalFileSystemFileUtil() {
+}
+
PlatformFileError LocalFileSystemFileUtil::CreateOrOpen(
FileSystemOperationContext* context,
const FilePath& file_path, int file_flags,
diff --git a/webkit/fileapi/local_file_system_file_util.h b/webkit/fileapi/local_file_system_file_util.h
index 6d9ef74..314895e 100644
--- a/webkit/fileapi/local_file_system_file_util.h
+++ b/webkit/fileapi/local_file_system_file_util.h
@@ -12,6 +12,7 @@
#include "base/file_util.h"
#include "base/file_util_proxy.h"
#include "base/logging.h"
+#include "base/memory/scoped_ptr.h"
#include "base/platform_file.h"
#include "webkit/fileapi/file_system_file_util.h"
#include "webkit/fileapi/file_system_types.h"
@@ -34,9 +35,12 @@ class FileSystemOperationContext;
// An instance of this class is created and owned by *MountPointProvider.
class LocalFileSystemFileUtil : public FileSystemFileUtil {
public:
- // |underlying_file_util| is not owned by the instance. It will need to be
- // a singleton or to be deleted by someone else.
+ // |underlying_file_util| is owned by the instance. It will be deleted by
+ // the owner instance. For example, it can be instanciated as follows:
+ // FileSystemFileUtil* file_system_file_util =
+ // new LocalFileSystemFileUtil(new FileSystemFileUtil());
explicit LocalFileSystemFileUtil(FileSystemFileUtil* underlying_file_util);
+ virtual ~LocalFileSystemFileUtil();
virtual PlatformFileError CreateOrOpen(
FileSystemOperationContext* context,
@@ -126,7 +130,7 @@ class LocalFileSystemFileUtil : public FileSystemFileUtil {
FileSystemType type,
const FilePath& virtual_path);
- FileSystemFileUtil* underlying_file_util_;
+ scoped_ptr<FileSystemFileUtil> underlying_file_util_;
DISALLOW_COPY_AND_ASSIGN(LocalFileSystemFileUtil);
};
diff --git a/webkit/fileapi/local_file_system_file_util_unittest.cc b/webkit/fileapi/local_file_system_file_util_unittest.cc
index 1e8109d..5f3906e 100644
--- a/webkit/fileapi/local_file_system_file_util_unittest.cc
+++ b/webkit/fileapi/local_file_system_file_util_unittest.cc
@@ -27,7 +27,7 @@ class LocalFileSystemFileUtilTest : public testing::Test {
public:
LocalFileSystemFileUtilTest()
: local_file_util_(
- new LocalFileSystemFileUtil(FileSystemFileUtil::GetInstance())),
+ new LocalFileSystemFileUtil(new FileSystemFileUtil())),
callback_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) {
}
diff --git a/webkit/fileapi/obfuscated_file_system_file_util.h b/webkit/fileapi/obfuscated_file_system_file_util.h
index 966a4c3..063fcd5 100644
--- a/webkit/fileapi/obfuscated_file_system_file_util.h
+++ b/webkit/fileapi/obfuscated_file_system_file_util.h
@@ -47,8 +47,10 @@ class FileSystemOperationContext;
class ObfuscatedFileSystemFileUtil : public FileSystemFileUtil,
public base::RefCountedThreadSafe<ObfuscatedFileSystemFileUtil> {
public:
- // |underlying_file_util| is not owned by the instance. It will need to be
- // a singleton or to be deleted by someone else.
+ // |underlying_file_util| is owned by the instance. It will be deleted by
+ // the owner instance. For example, it can be instanciated as follows:
+ // FileSystemFileUtil* file_system_file_util =
+ // new ObfuscatedFileSystemFileUtil(new FileSystemFileUtil());
ObfuscatedFileSystemFileUtil(
const FilePath& file_system_directory,
FileSystemFileUtil* underlying_file_util);
@@ -244,7 +246,7 @@ class ObfuscatedFileSystemFileUtil : public FileSystemFileUtil,
scoped_ptr<FileSystemOriginDatabase> origin_database_;
FilePath file_system_directory_;
base::OneShotTimer<ObfuscatedFileSystemFileUtil> timer_;
- FileSystemFileUtil* underlying_file_util_;
+ scoped_ptr<FileSystemFileUtil> underlying_file_util_;
DISALLOW_COPY_AND_ASSIGN(ObfuscatedFileSystemFileUtil);
};
diff --git a/webkit/fileapi/obfuscated_file_system_file_util_unittest.cc b/webkit/fileapi/obfuscated_file_system_file_util_unittest.cc
index f865393..6e61b9a 100644
--- a/webkit/fileapi/obfuscated_file_system_file_util_unittest.cc
+++ b/webkit/fileapi/obfuscated_file_system_file_util_unittest.cc
@@ -134,7 +134,7 @@ class ObfuscatedFileSystemFileUtilTest : public testing::Test {
obfuscated_file_system_file_util_ =
new ObfuscatedFileSystemFileUtil(data_dir_.path(),
- FileSystemFileUtil::GetInstance());
+ new FileSystemFileUtil());
test_helper_.SetUp(data_dir_.path(),
false, // incognito
false, // unlimited quota
diff --git a/webkit/fileapi/quota_file_util.cc b/webkit/fileapi/quota_file_util.cc
index 83daf74..56fbcb7 100644
--- a/webkit/fileapi/quota_file_util.cc
+++ b/webkit/fileapi/quota_file_util.cc
@@ -70,9 +70,16 @@ class ScopedOriginUpdateHelper {
} // namespace (anonymous)
+QuotaFileUtil::QuotaFileUtil(FileSystemFileUtil* underlying_file_util)
+ : underlying_file_util_(underlying_file_util) {
+}
+
+QuotaFileUtil::~QuotaFileUtil() {
+}
+
// static
-QuotaFileUtil* QuotaFileUtil::GetInstance() {
- return Singleton<QuotaFileUtil>::get();
+QuotaFileUtil* QuotaFileUtil::CreateDefault() {
+ return new QuotaFileUtil(new FileSystemFileUtil());
}
int64 QuotaFileUtil::ComputeFilePathCost(const FilePath& file_path) const {
@@ -103,8 +110,8 @@ PlatformFileError QuotaFileUtil::CreateOrOpen(
return base::PLATFORM_FILE_ERROR_NO_SPACE;
}
- base::PlatformFileError error = FileSystemFileUtil::GetInstance()->
- CreateOrOpen(fs_context, file_path, file_flags, file_handle, created);
+ base::PlatformFileError error = underlying_file_util_->CreateOrOpen(
+ fs_context, file_path, file_flags, file_handle, created);
if (growth > 0) {
if (error == base::PLATFORM_FILE_OK)
@@ -137,8 +144,8 @@ PlatformFileError QuotaFileUtil::EnsureFileExists(
return base::PLATFORM_FILE_ERROR_NO_SPACE;
}
- base::PlatformFileError error = FileSystemFileUtil::GetInstance()->
- EnsureFileExists(fs_context, file_path, created);
+ base::PlatformFileError error = underlying_file_util_->EnsureFileExists(
+ fs_context, file_path, created);
if (growth > 0 &&error == base::PLATFORM_FILE_OK)
helper->NotifyUpdate(growth);
@@ -184,8 +191,8 @@ PlatformFileError QuotaFileUtil::CreateDirectory(
}
base::PlatformFileError error = base::PLATFORM_FILE_OK;
- error = FileSystemFileUtil::GetInstance()->
- CreateDirectory(fs_context, file_path, exclusive, recursive);
+ error = underlying_file_util_->CreateDirectory(
+ fs_context, file_path, exclusive, recursive);
if (growth > 0 && error == base::PLATFORM_FILE_OK)
helper->NotifyUpdate(growth);
@@ -231,8 +238,8 @@ base::PlatformFileError QuotaFileUtil::CopyOrMoveFile(
return base::PLATFORM_FILE_ERROR_NO_SPACE;
}
- base::PlatformFileError error = FileSystemFileUtil::GetInstance()->
- CopyOrMoveFile(fs_context, src_file_path, dest_file_path, copy);
+ base::PlatformFileError error = underlying_file_util_->CopyOrMoveFile(
+ fs_context, src_file_path, dest_file_path, copy);
if (error == base::PLATFORM_FILE_OK) {
// TODO(kinuko): For cross-filesystem move case, call this with -growth
@@ -259,8 +266,8 @@ base::PlatformFileError QuotaFileUtil::DeleteFile(
ComputeFilePathCost(fs_context->src_virtual_path());
}
- base::PlatformFileError error = FileSystemFileUtil::GetInstance()->
- DeleteFile(fs_context, file_path);
+ base::PlatformFileError error = underlying_file_util_->DeleteFile(
+ fs_context, file_path);
if (error == base::PLATFORM_FILE_OK)
helper.NotifyUpdate(growth);
@@ -281,8 +288,8 @@ base::PlatformFileError QuotaFileUtil::DeleteSingleDirectory(
if (file_util::DirectoryExists(file_path))
growth -= ComputeFilePathCost(fs_context->src_virtual_path());
- base::PlatformFileError error = FileSystemFileUtil::GetInstance()->
- DeleteSingleDirectory(fs_context, file_path);
+ base::PlatformFileError error = underlying_file_util_->DeleteSingleDirectory(
+ fs_context, file_path);
if (error == base::PLATFORM_FILE_OK)
helper.NotifyUpdate(growth);
@@ -309,7 +316,7 @@ base::PlatformFileError QuotaFileUtil::Truncate(
if (allowed_bytes_growth != kNoLimit && growth > allowed_bytes_growth)
return base::PLATFORM_FILE_ERROR_NO_SPACE;
- base::PlatformFileError error = FileSystemFileUtil::GetInstance()->Truncate(
+ base::PlatformFileError error = underlying_file_util_->Truncate(
fs_context, path, length);
if (error == base::PLATFORM_FILE_OK)
diff --git a/webkit/fileapi/quota_file_util.h b/webkit/fileapi/quota_file_util.h
index e7fc2d7..efad64f 100644
--- a/webkit/fileapi/quota_file_util.h
+++ b/webkit/fileapi/quota_file_util.h
@@ -5,6 +5,7 @@
#ifndef WEBKIT_FILEAPI_QUOTA_FILE_UTIL_H_
#define WEBKIT_FILEAPI_QUOTA_FILE_UTIL_H_
+#include "base/memory/scoped_ptr.h"
#include "webkit/fileapi/file_system_file_util.h"
#include "webkit/fileapi/file_system_operation_context.h"
#pragma once
@@ -13,11 +14,21 @@ namespace fileapi {
class QuotaFileUtil : public FileSystemFileUtil {
public:
- static QuotaFileUtil* GetInstance();
- virtual ~QuotaFileUtil() {}
-
static const int64 kNoLimit;
+ // |underlying_file_util| is owned by the instance. It will be deleted by
+ // the owner instance. For example, it can be instanciated as follows:
+ // FileSystemFileUtil* file_util = new QuotaFileUtil(new SomeFileUtil());
+ //
+ // To instanciate an object whose underlying file_util is FileSystemFileUtil,
+ // QuotaFileUtil::CreateDefault() can be used.
+ explicit QuotaFileUtil(FileSystemFileUtil* underlying_file_util);
+ virtual ~QuotaFileUtil();
+
+ // Creates a QuotaFileUtil instance with an underlying FileSystemFileUtil
+ // instance.
+ static QuotaFileUtil* CreateDefault();
+
// TODO(dmikurube): Make this function variable by the constructor.
int64 ComputeFilePathCost(const FilePath& file_path) const;
@@ -56,13 +67,9 @@ class QuotaFileUtil : public FileSystemFileUtil {
const FilePath& path,
int64 length) OVERRIDE;
- friend struct DefaultSingletonTraits<QuotaFileUtil>;
- DISALLOW_COPY_AND_ASSIGN(QuotaFileUtil);
-
- protected:
- QuotaFileUtil() {}
-
private:
+ scoped_ptr<FileSystemFileUtil> underlying_file_util_;
+
// TODO(dmikurube): Make these constants variable by the constructor.
//
// These values are based on Obfuscation DB. See crbug.com/86114 for the
@@ -81,6 +88,8 @@ class QuotaFileUtil : public FileSystemFileUtil {
const FilePath& dest_file_path,
int64 allowed_bytes_growth,
int64* growth) const;
+
+ DISALLOW_COPY_AND_ASSIGN(QuotaFileUtil);
};
} // namespace fileapi
diff --git a/webkit/fileapi/quota_file_util_unittest.cc b/webkit/fileapi/quota_file_util_unittest.cc
index f8c90c1..320a2fc 100644
--- a/webkit/fileapi/quota_file_util_unittest.cc
+++ b/webkit/fileapi/quota_file_util_unittest.cc
@@ -24,13 +24,13 @@ namespace fileapi {
class QuotaFileUtilTest : public testing::Test {
public:
QuotaFileUtilTest()
- : quota_file_util_(QuotaFileUtil::GetInstance()),
- callback_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) {
+ : callback_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) {
}
void SetUp() {
ASSERT_TRUE(data_dir_.CreateUniqueTempDir());
- quota_test_helper_.SetUp(data_dir_.path(), quota_file_util_);
+ quota_file_util_.reset(QuotaFileUtil::CreateDefault());
+ quota_test_helper_.SetUp(data_dir_.path(), quota_file_util_.get());
obfuscated_test_helper_.SetUp(
quota_test_helper_.file_system_context(), NULL);
base_dir_ = obfuscated_test_helper_.GetOriginRootPath();
@@ -68,7 +68,7 @@ class QuotaFileUtilTest : public testing::Test {
int64 file_path_cost = ComputeFilePathCost(file_name);
scoped_ptr<FileSystemOperationContext> context(NewContext(
file_path_cost, Path(file_name), FilePath()));
- return QuotaFileUtil::GetInstance()->EnsureFileExists(
+ return quota_file_util_->EnsureFileExists(
context.get(), Path(file_name), created);
}
@@ -76,7 +76,7 @@ class QuotaFileUtilTest : public testing::Test {
const char* file_name, int64 size, int64 quota) {
scoped_ptr<FileSystemOperationContext> context(NewContext(
quota, Path(file_name), FilePath()));
- return QuotaFileUtil::GetInstance()->Truncate(
+ return quota_file_util_->Truncate(
context.get(), Path(file_name), size);
}
@@ -88,16 +88,20 @@ class QuotaFileUtilTest : public testing::Test {
quota_test_helper().GetCachedOriginUsage());
}
+ QuotaFileUtil* quota_file_util() const {
+ return quota_file_util_.get();
+ }
+
const FileSystemTestOriginHelper& quota_test_helper() const {
return quota_test_helper_;
}
private:
- QuotaFileUtil* quota_file_util_;
ScopedTempDir data_dir_;
FilePath base_dir_;
FileSystemTestOriginHelper obfuscated_test_helper_;
FileSystemTestOriginHelper quota_test_helper_;
+ scoped_ptr<QuotaFileUtil> quota_file_util_;
base::ScopedCallbackFactory<QuotaFileUtilTest> callback_factory_;
DISALLOW_COPY_AND_ASSIGN(QuotaFileUtilTest);
@@ -115,21 +119,19 @@ TEST_F(QuotaFileUtilTest, CreateAndClose) {
created = false;
context.reset(NewContext(file_path_cost - 1, Path(file_name), FilePath()));
- ASSERT_EQ(base::PLATFORM_FILE_ERROR_NO_SPACE,
- QuotaFileUtil::GetInstance()->CreateOrOpen(
- context.get(), Path(file_name), file_flags, &file_handle, &created));
+ ASSERT_EQ(base::PLATFORM_FILE_ERROR_NO_SPACE, quota_file_util()->CreateOrOpen(
+ context.get(), Path(file_name), file_flags, &file_handle, &created));
ASSERT_FALSE(created);
created = false;
context.reset(NewContext(file_path_cost, Path(file_name), FilePath()));
- ASSERT_EQ(base::PLATFORM_FILE_OK,
- QuotaFileUtil::GetInstance()->CreateOrOpen(
- context.get(), Path(file_name), file_flags, &file_handle, &created));
+ ASSERT_EQ(base::PLATFORM_FILE_OK, quota_file_util()->CreateOrOpen(
+ context.get(), Path(file_name), file_flags, &file_handle, &created));
ASSERT_TRUE(created);
context.reset(NewContext(0, FilePath(), FilePath()));
- EXPECT_EQ(base::PLATFORM_FILE_OK,
- QuotaFileUtil::GetInstance()->Close(context.get(), file_handle));
+ EXPECT_EQ(base::PLATFORM_FILE_OK, quota_file_util()->Close(
+ context.get(), file_handle));
}
TEST_F(QuotaFileUtilTest, EnsureFileExists) {
@@ -142,8 +144,8 @@ TEST_F(QuotaFileUtilTest, EnsureFileExists) {
context.reset(NewContext(
ComputeFilePathCost(file_name) - 1, Path(file_name), FilePath()));
ASSERT_EQ(base::PLATFORM_FILE_ERROR_NO_SPACE,
- QuotaFileUtil::GetInstance()->EnsureFileExists(
- context.get(), Path(file_name), &created));
+ quota_file_util()->EnsureFileExists(
+ context.get(), Path(file_name), &created));
ASSERT_FALSE(created);
created = false;
@@ -198,26 +200,24 @@ TEST_F(QuotaFileUtilTest, CopyFile) {
context.reset(NewContext(1020 + ComputeFilePathCost(to_file1),
Path(from_file), Path(to_file1)));
- ASSERT_EQ(base::PLATFORM_FILE_OK,
- QuotaFileUtil::GetInstance()->Copy(context.get(),
- Path(from_file),
- Path(to_file1)));
+ ASSERT_EQ(base::PLATFORM_FILE_OK, quota_file_util()->Copy(
+ context.get(), Path(from_file), Path(to_file1)));
file_path_cost += ComputeFilePathCost(to_file1);
CheckUsage(2041, file_path_cost);
context.reset(NewContext(1020 + ComputeFilePathCost(to_file2) - 1,
Path(from_file), Path(to_file2)));
ASSERT_EQ(base::PLATFORM_FILE_ERROR_NO_SPACE,
- QuotaFileUtil::GetInstance()->Copy(context.get(),
- Path(from_file),
- Path(to_file2)));
+ quota_file_util()->Copy(context.get(),
+ Path(from_file),
+ Path(to_file2)));
CheckUsage(2041, file_path_cost);
context.reset(NewContext(1019, Path(from_file), Path(prior_file)));
ASSERT_EQ(base::PLATFORM_FILE_OK,
- QuotaFileUtil::GetInstance()->Copy(context.get(),
- Path(from_file),
- Path(prior_file)));
+ quota_file_util()->Copy(context.get(),
+ Path(from_file),
+ Path(prior_file)));
CheckUsage(3060, file_path_cost);
}
@@ -234,7 +234,7 @@ TEST_F(QuotaFileUtilTest, CopyDirectory) {
context.reset(NewContext(ComputeFilePathCost(from_dir),
Path(from_dir), FilePath()));
ASSERT_EQ(base::PLATFORM_FILE_OK,
- QuotaFileUtil::GetInstance()->CreateDirectory(context.get(),
+ quota_file_util()->CreateDirectory(context.get(),
Path(from_dir),
false, false));
file_path_cost += ComputeFilePathCost(from_dir);
@@ -258,9 +258,9 @@ TEST_F(QuotaFileUtilTest, CopyDirectory) {
ComputeFilePathCost(from_file2),
Path(from_dir), Path(to_dir1)));
ASSERT_EQ(base::PLATFORM_FILE_OK,
- QuotaFileUtil::GetInstance()->Copy(context.get(),
- Path(from_dir),
- Path(to_dir1)));
+ quota_file_util()->Copy(context.get(),
+ Path(from_dir),
+ Path(to_dir1)));
file_path_cost += ComputeFilePathCost(to_dir1) +
ComputeFilePathCost(from_file1) +
ComputeFilePathCost(from_file2);
@@ -272,9 +272,9 @@ TEST_F(QuotaFileUtilTest, CopyDirectory) {
ComputeFilePathCost(from_file2) - 1,
Path(from_dir), Path(to_dir2)));
EXPECT_EQ(base::PLATFORM_FILE_ERROR_NO_SPACE,
- QuotaFileUtil::GetInstance()->Copy(context.get(),
- Path(from_dir),
- Path(to_dir2)));
+ quota_file_util()->Copy(context.get(),
+ Path(from_dir),
+ Path(to_dir2)));
int64 file_path_cost1 = file_path_cost +
ComputeFilePathCost(to_dir2) + ComputeFilePathCost(from_file1);
int64 file_path_cost2 = file_path_cost +
@@ -305,9 +305,9 @@ TEST_F(QuotaFileUtilTest, MoveFile) {
context.reset(NewContext(0, Path(from_file), Path(to_file)));
ASSERT_EQ(base::PLATFORM_FILE_OK,
- QuotaFileUtil::GetInstance()->Move(context.get(),
- Path(from_file),
- Path(to_file)));
+ quota_file_util()->Move(context.get(),
+ Path(from_file),
+ Path(to_file)));
file_path_cost -= ComputeFilePathCost(from_file);
file_path_cost += ComputeFilePathCost(to_file);
CheckUsage(1020, file_path_cost);
@@ -329,18 +329,18 @@ TEST_F(QuotaFileUtilTest, MoveFile) {
ComputeFilePathCost(from_file) - 1 - 1,
Path(from_file), Path(prior_file)));
ASSERT_EQ(base::PLATFORM_FILE_ERROR_NO_SPACE,
- QuotaFileUtil::GetInstance()->Move(context.get(),
- Path(from_file),
- Path(prior_file)));
+ quota_file_util()->Move(context.get(),
+ Path(from_file),
+ Path(prior_file)));
CheckUsage(2041, file_path_cost);
context.reset(NewContext(ComputeFilePathCost(prior_file) -
ComputeFilePathCost(from_file) - 1,
Path(from_file), Path(prior_file)));
ASSERT_EQ(base::PLATFORM_FILE_OK,
- QuotaFileUtil::GetInstance()->Move(context.get(),
- Path(from_file),
- Path(prior_file)));
+ quota_file_util()->Move(context.get(),
+ Path(from_file),
+ Path(prior_file)));
file_path_cost -= ComputeFilePathCost(from_file);
file_path_cost += ComputeFilePathCost(prior_file);
CheckUsage(2040, file_path_cost);
@@ -358,9 +358,9 @@ TEST_F(QuotaFileUtilTest, MoveDirectory) {
context.reset(NewContext(QuotaFileUtil::kNoLimit,
Path(from_dir), FilePath()));
ASSERT_EQ(base::PLATFORM_FILE_OK,
- QuotaFileUtil::GetInstance()->CreateDirectory(context.get(),
- Path(from_dir),
- false, false));
+ quota_file_util()->CreateDirectory(context.get(),
+ Path(from_dir),
+ false, false));
file_path_cost += ComputeFilePathCost(from_dir);
ASSERT_EQ(base::PLATFORM_FILE_OK, EnsureFileExists(from_file, &created));
ASSERT_TRUE(created);
@@ -371,9 +371,9 @@ TEST_F(QuotaFileUtilTest, MoveDirectory) {
context.reset(NewContext(1020, Path(from_dir), Path(to_dir1)));
ASSERT_EQ(base::PLATFORM_FILE_OK,
- QuotaFileUtil::GetInstance()->Move(context.get(),
- Path(from_dir),
- Path(to_dir1)));
+ quota_file_util()->Move(context.get(),
+ Path(from_dir),
+ Path(to_dir1)));
file_path_cost -= ComputeFilePathCost(from_dir);
file_path_cost += ComputeFilePathCost(to_dir1);
CheckUsage(1020, file_path_cost);
@@ -381,9 +381,9 @@ TEST_F(QuotaFileUtilTest, MoveDirectory) {
context.reset(NewContext(QuotaFileUtil::kNoLimit,
Path(from_dir), FilePath()));
ASSERT_EQ(base::PLATFORM_FILE_OK,
- QuotaFileUtil::GetInstance()->CreateDirectory(context.get(),
- Path(from_dir),
- false, false));
+ quota_file_util()->CreateDirectory(context.get(),
+ Path(from_dir),
+ false, false));
file_path_cost += ComputeFilePathCost(from_dir);
ASSERT_EQ(base::PLATFORM_FILE_OK, EnsureFileExists(from_file, &created));
ASSERT_TRUE(created);
@@ -394,9 +394,9 @@ TEST_F(QuotaFileUtilTest, MoveDirectory) {
context.reset(NewContext(1019, Path(from_dir), Path(to_dir2)));
EXPECT_EQ(base::PLATFORM_FILE_OK,
- QuotaFileUtil::GetInstance()->Move(context.get(),
- Path(from_dir),
- Path(to_dir2)));
+ quota_file_util()->Move(context.get(),
+ Path(from_dir),
+ Path(to_dir2)));
file_path_cost -= ComputeFilePathCost(from_dir);
file_path_cost += ComputeFilePathCost(to_dir2);
CheckUsage(2040, file_path_cost);
@@ -416,9 +416,9 @@ TEST_F(QuotaFileUtilTest, Remove) {
file_path_cost += ComputeFilePathCost(file);
context.reset(NewContext(QuotaFileUtil::kNoLimit, Path(dir), FilePath()));
ASSERT_EQ(base::PLATFORM_FILE_OK,
- QuotaFileUtil::GetInstance()->CreateDirectory(context.get(),
- Path(dir),
- false, false));
+ quota_file_util()->CreateDirectory(context.get(),
+ Path(dir),
+ false, false));
file_path_cost += ComputeFilePathCost(dir);
ASSERT_EQ(base::PLATFORM_FILE_OK, EnsureFileExists(dfile1, &created));
ASSERT_TRUE(created);
@@ -438,17 +438,17 @@ TEST_F(QuotaFileUtilTest, Remove) {
context.reset(NewContext(QuotaFileUtil::kNoLimit, Path(file), FilePath()));
ASSERT_EQ(base::PLATFORM_FILE_OK,
- QuotaFileUtil::GetInstance()->Delete(context.get(),
- Path(file),
- false));
+ quota_file_util()->Delete(context.get(),
+ Path(file),
+ false));
file_path_cost -= ComputeFilePathCost(file);
CheckUsage(1140, file_path_cost);
context.reset(NewContext(QuotaFileUtil::kNoLimit, Path(dir), FilePath()));
ASSERT_EQ(base::PLATFORM_FILE_OK,
- QuotaFileUtil::GetInstance()->Delete(context.get(),
- Path(dir),
- true));
+ quota_file_util()->Delete(context.get(),
+ Path(dir),
+ true));
file_path_cost = 0;
CheckUsage(0, 0);
}
diff --git a/webkit/fileapi/sandbox_mount_point_provider.cc b/webkit/fileapi/sandbox_mount_point_provider.cc
index a9d4d13..6570170 100644
--- a/webkit/fileapi/sandbox_mount_point_provider.cc
+++ b/webkit/fileapi/sandbox_mount_point_provider.cc
@@ -279,7 +279,7 @@ SandboxMountPointProvider::SandboxMountPointProvider(
path_manager_(path_manager),
file_message_loop_(file_message_loop),
profile_path_(profile_path),
- quota_file_util_(QuotaFileUtil::GetInstance()),
+ quota_file_util_(QuotaFileUtil::CreateDefault()),
sandbox_file_util_(
new ObfuscatedFileSystemFileUtil(
profile_path.Append(kNewFileSystemDirectory),