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

Unified Diff: content/browser/fileapi/plugin_private_file_system_backend_unittest.cc

Issue 579083004: FileSystem: Modify ObfucatedFileUtil to delete contents of the plugin private filesystem (Closed) Base URL: http://chromium.googlesource.com/chromium/src.git@master
Patch Set: review fix Created 6 years, 1 month 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: content/browser/fileapi/plugin_private_file_system_backend_unittest.cc
diff --git a/content/browser/fileapi/plugin_private_file_system_backend_unittest.cc b/content/browser/fileapi/plugin_private_file_system_backend_unittest.cc
index 61de643b8a0ae84fb68c089ad170c8e0994c1db5..ef88fed2f83cd302111c5105af6af6b25060c06b 100644
--- a/content/browser/fileapi/plugin_private_file_system_backend_unittest.cc
+++ b/content/browser/fileapi/plugin_private_file_system_backend_unittest.cc
@@ -28,7 +28,8 @@ namespace content {
namespace {
-const GURL kOrigin("http://www.example.com");
+const GURL kOrigin1("http://www.example.com");
+const GURL kOrigin2("https://www.example.com");
const std::string kPlugin1("plugin1");
const std::string kPlugin2("plugin2");
const storage::FileSystemType kType = storage::kFileSystemTypePluginPrivate;
@@ -72,14 +73,16 @@ class PluginPrivateFileSystemBackendTest : public testing::Test {
base::ScopedTempDir data_dir_;
base::MessageLoop message_loop_;
scoped_refptr<FileSystemContext> context_;
- std::string filesystem_id_;
};
+// TODO(kinuko,nhiroki): There are a lot of duplicate code in these tests. Write
+// helper functions to simplify the tests.
+
TEST_F(PluginPrivateFileSystemBackendTest, OpenFileSystemBasic) {
const std::string filesystem_id1 = RegisterFileSystem();
base::File::Error error = base::File::FILE_ERROR_FAILED;
backend()->OpenPrivateFileSystem(
- kOrigin,
+ kOrigin1,
kType,
filesystem_id1,
kPlugin1,
@@ -92,7 +95,7 @@ TEST_F(PluginPrivateFileSystemBackendTest, OpenFileSystemBasic) {
const std::string filesystem_id2 = RegisterFileSystem();
error = base::File::FILE_ERROR_FAILED;
backend()->OpenPrivateFileSystem(
- kOrigin,
+ kOrigin1,
kType,
filesystem_id2,
kPlugin1,
@@ -102,7 +105,7 @@ TEST_F(PluginPrivateFileSystemBackendTest, OpenFileSystemBasic) {
ASSERT_EQ(base::File::FILE_OK, error);
const GURL root_url(storage::GetIsolatedFileSystemRootURIString(
- kOrigin, filesystem_id1, kRootName));
+ kOrigin1, filesystem_id1, kRootName));
FileSystemURL file = CreateURL(root_url, "foo");
base::FilePath platform_path;
EXPECT_EQ(base::File::FILE_OK,
@@ -119,7 +122,7 @@ TEST_F(PluginPrivateFileSystemBackendTest, PluginIsolation) {
const std::string filesystem_id1 = RegisterFileSystem();
base::File::Error error = base::File::FILE_ERROR_FAILED;
backend()->OpenPrivateFileSystem(
- kOrigin,
+ kOrigin1,
kType,
filesystem_id1,
kPlugin1,
@@ -131,7 +134,7 @@ TEST_F(PluginPrivateFileSystemBackendTest, PluginIsolation) {
const std::string filesystem_id2 = RegisterFileSystem();
error = base::File::FILE_ERROR_FAILED;
backend()->OpenPrivateFileSystem(
- kOrigin,
+ kOrigin1,
kType,
filesystem_id2,
kPlugin2,
@@ -142,9 +145,8 @@ TEST_F(PluginPrivateFileSystemBackendTest, PluginIsolation) {
// Create 'foo' in kPlugin1.
const GURL root_url1(storage::GetIsolatedFileSystemRootURIString(
- kOrigin, filesystem_id1, kRootName));
+ kOrigin1, filesystem_id1, kRootName));
FileSystemURL file1 = CreateURL(root_url1, "foo");
- base::FilePath platform_path;
EXPECT_EQ(base::File::FILE_OK,
AsyncFileTestHelper::CreateFile(context_.get(), file1));
EXPECT_TRUE(AsyncFileTestHelper::FileExists(
@@ -152,13 +154,137 @@ TEST_F(PluginPrivateFileSystemBackendTest, PluginIsolation) {
// See the same path is not available in kPlugin2.
const GURL root_url2(storage::GetIsolatedFileSystemRootURIString(
- kOrigin, filesystem_id2, kRootName));
+ kOrigin1, filesystem_id2, kRootName));
FileSystemURL file2 = CreateURL(root_url2, "foo");
EXPECT_FALSE(AsyncFileTestHelper::FileExists(
context_.get(), file2, AsyncFileTestHelper::kDontCheckSize));
}
-// TODO(kinuko,nhiroki): also test if DeleteOriginDataOnFileThread
-// works fine when there's multiple plugin partitions.
+TEST_F(PluginPrivateFileSystemBackendTest, OriginIsolation) {
+ // Open filesystem for kOrigin1 and kOrigin2.
+ const std::string filesystem_id1 = RegisterFileSystem();
+ base::File::Error error = base::File::FILE_ERROR_FAILED;
+ backend()->OpenPrivateFileSystem(
+ kOrigin1,
+ kType,
+ filesystem_id1,
+ kPlugin1,
+ storage::OPEN_FILE_SYSTEM_CREATE_IF_NONEXISTENT,
+ base::Bind(&DidOpenFileSystem, &error));
+ base::RunLoop().RunUntilIdle();
+ ASSERT_EQ(base::File::FILE_OK, error);
+
+ const std::string filesystem_id2 = RegisterFileSystem();
+ error = base::File::FILE_ERROR_FAILED;
+ backend()->OpenPrivateFileSystem(
+ kOrigin2,
+ kType,
+ filesystem_id2,
+ kPlugin1,
+ storage::OPEN_FILE_SYSTEM_CREATE_IF_NONEXISTENT,
+ base::Bind(&DidOpenFileSystem, &error));
+ base::RunLoop().RunUntilIdle();
+ ASSERT_EQ(base::File::FILE_OK, error);
+
+ // Create 'foo' in kOrigin1.
+ const GURL root_url1(storage::GetIsolatedFileSystemRootURIString(
+ kOrigin1, filesystem_id1, kRootName));
+ FileSystemURL file1 = CreateURL(root_url1, "foo");
+ EXPECT_EQ(base::File::FILE_OK,
+ AsyncFileTestHelper::CreateFile(context_.get(), file1));
+ EXPECT_TRUE(AsyncFileTestHelper::FileExists(
+ context_.get(), file1, AsyncFileTestHelper::kDontCheckSize));
+
+ // See the same path is not available in kOrigin2.
+ const GURL root_url2(storage::GetIsolatedFileSystemRootURIString(
+ kOrigin2, filesystem_id2, kRootName));
+ FileSystemURL file2 = CreateURL(root_url2, "foo");
+ EXPECT_FALSE(AsyncFileTestHelper::FileExists(
+ context_.get(), file2, AsyncFileTestHelper::kDontCheckSize));
+}
+
+TEST_F(PluginPrivateFileSystemBackendTest, DeleteOriginDirectory) {
+ // Open filesystem for kOrigin1 and kOrigin2.
+ const std::string filesystem_id1 = RegisterFileSystem();
+ base::File::Error error = base::File::FILE_ERROR_FAILED;
+ backend()->OpenPrivateFileSystem(
+ kOrigin1,
+ kType,
+ filesystem_id1,
+ kPlugin1,
+ storage::OPEN_FILE_SYSTEM_CREATE_IF_NONEXISTENT,
+ base::Bind(&DidOpenFileSystem, &error));
+ base::RunLoop().RunUntilIdle();
+ ASSERT_EQ(base::File::FILE_OK, error);
+
+ const std::string filesystem_id2 = RegisterFileSystem();
+ error = base::File::FILE_ERROR_FAILED;
+ backend()->OpenPrivateFileSystem(
+ kOrigin2,
+ kType,
+ filesystem_id2,
+ kPlugin1,
+ storage::OPEN_FILE_SYSTEM_CREATE_IF_NONEXISTENT,
+ base::Bind(&DidOpenFileSystem, &error));
+ base::RunLoop().RunUntilIdle();
+ ASSERT_EQ(base::File::FILE_OK, error);
+
+ // Create 'foo' in kOrigin1.
+ const GURL root_url1(storage::GetIsolatedFileSystemRootURIString(
+ kOrigin1, filesystem_id1, kRootName));
+ FileSystemURL file1 = CreateURL(root_url1, "foo");
+ EXPECT_EQ(base::File::FILE_OK,
+ AsyncFileTestHelper::CreateFile(context_.get(), file1));
+ EXPECT_TRUE(AsyncFileTestHelper::FileExists(
+ context_.get(), file1, AsyncFileTestHelper::kDontCheckSize));
+
+ // Create 'foo' in kOrigin2.
+ const GURL root_url2(storage::GetIsolatedFileSystemRootURIString(
+ kOrigin2, filesystem_id2, kRootName));
+ FileSystemURL file2 = CreateURL(root_url2, "foo");
+ EXPECT_EQ(base::File::FILE_OK,
+ AsyncFileTestHelper::CreateFile(context_.get(), file2));
+ EXPECT_TRUE(AsyncFileTestHelper::FileExists(
+ context_.get(), file2, AsyncFileTestHelper::kDontCheckSize));
+
+ // Delete data for kOrigin1.
+ error = backend()->DeleteOriginDataOnFileTaskRunner(
+ context_.get(), NULL, kOrigin1, kType);
+ EXPECT_EQ(base::File::FILE_OK, error);
+
+ // Confirm 'foo' in kOrigin1 is deleted.
+ EXPECT_FALSE(AsyncFileTestHelper::FileExists(
+ context_.get(), file1, AsyncFileTestHelper::kDontCheckSize));
+
+ // Confirm 'foo' in kOrigin2 is NOT deleted.
+ EXPECT_TRUE(AsyncFileTestHelper::FileExists(
+ context_.get(), file2, AsyncFileTestHelper::kDontCheckSize));
+
+ // Re-open filesystem for kOrigin1.
+ const std::string filesystem_id3 = RegisterFileSystem();
+ error = base::File::FILE_ERROR_FAILED;
+ backend()->OpenPrivateFileSystem(
+ kOrigin1,
+ kType,
+ filesystem_id3,
+ kPlugin1,
+ storage::OPEN_FILE_SYSTEM_CREATE_IF_NONEXISTENT,
+ base::Bind(&DidOpenFileSystem, &error));
+ base::RunLoop().RunUntilIdle();
+ ASSERT_EQ(base::File::FILE_OK, error);
+
+ // Re-create 'foo' in kOrigin1.
+ const GURL root_url3(storage::GetIsolatedFileSystemRootURIString(
+ kOrigin1, filesystem_id3, kRootName));
+ FileSystemURL file3 = CreateURL(root_url3, "foo");
+ EXPECT_EQ(base::File::FILE_OK,
+ AsyncFileTestHelper::CreateFile(context_.get(), file3));
+ EXPECT_TRUE(AsyncFileTestHelper::FileExists(
+ context_.get(), file3, AsyncFileTestHelper::kDontCheckSize));
+
+ // Confirm 'foo' in kOrigin1 is re-created.
+ EXPECT_TRUE(AsyncFileTestHelper::FileExists(
+ context_.get(), file3, AsyncFileTestHelper::kDontCheckSize));
+}
} // namespace content
« no previous file with comments | « content/browser/fileapi/obfuscated_file_util_unittest.cc ('k') | storage/browser/fileapi/obfuscated_file_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698