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

Side by Side Diff: webkit/fileapi/obfuscated_file_system_file_util_unittest.cc

Issue 7042029: Code to migrate a single directory from the old sandbox to the new. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Attempted windows fix. Created 9 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « webkit/fileapi/obfuscated_file_system_file_util.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <set> 5 #include <set>
6 #include <string> 6 #include <string>
7 7
8 #include "base/file_path.h" 8 #include "base/file_path.h"
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 {true, "dir0/file0", "dir1/file0", false}, 59 {true, "dir0/file0", "dir1/file0", false},
60 {false, "dir0/file0", "dir1/file0", false}, 60 {false, "dir0/file0", "dir1/file0", false},
61 {true, "dir0/file0", "dir1/file0", true}, 61 {true, "dir0/file0", "dir1/file0", true},
62 {false, "dir0/file0", "dir1/file0", true}, 62 {false, "dir0/file0", "dir1/file0", true},
63 {true, "dir0/file0", "dir1/file1", false}, 63 {true, "dir0/file0", "dir1/file1", false},
64 {false, "dir0/file0", "dir1/file1", false}, 64 {false, "dir0/file0", "dir1/file1", false},
65 {true, "dir0/file0", "dir1/file1", true}, 65 {true, "dir0/file0", "dir1/file1", true},
66 {false, "dir0/file0", "dir1/file1", true}, 66 {false, "dir0/file0", "dir1/file1", true},
67 }; 67 };
68 68
69 struct MigrationTestCaseRecord {
70 bool is_directory;
71 const FilePath::CharType path[64];
72 int64 data_file_size;
73 };
74
75 const MigrationTestCaseRecord kMigrationTestCases[] = {
76 {true, FILE_PATH_LITERAL("dir a"), 0},
77 {true, FILE_PATH_LITERAL("dir a/dir a"), 0},
78 {true, FILE_PATH_LITERAL("dir a/dir d"), 0},
79 {true, FILE_PATH_LITERAL("dir a/dir d/dir e"), 0},
80 {true, FILE_PATH_LITERAL("dir a/dir d/dir e/dir f"), 0},
81 {true, FILE_PATH_LITERAL("dir a/dir d/dir e/dir g"), 0},
82 {true, FILE_PATH_LITERAL("dir a/dir d/dir e/dir h"), 0},
83 {true, FILE_PATH_LITERAL("dir b"), 0},
84 {true, FILE_PATH_LITERAL("dir b/dir a"), 0},
85 {true, FILE_PATH_LITERAL("dir c"), 0},
86 {false, FILE_PATH_LITERAL("file 0"), 38},
87 {false, FILE_PATH_LITERAL("file 2"), 60},
88 {false, FILE_PATH_LITERAL("file 3"), 0},
89 {false, FILE_PATH_LITERAL("dir a/file 0"), 39},
90 {false, FILE_PATH_LITERAL("dir a/dir d/dir e/dir g/file 0"), 40},
91 {false, FILE_PATH_LITERAL("dir a/dir d/dir e/dir g/file 1"), 41},
92 {false, FILE_PATH_LITERAL("dir a/dir d/dir e/dir g/file 2"), 42},
93 {false, FILE_PATH_LITERAL("dir a/dir d/dir e/dir g/file 3"), 50},
94 };
95
69 } // namespace (anonymous) 96 } // namespace (anonymous)
70 97
71 // TODO(ericu): The vast majority of this and the other FSFU subclass tests 98 // TODO(ericu): The vast majority of this and the other FSFU subclass tests
72 // could theoretically be shared. It would basically be a FSFU interface 99 // could theoretically be shared. It would basically be a FSFU interface
73 // compliance test, and only the subclass-specific bits that look into the 100 // compliance test, and only the subclass-specific bits that look into the
74 // implementation would need to be written per-subclass. 101 // implementation would need to be written per-subclass.
75 class ObfuscatedFileSystemFileUtilTest : public testing::Test { 102 class ObfuscatedFileSystemFileUtilTest : public testing::Test {
76 public: 103 public:
77 ObfuscatedFileSystemFileUtilTest() { 104 ObfuscatedFileSystemFileUtilTest() {
78 } 105 }
(...skipping 14 matching lines...) Expand all
93 context->set_dest_type(kFileSystemTypeTemporary); 120 context->set_dest_type(kFileSystemTypeTemporary);
94 context->set_allowed_bytes_growth(1024 * 1024); 121 context->set_allowed_bytes_growth(1024 * 1024);
95 122
96 return context; 123 return context;
97 } 124 }
98 125
99 ObfuscatedFileSystemFileUtil* ofsfu() { 126 ObfuscatedFileSystemFileUtil* ofsfu() {
100 return obfuscated_file_system_file_util_.get(); 127 return obfuscated_file_system_file_util_.get();
101 } 128 }
102 129
130 const FilePath& test_directory() const {
131 return data_dir_.path();
132 }
133
103 int64 GetSize(const FilePath& path) { 134 int64 GetSize(const FilePath& path) {
104 int64 size; 135 int64 size;
105 EXPECT_TRUE(file_util::GetFileSize(path, &size)); 136 EXPECT_TRUE(file_util::GetFileSize(path, &size));
106 return size; 137 return size;
107 } 138 }
108 139
109 void CheckFileAndCloseHandle( 140 void CheckFileAndCloseHandle(
110 const FilePath& virtual_path, PlatformFile file_handle) { 141 const FilePath& virtual_path, PlatformFile file_handle) {
111 scoped_ptr<FileSystemOperationContext> context(NewContext()); 142 scoped_ptr<FileSystemOperationContext> context(NewContext());
112 FilePath local_path; 143 FilePath local_path;
(...skipping 633 matching lines...) Expand 10 before | Expand all | Expand 10 after
746 EXPECT_TRUE(ofsfu()->DirectoryExists(context.get(), src_path)); 777 EXPECT_TRUE(ofsfu()->DirectoryExists(context.get(), src_path));
747 context.reset(NewContext()); 778 context.reset(NewContext());
748 EXPECT_TRUE(ofsfu()->DirectoryExists(context.get(), dest_path)); 779 EXPECT_TRUE(ofsfu()->DirectoryExists(context.get(), dest_path));
749 context.reset(NewContext()); 780 context.reset(NewContext());
750 recursive = true; 781 recursive = true;
751 ASSERT_EQ(base::PLATFORM_FILE_OK, 782 ASSERT_EQ(base::PLATFORM_FILE_OK,
752 ofsfu()->Delete(context.get(), dest_path, recursive)); 783 ofsfu()->Delete(context.get(), dest_path, recursive));
753 context.reset(NewContext()); 784 context.reset(NewContext());
754 EXPECT_FALSE(ofsfu()->DirectoryExists(context.get(), dest_path)); 785 EXPECT_FALSE(ofsfu()->DirectoryExists(context.get(), dest_path));
755 } 786 }
787
788 TEST_F(ObfuscatedFileSystemFileUtilTest, TestMigration) {
789 ScopedTempDir source_dir;
790 ASSERT_TRUE(source_dir.CreateUniqueTempDir());
791 FilePath root_path = source_dir.path().AppendASCII("chrome-pLmnMWXE7NzTFRsn");
792 ASSERT_TRUE(file_util::CreateDirectory(root_path));
793
794 for (size_t i = 0; i < arraysize(kMigrationTestCases); ++i) {
795 SCOPED_TRACE(testing::Message() << "Creating kMigrationTestPath " << i);
796 const MigrationTestCaseRecord& test_case = kMigrationTestCases[i];
797 FilePath local_src_path = root_path.Append(test_case.path);
798 if (test_case.is_directory) {
799 ASSERT_TRUE(
800 file_util::CreateDirectory(local_src_path));
801 } else {
802 base::PlatformFileError error_code;
803 bool created = false;
804 int file_flags = base::PLATFORM_FILE_CREATE | base::PLATFORM_FILE_WRITE;
805 base::PlatformFile file_handle =
806 base::CreatePlatformFile(
807 local_src_path, file_flags, &created, &error_code);
808 EXPECT_TRUE(created);
809 ASSERT_EQ(base::PLATFORM_FILE_OK, error_code);
810 ASSERT_TRUE(
811 base::TruncatePlatformFile(file_handle, test_case.data_file_size));
812 EXPECT_TRUE(base::ClosePlatformFile(file_handle));
813 }
814 }
815
816 const GURL origin_url("http://example.com");
817 fileapi::FileSystemType type = kFileSystemTypeTemporary;
818 EXPECT_TRUE(ofsfu()->MigrateFromOldSandbox(origin_url, type, root_path));
819
820 FilePath new_root =
821 test_directory().AppendASCII("000").Append(
822 ofsfu()->GetDirectoryNameForType(type)).AppendASCII("Legacy");
823 for (size_t i = 0; i < arraysize(kMigrationTestCases); ++i) {
824 SCOPED_TRACE(testing::Message() << "Validating kMigrationTestPath " << i);
825 const MigrationTestCaseRecord& test_case = kMigrationTestCases[i];
826 FilePath local_data_path = new_root.Append(test_case.path);
827 #if defined(OS_WIN)
828 local_data_path = local_data_path.NormalizeWindowsPathSeparators();
829 #endif
830 scoped_ptr<FileSystemOperationContext> context(NewContext());
831 base::PlatformFileInfo ofsfu_file_info;
832 FilePath data_path;
833 SCOPED_TRACE(testing::Message() << "Path is " << test_case.path);
834 EXPECT_EQ(base::PLATFORM_FILE_OK,
835 ofsfu()->GetFileInfo(context.get(), FilePath(test_case.path),
836 &ofsfu_file_info, &data_path));
837 if (test_case.is_directory) {
838 EXPECT_TRUE(ofsfu_file_info.is_directory);
839 } else {
840 base::PlatformFileInfo platform_file_info;
841 SCOPED_TRACE(testing::Message() << "local_data_path is " <<
842 local_data_path.value());
843 SCOPED_TRACE(testing::Message() << "data_path is " << data_path.value());
844 ASSERT_TRUE(file_util::GetFileInfo(local_data_path, &platform_file_info));
845 EXPECT_EQ(test_case.data_file_size, platform_file_info.size);
846 EXPECT_FALSE(platform_file_info.is_directory);
847 scoped_ptr<FileSystemOperationContext> context(NewContext());
848 EXPECT_EQ(local_data_path, data_path);
849 EXPECT_EQ(platform_file_info.size, ofsfu_file_info.size);
850 EXPECT_FALSE(ofsfu_file_info.is_directory);
851 }
852 }
853 }
OLDNEW
« no previous file with comments | « webkit/fileapi/obfuscated_file_system_file_util.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698