| 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/at_exit.h" | 5 #include "base/at_exit.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/location.h" | 8 #include "base/location.h" | 
| 9 #include "base/observer_list.h" | 9 #include "base/observer_list.h" | 
| 10 #include "base/prefs/pref_service.h" | 10 #include "base/prefs/pref_service.h" | 
| (...skipping 447 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 458     bool create_directory, | 458     bool create_directory, | 
| 459     DownloadPathReservationTracker::FilenameConflictAction conflict_action, | 459     DownloadPathReservationTracker::FilenameConflictAction conflict_action, | 
| 460     const DownloadTargetDeterminerDelegate::ReservedPathCallback& callback) { | 460     const DownloadTargetDeterminerDelegate::ReservedPathCallback& callback) { | 
| 461   callback.Run(virtual_path, true); | 461   callback.Run(virtual_path, true); | 
| 462 } | 462 } | 
| 463 | 463 | 
| 464 // static | 464 // static | 
| 465 void MockDownloadTargetDeterminerDelegate::NullPromptUser( | 465 void MockDownloadTargetDeterminerDelegate::NullPromptUser( | 
| 466     DownloadItem* download, const base::FilePath& suggested_path, | 466     DownloadItem* download, const base::FilePath& suggested_path, | 
| 467     const FileSelectedCallback& callback) { | 467     const FileSelectedCallback& callback) { | 
| 468   callback.Run(suggested_path); | 468   callback.Run(suggested_path, false); | 
| 469 } | 469 } | 
| 470 | 470 | 
| 471 // static | 471 // static | 
| 472 void MockDownloadTargetDeterminerDelegate::NullDetermineLocalPath( | 472 void MockDownloadTargetDeterminerDelegate::NullDetermineLocalPath( | 
| 473     DownloadItem* download, const base::FilePath& virtual_path, | 473     DownloadItem* download, const base::FilePath& virtual_path, | 
| 474     const LocalPathCallback& callback) { | 474     const LocalPathCallback& callback) { | 
| 475   callback.Run(virtual_path); | 475   callback.Run(virtual_path); | 
| 476 } | 476 } | 
| 477 | 477 | 
| 478 // NotifyExtensions implementation that overrides the path so that the target | 478 // NotifyExtensions implementation that overrides the path so that the target | 
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 575       "http://example.com/foo.txt", "text/plain", | 575       "http://example.com/foo.txt", "text/plain", | 
| 576       FILE_PATH_LITERAL(""), | 576       FILE_PATH_LITERAL(""), | 
| 577 | 577 | 
| 578       FILE_PATH_LITERAL(""), | 578       FILE_PATH_LITERAL(""), | 
| 579       DownloadItem::TARGET_DISPOSITION_PROMPT, | 579       DownloadItem::TARGET_DISPOSITION_PROMPT, | 
| 580 | 580 | 
| 581       EXPECT_LOCAL_PATH | 581       EXPECT_LOCAL_PATH | 
| 582     } | 582     } | 
| 583   }; | 583   }; | 
| 584   ON_CALL(*delegate(), PromptUserForDownloadPath(_, _, _)) | 584   ON_CALL(*delegate(), PromptUserForDownloadPath(_, _, _)) | 
| 585       .WillByDefault(WithArg<2>(ScheduleCallback(base::FilePath()))); | 585       .WillByDefault(WithArg<2>(ScheduleCallback2(base::FilePath(), false))); | 
| 586   RunTestCasesWithActiveItem(kCancelSaveAsTestCases, | 586   RunTestCasesWithActiveItem(kCancelSaveAsTestCases, | 
| 587                              arraysize(kCancelSaveAsTestCases)); | 587                              arraysize(kCancelSaveAsTestCases)); | 
| 588 } | 588 } | 
| 589 | 589 | 
| 590 // The SafeBrowsing check is performed early. Make sure that a download item | 590 // The SafeBrowsing check is performed early. Make sure that a download item | 
| 591 // that has been marked as DANGEROUS_URL behaves correctly. | 591 // that has been marked as DANGEROUS_URL behaves correctly. | 
| 592 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_DangerousUrl) { | 592 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_DangerousUrl) { | 
| 593   const DownloadTestCase kSafeBrowsingTestCases[] = { | 593   const DownloadTestCase kSafeBrowsingTestCases[] = { | 
| 594     { | 594     { | 
| 595       // 0: Automatic Dangerous URL | 595       // 0: Automatic Dangerous URL | 
| (...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 870       FILE_PATH_LITERAL("foo-local.txt"), | 870       FILE_PATH_LITERAL("foo-local.txt"), | 
| 871       DownloadItem::TARGET_DISPOSITION_PROMPT, | 871       DownloadItem::TARGET_DISPOSITION_PROMPT, | 
| 872 | 872 | 
| 873       EXPECT_LOCAL_PATH | 873       EXPECT_LOCAL_PATH | 
| 874     }; | 874     }; | 
| 875     EXPECT_CALL(*delegate(), DetermineLocalPath(_, _, _)) | 875     EXPECT_CALL(*delegate(), DetermineLocalPath(_, _, _)) | 
| 876         .WillOnce(WithArg<2>(ScheduleCallback( | 876         .WillOnce(WithArg<2>(ScheduleCallback( | 
| 877             GetPathInDownloadDir(FILE_PATH_LITERAL("foo-local.txt"))))); | 877             GetPathInDownloadDir(FILE_PATH_LITERAL("foo-local.txt"))))); | 
| 878     EXPECT_CALL(*delegate(), PromptUserForDownloadPath( | 878     EXPECT_CALL(*delegate(), PromptUserForDownloadPath( | 
| 879         _, test_virtual_dir().AppendASCII("bar.txt"), _)) | 879         _, test_virtual_dir().AppendASCII("bar.txt"), _)) | 
| 880         .WillOnce(WithArg<2>(ScheduleCallback( | 880         .WillOnce(WithArg<2>(ScheduleCallback2( | 
| 881             test_virtual_dir().AppendASCII("prompted.txt")))); | 881             test_virtual_dir().AppendASCII("prompted.txt"), false))); | 
| 882     RunTestCasesWithActiveItem(&kSaveAsToVirtualDir, 1); | 882     RunTestCasesWithActiveItem(&kSaveAsToVirtualDir, 1); | 
| 883   } | 883   } | 
| 884 | 884 | 
| 885   { | 885   { | 
| 886     SCOPED_TRACE(testing::Message() << "Save As to local directory"); | 886     SCOPED_TRACE(testing::Message() << "Save As to local directory"); | 
| 887     const DownloadTestCase kSaveAsToLocalDir = { | 887     const DownloadTestCase kSaveAsToLocalDir = { | 
| 888       SAVE_AS, | 888       SAVE_AS, | 
| 889       content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 889       content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 
| 890       "http://example.com/bar.txt", "text/plain", | 890       "http://example.com/bar.txt", "text/plain", | 
| 891       FILE_PATH_LITERAL(""), | 891       FILE_PATH_LITERAL(""), | 
| 892 | 892 | 
| 893       FILE_PATH_LITERAL("foo-x.txt"), | 893       FILE_PATH_LITERAL("foo-x.txt"), | 
| 894       DownloadItem::TARGET_DISPOSITION_PROMPT, | 894       DownloadItem::TARGET_DISPOSITION_PROMPT, | 
| 895 | 895 | 
| 896       EXPECT_CRDOWNLOAD | 896       EXPECT_CRDOWNLOAD | 
| 897     }; | 897     }; | 
| 898     EXPECT_CALL(*delegate(), PromptUserForDownloadPath( | 898     EXPECT_CALL(*delegate(), PromptUserForDownloadPath( | 
| 899         _, test_virtual_dir().AppendASCII("bar.txt"), _)) | 899         _, test_virtual_dir().AppendASCII("bar.txt"), _)) | 
| 900         .WillOnce(WithArg<2>(ScheduleCallback( | 900         .WillOnce(WithArg<2>(ScheduleCallback2( | 
| 901             GetPathInDownloadDir(FILE_PATH_LITERAL("foo-x.txt"))))); | 901             GetPathInDownloadDir(FILE_PATH_LITERAL("foo-x.txt")), false))); | 
| 902     RunTestCasesWithActiveItem(&kSaveAsToLocalDir, 1); | 902     RunTestCasesWithActiveItem(&kSaveAsToLocalDir, 1); | 
| 903   } | 903   } | 
| 904 | 904 | 
| 905   { | 905   { | 
| 906     SCOPED_TRACE(testing::Message() << "Forced safe download"); | 906     SCOPED_TRACE(testing::Message() << "Forced safe download"); | 
| 907     const DownloadTestCase kForcedSafe = { | 907     const DownloadTestCase kForcedSafe = { | 
| 908       FORCED, | 908       FORCED, | 
| 909       content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 909       content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 
| 910       "http://example.com/foo.txt", "", | 910       "http://example.com/foo.txt", "", | 
| 911       FILE_PATH_LITERAL("forced-foo.txt"), | 911       FILE_PATH_LITERAL("forced-foo.txt"), | 
| (...skipping 514 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1426   download_prefs()->SetSaveFilePath(GetPathInDownloadDir( | 1426   download_prefs()->SetSaveFilePath(GetPathInDownloadDir( | 
| 1427       FILE_PATH_LITERAL("last_selected"))); | 1427       FILE_PATH_LITERAL("last_selected"))); | 
| 1428 | 1428 | 
| 1429   EXPECT_CALL(*delegate(), NotifyExtensions(_, _, _)) | 1429   EXPECT_CALL(*delegate(), NotifyExtensions(_, _, _)) | 
| 1430       .WillOnce(WithArg<2>( | 1430       .WillOnce(WithArg<2>( | 
| 1431           ScheduleCallback2(overridden_path, | 1431           ScheduleCallback2(overridden_path, | 
| 1432                             DownloadPathReservationTracker::UNIQUIFY))); | 1432                             DownloadPathReservationTracker::UNIQUIFY))); | 
| 1433   EXPECT_CALL(*delegate(), | 1433   EXPECT_CALL(*delegate(), | 
| 1434               PromptUserForDownloadPath(_, full_overridden_path, _)) | 1434               PromptUserForDownloadPath(_, full_overridden_path, _)) | 
| 1435       .WillOnce(WithArg<2>( | 1435       .WillOnce(WithArg<2>( | 
| 1436           ScheduleCallback(full_overridden_path))); | 1436           ScheduleCallback2(full_overridden_path, false))); | 
| 1437   RunTestCase(test_case, base::FilePath(), item.get()); | 1437   RunTestCase(test_case, base::FilePath(), item.get()); | 
| 1438 } | 1438 } | 
| 1439 | 1439 | 
| 1440 TEST_F(DownloadTargetDeterminerTest, | 1440 TEST_F(DownloadTargetDeterminerTest, | 
| 1441        TargetDeterminer_InitialVirtualPathUnsafe) { | 1441        TargetDeterminer_InitialVirtualPathUnsafe) { | 
| 1442   const base::FilePath::CharType* kInitialPath = | 1442   const base::FilePath::CharType* kInitialPath = | 
| 1443       FILE_PATH_LITERAL("some_path/bar.html"); | 1443       FILE_PATH_LITERAL("some_path/bar.html"); | 
| 1444 | 1444 | 
| 1445   const DownloadTestCase kInitialPathTestCase = { | 1445   const DownloadTestCase kInitialPathTestCase = { | 
| 1446     // 0: Save As Save. The path generated based on the DownloadItem is safe, | 1446     // 0: Save As Save. The path generated based on the DownloadItem is safe, | 
| (...skipping 792 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2239   EXPECT_CALL(mock_plugin_filter_, MockPluginAvailable(npapi_plugin.path())) | 2239   EXPECT_CALL(mock_plugin_filter_, MockPluginAvailable(npapi_plugin.path())) | 
| 2240       .WillRepeatedly(Return(true)); | 2240       .WillRepeatedly(Return(true)); | 
| 2241 | 2241 | 
| 2242   target_info = RunDownloadTargetDeterminer( | 2242   target_info = RunDownloadTargetDeterminer( | 
| 2243       GetPathInDownloadDir(kInitialPath), item.get()); | 2243       GetPathInDownloadDir(kInitialPath), item.get()); | 
| 2244   EXPECT_FALSE(target_info->is_filetype_handled_safely); | 2244   EXPECT_FALSE(target_info->is_filetype_handled_safely); | 
| 2245 } | 2245 } | 
| 2246 #endif  // defined(ENABLE_PLUGINS) | 2246 #endif  // defined(ENABLE_PLUGINS) | 
| 2247 | 2247 | 
| 2248 }  // namespace | 2248 }  // namespace | 
| OLD | NEW | 
|---|