Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(196)

Side by Side Diff: chrome/browser/download/download_target_determiner_unittest.cc

Issue 1982723002: Use FileTypePolicies for download danger classifications. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@use_policies
Patch Set: Fix bad rebase Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « chrome/browser/download/download_target_determiner.cc ('k') | chrome/browser/download/download_target_info.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698