OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/omnibox/browser/history_url_provider.h" | 5 #include "components/omnibox/browser/history_url_provider.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <memory> | 10 #include <memory> |
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
314 false, history::SOURCE_BROWSED); | 314 false, history::SOURCE_BROWSED); |
315 } | 315 } |
316 | 316 |
317 void HistoryURLProviderTest::RunTest( | 317 void HistoryURLProviderTest::RunTest( |
318 const base::string16& text, | 318 const base::string16& text, |
319 const std::string& desired_tld, | 319 const std::string& desired_tld, |
320 bool prevent_inline_autocomplete, | 320 bool prevent_inline_autocomplete, |
321 const UrlAndLegalDefault* expected_urls, | 321 const UrlAndLegalDefault* expected_urls, |
322 size_t num_results, | 322 size_t num_results, |
323 metrics::OmniboxInputType::Type* identified_input_type) { | 323 metrics::OmniboxInputType::Type* identified_input_type) { |
324 AutocompleteInput input(text, base::string16::npos, desired_tld, GURL(), | 324 AutocompleteInput input( |
325 metrics::OmniboxEventProto::INVALID_SPEC, | 325 text, base::string16::npos, desired_tld, GURL(), base::string16(), |
326 prevent_inline_autocomplete, false, true, true, false, | 326 metrics::OmniboxEventProto::INVALID_SPEC, prevent_inline_autocomplete, |
327 TestSchemeClassifier()); | 327 false, true, true, false, TestSchemeClassifier()); |
328 *identified_input_type = input.type(); | 328 *identified_input_type = input.type(); |
329 autocomplete_->Start(input, false); | 329 autocomplete_->Start(input, false); |
330 if (!autocomplete_->done()) | 330 if (!autocomplete_->done()) |
331 base::RunLoop().Run(); | 331 base::RunLoop().Run(); |
332 | 332 |
333 matches_ = autocomplete_->matches(); | 333 matches_ = autocomplete_->matches(); |
334 if (sort_matches_) { | 334 if (sort_matches_) { |
335 TemplateURLService* service = client_->GetTemplateURLService(); | 335 TemplateURLService* service = client_->GetTemplateURLService(); |
336 for (ACMatches::iterator i = matches_.begin(); i != matches_.end(); ++i) { | 336 for (ACMatches::iterator i = matches_.begin(); i != matches_.end(); ++i) { |
337 i->ComputeStrippedDestinationURL(input, service); | 337 i->ComputeStrippedDestinationURL(input, service); |
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
643 arraysize(fixup_5)); | 643 arraysize(fixup_5)); |
644 } | 644 } |
645 | 645 |
646 // Make sure the results for the input 'p' don't change between the first and | 646 // Make sure the results for the input 'p' don't change between the first and |
647 // second passes. | 647 // second passes. |
648 TEST_F(HistoryURLProviderTest, EmptyVisits) { | 648 TEST_F(HistoryURLProviderTest, EmptyVisits) { |
649 // Wait for history to create the in memory DB. | 649 // Wait for history to create the in memory DB. |
650 history::BlockUntilHistoryProcessesPendingRequests( | 650 history::BlockUntilHistoryProcessesPendingRequests( |
651 client_->GetHistoryService()); | 651 client_->GetHistoryService()); |
652 | 652 |
653 AutocompleteInput input( | 653 AutocompleteInput input(ASCIIToUTF16("pa"), base::string16::npos, |
654 ASCIIToUTF16("pa"), base::string16::npos, std::string(), GURL(), | 654 std::string(), GURL(), base::string16(), |
655 metrics::OmniboxEventProto::INVALID_SPEC, false, false, true, true, false, | 655 metrics::OmniboxEventProto::INVALID_SPEC, false, |
656 TestSchemeClassifier()); | 656 false, true, true, false, TestSchemeClassifier()); |
657 autocomplete_->Start(input, false); | 657 autocomplete_->Start(input, false); |
658 // HistoryURLProvider shouldn't be done (waiting on async results). | 658 // HistoryURLProvider shouldn't be done (waiting on async results). |
659 EXPECT_FALSE(autocomplete_->done()); | 659 EXPECT_FALSE(autocomplete_->done()); |
660 | 660 |
661 // We should get back an entry for pandora. | 661 // We should get back an entry for pandora. |
662 matches_ = autocomplete_->matches(); | 662 matches_ = autocomplete_->matches(); |
663 ASSERT_GT(matches_.size(), 0u); | 663 ASSERT_GT(matches_.size(), 0u); |
664 EXPECT_EQ(GURL("http://pandora.com/"), matches_[0].destination_url); | 664 EXPECT_EQ(GURL("http://pandora.com/"), matches_[0].destination_url); |
665 int pandora_relevance = matches_[0].relevance; | 665 int pandora_relevance = matches_[0].relevance; |
666 | 666 |
(...skipping 18 matching lines...) Expand all Loading... |
685 UrlAndLegalDefault navigation_2[] = { | 685 UrlAndLegalDefault navigation_2[] = { |
686 { "http://slash/", false } | 686 { "http://slash/", false } |
687 }; | 687 }; |
688 RunTest(ASCIIToUTF16("slash"), std::string(), false, navigation_2, | 688 RunTest(ASCIIToUTF16("slash"), std::string(), false, navigation_2, |
689 arraysize(navigation_2)); | 689 arraysize(navigation_2)); |
690 | 690 |
691 RunTest(ASCIIToUTF16("this is a query"), std::string(), false, NULL, 0); | 691 RunTest(ASCIIToUTF16("this is a query"), std::string(), false, NULL, 0); |
692 } | 692 } |
693 | 693 |
694 TEST_F(HistoryURLProviderTest, DontAutocompleteOnTrailingWhitespace) { | 694 TEST_F(HistoryURLProviderTest, DontAutocompleteOnTrailingWhitespace) { |
695 AutocompleteInput input( | 695 AutocompleteInput input(ASCIIToUTF16("slash "), base::string16::npos, |
696 ASCIIToUTF16("slash "), base::string16::npos, std::string(), GURL(), | 696 std::string(), GURL(), base::string16(), |
697 metrics::OmniboxEventProto::INVALID_SPEC, false, false, true, true, false, | 697 metrics::OmniboxEventProto::INVALID_SPEC, false, |
698 TestSchemeClassifier()); | 698 false, true, true, false, TestSchemeClassifier()); |
699 autocomplete_->Start(input, false); | 699 autocomplete_->Start(input, false); |
700 if (!autocomplete_->done()) | 700 if (!autocomplete_->done()) |
701 base::RunLoop().Run(); | 701 base::RunLoop().Run(); |
702 | 702 |
703 // None of the matches should attempt to autocomplete. | 703 // None of the matches should attempt to autocomplete. |
704 matches_ = autocomplete_->matches(); | 704 matches_ = autocomplete_->matches(); |
705 for (size_t i = 0; i < matches_.size(); ++i) { | 705 for (size_t i = 0; i < matches_.size(); ++i) { |
706 EXPECT_TRUE(matches_[i].inline_autocompletion.empty()); | 706 EXPECT_TRUE(matches_[i].inline_autocompletion.empty()); |
707 EXPECT_FALSE(matches_[i].allowed_to_be_default_match); | 707 EXPECT_FALSE(matches_[i].allowed_to_be_default_match); |
708 } | 708 } |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
824 } | 824 } |
825 | 825 |
826 TEST_F(HistoryURLProviderTest, CrashDueToFixup) { | 826 TEST_F(HistoryURLProviderTest, CrashDueToFixup) { |
827 // This test passes if we don't crash. The results don't matter. | 827 // This test passes if we don't crash. The results don't matter. |
828 const char* const test_cases[] = { | 828 const char* const test_cases[] = { |
829 "//c", | 829 "//c", |
830 "\\@st", | 830 "\\@st", |
831 "view-source:x", | 831 "view-source:x", |
832 }; | 832 }; |
833 for (size_t i = 0; i < arraysize(test_cases); ++i) { | 833 for (size_t i = 0; i < arraysize(test_cases); ++i) { |
834 AutocompleteInput input( | 834 AutocompleteInput input(ASCIIToUTF16(test_cases[i]), base::string16::npos, |
835 ASCIIToUTF16(test_cases[i]), base::string16::npos, std::string(), | 835 std::string(), GURL(), base::string16(), |
836 GURL(), metrics::OmniboxEventProto::INVALID_SPEC, false, false, true, | 836 metrics::OmniboxEventProto::INVALID_SPEC, false, |
837 true, false, TestSchemeClassifier()); | 837 false, true, true, false, TestSchemeClassifier()); |
838 autocomplete_->Start(input, false); | 838 autocomplete_->Start(input, false); |
839 if (!autocomplete_->done()) | 839 if (!autocomplete_->done()) |
840 base::RunLoop().Run(); | 840 base::RunLoop().Run(); |
841 } | 841 } |
842 } | 842 } |
843 | 843 |
844 TEST_F(HistoryURLProviderTest, DoesNotProvideMatchesOnFocus) { | 844 TEST_F(HistoryURLProviderTest, DoesNotProvideMatchesOnFocus) { |
845 AutocompleteInput input( | 845 AutocompleteInput input(ASCIIToUTF16("foo"), base::string16::npos, |
846 ASCIIToUTF16("foo"), base::string16::npos, std::string(), GURL(), | 846 std::string(), GURL(), base::string16(), |
847 metrics::OmniboxEventProto::INVALID_SPEC, false, false, true, true, true, | 847 metrics::OmniboxEventProto::INVALID_SPEC, false, |
848 TestSchemeClassifier()); | 848 false, true, true, true, TestSchemeClassifier()); |
849 autocomplete_->Start(input, false); | 849 autocomplete_->Start(input, false); |
850 EXPECT_TRUE(autocomplete_->matches().empty()); | 850 EXPECT_TRUE(autocomplete_->matches().empty()); |
851 } | 851 } |
852 | 852 |
853 TEST_F(HistoryURLProviderTest, DoesNotInlinePunycodeMatches) { | 853 TEST_F(HistoryURLProviderTest, DoesNotInlinePunycodeMatches) { |
854 // A URL that matches due to a match in the punycode URL is allowed to be the | 854 // A URL that matches due to a match in the punycode URL is allowed to be the |
855 // default match if the URL doesn't get rendered as international characters. | 855 // default match if the URL doesn't get rendered as international characters. |
856 const UrlAndLegalDefault expected1_true[] = { | 856 const UrlAndLegalDefault expected1_true[] = { |
857 { "http://puny.xn--h2by8byc123p.in/", true }, | 857 { "http://puny.xn--h2by8byc123p.in/", true }, |
858 }; | 858 }; |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1001 { "mailto://a@b.com", true, | 1001 { "mailto://a@b.com", true, |
1002 "mailto://a@b.com", {0, npos, npos}, 0 }, | 1002 "mailto://a@b.com", {0, npos, npos}, 0 }, |
1003 { "mailto://a@b.com", false, | 1003 { "mailto://a@b.com", false, |
1004 "mailto://a@b.com", {0, npos, npos}, 0 }, | 1004 "mailto://a@b.com", {0, npos, npos}, 0 }, |
1005 }; | 1005 }; |
1006 for (size_t i = 0; i < arraysize(test_cases); ++i) { | 1006 for (size_t i = 0; i < arraysize(test_cases); ++i) { |
1007 SCOPED_TRACE(testing::Message() << "Index " << i << " input: " | 1007 SCOPED_TRACE(testing::Message() << "Index " << i << " input: " |
1008 << test_cases[i].input << ", trim_http: " | 1008 << test_cases[i].input << ", trim_http: " |
1009 << test_cases[i].trim_http); | 1009 << test_cases[i].trim_http); |
1010 | 1010 |
1011 AutocompleteInput input( | 1011 AutocompleteInput input(ASCIIToUTF16(test_cases[i].input), |
1012 ASCIIToUTF16(test_cases[i].input), base::string16::npos, std::string(), | 1012 base::string16::npos, std::string(), |
1013 GURL("about:blank"), metrics::OmniboxEventProto::INVALID_SPEC, false, | 1013 GURL("about:blank"), base::string16(), |
1014 false, true, true, false, | 1014 metrics::OmniboxEventProto::INVALID_SPEC, false, |
1015 TestSchemeClassifier()); | 1015 false, true, true, false, TestSchemeClassifier()); |
1016 AutocompleteMatch match(autocomplete_->SuggestExactInput( | 1016 AutocompleteMatch match(autocomplete_->SuggestExactInput( |
1017 input, input.canonicalized_url(), test_cases[i].trim_http)); | 1017 input, input.canonicalized_url(), test_cases[i].trim_http)); |
1018 EXPECT_EQ(ASCIIToUTF16(test_cases[i].contents), match.contents); | 1018 EXPECT_EQ(ASCIIToUTF16(test_cases[i].contents), match.contents); |
1019 for (size_t match_index = 0; match_index < match.contents_class.size(); | 1019 for (size_t match_index = 0; match_index < match.contents_class.size(); |
1020 ++match_index) { | 1020 ++match_index) { |
1021 EXPECT_EQ(test_cases[i].offsets[match_index], | 1021 EXPECT_EQ(test_cases[i].offsets[match_index], |
1022 match.contents_class[match_index].offset); | 1022 match.contents_class[match_index].offset); |
1023 EXPECT_EQ(ACMatchClassification::URL | | 1023 EXPECT_EQ(ACMatchClassification::URL | |
1024 (match_index == test_cases[i].match_classification_index ? | 1024 (match_index == test_cases[i].match_classification_index ? |
1025 ACMatchClassification::MATCH : 0), | 1025 ACMatchClassification::MATCH : 0), |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1118 // the default experimental scoring. | 1118 // the default experimental scoring. |
1119 autocomplete_->scoring_params_.experimental_scoring_enabled = true; | 1119 autocomplete_->scoring_params_.experimental_scoring_enabled = true; |
1120 ASSERT_NO_FATAL_FAILURE(RunTest(ASCIIToUTF16(test_cases[i].input), | 1120 ASSERT_NO_FATAL_FAILURE(RunTest(ASCIIToUTF16(test_cases[i].input), |
1121 std::string(), false, output, max_matches)); | 1121 std::string(), false, output, max_matches)); |
1122 for (int j = 0; j < max_matches; ++j) { | 1122 for (int j = 0; j < max_matches; ++j) { |
1123 EXPECT_EQ(test_cases[i].matches[j].experiment_relevance, | 1123 EXPECT_EQ(test_cases[i].matches[j].experiment_relevance, |
1124 matches_[j].relevance); | 1124 matches_[j].relevance); |
1125 } | 1125 } |
1126 } | 1126 } |
1127 } | 1127 } |
OLD | NEW |