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

Unified Diff: content/browser/fileapi/obfuscated_file_util_unittest.cc

Issue 137923003: Change fileapi namespace to content for files that are moved under content/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: build fix Created 6 years, 11 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: content/browser/fileapi/obfuscated_file_util_unittest.cc
diff --git a/content/browser/fileapi/obfuscated_file_util_unittest.cc b/content/browser/fileapi/obfuscated_file_util_unittest.cc
index 72dd36008ddd947397188d67c4f1745b731a4687..58f99d96a26903acd0cea6a813ff632dd20808c4 100644
--- a/content/browser/fileapi/obfuscated_file_util_unittest.cc
+++ b/content/browser/fileapi/obfuscated_file_util_unittest.cc
@@ -34,7 +34,19 @@
#include "webkit/common/database/database_identifier.h"
#include "webkit/common/quota/quota_types.h"
-namespace fileapi {
+using fileapi::AsyncFileTestHelper;
+using fileapi::FileSystemContext;
+using fileapi::FileSystemOperation;
+using fileapi::FileSystemOperationContext;
+using fileapi::FileSystemType;
+using fileapi::FileSystemURL;
+using fileapi::ObfuscatedFileUtil;
+using fileapi::SandboxDirectoryDatabase;
+using fileapi::SandboxIsolatedOriginDatabase;
+using fileapi::kFileSystemTypeTemporary;
+using fileapi::kFileSystemTypePersistent;
+
+namespace content {
namespace {
@@ -110,11 +122,12 @@ FileSystemURL FileSystemURLAppendUTF8(
FileSystemURL FileSystemURLDirName(const FileSystemURL& url) {
return FileSystemURL::CreateForTest(
- url.origin(), url.mount_type(), VirtualPath::DirName(url.virtual_path()));
+ url.origin(), url.mount_type(),
+ fileapi::VirtualPath::DirName(url.virtual_path()));
}
std::string GetTypeString(FileSystemType type) {
- return SandboxFileSystemBackendDelegate::GetTypeString(type);
+ return fileapi::SandboxFileSystemBackendDelegate::GetTypeString(type);
}
bool HasFileSystemType(
@@ -133,7 +146,7 @@ class ObfuscatedFileUtilTest : public testing::Test {
public:
ObfuscatedFileUtilTest()
: origin_(GURL("http://www.example.com")),
- type_(kFileSystemTypeTemporary),
+ type_(fileapi::kFileSystemTypeTemporary),
weak_factory_(this),
sandbox_file_system_(origin_, type_),
quota_status_(quota::kQuotaStatusUnknown),
@@ -162,7 +175,8 @@ class ObfuscatedFileUtilTest : public testing::Test {
sandbox_file_system_.SetUp(file_system_context_.get());
- change_observers_ = MockFileChangeObserver::CreateList(&change_observer_);
+ change_observers_ = fileapi::MockFileChangeObserver::CreateList(
+ &change_observer_);
}
virtual void TearDown() {
@@ -196,11 +210,11 @@ class ObfuscatedFileUtilTest : public testing::Test {
return context;
}
- const ChangeObserverList& change_observers() const {
+ const fileapi::ChangeObserverList& change_observers() const {
return change_observers_;
}
- MockFileChangeObserver* change_observer() {
+ fileapi::MockFileChangeObserver* change_observer() {
return &change_observer_;
}
@@ -217,6 +231,14 @@ class ObfuscatedFileUtilTest : public testing::Test {
return file_system;
}
+ scoped_ptr<ObfuscatedFileUtil> CreateObfuscatedFileUtil(
+ quota::SpecialStoragePolicy* storage_policy) {
+ return scoped_ptr<ObfuscatedFileUtil>(
+ ObfuscatedFileUtil::CreateForTesting(
+ storage_policy, data_dir_path(),
+ base::MessageLoopProxy::current().get()));
+ }
+
ObfuscatedFileUtil* ofu() {
return static_cast<ObfuscatedFileUtil*>(sandbox_file_system_.file_util());
}
@@ -283,7 +305,7 @@ class ObfuscatedFileUtilTest : public testing::Test {
}
int64 usage() const { return usage_; }
- FileSystemUsageCache* usage_cache() {
+ fileapi::FileSystemUsageCache* usage_cache() {
return sandbox_file_system_.usage_cache();
}
@@ -427,7 +449,7 @@ class ObfuscatedFileUtilTest : public testing::Test {
std::set<base::FilePath::StringType>* files,
std::set<base::FilePath::StringType>* directories) {
scoped_ptr<FileSystemOperationContext> context;
- std::vector<DirectoryEntry> entries;
+ std::vector<fileapi::DirectoryEntry> entries;
EXPECT_EQ(base::PLATFORM_FILE_OK,
AsyncFileTestHelper::ReadDirectory(
file_system_context(), root_url, &entries));
@@ -471,17 +493,17 @@ class ObfuscatedFileUtilTest : public testing::Test {
FillTestDirectory(root_url, &files, &directories);
scoped_ptr<FileSystemOperationContext> context;
- std::vector<DirectoryEntry> entries;
+ std::vector<fileapi::DirectoryEntry> entries;
context.reset(NewContext(NULL));
EXPECT_EQ(base::PLATFORM_FILE_OK,
AsyncFileTestHelper::ReadDirectory(
file_system_context(), root_url, &entries));
- std::vector<DirectoryEntry>::iterator entry_iter;
+ std::vector<fileapi::DirectoryEntry>::iterator entry_iter;
EXPECT_EQ(files.size() + directories.size(), entries.size());
EXPECT_TRUE(change_observer()->HasNoChange());
for (entry_iter = entries.begin(); entry_iter != entries.end();
++entry_iter) {
- const DirectoryEntry& entry = *entry_iter;
+ const fileapi::DirectoryEntry& entry = *entry_iter;
std::set<base::FilePath::StringType>::iterator iter =
files.find(entry.name);
if (iter != files.end()) {
@@ -662,6 +684,120 @@ class ObfuscatedFileUtilTest : public testing::Test {
EXPECT_NE(base::Time(), GetModifiedTime(dest_dir_url));
}
+ void MaybeDropDatabasesAliveCaseTestBody() {
+ scoped_ptr<ObfuscatedFileUtil> file_util = CreateObfuscatedFileUtil(NULL);
+ file_util->InitOriginDatabase(GURL(), true /*create*/);
+ ASSERT_TRUE(file_util->origin_database_ != NULL);
+
+ // Callback to Drop DB is called while ObfuscatedFileUtilTest is
+ // still alive.
+ file_util->db_flush_delay_seconds_ = 0;
+ file_util->MarkUsed();
+ base::RunLoop().RunUntilIdle();
+
+ ASSERT_TRUE(file_util->origin_database_ == NULL);
+ }
+
+ void MaybeDropDatabasesAlreadyDeletedCaseTestBody() {
+ // Run message loop after OFU is already deleted to make sure callback
+ // doesn't cause a crash for use after free.
+ {
+ scoped_ptr<ObfuscatedFileUtil> file_util = CreateObfuscatedFileUtil(NULL);
+ file_util->InitOriginDatabase(GURL(), true /*create*/);
+ file_util->db_flush_delay_seconds_ = 0;
+ file_util->MarkUsed();
+ }
+
+ // At this point the callback is still in the message queue but OFU is gone.
+ base::RunLoop().RunUntilIdle();
+ }
+
+ void DestroyDirectoryDatabase_IsolatedTestBody() {
+ storage_policy_->AddIsolated(origin_);
+ scoped_ptr<ObfuscatedFileUtil> file_util = CreateObfuscatedFileUtil(
+ storage_policy_.get());
+ const FileSystemURL url = FileSystemURL::CreateForTest(
+ origin_, kFileSystemTypePersistent, base::FilePath());
+
+ // Create DirectoryDatabase for isolated origin.
+ SandboxDirectoryDatabase* db =
+ file_util->GetDirectoryDatabase(url, true /* create */);
+ ASSERT_TRUE(db != NULL);
+
+ // Destory it.
+ ASSERT_TRUE(file_util->DestroyDirectoryDatabase(
+ url.origin(), GetTypeString(url.type())));
+ ASSERT_TRUE(file_util->directories_.empty());
+ }
+
+ void GetDirectoryDatabase_IsolatedTestBody() {
+ storage_policy_->AddIsolated(origin_);
+ scoped_ptr<ObfuscatedFileUtil> file_util = CreateObfuscatedFileUtil(
+ storage_policy_.get());
+ const FileSystemURL url = FileSystemURL::CreateForTest(
+ origin_, kFileSystemTypePersistent, base::FilePath());
+
+ // Create DirectoryDatabase for isolated origin.
+ SandboxDirectoryDatabase* db =
+ file_util->GetDirectoryDatabase(url, true /* create */);
+ ASSERT_TRUE(db != NULL);
+ ASSERT_EQ(1U, file_util->directories_.size());
+
+ // Remove isolated.
+ storage_policy_->RemoveIsolated(url.origin());
+
+ // This should still get the same database.
+ SandboxDirectoryDatabase* db2 =
+ file_util->GetDirectoryDatabase(url, false /* create */);
+ ASSERT_EQ(db, db2);
+ }
+
+ void MigrationBackFromIsolatedTestBody() {
+ std::string kFakeDirectoryData("0123456789");
+ base::FilePath old_directory_db_path;
+
+ // Initialize the directory with one origin using
+ // SandboxIsolatedOriginDatabase.
+ {
+ std::string origin_string =
+ webkit_database::GetIdentifierFromOrigin(origin_);
+ SandboxIsolatedOriginDatabase database_old(
+ origin_string, data_dir_path(),
+ base::FilePath(
+ SandboxIsolatedOriginDatabase::kObsoleteOriginDirectory));
+ base::FilePath path;
+ EXPECT_TRUE(database_old.GetPathForOrigin(origin_string, &path));
+ EXPECT_FALSE(path.empty());
+
+ // Populate the origin directory with some fake data.
+ old_directory_db_path = data_dir_path().Append(path);
+ ASSERT_TRUE(base::CreateDirectory(old_directory_db_path));
+ EXPECT_EQ(static_cast<int>(kFakeDirectoryData.size()),
+ file_util::WriteFile(old_directory_db_path.AppendASCII("dummy"),
+ kFakeDirectoryData.data(),
+ kFakeDirectoryData.size()));
+ }
+
+ storage_policy_->AddIsolated(origin_);
+ scoped_ptr<ObfuscatedFileUtil> file_util = CreateObfuscatedFileUtil(
+ storage_policy_.get());
+ base::PlatformFileError error = base::PLATFORM_FILE_ERROR_FAILED;
+ base::FilePath origin_directory = file_util->GetDirectoryForOrigin(
+ origin_, true /* create */, &error);
+ EXPECT_EQ(base::PLATFORM_FILE_OK, error);
+
+ // The database is migrated from the old one.
+ EXPECT_TRUE(base::DirectoryExists(origin_directory));
+ EXPECT_FALSE(base::DirectoryExists(old_directory_db_path));
+
+ // Check we see the same contents in the new origin directory.
+ std::string origin_db_data;
+ EXPECT_TRUE(base::PathExists(origin_directory.AppendASCII("dummy")));
+ EXPECT_TRUE(base::ReadFileToString(
+ origin_directory.AppendASCII("dummy"), &origin_db_data));
+ EXPECT_EQ(kFakeDirectoryData, origin_db_data);
+ }
+
int64 ComputeCurrentUsage() {
return sandbox_file_system_.ComputeCurrentOriginUsage() -
sandbox_file_system_.ComputeCurrentDirectoryDatabaseUsage();
@@ -687,8 +823,8 @@ class ObfuscatedFileUtilTest : public testing::Test {
SandboxFileSystemTestHelper sandbox_file_system_;
quota::QuotaStatusCode quota_status_;
int64 usage_;
- MockFileChangeObserver change_observer_;
- ChangeObserverList change_observers_;
+ fileapi::MockFileChangeObserver change_observer_;
+ fileapi::ChangeObserverList change_observers_;
private:
DISALLOW_COPY_AND_ASSIGN(ObfuscatedFileUtilTest);
@@ -1120,7 +1256,7 @@ TEST_F(ObfuscatedFileUtilTest, TestReadDirectoryOnFile) {
ofu()->EnsureFileExists(context.get(), url, &created));
ASSERT_TRUE(created);
- std::vector<DirectoryEntry> entries;
+ std::vector<fileapi::DirectoryEntry> entries;
EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_A_DIRECTORY,
AsyncFileTestHelper::ReadDirectory(
file_system_context(), url, &entries));
@@ -1567,9 +1703,10 @@ TEST_F(ObfuscatedFileUtilTest, TestRevokeUsageCache) {
int64 expected_quota = 0;
- for (size_t i = 0; i < test::kRegularTestCaseSize; ++i) {
+ for (size_t i = 0; i < fileapi::test::kRegularTestCaseSize; ++i) {
SCOPED_TRACE(testing::Message() << "Creating kRegularTestCase " << i);
- const test::TestCaseRecord& test_case = test::kRegularTestCases[i];
+ const fileapi::test::TestCaseRecord& test_case =
+ fileapi::test::kRegularTestCases[i];
base::FilePath file_path(test_case.path);
expected_quota += ObfuscatedFileUtil::ComputeFilePathCost(file_path);
if (test_case.is_directory) {
@@ -1702,7 +1839,7 @@ TEST_F(ObfuscatedFileUtilTest, TestIncompleteDirectoryReading) {
EXPECT_TRUE(created);
}
- std::vector<DirectoryEntry> entries;
+ std::vector<fileapi::DirectoryEntry> entries;
EXPECT_EQ(base::PLATFORM_FILE_OK,
AsyncFileTestHelper::ReadDirectory(
file_system_context(), empty_path, &entries));
@@ -1959,7 +2096,7 @@ TEST_F(ObfuscatedFileUtilTest, TestFileEnumeratorTimestamp) {
base::Time()));
context.reset(NewContext(NULL));
- scoped_ptr<FileSystemFileUtil::AbstractFileEnumerator> file_enum(
+ scoped_ptr<fileapi::FileSystemFileUtil::AbstractFileEnumerator> file_enum(
ofu()->CreateFileEnumerator(context.get(), dir, false));
int count = 0;
@@ -2312,128 +2449,23 @@ TEST_F(ObfuscatedFileUtilTest, TestQuotaOnOpen) {
}
TEST_F(ObfuscatedFileUtilTest, MaybeDropDatabasesAliveCase) {
- scoped_ptr<ObfuscatedFileUtil> file_util(
- ObfuscatedFileUtil::CreateForTesting(
- NULL, data_dir_path(),
- base::MessageLoopProxy::current().get()));
- file_util->InitOriginDatabase(GURL(), true /*create*/);
- ASSERT_TRUE(file_util->origin_database_ != NULL);
-
- // Callback to Drop DB is called while ObfuscatedFileUtilTest is still alive.
- file_util->db_flush_delay_seconds_ = 0;
- file_util->MarkUsed();
- base::RunLoop().RunUntilIdle();
-
- ASSERT_TRUE(file_util->origin_database_ == NULL);
+ MaybeDropDatabasesAliveCaseTestBody();
}
TEST_F(ObfuscatedFileUtilTest, MaybeDropDatabasesAlreadyDeletedCase) {
- // Run message loop after OFU is already deleted to make sure callback doesn't
- // cause a crash for use after free.
- {
- scoped_ptr<ObfuscatedFileUtil> file_util(
- ObfuscatedFileUtil::CreateForTesting(
- NULL, data_dir_path(),
- base::MessageLoopProxy::current().get()));
- file_util->InitOriginDatabase(GURL(), true /*create*/);
- file_util->db_flush_delay_seconds_ = 0;
- file_util->MarkUsed();
- }
-
- // At this point the callback is still in the message queue but OFU is gone.
- base::RunLoop().RunUntilIdle();
+ MaybeDropDatabasesAlreadyDeletedCaseTestBody();
}
TEST_F(ObfuscatedFileUtilTest, DestroyDirectoryDatabase_Isolated) {
- storage_policy_->AddIsolated(origin_);
- scoped_ptr<ObfuscatedFileUtil> file_util(
- ObfuscatedFileUtil::CreateForTesting(
- storage_policy_.get(), data_dir_path(),
- base::MessageLoopProxy::current().get()));
- const FileSystemURL url = FileSystemURL::CreateForTest(
- origin_, kFileSystemTypePersistent, base::FilePath());
-
- // Create DirectoryDatabase for isolated origin.
- SandboxDirectoryDatabase* db =
- file_util->GetDirectoryDatabase(url, true /* create */);
- ASSERT_TRUE(db != NULL);
-
- // Destory it.
- ASSERT_TRUE(file_util->DestroyDirectoryDatabase(
- url.origin(), GetTypeString(url.type())));
- ASSERT_TRUE(file_util->directories_.empty());
+ DestroyDirectoryDatabase_IsolatedTestBody();
}
TEST_F(ObfuscatedFileUtilTest, GetDirectoryDatabase_Isolated) {
- storage_policy_->AddIsolated(origin_);
- scoped_ptr<ObfuscatedFileUtil> file_util(
- ObfuscatedFileUtil::CreateForTesting(
- storage_policy_.get(), data_dir_path(),
- base::MessageLoopProxy::current().get()));
- const FileSystemURL url = FileSystemURL::CreateForTest(
- origin_, kFileSystemTypePersistent, base::FilePath());
-
- // Create DirectoryDatabase for isolated origin.
- SandboxDirectoryDatabase* db =
- file_util->GetDirectoryDatabase(url, true /* create */);
- ASSERT_TRUE(db != NULL);
- ASSERT_EQ(1U, file_util->directories_.size());
-
- // Remove isolated.
- storage_policy_->RemoveIsolated(url.origin());
-
- // This should still get the same database.
- SandboxDirectoryDatabase* db2 =
- file_util->GetDirectoryDatabase(url, false /* create */);
- ASSERT_EQ(db, db2);
+ GetDirectoryDatabase_IsolatedTestBody();
}
TEST_F(ObfuscatedFileUtilTest, MigrationBackFromIsolated) {
- std::string kFakeDirectoryData("0123456789");
- base::FilePath old_directory_db_path;
-
- // Initialize the directory with one origin using
- // SandboxIsolatedOriginDatabase.
- {
- std::string origin_string =
- webkit_database::GetIdentifierFromOrigin(origin_);
- SandboxIsolatedOriginDatabase database_old(
- origin_string, data_dir_path(),
- base::FilePath(
- SandboxIsolatedOriginDatabase::kObsoleteOriginDirectory));
- base::FilePath path;
- EXPECT_TRUE(database_old.GetPathForOrigin(origin_string, &path));
- EXPECT_FALSE(path.empty());
-
- // Populate the origin directory with some fake data.
- old_directory_db_path = data_dir_path().Append(path);
- ASSERT_TRUE(base::CreateDirectory(old_directory_db_path));
- EXPECT_EQ(static_cast<int>(kFakeDirectoryData.size()),
- file_util::WriteFile(old_directory_db_path.AppendASCII("dummy"),
- kFakeDirectoryData.data(),
- kFakeDirectoryData.size()));
- }
-
- storage_policy_->AddIsolated(origin_);
- scoped_ptr<ObfuscatedFileUtil> file_util(
- ObfuscatedFileUtil::CreateForTesting(
- storage_policy_.get(), data_dir_path(),
- base::MessageLoopProxy::current().get()));
- base::PlatformFileError error = base::PLATFORM_FILE_ERROR_FAILED;
- base::FilePath origin_directory = file_util->GetDirectoryForOrigin(
- origin_, true /* create */, &error);
- EXPECT_EQ(base::PLATFORM_FILE_OK, error);
-
- // The database is migrated from the old one.
- EXPECT_TRUE(base::DirectoryExists(origin_directory));
- EXPECT_FALSE(base::DirectoryExists(old_directory_db_path));
-
- // Check we see the same contents in the new origin directory.
- std::string origin_db_data;
- EXPECT_TRUE(base::PathExists(origin_directory.AppendASCII("dummy")));
- EXPECT_TRUE(base::ReadFileToString(
- origin_directory.AppendASCII("dummy"), &origin_db_data));
- EXPECT_EQ(kFakeDirectoryData, origin_db_data);
+ MigrationBackFromIsolatedTestBody();
}
TEST_F(ObfuscatedFileUtilTest, OpenPathInNonDirectory) {
@@ -2487,4 +2519,4 @@ TEST_F(ObfuscatedFileUtilTest, CreateDirectory_NotADirectoryInRecursive) {
true /* recursive */));
}
-} // namespace fileapi
+} // namespace content

Powered by Google App Engine
This is Rietveld 408576698