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

Unified Diff: webkit/browser/chromeos/fileapi/cros_mount_point_provider_unittest.cc

Issue 17644006: Move files under webkit/browser/fileapi/... to chrome/browser/chromeos/fileapi/... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address review comments. Created 7 years, 6 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/chromeos/fileapi/cros_mount_point_provider_unittest.cc
diff --git a/webkit/browser/chromeos/fileapi/cros_mount_point_provider_unittest.cc b/webkit/browser/chromeos/fileapi/cros_mount_point_provider_unittest.cc
deleted file mode 100644
index 5de8a4b1a5e331ca22967bf1919bc9813ce26263..0000000000000000000000000000000000000000
--- a/webkit/browser/chromeos/fileapi/cros_mount_point_provider_unittest.cc
+++ /dev/null
@@ -1,310 +0,0 @@
-// Copyright (c) 2013 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/browser/chromeos/fileapi/cros_mount_point_provider.h"
-
-#include <set>
-
-#include "base/files/file_path.h"
-#include "base/path_service.h"
-#include "chromeos/dbus/cros_disks_client.h"
-#include "googleurl/src/url_util.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "webkit/browser/fileapi/external_mount_points.h"
-#include "webkit/browser/fileapi/file_permission_policy.h"
-#include "webkit/browser/fileapi/file_system_url.h"
-#include "webkit/browser/fileapi/isolated_context.h"
-#include "webkit/browser/quota/mock_special_storage_policy.h"
-
-#define FPL(x) FILE_PATH_LITERAL(x)
-
-using fileapi::ExternalMountPoints;
-using fileapi::FileSystemURL;
-
-namespace {
-
-FileSystemURL CreateFileSystemURL(const std::string& extension,
- const char* path,
- ExternalMountPoints* mount_points) {
- return mount_points->CreateCrackedFileSystemURL(
- GURL("chrome-extension://" + extension + "/"),
- fileapi::kFileSystemTypeExternal,
- base::FilePath::FromUTF8Unsafe(path));
-}
-
-TEST(CrosMountPointProviderTest, DefaultMountPoints) {
- scoped_refptr<quota::SpecialStoragePolicy> storage_policy =
- new quota::MockSpecialStoragePolicy();
- scoped_refptr<fileapi::ExternalMountPoints> mount_points(
- fileapi::ExternalMountPoints::CreateRefCounted());
- chromeos::CrosMountPointProvider provider(
- storage_policy,
- mount_points.get(),
- fileapi::ExternalMountPoints::GetSystemInstance());
- provider.AddSystemMountPoints();
- std::vector<base::FilePath> root_dirs = provider.GetRootDirectories();
- std::set<base::FilePath> root_dirs_set(root_dirs.begin(), root_dirs.end());
-
- // By default there should be 4 mount points (in system mount points):
- EXPECT_EQ(4u, root_dirs.size());
- base::FilePath home_path;
- ASSERT_TRUE(PathService::Get(base::DIR_HOME, &home_path));
-
- EXPECT_TRUE(root_dirs_set.count(home_path.AppendASCII("Downloads")));
- EXPECT_TRUE(root_dirs_set.count(
- chromeos::CrosDisksClient::GetRemovableDiskMountPoint()));
- EXPECT_TRUE(root_dirs_set.count(
- chromeos::CrosDisksClient::GetArchiveMountPoint()));
- EXPECT_TRUE(root_dirs_set.count(base::FilePath(FPL("/usr/share/oem"))));
-}
-
-TEST(CrosMountPointProviderTest, GetRootDirectories) {
- scoped_refptr<quota::SpecialStoragePolicy> storage_policy =
- new quota::MockSpecialStoragePolicy();
- scoped_refptr<fileapi::ExternalMountPoints> mount_points(
- fileapi::ExternalMountPoints::CreateRefCounted());
-
- scoped_refptr<fileapi::ExternalMountPoints> system_mount_points(
- fileapi::ExternalMountPoints::CreateRefCounted());
-
- chromeos::CrosMountPointProvider provider(
- storage_policy,
- mount_points.get(),
- system_mount_points.get());
-
- const size_t initial_root_dirs_size = provider.GetRootDirectories().size();
-
- // Register 'local' test mount points.
- mount_points->RegisterFileSystem("c",
- fileapi::kFileSystemTypeNativeLocal,
- base::FilePath(FPL("/a/b/c")));
- mount_points->RegisterFileSystem("d",
- fileapi::kFileSystemTypeNativeLocal,
- base::FilePath(FPL("/b/c/d")));
-
- // Register system test mount points.
- system_mount_points->RegisterFileSystem("d",
- fileapi::kFileSystemTypeNativeLocal,
- base::FilePath(FPL("/g/c/d")));
- system_mount_points->RegisterFileSystem("e",
- fileapi::kFileSystemTypeNativeLocal,
- base::FilePath(FPL("/g/d/e")));
-
- std::vector<base::FilePath> root_dirs = provider.GetRootDirectories();
- std::set<base::FilePath> root_dirs_set(root_dirs.begin(), root_dirs.end());
- EXPECT_EQ(initial_root_dirs_size + 4, root_dirs.size());
- EXPECT_TRUE(root_dirs_set.count(base::FilePath(FPL("/a/b/c"))));
- EXPECT_TRUE(root_dirs_set.count(base::FilePath(FPL("/b/c/d"))));
- EXPECT_TRUE(root_dirs_set.count(base::FilePath(FPL("/g/c/d"))));
- EXPECT_TRUE(root_dirs_set.count(base::FilePath(FPL("/g/d/e"))));
-}
-
-TEST(CrosMountPointProviderTest, AccessPermissions) {
- const int kPermission = fileapi::kReadFilePermissions;
-
- url_util::AddStandardScheme("chrome-extension");
-
- scoped_refptr<quota::MockSpecialStoragePolicy> storage_policy =
- new quota::MockSpecialStoragePolicy();
- scoped_refptr<fileapi::ExternalMountPoints> mount_points(
- fileapi::ExternalMountPoints::CreateRefCounted());
- scoped_refptr<fileapi::ExternalMountPoints> system_mount_points(
- fileapi::ExternalMountPoints::CreateRefCounted());
- chromeos::CrosMountPointProvider provider(
- storage_policy,
- mount_points.get(),
- system_mount_points.get());
-
- std::string extension("ddammdhioacbehjngdmkjcjbnfginlla");
-
- storage_policy->AddFileHandler(extension);
-
- // Initialize mount points.
- ASSERT_TRUE(system_mount_points->RegisterFileSystem(
- "system",
- fileapi::kFileSystemTypeNativeLocal,
- base::FilePath(FPL("/g/system"))));
- ASSERT_TRUE(mount_points->RegisterFileSystem(
- "removable",
- fileapi::kFileSystemTypeNativeLocal,
- base::FilePath(FPL("/media/removable"))));
- ASSERT_TRUE(mount_points->RegisterFileSystem(
- "oem",
- fileapi::kFileSystemTypeRestrictedNativeLocal,
- base::FilePath(FPL("/usr/share/oem"))));
-
- // Provider specific mount point access.
- EXPECT_EQ(
- fileapi::FILE_PERMISSION_ALWAYS_DENY,
- provider.GetPermissionPolicy(
- CreateFileSystemURL(extension, "removable/foo", mount_points.get()),
- kPermission));
-
- provider.GrantFileAccessToExtension(extension,
- base::FilePath(FPL("removable/foo")));
- EXPECT_EQ(
- fileapi::FILE_PERMISSION_USE_FILE_PERMISSION,
- provider.GetPermissionPolicy(
- CreateFileSystemURL(extension, "removable/foo", mount_points.get()),
- kPermission));
- EXPECT_EQ(
- fileapi::FILE_PERMISSION_ALWAYS_DENY,
- provider.GetPermissionPolicy(
- CreateFileSystemURL(extension, "removable/foo1", mount_points.get()),
- kPermission));
-
- // System mount point access.
- EXPECT_EQ(
- fileapi::FILE_PERMISSION_ALWAYS_DENY,
- provider.GetPermissionPolicy(
- CreateFileSystemURL(extension, "system/foo",
- system_mount_points.get()),
- kPermission));
-
- provider.GrantFileAccessToExtension(extension,
- base::FilePath(FPL("system/foo")));
- EXPECT_EQ(
- fileapi::FILE_PERMISSION_USE_FILE_PERMISSION,
- provider.GetPermissionPolicy(
- CreateFileSystemURL(extension, "system/foo",
- system_mount_points.get()),
- kPermission));
- EXPECT_EQ(
- fileapi::FILE_PERMISSION_ALWAYS_DENY,
- provider.GetPermissionPolicy(
- CreateFileSystemURL(extension, "system/foo1",
- system_mount_points.get()),
- kPermission));
-
- // oem is restricted file system.
- provider.GrantFileAccessToExtension(
- extension, base::FilePath(FPL("oem/foo")));
- // The extension should not be able to access the file even if
- // GrantFileAccessToExtension was called.
- EXPECT_EQ(
- fileapi::FILE_PERMISSION_ALWAYS_DENY,
- provider.GetPermissionPolicy(
- CreateFileSystemURL(extension, "oem/foo", mount_points.get()),
- kPermission));
-
- provider.GrantFullAccessToExtension(extension);
- // The extension should be able to access restricted file system after it was
- // granted full access.
- EXPECT_EQ(
- fileapi::FILE_PERMISSION_USE_FILE_PERMISSION,
- provider.GetPermissionPolicy(
- CreateFileSystemURL(extension, "oem/foo", mount_points.get()),
- kPermission));
- // The extension which was granted full access should be able to access any
- // path on current file systems.
- EXPECT_EQ(
- fileapi::FILE_PERMISSION_USE_FILE_PERMISSION,
- provider.GetPermissionPolicy(
- CreateFileSystemURL(extension, "removable/foo1", mount_points.get()),
- kPermission));
- EXPECT_EQ(
- fileapi::FILE_PERMISSION_USE_FILE_PERMISSION,
- provider.GetPermissionPolicy(
- CreateFileSystemURL(extension, "system/foo1",
- system_mount_points.get()),
- kPermission));
-
- // The extension cannot access new mount points.
- // TODO(tbarzic): This should probably be changed.
- ASSERT_TRUE(mount_points->RegisterFileSystem(
- "test",
- fileapi::kFileSystemTypeNativeLocal,
- base::FilePath(FPL("/foo/test"))));
- EXPECT_EQ(
- fileapi::FILE_PERMISSION_ALWAYS_DENY,
- provider.GetPermissionPolicy(
- CreateFileSystemURL(extension, "test_/foo", mount_points.get()),
- kPermission));
-
- provider.RevokeAccessForExtension(extension);
- EXPECT_EQ(
- fileapi::FILE_PERMISSION_ALWAYS_DENY,
- provider.GetPermissionPolicy(
- CreateFileSystemURL(extension, "removable/foo", mount_points.get()),
- kPermission));
-
- fileapi::FileSystemURL internal_url = FileSystemURL::CreateForTest(
- GURL("chrome://foo"),
- fileapi::kFileSystemTypeExternal,
- base::FilePath(FPL("removable/")));
- // Internal WebUI should have full access.
- EXPECT_EQ(
- fileapi::FILE_PERMISSION_ALWAYS_ALLOW,
- provider.GetPermissionPolicy(internal_url, kPermission));
-}
-
-TEST(CrosMountPointProvider, GetVirtualPathConflictWithSystemPoints) {
- scoped_refptr<quota::MockSpecialStoragePolicy> storage_policy =
- new quota::MockSpecialStoragePolicy();
- scoped_refptr<fileapi::ExternalMountPoints> mount_points(
- fileapi::ExternalMountPoints::CreateRefCounted());
- scoped_refptr<fileapi::ExternalMountPoints> system_mount_points(
- fileapi::ExternalMountPoints::CreateRefCounted());
- chromeos::CrosMountPointProvider provider(storage_policy,
- mount_points.get(),
- system_mount_points.get());
-
- const fileapi::FileSystemType type = fileapi::kFileSystemTypeNativeLocal;
-
- // Provider specific mount points.
- ASSERT_TRUE(
- mount_points->RegisterFileSystem("b", type, base::FilePath(FPL("/a/b"))));
- ASSERT_TRUE(
- mount_points->RegisterFileSystem("y", type, base::FilePath(FPL("/z/y"))));
- ASSERT_TRUE(
- mount_points->RegisterFileSystem("n", type, base::FilePath(FPL("/m/n"))));
-
- // System mount points
- ASSERT_TRUE(system_mount_points->RegisterFileSystem(
- "gb", type, base::FilePath(FPL("/a/b"))));
- ASSERT_TRUE(
- system_mount_points->RegisterFileSystem(
- "gz", type, base::FilePath(FPL("/z"))));
- ASSERT_TRUE(system_mount_points->RegisterFileSystem(
- "gp", type, base::FilePath(FPL("/m/n/o/p"))));
-
- struct TestCase {
- const base::FilePath::CharType* const local_path;
- bool success;
- const base::FilePath::CharType* const virtual_path;
- };
-
- const TestCase kTestCases[] = {
- // Same paths in both mount points.
- { FPL("/a/b/c/d"), true, FPL("b/c/d") },
- // System mount points path more specific.
- { FPL("/m/n/o/p/r/s"), true, FPL("n/o/p/r/s") },
- // System mount points path less specific.
- { FPL("/z/y/x"), true, FPL("y/x") },
- // Only system mount points path matches.
- { FPL("/z/q/r/s"), true, FPL("gz/q/r/s") },
- // No match.
- { FPL("/foo/xxx"), false, FPL("") },
- };
-
- for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestCases); ++i) {
- // Initialize virtual path with a value.
- base::FilePath virtual_path(FPL("/mount"));
- base::FilePath local_path(kTestCases[i].local_path);
- EXPECT_EQ(kTestCases[i].success,
- provider.GetVirtualPath(local_path, &virtual_path))
- << "Resolving " << kTestCases[i].local_path;
-
- // There are no guarantees for |virtual_path| value if |GetVirtualPath|
- // fails.
- if (!kTestCases[i].success)
- continue;
-
- base::FilePath expected_virtual_path(kTestCases[i].virtual_path);
- EXPECT_EQ(expected_virtual_path, virtual_path)
- << "Resolving " << kTestCases[i].local_path;
- }
-}
-
-} // namespace

Powered by Google App Engine
This is Rietveld 408576698