summaryrefslogtreecommitdiffstats
path: root/webkit/fileapi/file_system_path_manager_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'webkit/fileapi/file_system_path_manager_unittest.cc')
-rw-r--r--webkit/fileapi/file_system_path_manager_unittest.cc91
1 files changed, 85 insertions, 6 deletions
diff --git a/webkit/fileapi/file_system_path_manager_unittest.cc b/webkit/fileapi/file_system_path_manager_unittest.cc
index e0c1d81..3d6c831 100644
--- a/webkit/fileapi/file_system_path_manager_unittest.cc
+++ b/webkit/fileapi/file_system_path_manager_unittest.cc
@@ -4,6 +4,9 @@
#include "webkit/fileapi/file_system_path_manager.h"
+#include <set>
+#include <string>
+
#include "base/basictypes.h"
#include "base/file_util.h"
#include "base/message_loop.h"
@@ -164,8 +167,7 @@ class FileSystemPathManagerTest : public testing::Test {
}
void SetUp() {
- data_dir_.reset(new ScopedTempDir);
- ASSERT_TRUE(data_dir_->CreateUniqueTempDir());
+ ASSERT_TRUE(data_dir_.CreateUniqueTempDir());
root_path_callback_status_ = false;
root_path_.clear();
file_system_name_.clear();
@@ -177,7 +179,7 @@ class FileSystemPathManagerTest : public testing::Test {
bool allow_file_access) {
return new FileSystemPathManager(
base::MessageLoopProxy::CreateForCurrentThread(),
- data_dir_->path(), incognito, allow_file_access);
+ data_dir_.path(), incognito, allow_file_access);
}
void OnGetRootPath(bool success,
@@ -207,14 +209,14 @@ class FileSystemPathManagerTest : public testing::Test {
return manager->CrackFileSystemPath(path, NULL, NULL, NULL);
}
- FilePath data_path() { return data_dir_->path(); }
+ FilePath data_path() { return data_dir_.path(); }
FilePath file_system_path() {
- return data_dir_->path().Append(
+ return data_dir_.path().Append(
FileSystemPathManager::kFileSystemDirectory);
}
private:
- scoped_ptr<ScopedTempDir> data_dir_;
+ ScopedTempDir data_dir_;
base::ScopedCallbackFactory<FileSystemPathManagerTest> callback_factory_;
bool root_path_callback_status_;
@@ -423,3 +425,80 @@ TEST_F(FileSystemPathManagerTest, IsRestrictedName) {
FileSystemPathManager::IsRestrictedFileName(name));
}
}
+
+class FileSystemPathManagerOriginEnumeratorTest : public testing::Test {
+ public:
+ void SetUp() {
+ ASSERT_TRUE(data_dir_.CreateUniqueTempDir());
+ enumerator_.reset(new FileSystemPathManager::OriginEnumerator(
+ data_dir_.path()));
+ }
+
+ FileSystemPathManager::OriginEnumerator* enumerator() const {
+ return enumerator_.get();
+ }
+
+ protected:
+ void CreateOriginTypeDirectory(const std::string& origin_identifier,
+ fileapi::FileSystemType type) {
+ std::string type_string =
+ FileSystemPathManager::GetFileSystemTypeString(type);
+ ASSERT_TRUE(!type_string.empty());
+ FilePath target = data_dir_.path().AppendASCII(origin_identifier)
+ .AppendASCII(type_string);
+ file_util::CreateDirectory(target);
+ ASSERT_TRUE(file_util::DirectoryExists(target));
+ }
+
+ ScopedTempDir data_dir_;
+ scoped_ptr<FileSystemPathManager::OriginEnumerator> enumerator_;
+};
+
+TEST_F(FileSystemPathManagerOriginEnumeratorTest, Empty) {
+ ASSERT_TRUE(enumerator()->Next().empty());
+}
+
+TEST_F(FileSystemPathManagerOriginEnumeratorTest, EnumerateOrigins) {
+ const char* temporary_origins[] = {
+ "http_www.bar.com_0",
+ "http_www.foo.com_0",
+ "http_www.foo.com_80",
+ "http_www.example.com_8080",
+ "http_www.google.com_80",
+ };
+ const char* persistent_origins[] = {
+ "http_www.bar.com_0",
+ "http_www.foo.com_8080",
+ "http_www.foo.com_80",
+ };
+ size_t temporary_size = ARRAYSIZE_UNSAFE(temporary_origins);
+ size_t persistent_size = ARRAYSIZE_UNSAFE(persistent_origins);
+ std::set<std::string> temporary_set, persistent_set;
+ for (size_t i = 0; i < temporary_size; ++i) {
+ CreateOriginTypeDirectory(temporary_origins[i],
+ fileapi::kFileSystemTypeTemporary);
+ temporary_set.insert(temporary_origins[i]);
+ }
+ for (size_t i = 0; i < persistent_size; ++i) {
+ CreateOriginTypeDirectory(persistent_origins[i], kFileSystemTypePersistent);
+ persistent_set.insert(persistent_origins[i]);
+ }
+
+ size_t temporary_actual_size = 0;
+ size_t persistent_actual_size = 0;
+ std::string current;
+ while (!(current = enumerator()->Next()).empty()) {
+ SCOPED_TRACE(testing::Message() << "EnumerateOrigin " << current);
+ if (enumerator()->HasTemporary()) {
+ ASSERT_TRUE(temporary_set.find(current) != temporary_set.end());
+ ++temporary_actual_size;
+ }
+ if (enumerator()->HasPersistent()) {
+ ASSERT_TRUE(persistent_set.find(current) != persistent_set.end());
+ ++persistent_actual_size;
+ }
+ }
+
+ ASSERT_EQ(temporary_size, temporary_actual_size);
+ ASSERT_EQ(persistent_size, persistent_actual_size);
+}