Index: chrome/browser/autocomplete/shortcuts_backend_unittest.cc |
diff --git a/chrome/browser/autocomplete/shortcuts_backend_unittest.cc b/chrome/browser/autocomplete/shortcuts_backend_unittest.cc |
index 7e4455a3713c34046607b08978f67c64719fb173..fa055af89f0fd23d7804beb72157bd1f00086346 100644 |
--- a/chrome/browser/autocomplete/shortcuts_backend_unittest.cc |
+++ b/chrome/browser/autocomplete/shortcuts_backend_unittest.cc |
@@ -11,7 +11,10 @@ |
#include "base/strings/utf_string_conversions.h" |
#include "chrome/browser/autocomplete/shortcuts_backend_factory.h" |
#include "chrome/browser/history/shortcuts_database.h" |
+#include "chrome/browser/search_engines/template_url_service.h" |
+#include "chrome/browser/search_engines/template_url_service_factory.h" |
#include "chrome/test/base/testing_profile.h" |
+#include "chrome/test/base/ui_test_utils.h" |
#include "content/public/test/test_browser_thread.h" |
#include "sql/statement.h" |
@@ -30,6 +33,7 @@ class ShortcutsBackendTest : public testing::Test, |
const std::string& contents_class = std::string(), |
const std::string& description_class = std::string(), |
AutocompleteMatch::Type type = AutocompleteMatchType::URL_WHAT_YOU_TYPED); |
+ void SetSearchProvider(); |
virtual void SetUp(); |
virtual void TearDown(); |
@@ -52,9 +56,10 @@ class ShortcutsBackendTest : public testing::Test, |
bool DeleteShortcutsWithIDs( |
const history::ShortcutsDatabase::ShortcutIDs& deleted_ids); |
+ protected: |
+ TestingProfile profile_; |
private: |
- TestingProfile profile_; |
scoped_refptr<ShortcutsBackend> backend_; |
base::MessageLoopForUI ui_message_loop_; |
content::TestBrowserThread ui_thread_; |
@@ -86,7 +91,22 @@ history::ShortcutsDatabase::Shortcut::MatchCore |
AutocompleteMatch::ClassificationsFromString(contents_class); |
match.description_class = |
AutocompleteMatch::ClassificationsFromString(description_class); |
- return ShortcutsBackend::MatchToMatchCore(match); |
+ match.search_terms_args.reset( |
+ new TemplateURLRef::SearchTermsArgs(match.contents)); |
+ return ShortcutsBackend::MatchToMatchCore(match, &profile_); |
+} |
+ |
+void ShortcutsBackendTest::SetSearchProvider() { |
+ TemplateURLService* template_url_service = |
+ TemplateURLServiceFactory::GetForProfile(&profile_); |
+ TemplateURLData data; |
+ data.SetURL("http://foo.com/search?bar={searchTerms}"); |
+ data.SetKeyword(base::UTF8ToUTF16("foo")); |
+ |
+ TemplateURL* template_url = new TemplateURL(&profile_, data); |
+ // Takes ownership of |template_url|. |
+ template_url_service->Add(template_url); |
+ template_url_service->SetDefaultSearchProvider(template_url); |
} |
void ShortcutsBackendTest::SetUp() { |
@@ -96,6 +116,12 @@ void ShortcutsBackendTest::SetUp() { |
backend_ = ShortcutsBackendFactory::GetForProfile(&profile_); |
ASSERT_TRUE(backend_.get()); |
backend_->AddObserver(this); |
+ |
+ TemplateURLServiceFactory::GetInstance()->SetTestingFactoryAndUse( |
+ &profile_, &TemplateURLServiceFactory::BuildInstanceFor); |
+ TemplateURLService* template_url_service = |
+ TemplateURLServiceFactory::GetForProfile(&profile_); |
+ ui_test_utils::WaitForTemplateURLServiceToLoad(template_url_service); |
} |
void ShortcutsBackendTest::TearDown() { |
@@ -156,14 +182,23 @@ TEST_F(ShortcutsBackendTest, SanitizeMatchCore) { |
std::string output_description_class; |
AutocompleteMatch::Type output_type; |
} cases[] = { |
- { "0,1,4,0", "0,3,4,1", AutocompleteMatchType::URL_WHAT_YOU_TYPED, |
- "0,1,4,0", "0,1", AutocompleteMatchType::HISTORY_URL }, |
- { "0,3,5,1", "0,2,5,0", AutocompleteMatchType::NAVSUGGEST, |
- "0,1", "0,0", AutocompleteMatchType::HISTORY_URL }, |
- { "0,1", "0,0,11,2,15,0", AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED, |
- "0,1", "0,0", AutocompleteMatchType::SEARCH_HISTORY }, |
- { "0,1", "0,0", AutocompleteMatchType::SEARCH_SUGGEST, |
- "0,1", "0,0", AutocompleteMatchType::SEARCH_HISTORY }, |
+ { "0,1,4,0", "0,3,4,1", AutocompleteMatchType::URL_WHAT_YOU_TYPED, |
+ "0,1,4,0", "0,1", AutocompleteMatchType::HISTORY_URL }, |
+ { "0,3,5,1", "0,2,5,0", AutocompleteMatchType::NAVSUGGEST, |
+ "0,1", "0,0", AutocompleteMatchType::HISTORY_URL }, |
+ { "0,1", "0,0,11,2,15,0", |
+ AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED, |
+ "0,1", "0,0", AutocompleteMatchType::SEARCH_HISTORY }, |
+ { "0,1", "0,0", AutocompleteMatchType::SEARCH_SUGGEST, |
+ "0,1", "0,0", AutocompleteMatchType::SEARCH_HISTORY }, |
+ { "0,1", "0,0", AutocompleteMatchType::SEARCH_SUGGEST_ENTITY, |
+ "", "", AutocompleteMatchType::SEARCH_HISTORY }, |
+ { "0,1", "0,0", AutocompleteMatchType::SEARCH_SUGGEST_INFINITE, |
+ "", "", AutocompleteMatchType::SEARCH_HISTORY }, |
+ { "0,1", "0,0", AutocompleteMatchType::SEARCH_SUGGEST_PERSONALIZED, |
+ "", "", AutocompleteMatchType::SEARCH_HISTORY }, |
+ { "0,1", "0,0", AutocompleteMatchType::SEARCH_SUGGEST_PROFILE, |
+ "", "", AutocompleteMatchType::SEARCH_HISTORY }, |
}; |
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) { |
@@ -171,12 +206,42 @@ TEST_F(ShortcutsBackendTest, SanitizeMatchCore) { |
MatchCoreForTesting(std::string(), cases[i].input_contents_class, |
cases[i].input_description_class, |
cases[i].input_type)); |
- EXPECT_EQ(cases[i].output_contents_class, match_core.contents_class); |
- EXPECT_EQ(cases[i].output_description_class, match_core.description_class); |
- EXPECT_EQ(cases[i].output_type, match_core.type); |
+ EXPECT_EQ(cases[i].output_contents_class, match_core.contents_class) |
+ << ":i:" << i << ":type:" << cases[i].input_type; |
+ EXPECT_EQ(cases[i].output_description_class, match_core.description_class) |
+ << ":i:" << i << ":type:" << cases[i].input_type; |
+ EXPECT_EQ(cases[i].output_type, match_core.type) |
+ << ":i:" << i << ":type:" << cases[i].input_type; |
} |
} |
+TEST_F(ShortcutsBackendTest, EntitySuggestionTest) { |
+ SetSearchProvider(); |
+ AutocompleteMatch match; |
+ match.fill_into_edit = base::UTF8ToUTF16("franklin d roosevelt"); |
+ match.type = AutocompleteMatchType::SEARCH_SUGGEST_ENTITY; |
+ match.contents = base::UTF8ToUTF16("roosevelt"); |
+ match.contents_class = |
+ AutocompleteMatch::ClassificationsFromString("0,0,5,2"); |
+ match.description = base::UTF8ToUTF16("Franklin D. Roosevelt"); |
+ match.description_class = AutocompleteMatch::ClassificationsFromString("0,4"); |
+ match.destination_url = GURL( |
+ "http://www.foo.com/search?bar=franklin+d+roosevelt&gs_ssp=1234"); |
+ match.keyword = base::UTF8ToUTF16("foo"); |
+ match.search_terms_args.reset( |
+ new TemplateURLRef::SearchTermsArgs(match.fill_into_edit)); |
+ |
+ history::ShortcutsDatabase::Shortcut::MatchCore match_core = |
+ ShortcutsBackend::MatchToMatchCore(match, &profile_); |
+ |
+ EXPECT_EQ("http://foo.com/search?bar=franklin+d+roosevelt", |
+ match_core.destination_url.spec()); |
+ EXPECT_EQ(match.fill_into_edit, match_core.contents); |
+ EXPECT_EQ("0,0", match_core.contents_class); |
+ EXPECT_EQ(base::string16(), match_core.description); |
+ EXPECT_TRUE(match_core.description_class.empty()); |
+} |
+ |
TEST_F(ShortcutsBackendTest, AddAndUpdateShortcut) { |
InitBackend(); |
EXPECT_FALSE(changed_notified()); |