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 "chrome/browser/autocomplete/shortcuts_provider.h" | 5 #include "chrome/browser/autocomplete/shortcuts_provider.h" |
6 | 6 |
7 #include <math.h> | 7 #include <math.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <functional> | 10 #include <functional> |
11 #include <set> | 11 #include <set> |
12 #include <string> | 12 #include <string> |
13 #include <vector> | 13 #include <vector> |
14 | 14 |
15 #include "base/memory/ref_counted.h" | 15 #include "base/memory/ref_counted.h" |
16 #include "base/message_loop/message_loop.h" | 16 #include "base/message_loop/message_loop.h" |
17 #include "base/prefs/pref_service.h" | 17 #include "base/prefs/pref_service.h" |
18 #include "base/strings/stringprintf.h" | 18 #include "base/strings/stringprintf.h" |
19 #include "base/strings/utf_string_conversions.h" | 19 #include "base/strings/utf_string_conversions.h" |
20 #include "chrome/browser/autocomplete/autocomplete_input.h" | 20 #include "chrome/browser/autocomplete/autocomplete_input.h" |
21 #include "chrome/browser/autocomplete/autocomplete_match.h" | 21 #include "chrome/browser/autocomplete/autocomplete_match.h" |
22 #include "chrome/browser/autocomplete/autocomplete_provider.h" | 22 #include "chrome/browser/autocomplete/autocomplete_provider.h" |
23 #include "chrome/browser/autocomplete/autocomplete_provider_listener.h" | 23 #include "chrome/browser/autocomplete/autocomplete_provider_listener.h" |
| 24 #include "chrome/browser/autocomplete/autocomplete_result.h" |
24 #include "chrome/browser/history/history_service.h" | 25 #include "chrome/browser/history/history_service.h" |
25 #include "chrome/browser/history/in_memory_url_index.h" | 26 #include "chrome/browser/history/in_memory_url_index.h" |
26 #include "chrome/browser/history/shortcuts_backend.h" | 27 #include "chrome/browser/history/shortcuts_backend.h" |
27 #include "chrome/browser/history/shortcuts_backend_factory.h" | 28 #include "chrome/browser/history/shortcuts_backend_factory.h" |
28 #include "chrome/browser/history/url_database.h" | 29 #include "chrome/browser/history/url_database.h" |
29 #include "chrome/common/pref_names.h" | 30 #include "chrome/common/pref_names.h" |
30 #include "chrome/test/base/testing_profile.h" | 31 #include "chrome/test/base/testing_profile.h" |
31 #include "content/public/test/test_browser_thread.h" | 32 #include "content/public/test/test_browser_thread.h" |
32 #include "testing/gtest/include/gtest/gtest.h" | 33 #include "testing/gtest/include/gtest/gtest.h" |
33 | 34 |
(...skipping 533 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
567 spans_description.push_back( | 568 spans_description.push_back( |
568 ACMatchClassification(0, ACMatchClassification::NONE)); | 569 ACMatchClassification(0, ACMatchClassification::NONE)); |
569 spans_description.push_back( | 570 spans_description.push_back( |
570 ACMatchClassification(2, ACMatchClassification::MATCH)); | 571 ACMatchClassification(2, ACMatchClassification::MATCH)); |
571 ShortcutsBackend::Shortcut shortcut(std::string(), | 572 ShortcutsBackend::Shortcut shortcut(std::string(), |
572 ASCIIToUTF16("test"), GURL("http://www.test.com"), | 573 ASCIIToUTF16("test"), GURL("http://www.test.com"), |
573 ASCIIToUTF16("www.test.com"), spans_content, ASCIIToUTF16("A test"), | 574 ASCIIToUTF16("www.test.com"), spans_content, ASCIIToUTF16("A test"), |
574 spans_description, base::Time::Now(), 1); | 575 spans_description, base::Time::Now(), 1); |
575 | 576 |
576 // Maximal score. | 577 // Maximal score. |
| 578 const int max_relevance = AutocompleteResult::kLowestDefaultScore - 1; |
577 const int kMaxScore = provider_->CalculateScore( | 579 const int kMaxScore = provider_->CalculateScore( |
578 ASCIIToUTF16("test"), shortcut); | 580 ASCIIToUTF16("test"), shortcut, max_relevance); |
579 | 581 |
580 // Score decreases as percent of the match is decreased. | 582 // Score decreases as percent of the match is decreased. |
581 int score_three_quarters = | 583 int score_three_quarters = |
582 provider_->CalculateScore(ASCIIToUTF16("tes"), shortcut); | 584 provider_->CalculateScore(ASCIIToUTF16("tes"), shortcut, max_relevance); |
583 EXPECT_LT(score_three_quarters, kMaxScore); | 585 EXPECT_LT(score_three_quarters, kMaxScore); |
584 int score_one_half = | 586 int score_one_half = |
585 provider_->CalculateScore(ASCIIToUTF16("te"), shortcut); | 587 provider_->CalculateScore(ASCIIToUTF16("te"), shortcut, max_relevance); |
586 EXPECT_LT(score_one_half, score_three_quarters); | 588 EXPECT_LT(score_one_half, score_three_quarters); |
587 int score_one_quarter = | 589 int score_one_quarter = |
588 provider_->CalculateScore(ASCIIToUTF16("t"), shortcut); | 590 provider_->CalculateScore(ASCIIToUTF16("t"), shortcut, max_relevance); |
589 EXPECT_LT(score_one_quarter, score_one_half); | 591 EXPECT_LT(score_one_quarter, score_one_half); |
590 | 592 |
591 // Should decay with time - one week. | 593 // Should decay with time - one week. |
592 shortcut.last_access_time = base::Time::Now() - base::TimeDelta::FromDays(7); | 594 shortcut.last_access_time = base::Time::Now() - base::TimeDelta::FromDays(7); |
593 int score_week_old = | 595 int score_week_old = |
594 provider_->CalculateScore(ASCIIToUTF16("test"), shortcut); | 596 provider_->CalculateScore(ASCIIToUTF16("test"), shortcut, max_relevance); |
595 EXPECT_LT(score_week_old, kMaxScore); | 597 EXPECT_LT(score_week_old, kMaxScore); |
596 | 598 |
597 // Should decay more in two weeks. | 599 // Should decay more in two weeks. |
598 shortcut.last_access_time = base::Time::Now() - base::TimeDelta::FromDays(14); | 600 shortcut.last_access_time = base::Time::Now() - base::TimeDelta::FromDays(14); |
599 int score_two_weeks_old = | 601 int score_two_weeks_old = |
600 provider_->CalculateScore(ASCIIToUTF16("test"), shortcut); | 602 provider_->CalculateScore(ASCIIToUTF16("test"), shortcut, max_relevance); |
601 EXPECT_LT(score_two_weeks_old, score_week_old); | 603 EXPECT_LT(score_two_weeks_old, score_week_old); |
602 | 604 |
603 // But not if it was activly clicked on. 2 hits slow decaying power. | 605 // But not if it was activly clicked on. 2 hits slow decaying power. |
604 shortcut.number_of_hits = 2; | 606 shortcut.number_of_hits = 2; |
605 shortcut.last_access_time = base::Time::Now() - base::TimeDelta::FromDays(14); | 607 shortcut.last_access_time = base::Time::Now() - base::TimeDelta::FromDays(14); |
606 int score_popular_two_weeks_old = | 608 int score_popular_two_weeks_old = |
607 provider_->CalculateScore(ASCIIToUTF16("test"), shortcut); | 609 provider_->CalculateScore(ASCIIToUTF16("test"), shortcut, max_relevance); |
608 EXPECT_LT(score_two_weeks_old, score_popular_two_weeks_old); | 610 EXPECT_LT(score_two_weeks_old, score_popular_two_weeks_old); |
609 // But still decayed. | 611 // But still decayed. |
610 EXPECT_LT(score_popular_two_weeks_old, kMaxScore); | 612 EXPECT_LT(score_popular_two_weeks_old, kMaxScore); |
611 | 613 |
612 // 3 hits slow decaying power even more. | 614 // 3 hits slow decaying power even more. |
613 shortcut.number_of_hits = 3; | 615 shortcut.number_of_hits = 3; |
614 shortcut.last_access_time = base::Time::Now() - base::TimeDelta::FromDays(14); | 616 shortcut.last_access_time = base::Time::Now() - base::TimeDelta::FromDays(14); |
615 int score_more_popular_two_weeks_old = | 617 int score_more_popular_two_weeks_old = |
616 provider_->CalculateScore(ASCIIToUTF16("test"), shortcut); | 618 provider_->CalculateScore(ASCIIToUTF16("test"), shortcut, max_relevance); |
617 EXPECT_LT(score_two_weeks_old, score_more_popular_two_weeks_old); | 619 EXPECT_LT(score_two_weeks_old, score_more_popular_two_weeks_old); |
618 EXPECT_LT(score_popular_two_weeks_old, score_more_popular_two_weeks_old); | 620 EXPECT_LT(score_popular_two_weeks_old, score_more_popular_two_weeks_old); |
619 // But still decayed. | 621 // But still decayed. |
620 EXPECT_LT(score_more_popular_two_weeks_old, kMaxScore); | 622 EXPECT_LT(score_more_popular_two_weeks_old, kMaxScore); |
621 } | 623 } |
622 | 624 |
623 TEST_F(ShortcutsProviderTest, DeleteMatch) { | 625 TEST_F(ShortcutsProviderTest, DeleteMatch) { |
624 TestShortcutInfo shortcuts_to_test_delete[3] = { | 626 TestShortcutInfo shortcuts_to_test_delete[3] = { |
625 { "BD85DBA2-8C29-49F9-84AE-48E1E90880F1", | 627 { "BD85DBA2-8C29-49F9-84AE-48E1E90880F1", |
626 "http://www.deletetest.com/1.html", "delete", | 628 "http://www.deletetest.com/1.html", "delete", |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
665 | 667 |
666 match.destination_url = GURL(shortcuts_to_test_delete[2].url); | 668 match.destination_url = GURL(shortcuts_to_test_delete[2].url); |
667 match.contents = ASCIIToUTF16(shortcuts_to_test_delete[2].contents); | 669 match.contents = ASCIIToUTF16(shortcuts_to_test_delete[2].contents); |
668 match.description = ASCIIToUTF16(shortcuts_to_test_delete[2].description); | 670 match.description = ASCIIToUTF16(shortcuts_to_test_delete[2].description); |
669 | 671 |
670 provider_->DeleteMatch(match); | 672 provider_->DeleteMatch(match); |
671 EXPECT_EQ(original_shortcuts_count, backend_->shortcuts_map().size()); | 673 EXPECT_EQ(original_shortcuts_count, backend_->shortcuts_map().size()); |
672 EXPECT_TRUE(backend_->shortcuts_map().end() == | 674 EXPECT_TRUE(backend_->shortcuts_map().end() == |
673 backend_->shortcuts_map().find(ASCIIToUTF16("delete"))); | 675 backend_->shortcuts_map().find(ASCIIToUTF16("delete"))); |
674 } | 676 } |
OLD | NEW |