OLD | NEW |
---|---|
1 // Copyright (c) 2010 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 "build/build_config.h" | 5 #include "build/build_config.h" |
6 | 6 |
7 #if defined(OS_WIN) | 7 #if defined(OS_WIN) |
8 #include <windows.h> | 8 #include <windows.h> |
9 #include <winioctl.h> | 9 #include <winioctl.h> |
10 #include <shellapi.h> | 10 #include <shellapi.h> |
11 #include <shlobj.h> | 11 #include <shlobj.h> |
12 #include <tchar.h> | 12 #include <tchar.h> |
13 | |
14 #include "base/win/scoped_handle.h" | |
brettw
2011/01/07 18:03:46
This shouldn't go here above the rest of the heade
tfarina
2011/01/07 20:11:13
I tried to follow the rule here: http://google-sty
tfarina
2011/01/07 22:23:08
Done.
| |
13 #endif | 15 #endif |
14 | 16 |
15 #include <fstream> | 17 #include <fstream> |
16 #include <set> | 18 #include <set> |
17 | 19 |
18 #include "base/base_paths.h" | 20 #include "base/base_paths.h" |
19 #include "base/file_path.h" | 21 #include "base/file_path.h" |
20 #include "base/file_util.h" | 22 #include "base/file_util.h" |
21 #include "base/path_service.h" | 23 #include "base/path_service.h" |
22 #include "base/scoped_handle.h" | |
23 #include "base/scoped_temp_dir.h" | 24 #include "base/scoped_temp_dir.h" |
24 #include "base/threading/platform_thread.h" | 25 #include "base/threading/platform_thread.h" |
25 #include "base/time.h" | 26 #include "base/time.h" |
26 #include "base/utf_string_conversions.h" | 27 #include "base/utf_string_conversions.h" |
27 #include "testing/gtest/include/gtest/gtest.h" | 28 #include "testing/gtest/include/gtest/gtest.h" |
28 #include "testing/platform_test.h" | 29 #include "testing/platform_test.h" |
29 | 30 |
30 // This macro helps avoid wrapped lines in the test structs. | 31 // This macro helps avoid wrapped lines in the test structs. |
31 #define FPL(x) FILE_PATH_LITERAL(x) | 32 #define FPL(x) FILE_PATH_LITERAL(x) |
32 | 33 |
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
476 | 477 |
477 FilePath sub_long = deep_file.DirName(); | 478 FilePath sub_long = deep_file.DirName(); |
478 ASSERT_TRUE(file_util::CreateDirectory(sub_long)); | 479 ASSERT_TRUE(file_util::CreateDirectory(sub_long)); |
479 CreateTextFile(deep_file, bogus_content); | 480 CreateTextFile(deep_file, bogus_content); |
480 | 481 |
481 FilePath base_b = temp_dir_.path().Append(FPL("base_b")); | 482 FilePath base_b = temp_dir_.path().Append(FPL("base_b")); |
482 ASSERT_TRUE(file_util::CreateDirectory(base_b)); | 483 ASSERT_TRUE(file_util::CreateDirectory(base_b)); |
483 | 484 |
484 FilePath to_sub_a = base_b.Append(FPL("to_sub_a")); | 485 FilePath to_sub_a = base_b.Append(FPL("to_sub_a")); |
485 ASSERT_TRUE(file_util::CreateDirectory(to_sub_a)); | 486 ASSERT_TRUE(file_util::CreateDirectory(to_sub_a)); |
486 ScopedHandle reparse_to_sub_a( | 487 base::win::ScopedHandle reparse_to_sub_a( |
487 ::CreateFile(to_sub_a.value().c_str(), | 488 ::CreateFile(to_sub_a.value().c_str(), |
488 FILE_ALL_ACCESS, | 489 FILE_ALL_ACCESS, |
489 FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, | 490 FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, |
490 NULL, | 491 NULL, |
491 OPEN_EXISTING, | 492 OPEN_EXISTING, |
492 FILE_FLAG_BACKUP_SEMANTICS, // Needed to open a directory. | 493 FILE_FLAG_BACKUP_SEMANTICS, // Needed to open a directory. |
493 NULL)); | 494 NULL)); |
494 ASSERT_TRUE(reparse_to_sub_a.IsValid()); | 495 ASSERT_TRUE(reparse_to_sub_a.IsValid()); |
495 ASSERT_TRUE(SetReparsePoint(reparse_to_sub_a, sub_a)); | 496 ASSERT_TRUE(SetReparsePoint(reparse_to_sub_a, sub_a)); |
496 | 497 |
497 FilePath to_base_b = base_b.Append(FPL("to_base_b")); | 498 FilePath to_base_b = base_b.Append(FPL("to_base_b")); |
498 ASSERT_TRUE(file_util::CreateDirectory(to_base_b)); | 499 ASSERT_TRUE(file_util::CreateDirectory(to_base_b)); |
499 ScopedHandle reparse_to_base_b( | 500 base::win::ScopedHandle reparse_to_base_b( |
500 ::CreateFile(to_base_b.value().c_str(), | 501 ::CreateFile(to_base_b.value().c_str(), |
501 FILE_ALL_ACCESS, | 502 FILE_ALL_ACCESS, |
502 FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, | 503 FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, |
503 NULL, | 504 NULL, |
504 OPEN_EXISTING, | 505 OPEN_EXISTING, |
505 FILE_FLAG_BACKUP_SEMANTICS, // Needed to open a directory. | 506 FILE_FLAG_BACKUP_SEMANTICS, // Needed to open a directory. |
506 NULL)); | 507 NULL)); |
507 ASSERT_TRUE(reparse_to_base_b.IsValid()); | 508 ASSERT_TRUE(reparse_to_base_b.IsValid()); |
508 ASSERT_TRUE(SetReparsePoint(reparse_to_base_b, base_b)); | 509 ASSERT_TRUE(SetReparsePoint(reparse_to_base_b, base_b)); |
509 | 510 |
510 FilePath to_sub_long = base_b.Append(FPL("to_sub_long")); | 511 FilePath to_sub_long = base_b.Append(FPL("to_sub_long")); |
511 ASSERT_TRUE(file_util::CreateDirectory(to_sub_long)); | 512 ASSERT_TRUE(file_util::CreateDirectory(to_sub_long)); |
512 ScopedHandle reparse_to_sub_long( | 513 base::win::ScopedHandle reparse_to_sub_long( |
513 ::CreateFile(to_sub_long.value().c_str(), | 514 ::CreateFile(to_sub_long.value().c_str(), |
514 FILE_ALL_ACCESS, | 515 FILE_ALL_ACCESS, |
515 FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, | 516 FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, |
516 NULL, | 517 NULL, |
517 OPEN_EXISTING, | 518 OPEN_EXISTING, |
518 FILE_FLAG_BACKUP_SEMANTICS, // Needed to open a directory. | 519 FILE_FLAG_BACKUP_SEMANTICS, // Needed to open a directory. |
519 NULL)); | 520 NULL)); |
520 ASSERT_TRUE(reparse_to_sub_long.IsValid()); | 521 ASSERT_TRUE(reparse_to_sub_long.IsValid()); |
521 ASSERT_TRUE(SetReparsePoint(reparse_to_sub_long, sub_long)); | 522 ASSERT_TRUE(SetReparsePoint(reparse_to_sub_long, sub_long)); |
522 | 523 |
(...skipping 1293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1816 EXPECT_TRUE(file_util::IsDirectoryEmpty(empty_dir)); | 1817 EXPECT_TRUE(file_util::IsDirectoryEmpty(empty_dir)); |
1817 | 1818 |
1818 FilePath foo(empty_dir.Append(FILE_PATH_LITERAL("foo.txt"))); | 1819 FilePath foo(empty_dir.Append(FILE_PATH_LITERAL("foo.txt"))); |
1819 std::string bar("baz"); | 1820 std::string bar("baz"); |
1820 ASSERT_TRUE(file_util::WriteFile(foo, bar.c_str(), bar.length())); | 1821 ASSERT_TRUE(file_util::WriteFile(foo, bar.c_str(), bar.length())); |
1821 | 1822 |
1822 EXPECT_FALSE(file_util::IsDirectoryEmpty(empty_dir)); | 1823 EXPECT_FALSE(file_util::IsDirectoryEmpty(empty_dir)); |
1823 } | 1824 } |
1824 | 1825 |
1825 } // namespace | 1826 } // namespace |
OLD | NEW |