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

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

Issue 7066033: Enable cross-filesystem moves and copies. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Readability tweak from Michael 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
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 <algorithm> 5 #include <algorithm>
6 #include <set> 6 #include <set>
7 #include <string> 7 #include <string>
8 8
9 #include "base/file_path.h" 9 #include "base/file_path.h"
10 #include "base/file_util.h" 10 #include "base/file_util.h"
(...skipping 18 matching lines...) Expand all
29 #elif defined(OS_WIN) 29 #elif defined(OS_WIN)
30 result = base::SysUTF8ToWide(str); 30 result = base::SysUTF8ToWide(str);
31 #endif 31 #endif
32 return FilePath(result); 32 return FilePath(result);
33 } 33 }
34 34
35 bool FileExists(const FilePath& path) { 35 bool FileExists(const FilePath& path) {
36 return file_util::PathExists(path) && !file_util::DirectoryExists(path); 36 return file_util::PathExists(path) && !file_util::DirectoryExists(path);
37 } 37 }
38 38
39 int64 GetSize(const FilePath& path) {
40 int64 size;
41 EXPECT_TRUE(file_util::GetFileSize(path, &size));
42 return size;
43 }
44
39 // After a move, the dest exists and the source doesn't. 45 // After a move, the dest exists and the source doesn't.
40 // After a copy, both source and dest exist. 46 // After a copy, both source and dest exist.
41 struct CopyMoveTestCaseRecord { 47 struct CopyMoveTestCaseRecord {
42 bool is_copy_not_move; 48 bool is_copy_not_move;
43 const char source_path[64]; 49 const char source_path[64];
44 const char dest_path[64]; 50 const char dest_path[64];
45 bool cause_overwrite; 51 bool cause_overwrite;
46 }; 52 };
47 53
48 const CopyMoveTestCaseRecord kCopyMoveTestCases[] = { 54 const CopyMoveTestCaseRecord kCopyMoveTestCases[] = {
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 } 156 }
151 157
152 const GURL& origin_url() const { 158 const GURL& origin_url() const {
153 return origin_; 159 return origin_;
154 } 160 }
155 161
156 fileapi::FileSystemType type() const { 162 fileapi::FileSystemType type() const {
157 return type_; 163 return type_;
158 } 164 }
159 165
160 int64 GetSize(const FilePath& path) {
161 int64 size;
162 EXPECT_TRUE(file_util::GetFileSize(path, &size));
163 return size;
164 }
165
166 void CheckFileAndCloseHandle( 166 void CheckFileAndCloseHandle(
167 const FilePath& virtual_path, PlatformFile file_handle) { 167 const FilePath& virtual_path, PlatformFile file_handle) {
168 scoped_ptr<FileSystemOperationContext> context(NewContext()); 168 scoped_ptr<FileSystemOperationContext> context(NewContext());
169 FilePath local_path; 169 FilePath local_path;
170 EXPECT_EQ(base::PLATFORM_FILE_OK, ofsfu()->GetLocalFilePath( 170 EXPECT_EQ(base::PLATFORM_FILE_OK, ofsfu()->GetLocalFilePath(
171 context.get(), virtual_path, &local_path)); 171 context.get(), virtual_path, &local_path));
172 172
173 base::PlatformFileInfo file_info0; 173 base::PlatformFileInfo file_info0;
174 FilePath data_path; 174 FilePath data_path;
175 EXPECT_EQ(base::PLATFORM_FILE_OK, ofsfu()->GetFileInfo( 175 EXPECT_EQ(base::PLATFORM_FILE_OK, ofsfu()->GetFileInfo(
176 context.get(), virtual_path, &file_info0, &data_path)); 176 context.get(), virtual_path, &file_info0, &data_path));
177 EXPECT_EQ(data_path, local_path); 177 EXPECT_EQ(data_path, local_path);
178 EXPECT_TRUE(FileExists(data_path)); 178 EXPECT_TRUE(FileExists(data_path));
179 EXPECT_EQ(0, GetSize(data_path)); 179 EXPECT_EQ(0, GetSize(data_path));
180 180
181 const char data[] = "test data"; 181 const char data[] = "test data";
182 const int length = arraysize(data) - 1; 182 const int length = arraysize(data) - 1;
183 183
184 if (base::kInvalidPlatformFileValue == file_handle) { 184 if (base::kInvalidPlatformFileValue == file_handle) {
185 bool created = true; 185 bool created = true;
186 PlatformFileError error; 186 PlatformFileError error;
187 file_handle = base::CreatePlatformFile( 187 file_handle = base::CreatePlatformFile(
188 data_path, 188 data_path,
189 base::PLATFORM_FILE_OPEN | base::PLATFORM_FILE_WRITE, 189 base::PLATFORM_FILE_OPEN | base::PLATFORM_FILE_WRITE,
190 &created, 190 &created,
191 &error); 191 &error);
192 ASSERT_NE(base::kInvalidPlatformFileValue, file_handle);
192 ASSERT_EQ(base::PLATFORM_FILE_OK, error); 193 ASSERT_EQ(base::PLATFORM_FILE_OK, error);
193 EXPECT_FALSE(created); 194 EXPECT_FALSE(created);
194 } 195 }
195 ASSERT_EQ(length, base::WritePlatformFile(file_handle, 0, data, length)); 196 ASSERT_EQ(length, base::WritePlatformFile(file_handle, 0, data, length));
196 EXPECT_TRUE(base::ClosePlatformFile(file_handle)); 197 EXPECT_TRUE(base::ClosePlatformFile(file_handle));
197 198
198 base::PlatformFileInfo file_info1; 199 base::PlatformFileInfo file_info1;
199 EXPECT_EQ(length, GetSize(data_path)); 200 EXPECT_EQ(length, GetSize(data_path));
200 context.reset(NewContext()); 201 context.reset(NewContext());
201 EXPECT_EQ(base::PLATFORM_FILE_OK, ofsfu()->GetFileInfo( 202 EXPECT_EQ(base::PLATFORM_FILE_OK, ofsfu()->GetFileInfo(
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
333 last_modified_time += base::TimeDelta::FromHours(1); 334 last_modified_time += base::TimeDelta::FromHours(1);
334 EXPECT_EQ(base::PLATFORM_FILE_OK, 335 EXPECT_EQ(base::PLATFORM_FILE_OK,
335 ofsfu()->Touch( 336 ofsfu()->Touch(
336 context.get(), path, last_access_time, last_modified_time)); 337 context.get(), path, last_access_time, last_modified_time));
337 context.reset(NewContext()); 338 context.reset(NewContext());
338 EXPECT_EQ(base::PLATFORM_FILE_OK, ofsfu()->GetFileInfo( 339 EXPECT_EQ(base::PLATFORM_FILE_OK, ofsfu()->GetFileInfo(
339 context.get(), path, &file_info, &local_path)); 340 context.get(), path, &file_info, &local_path));
340 EXPECT_EQ(file_info.last_modified.ToTimeT(), last_modified_time.ToTimeT()); 341 EXPECT_EQ(file_info.last_modified.ToTimeT(), last_modified_time.ToTimeT());
341 } 342 }
342 343
344 void TestCopyInForeignFileHelper(bool overwrite) {
345 ScopedTempDir source_dir;
346 ASSERT_TRUE(source_dir.CreateUniqueTempDir());
347 FilePath root_path = source_dir.path();
348 FilePath src_path = root_path.AppendASCII("file_name");
349 FilePath dest_path(FILE_PATH_LITERAL("new file"));
350 int64 src_file_length = 87;
351
352 base::PlatformFileError error_code;
353 bool created = false;
354 int file_flags = base::PLATFORM_FILE_CREATE | base::PLATFORM_FILE_WRITE;
355 base::PlatformFile file_handle =
356 base::CreatePlatformFile(
357 src_path, file_flags, &created, &error_code);
358 EXPECT_TRUE(created);
359 ASSERT_EQ(base::PLATFORM_FILE_OK, error_code);
360 ASSERT_NE(base::kInvalidPlatformFileValue, file_handle);
361 ASSERT_TRUE(base::TruncatePlatformFile(file_handle, src_file_length));
362 EXPECT_TRUE(base::ClosePlatformFile(file_handle));
363
364 scoped_ptr<FileSystemOperationContext> context;
365
366 if (overwrite) {
367 context.reset(NewContext());
368 EXPECT_EQ(base::PLATFORM_FILE_OK,
369 ofsfu()->EnsureFileExists(context.get(), dest_path, &created));
370 EXPECT_TRUE(created);
371 }
372
373 context.reset(NewContext());
374 EXPECT_EQ(base::PLATFORM_FILE_OK,
375 ofsfu()->CopyInForeignFile(context.get(), src_path, dest_path));
376 context.reset(NewContext());
377 EXPECT_TRUE(ofsfu()->PathExists(context.get(), dest_path));
378 context.reset(NewContext());
379 EXPECT_FALSE(ofsfu()->DirectoryExists(context.get(), dest_path));
380 context.reset(NewContext());
381 base::PlatformFileInfo file_info;
382 FilePath data_path;
383 EXPECT_EQ(base::PLATFORM_FILE_OK, ofsfu()->GetFileInfo(
384 context.get(), dest_path, &file_info, &data_path));
385 EXPECT_NE(data_path, src_path);
386 EXPECT_TRUE(FileExists(data_path));
387 EXPECT_EQ(src_file_length, GetSize(data_path));
388
389 EXPECT_EQ(base::PLATFORM_FILE_OK,
390 ofsfu()->DeleteFile(context.get(), dest_path));
391 }
392
343 private: 393 private:
344 ScopedTempDir data_dir_; 394 ScopedTempDir data_dir_;
345 scoped_refptr<ObfuscatedFileSystemFileUtil> obfuscated_file_system_file_util_; 395 scoped_refptr<ObfuscatedFileSystemFileUtil> obfuscated_file_system_file_util_;
346 GURL origin_; 396 GURL origin_;
347 fileapi::FileSystemType type_; 397 fileapi::FileSystemType type_;
348 FileSystemTestOriginHelper test_helper_; 398 FileSystemTestOriginHelper test_helper_;
349 399
350 DISALLOW_COPY_AND_ASSIGN(ObfuscatedFileSystemFileUtilTest); 400 DISALLOW_COPY_AND_ASSIGN(ObfuscatedFileSystemFileUtilTest);
351 }; 401 };
352 402
(...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after
774 FilePath local_path; 824 FilePath local_path;
775 EXPECT_EQ(base::PLATFORM_FILE_OK, ofsfu()->GetFileInfo( 825 EXPECT_EQ(base::PLATFORM_FILE_OK, ofsfu()->GetFileInfo(
776 context.get(), dest_path, &file_info, &local_path)); 826 context.get(), dest_path, &file_info, &local_path));
777 EXPECT_EQ(kSourceLength, file_info.size); 827 EXPECT_EQ(kSourceLength, file_info.size);
778 828
779 EXPECT_EQ(base::PLATFORM_FILE_OK, 829 EXPECT_EQ(base::PLATFORM_FILE_OK,
780 ofsfu()->DeleteFile(context.get(), dest_path)); 830 ofsfu()->DeleteFile(context.get(), dest_path));
781 } 831 }
782 } 832 }
783 833
834 TEST_F(ObfuscatedFileSystemFileUtilTest, TestCopyInForeignFile) {
835 TestCopyInForeignFileHelper(false /* overwrite */);
836 TestCopyInForeignFileHelper(true /* overwrite */);
837 }
838
784 TEST_F(ObfuscatedFileSystemFileUtilTest, TestEnumerator) { 839 TEST_F(ObfuscatedFileSystemFileUtilTest, TestEnumerator) {
785 scoped_ptr<FileSystemOperationContext> context(NewContext()); 840 scoped_ptr<FileSystemOperationContext> context(NewContext());
786 FilePath src_path = UTF8ToFilePath("source dir"); 841 FilePath src_path = UTF8ToFilePath("source dir");
787 bool exclusive = true; 842 bool exclusive = true;
788 bool recursive = false; 843 bool recursive = false;
789 ASSERT_EQ(base::PLATFORM_FILE_OK, ofsfu()->CreateDirectory( 844 ASSERT_EQ(base::PLATFORM_FILE_OK, ofsfu()->CreateDirectory(
790 context.get(), src_path, exclusive, recursive)); 845 context.get(), src_path, exclusive, recursive));
791 846
792 std::set<FilePath::StringType> files; 847 std::set<FilePath::StringType> files;
793 std::set<FilePath::StringType> directories; 848 std::set<FilePath::StringType> directories;
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
828 ASSERT_TRUE( 883 ASSERT_TRUE(
829 file_util::CreateDirectory(local_src_path)); 884 file_util::CreateDirectory(local_src_path));
830 } else { 885 } else {
831 base::PlatformFileError error_code; 886 base::PlatformFileError error_code;
832 bool created = false; 887 bool created = false;
833 int file_flags = base::PLATFORM_FILE_CREATE | base::PLATFORM_FILE_WRITE; 888 int file_flags = base::PLATFORM_FILE_CREATE | base::PLATFORM_FILE_WRITE;
834 base::PlatformFile file_handle = 889 base::PlatformFile file_handle =
835 base::CreatePlatformFile( 890 base::CreatePlatformFile(
836 local_src_path, file_flags, &created, &error_code); 891 local_src_path, file_flags, &created, &error_code);
837 EXPECT_TRUE(created); 892 EXPECT_TRUE(created);
893 ASSERT_NE(base::kInvalidPlatformFileValue, file_handle);
838 ASSERT_EQ(base::PLATFORM_FILE_OK, error_code); 894 ASSERT_EQ(base::PLATFORM_FILE_OK, error_code);
839 ASSERT_TRUE( 895 ASSERT_TRUE(
840 base::TruncatePlatformFile(file_handle, test_case.data_file_size)); 896 base::TruncatePlatformFile(file_handle, test_case.data_file_size));
841 EXPECT_TRUE(base::ClosePlatformFile(file_handle)); 897 EXPECT_TRUE(base::ClosePlatformFile(file_handle));
842 } 898 }
843 } 899 }
844 900
845 EXPECT_TRUE(ofsfu()->MigrateFromOldSandbox(origin_url(), type(), root_path)); 901 EXPECT_TRUE(ofsfu()->MigrateFromOldSandbox(origin_url(), type(), root_path));
846 902
847 FilePath new_root = 903 FilePath new_root =
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
939 } 995 }
940 EXPECT_TRUE(found); 996 EXPECT_TRUE(found);
941 } 997 }
942 998
943 std::set<GURL> diff; 999 std::set<GURL> diff;
944 std::set_symmetric_difference(origins_expected.begin(), 1000 std::set_symmetric_difference(origins_expected.begin(),
945 origins_expected.end(), origins_found.begin(), origins_found.end(), 1001 origins_expected.end(), origins_found.begin(), origins_found.end(),
946 inserter(diff, diff.begin())); 1002 inserter(diff, diff.begin()));
947 EXPECT_TRUE(diff.empty()); 1003 EXPECT_TRUE(diff.empty());
948 } 1004 }
OLDNEW
« no previous file with comments | « webkit/fileapi/obfuscated_file_system_file_util.cc ('k') | webkit/fileapi/quota_file_util_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698