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

Unified Diff: webkit/browser/fileapi/isolated_context_unittest.cc

Issue 253753007: Move all remaining fileapi and quota unit tests from webkit/ to content/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address feedback Created 6 years, 8 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/browser/fileapi/isolated_context_unittest.cc
diff --git a/webkit/browser/fileapi/isolated_context_unittest.cc b/webkit/browser/fileapi/isolated_context_unittest.cc
deleted file mode 100644
index 156181d62107101622764b46eb81e98fd834f482..0000000000000000000000000000000000000000
--- a/webkit/browser/fileapi/isolated_context_unittest.cc
+++ /dev/null
@@ -1,345 +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 <string>
-
-#include "base/basictypes.h"
-#include "base/logging.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "webkit/browser/fileapi/file_system_url.h"
-#include "webkit/browser/fileapi/isolated_context.h"
-
-#define FPL(x) FILE_PATH_LITERAL(x)
-
-#if defined(FILE_PATH_USES_DRIVE_LETTERS)
-#define DRIVE FPL("C:")
-#else
-#define DRIVE
-#endif
-
-namespace fileapi {
-
-typedef IsolatedContext::MountPointInfo FileInfo;
-
-namespace {
-
-const base::FilePath kTestPaths[] = {
- base::FilePath(DRIVE FPL("/a/b.txt")),
- base::FilePath(DRIVE FPL("/c/d/e")),
- base::FilePath(DRIVE FPL("/h/")),
- base::FilePath(DRIVE FPL("/")),
-#if defined(FILE_PATH_USES_WIN_SEPARATORS)
- base::FilePath(DRIVE FPL("\\foo\\bar")),
- base::FilePath(DRIVE FPL("\\")),
-#endif
- // For duplicated base name test.
- base::FilePath(DRIVE FPL("/")),
- base::FilePath(DRIVE FPL("/f/e")),
- base::FilePath(DRIVE FPL("/f/b.txt")),
-};
-
-} // namespace
-
-class IsolatedContextTest : public testing::Test {
- public:
- IsolatedContextTest() {
- for (size_t i = 0; i < arraysize(kTestPaths); ++i)
- fileset_.insert(kTestPaths[i].NormalizePathSeparators());
- }
-
- virtual void SetUp() {
- IsolatedContext::FileInfoSet files;
- for (size_t i = 0; i < arraysize(kTestPaths); ++i) {
- std::string name;
- ASSERT_TRUE(
- files.AddPath(kTestPaths[i].NormalizePathSeparators(), &name));
- names_.push_back(name);
- }
- id_ = IsolatedContext::GetInstance()->RegisterDraggedFileSystem(files);
- IsolatedContext::GetInstance()->AddReference(id_);
- ASSERT_FALSE(id_.empty());
- }
-
- virtual void TearDown() {
- IsolatedContext::GetInstance()->RemoveReference(id_);
- }
-
- IsolatedContext* isolated_context() const {
- return IsolatedContext::GetInstance();
- }
-
- protected:
- std::string id_;
- std::multiset<base::FilePath> fileset_;
- std::vector<std::string> names_;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(IsolatedContextTest);
-};
-
-TEST_F(IsolatedContextTest, RegisterAndRevokeTest) {
- // See if the returned top-level entries match with what we registered.
- std::vector<FileInfo> toplevels;
- ASSERT_TRUE(isolated_context()->GetDraggedFileInfo(id_, &toplevels));
- ASSERT_EQ(fileset_.size(), toplevels.size());
- for (size_t i = 0; i < toplevels.size(); ++i) {
- ASSERT_TRUE(fileset_.find(toplevels[i].path) != fileset_.end());
- }
-
- // See if the name of each registered kTestPaths (that is what we
- // register in SetUp() by RegisterDraggedFileSystem) is properly cracked as
- // a valid virtual path in the isolated filesystem.
- for (size_t i = 0; i < arraysize(kTestPaths); ++i) {
- base::FilePath virtual_path = isolated_context()->CreateVirtualRootPath(id_)
- .AppendASCII(names_[i]);
- std::string cracked_id;
- base::FilePath cracked_path;
- FileSystemType cracked_type;
- FileSystemMountOption cracked_option;
- ASSERT_TRUE(isolated_context()->CrackVirtualPath(
- virtual_path, &cracked_id, &cracked_type, &cracked_path,
- &cracked_option));
- ASSERT_EQ(kTestPaths[i].NormalizePathSeparators().value(),
- cracked_path.value());
- ASSERT_EQ(id_, cracked_id);
- ASSERT_EQ(kFileSystemTypeDragged, cracked_type);
- }
-
- // Make sure GetRegisteredPath returns false for id_ since it is
- // registered for dragged files.
- base::FilePath path;
- ASSERT_FALSE(isolated_context()->GetRegisteredPath(id_, &path));
-
- // Deref the current one and registering a new one.
- isolated_context()->RemoveReference(id_);
-
- std::string id2 = isolated_context()->RegisterFileSystemForPath(
- kFileSystemTypeNativeLocal, base::FilePath(DRIVE FPL("/foo")), NULL);
-
- // Make sure the GetDraggedFileInfo returns false for both ones.
- ASSERT_FALSE(isolated_context()->GetDraggedFileInfo(id2, &toplevels));
- ASSERT_FALSE(isolated_context()->GetDraggedFileInfo(id_, &toplevels));
-
- // Make sure the GetRegisteredPath returns true only for the new one.
- ASSERT_FALSE(isolated_context()->GetRegisteredPath(id_, &path));
- ASSERT_TRUE(isolated_context()->GetRegisteredPath(id2, &path));
-
- // Try registering three more file systems for the same path as id2.
- std::string id3 = isolated_context()->RegisterFileSystemForPath(
- kFileSystemTypeNativeLocal, path, NULL);
- std::string id4 = isolated_context()->RegisterFileSystemForPath(
- kFileSystemTypeNativeLocal, path, NULL);
- std::string id5 = isolated_context()->RegisterFileSystemForPath(
- kFileSystemTypeNativeLocal, path, NULL);
-
- // Remove file system for id4.
- isolated_context()->AddReference(id4);
- isolated_context()->RemoveReference(id4);
-
- // Only id4 should become invalid now.
- ASSERT_TRUE(isolated_context()->GetRegisteredPath(id2, &path));
- ASSERT_TRUE(isolated_context()->GetRegisteredPath(id3, &path));
- ASSERT_FALSE(isolated_context()->GetRegisteredPath(id4, &path));
- ASSERT_TRUE(isolated_context()->GetRegisteredPath(id5, &path));
-
- // Revoke file system id5, after adding multiple references.
- isolated_context()->AddReference(id5);
- isolated_context()->AddReference(id5);
- isolated_context()->AddReference(id5);
- isolated_context()->RevokeFileSystem(id5);
-
- // No matter how many references we add id5 must be invalid now.
- ASSERT_TRUE(isolated_context()->GetRegisteredPath(id2, &path));
- ASSERT_TRUE(isolated_context()->GetRegisteredPath(id3, &path));
- ASSERT_FALSE(isolated_context()->GetRegisteredPath(id4, &path));
- ASSERT_FALSE(isolated_context()->GetRegisteredPath(id5, &path));
-
- // Revoke the file systems by path.
- isolated_context()->RevokeFileSystemByPath(path);
-
- // Now all the file systems associated to the path must be invalid.
- ASSERT_FALSE(isolated_context()->GetRegisteredPath(id2, &path));
- ASSERT_FALSE(isolated_context()->GetRegisteredPath(id3, &path));
- ASSERT_FALSE(isolated_context()->GetRegisteredPath(id4, &path));
- ASSERT_FALSE(isolated_context()->GetRegisteredPath(id5, &path));
-}
-
-TEST_F(IsolatedContextTest, CrackWithRelativePaths) {
- const struct {
- base::FilePath::StringType path;
- bool valid;
- } relatives[] = {
- { FPL("foo"), true },
- { FPL("foo/bar"), true },
- { FPL(".."), false },
- { FPL("foo/.."), false },
- { FPL("foo/../bar"), false },
-#if defined(FILE_PATH_USES_WIN_SEPARATORS)
-# define SHOULD_FAIL_WITH_WIN_SEPARATORS false
-#else
-# define SHOULD_FAIL_WITH_WIN_SEPARATORS true
-#endif
- { FPL("foo\\..\\baz"), SHOULD_FAIL_WITH_WIN_SEPARATORS },
- { FPL("foo/..\\baz"), SHOULD_FAIL_WITH_WIN_SEPARATORS },
- };
-
- for (size_t i = 0; i < arraysize(kTestPaths); ++i) {
- for (size_t j = 0; j < ARRAYSIZE_UNSAFE(relatives); ++j) {
- SCOPED_TRACE(testing::Message() << "Testing "
- << kTestPaths[i].value() << " " << relatives[j].path);
- base::FilePath virtual_path =
- isolated_context()->CreateVirtualRootPath(id_).AppendASCII(
- names_[i]).Append(relatives[j].path);
- std::string cracked_id;
- base::FilePath cracked_path;
- FileSystemType cracked_type;
- FileSystemMountOption cracked_option;
- if (!relatives[j].valid) {
- ASSERT_FALSE(isolated_context()->CrackVirtualPath(
- virtual_path, &cracked_id, &cracked_type, &cracked_path,
- &cracked_option));
- continue;
- }
- ASSERT_TRUE(isolated_context()->CrackVirtualPath(
- virtual_path, &cracked_id, &cracked_type, &cracked_path,
- &cracked_option));
- ASSERT_EQ(kTestPaths[i].Append(relatives[j].path)
- .NormalizePathSeparators().value(),
- cracked_path.value());
- ASSERT_EQ(id_, cracked_id);
- ASSERT_EQ(kFileSystemTypeDragged, cracked_type);
- }
- }
-}
-
-TEST_F(IsolatedContextTest, CrackURLWithRelativePaths) {
- const struct {
- base::FilePath::StringType path;
- bool valid;
- } relatives[] = {
- { FPL("foo"), true },
- { FPL("foo/bar"), true },
- { FPL(".."), false },
- { FPL("foo/.."), false },
- { FPL("foo/../bar"), false },
-#if defined(FILE_PATH_USES_WIN_SEPARATORS)
-# define SHOULD_FAIL_WITH_WIN_SEPARATORS false
-#else
-# define SHOULD_FAIL_WITH_WIN_SEPARATORS true
-#endif
- { FPL("foo\\..\\baz"), SHOULD_FAIL_WITH_WIN_SEPARATORS },
- { FPL("foo/..\\baz"), SHOULD_FAIL_WITH_WIN_SEPARATORS },
- };
-
- for (size_t i = 0; i < arraysize(kTestPaths); ++i) {
- for (size_t j = 0; j < ARRAYSIZE_UNSAFE(relatives); ++j) {
- SCOPED_TRACE(testing::Message() << "Testing "
- << kTestPaths[i].value() << " " << relatives[j].path);
- base::FilePath virtual_path =
- isolated_context()->CreateVirtualRootPath(id_).AppendASCII(
- names_[i]).Append(relatives[j].path);
-
- FileSystemURL cracked = isolated_context()->CreateCrackedFileSystemURL(
- GURL("http://chromium.org"), kFileSystemTypeIsolated, virtual_path);
-
- ASSERT_EQ(relatives[j].valid, cracked.is_valid());
-
- if (!relatives[j].valid)
- continue;
- ASSERT_EQ(GURL("http://chromium.org"), cracked.origin());
- ASSERT_EQ(kTestPaths[i].Append(relatives[j].path)
- .NormalizePathSeparators().value(),
- cracked.path().value());
- ASSERT_EQ(virtual_path.NormalizePathSeparators(), cracked.virtual_path());
- ASSERT_EQ(id_, cracked.filesystem_id());
- ASSERT_EQ(kFileSystemTypeDragged, cracked.type());
- ASSERT_EQ(kFileSystemTypeIsolated, cracked.mount_type());
- }
- }
-}
-
-TEST_F(IsolatedContextTest, TestWithVirtualRoot) {
- std::string cracked_id;
- base::FilePath cracked_path;
- FileSystemMountOption cracked_option;
-
- // Trying to crack virtual root "/" returns true but with empty cracked path
- // as "/" of the isolated filesystem is a pure virtual directory
- // that has no corresponding platform directory.
- base::FilePath virtual_path = isolated_context()->CreateVirtualRootPath(id_);
- ASSERT_TRUE(isolated_context()->CrackVirtualPath(
- virtual_path, &cracked_id, NULL, &cracked_path, &cracked_option));
- ASSERT_EQ(FPL(""), cracked_path.value());
- ASSERT_EQ(id_, cracked_id);
-
- // Trying to crack "/foo" should fail (because "foo" is not the one
- // included in the kTestPaths).
- virtual_path = isolated_context()->CreateVirtualRootPath(
- id_).AppendASCII("foo");
- ASSERT_FALSE(isolated_context()->CrackVirtualPath(
- virtual_path, &cracked_id, NULL, &cracked_path, &cracked_option));
-}
-
-TEST_F(IsolatedContextTest, CanHandleURL) {
- const GURL test_origin("http://chromium.org");
- const base::FilePath test_path(FPL("/mount"));
-
- // Should handle isolated file system.
- EXPECT_TRUE(isolated_context()->HandlesFileSystemMountType(
- fileapi::kFileSystemTypeIsolated));
-
- // Shouldn't handle the rest.
- EXPECT_FALSE(isolated_context()->HandlesFileSystemMountType(
- fileapi::kFileSystemTypeExternal));
- EXPECT_FALSE(isolated_context()->HandlesFileSystemMountType(
- fileapi::kFileSystemTypeTemporary));
- EXPECT_FALSE(isolated_context()->HandlesFileSystemMountType(
- fileapi::kFileSystemTypePersistent));
- EXPECT_FALSE(isolated_context()->HandlesFileSystemMountType(
- fileapi::kFileSystemTypeTest));
- // Not even if it's isolated subtype.
- EXPECT_FALSE(isolated_context()->HandlesFileSystemMountType(
- fileapi::kFileSystemTypeNativeLocal));
- EXPECT_FALSE(isolated_context()->HandlesFileSystemMountType(
- fileapi::kFileSystemTypeDragged));
- EXPECT_FALSE(isolated_context()->HandlesFileSystemMountType(
- fileapi::kFileSystemTypeNativeMedia));
- EXPECT_FALSE(isolated_context()->HandlesFileSystemMountType(
- fileapi::kFileSystemTypeDeviceMedia));
-}
-
-TEST_F(IsolatedContextTest, VirtualFileSystemTests) {
- // Should be able to register empty and non-absolute paths
- std::string empty_fsid = isolated_context()->RegisterFileSystemForVirtualPath(
- fileapi::kFileSystemTypeIsolated, "_", base::FilePath());
- std::string relative_fsid =
- isolated_context()->RegisterFileSystemForVirtualPath(
- fileapi::kFileSystemTypeIsolated, "_",
- base::FilePath(FPL("relpath")));
- ASSERT_FALSE(empty_fsid.empty());
- ASSERT_FALSE(relative_fsid.empty());
-
- // Make sure that filesystem root is not prepended to cracked virtual paths.
- base::FilePath database_root = base::FilePath(DRIVE FPL("/database_path"));
- std::string database_fsid =
- isolated_context()->RegisterFileSystemForVirtualPath(
- fileapi::kFileSystemTypeIsolated, "_", database_root);
-
- base::FilePath test_virtual_path =
- base::FilePath().AppendASCII("virtualdir").AppendASCII("virtualfile.txt");
-
- base::FilePath whole_virtual_path =
- isolated_context()->CreateVirtualRootPath(database_fsid)
- .AppendASCII("_").Append(test_virtual_path);
-
- std::string cracked_id;
- base::FilePath cracked_path;
- FileSystemMountOption cracked_option;
- ASSERT_TRUE(isolated_context()->CrackVirtualPath(
- whole_virtual_path, &cracked_id, NULL, &cracked_path, &cracked_option));
- ASSERT_EQ(database_fsid, cracked_id);
- ASSERT_EQ(test_virtual_path, cracked_path);
-}
-
-} // namespace fileapi
« no previous file with comments | « webkit/browser/fileapi/file_system_usage_cache_unittest.cc ('k') | webkit/browser/fileapi/local_file_stream_writer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698