| 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/autocomplete_provider.h" | 5 #include "components/omnibox/autocomplete_provider.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
| (...skipping 553 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 564 { | 564 { |
| 565 KeywordTestData duplicate_url[] = { | 565 KeywordTestData duplicate_url[] = { |
| 566 { base::ASCIIToUTF16("fo"), base::string16(), base::string16() }, | 566 { base::ASCIIToUTF16("fo"), base::string16(), base::string16() }, |
| 567 { base::ASCIIToUTF16("foo.com"), base::string16(), | 567 { base::ASCIIToUTF16("foo.com"), base::string16(), |
| 568 base::ASCIIToUTF16("foo.com") }, | 568 base::ASCIIToUTF16("foo.com") }, |
| 569 { base::ASCIIToUTF16("foo.com"), base::string16(), base::string16() } | 569 { base::ASCIIToUTF16("foo.com"), base::string16(), base::string16() } |
| 570 }; | 570 }; |
| 571 | 571 |
| 572 SCOPED_TRACE("Duplicate url"); | 572 SCOPED_TRACE("Duplicate url"); |
| 573 RunKeywordTest(base::ASCIIToUTF16("fo"), duplicate_url, | 573 RunKeywordTest(base::ASCIIToUTF16("fo"), duplicate_url, |
| 574 ARRAYSIZE_UNSAFE(duplicate_url)); | 574 arraysize(duplicate_url)); |
| 575 } | 575 } |
| 576 | 576 |
| 577 { | 577 { |
| 578 KeywordTestData keyword_match[] = { | 578 KeywordTestData keyword_match[] = { |
| 579 { base::ASCIIToUTF16("foo.com"), base::ASCIIToUTF16("foo.com"), | 579 { base::ASCIIToUTF16("foo.com"), base::ASCIIToUTF16("foo.com"), |
| 580 base::string16() }, | 580 base::string16() }, |
| 581 { base::ASCIIToUTF16("foo.com"), base::string16(), base::string16() } | 581 { base::ASCIIToUTF16("foo.com"), base::string16(), base::string16() } |
| 582 }; | 582 }; |
| 583 | 583 |
| 584 SCOPED_TRACE("Duplicate url with keyword match"); | 584 SCOPED_TRACE("Duplicate url with keyword match"); |
| 585 RunKeywordTest(base::ASCIIToUTF16("fo"), keyword_match, | 585 RunKeywordTest(base::ASCIIToUTF16("fo"), keyword_match, |
| 586 ARRAYSIZE_UNSAFE(keyword_match)); | 586 arraysize(keyword_match)); |
| 587 } | 587 } |
| 588 | 588 |
| 589 { | 589 { |
| 590 KeywordTestData multiple_keyword[] = { | 590 KeywordTestData multiple_keyword[] = { |
| 591 { base::ASCIIToUTF16("fo"), base::string16(), base::string16() }, | 591 { base::ASCIIToUTF16("fo"), base::string16(), base::string16() }, |
| 592 { base::ASCIIToUTF16("foo.com"), base::string16(), | 592 { base::ASCIIToUTF16("foo.com"), base::string16(), |
| 593 base::ASCIIToUTF16("foo.com") }, | 593 base::ASCIIToUTF16("foo.com") }, |
| 594 { base::ASCIIToUTF16("foo.com"), base::string16(), base::string16() }, | 594 { base::ASCIIToUTF16("foo.com"), base::string16(), base::string16() }, |
| 595 { base::ASCIIToUTF16("bar.com"), base::string16(), | 595 { base::ASCIIToUTF16("bar.com"), base::string16(), |
| 596 base::ASCIIToUTF16("bar.com") }, | 596 base::ASCIIToUTF16("bar.com") }, |
| 597 }; | 597 }; |
| 598 | 598 |
| 599 SCOPED_TRACE("Duplicate url with multiple keywords"); | 599 SCOPED_TRACE("Duplicate url with multiple keywords"); |
| 600 RunKeywordTest(base::ASCIIToUTF16("fo"), multiple_keyword, | 600 RunKeywordTest(base::ASCIIToUTF16("fo"), multiple_keyword, |
| 601 ARRAYSIZE_UNSAFE(multiple_keyword)); | 601 arraysize(multiple_keyword)); |
| 602 } | 602 } |
| 603 } | 603 } |
| 604 | 604 |
| 605 // Test that exact match keywords trump keywords associated with | 605 // Test that exact match keywords trump keywords associated with |
| 606 // the match. | 606 // the match. |
| 607 TEST_F(AutocompleteProviderTest, ExactMatchKeywords) { | 607 TEST_F(AutocompleteProviderTest, ExactMatchKeywords) { |
| 608 ResetControllerWithKeywordProvider(); | 608 ResetControllerWithKeywordProvider(); |
| 609 | 609 |
| 610 { | 610 { |
| 611 KeywordTestData keyword_match[] = { | 611 KeywordTestData keyword_match[] = { |
| 612 { base::ASCIIToUTF16("foo.com"), base::string16(), | 612 { base::ASCIIToUTF16("foo.com"), base::string16(), |
| 613 base::ASCIIToUTF16("foo.com") } | 613 base::ASCIIToUTF16("foo.com") } |
| 614 }; | 614 }; |
| 615 | 615 |
| 616 SCOPED_TRACE("keyword match as usual"); | 616 SCOPED_TRACE("keyword match as usual"); |
| 617 RunKeywordTest(base::ASCIIToUTF16("fo"), keyword_match, | 617 RunKeywordTest(base::ASCIIToUTF16("fo"), keyword_match, |
| 618 ARRAYSIZE_UNSAFE(keyword_match)); | 618 arraysize(keyword_match)); |
| 619 } | 619 } |
| 620 | 620 |
| 621 // The same result set with an input of "f" (versus "fo") should get | 621 // The same result set with an input of "f" (versus "fo") should get |
| 622 // a different associated keyword because "f" is an exact match for | 622 // a different associated keyword because "f" is an exact match for |
| 623 // a keyword and that should trump the keyword normally associated with | 623 // a keyword and that should trump the keyword normally associated with |
| 624 // this match. | 624 // this match. |
| 625 { | 625 { |
| 626 KeywordTestData keyword_match[] = { | 626 KeywordTestData keyword_match[] = { |
| 627 { base::ASCIIToUTF16("foo.com"), base::string16(), | 627 { base::ASCIIToUTF16("foo.com"), base::string16(), |
| 628 base::ASCIIToUTF16("f") } | 628 base::ASCIIToUTF16("f") } |
| 629 }; | 629 }; |
| 630 | 630 |
| 631 SCOPED_TRACE("keyword exact match"); | 631 SCOPED_TRACE("keyword exact match"); |
| 632 RunKeywordTest(base::ASCIIToUTF16("f"), keyword_match, | 632 RunKeywordTest(base::ASCIIToUTF16("f"), keyword_match, |
| 633 ARRAYSIZE_UNSAFE(keyword_match)); | 633 arraysize(keyword_match)); |
| 634 } | 634 } |
| 635 } | 635 } |
| 636 | 636 |
| 637 TEST_F(AutocompleteProviderTest, UpdateAssistedQueryStats) { | 637 TEST_F(AutocompleteProviderTest, UpdateAssistedQueryStats) { |
| 638 ResetControllerWithTestProviders(false, NULL, NULL); | 638 ResetControllerWithTestProviders(false, NULL, NULL); |
| 639 | 639 |
| 640 { | 640 { |
| 641 AssistedQueryStatsTestData test_data[] = { | 641 AssistedQueryStatsTestData test_data[] = { |
| 642 // MSVC doesn't support zero-length arrays, so supply some dummy data. | 642 // MSVC doesn't support zero-length arrays, so supply some dummy data. |
| 643 { AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED, "" } | 643 { AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED, "" } |
| 644 }; | 644 }; |
| 645 SCOPED_TRACE("No matches"); | 645 SCOPED_TRACE("No matches"); |
| 646 // Note: We pass 0 here to ignore the dummy data above. | 646 // Note: We pass 0 here to ignore the dummy data above. |
| 647 RunAssistedQueryStatsTest(test_data, 0); | 647 RunAssistedQueryStatsTest(test_data, 0); |
| 648 } | 648 } |
| 649 | 649 |
| 650 { | 650 { |
| 651 AssistedQueryStatsTestData test_data[] = { | 651 AssistedQueryStatsTestData test_data[] = { |
| 652 { AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED, "chrome..69i57" } | 652 { AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED, "chrome..69i57" } |
| 653 }; | 653 }; |
| 654 SCOPED_TRACE("One match"); | 654 SCOPED_TRACE("One match"); |
| 655 RunAssistedQueryStatsTest(test_data, ARRAYSIZE_UNSAFE(test_data)); | 655 RunAssistedQueryStatsTest(test_data, arraysize(test_data)); |
| 656 } | 656 } |
| 657 | 657 |
| 658 { | 658 { |
| 659 AssistedQueryStatsTestData test_data[] = { | 659 AssistedQueryStatsTestData test_data[] = { |
| 660 { AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED, | 660 { AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED, |
| 661 "chrome..69i57j69i58j5l2j0l3j69i59" }, | 661 "chrome..69i57j69i58j5l2j0l3j69i59" }, |
| 662 { AutocompleteMatchType::URL_WHAT_YOU_TYPED, | 662 { AutocompleteMatchType::URL_WHAT_YOU_TYPED, |
| 663 "chrome..69i57j69i58j5l2j0l3j69i59" }, | 663 "chrome..69i57j69i58j5l2j0l3j69i59" }, |
| 664 { AutocompleteMatchType::NAVSUGGEST, | 664 { AutocompleteMatchType::NAVSUGGEST, |
| 665 "chrome.2.69i57j69i58j5l2j0l3j69i59" }, | 665 "chrome.2.69i57j69i58j5l2j0l3j69i59" }, |
| 666 { AutocompleteMatchType::NAVSUGGEST, | 666 { AutocompleteMatchType::NAVSUGGEST, |
| 667 "chrome.3.69i57j69i58j5l2j0l3j69i59" }, | 667 "chrome.3.69i57j69i58j5l2j0l3j69i59" }, |
| 668 { AutocompleteMatchType::SEARCH_SUGGEST, | 668 { AutocompleteMatchType::SEARCH_SUGGEST, |
| 669 "chrome.4.69i57j69i58j5l2j0l3j69i59" }, | 669 "chrome.4.69i57j69i58j5l2j0l3j69i59" }, |
| 670 { AutocompleteMatchType::SEARCH_SUGGEST, | 670 { AutocompleteMatchType::SEARCH_SUGGEST, |
| 671 "chrome.5.69i57j69i58j5l2j0l3j69i59" }, | 671 "chrome.5.69i57j69i58j5l2j0l3j69i59" }, |
| 672 { AutocompleteMatchType::SEARCH_SUGGEST, | 672 { AutocompleteMatchType::SEARCH_SUGGEST, |
| 673 "chrome.6.69i57j69i58j5l2j0l3j69i59" }, | 673 "chrome.6.69i57j69i58j5l2j0l3j69i59" }, |
| 674 { AutocompleteMatchType::SEARCH_HISTORY, | 674 { AutocompleteMatchType::SEARCH_HISTORY, |
| 675 "chrome.7.69i57j69i58j5l2j0l3j69i59" }, | 675 "chrome.7.69i57j69i58j5l2j0l3j69i59" }, |
| 676 }; | 676 }; |
| 677 SCOPED_TRACE("Multiple matches"); | 677 SCOPED_TRACE("Multiple matches"); |
| 678 RunAssistedQueryStatsTest(test_data, ARRAYSIZE_UNSAFE(test_data)); | 678 RunAssistedQueryStatsTest(test_data, arraysize(test_data)); |
| 679 } | 679 } |
| 680 } | 680 } |
| 681 | 681 |
| 682 TEST_F(AutocompleteProviderTest, GetDestinationURL) { | 682 TEST_F(AutocompleteProviderTest, GetDestinationURL) { |
| 683 ResetControllerWithKeywordAndSearchProviders(); | 683 ResetControllerWithKeywordAndSearchProviders(); |
| 684 | 684 |
| 685 // For the destination URL to have aqs parameters for query formulation time | 685 // For the destination URL to have aqs parameters for query formulation time |
| 686 // and the field trial triggered bit, many conditions need to be satisfied. | 686 // and the field trial triggered bit, many conditions need to be satisfied. |
| 687 AutocompleteMatch match(NULL, 1100, false, | 687 AutocompleteMatch match(NULL, 1100, false, |
| 688 AutocompleteMatchType::SEARCH_SUGGEST); | 688 AutocompleteMatchType::SEARCH_SUGGEST); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 728 url = GetDestinationURL(match, base::TimeDelta::FromMilliseconds(2456)); | 728 url = GetDestinationURL(match, base::TimeDelta::FromMilliseconds(2456)); |
| 729 EXPECT_EQ("//aqs=chrome.0.69i57j69i58j5l2j0l3j69i59.2456j0j4&", url.path()); | 729 EXPECT_EQ("//aqs=chrome.0.69i57j69i58j5l2j0l3j69i59.2456j0j4&", url.path()); |
| 730 | 730 |
| 731 // Test page classification and field trial triggered set. | 731 // Test page classification and field trial triggered set. |
| 732 controller_->search_provider_->field_trial_triggered_in_session_ = true; | 732 controller_->search_provider_->field_trial_triggered_in_session_ = true; |
| 733 EXPECT_TRUE( | 733 EXPECT_TRUE( |
| 734 controller_->search_provider_->field_trial_triggered_in_session()); | 734 controller_->search_provider_->field_trial_triggered_in_session()); |
| 735 url = GetDestinationURL(match, base::TimeDelta::FromMilliseconds(2456)); | 735 url = GetDestinationURL(match, base::TimeDelta::FromMilliseconds(2456)); |
| 736 EXPECT_EQ("//aqs=chrome.0.69i57j69i58j5l2j0l3j69i59.2456j1j4&", url.path()); | 736 EXPECT_EQ("//aqs=chrome.0.69i57j69i58j5l2j0l3j69i59.2456j1j4&", url.path()); |
| 737 } | 737 } |
| OLD | NEW |