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

Side by Side Diff: components/history/core/browser/history_backend_db_unittest.cc

Issue 1875033005: [Downloads/History] Add tab-url and tab-referrer-url to DownloadRow (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@guid-fix
Patch Set: Update expectations for DownloadUIController test. Created 4 years, 8 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 // History unit tests come in two flavors: 5 // History unit tests come in two flavors:
6 // 6 //
7 // 1. The more complicated style is that the unit test creates a full history 7 // 1. The more complicated style is that the unit test creates a full history
8 // service. This spawns a background thread for the history backend, and 8 // service. This spawns a background thread for the history backend, and
9 // all communication is asynchronous. This is useful for testing more 9 // all communication is asynchronous. This is useful for testing more
10 // complicated things or end-to-end behavior. 10 // complicated things or end-to-end behavior.
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 base::Time())); 67 base::Time()));
68 db_->QueryDownloads(&downloads); 68 db_->QueryDownloads(&downloads);
69 EXPECT_EQ(1U, downloads.size()); 69 EXPECT_EQ(1U, downloads.size());
70 70
71 EXPECT_EQ(base::FilePath(FILE_PATH_LITERAL("current-path")), 71 EXPECT_EQ(base::FilePath(FILE_PATH_LITERAL("current-path")),
72 downloads[0].current_path); 72 downloads[0].current_path);
73 EXPECT_EQ(base::FilePath(FILE_PATH_LITERAL("target-path")), 73 EXPECT_EQ(base::FilePath(FILE_PATH_LITERAL("target-path")),
74 downloads[0].target_path); 74 downloads[0].target_path);
75 EXPECT_EQ(1UL, downloads[0].url_chain.size()); 75 EXPECT_EQ(1UL, downloads[0].url_chain.size());
76 EXPECT_EQ(GURL("foo-url"), downloads[0].url_chain[0]); 76 EXPECT_EQ(GURL("foo-url"), downloads[0].url_chain[0]);
77 EXPECT_EQ(std::string("http://referrer.com/"), 77 EXPECT_EQ(std::string("http://referrer.example.com/"),
78 std::string(downloads[0].referrer_url.spec())); 78 downloads[0].referrer_url.spec());
79 EXPECT_EQ(std::string("http://tab-url.example.com/"),
80 downloads[0].tab_url.spec());
81 EXPECT_EQ(std::string("http://tab-referrer-url.example.com/"),
82 downloads[0].tab_referrer_url.spec());
79 EXPECT_EQ(now, downloads[0].start_time); 83 EXPECT_EQ(now, downloads[0].start_time);
80 EXPECT_EQ(now, downloads[0].end_time); 84 EXPECT_EQ(now, downloads[0].end_time);
81 EXPECT_EQ(0, downloads[0].received_bytes); 85 EXPECT_EQ(0, downloads[0].received_bytes);
82 EXPECT_EQ(512, downloads[0].total_bytes); 86 EXPECT_EQ(512, downloads[0].total_bytes);
83 EXPECT_EQ(DownloadState::COMPLETE, downloads[0].state); 87 EXPECT_EQ(DownloadState::COMPLETE, downloads[0].state);
84 EXPECT_EQ(DownloadDangerType::NOT_DANGEROUS, downloads[0].danger_type); 88 EXPECT_EQ(DownloadDangerType::NOT_DANGEROUS, downloads[0].danger_type);
85 EXPECT_EQ(kTestDownloadInterruptReasonNone, downloads[0].interrupt_reason); 89 EXPECT_EQ(kTestDownloadInterruptReasonNone, downloads[0].interrupt_reason);
86 EXPECT_FALSE(downloads[0].opened); 90 EXPECT_FALSE(downloads[0].opened);
87 EXPECT_EQ("by_ext_id", downloads[0].by_ext_id); 91 EXPECT_EQ("by_ext_id", downloads[0].by_ext_id);
88 EXPECT_EQ("by_ext_name", downloads[0].by_ext_name); 92 EXPECT_EQ("by_ext_name", downloads[0].by_ext_name);
(...skipping 515 matching lines...) Expand 10 before | Expand all | Expand 10 after
604 EXPECT_TRUE(IsValidRFC4122Ver4GUID(guid)); 608 EXPECT_TRUE(IsValidRFC4122Ver4GUID(guid));
605 EXPECT_EQ(guid, base::ToUpperASCII(guid)); 609 EXPECT_EQ(guid, base::ToUpperASCII(guid));
606 guids.insert(guid); 610 guids.insert(guid);
607 } 611 }
608 EXPECT_TRUE(s.Succeeded()); 612 EXPECT_TRUE(s.Succeeded());
609 EXPECT_EQ(kDownloadCount, guids.size()); 613 EXPECT_EQ(kDownloadCount, guids.size());
610 } 614 }
611 } 615 }
612 } 616 }
613 617
618 TEST_F(HistoryBackendDBTest, MigrateTabUrls) {
619 ASSERT_NO_FATAL_FAILURE(CreateDBVersion(30));
620 {
621 sql::Connection db;
622 ASSERT_TRUE(db.Open(history_dir_.Append(kHistoryFilename)));
623 {
624 sql::Statement s(db.GetUniqueStatement(
625 "INSERT INTO downloads ("
626 " id, guid, current_path, target_path, start_time, received_bytes,"
627 " total_bytes, state, danger_type, interrupt_reason, hash,"
628 " end_time, opened, referrer, http_method, by_ext_id, by_ext_name,"
629 " etag, last_modified, mime_type, original_mime_type)"
630 "VALUES("
631 " 1, '435A5C7A-F6B7-4DF2-8696-22E4FCBA3EB2', 'foo.txt', 'foo.txt',"
632 " 13104873187307670, 11, 11, 1, 0, 0, X'', 13104873187521021, 0,"
633 " 'http://example.com/dl/', '', '', '', '', '', 'text/plain',"
634 " 'text/plain')"));
635 ASSERT_TRUE(s.Run());
636 }
637 {
638 sql::Statement s(db.GetUniqueStatement(
639 "INSERT INTO downloads_url_chains (id, chain_index, url) VALUES "
640 "(4, 0, 'url')"));
641 ASSERT_TRUE(s.Run());
642 }
643 }
644
645 // Re-open the db using the HistoryDatabase, which should migrate to the
646 // current version, creating the tab_url and tab_referrer_url columns.
647 CreateBackendAndDatabase();
648 DeleteBackend();
649 {
650 // Re-open the db for manual manipulation.
651 sql::Connection db;
652 ASSERT_TRUE(db.Open(history_dir_.Append(kHistoryFilename)));
653 // The version should have been updated.
654 int cur_version = HistoryDatabase::GetCurrentVersion();
655 ASSERT_LE(31, cur_version);
656 {
657 sql::Statement s(db.GetUniqueStatement(
658 "SELECT value FROM meta WHERE key = 'version'"));
659 EXPECT_TRUE(s.Step());
660 EXPECT_EQ(cur_version, s.ColumnInt(0));
661 }
662 {
663 sql::Statement s(db.GetUniqueStatement(
664 "SELECT tab_url, tab_referrer_url from downloads"));
665 EXPECT_TRUE(s.Step());
666 EXPECT_EQ(std::string(), s.ColumnString(0));
667 EXPECT_EQ(std::string(), s.ColumnString(1));
668 }
669 }
670 }
671
614 TEST_F(HistoryBackendDBTest, DownloadCreateAndQuery) { 672 TEST_F(HistoryBackendDBTest, DownloadCreateAndQuery) {
615 CreateBackendAndDatabase(); 673 CreateBackendAndDatabase();
616 674
617 ASSERT_EQ(0u, db_->CountDownloads()); 675 ASSERT_EQ(0u, db_->CountDownloads());
618 676
619 std::vector<GURL> url_chain; 677 std::vector<GURL> url_chain;
620 url_chain.push_back(GURL("http://example.com/a")); 678 url_chain.push_back(GURL("http://example.com/a"));
621 url_chain.push_back(GURL("http://example.com/b")); 679 url_chain.push_back(GURL("http://example.com/b"));
622 url_chain.push_back(GURL("http://example.com/c")); 680 url_chain.push_back(GURL("http://example.com/c"));
623 681
624 base::Time start_time(base::Time::Now()); 682 base::Time start_time(base::Time::Now());
625 base::Time end_time(start_time + base::TimeDelta::FromHours(1)); 683 base::Time end_time(start_time + base::TimeDelta::FromHours(1));
626 684
627 DownloadRow download_A(base::FilePath(FILE_PATH_LITERAL("/path/1")), 685 DownloadRow download_A(
628 base::FilePath(FILE_PATH_LITERAL("/path/2")), 686 base::FilePath(FILE_PATH_LITERAL("/path/1")),
629 url_chain, 687 base::FilePath(FILE_PATH_LITERAL("/path/2")), url_chain,
630 GURL("http://example.com/referrer"), 688 GURL("http://example.com/referrer"), GURL("http://example.com/tab-url"),
631 "GET", 689 GURL("http://example.com/tab-referrer"), "GET", "mime/type",
632 "mime/type", 690 "original/mime-type", start_time, end_time, "etag1", "last_modified_1",
633 "original/mime-type", 691 100, 1000, DownloadState::INTERRUPTED, DownloadDangerType::NOT_DANGEROUS,
634 start_time, 692 kTestDownloadInterruptReasonCrash, "hash-value1", 1,
635 end_time, 693 "FE672168-26EF-4275-A149-FEC25F6A75F9", false, "extension-id",
636 "etag1", 694 "extension-name");
637 "last_modified_1",
638 100,
639 1000,
640 DownloadState::INTERRUPTED,
641 DownloadDangerType::NOT_DANGEROUS,
642 kTestDownloadInterruptReasonCrash,
643 "hash-value1",
644 1,
645 "FE672168-26EF-4275-A149-FEC25F6A75F9",
646 false,
647 "extension-id",
648 "extension-name");
649 ASSERT_TRUE(db_->CreateDownload(download_A)); 695 ASSERT_TRUE(db_->CreateDownload(download_A));
650 696
651 url_chain.push_back(GURL("http://example.com/d")); 697 url_chain.push_back(GURL("http://example.com/d"));
652 698
653 DownloadRow download_B(base::FilePath(FILE_PATH_LITERAL("/path/3")), 699 base::Time start_time2(start_time + base::TimeDelta::FromHours(10));
654 base::FilePath(FILE_PATH_LITERAL("/path/4")), 700 base::Time end_time2(end_time + base::TimeDelta::FromHours(10));
655 url_chain, 701
656 GURL("http://example.com/referrer2"), 702 DownloadRow download_B(
657 "POST", 703 base::FilePath(FILE_PATH_LITERAL("/path/3")),
658 "mime/type2", 704 base::FilePath(FILE_PATH_LITERAL("/path/4")), url_chain,
659 "original/mime-type2", 705 GURL("http://example.com/referrer2"), GURL("http://example.com/tab-url2"),
660 start_time, 706 GURL("http://example.com/tab-referrer2"), "POST", "mime/type2",
661 end_time, 707 "original/mime-type2", start_time2, end_time2, "etag2", "last_modified_2",
662 "etag2", 708 1001, 1001, DownloadState::COMPLETE, DownloadDangerType::DANGEROUS_FILE,
663 "last_modified_2", 709 kTestDownloadInterruptReasonNone, std::string(), 2,
664 1001, 710 "b70f3869-7d75-4878-acb4-4caf7026d12b", false, "extension-id",
665 1001, 711 "extension-name");
666 DownloadState::COMPLETE,
667 DownloadDangerType::DANGEROUS_FILE,
668 kTestDownloadInterruptReasonNone,
669 std::string(),
670 2,
671 "b70f3869-7d75-4878-acb4-4caf7026d12b",
672 false,
673 "extension-id",
674 "extension-name");
675 ASSERT_TRUE(db_->CreateDownload(download_B)); 712 ASSERT_TRUE(db_->CreateDownload(download_B));
676 713
677 EXPECT_EQ(2u, db_->CountDownloads()); 714 EXPECT_EQ(2u, db_->CountDownloads());
678 715
679 std::vector<DownloadRow> results; 716 std::vector<DownloadRow> results;
680 db_->QueryDownloads(&results); 717 db_->QueryDownloads(&results);
681 718
682 ASSERT_EQ(2u, results.size()); 719 ASSERT_EQ(2u, results.size());
683 720
684 const DownloadRow& retrieved_download_A = 721 const DownloadRow& retrieved_download_A =
685 results[0].id == 1 ? results[0] : results[1]; 722 results[0].id == 1 ? results[0] : results[1];
686 const DownloadRow& retrieved_download_B = 723 const DownloadRow& retrieved_download_B =
687 results[0].id == 1 ? results[1] : results[0]; 724 results[0].id == 1 ? results[1] : results[0];
688 725
689 EXPECT_EQ(download_A, retrieved_download_A); 726 EXPECT_EQ(download_A, retrieved_download_A);
690 EXPECT_EQ(download_B, retrieved_download_B); 727 EXPECT_EQ(download_B, retrieved_download_B);
691 } 728 }
692 729
693 TEST_F(HistoryBackendDBTest, DownloadCreateAndUpdate_VolatileFields) { 730 TEST_F(HistoryBackendDBTest, DownloadCreateAndUpdate_VolatileFields) {
694 CreateBackendAndDatabase(); 731 CreateBackendAndDatabase();
695 732
696 std::vector<GURL> url_chain; 733 std::vector<GURL> url_chain;
697 url_chain.push_back(GURL("http://example.com/a")); 734 url_chain.push_back(GURL("http://example.com/a"));
698 url_chain.push_back(GURL("http://example.com/b")); 735 url_chain.push_back(GURL("http://example.com/b"));
699 url_chain.push_back(GURL("http://example.com/c")); 736 url_chain.push_back(GURL("http://example.com/c"));
700 737
701 base::Time start_time(base::Time::Now()); 738 base::Time start_time(base::Time::Now());
702 base::Time end_time(start_time + base::TimeDelta::FromHours(1)); 739 base::Time end_time(start_time + base::TimeDelta::FromHours(1));
703 740
704 DownloadRow download(base::FilePath(FILE_PATH_LITERAL("/path/1")), 741 DownloadRow download(
705 base::FilePath(FILE_PATH_LITERAL("/path/2")), 742 base::FilePath(FILE_PATH_LITERAL("/path/1")),
706 url_chain, 743 base::FilePath(FILE_PATH_LITERAL("/path/2")), url_chain,
707 GURL("http://example.com/referrer"), 744 GURL("http://example.com/referrer"), GURL("http://example.com/tab-url"),
708 "GET", 745 GURL("http://example.com/tab-referrer"), "GET", "mime/type",
709 "mime/type", 746 "original/mime-type", start_time, end_time, "etag1", "last_modified_1",
710 "original/mime-type", 747 100, 1000, DownloadState::INTERRUPTED, DownloadDangerType::NOT_DANGEROUS,
711 start_time, 748 3, "some-hash-value", 1, "FE672168-26EF-4275-A149-FEC25F6A75F9", false,
712 end_time, 749 "extension-id", "extension-name");
713 "etag1",
714 "last_modified_1",
715 100,
716 1000,
717 DownloadState::INTERRUPTED,
718 DownloadDangerType::NOT_DANGEROUS,
719 3,
720 "some-hash-value",
721 1,
722 "FE672168-26EF-4275-A149-FEC25F6A75F9",
723 false,
724 "extension-id",
725 "extension-name");
726 db_->CreateDownload(download); 750 db_->CreateDownload(download);
727 751
728 download.current_path = 752 download.current_path =
729 base::FilePath(FILE_PATH_LITERAL("/new/current_path")); 753 base::FilePath(FILE_PATH_LITERAL("/new/current_path"));
730 download.target_path = base::FilePath(FILE_PATH_LITERAL("/new/target_path")); 754 download.target_path = base::FilePath(FILE_PATH_LITERAL("/new/target_path"));
731 download.mime_type = "new/mime/type"; 755 download.mime_type = "new/mime/type";
732 download.original_mime_type = "new/original/mime/type"; 756 download.original_mime_type = "new/original/mime/type";
733 download.received_bytes += 1000; 757 download.received_bytes += 1000;
734 download.state = DownloadState::CANCELLED; 758 download.state = DownloadState::CANCELLED;
735 download.danger_type = DownloadDangerType::USER_VALIDATED; 759 download.danger_type = DownloadDangerType::USER_VALIDATED;
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
805 "Select Count(*) from downloads_url_chains")); 829 "Select Count(*) from downloads_url_chains"));
806 EXPECT_TRUE(statement1.Step()); 830 EXPECT_TRUE(statement1.Step());
807 EXPECT_EQ(1, statement1.ColumnInt(0)); 831 EXPECT_EQ(1, statement1.ColumnInt(0));
808 } 832 }
809 } 833 }
810 834
811 TEST_F(HistoryBackendDBTest, DownloadNukeRecordsMissingURLs) { 835 TEST_F(HistoryBackendDBTest, DownloadNukeRecordsMissingURLs) {
812 CreateBackendAndDatabase(); 836 CreateBackendAndDatabase();
813 base::Time now(base::Time::Now()); 837 base::Time now(base::Time::Now());
814 std::vector<GURL> url_chain; 838 std::vector<GURL> url_chain;
815 DownloadRow download(base::FilePath(FILE_PATH_LITERAL("foo-path")), 839 DownloadRow download(
816 base::FilePath(FILE_PATH_LITERAL("foo-path")), 840 base::FilePath(FILE_PATH_LITERAL("foo-path")),
817 url_chain, 841 base::FilePath(FILE_PATH_LITERAL("foo-path")), url_chain,
818 GURL(std::string()), 842 GURL(std::string()), GURL(std::string()), GURL(std::string()),
819 std::string(), 843 std::string(), "application/octet-stream", "application/octet-stream",
820 "application/octet-stream", 844 now, now, std::string(), std::string(), 0, 512, DownloadState::COMPLETE,
821 "application/octet-stream", 845 DownloadDangerType::NOT_DANGEROUS, kTestDownloadInterruptReasonNone,
822 now, 846 std::string(), 1, "05AF6C8E-E4E0-45D7-B5CE-BC99F7019918", 0, "by_ext_id",
823 now, 847 "by_ext_name");
824 std::string(),
825 std::string(),
826 0,
827 512,
828 DownloadState::COMPLETE,
829 DownloadDangerType::NOT_DANGEROUS,
830 kTestDownloadInterruptReasonNone,
831 std::string(),
832 1,
833 "05AF6C8E-E4E0-45D7-B5CE-BC99F7019918",
834 0,
835 "by_ext_id",
836 "by_ext_name");
837 848
838 // Creating records without any urls should fail. 849 // Creating records without any urls should fail.
839 EXPECT_FALSE(db_->CreateDownload(download)); 850 EXPECT_FALSE(db_->CreateDownload(download));
840 851
841 download.url_chain.push_back(GURL("foo-url")); 852 download.url_chain.push_back(GURL("foo-url"));
842 EXPECT_TRUE(db_->CreateDownload(download)); 853 EXPECT_TRUE(db_->CreateDownload(download));
843 854
844 // Pretend that the URLs were dropped. 855 // Pretend that the URLs were dropped.
845 DeleteBackend(); 856 DeleteBackend();
846 { 857 {
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
1034 // Current browser version must be already higher than 28. 1045 // Current browser version must be already higher than 28.
1035 ASSERT_LT(28, HistoryDatabase::GetCurrentVersion()); 1046 ASSERT_LT(28, HistoryDatabase::GetCurrentVersion());
1036 // Expect that version in DB remains the same. 1047 // Expect that version in DB remains the same.
1037 EXPECT_EQ(28, meta.GetVersionNumber()); 1048 EXPECT_EQ(28, meta.GetVersionNumber());
1038 } 1049 }
1039 } 1050 }
1040 } 1051 }
1041 1052
1042 } // namespace 1053 } // namespace
1043 } // namespace history 1054 } // namespace history
OLDNEW
« no previous file with comments | « components/history/core/browser/download_row.cc ('k') | components/history/core/browser/history_database.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698