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

Unified Diff: webkit/fileapi/sandbox_mount_point_provider_unittest.cc

Issue 15442002: Move FileAPI sandboxed filesystem related code from webkit/fileapi to webkit/browser/fileapi (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 7 years, 7 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
« no previous file with comments | « webkit/fileapi/sandbox_mount_point_provider.cc ('k') | webkit/fileapi/sandbox_origin_database.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/fileapi/sandbox_mount_point_provider_unittest.cc
diff --git a/webkit/fileapi/sandbox_mount_point_provider_unittest.cc b/webkit/fileapi/sandbox_mount_point_provider_unittest.cc
deleted file mode 100644
index cca5cda1c8bfa58ba98806520bfbb77ddab8825b..0000000000000000000000000000000000000000
--- a/webkit/fileapi/sandbox_mount_point_provider_unittest.cc
+++ /dev/null
@@ -1,202 +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 "webkit/fileapi/sandbox_mount_point_provider.h"
-
-#include <set>
-
-#include "base/basictypes.h"
-#include "base/file_util.h"
-#include "base/files/scoped_temp_dir.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/message_loop.h"
-#include "base/message_loop_proxy.h"
-#include "googleurl/src/gurl.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "webkit/browser/fileapi/file_system_mount_point_provider.h"
-#include "webkit/fileapi/file_system_url.h"
-#include "webkit/fileapi/file_system_util.h"
-#include "webkit/fileapi/mock_file_system_options.h"
-
-namespace fileapi {
-
-namespace {
-
-FileSystemURL CreateFileSystemURL(const char* path) {
- const GURL kOrigin("http://foo/");
- return FileSystemURL::CreateForTest(
- kOrigin, kFileSystemTypeTemporary, base::FilePath::FromUTF8Unsafe(path));
-}
-
-} // namespace
-
-class SandboxMountPointProviderOriginEnumeratorTest : public testing::Test {
- public:
- virtual void SetUp() {
- ASSERT_TRUE(data_dir_.CreateUniqueTempDir());
- sandbox_provider_.reset(
- new SandboxMountPointProvider(
- NULL,
- base::MessageLoopProxy::current(),
- data_dir_.path(),
- CreateAllowFileAccessOptions(),
- NULL));
- }
-
- SandboxMountPointProvider::OriginEnumerator* CreateEnumerator() const {
- return sandbox_provider_->CreateOriginEnumerator();
- }
-
- protected:
- void CreateOriginTypeDirectory(const GURL& origin,
- fileapi::FileSystemType type) {
- base::FilePath target = sandbox_provider_->
- GetBaseDirectoryForOriginAndType(origin, type, true);
- ASSERT_TRUE(!target.empty());
- ASSERT_TRUE(file_util::DirectoryExists(target));
- }
-
- base::ScopedTempDir data_dir_;
- base::MessageLoop message_loop_;
- scoped_ptr<SandboxMountPointProvider> sandbox_provider_;
-};
-
-TEST_F(SandboxMountPointProviderOriginEnumeratorTest, Empty) {
- scoped_ptr<SandboxMountPointProvider::OriginEnumerator> enumerator(
- CreateEnumerator());
- ASSERT_TRUE(enumerator->Next().is_empty());
-}
-
-TEST_F(SandboxMountPointProviderOriginEnumeratorTest, EnumerateOrigins) {
- const char* temporary_origins[] = {
- "http://www.bar.com/",
- "http://www.foo.com/",
- "http://www.foo.com:1/",
- "http://www.example.com:8080/",
- "http://www.google.com:80/",
- };
- const char* persistent_origins[] = {
- "http://www.bar.com/",
- "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<GURL> temporary_set, persistent_set;
- for (size_t i = 0; i < temporary_size; ++i) {
- CreateOriginTypeDirectory(GURL(temporary_origins[i]),
- fileapi::kFileSystemTypeTemporary);
- temporary_set.insert(GURL(temporary_origins[i]));
- }
- for (size_t i = 0; i < persistent_size; ++i) {
- CreateOriginTypeDirectory(GURL(persistent_origins[i]),
- kFileSystemTypePersistent);
- persistent_set.insert(GURL(persistent_origins[i]));
- }
-
- scoped_ptr<SandboxMountPointProvider::OriginEnumerator> enumerator(
- CreateEnumerator());
- size_t temporary_actual_size = 0;
- size_t persistent_actual_size = 0;
- GURL current;
- while (!(current = enumerator->Next()).is_empty()) {
- SCOPED_TRACE(testing::Message() << "EnumerateOrigin " << current.spec());
- if (enumerator->HasFileSystemType(kFileSystemTypeTemporary)) {
- ASSERT_TRUE(temporary_set.find(current) != temporary_set.end());
- ++temporary_actual_size;
- }
- if (enumerator->HasFileSystemType(kFileSystemTypePersistent)) {
- ASSERT_TRUE(persistent_set.find(current) != persistent_set.end());
- ++persistent_actual_size;
- }
- }
-
- EXPECT_EQ(temporary_size, temporary_actual_size);
- EXPECT_EQ(persistent_size, persistent_actual_size);
-}
-
-TEST(SandboxMountPointProviderTest, AccessPermissions) {
- base::MessageLoop message_loop_;
- SandboxMountPointProvider provider(
- NULL, base::MessageLoopProxy::current(), base::FilePath(),
- CreateAllowFileAccessOptions(), NULL);
-
- // Any access should be allowed in sandbox directory.
- EXPECT_EQ(FILE_PERMISSION_ALWAYS_ALLOW,
- provider.GetPermissionPolicy(CreateFileSystemURL("foo"),
- kReadFilePermissions));
- EXPECT_EQ(FILE_PERMISSION_ALWAYS_ALLOW,
- provider.GetPermissionPolicy(CreateFileSystemURL("foo"),
- kWriteFilePermissions));
- EXPECT_EQ(FILE_PERMISSION_ALWAYS_ALLOW,
- provider.GetPermissionPolicy(CreateFileSystemURL("foo"),
- kCreateFilePermissions));
-
- // Access to a path with parent references ('..') should be disallowed.
- EXPECT_EQ(FILE_PERMISSION_ALWAYS_DENY,
- provider.GetPermissionPolicy(CreateFileSystemURL("a/../b"),
- kReadFilePermissions));
-
- // Access from non-allowed scheme should be disallowed.
- EXPECT_EQ(FILE_PERMISSION_ALWAYS_DENY,
- provider.GetPermissionPolicy(
- FileSystemURL::CreateForTest(
- GURL("unknown://bar"), kFileSystemTypeTemporary,
- base::FilePath::FromUTF8Unsafe("foo")),
- kReadFilePermissions));
-
- // Access for non-sandbox type should be disallowed.
- EXPECT_EQ(FILE_PERMISSION_ALWAYS_DENY,
- provider.GetPermissionPolicy(
- FileSystemURL::CreateForTest(
- GURL("http://foo/"), kFileSystemTypeTest,
- base::FilePath::FromUTF8Unsafe("foo")),
- kReadFilePermissions));
-
- // Write access to the root folder should be restricted.
- EXPECT_EQ(FILE_PERMISSION_ALWAYS_DENY,
- provider.GetPermissionPolicy(CreateFileSystemURL(""),
- kWriteFilePermissions));
- EXPECT_EQ(FILE_PERMISSION_ALWAYS_DENY,
- provider.GetPermissionPolicy(CreateFileSystemURL("/"),
- kWriteFilePermissions));
- EXPECT_EQ(FILE_PERMISSION_ALWAYS_DENY,
- provider.GetPermissionPolicy(CreateFileSystemURL("/"),
- kCreateFilePermissions));
-
- // Create access with restricted name should be disallowed.
- EXPECT_EQ(FILE_PERMISSION_ALWAYS_DENY,
- provider.GetPermissionPolicy(CreateFileSystemURL(".."),
- kCreateFilePermissions));
- EXPECT_EQ(FILE_PERMISSION_ALWAYS_DENY,
- provider.GetPermissionPolicy(CreateFileSystemURL("."),
- kCreateFilePermissions));
-
- // Similar but safe cases.
- EXPECT_EQ(FILE_PERMISSION_ALWAYS_ALLOW,
- provider.GetPermissionPolicy(CreateFileSystemURL(" ."),
- kCreateFilePermissions));
- EXPECT_EQ(FILE_PERMISSION_ALWAYS_ALLOW,
- provider.GetPermissionPolicy(CreateFileSystemURL(". "),
- kCreateFilePermissions));
- EXPECT_EQ(FILE_PERMISSION_ALWAYS_DENY,
- provider.GetPermissionPolicy(CreateFileSystemURL(" .."),
- kCreateFilePermissions));
- EXPECT_EQ(FILE_PERMISSION_ALWAYS_DENY,
- provider.GetPermissionPolicy(CreateFileSystemURL(".. "),
- kCreateFilePermissions));
- EXPECT_EQ(FILE_PERMISSION_ALWAYS_ALLOW,
- provider.GetPermissionPolicy(CreateFileSystemURL("b."),
- kCreateFilePermissions));
- EXPECT_EQ(FILE_PERMISSION_ALWAYS_ALLOW,
- provider.GetPermissionPolicy(CreateFileSystemURL(".b"),
- kCreateFilePermissions));
-
- // A path that looks like a drive letter.
- EXPECT_EQ(FILE_PERMISSION_ALWAYS_ALLOW,
- provider.GetPermissionPolicy(CreateFileSystemURL("c:"),
- kCreateFilePermissions));
-}
-
-} // namespace fileapi
« no previous file with comments | « webkit/fileapi/sandbox_mount_point_provider.cc ('k') | webkit/fileapi/sandbox_origin_database.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698