OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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> |
(...skipping 557 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
568 FilePath to_sub_a = base_b.Append(FPL("to_sub_a")); | 568 FilePath to_sub_a = base_b.Append(FPL("to_sub_a")); |
569 ASSERT_TRUE(file_util::CreateDirectory(to_sub_a)); | 569 ASSERT_TRUE(file_util::CreateDirectory(to_sub_a)); |
570 ScopedHandle reparse_to_sub_a( | 570 ScopedHandle reparse_to_sub_a( |
571 ::CreateFile(to_sub_a.value().c_str(), | 571 ::CreateFile(to_sub_a.value().c_str(), |
572 FILE_ALL_ACCESS, | 572 FILE_ALL_ACCESS, |
573 FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, | 573 FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, |
574 NULL, | 574 NULL, |
575 OPEN_EXISTING, | 575 OPEN_EXISTING, |
576 FILE_FLAG_BACKUP_SEMANTICS, // Needed to open a directory. | 576 FILE_FLAG_BACKUP_SEMANTICS, // Needed to open a directory. |
577 NULL)); | 577 NULL)); |
578 ASSERT_NE(INVALID_HANDLE_VALUE, reparse_to_sub_a.Get()); | 578 ASSERT_TRUE(reparse_to_sub_a.IsValid()); |
579 ASSERT_TRUE(SetReparsePoint(reparse_to_sub_a, sub_a)); | 579 ASSERT_TRUE(SetReparsePoint(reparse_to_sub_a, sub_a)); |
580 | 580 |
581 FilePath to_base_b = base_b.Append(FPL("to_base_b")); | 581 FilePath to_base_b = base_b.Append(FPL("to_base_b")); |
582 ASSERT_TRUE(file_util::CreateDirectory(to_base_b)); | 582 ASSERT_TRUE(file_util::CreateDirectory(to_base_b)); |
583 ScopedHandle reparse_to_base_b( | 583 ScopedHandle reparse_to_base_b( |
584 ::CreateFile(to_base_b.value().c_str(), | 584 ::CreateFile(to_base_b.value().c_str(), |
585 FILE_ALL_ACCESS, | 585 FILE_ALL_ACCESS, |
586 FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, | 586 FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, |
587 NULL, | 587 NULL, |
588 OPEN_EXISTING, | 588 OPEN_EXISTING, |
589 FILE_FLAG_BACKUP_SEMANTICS, // Needed to open a directory. | 589 FILE_FLAG_BACKUP_SEMANTICS, // Needed to open a directory. |
590 NULL)); | 590 NULL)); |
591 ASSERT_NE(INVALID_HANDLE_VALUE, reparse_to_base_b.Get()); | 591 ASSERT_TRUE(reparse_to_base_b.IsValid()); |
592 ASSERT_TRUE(SetReparsePoint(reparse_to_base_b, base_b)); | 592 ASSERT_TRUE(SetReparsePoint(reparse_to_base_b, base_b)); |
593 | 593 |
594 FilePath to_sub_long = base_b.Append(FPL("to_sub_long")); | 594 FilePath to_sub_long = base_b.Append(FPL("to_sub_long")); |
595 ASSERT_TRUE(file_util::CreateDirectory(to_sub_long)); | 595 ASSERT_TRUE(file_util::CreateDirectory(to_sub_long)); |
596 ScopedHandle reparse_to_sub_long( | 596 ScopedHandle reparse_to_sub_long( |
597 ::CreateFile(to_sub_long.value().c_str(), | 597 ::CreateFile(to_sub_long.value().c_str(), |
598 FILE_ALL_ACCESS, | 598 FILE_ALL_ACCESS, |
599 FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, | 599 FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, |
600 NULL, | 600 NULL, |
601 OPEN_EXISTING, | 601 OPEN_EXISTING, |
602 FILE_FLAG_BACKUP_SEMANTICS, // Needed to open a directory. | 602 FILE_FLAG_BACKUP_SEMANTICS, // Needed to open a directory. |
603 NULL)); | 603 NULL)); |
604 ASSERT_NE(INVALID_HANDLE_VALUE, reparse_to_sub_long.Get()); | 604 ASSERT_TRUE(reparse_to_sub_long.IsValid()); |
605 ASSERT_TRUE(SetReparsePoint(reparse_to_sub_long, sub_long)); | 605 ASSERT_TRUE(SetReparsePoint(reparse_to_sub_long, sub_long)); |
606 | 606 |
607 // Normalize a junction free path: base_a\sub_a\file.txt . | 607 // Normalize a junction free path: base_a\sub_a\file.txt . |
608 FilePath normalized_path; | 608 FilePath normalized_path; |
609 ASSERT_TRUE(file_util::NormalizeFilePath(file_txt, &normalized_path)); | 609 ASSERT_TRUE(file_util::NormalizeFilePath(file_txt, &normalized_path)); |
610 ASSERT_STREQ(file_txt.value().c_str(), normalized_path.value().c_str()); | 610 ASSERT_STREQ(file_txt.value().c_str(), normalized_path.value().c_str()); |
611 | 611 |
612 // Check that the path base_b\to_sub_a\file.txt can be normalized to exclude | 612 // Check that the path base_b\to_sub_a\file.txt can be normalized to exclude |
613 // the junction to_sub_a. | 613 // the junction to_sub_a. |
614 ASSERT_TRUE(file_util::NormalizeFilePath(to_sub_a.Append(FPL("file.txt")), | 614 ASSERT_TRUE(file_util::NormalizeFilePath(to_sub_a.Append(FPL("file.txt")), |
(...skipping 1241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1856 EXPECT_TRUE(file_util::IsDirectoryEmpty(empty_dir)); | 1856 EXPECT_TRUE(file_util::IsDirectoryEmpty(empty_dir)); |
1857 | 1857 |
1858 FilePath foo(empty_dir.Append(FILE_PATH_LITERAL("foo.txt"))); | 1858 FilePath foo(empty_dir.Append(FILE_PATH_LITERAL("foo.txt"))); |
1859 std::string bar("baz"); | 1859 std::string bar("baz"); |
1860 ASSERT_TRUE(file_util::WriteFile(foo, bar.c_str(), bar.length())); | 1860 ASSERT_TRUE(file_util::WriteFile(foo, bar.c_str(), bar.length())); |
1861 | 1861 |
1862 EXPECT_FALSE(file_util::IsDirectoryEmpty(empty_dir)); | 1862 EXPECT_FALSE(file_util::IsDirectoryEmpty(empty_dir)); |
1863 } | 1863 } |
1864 | 1864 |
1865 } // namespace | 1865 } // namespace |
OLD | NEW |