| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "base/file_util.h" | 5 #include "base/file_util.h" |
| 6 #include "base/files/file_path.h" | 6 #include "base/files/file_path.h" |
| 7 #include "base/files/scoped_temp_dir.h" | 7 #include "base/files/scoped_temp_dir.h" |
| 8 #include "base/memory/weak_ptr.h" | 8 #include "base/memory/weak_ptr.h" |
| 9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
| 10 #include "base/observer_list.h" | 10 #include "base/observer_list.h" |
| (...skipping 577 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 588 message_loop_.RunUntilIdle(); | 588 message_loop_.RunUntilIdle(); |
| 589 EXPECT_FALSE(IsPathInUse(new_target_path)); | 589 EXPECT_FALSE(IsPathInUse(new_target_path)); |
| 590 } | 590 } |
| 591 | 591 |
| 592 // Tests for long name truncation. On other platforms automatic truncation | 592 // Tests for long name truncation. On other platforms automatic truncation |
| 593 // is not performed (yet). | 593 // is not performed (yet). |
| 594 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS) | 594 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS) |
| 595 | 595 |
| 596 TEST_F(DownloadPathReservationTrackerTest, BasicTruncation) { | 596 TEST_F(DownloadPathReservationTrackerTest, BasicTruncation) { |
| 597 int real_max_length = | 597 int real_max_length = |
| 598 file_util::GetMaximumPathComponentLength(default_download_path()); | 598 base::GetMaximumPathComponentLength(default_download_path()); |
| 599 ASSERT_NE(-1, real_max_length); | 599 ASSERT_NE(-1, real_max_length); |
| 600 | 600 |
| 601 // TODO(kinaba): the current implementation leaves spaces for appending | 601 // TODO(kinaba): the current implementation leaves spaces for appending |
| 602 // ".crdownload". So take it into account. Should be removed in the future. | 602 // ".crdownload". So take it into account. Should be removed in the future. |
| 603 const size_t max_length = real_max_length - 11; | 603 const size_t max_length = real_max_length - 11; |
| 604 | 604 |
| 605 scoped_ptr<FakeDownloadItem> item(CreateDownloadItem(1)); | 605 scoped_ptr<FakeDownloadItem> item(CreateDownloadItem(1)); |
| 606 base::FilePath path(GetLongNamePathInDownloadsDirectory( | 606 base::FilePath path(GetLongNamePathInDownloadsDirectory( |
| 607 max_length, FILE_PATH_LITERAL(".txt"))); | 607 max_length, FILE_PATH_LITERAL(".txt"))); |
| 608 ASSERT_FALSE(IsPathInUse(path)); | 608 ASSERT_FALSE(IsPathInUse(path)); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 623 EXPECT_TRUE(verified); | 623 EXPECT_TRUE(verified); |
| 624 // The file name length is truncated to max_length. | 624 // The file name length is truncated to max_length. |
| 625 EXPECT_EQ(max_length, reserved_path.BaseName().value().size()); | 625 EXPECT_EQ(max_length, reserved_path.BaseName().value().size()); |
| 626 // But the extension is kept unchanged. | 626 // But the extension is kept unchanged. |
| 627 EXPECT_EQ(path.Extension(), reserved_path.Extension()); | 627 EXPECT_EQ(path.Extension(), reserved_path.Extension()); |
| 628 item->SetState(DownloadItem::COMPLETE); | 628 item->SetState(DownloadItem::COMPLETE); |
| 629 } | 629 } |
| 630 | 630 |
| 631 TEST_F(DownloadPathReservationTrackerTest, TruncationConflict) { | 631 TEST_F(DownloadPathReservationTrackerTest, TruncationConflict) { |
| 632 int real_max_length = | 632 int real_max_length = |
| 633 file_util::GetMaximumPathComponentLength(default_download_path()); | 633 base::GetMaximumPathComponentLength(default_download_path()); |
| 634 ASSERT_NE(-1, real_max_length); | 634 ASSERT_NE(-1, real_max_length); |
| 635 const size_t max_length = real_max_length - 11; | 635 const size_t max_length = real_max_length - 11; |
| 636 | 636 |
| 637 scoped_ptr<FakeDownloadItem> item(CreateDownloadItem(1)); | 637 scoped_ptr<FakeDownloadItem> item(CreateDownloadItem(1)); |
| 638 base::FilePath path(GetLongNamePathInDownloadsDirectory( | 638 base::FilePath path(GetLongNamePathInDownloadsDirectory( |
| 639 max_length, FILE_PATH_LITERAL(".txt"))); | 639 max_length, FILE_PATH_LITERAL(".txt"))); |
| 640 base::FilePath path0(GetLongNamePathInDownloadsDirectory( | 640 base::FilePath path0(GetLongNamePathInDownloadsDirectory( |
| 641 max_length - 4, FILE_PATH_LITERAL(".txt"))); | 641 max_length - 4, FILE_PATH_LITERAL(".txt"))); |
| 642 base::FilePath path1(GetLongNamePathInDownloadsDirectory( | 642 base::FilePath path1(GetLongNamePathInDownloadsDirectory( |
| 643 max_length - 8, FILE_PATH_LITERAL(" (1).txt"))); | 643 max_length - 8, FILE_PATH_LITERAL(" (1).txt"))); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 663 &reserved_path, | 663 &reserved_path, |
| 664 &verified); | 664 &verified); |
| 665 EXPECT_TRUE(IsPathInUse(reserved_path)); | 665 EXPECT_TRUE(IsPathInUse(reserved_path)); |
| 666 EXPECT_TRUE(verified); | 666 EXPECT_TRUE(verified); |
| 667 EXPECT_EQ(path2, reserved_path); | 667 EXPECT_EQ(path2, reserved_path); |
| 668 item->SetState(DownloadItem::COMPLETE); | 668 item->SetState(DownloadItem::COMPLETE); |
| 669 } | 669 } |
| 670 | 670 |
| 671 TEST_F(DownloadPathReservationTrackerTest, TruncationFail) { | 671 TEST_F(DownloadPathReservationTrackerTest, TruncationFail) { |
| 672 int real_max_length = | 672 int real_max_length = |
| 673 file_util::GetMaximumPathComponentLength(default_download_path()); | 673 base::GetMaximumPathComponentLength(default_download_path()); |
| 674 ASSERT_NE(-1, real_max_length); | 674 ASSERT_NE(-1, real_max_length); |
| 675 const size_t max_length = real_max_length - 11; | 675 const size_t max_length = real_max_length - 11; |
| 676 | 676 |
| 677 scoped_ptr<FakeDownloadItem> item(CreateDownloadItem(1)); | 677 scoped_ptr<FakeDownloadItem> item(CreateDownloadItem(1)); |
| 678 base::FilePath path(GetPathInDownloadsDirectory( | 678 base::FilePath path(GetPathInDownloadsDirectory( |
| 679 (FILE_PATH_LITERAL("a.") + | 679 (FILE_PATH_LITERAL("a.") + |
| 680 base::FilePath::StringType(max_length, 'b')).c_str())); | 680 base::FilePath::StringType(max_length, 'b')).c_str())); |
| 681 ASSERT_FALSE(IsPathInUse(path)); | 681 ASSERT_FALSE(IsPathInUse(path)); |
| 682 | 682 |
| 683 base::FilePath reserved_path; | 683 base::FilePath reserved_path; |
| 684 bool verified = false; | 684 bool verified = false; |
| 685 DownloadPathReservationTracker::FilenameConflictAction conflict_action = | 685 DownloadPathReservationTracker::FilenameConflictAction conflict_action = |
| 686 DownloadPathReservationTracker::OVERWRITE; | 686 DownloadPathReservationTracker::OVERWRITE; |
| 687 bool create_directory = false; | 687 bool create_directory = false; |
| 688 CallGetReservedPath( | 688 CallGetReservedPath( |
| 689 item.get(), | 689 item.get(), |
| 690 path, | 690 path, |
| 691 create_directory, | 691 create_directory, |
| 692 conflict_action, | 692 conflict_action, |
| 693 &reserved_path, | 693 &reserved_path, |
| 694 &verified); | 694 &verified); |
| 695 // We cannot truncate a path with very long extension. | 695 // We cannot truncate a path with very long extension. |
| 696 EXPECT_FALSE(verified); | 696 EXPECT_FALSE(verified); |
| 697 item->SetState(DownloadItem::COMPLETE); | 697 item->SetState(DownloadItem::COMPLETE); |
| 698 } | 698 } |
| 699 | 699 |
| 700 #endif | 700 #endif |
| OLD | NEW |