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 <stddef.h> | 5 #include <stddef.h> |
6 #include <stdint.h> | 6 #include <stdint.h> |
7 | 7 |
8 #include "base/at_exit.h" | 8 #include "base/at_exit.h" |
9 #include "base/files/file_path.h" | 9 #include "base/files/file_path.h" |
10 #include "base/files/scoped_temp_dir.h" | 10 #include "base/files/scoped_temp_dir.h" |
11 #include "base/location.h" | 11 #include "base/location.h" |
12 #include "base/macros.h" | 12 #include "base/macros.h" |
13 #include "base/observer_list.h" | 13 #include "base/observer_list.h" |
14 #include "base/run_loop.h" | 14 #include "base/run_loop.h" |
15 #include "base/single_thread_task_runner.h" | 15 #include "base/single_thread_task_runner.h" |
16 #include "base/stl_util.h" | 16 #include "base/stl_util.h" |
17 #include "base/strings/string_util.h" | 17 #include "base/strings/string_util.h" |
18 #include "base/threading/thread_task_runner_handle.h" | 18 #include "base/threading/thread_task_runner_handle.h" |
19 #include "base/value_conversions.h" | 19 #include "base/value_conversions.h" |
20 #include "build/build_config.h" | 20 #include "build/build_config.h" |
21 #include "chrome/browser/download/chrome_download_manager_delegate.h" | 21 #include "chrome/browser/download/chrome_download_manager_delegate.h" |
22 #include "chrome/browser/download/download_extensions.h" | |
23 #include "chrome/browser/download/download_prefs.h" | 22 #include "chrome/browser/download/download_prefs.h" |
24 #include "chrome/browser/download/download_target_determiner.h" | 23 #include "chrome/browser/download/download_target_determiner.h" |
25 #include "chrome/browser/download/download_target_info.h" | 24 #include "chrome/browser/download/download_target_info.h" |
26 #include "chrome/browser/history/history_service_factory.h" | 25 #include "chrome/browser/history/history_service_factory.h" |
27 #include "chrome/common/pref_names.h" | 26 #include "chrome/common/pref_names.h" |
| 27 #include "chrome/common/safe_browsing/file_type_policies.h" |
28 #include "chrome/test/base/chrome_render_view_host_test_harness.h" | 28 #include "chrome/test/base/chrome_render_view_host_test_harness.h" |
29 #include "chrome/test/base/testing_profile.h" | 29 #include "chrome/test/base/testing_profile.h" |
30 #include "components/history/core/browser/history_service.h" | 30 #include "components/history/core/browser/history_service.h" |
31 #include "components/history/core/browser/history_types.h" | 31 #include "components/history/core/browser/history_types.h" |
32 #include "components/prefs/pref_service.h" | 32 #include "components/prefs/pref_service.h" |
33 #include "components/syncable_prefs/testing_pref_service_syncable.h" | 33 #include "components/syncable_prefs/testing_pref_service_syncable.h" |
34 #include "content/public/browser/download_interrupt_reasons.h" | 34 #include "content/public/browser/download_interrupt_reasons.h" |
35 #include "content/public/browser/render_process_host.h" | 35 #include "content/public/browser/render_process_host.h" |
36 #include "content/public/browser/web_contents.h" | 36 #include "content/public/browser/web_contents.h" |
37 #include "content/public/browser/web_contents_delegate.h" | 37 #include "content/public/browser/web_contents_delegate.h" |
(...skipping 17 matching lines...) Expand all Loading... |
55 using ::testing::AnyNumber; | 55 using ::testing::AnyNumber; |
56 using ::testing::Invoke; | 56 using ::testing::Invoke; |
57 using ::testing::Ref; | 57 using ::testing::Ref; |
58 using ::testing::Return; | 58 using ::testing::Return; |
59 using ::testing::ReturnRef; | 59 using ::testing::ReturnRef; |
60 using ::testing::ReturnRefOfCopy; | 60 using ::testing::ReturnRefOfCopy; |
61 using ::testing::Truly; | 61 using ::testing::Truly; |
62 using ::testing::WithArg; | 62 using ::testing::WithArg; |
63 using ::testing::_; | 63 using ::testing::_; |
64 using content::DownloadItem; | 64 using content::DownloadItem; |
| 65 using safe_browsing::FileTypePolicies; |
| 66 using safe_browsing::DownloadFileType; |
65 | 67 |
66 namespace { | 68 namespace { |
67 | 69 |
68 // No-op delegate. | 70 // No-op delegate. |
69 class NullWebContentsDelegate : public content::WebContentsDelegate { | 71 class NullWebContentsDelegate : public content::WebContentsDelegate { |
70 public: | 72 public: |
71 NullWebContentsDelegate() {} | 73 NullWebContentsDelegate() {} |
72 ~NullWebContentsDelegate() override {} | 74 ~NullWebContentsDelegate() override {} |
73 }; | 75 }; |
74 | 76 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
113 // Typical download test case. Used with | 115 // Typical download test case. Used with |
114 // DownloadTargetDeterminerTest::RunTestCase(). | 116 // DownloadTargetDeterminerTest::RunTestCase(). |
115 struct DownloadTestCase { | 117 struct DownloadTestCase { |
116 // Type of test. | 118 // Type of test. |
117 TestCaseType test_type; | 119 TestCaseType test_type; |
118 | 120 |
119 // Expected danger type. Verified at the end of target determination. | 121 // Expected danger type. Verified at the end of target determination. |
120 content::DownloadDangerType expected_danger_type; | 122 content::DownloadDangerType expected_danger_type; |
121 | 123 |
122 // Expected danger level. Verified at the end of target determination. | 124 // Expected danger level. Verified at the end of target determination. |
123 download_util::DownloadDangerLevel expected_danger_level; | 125 DownloadFileType::DangerLevel expected_danger_level; |
124 | 126 |
125 // Value of DownloadItem::GetURL() | 127 // Value of DownloadItem::GetURL() |
126 const char* url; | 128 const char* url; |
127 | 129 |
128 // Value of DownloadItem::GetMimeType() | 130 // Value of DownloadItem::GetMimeType() |
129 const char* mime_type; | 131 const char* mime_type; |
130 | 132 |
131 // Should be non-empty if |test_type| == FORCED. Value of GetForcedFilePath(). | 133 // Should be non-empty if |test_type| == FORCED. Value of GetForcedFilePath(). |
132 const base::FilePath::CharType* forced_file_path; | 134 const base::FilePath::CharType* forced_file_path; |
133 | 135 |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
258 } | 260 } |
259 | 261 |
260 MockDownloadTargetDeterminerDelegate* delegate() { | 262 MockDownloadTargetDeterminerDelegate* delegate() { |
261 return &delegate_; | 263 return &delegate_; |
262 } | 264 } |
263 | 265 |
264 DownloadPrefs* download_prefs() { | 266 DownloadPrefs* download_prefs() { |
265 return download_prefs_.get(); | 267 return download_prefs_.get(); |
266 } | 268 } |
267 | 269 |
| 270 // Shortcut |
| 271 const FileTypePolicies* Policies() const { |
| 272 return FileTypePolicies::GetInstance(); |
| 273 } |
| 274 |
268 private: | 275 private: |
269 std::unique_ptr<DownloadPrefs> download_prefs_; | 276 std::unique_ptr<DownloadPrefs> download_prefs_; |
270 ::testing::NiceMock<MockDownloadTargetDeterminerDelegate> delegate_; | 277 ::testing::NiceMock<MockDownloadTargetDeterminerDelegate> delegate_; |
271 NullWebContentsDelegate web_contents_delegate_; | 278 NullWebContentsDelegate web_contents_delegate_; |
272 base::ScopedTempDir test_download_dir_; | 279 base::ScopedTempDir test_download_dir_; |
273 base::FilePath test_virtual_dir_; | 280 base::FilePath test_virtual_dir_; |
274 }; | 281 }; |
275 | 282 |
276 void DownloadTargetDeterminerTest::SetUp() { | 283 void DownloadTargetDeterminerTest::SetUp() { |
277 ChromeRenderViewHostTestHarness::SetUp(); | 284 ChromeRenderViewHostTestHarness::SetUp(); |
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
498 .Append(path.BaseName()); | 505 .Append(path.BaseName()); |
499 if (new_path.MatchesExtension(FILE_PATH_LITERAL(".remove"))) | 506 if (new_path.MatchesExtension(FILE_PATH_LITERAL(".remove"))) |
500 new_path = new_path.RemoveExtension(); | 507 new_path = new_path.RemoveExtension(); |
501 callback.Run(new_path, DownloadPathReservationTracker::UNIQUIFY); | 508 callback.Run(new_path, DownloadPathReservationTracker::UNIQUIFY); |
502 } | 509 } |
503 | 510 |
504 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_Basic) { | 511 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_Basic) { |
505 const DownloadTestCase kBasicTestCases[] = { | 512 const DownloadTestCase kBasicTestCases[] = { |
506 {// 0: Automatic Safe | 513 {// 0: Automatic Safe |
507 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 514 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
508 download_util::NOT_DANGEROUS, "http://example.com/foo.txt", "text/plain", | 515 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", |
509 FILE_PATH_LITERAL(""), | 516 "text/plain", FILE_PATH_LITERAL(""), |
510 | 517 |
511 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 518 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
512 | 519 |
513 EXPECT_CRDOWNLOAD}, | 520 EXPECT_CRDOWNLOAD}, |
514 | 521 |
515 {// 1: Save_As Safe | 522 {// 1: Save_As Safe |
516 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 523 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
517 download_util::NOT_DANGEROUS, "http://example.com/foo.txt", "text/plain", | 524 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", |
518 FILE_PATH_LITERAL(""), | 525 "text/plain", FILE_PATH_LITERAL(""), |
519 | 526 |
520 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_PROMPT, | 527 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_PROMPT, |
521 | 528 |
522 EXPECT_CRDOWNLOAD}, | 529 EXPECT_CRDOWNLOAD}, |
523 | 530 |
524 {// 2: Automatic Dangerous | 531 {// 2: Automatic Dangerous |
525 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE, | 532 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE, |
526 download_util::ALLOW_ON_USER_GESTURE, "http://example.com/foo.crx", "", | 533 DownloadFileType::ALLOW_ON_USER_GESTURE, "http://example.com/foo.crx", |
527 FILE_PATH_LITERAL(""), | 534 "", FILE_PATH_LITERAL(""), |
528 | 535 |
529 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 536 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
530 | 537 |
531 EXPECT_UNCONFIRMED}, | 538 EXPECT_UNCONFIRMED}, |
532 | 539 |
533 {// 3: Forced Safe | 540 {// 3: Forced Safe |
534 FORCED, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 541 FORCED, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
535 download_util::NOT_DANGEROUS, "http://example.com/foo.txt", "", | 542 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", "", |
536 FILE_PATH_LITERAL("forced-foo.txt"), | 543 FILE_PATH_LITERAL("forced-foo.txt"), |
537 | 544 |
538 FILE_PATH_LITERAL("forced-foo.txt"), | 545 FILE_PATH_LITERAL("forced-foo.txt"), |
539 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 546 DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
540 | 547 |
541 EXPECT_LOCAL_PATH}, | 548 EXPECT_LOCAL_PATH}, |
542 }; | 549 }; |
543 | 550 |
544 // The test assumes that .crx files have a danger level of | 551 // The test assumes that .crx files have a danger level of |
545 // ALLOW_ON_USER_GESTURE. | 552 // ALLOW_ON_USER_GESTURE. |
546 ASSERT_EQ(download_util::ALLOW_ON_USER_GESTURE, | 553 ASSERT_EQ(DownloadFileType::ALLOW_ON_USER_GESTURE, |
547 download_util::GetFileDangerLevel( | 554 Policies()->GetFileDangerLevel( |
548 base::FilePath(FILE_PATH_LITERAL("foo.crx")))); | 555 base::FilePath(FILE_PATH_LITERAL("foo.crx")))); |
549 RunTestCasesWithActiveItem(kBasicTestCases, arraysize(kBasicTestCases)); | 556 RunTestCasesWithActiveItem(kBasicTestCases, arraysize(kBasicTestCases)); |
550 } | 557 } |
551 | 558 |
552 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_CancelSaveAs) { | 559 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_CancelSaveAs) { |
553 const DownloadTestCase kCancelSaveAsTestCases[] = { | 560 const DownloadTestCase kCancelSaveAsTestCases[] = { |
554 {// 0: Save_As Safe, Cancelled. | 561 {// 0: Save_As Safe, Cancelled. |
555 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 562 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
556 download_util::NOT_DANGEROUS, "http://example.com/foo.txt", "text/plain", | 563 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", |
557 FILE_PATH_LITERAL(""), | 564 "text/plain", FILE_PATH_LITERAL(""), |
558 | 565 |
559 FILE_PATH_LITERAL(""), DownloadItem::TARGET_DISPOSITION_PROMPT, | 566 FILE_PATH_LITERAL(""), DownloadItem::TARGET_DISPOSITION_PROMPT, |
560 | 567 |
561 EXPECT_LOCAL_PATH}}; | 568 EXPECT_LOCAL_PATH}}; |
562 ON_CALL(*delegate(), PromptUserForDownloadPath(_, _, _)) | 569 ON_CALL(*delegate(), PromptUserForDownloadPath(_, _, _)) |
563 .WillByDefault(WithArg<2>(ScheduleCallback(base::FilePath()))); | 570 .WillByDefault(WithArg<2>(ScheduleCallback(base::FilePath()))); |
564 RunTestCasesWithActiveItem(kCancelSaveAsTestCases, | 571 RunTestCasesWithActiveItem(kCancelSaveAsTestCases, |
565 arraysize(kCancelSaveAsTestCases)); | 572 arraysize(kCancelSaveAsTestCases)); |
566 } | 573 } |
567 | 574 |
568 // The SafeBrowsing check is performed early. Make sure that a download item | 575 // The SafeBrowsing check is performed early. Make sure that a download item |
569 // that has been marked as DANGEROUS_URL behaves correctly. | 576 // that has been marked as DANGEROUS_URL behaves correctly. |
570 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_DangerousUrl) { | 577 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_DangerousUrl) { |
571 const DownloadTestCase kSafeBrowsingTestCases[] = { | 578 const DownloadTestCase kSafeBrowsingTestCases[] = { |
572 {// 0: Automatic Dangerous URL | 579 {// 0: Automatic Dangerous URL |
573 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL, | 580 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL, |
574 download_util::NOT_DANGEROUS, "http://phishing.example.com/foo.txt", "", | 581 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.txt", |
575 FILE_PATH_LITERAL(""), | 582 "", FILE_PATH_LITERAL(""), |
576 | 583 |
577 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 584 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
578 | 585 |
579 EXPECT_UNCONFIRMED}, | 586 EXPECT_UNCONFIRMED}, |
580 | 587 |
581 {// 1: Save As Dangerous URL | 588 {// 1: Save As Dangerous URL |
582 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL, | 589 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL, |
583 download_util::NOT_DANGEROUS, "http://phishing.example.com/foo.txt", "", | 590 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.txt", |
584 FILE_PATH_LITERAL(""), | 591 "", FILE_PATH_LITERAL(""), |
585 | 592 |
586 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_PROMPT, | 593 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_PROMPT, |
587 | 594 |
588 EXPECT_UNCONFIRMED}, | 595 EXPECT_UNCONFIRMED}, |
589 | 596 |
590 {// 2: Forced Dangerous URL | 597 {// 2: Forced Dangerous URL |
591 FORCED, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL, | 598 FORCED, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL, |
592 download_util::NOT_DANGEROUS, "http://phishing.example.com/foo.txt", "", | 599 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.txt", |
593 FILE_PATH_LITERAL("forced-foo.txt"), | 600 "", FILE_PATH_LITERAL("forced-foo.txt"), |
594 | 601 |
595 FILE_PATH_LITERAL("forced-foo.txt"), | 602 FILE_PATH_LITERAL("forced-foo.txt"), |
596 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 603 DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
597 | 604 |
598 EXPECT_UNCONFIRMED}, | 605 EXPECT_UNCONFIRMED}, |
599 | 606 |
600 {// 3: Automatic Dangerous URL + Dangerous file. Dangerous URL takes | 607 {// 3: Automatic Dangerous URL + Dangerous file. Dangerous URL takes |
601 // precedence. | 608 // precedence. |
602 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL, | 609 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL, |
603 download_util::NOT_DANGEROUS, "http://phishing.example.com/foo.html", "", | 610 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.html", |
604 FILE_PATH_LITERAL(""), | 611 "", FILE_PATH_LITERAL(""), |
605 | 612 |
606 FILE_PATH_LITERAL("foo.html"), | 613 FILE_PATH_LITERAL("foo.html"), |
607 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 614 DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
608 | 615 |
609 EXPECT_UNCONFIRMED}, | 616 EXPECT_UNCONFIRMED}, |
610 | 617 |
611 {// 4: Save As Dangerous URL + Dangerous file | 618 {// 4: Save As Dangerous URL + Dangerous file |
612 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL, | 619 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL, |
613 download_util::NOT_DANGEROUS, "http://phishing.example.com/foo.html", "", | 620 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.html", |
614 FILE_PATH_LITERAL(""), | 621 "", FILE_PATH_LITERAL(""), |
615 | 622 |
616 FILE_PATH_LITERAL("foo.html"), DownloadItem::TARGET_DISPOSITION_PROMPT, | 623 FILE_PATH_LITERAL("foo.html"), DownloadItem::TARGET_DISPOSITION_PROMPT, |
617 | 624 |
618 EXPECT_UNCONFIRMED}, | 625 EXPECT_UNCONFIRMED}, |
619 | 626 |
620 {// 5: Forced Dangerous URL + Dangerous file | 627 {// 5: Forced Dangerous URL + Dangerous file |
621 FORCED, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL, | 628 FORCED, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL, |
622 download_util::NOT_DANGEROUS, "http://phishing.example.com/foo.html", "", | 629 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.html", |
623 FILE_PATH_LITERAL("forced-foo.html"), | 630 "", FILE_PATH_LITERAL("forced-foo.html"), |
624 | 631 |
625 FILE_PATH_LITERAL("forced-foo.html"), | 632 FILE_PATH_LITERAL("forced-foo.html"), |
626 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 633 DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
627 | 634 |
628 EXPECT_UNCONFIRMED}, | 635 EXPECT_UNCONFIRMED}, |
629 }; | 636 }; |
630 | 637 |
631 ON_CALL(*delegate(), CheckDownloadUrl(_, _, _)) | 638 ON_CALL(*delegate(), CheckDownloadUrl(_, _, _)) |
632 .WillByDefault(WithArg<2>(ScheduleCallback( | 639 .WillByDefault(WithArg<2>(ScheduleCallback( |
633 content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL))); | 640 content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL))); |
634 RunTestCasesWithActiveItem(kSafeBrowsingTestCases, | 641 RunTestCasesWithActiveItem(kSafeBrowsingTestCases, |
635 arraysize(kSafeBrowsingTestCases)); | 642 arraysize(kSafeBrowsingTestCases)); |
636 } | 643 } |
637 | 644 |
638 // The SafeBrowsing check is performed early. Make sure that a download item | 645 // The SafeBrowsing check is performed early. Make sure that a download item |
639 // that has been marked as MAYBE_DANGEROUS_CONTENT behaves correctly. | 646 // that has been marked as MAYBE_DANGEROUS_CONTENT behaves correctly. |
640 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_MaybeDangerousContent) { | 647 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_MaybeDangerousContent) { |
641 const DownloadTestCase kSafeBrowsingTestCases[] = { | 648 const DownloadTestCase kSafeBrowsingTestCases[] = { |
642 {// 0: Automatic Maybe dangerous content | 649 {// 0: Automatic Maybe dangerous content |
643 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT, | 650 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT, |
644 download_util::ALLOW_ON_USER_GESTURE, | 651 DownloadFileType::ALLOW_ON_USER_GESTURE, |
645 "http://phishing.example.com/foo.crx", "", FILE_PATH_LITERAL(""), | 652 "http://phishing.example.com/foo.crx", "", FILE_PATH_LITERAL(""), |
646 | 653 |
647 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 654 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
648 | 655 |
649 EXPECT_UNCONFIRMED}, | 656 EXPECT_UNCONFIRMED}, |
650 | 657 |
651 {// 1: Automatic Maybe dangerous content with DANGEROUS type. | 658 {// 1: Automatic Maybe dangerous content with DANGEROUS type. |
652 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT, | 659 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT, |
653 download_util::DANGEROUS, "http://phishing.example.com/foo.swf", "", | 660 DownloadFileType::DANGEROUS, "http://phishing.example.com/foo.swf", "", |
654 FILE_PATH_LITERAL(""), | 661 FILE_PATH_LITERAL(""), |
655 | 662 |
656 FILE_PATH_LITERAL("foo.swf"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 663 FILE_PATH_LITERAL("foo.swf"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
657 | 664 |
658 EXPECT_UNCONFIRMED}, | 665 EXPECT_UNCONFIRMED}, |
659 | 666 |
660 {// 2: Save As Maybe dangerous content | 667 {// 2: Save As Maybe dangerous content |
661 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT, | 668 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT, |
662 download_util::NOT_DANGEROUS, "http://phishing.example.com/foo.crx", "", | 669 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.crx", |
663 FILE_PATH_LITERAL(""), | 670 "", FILE_PATH_LITERAL(""), |
664 | 671 |
665 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_PROMPT, | 672 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_PROMPT, |
666 | 673 |
667 EXPECT_UNCONFIRMED}, | 674 EXPECT_UNCONFIRMED}, |
668 | 675 |
669 {// 3: Forced Maybe dangerous content | 676 {// 3: Forced Maybe dangerous content |
670 FORCED, content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT, | 677 FORCED, content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT, |
671 download_util::NOT_DANGEROUS, "http://phishing.example.com/foo.crx", "", | 678 DownloadFileType::NOT_DANGEROUS, "http://phishing.example.com/foo.crx", |
672 FILE_PATH_LITERAL("forced-foo.crx"), | 679 "", FILE_PATH_LITERAL("forced-foo.crx"), |
673 | 680 |
674 FILE_PATH_LITERAL("forced-foo.crx"), | 681 FILE_PATH_LITERAL("forced-foo.crx"), |
675 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 682 DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
676 | 683 |
677 EXPECT_UNCONFIRMED}, | 684 EXPECT_UNCONFIRMED}, |
678 }; | 685 }; |
679 | 686 |
680 // Test assumptions: | 687 // Test assumptions: |
681 ASSERT_EQ(download_util::ALLOW_ON_USER_GESTURE, | 688 ASSERT_EQ(DownloadFileType::ALLOW_ON_USER_GESTURE, |
682 download_util::GetFileDangerLevel( | 689 Policies()->GetFileDangerLevel( |
683 base::FilePath(FILE_PATH_LITERAL("foo.crx")))); | 690 base::FilePath(FILE_PATH_LITERAL("foo.crx")))); |
684 ASSERT_EQ(download_util::DANGEROUS, | 691 ASSERT_EQ(DownloadFileType::DANGEROUS, |
685 download_util::GetFileDangerLevel( | 692 Policies()->GetFileDangerLevel( |
686 base::FilePath(FILE_PATH_LITERAL("foo.swf")))); | 693 base::FilePath(FILE_PATH_LITERAL("foo.swf")))); |
687 | 694 |
688 ON_CALL(*delegate(), CheckDownloadUrl(_, _, _)) | 695 ON_CALL(*delegate(), CheckDownloadUrl(_, _, _)) |
689 .WillByDefault(WithArg<2>(ScheduleCallback( | 696 .WillByDefault(WithArg<2>(ScheduleCallback( |
690 content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT))); | 697 content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT))); |
691 RunTestCasesWithActiveItem(kSafeBrowsingTestCases, | 698 RunTestCasesWithActiveItem(kSafeBrowsingTestCases, |
692 arraysize(kSafeBrowsingTestCases)); | 699 arraysize(kSafeBrowsingTestCases)); |
693 } | 700 } |
694 | 701 |
695 // Test whether the last saved directory is used for 'Save As' downloads. | 702 // Test whether the last saved directory is used for 'Save As' downloads. |
696 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_LastSavePath) { | 703 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_LastSavePath) { |
697 const DownloadTestCase kLastSavePathTestCasesPre[] = { | 704 const DownloadTestCase kLastSavePathTestCasesPre[] = { |
698 {// 0: If the last save path is empty, then the default download directory | 705 {// 0: If the last save path is empty, then the default download directory |
699 // should be used. | 706 // should be used. |
700 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 707 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
701 download_util::NOT_DANGEROUS, "http://example.com/foo.txt", "text/plain", | 708 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", |
702 FILE_PATH_LITERAL(""), | 709 "text/plain", FILE_PATH_LITERAL(""), |
703 | 710 |
704 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_PROMPT, | 711 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_PROMPT, |
705 | 712 |
706 EXPECT_CRDOWNLOAD}}; | 713 EXPECT_CRDOWNLOAD}}; |
707 | 714 |
708 // These test cases are run with a last save path set to a non-emtpy local | 715 // These test cases are run with a last save path set to a non-emtpy local |
709 // download directory. | 716 // download directory. |
710 const DownloadTestCase kLastSavePathTestCasesPost[] = { | 717 const DownloadTestCase kLastSavePathTestCasesPost[] = { |
711 {// 0: This test case is run with the last download directory set to | 718 {// 0: This test case is run with the last download directory set to |
712 // '<test_download_dir()>/foo'. | 719 // '<test_download_dir()>/foo'. |
713 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 720 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
714 download_util::NOT_DANGEROUS, "http://example.com/foo.txt", "text/plain", | 721 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", |
715 FILE_PATH_LITERAL(""), | 722 "text/plain", FILE_PATH_LITERAL(""), |
716 | 723 |
717 FILE_PATH_LITERAL("foo/foo.txt"), | 724 FILE_PATH_LITERAL("foo/foo.txt"), |
718 DownloadItem::TARGET_DISPOSITION_PROMPT, | 725 DownloadItem::TARGET_DISPOSITION_PROMPT, |
719 | 726 |
720 EXPECT_CRDOWNLOAD}, | 727 EXPECT_CRDOWNLOAD}, |
721 | 728 |
722 {// 1: Start an automatic download. This should be saved to the user's | 729 {// 1: Start an automatic download. This should be saved to the user's |
723 // default download directory and not the last used Save As directory. | 730 // default download directory and not the last used Save As directory. |
724 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 731 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
725 download_util::NOT_DANGEROUS, "http://example.com/foo.txt", "text/plain", | 732 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", |
726 FILE_PATH_LITERAL(""), | 733 "text/plain", FILE_PATH_LITERAL(""), |
727 | 734 |
728 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 735 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
729 | 736 |
730 EXPECT_CRDOWNLOAD}, | 737 EXPECT_CRDOWNLOAD}, |
731 }; | 738 }; |
732 | 739 |
733 // This test case is run with the last save path set to a non-empty virtual | 740 // This test case is run with the last save path set to a non-empty virtual |
734 // directory. | 741 // directory. |
735 const DownloadTestCase kLastSavePathTestCasesVirtual[] = { | 742 const DownloadTestCase kLastSavePathTestCasesVirtual[] = { |
736 {SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 743 {SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
737 download_util::NOT_DANGEROUS, "http://example.com/foo.txt", "text/plain", | 744 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", |
738 FILE_PATH_LITERAL(""), | 745 "text/plain", FILE_PATH_LITERAL(""), |
739 | 746 |
740 FILE_PATH_LITERAL("bar.txt"), DownloadItem::TARGET_DISPOSITION_PROMPT, | 747 FILE_PATH_LITERAL("bar.txt"), DownloadItem::TARGET_DISPOSITION_PROMPT, |
741 | 748 |
742 EXPECT_LOCAL_PATH}, | 749 EXPECT_LOCAL_PATH}, |
743 }; | 750 }; |
744 | 751 |
745 { | 752 { |
746 SCOPED_TRACE(testing::Message() | 753 SCOPED_TRACE(testing::Message() |
747 << "Running with default download path"); | 754 << "Running with default download path"); |
748 base::FilePath prompt_path = | 755 base::FilePath prompt_path = |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
785 // directory. | 792 // directory. |
786 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_DefaultVirtual) { | 793 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_DefaultVirtual) { |
787 // The default download directory is the virutal path. | 794 // The default download directory is the virutal path. |
788 download_prefs()->SetDownloadPath(test_virtual_dir()); | 795 download_prefs()->SetDownloadPath(test_virtual_dir()); |
789 | 796 |
790 { | 797 { |
791 SCOPED_TRACE(testing::Message() << "Automatic Safe Download"); | 798 SCOPED_TRACE(testing::Message() << "Automatic Safe Download"); |
792 const DownloadTestCase kAutomaticDownloadToVirtualDir = { | 799 const DownloadTestCase kAutomaticDownloadToVirtualDir = { |
793 AUTOMATIC, | 800 AUTOMATIC, |
794 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 801 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
795 download_util::NOT_DANGEROUS, | 802 DownloadFileType::NOT_DANGEROUS, |
796 "http://example.com/foo.txt", | 803 "http://example.com/foo.txt", |
797 "text/plain", | 804 "text/plain", |
798 FILE_PATH_LITERAL(""), | 805 FILE_PATH_LITERAL(""), |
799 | 806 |
800 FILE_PATH_LITERAL("foo-local.txt"), | 807 FILE_PATH_LITERAL("foo-local.txt"), |
801 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 808 DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
802 | 809 |
803 EXPECT_LOCAL_PATH}; | 810 EXPECT_LOCAL_PATH}; |
804 EXPECT_CALL(*delegate(), DetermineLocalPath(_, _, _)) | 811 EXPECT_CALL(*delegate(), DetermineLocalPath(_, _, _)) |
805 .WillOnce(WithArg<2>(ScheduleCallback( | 812 .WillOnce(WithArg<2>(ScheduleCallback( |
806 GetPathInDownloadDir(FILE_PATH_LITERAL("foo-local.txt"))))); | 813 GetPathInDownloadDir(FILE_PATH_LITERAL("foo-local.txt"))))); |
807 RunTestCasesWithActiveItem(&kAutomaticDownloadToVirtualDir, 1); | 814 RunTestCasesWithActiveItem(&kAutomaticDownloadToVirtualDir, 1); |
808 } | 815 } |
809 | 816 |
810 { | 817 { |
811 SCOPED_TRACE(testing::Message() << "Save As to virtual directory"); | 818 SCOPED_TRACE(testing::Message() << "Save As to virtual directory"); |
812 const DownloadTestCase kSaveAsToVirtualDir = { | 819 const DownloadTestCase kSaveAsToVirtualDir = { |
813 SAVE_AS, | 820 SAVE_AS, |
814 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 821 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
815 download_util::NOT_DANGEROUS, | 822 DownloadFileType::NOT_DANGEROUS, |
816 "http://example.com/bar.txt", | 823 "http://example.com/bar.txt", |
817 "text/plain", | 824 "text/plain", |
818 FILE_PATH_LITERAL(""), | 825 FILE_PATH_LITERAL(""), |
819 | 826 |
820 FILE_PATH_LITERAL("foo-local.txt"), | 827 FILE_PATH_LITERAL("foo-local.txt"), |
821 DownloadItem::TARGET_DISPOSITION_PROMPT, | 828 DownloadItem::TARGET_DISPOSITION_PROMPT, |
822 | 829 |
823 EXPECT_LOCAL_PATH}; | 830 EXPECT_LOCAL_PATH}; |
824 EXPECT_CALL(*delegate(), DetermineLocalPath(_, _, _)) | 831 EXPECT_CALL(*delegate(), DetermineLocalPath(_, _, _)) |
825 .WillOnce(WithArg<2>(ScheduleCallback( | 832 .WillOnce(WithArg<2>(ScheduleCallback( |
826 GetPathInDownloadDir(FILE_PATH_LITERAL("foo-local.txt"))))); | 833 GetPathInDownloadDir(FILE_PATH_LITERAL("foo-local.txt"))))); |
827 EXPECT_CALL(*delegate(), PromptUserForDownloadPath( | 834 EXPECT_CALL(*delegate(), PromptUserForDownloadPath( |
828 _, test_virtual_dir().AppendASCII("bar.txt"), _)) | 835 _, test_virtual_dir().AppendASCII("bar.txt"), _)) |
829 .WillOnce(WithArg<2>(ScheduleCallback( | 836 .WillOnce(WithArg<2>(ScheduleCallback( |
830 test_virtual_dir().AppendASCII("prompted.txt")))); | 837 test_virtual_dir().AppendASCII("prompted.txt")))); |
831 RunTestCasesWithActiveItem(&kSaveAsToVirtualDir, 1); | 838 RunTestCasesWithActiveItem(&kSaveAsToVirtualDir, 1); |
832 } | 839 } |
833 | 840 |
834 { | 841 { |
835 SCOPED_TRACE(testing::Message() << "Save As to local directory"); | 842 SCOPED_TRACE(testing::Message() << "Save As to local directory"); |
836 const DownloadTestCase kSaveAsToLocalDir = { | 843 const DownloadTestCase kSaveAsToLocalDir = { |
837 SAVE_AS, | 844 SAVE_AS, |
838 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 845 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
839 download_util::NOT_DANGEROUS, | 846 DownloadFileType::NOT_DANGEROUS, |
840 "http://example.com/bar.txt", | 847 "http://example.com/bar.txt", |
841 "text/plain", | 848 "text/plain", |
842 FILE_PATH_LITERAL(""), | 849 FILE_PATH_LITERAL(""), |
843 | 850 |
844 FILE_PATH_LITERAL("foo-x.txt"), | 851 FILE_PATH_LITERAL("foo-x.txt"), |
845 DownloadItem::TARGET_DISPOSITION_PROMPT, | 852 DownloadItem::TARGET_DISPOSITION_PROMPT, |
846 | 853 |
847 EXPECT_CRDOWNLOAD}; | 854 EXPECT_CRDOWNLOAD}; |
848 EXPECT_CALL(*delegate(), PromptUserForDownloadPath( | 855 EXPECT_CALL(*delegate(), PromptUserForDownloadPath( |
849 _, test_virtual_dir().AppendASCII("bar.txt"), _)) | 856 _, test_virtual_dir().AppendASCII("bar.txt"), _)) |
850 .WillOnce(WithArg<2>(ScheduleCallback( | 857 .WillOnce(WithArg<2>(ScheduleCallback( |
851 GetPathInDownloadDir(FILE_PATH_LITERAL("foo-x.txt"))))); | 858 GetPathInDownloadDir(FILE_PATH_LITERAL("foo-x.txt"))))); |
852 RunTestCasesWithActiveItem(&kSaveAsToLocalDir, 1); | 859 RunTestCasesWithActiveItem(&kSaveAsToLocalDir, 1); |
853 } | 860 } |
854 | 861 |
855 { | 862 { |
856 SCOPED_TRACE(testing::Message() << "Forced safe download"); | 863 SCOPED_TRACE(testing::Message() << "Forced safe download"); |
857 const DownloadTestCase kForcedSafe = { | 864 const DownloadTestCase kForcedSafe = { |
858 FORCED, | 865 FORCED, |
859 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 866 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
860 download_util::NOT_DANGEROUS, | 867 DownloadFileType::NOT_DANGEROUS, |
861 "http://example.com/foo.txt", | 868 "http://example.com/foo.txt", |
862 "", | 869 "", |
863 FILE_PATH_LITERAL("forced-foo.txt"), | 870 FILE_PATH_LITERAL("forced-foo.txt"), |
864 | 871 |
865 FILE_PATH_LITERAL("forced-foo.txt"), | 872 FILE_PATH_LITERAL("forced-foo.txt"), |
866 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 873 DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
867 | 874 |
868 EXPECT_LOCAL_PATH}; | 875 EXPECT_LOCAL_PATH}; |
869 RunTestCasesWithActiveItem(&kForcedSafe, 1); | 876 RunTestCasesWithActiveItem(&kForcedSafe, 1); |
870 } | 877 } |
871 } | 878 } |
872 | 879 |
873 // Test that an inactive download will still get a virtual or local download | 880 // Test that an inactive download will still get a virtual or local download |
874 // path. | 881 // path. |
875 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_InactiveDownload) { | 882 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_InactiveDownload) { |
876 const DownloadTestCase kInactiveTestCases[] = { | 883 const DownloadTestCase kInactiveTestCases[] = { |
877 {AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 884 {AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
878 download_util::NOT_DANGEROUS, "http://example.com/foo.txt", "text/plain", | 885 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", |
879 FILE_PATH_LITERAL(""), | 886 "text/plain", FILE_PATH_LITERAL(""), |
880 | 887 |
881 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 888 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
882 | 889 |
883 EXPECT_CRDOWNLOAD}, | 890 EXPECT_CRDOWNLOAD}, |
884 | 891 |
885 {SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 892 {SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
886 download_util::NOT_DANGEROUS, "http://example.com/foo.txt", "text/plain", | 893 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", |
887 FILE_PATH_LITERAL(""), | 894 "text/plain", FILE_PATH_LITERAL(""), |
888 | 895 |
889 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_PROMPT, | 896 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_PROMPT, |
890 | 897 |
891 EXPECT_CRDOWNLOAD}}; | 898 EXPECT_CRDOWNLOAD}}; |
892 | 899 |
893 for (size_t i = 0; i < arraysize(kInactiveTestCases); ++i) { | 900 for (size_t i = 0; i < arraysize(kInactiveTestCases); ++i) { |
894 SCOPED_TRACE(testing::Message() << "Running test case " << i); | 901 SCOPED_TRACE(testing::Message() << "Running test case " << i); |
895 const DownloadTestCase& test_case = kInactiveTestCases[i]; | 902 const DownloadTestCase& test_case = kInactiveTestCases[i]; |
896 std::unique_ptr<content::MockDownloadItem> item( | 903 std::unique_ptr<content::MockDownloadItem> item( |
897 CreateActiveDownloadItem(i, test_case)); | 904 CreateActiveDownloadItem(i, test_case)); |
898 EXPECT_CALL(*item.get(), GetState()) | 905 EXPECT_CALL(*item.get(), GetState()) |
899 .WillRepeatedly(Return(content::DownloadItem::CANCELLED)); | 906 .WillRepeatedly(Return(content::DownloadItem::CANCELLED)); |
900 | 907 |
901 EXPECT_CALL(*delegate(), PromptUserForDownloadPath(_, _, _)).Times(0); | 908 EXPECT_CALL(*delegate(), PromptUserForDownloadPath(_, _, _)).Times(0); |
902 EXPECT_CALL(*delegate(), NotifyExtensions(_, _, _)).Times(0); | 909 EXPECT_CALL(*delegate(), NotifyExtensions(_, _, _)).Times(0); |
903 EXPECT_CALL(*delegate(), ReserveVirtualPath(_, _, _, _, _)).Times(0); | 910 EXPECT_CALL(*delegate(), ReserveVirtualPath(_, _, _, _, _)).Times(0); |
904 EXPECT_CALL(*delegate(), DetermineLocalPath(_, _, _)).Times(1); | 911 EXPECT_CALL(*delegate(), DetermineLocalPath(_, _, _)).Times(1); |
905 RunTestCase(test_case, base::FilePath(), item.get()); | 912 RunTestCase(test_case, base::FilePath(), item.get()); |
906 } | 913 } |
907 } | 914 } |
908 | 915 |
909 // If the reserved path could not be verified, then the user should see a | 916 // If the reserved path could not be verified, then the user should see a |
910 // prompt. | 917 // prompt. |
911 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_ReservationFailed) { | 918 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_ReservationFailed) { |
912 const DownloadTestCase kReservationFailedCases[] = { | 919 const DownloadTestCase kReservationFailedCases[] = { |
913 {// 0: Automatic download. Since the reservation fails, the disposition of | 920 {// 0: Automatic download. Since the reservation fails, the disposition of |
914 // the target is to prompt, but the returned path is used. | 921 // the target is to prompt, but the returned path is used. |
915 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 922 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
916 download_util::NOT_DANGEROUS, "http://example.com/foo.txt", "text/plain", | 923 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", |
917 FILE_PATH_LITERAL(""), | 924 "text/plain", FILE_PATH_LITERAL(""), |
918 | 925 |
919 FILE_PATH_LITERAL("bar.txt"), DownloadItem::TARGET_DISPOSITION_PROMPT, | 926 FILE_PATH_LITERAL("bar.txt"), DownloadItem::TARGET_DISPOSITION_PROMPT, |
920 | 927 |
921 EXPECT_CRDOWNLOAD}, | 928 EXPECT_CRDOWNLOAD}, |
922 }; | 929 }; |
923 | 930 |
924 // Setup ReserveVirtualPath() to fail. | 931 // Setup ReserveVirtualPath() to fail. |
925 ON_CALL(*delegate(), ReserveVirtualPath(_, _, _, _, _)) | 932 ON_CALL(*delegate(), ReserveVirtualPath(_, _, _, _, _)) |
926 .WillByDefault(WithArg<4>(ScheduleCallback2( | 933 .WillByDefault(WithArg<4>(ScheduleCallback2( |
927 GetPathInDownloadDir(FILE_PATH_LITERAL("bar.txt")), false))); | 934 GetPathInDownloadDir(FILE_PATH_LITERAL("bar.txt")), false))); |
928 RunTestCasesWithActiveItem(kReservationFailedCases, | 935 RunTestCasesWithActiveItem(kReservationFailedCases, |
929 arraysize(kReservationFailedCases)); | 936 arraysize(kReservationFailedCases)); |
930 } | 937 } |
931 | 938 |
932 // If the local path could not be determined, the download should be cancelled. | 939 // If the local path could not be determined, the download should be cancelled. |
933 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_LocalPathFailed) { | 940 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_LocalPathFailed) { |
934 const DownloadTestCase kLocalPathFailedCases[] = { | 941 const DownloadTestCase kLocalPathFailedCases[] = { |
935 {// 0: Automatic download. | 942 {// 0: Automatic download. |
936 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 943 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
937 download_util::NOT_DANGEROUS, "http://example.com/foo.txt", "text/plain", | 944 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", |
938 FILE_PATH_LITERAL(""), | 945 "text/plain", FILE_PATH_LITERAL(""), |
939 | 946 |
940 FILE_PATH_LITERAL(""), DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 947 FILE_PATH_LITERAL(""), DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
941 | 948 |
942 EXPECT_LOCAL_PATH}, | 949 EXPECT_LOCAL_PATH}, |
943 }; | 950 }; |
944 | 951 |
945 // The default download directory is the virtual path. | 952 // The default download directory is the virtual path. |
946 download_prefs()->SetDownloadPath(test_virtual_dir()); | 953 download_prefs()->SetDownloadPath(test_virtual_dir()); |
947 // Simulate failed call to DetermineLocalPath. | 954 // Simulate failed call to DetermineLocalPath. |
948 EXPECT_CALL(*delegate(), DetermineLocalPath( | 955 EXPECT_CALL(*delegate(), DetermineLocalPath( |
949 _, GetPathInDownloadDir(FILE_PATH_LITERAL("virtual/foo.txt")), _)) | 956 _, GetPathInDownloadDir(FILE_PATH_LITERAL("virtual/foo.txt")), _)) |
950 .WillOnce(WithArg<2>(ScheduleCallback(base::FilePath()))); | 957 .WillOnce(WithArg<2>(ScheduleCallback(base::FilePath()))); |
951 RunTestCasesWithActiveItem(kLocalPathFailedCases, | 958 RunTestCasesWithActiveItem(kLocalPathFailedCases, |
952 arraysize(kLocalPathFailedCases)); | 959 arraysize(kLocalPathFailedCases)); |
953 } | 960 } |
954 | 961 |
955 // Downloads that have a danger level of ALLOW_ON_USER_GESTURE should be marked | 962 // Downloads that have a danger level of ALLOW_ON_USER_GESTURE should be marked |
956 // as safe depending on whether there was a user gesture associated with the | 963 // as safe depending on whether there was a user gesture associated with the |
957 // download and whether the referrer was visited prior to today. | 964 // download and whether the referrer was visited prior to today. |
958 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_VisitedReferrer) { | 965 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_VisitedReferrer) { |
959 const DownloadTestCase kVisitedReferrerCases[] = { | 966 const DownloadTestCase kVisitedReferrerCases[] = { |
960 // http://visited.example.com/ is added to the history as a visit that | 967 // http://visited.example.com/ is added to the history as a visit that |
961 // happened prior to today. | 968 // happened prior to today. |
962 {// 0: Safe download due to visiting referrer before. | 969 {// 0: Safe download due to visiting referrer before. |
963 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 970 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
964 download_util::NOT_DANGEROUS, "http://visited.example.com/foo.crx", | 971 DownloadFileType::NOT_DANGEROUS, "http://visited.example.com/foo.crx", |
965 "application/xml", FILE_PATH_LITERAL(""), | 972 "application/xml", FILE_PATH_LITERAL(""), |
966 | 973 |
967 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 974 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
968 | 975 |
969 EXPECT_CRDOWNLOAD}, | 976 EXPECT_CRDOWNLOAD}, |
970 | 977 |
971 {// 1: Dangerous due to not having visited referrer before. | 978 {// 1: Dangerous due to not having visited referrer before. |
972 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE, | 979 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE, |
973 download_util::ALLOW_ON_USER_GESTURE, | 980 DownloadFileType::ALLOW_ON_USER_GESTURE, |
974 "http://not-visited.example.com/foo.crx", "application/xml", | 981 "http://not-visited.example.com/foo.crx", "application/xml", |
975 FILE_PATH_LITERAL(""), | 982 FILE_PATH_LITERAL(""), |
976 | 983 |
977 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 984 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
978 | 985 |
979 EXPECT_UNCONFIRMED}, | 986 EXPECT_UNCONFIRMED}, |
980 | 987 |
981 {// 2: Safe because the user is being prompted. | 988 {// 2: Safe because the user is being prompted. |
982 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 989 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
983 download_util::NOT_DANGEROUS, "http://not-visited.example.com/foo.crx", | 990 DownloadFileType::NOT_DANGEROUS, |
984 "application/xml", FILE_PATH_LITERAL(""), | 991 "http://not-visited.example.com/foo.crx", "application/xml", |
| 992 FILE_PATH_LITERAL(""), |
985 | 993 |
986 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_PROMPT, | 994 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_PROMPT, |
987 | 995 |
988 EXPECT_CRDOWNLOAD}, | 996 EXPECT_CRDOWNLOAD}, |
989 | 997 |
990 {// 3: Safe because of forced path. | 998 {// 3: Safe because of forced path. |
991 FORCED, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 999 FORCED, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
992 download_util::NOT_DANGEROUS, "http://not-visited.example.com/foo.crx", | 1000 DownloadFileType::NOT_DANGEROUS, |
993 "application/xml", FILE_PATH_LITERAL("foo.crx"), | 1001 "http://not-visited.example.com/foo.crx", "application/xml", |
| 1002 FILE_PATH_LITERAL("foo.crx"), |
994 | 1003 |
995 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 1004 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
996 | 1005 |
997 EXPECT_LOCAL_PATH}, | 1006 EXPECT_LOCAL_PATH}, |
998 }; | 1007 }; |
999 | 1008 |
1000 // This test assumes that the danger level of .crx files is | 1009 // This test assumes that the danger level of .crx files is |
1001 // ALLOW_ON_USER_GESTURE. | 1010 // ALLOW_ON_USER_GESTURE. |
1002 ASSERT_EQ(download_util::ALLOW_ON_USER_GESTURE, | 1011 ASSERT_EQ(DownloadFileType::ALLOW_ON_USER_GESTURE, |
1003 download_util::GetFileDangerLevel( | 1012 Policies()->GetFileDangerLevel( |
1004 base::FilePath(FILE_PATH_LITERAL("foo.crx")))); | 1013 base::FilePath(FILE_PATH_LITERAL("foo.crx")))); |
1005 | 1014 |
1006 // First the history service must exist. | 1015 // First the history service must exist. |
1007 ASSERT_TRUE(profile()->CreateHistoryService(false, false)); | 1016 ASSERT_TRUE(profile()->CreateHistoryService(false, false)); |
1008 | 1017 |
1009 GURL url("http://visited.example.com/visited-link.html"); | 1018 GURL url("http://visited.example.com/visited-link.html"); |
1010 // The time of visit is picked to be several seconds prior to the most recent | 1019 // The time of visit is picked to be several seconds prior to the most recent |
1011 // midnight. | 1020 // midnight. |
1012 base::Time time_of_visit( | 1021 base::Time time_of_visit( |
1013 base::Time::Now().LocalMidnight() - base::TimeDelta::FromSeconds(10)); | 1022 base::Time::Now().LocalMidnight() - base::TimeDelta::FromSeconds(10)); |
1014 history::HistoryService* history_service = | 1023 history::HistoryService* history_service = |
1015 HistoryServiceFactory::GetForProfile(profile(), | 1024 HistoryServiceFactory::GetForProfile(profile(), |
1016 ServiceAccessType::EXPLICIT_ACCESS); | 1025 ServiceAccessType::EXPLICIT_ACCESS); |
1017 ASSERT_TRUE(history_service); | 1026 ASSERT_TRUE(history_service); |
1018 history_service->AddPage(url, time_of_visit, history::SOURCE_BROWSED); | 1027 history_service->AddPage(url, time_of_visit, history::SOURCE_BROWSED); |
1019 | 1028 |
1020 RunTestCasesWithActiveItem(kVisitedReferrerCases, | 1029 RunTestCasesWithActiveItem(kVisitedReferrerCases, |
1021 arraysize(kVisitedReferrerCases)); | 1030 arraysize(kVisitedReferrerCases)); |
1022 } | 1031 } |
1023 | 1032 |
1024 // These test cases are run with "Prompt for download" user preference set to | 1033 // These test cases are run with "Prompt for download" user preference set to |
1025 // true. | 1034 // true. |
1026 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_PromptAlways) { | 1035 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_PromptAlways) { |
1027 const DownloadTestCase kPromptingTestCases[] = { | 1036 const DownloadTestCase kPromptingTestCases[] = { |
1028 {// 0: Safe Automatic - Should prompt because of "Prompt for download" | 1037 {// 0: Safe Automatic - Should prompt because of "Prompt for download" |
1029 // preference setting. | 1038 // preference setting. |
1030 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 1039 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
1031 download_util::NOT_DANGEROUS, "http://example.com/foo.txt", "text/plain", | 1040 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", |
1032 FILE_PATH_LITERAL(""), | 1041 "text/plain", FILE_PATH_LITERAL(""), |
1033 | 1042 |
1034 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_PROMPT, | 1043 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_PROMPT, |
1035 | 1044 |
1036 EXPECT_CRDOWNLOAD}, | 1045 EXPECT_CRDOWNLOAD}, |
1037 | 1046 |
1038 {// 1: Safe Forced - Shouldn't prompt. | 1047 {// 1: Safe Forced - Shouldn't prompt. |
1039 FORCED, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 1048 FORCED, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
1040 download_util::NOT_DANGEROUS, "http://example.com/foo.txt", "text/plain", | 1049 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", |
1041 FILE_PATH_LITERAL("foo.txt"), | 1050 "text/plain", FILE_PATH_LITERAL("foo.txt"), |
1042 | 1051 |
1043 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 1052 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
1044 | 1053 |
1045 EXPECT_LOCAL_PATH}, | 1054 EXPECT_LOCAL_PATH}, |
1046 | 1055 |
1047 {// 2: Automatic - The filename extension is marked as one that we will | 1056 {// 2: Automatic - The filename extension is marked as one that we will |
1048 // open automatically. Shouldn't prompt. | 1057 // open automatically. Shouldn't prompt. |
1049 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 1058 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
1050 download_util::NOT_DANGEROUS, "http://example.com/foo.dummy", "", | 1059 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.dummy", "", |
1051 FILE_PATH_LITERAL(""), | 1060 FILE_PATH_LITERAL(""), |
1052 | 1061 |
1053 FILE_PATH_LITERAL("foo.dummy"), | 1062 FILE_PATH_LITERAL("foo.dummy"), |
1054 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 1063 DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
1055 | 1064 |
1056 EXPECT_CRDOWNLOAD}, | 1065 EXPECT_CRDOWNLOAD}, |
1057 }; | 1066 }; |
1058 | 1067 |
1059 SetPromptForDownload(true); | 1068 SetPromptForDownload(true); |
1060 EnableAutoOpenBasedOnExtension( | 1069 EnableAutoOpenBasedOnExtension( |
1061 base::FilePath(FILE_PATH_LITERAL("dummy.dummy"))); | 1070 base::FilePath(FILE_PATH_LITERAL("dummy.dummy"))); |
1062 RunTestCasesWithActiveItem(kPromptingTestCases, | 1071 RunTestCasesWithActiveItem(kPromptingTestCases, |
1063 arraysize(kPromptingTestCases)); | 1072 arraysize(kPromptingTestCases)); |
1064 } | 1073 } |
1065 | 1074 |
1066 #if defined(ENABLE_EXTENSIONS) | 1075 #if defined(ENABLE_EXTENSIONS) |
1067 // These test cases are run with "Prompt for download" user preference set to | 1076 // These test cases are run with "Prompt for download" user preference set to |
1068 // true. Automatic extension downloads shouldn't cause prompting. | 1077 // true. Automatic extension downloads shouldn't cause prompting. |
1069 // Android doesn't support extensions. | 1078 // Android doesn't support extensions. |
1070 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_PromptAlways_Extension) { | 1079 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_PromptAlways_Extension) { |
1071 const DownloadTestCase kPromptingTestCases[] = { | 1080 const DownloadTestCase kPromptingTestCases[] = { |
1072 {// 0: Automatic Browser Extension download. - Shouldn't prompt for browser | 1081 {// 0: Automatic Browser Extension download. - Shouldn't prompt for browser |
1073 // extension downloads even if "Prompt for download" preference is set. | 1082 // extension downloads even if "Prompt for download" preference is set. |
1074 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE, | 1083 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE, |
1075 download_util::ALLOW_ON_USER_GESTURE, "http://example.com/foo.crx", | 1084 DownloadFileType::ALLOW_ON_USER_GESTURE, "http://example.com/foo.crx", |
1076 extensions::Extension::kMimeType, FILE_PATH_LITERAL(""), | 1085 extensions::Extension::kMimeType, FILE_PATH_LITERAL(""), |
1077 | 1086 |
1078 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 1087 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
1079 | 1088 |
1080 EXPECT_UNCONFIRMED}, | 1089 EXPECT_UNCONFIRMED}, |
1081 | 1090 |
1082 #if defined(OS_WIN) | 1091 #if defined(OS_WIN) |
1083 {// 1: Automatic User Script - Shouldn't prompt for user script downloads | 1092 {// 1: Automatic User Script - Shouldn't prompt for user script downloads |
1084 // even if "Prompt for download" preference is set. ".js" files are | 1093 // even if "Prompt for download" preference is set. ".js" files are |
1085 // considered dangerous on Windows. | 1094 // considered dangerous on Windows. |
1086 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE, | 1095 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE, |
1087 download_util::ALLOW_ON_USER_GESTURE, "http://example.com/foo.user.js", "", | 1096 DownloadFileType::ALLOW_ON_USER_GESTURE, "http://example.com/foo.user.js",
"", |
1088 FILE_PATH_LITERAL(""), | 1097 FILE_PATH_LITERAL(""), |
1089 | 1098 |
1090 FILE_PATH_LITERAL("foo.user.js"), | 1099 FILE_PATH_LITERAL("foo.user.js"), |
1091 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 1100 DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
1092 | 1101 |
1093 EXPECT_UNCONFIRMED}, | 1102 EXPECT_UNCONFIRMED}, |
1094 #else | 1103 #else |
1095 {// 1: Automatic User Script - Shouldn't prompt for user script downloads | 1104 {// 1: Automatic User Script - Shouldn't prompt for user script downloads |
1096 // even if "Prompt for download" preference is set. | 1105 // even if "Prompt for download" preference is set. |
1097 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 1106 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
1098 download_util::NOT_DANGEROUS, "http://example.com/foo.user.js", "", | 1107 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.user.js", "", |
1099 FILE_PATH_LITERAL(""), | 1108 FILE_PATH_LITERAL(""), |
1100 | 1109 |
1101 FILE_PATH_LITERAL("foo.user.js"), | 1110 FILE_PATH_LITERAL("foo.user.js"), |
1102 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 1111 DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
1103 | 1112 |
1104 EXPECT_CRDOWNLOAD}, | 1113 EXPECT_CRDOWNLOAD}, |
1105 #endif | 1114 #endif |
1106 }; | 1115 }; |
1107 | 1116 |
1108 SetPromptForDownload(true); | 1117 SetPromptForDownload(true); |
1109 RunTestCasesWithActiveItem(kPromptingTestCases, | 1118 RunTestCasesWithActiveItem(kPromptingTestCases, |
1110 arraysize(kPromptingTestCases)); | 1119 arraysize(kPromptingTestCases)); |
1111 } | 1120 } |
1112 #endif // defined(ENABLE_EXTENSIONS) | 1121 #endif // defined(ENABLE_EXTENSIONS) |
1113 | 1122 |
1114 // If the download path is managed, then we don't show any prompts. | 1123 // If the download path is managed, then we don't show any prompts. |
1115 // Note that if the download path is managed, then PromptForDownload() is false. | 1124 // Note that if the download path is managed, then PromptForDownload() is false. |
1116 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_ManagedPath) { | 1125 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_ManagedPath) { |
1117 const DownloadTestCase kManagedPathTestCases[] = { | 1126 const DownloadTestCase kManagedPathTestCases[] = { |
1118 {// 0: Automatic Safe | 1127 {// 0: Automatic Safe |
1119 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 1128 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
1120 download_util::NOT_DANGEROUS, "http://example.com/foo.txt", "text/plain", | 1129 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", |
1121 FILE_PATH_LITERAL(""), | 1130 "text/plain", FILE_PATH_LITERAL(""), |
1122 | 1131 |
1123 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 1132 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
1124 | 1133 |
1125 EXPECT_CRDOWNLOAD}, | 1134 EXPECT_CRDOWNLOAD}, |
1126 | 1135 |
1127 {// 1: Save_As Safe | 1136 {// 1: Save_As Safe |
1128 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 1137 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
1129 download_util::NOT_DANGEROUS, "http://example.com/foo.txt", "text/plain", | 1138 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", |
1130 FILE_PATH_LITERAL(""), | 1139 "text/plain", FILE_PATH_LITERAL(""), |
1131 | 1140 |
1132 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 1141 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
1133 | 1142 |
1134 EXPECT_CRDOWNLOAD}, | 1143 EXPECT_CRDOWNLOAD}, |
1135 }; | 1144 }; |
1136 | 1145 |
1137 SetManagedDownloadPath(test_download_dir()); | 1146 SetManagedDownloadPath(test_download_dir()); |
1138 ASSERT_TRUE(download_prefs()->IsDownloadPathManaged()); | 1147 ASSERT_TRUE(download_prefs()->IsDownloadPathManaged()); |
1139 RunTestCasesWithActiveItem(kManagedPathTestCases, | 1148 RunTestCasesWithActiveItem(kManagedPathTestCases, |
1140 arraysize(kManagedPathTestCases)); | 1149 arraysize(kManagedPathTestCases)); |
1141 } | 1150 } |
1142 | 1151 |
1143 // Test basic functionality supporting extensions that want to override download | 1152 // Test basic functionality supporting extensions that want to override download |
1144 // filenames. | 1153 // filenames. |
1145 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_NotifyExtensionsSafe) { | 1154 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_NotifyExtensionsSafe) { |
1146 const DownloadTestCase kNotifyExtensionsTestCases[] = { | 1155 const DownloadTestCase kNotifyExtensionsTestCases[] = { |
1147 {// 0: Automatic Safe | 1156 {// 0: Automatic Safe |
1148 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 1157 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
1149 download_util::NOT_DANGEROUS, "http://example.com/foo.txt", "text/plain", | 1158 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", |
1150 FILE_PATH_LITERAL(""), | 1159 "text/plain", FILE_PATH_LITERAL(""), |
1151 | 1160 |
1152 FILE_PATH_LITERAL("overridden/foo.txt"), | 1161 FILE_PATH_LITERAL("overridden/foo.txt"), |
1153 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 1162 DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
1154 | 1163 |
1155 EXPECT_CRDOWNLOAD}, | 1164 EXPECT_CRDOWNLOAD}, |
1156 | 1165 |
1157 {// 1: Save_As Safe | 1166 {// 1: Save_As Safe |
1158 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 1167 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
1159 download_util::NOT_DANGEROUS, "http://example.com/foo.txt", "text/plain", | 1168 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", |
1160 FILE_PATH_LITERAL(""), | 1169 "text/plain", FILE_PATH_LITERAL(""), |
1161 | 1170 |
1162 FILE_PATH_LITERAL("overridden/foo.txt"), | 1171 FILE_PATH_LITERAL("overridden/foo.txt"), |
1163 DownloadItem::TARGET_DISPOSITION_PROMPT, | 1172 DownloadItem::TARGET_DISPOSITION_PROMPT, |
1164 | 1173 |
1165 EXPECT_CRDOWNLOAD}, | 1174 EXPECT_CRDOWNLOAD}, |
1166 | 1175 |
1167 {// 2: Automatic Dangerous | 1176 {// 2: Automatic Dangerous |
1168 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE, | 1177 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE, |
1169 download_util::ALLOW_ON_USER_GESTURE, "http://example.com/foo.crx", "", | 1178 DownloadFileType::ALLOW_ON_USER_GESTURE, "http://example.com/foo.crx", |
1170 FILE_PATH_LITERAL(""), | 1179 "", FILE_PATH_LITERAL(""), |
1171 | 1180 |
1172 FILE_PATH_LITERAL("overridden/foo.crx"), | 1181 FILE_PATH_LITERAL("overridden/foo.crx"), |
1173 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 1182 DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
1174 | 1183 |
1175 EXPECT_UNCONFIRMED}, | 1184 EXPECT_UNCONFIRMED}, |
1176 | 1185 |
1177 {// 3: Forced Safe | 1186 {// 3: Forced Safe |
1178 FORCED, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 1187 FORCED, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
1179 download_util::NOT_DANGEROUS, "http://example.com/foo.txt", "", | 1188 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", "", |
1180 FILE_PATH_LITERAL("forced-foo.txt"), | 1189 FILE_PATH_LITERAL("forced-foo.txt"), |
1181 | 1190 |
1182 FILE_PATH_LITERAL("forced-foo.txt"), | 1191 FILE_PATH_LITERAL("forced-foo.txt"), |
1183 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 1192 DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
1184 | 1193 |
1185 EXPECT_LOCAL_PATH}, | 1194 EXPECT_LOCAL_PATH}, |
1186 }; | 1195 }; |
1187 | 1196 |
1188 ON_CALL(*delegate(), NotifyExtensions(_, _, _)) | 1197 ON_CALL(*delegate(), NotifyExtensions(_, _, _)) |
1189 .WillByDefault(Invoke(&NotifyExtensionsOverridePath)); | 1198 .WillByDefault(Invoke(&NotifyExtensionsOverridePath)); |
1190 RunTestCasesWithActiveItem(kNotifyExtensionsTestCases, | 1199 RunTestCasesWithActiveItem(kNotifyExtensionsTestCases, |
1191 arraysize(kNotifyExtensionsTestCases)); | 1200 arraysize(kNotifyExtensionsTestCases)); |
1192 } | 1201 } |
1193 | 1202 |
1194 // Test that filenames provided by extensions are passed into SafeBrowsing | 1203 // Test that filenames provided by extensions are passed into SafeBrowsing |
1195 // checks and dangerous download checks. | 1204 // checks and dangerous download checks. |
1196 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_NotifyExtensionsUnsafe) { | 1205 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_NotifyExtensionsUnsafe) { |
1197 const DownloadTestCase kNotHandledBySafeBrowsing = { | 1206 const DownloadTestCase kNotHandledBySafeBrowsing = { |
1198 AUTOMATIC, | 1207 AUTOMATIC, |
1199 content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE, | 1208 content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE, |
1200 download_util::ALLOW_ON_USER_GESTURE, | 1209 DownloadFileType::ALLOW_ON_USER_GESTURE, |
1201 "http://example.com/foo.crx.remove", | 1210 "http://example.com/foo.crx.remove", |
1202 "text/plain", | 1211 "text/plain", |
1203 FILE_PATH_LITERAL(""), | 1212 FILE_PATH_LITERAL(""), |
1204 | 1213 |
1205 FILE_PATH_LITERAL("overridden/foo.crx"), | 1214 FILE_PATH_LITERAL("overridden/foo.crx"), |
1206 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 1215 DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
1207 | 1216 |
1208 EXPECT_UNCONFIRMED}; | 1217 EXPECT_UNCONFIRMED}; |
1209 | 1218 |
1210 const DownloadTestCase kHandledBySafeBrowsing = { | 1219 const DownloadTestCase kHandledBySafeBrowsing = { |
1211 AUTOMATIC, | 1220 AUTOMATIC, |
1212 content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT, | 1221 content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT, |
1213 download_util::ALLOW_ON_USER_GESTURE, | 1222 DownloadFileType::ALLOW_ON_USER_GESTURE, |
1214 "http://example.com/foo.crx.remove", | 1223 "http://example.com/foo.crx.remove", |
1215 "text/plain", | 1224 "text/plain", |
1216 FILE_PATH_LITERAL(""), | 1225 FILE_PATH_LITERAL(""), |
1217 | 1226 |
1218 FILE_PATH_LITERAL("overridden/foo.crx"), | 1227 FILE_PATH_LITERAL("overridden/foo.crx"), |
1219 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 1228 DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
1220 | 1229 |
1221 EXPECT_UNCONFIRMED}; | 1230 EXPECT_UNCONFIRMED}; |
1222 | 1231 |
1223 ON_CALL(*delegate(), NotifyExtensions(_, _, _)) | 1232 ON_CALL(*delegate(), NotifyExtensions(_, _, _)) |
1224 .WillByDefault(Invoke(&NotifyExtensionsOverridePath)); | 1233 .WillByDefault(Invoke(&NotifyExtensionsOverridePath)); |
1225 RunTestCasesWithActiveItem(&kNotHandledBySafeBrowsing, 1); | 1234 RunTestCasesWithActiveItem(&kNotHandledBySafeBrowsing, 1); |
1226 | 1235 |
1227 ON_CALL(*delegate(), CheckDownloadUrl(_, _, _)) | 1236 ON_CALL(*delegate(), CheckDownloadUrl(_, _, _)) |
1228 .WillByDefault(WithArg<2>(ScheduleCallback( | 1237 .WillByDefault(WithArg<2>(ScheduleCallback( |
1229 content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT))); | 1238 content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT))); |
1230 RunTestCasesWithActiveItem(&kHandledBySafeBrowsing, 1); | 1239 RunTestCasesWithActiveItem(&kHandledBySafeBrowsing, 1); |
1231 } | 1240 } |
1232 | 1241 |
1233 // Test that conflict actions set by extensions are passed correctly into | 1242 // Test that conflict actions set by extensions are passed correctly into |
1234 // ReserveVirtualPath. | 1243 // ReserveVirtualPath. |
1235 TEST_F(DownloadTargetDeterminerTest, | 1244 TEST_F(DownloadTargetDeterminerTest, |
1236 TargetDeterminer_NotifyExtensionsConflict) { | 1245 TargetDeterminer_NotifyExtensionsConflict) { |
1237 const DownloadTestCase kNotifyExtensionsTestCase = { | 1246 const DownloadTestCase kNotifyExtensionsTestCase = { |
1238 AUTOMATIC, | 1247 AUTOMATIC, |
1239 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 1248 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
1240 download_util::NOT_DANGEROUS, | 1249 DownloadFileType::NOT_DANGEROUS, |
1241 "http://example.com/foo.txt", | 1250 "http://example.com/foo.txt", |
1242 "text/plain", | 1251 "text/plain", |
1243 FILE_PATH_LITERAL(""), | 1252 FILE_PATH_LITERAL(""), |
1244 | 1253 |
1245 FILE_PATH_LITERAL("overridden/foo.txt"), | 1254 FILE_PATH_LITERAL("overridden/foo.txt"), |
1246 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 1255 DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
1247 | 1256 |
1248 EXPECT_CRDOWNLOAD}; | 1257 EXPECT_CRDOWNLOAD}; |
1249 | 1258 |
1250 const DownloadTestCase& test_case = kNotifyExtensionsTestCase; | 1259 const DownloadTestCase& test_case = kNotifyExtensionsTestCase; |
(...skipping 27 matching lines...) Expand all Loading... |
1278 RunTestCase(test_case, base::FilePath(), item.get()); | 1287 RunTestCase(test_case, base::FilePath(), item.get()); |
1279 } | 1288 } |
1280 | 1289 |
1281 // Test that relative paths returned by extensions are always relative to the | 1290 // Test that relative paths returned by extensions are always relative to the |
1282 // default downloads path. | 1291 // default downloads path. |
1283 TEST_F(DownloadTargetDeterminerTest, | 1292 TEST_F(DownloadTargetDeterminerTest, |
1284 TargetDeterminer_NotifyExtensionsDefaultPath) { | 1293 TargetDeterminer_NotifyExtensionsDefaultPath) { |
1285 const DownloadTestCase kNotifyExtensionsTestCase = { | 1294 const DownloadTestCase kNotifyExtensionsTestCase = { |
1286 SAVE_AS, | 1295 SAVE_AS, |
1287 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 1296 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
1288 download_util::NOT_DANGEROUS, | 1297 DownloadFileType::NOT_DANGEROUS, |
1289 "http://example.com/foo.txt", | 1298 "http://example.com/foo.txt", |
1290 "text/plain", | 1299 "text/plain", |
1291 FILE_PATH_LITERAL(""), | 1300 FILE_PATH_LITERAL(""), |
1292 | 1301 |
1293 FILE_PATH_LITERAL("overridden/foo.txt"), | 1302 FILE_PATH_LITERAL("overridden/foo.txt"), |
1294 DownloadItem::TARGET_DISPOSITION_PROMPT, | 1303 DownloadItem::TARGET_DISPOSITION_PROMPT, |
1295 | 1304 |
1296 EXPECT_CRDOWNLOAD}; | 1305 EXPECT_CRDOWNLOAD}; |
1297 | 1306 |
1298 const DownloadTestCase& test_case = kNotifyExtensionsTestCase; | 1307 const DownloadTestCase& test_case = kNotifyExtensionsTestCase; |
(...skipping 21 matching lines...) Expand all Loading... |
1320 TargetDeterminer_InitialVirtualPathUnsafe) { | 1329 TargetDeterminer_InitialVirtualPathUnsafe) { |
1321 const base::FilePath::CharType* kInitialPath = | 1330 const base::FilePath::CharType* kInitialPath = |
1322 FILE_PATH_LITERAL("some_path/bar.html"); | 1331 FILE_PATH_LITERAL("some_path/bar.html"); |
1323 | 1332 |
1324 const DownloadTestCase kInitialPathTestCase = { | 1333 const DownloadTestCase kInitialPathTestCase = { |
1325 // 0: Save As Save. The path generated based on the DownloadItem is safe, | 1334 // 0: Save As Save. The path generated based on the DownloadItem is safe, |
1326 // but the initial path is unsafe. However, the download is not considered | 1335 // but the initial path is unsafe. However, the download is not considered |
1327 // dangerous since the user has been prompted. | 1336 // dangerous since the user has been prompted. |
1328 SAVE_AS, | 1337 SAVE_AS, |
1329 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 1338 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
1330 download_util::NOT_DANGEROUS, | 1339 DownloadFileType::NOT_DANGEROUS, |
1331 "http://example.com/foo.txt", | 1340 "http://example.com/foo.txt", |
1332 "text/plain", | 1341 "text/plain", |
1333 FILE_PATH_LITERAL(""), | 1342 FILE_PATH_LITERAL(""), |
1334 | 1343 |
1335 kInitialPath, | 1344 kInitialPath, |
1336 DownloadItem::TARGET_DISPOSITION_PROMPT, | 1345 DownloadItem::TARGET_DISPOSITION_PROMPT, |
1337 | 1346 |
1338 EXPECT_CRDOWNLOAD}; | 1347 EXPECT_CRDOWNLOAD}; |
1339 | 1348 |
1340 const DownloadTestCase& test_case = kInitialPathTestCase; | 1349 const DownloadTestCase& test_case = kInitialPathTestCase; |
(...skipping 15 matching lines...) Expand all Loading... |
1356 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_ResumedNoPrompt) { | 1365 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_ResumedNoPrompt) { |
1357 // All test cases run with GetPathInDownloadDir(kInitialPath) as the inital | 1366 // All test cases run with GetPathInDownloadDir(kInitialPath) as the inital |
1358 // path. | 1367 // path. |
1359 const base::FilePath::CharType* kInitialPath = | 1368 const base::FilePath::CharType* kInitialPath = |
1360 FILE_PATH_LITERAL("some_path/bar.txt"); | 1369 FILE_PATH_LITERAL("some_path/bar.txt"); |
1361 | 1370 |
1362 const DownloadTestCase kResumedTestCases[] = { | 1371 const DownloadTestCase kResumedTestCases[] = { |
1363 {// 0: Automatic Safe: Initial path is ignored since the user has not been | 1372 {// 0: Automatic Safe: Initial path is ignored since the user has not been |
1364 // prompted before. | 1373 // prompted before. |
1365 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 1374 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
1366 download_util::NOT_DANGEROUS, "http://example.com/foo.txt", "text/plain", | 1375 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", "text/plai
n", |
1367 FILE_PATH_LITERAL(""), | 1376 FILE_PATH_LITERAL(""), |
1368 | 1377 |
1369 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 1378 FILE_PATH_LITERAL("foo.txt"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
1370 | 1379 |
1371 EXPECT_CRDOWNLOAD}, | 1380 EXPECT_CRDOWNLOAD}, |
1372 | 1381 |
1373 {// 1: Save_As Safe: Initial path used. | 1382 {// 1: Save_As Safe: Initial path used. |
1374 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 1383 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
1375 download_util::NOT_DANGEROUS, "http://example.com/foo.txt", "text/plain", | 1384 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", "text/plai
n", |
1376 FILE_PATH_LITERAL(""), | 1385 FILE_PATH_LITERAL(""), |
1377 | 1386 |
1378 kInitialPath, DownloadItem::TARGET_DISPOSITION_PROMPT, | 1387 kInitialPath, DownloadItem::TARGET_DISPOSITION_PROMPT, |
1379 | 1388 |
1380 EXPECT_CRDOWNLOAD}, | 1389 EXPECT_CRDOWNLOAD}, |
1381 | 1390 |
1382 {// 2: Automatic Dangerous: Initial path is ignored since the user hasn't | 1391 {// 2: Automatic Dangerous: Initial path is ignored since the user hasn't |
1383 // been prompted before. | 1392 // been prompted before. |
1384 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE, | 1393 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE, |
1385 download_util::ALLOW_ON_USER_GESTURE, "http://example.com/foo.crx", "", | 1394 DownloadFileType::ALLOW_ON_USER_GESTURE, "http://example.com/foo.crx", ""
, |
1386 FILE_PATH_LITERAL(""), | 1395 FILE_PATH_LITERAL(""), |
1387 | 1396 |
1388 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 1397 FILE_PATH_LITERAL("foo.crx"), DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
1389 | 1398 |
1390 EXPECT_UNCONFIRMED}, | 1399 EXPECT_UNCONFIRMED}, |
1391 | 1400 |
1392 {// 3: Forced Safe: Initial path is ignored due to the forced path. | 1401 {// 3: Forced Safe: Initial path is ignored due to the forced path. |
1393 FORCED, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 1402 FORCED, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
1394 download_util::NOT_DANGEROUS, "http://example.com/foo.txt", "", | 1403 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", "", |
1395 FILE_PATH_LITERAL("forced-foo.txt"), | 1404 FILE_PATH_LITERAL("forced-foo.txt"), |
1396 | 1405 |
1397 FILE_PATH_LITERAL("forced-foo.txt"), | 1406 FILE_PATH_LITERAL("forced-foo.txt"), |
1398 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 1407 DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
1399 | 1408 |
1400 EXPECT_LOCAL_PATH}, | 1409 EXPECT_LOCAL_PATH}, |
1401 }; | 1410 }; |
1402 | 1411 |
1403 // The test assumes that .crx files have a danger level of | 1412 // The test assumes that .crx files have a danger level of |
1404 // ALLOW_ON_USER_GESTURE. | 1413 // ALLOW_ON_USER_GESTURE. |
1405 ASSERT_EQ(download_util::ALLOW_ON_USER_GESTURE, | 1414 ASSERT_EQ(DownloadFileType::ALLOW_ON_USER_GESTURE, |
1406 download_util::GetFileDangerLevel( | 1415 Policies()->GetFileDangerLevel( |
1407 base::FilePath(FILE_PATH_LITERAL("foo.crx")))); | 1416 base::FilePath(FILE_PATH_LITERAL("foo.crx")))); |
1408 for (size_t i = 0; i < arraysize(kResumedTestCases); ++i) { | 1417 for (size_t i = 0; i < arraysize(kResumedTestCases); ++i) { |
1409 SCOPED_TRACE(testing::Message() << "Running test case " << i); | 1418 SCOPED_TRACE(testing::Message() << "Running test case " << i); |
1410 const DownloadTestCase& test_case = kResumedTestCases[i]; | 1419 const DownloadTestCase& test_case = kResumedTestCases[i]; |
1411 std::unique_ptr<content::MockDownloadItem> item( | 1420 std::unique_ptr<content::MockDownloadItem> item( |
1412 CreateActiveDownloadItem(i, test_case)); | 1421 CreateActiveDownloadItem(i, test_case)); |
1413 base::FilePath expected_path = | 1422 base::FilePath expected_path = |
1414 GetPathInDownloadDir(test_case.expected_local_path); | 1423 GetPathInDownloadDir(test_case.expected_local_path); |
1415 ON_CALL(*item.get(), GetLastReason()) | 1424 ON_CALL(*item.get(), GetLastReason()) |
1416 .WillByDefault(Return( | 1425 .WillByDefault(Return( |
(...skipping 14 matching lines...) Expand all Loading... |
1431 | 1440 |
1432 // Test that a forced download doesn't prompt, even if the interrupt reason | 1441 // Test that a forced download doesn't prompt, even if the interrupt reason |
1433 // suggests that the target path may not be suitable for downloads. | 1442 // suggests that the target path may not be suitable for downloads. |
1434 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_ResumedForcedDownload) { | 1443 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_ResumedForcedDownload) { |
1435 const base::FilePath::CharType* kInitialPath = | 1444 const base::FilePath::CharType* kInitialPath = |
1436 FILE_PATH_LITERAL("some_path/bar.txt"); | 1445 FILE_PATH_LITERAL("some_path/bar.txt"); |
1437 const DownloadTestCase kResumedForcedDownload = { | 1446 const DownloadTestCase kResumedForcedDownload = { |
1438 // 3: Forced Safe | 1447 // 3: Forced Safe |
1439 FORCED, | 1448 FORCED, |
1440 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 1449 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
1441 download_util::NOT_DANGEROUS, | 1450 DownloadFileType::NOT_DANGEROUS, |
1442 "http://example.com/foo.txt", | 1451 "http://example.com/foo.txt", |
1443 "", | 1452 "", |
1444 FILE_PATH_LITERAL("forced-foo.txt"), | 1453 FILE_PATH_LITERAL("forced-foo.txt"), |
1445 | 1454 |
1446 FILE_PATH_LITERAL("forced-foo.txt"), | 1455 FILE_PATH_LITERAL("forced-foo.txt"), |
1447 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 1456 DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
1448 | 1457 |
1449 EXPECT_LOCAL_PATH}; | 1458 EXPECT_LOCAL_PATH}; |
1450 | 1459 |
1451 const DownloadTestCase& test_case = kResumedForcedDownload; | 1460 const DownloadTestCase& test_case = kResumedForcedDownload; |
(...skipping 20 matching lines...) Expand all Loading... |
1472 // error is set to NO_SPACE. | 1481 // error is set to NO_SPACE. |
1473 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_ResumedWithPrompt) { | 1482 TEST_F(DownloadTargetDeterminerTest, TargetDeterminer_ResumedWithPrompt) { |
1474 // All test cases run with GetPathInDownloadDir(kInitialPath) as the inital | 1483 // All test cases run with GetPathInDownloadDir(kInitialPath) as the inital |
1475 // path. | 1484 // path. |
1476 const base::FilePath::CharType* kInitialPath = | 1485 const base::FilePath::CharType* kInitialPath = |
1477 FILE_PATH_LITERAL("some_path/bar.txt"); | 1486 FILE_PATH_LITERAL("some_path/bar.txt"); |
1478 | 1487 |
1479 const DownloadTestCase kResumedTestCases[] = { | 1488 const DownloadTestCase kResumedTestCases[] = { |
1480 {// 0: Automatic Safe | 1489 {// 0: Automatic Safe |
1481 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 1490 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
1482 download_util::NOT_DANGEROUS, "http://example.com/foo.txt", "text/plain", | 1491 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", |
1483 FILE_PATH_LITERAL(""), | 1492 "text/plain", FILE_PATH_LITERAL(""), |
1484 | 1493 |
1485 FILE_PATH_LITERAL("foo.txt"), | 1494 FILE_PATH_LITERAL("foo.txt"), |
1486 #if BUILDFLAG(ANDROID_JAVA_UI) | 1495 #if BUILDFLAG(ANDROID_JAVA_UI) |
1487 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 1496 DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
1488 #else | 1497 #else |
1489 DownloadItem::TARGET_DISPOSITION_PROMPT, | 1498 DownloadItem::TARGET_DISPOSITION_PROMPT, |
1490 #endif | 1499 #endif |
1491 EXPECT_CRDOWNLOAD}, | 1500 EXPECT_CRDOWNLOAD}, |
1492 | 1501 |
1493 {// 1: Save_As Safe | 1502 {// 1: Save_As Safe |
1494 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 1503 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
1495 download_util::NOT_DANGEROUS, "http://example.com/foo.txt", "text/plain", | 1504 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", |
1496 FILE_PATH_LITERAL(""), | 1505 "text/plain", FILE_PATH_LITERAL(""), |
1497 | 1506 |
1498 kInitialPath, | 1507 kInitialPath, DownloadItem::TARGET_DISPOSITION_PROMPT, |
1499 DownloadItem::TARGET_DISPOSITION_PROMPT, | |
1500 | 1508 |
1501 EXPECT_CRDOWNLOAD}, | 1509 EXPECT_CRDOWNLOAD}, |
1502 | 1510 |
1503 {// 2: Automatic Dangerous | 1511 { |
1504 AUTOMATIC, | 1512 // 2: Automatic Dangerous |
| 1513 AUTOMATIC, |
1505 #if BUILDFLAG(ANDROID_JAVA_UI) | 1514 #if BUILDFLAG(ANDROID_JAVA_UI) |
1506 // If we don't prompt user, the file will be treated as dangerous. | 1515 // If we don't prompt user, the file will be treated as dangerous. |
1507 content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE, | 1516 content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE, |
1508 download_util::ALLOW_ON_USER_GESTURE, | 1517 DownloadFileType::ALLOW_ON_USER_GESTURE, |
1509 #else | 1518 #else |
1510 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 1519 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
1511 download_util::NOT_DANGEROUS, | 1520 DownloadFileType::NOT_DANGEROUS, |
1512 #endif | 1521 #endif |
1513 "http://example.com/foo.crx", "", | 1522 "http://example.com/foo.crx", "", FILE_PATH_LITERAL(""), |
1514 FILE_PATH_LITERAL(""), | |
1515 | 1523 |
1516 FILE_PATH_LITERAL("foo.crx"), | 1524 FILE_PATH_LITERAL("foo.crx"), |
1517 #if BUILDFLAG(ANDROID_JAVA_UI) | 1525 #if BUILDFLAG(ANDROID_JAVA_UI) |
1518 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 1526 DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
1519 // Dangerous download will have an unconfirmed intermediate file name. | 1527 // Dangerous download will have an unconfirmed intermediate file name. |
1520 EXPECT_UNCONFIRMED, | 1528 EXPECT_UNCONFIRMED, |
1521 #else | 1529 #else |
1522 DownloadItem::TARGET_DISPOSITION_PROMPT, | 1530 DownloadItem::TARGET_DISPOSITION_PROMPT, EXPECT_CRDOWNLOAD, |
1523 EXPECT_CRDOWNLOAD, | |
1524 #endif | 1531 #endif |
1525 }, | 1532 }, |
1526 }; | 1533 }; |
1527 | 1534 |
1528 // The test assumes that .xml files have a danger level of | 1535 // The test assumes that .xml files have a danger level of |
1529 // ALLOW_ON_USER_GESTURE. | 1536 // ALLOW_ON_USER_GESTURE. |
1530 ASSERT_EQ(download_util::ALLOW_ON_USER_GESTURE, | 1537 ASSERT_EQ(DownloadFileType::ALLOW_ON_USER_GESTURE, |
1531 download_util::GetFileDangerLevel( | 1538 Policies()->GetFileDangerLevel( |
1532 base::FilePath(FILE_PATH_LITERAL("foo.crx")))); | 1539 base::FilePath(FILE_PATH_LITERAL("foo.crx")))); |
1533 for (size_t i = 0; i < arraysize(kResumedTestCases); ++i) { | 1540 for (size_t i = 0; i < arraysize(kResumedTestCases); ++i) { |
1534 SCOPED_TRACE(testing::Message() << "Running test case " << i); | 1541 SCOPED_TRACE(testing::Message() << "Running test case " << i); |
1535 download_prefs()->SetSaveFilePath(test_download_dir()); | 1542 download_prefs()->SetSaveFilePath(test_download_dir()); |
1536 const DownloadTestCase& test_case = kResumedTestCases[i]; | 1543 const DownloadTestCase& test_case = kResumedTestCases[i]; |
1537 base::FilePath expected_path = | 1544 base::FilePath expected_path = |
1538 GetPathInDownloadDir(test_case.expected_local_path); | 1545 GetPathInDownloadDir(test_case.expected_local_path); |
1539 std::unique_ptr<content::MockDownloadItem> item( | 1546 std::unique_ptr<content::MockDownloadItem> item( |
1540 CreateActiveDownloadItem(i, test_case)); | 1547 CreateActiveDownloadItem(i, test_case)); |
1541 ON_CALL(*item.get(), GetLastReason()) | 1548 ON_CALL(*item.get(), GetLastReason()) |
(...skipping 29 matching lines...) Expand all Loading... |
1571 // Value of DownloadItem::GetFullPath() during test run, relative | 1578 // Value of DownloadItem::GetFullPath() during test run, relative |
1572 // to test download path. | 1579 // to test download path. |
1573 const base::FilePath::CharType* initial_intermediate_path; | 1580 const base::FilePath::CharType* initial_intermediate_path; |
1574 | 1581 |
1575 // Expected intermediate path relatvie to the test download path. An exact | 1582 // Expected intermediate path relatvie to the test download path. An exact |
1576 // match is performed if this string is non-empty. Ignored otherwise. | 1583 // match is performed if this string is non-empty. Ignored otherwise. |
1577 const base::FilePath::CharType* expected_intermediate_path; | 1584 const base::FilePath::CharType* expected_intermediate_path; |
1578 } kIntermediateNameTestCases[] = { | 1585 } kIntermediateNameTestCases[] = { |
1579 {{// 0: Automatic Safe | 1586 {{// 0: Automatic Safe |
1580 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 1587 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
1581 download_util::NOT_DANGEROUS, "http://example.com/foo.txt", | 1588 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", |
1582 "text/plain", FILE_PATH_LITERAL(""), | 1589 "text/plain", FILE_PATH_LITERAL(""), |
1583 | 1590 |
1584 FILE_PATH_LITERAL("foo.txt"), | 1591 FILE_PATH_LITERAL("foo.txt"), |
1585 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 1592 DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
1586 | 1593 |
1587 EXPECT_CRDOWNLOAD}, | 1594 EXPECT_CRDOWNLOAD}, |
1588 FILE_PATH_LITERAL("bar.txt.crdownload"), | 1595 FILE_PATH_LITERAL("bar.txt.crdownload"), |
1589 FILE_PATH_LITERAL("foo.txt.crdownload")}, | 1596 FILE_PATH_LITERAL("foo.txt.crdownload")}, |
1590 | 1597 |
1591 {{// 1: Save_As Safe | 1598 {{// 1: Save_As Safe |
1592 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 1599 SAVE_AS, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
1593 download_util::NOT_DANGEROUS, "http://example.com/foo.txt", | 1600 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", |
1594 "text/plain", FILE_PATH_LITERAL(""), | 1601 "text/plain", FILE_PATH_LITERAL(""), |
1595 | 1602 |
1596 kInitialPath, DownloadItem::TARGET_DISPOSITION_PROMPT, | 1603 kInitialPath, DownloadItem::TARGET_DISPOSITION_PROMPT, |
1597 | 1604 |
1598 EXPECT_CRDOWNLOAD}, | 1605 EXPECT_CRDOWNLOAD}, |
1599 FILE_PATH_LITERAL("foo.txt.crdownload"), | 1606 FILE_PATH_LITERAL("foo.txt.crdownload"), |
1600 FILE_PATH_LITERAL("some_path/bar.txt.crdownload")}, | 1607 FILE_PATH_LITERAL("some_path/bar.txt.crdownload")}, |
1601 | 1608 |
1602 {{// 2: Automatic Dangerous | 1609 {{// 2: Automatic Dangerous |
1603 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE, | 1610 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE, |
1604 download_util::ALLOW_ON_USER_GESTURE, "http://example.com/foo.crx", "", | 1611 DownloadFileType::ALLOW_ON_USER_GESTURE, "http://example.com/foo.crx", |
1605 FILE_PATH_LITERAL(""), | 1612 "", FILE_PATH_LITERAL(""), |
1606 | 1613 |
1607 FILE_PATH_LITERAL("foo.crx"), | 1614 FILE_PATH_LITERAL("foo.crx"), |
1608 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 1615 DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
1609 | 1616 |
1610 EXPECT_UNCONFIRMED}, | 1617 EXPECT_UNCONFIRMED}, |
1611 FILE_PATH_LITERAL("Unconfirmed abcd.crdownload"), | 1618 FILE_PATH_LITERAL("Unconfirmed abcd.crdownload"), |
1612 FILE_PATH_LITERAL("Unconfirmed abcd.crdownload")}, | 1619 FILE_PATH_LITERAL("Unconfirmed abcd.crdownload")}, |
1613 | 1620 |
1614 {{// 3: Automatic Dangerous | 1621 {{// 3: Automatic Dangerous |
1615 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE, | 1622 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE, |
1616 download_util::ALLOW_ON_USER_GESTURE, "http://example.com/foo.crx", "", | 1623 DownloadFileType::ALLOW_ON_USER_GESTURE, "http://example.com/foo.crx", |
1617 FILE_PATH_LITERAL(""), | 1624 "", FILE_PATH_LITERAL(""), |
1618 | 1625 |
1619 FILE_PATH_LITERAL("foo.crx"), | 1626 FILE_PATH_LITERAL("foo.crx"), |
1620 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 1627 DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
1621 | 1628 |
1622 EXPECT_UNCONFIRMED}, | 1629 EXPECT_UNCONFIRMED}, |
1623 FILE_PATH_LITERAL("other_path/Unconfirmed abcd.crdownload"), | 1630 FILE_PATH_LITERAL("other_path/Unconfirmed abcd.crdownload"), |
1624 // Rely on the EXPECT_UNCONFIRMED check in the general test settings. A | 1631 // Rely on the EXPECT_UNCONFIRMED check in the general test settings. A |
1625 // new intermediate path of the form "Unconfirmed <number>.crdownload" | 1632 // new intermediate path of the form "Unconfirmed <number>.crdownload" |
1626 // should be generated for this case since the initial intermediate path | 1633 // should be generated for this case since the initial intermediate path |
1627 // is in the wrong directory. | 1634 // is in the wrong directory. |
1628 FILE_PATH_LITERAL("")}, | 1635 FILE_PATH_LITERAL("")}, |
1629 | 1636 |
1630 {{// 3: Forced Safe: Initial path is ignored due to the forced path. | 1637 {{// 3: Forced Safe: Initial path is ignored due to the forced path. |
1631 FORCED, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 1638 FORCED, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
1632 download_util::NOT_DANGEROUS, "http://example.com/foo.txt", "", | 1639 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.txt", "", |
1633 FILE_PATH_LITERAL("forced-foo.txt"), | 1640 FILE_PATH_LITERAL("forced-foo.txt"), |
1634 | 1641 |
1635 FILE_PATH_LITERAL("forced-foo.txt"), | 1642 FILE_PATH_LITERAL("forced-foo.txt"), |
1636 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 1643 DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
1637 | 1644 |
1638 EXPECT_LOCAL_PATH}, | 1645 EXPECT_LOCAL_PATH}, |
1639 FILE_PATH_LITERAL("forced-foo.txt"), | 1646 FILE_PATH_LITERAL("forced-foo.txt"), |
1640 FILE_PATH_LITERAL("forced-foo.txt")}, | 1647 FILE_PATH_LITERAL("forced-foo.txt")}, |
1641 }; | 1648 }; |
1642 | 1649 |
1643 // The test assumes that .crx files have a danger level of | 1650 // The test assumes that .crx files have a danger level of |
1644 // ALLOW_ON_USER_GESTURE. | 1651 // ALLOW_ON_USER_GESTURE. |
1645 ASSERT_EQ(download_util::ALLOW_ON_USER_GESTURE, | 1652 ASSERT_EQ(DownloadFileType::ALLOW_ON_USER_GESTURE, |
1646 download_util::GetFileDangerLevel( | 1653 Policies()->GetFileDangerLevel( |
1647 base::FilePath(FILE_PATH_LITERAL("foo.crx")))); | 1654 base::FilePath(FILE_PATH_LITERAL("foo.crx")))); |
1648 | 1655 |
1649 for (size_t i = 0; i < arraysize(kIntermediateNameTestCases); ++i) { | 1656 for (size_t i = 0; i < arraysize(kIntermediateNameTestCases); ++i) { |
1650 SCOPED_TRACE(testing::Message() << "Running test case " << i); | 1657 SCOPED_TRACE(testing::Message() << "Running test case " << i); |
1651 const IntermediateNameTestCase& test_case = kIntermediateNameTestCases[i]; | 1658 const IntermediateNameTestCase& test_case = kIntermediateNameTestCases[i]; |
1652 std::unique_ptr<content::MockDownloadItem> item( | 1659 std::unique_ptr<content::MockDownloadItem> item( |
1653 CreateActiveDownloadItem(i, test_case.general)); | 1660 CreateActiveDownloadItem(i, test_case.general)); |
1654 | 1661 |
1655 ON_CALL(*item.get(), GetLastReason()) | 1662 ON_CALL(*item.get(), GetLastReason()) |
1656 .WillByDefault(Return( | 1663 .WillByDefault(Return( |
(...skipping 25 matching lines...) Expand all Loading... |
1682 | 1689 |
1683 struct MIMETypeTestCase { | 1690 struct MIMETypeTestCase { |
1684 // General test case settings. | 1691 // General test case settings. |
1685 DownloadTestCase general; | 1692 DownloadTestCase general; |
1686 | 1693 |
1687 // Expected MIME type for test case. | 1694 // Expected MIME type for test case. |
1688 const char* expected_mime_type; | 1695 const char* expected_mime_type; |
1689 } kMIMETypeTestCases[] = { | 1696 } kMIMETypeTestCases[] = { |
1690 {{// 0: | 1697 {{// 0: |
1691 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 1698 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
1692 download_util::NOT_DANGEROUS, "http://example.com/foo.png", "image/png", | 1699 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.png", |
1693 FILE_PATH_LITERAL(""), | 1700 "image/png", FILE_PATH_LITERAL(""), |
1694 | 1701 |
1695 FILE_PATH_LITERAL("foo.png"), | 1702 FILE_PATH_LITERAL("foo.png"), |
1696 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 1703 DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
1697 | 1704 |
1698 EXPECT_CRDOWNLOAD}, | 1705 EXPECT_CRDOWNLOAD}, |
1699 "image/png"}, | 1706 "image/png"}, |
1700 {{// 1: Empty MIME type in response. | 1707 {{// 1: Empty MIME type in response. |
1701 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 1708 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
1702 download_util::NOT_DANGEROUS, "http://example.com/foo.png", "", | 1709 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.png", "", |
1703 FILE_PATH_LITERAL(""), | 1710 FILE_PATH_LITERAL(""), |
1704 | 1711 |
1705 FILE_PATH_LITERAL("foo.png"), | 1712 FILE_PATH_LITERAL("foo.png"), |
1706 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 1713 DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
1707 | 1714 |
1708 EXPECT_CRDOWNLOAD}, | 1715 EXPECT_CRDOWNLOAD}, |
1709 "image/png"}, | 1716 "image/png"}, |
1710 {{// 2: Forced path. | 1717 {{// 2: Forced path. |
1711 FORCED, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 1718 FORCED, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
1712 download_util::NOT_DANGEROUS, "http://example.com/foo.abc", "", | 1719 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.abc", "", |
1713 FILE_PATH_LITERAL("foo.png"), | 1720 FILE_PATH_LITERAL("foo.png"), |
1714 | 1721 |
1715 FILE_PATH_LITERAL("foo.png"), | 1722 FILE_PATH_LITERAL("foo.png"), |
1716 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 1723 DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
1717 | 1724 |
1718 EXPECT_CRDOWNLOAD}, | 1725 EXPECT_CRDOWNLOAD}, |
1719 "image/png"}, | 1726 "image/png"}, |
1720 {{// 3: Unknown file type. | 1727 {{// 3: Unknown file type. |
1721 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 1728 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
1722 download_util::NOT_DANGEROUS, "http://example.com/foo.notarealext", "", | 1729 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.notarealext", |
1723 FILE_PATH_LITERAL(""), | 1730 "", FILE_PATH_LITERAL(""), |
1724 | 1731 |
1725 FILE_PATH_LITERAL("foo.notarealext"), | 1732 FILE_PATH_LITERAL("foo.notarealext"), |
1726 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 1733 DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
1727 | 1734 |
1728 EXPECT_CRDOWNLOAD}, | 1735 EXPECT_CRDOWNLOAD}, |
1729 ""}, | 1736 ""}, |
1730 {{// 4: Unknown file type. | 1737 {{// 4: Unknown file type. |
1731 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 1738 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
1732 download_util::NOT_DANGEROUS, "http://example.com/foo.notarealext", | 1739 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.notarealext", |
1733 "image/png", FILE_PATH_LITERAL(""), | 1740 "image/png", FILE_PATH_LITERAL(""), |
1734 | 1741 |
1735 FILE_PATH_LITERAL("foo.notarealext"), | 1742 FILE_PATH_LITERAL("foo.notarealext"), |
1736 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 1743 DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
1737 | 1744 |
1738 EXPECT_CRDOWNLOAD}, | 1745 EXPECT_CRDOWNLOAD}, |
1739 ""}, | 1746 ""}, |
1740 {{// 5: x-x509-user-cert mime-type. | 1747 {{// 5: x-x509-user-cert mime-type. |
1741 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 1748 AUTOMATIC, content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
1742 download_util::NOT_DANGEROUS, "http://example.com/foo.notarealext", | 1749 DownloadFileType::NOT_DANGEROUS, "http://example.com/foo.notarealext", |
1743 "application/x-x509-user-cert", FILE_PATH_LITERAL(""), | 1750 "application/x-x509-user-cert", FILE_PATH_LITERAL(""), |
1744 | 1751 |
1745 FILE_PATH_LITERAL("user.crt"), | 1752 FILE_PATH_LITERAL("user.crt"), |
1746 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 1753 DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
1747 | 1754 |
1748 EXPECT_CRDOWNLOAD}, | 1755 EXPECT_CRDOWNLOAD}, |
1749 ""}, | 1756 ""}, |
1750 | 1757 |
1751 }; | 1758 }; |
1752 | 1759 |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1884 TargetDeterminer_CheckForSecureHandling_PPAPI) { | 1891 TargetDeterminer_CheckForSecureHandling_PPAPI) { |
1885 // All test cases run with GetPathInDownloadDir(kInitialPath) as the inital | 1892 // All test cases run with GetPathInDownloadDir(kInitialPath) as the inital |
1886 // path. | 1893 // path. |
1887 const base::FilePath::CharType kInitialPath[] = | 1894 const base::FilePath::CharType kInitialPath[] = |
1888 FILE_PATH_LITERAL("some_path/bar.txt"); | 1895 FILE_PATH_LITERAL("some_path/bar.txt"); |
1889 const char kTestMIMEType[] = "application/x-example-should-not-exist"; | 1896 const char kTestMIMEType[] = "application/x-example-should-not-exist"; |
1890 | 1897 |
1891 DownloadTestCase kSecureHandlingTestCase = { | 1898 DownloadTestCase kSecureHandlingTestCase = { |
1892 AUTOMATIC, | 1899 AUTOMATIC, |
1893 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 1900 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
1894 download_util::NOT_DANGEROUS, | 1901 DownloadFileType::NOT_DANGEROUS, |
1895 "http://example.com/foo.fakeext", | 1902 "http://example.com/foo.fakeext", |
1896 "", | 1903 "", |
1897 FILE_PATH_LITERAL(""), | 1904 FILE_PATH_LITERAL(""), |
1898 | 1905 |
1899 FILE_PATH_LITERAL("foo.fakeext"), | 1906 FILE_PATH_LITERAL("foo.fakeext"), |
1900 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 1907 DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
1901 | 1908 |
1902 EXPECT_CRDOWNLOAD}; | 1909 EXPECT_CRDOWNLOAD}; |
1903 | 1910 |
1904 content::PluginService* plugin_service = | 1911 content::PluginService* plugin_service = |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1953 TargetDeterminer_CheckForSecureHandling_BrowserPlugin) { | 1960 TargetDeterminer_CheckForSecureHandling_BrowserPlugin) { |
1954 // All test cases run with GetPathInDownloadDir(kInitialPath) as the inital | 1961 // All test cases run with GetPathInDownloadDir(kInitialPath) as the inital |
1955 // path. | 1962 // path. |
1956 const base::FilePath::CharType kInitialPath[] = | 1963 const base::FilePath::CharType kInitialPath[] = |
1957 FILE_PATH_LITERAL("some_path/bar.txt"); | 1964 FILE_PATH_LITERAL("some_path/bar.txt"); |
1958 const char kTestMIMEType[] = "application/x-example-should-not-exist"; | 1965 const char kTestMIMEType[] = "application/x-example-should-not-exist"; |
1959 | 1966 |
1960 DownloadTestCase kSecureHandlingTestCase = { | 1967 DownloadTestCase kSecureHandlingTestCase = { |
1961 AUTOMATIC, | 1968 AUTOMATIC, |
1962 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, | 1969 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
1963 download_util::NOT_DANGEROUS, | 1970 DownloadFileType::NOT_DANGEROUS, |
1964 "http://example.com/foo.fakeext", | 1971 "http://example.com/foo.fakeext", |
1965 "", | 1972 "", |
1966 FILE_PATH_LITERAL(""), | 1973 FILE_PATH_LITERAL(""), |
1967 | 1974 |
1968 FILE_PATH_LITERAL("foo.fakeext"), | 1975 FILE_PATH_LITERAL("foo.fakeext"), |
1969 DownloadItem::TARGET_DISPOSITION_OVERWRITE, | 1976 DownloadItem::TARGET_DISPOSITION_OVERWRITE, |
1970 | 1977 |
1971 EXPECT_CRDOWNLOAD}; | 1978 EXPECT_CRDOWNLOAD}; |
1972 | 1979 |
1973 content::PluginService* plugin_service = | 1980 content::PluginService* plugin_service = |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2012 EXPECT_CALL(mock_plugin_filter_, MockPluginAvailable(browser_plugin.path())) | 2019 EXPECT_CALL(mock_plugin_filter_, MockPluginAvailable(browser_plugin.path())) |
2013 .WillRepeatedly(Return(false)); | 2020 .WillRepeatedly(Return(false)); |
2014 target_info = RunDownloadTargetDeterminer( | 2021 target_info = RunDownloadTargetDeterminer( |
2015 GetPathInDownloadDir(kInitialPath), item.get()); | 2022 GetPathInDownloadDir(kInitialPath), item.get()); |
2016 EXPECT_FALSE(target_info->is_filetype_handled_safely); | 2023 EXPECT_FALSE(target_info->is_filetype_handled_safely); |
2017 } | 2024 } |
2018 | 2025 |
2019 #endif // defined(ENABLE_PLUGINS) | 2026 #endif // defined(ENABLE_PLUGINS) |
2020 | 2027 |
2021 } // namespace | 2028 } // namespace |
OLD | NEW |