diff options
author | nhiroki@chromium.org <nhiroki@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-23 14:11:45 +0000 |
---|---|---|
committer | nhiroki@chromium.org <nhiroki@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-23 14:11:45 +0000 |
commit | ffd90a932e659527d5c3dd298c5d82953aa0b1eb (patch) | |
tree | 29b4b4ab233ffc8ec019005a80312fd96622c1bb /content/browser/fileapi/file_system_context_unittest.cc | |
parent | 7595f1c885a0b6d4294e9b605c7b1af1017d42f6 (diff) | |
download | chromium_src-ffd90a932e659527d5c3dd298c5d82953aa0b1eb.zip chromium_src-ffd90a932e659527d5c3dd298c5d82953aa0b1eb.tar.gz chromium_src-ffd90a932e659527d5c3dd298c5d82953aa0b1eb.tar.bz2 |
FileAPI: Wire up between PluginPrivateFileSystemBackend and FileSystemContext
- FileSystemContext retains PluginPrivateFileSystemBackend object.
- The context refuses to serve an URL request for a file in isolated filesystems.
BUG=286240
TEST=content_unittests --gtest_filter=PluginPrivateFileSystemBackendTest.*
TEST=content_unittests --gtest_filter=FileSystemContextTest.CanServeURLRequest
Review URL: https://codereview.chromium.org/34643002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@230412 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/fileapi/file_system_context_unittest.cc')
-rw-r--r-- | content/browser/fileapi/file_system_context_unittest.cc | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/content/browser/fileapi/file_system_context_unittest.cc b/content/browser/fileapi/file_system_context_unittest.cc index 18c6122..63365dc 100644 --- a/content/browser/fileapi/file_system_context_unittest.cc +++ b/content/browser/fileapi/file_system_context_unittest.cc @@ -324,6 +324,44 @@ TEST_F(FileSystemContextTest, CrackFileSystemURL) { kIsolatedFileSystemID); } +TEST_F(FileSystemContextTest, CanServeURLRequest) { + scoped_refptr<ExternalMountPoints> external_mount_points( + ExternalMountPoints::CreateRefCounted()); + scoped_refptr<FileSystemContext> context( + CreateFileSystemContextForTest(external_mount_points.get())); + + // A request for a sandbox mount point should be served. + FileSystemURL cracked_url = + context->CrackURL(CreateRawFileSystemURL("persistent", "pers_mount")); + EXPECT_EQ(kFileSystemTypePersistent, cracked_url.mount_type()); + EXPECT_TRUE(context->CanServeURLRequest(cracked_url)); + + // A request for an isolated mount point should NOT be served. + std::string isolated_fs_name = "root"; + std::string isolated_fs_id = + IsolatedContext::GetInstance()->RegisterFileSystemForPath( + kFileSystemTypeNativeLocal, + base::FilePath(DRIVE FPL("/test/isolated/root")), + &isolated_fs_name); + cracked_url = context->CrackURL( + CreateRawFileSystemURL("isolated", isolated_fs_id)); + EXPECT_EQ(kFileSystemTypeIsolated, cracked_url.mount_type()); + EXPECT_FALSE(context->CanServeURLRequest(cracked_url)); + + // A request for an external mount point should be served. + const std::string kExternalMountName = "ext_mount"; + ASSERT_TRUE(ExternalMountPoints::GetSystemInstance()->RegisterFileSystem( + kExternalMountName, kFileSystemTypeDrive, base::FilePath())); + cracked_url = context->CrackURL( + CreateRawFileSystemURL("external", kExternalMountName)); + EXPECT_EQ(kFileSystemTypeExternal, cracked_url.mount_type()); + EXPECT_TRUE(context->CanServeURLRequest(cracked_url)); + + ExternalMountPoints::GetSystemInstance()->RevokeFileSystem( + kExternalMountName); + IsolatedContext::GetInstance()->RevokeFileSystem(isolated_fs_id); +} + } // namespace } // namespace fileapi |