Chromium Code Reviews| Index: components/omnibox/browser/shortcuts_provider_unittest.cc |
| diff --git a/chrome/browser/autocomplete/shortcuts_provider_unittest.cc b/components/omnibox/browser/shortcuts_provider_unittest.cc |
| similarity index 89% |
| rename from chrome/browser/autocomplete/shortcuts_provider_unittest.cc |
| rename to components/omnibox/browser/shortcuts_provider_unittest.cc |
| index f36b51933d211b649f0f6f1cd279f1fcdb56ff65..7d7fc1283bc7f2e32cbc80ece49cc7b99ce496d4 100644 |
| --- a/chrome/browser/autocomplete/shortcuts_provider_unittest.cc |
| +++ b/components/omnibox/browser/shortcuts_provider_unittest.cc |
| @@ -13,36 +13,28 @@ |
| #include <string> |
| #include <vector> |
| +#include "base/files/scoped_temp_dir.h" |
| #include "base/macros.h" |
| #include "base/memory/ref_counted.h" |
| #include "base/message_loop/message_loop.h" |
| #include "base/strings/stringprintf.h" |
| #include "base/strings/utf_string_conversions.h" |
| -#include "chrome/browser/autocomplete/chrome_autocomplete_provider_client.h" |
| -#include "chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.h" |
| -#include "chrome/browser/autocomplete/shortcuts_backend_factory.h" |
| -#include "chrome/test/base/testing_profile.h" |
| +#include "base/test/sequenced_worker_pool_owner.h" |
| +#include "base/threading/thread.h" |
| #include "components/history/core/browser/history_service.h" |
| #include "components/history/core/browser/url_database.h" |
| +#include "components/history/core/test/history_service_test_util.h" |
| #include "components/metrics/proto/omnibox_event.pb.h" |
| #include "components/omnibox/browser/autocomplete_input.h" |
| #include "components/omnibox/browser/autocomplete_match.h" |
| #include "components/omnibox/browser/autocomplete_provider.h" |
| #include "components/omnibox/browser/autocomplete_result.h" |
| #include "components/omnibox/browser/in_memory_url_index.h" |
| +#include "components/omnibox/browser/mock_autocomplete_provider_client.h" |
| #include "components/omnibox/browser/shortcuts_backend.h" |
| -#include "components/prefs/pref_service.h" |
| -#include "content/public/browser/notification_service.h" |
| -#include "content/public/test/test_browser_thread.h" |
| +#include "components/omnibox/browser/test_scheme_classifier.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| -#if defined(ENABLE_EXTENSIONS) |
| -#include "extensions/browser/notification_types.h" |
| -#include "extensions/common/extension.h" |
| -#include "extensions/common/extension_builder.h" |
| -#include "extensions/common/value_builder.h" |
| -#endif |
| - |
| using base::ASCIIToUTF16; |
| // TestShortcutInfo ----------------------------------------------------------- |
| @@ -146,11 +138,6 @@ struct TestShortcutInfo { |
| "http://www.daysagotest.com/d.html", "www.daysagotest.com/d.html", |
| "0,1,8,3,11,1", "Test - site", "0,0", ui::PAGE_TRANSITION_TYPED, |
| AutocompleteMatchType::HISTORY_URL, "", 4, 1 }, |
| - { "BD85DBA2-8C29-49F9-84AE-48E1E90880F1", "echo echo", "echo echo", |
| - "chrome-extension://cedabbhfglmiikkmdgcpjdkocfcmbkee/?q=echo", |
| - "Run Echo command: echo", "0,0", "Echo", "0,4", |
| - ui::PAGE_TRANSITION_TYPED, AutocompleteMatchType::EXTENSION_APP, |
| - "echo", 1, 1 }, |
| { "BD85DBA2-8C29-49F9-84AE-48E1E90880F2", "abcdef.com", "http://abcdef.com", |
| "http://abcdef.com/", "Abcdef", "0,1,4,0", "Abcdef", "0,3,4,1", |
| ui::PAGE_TRANSITION_TYPED, AutocompleteMatchType::HISTORY_URL, "", 1, |
| @@ -204,8 +191,54 @@ struct TestShortcutInfo { |
| AutocompleteMatchType::HISTORY_URL, "", 1, 100 }, |
| }; |
| -} // namespace |
| +class FakeAutocompleteProviderClient |
| + : public testing::NiceMock<MockAutocompleteProviderClient> { |
| + public: |
| + FakeAutocompleteProviderClient() |
| + : db_thread_("Test DB thread"), |
| + pool_owner_(3, "Background Pool") { |
| + set_template_url_service( |
| + make_scoped_ptr(new TemplateURLService(nullptr, 0))); |
| + if (history_dir_.CreateUniqueTempDir()) { |
| + history_service_ = history::CreateHistoryService( |
| + history_dir_.path(), std::string(), true); |
| + } |
| + |
| + db_thread_.Start(); |
| + shortcuts_backend_ = new ShortcutsBackend( |
| + GetTemplateURLService(), make_scoped_ptr(new SearchTermsData()), |
| + history_service_.get(), db_thread_.task_runner(), |
| + base::FilePath(), true); |
| + shortcuts_backend_->Init(); |
| + } |
| + |
| + ~FakeAutocompleteProviderClient() override { |
| + db_thread_.Stop(); |
| + } |
| + |
| + history::HistoryService* GetHistoryService() override { |
| + return history_service_.get(); |
| + } |
| + |
| + scoped_refptr<ShortcutsBackend> GetShortcutsBackend() override { |
| + return shortcuts_backend_; |
| + } |
| + |
| + scoped_refptr<ShortcutsBackend> GetShortcutsBackendIfExists() override { |
| + return shortcuts_backend_; |
| + } |
| + |
| + private: |
| + base::Thread db_thread_; |
| + base::SequencedWorkerPoolOwner pool_owner_; |
| + base::ScopedTempDir history_dir_; |
| + scoped_ptr<history::HistoryService> history_service_; |
| + scoped_refptr<ShortcutsBackend> shortcuts_backend_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(FakeAutocompleteProviderClient); |
| +}; |
| +} // namespace |
|
blundell
2016/02/02 15:37:34
I believe these blank lines are intended, although
rohitrao (ping after 24h)
2016/02/02 15:42:26
Yeah, I decided that "---------------------" was a
|
| // ClassifyTest --------------------------------------------------------------- |
| @@ -237,7 +270,6 @@ ACMatchClassifications ClassifyTest::RunTest(const base::string16& find_text) { |
| ShortcutsProvider::CreateWordMapForString(find_text), text_, matches_); |
| } |
| - |
| // ShortcutsProviderTest ------------------------------------------------------ |
| class ShortcutsProviderTest : public testing::Test { |
| @@ -256,7 +288,7 @@ class ShortcutsProviderTest : public testing::Test { |
| void operator()(const ExpectedURLAndAllowedToBeDefault& expected); |
| std::set<ExpectedURLAndAllowedToBeDefault> Leftovers() const { |
| - return matches_; |
| + return matches_; |
| } |
| private: |
| @@ -286,32 +318,21 @@ class ShortcutsProviderTest : public testing::Test { |
| const ShortcutsDatabase::Shortcut& shortcut, |
| int max_relevance); |
| - base::MessageLoopForUI message_loop_; |
| - content::TestBrowserThread ui_thread_; |
| - content::TestBrowserThread file_thread_; |
| - |
| - TestingProfile profile_; |
| - ChromeAutocompleteProviderClient client_; |
| + base::MessageLoop message_loop_; |
| + scoped_ptr<FakeAutocompleteProviderClient> client_; |
| + scoped_refptr<ShortcutsProvider> provider_; |
| ACMatches ac_matches_; // The resulting matches after running RunTest. |
| - |
| - scoped_refptr<ShortcutsBackend> backend_; |
| - scoped_refptr<ShortcutsProvider> provider_; |
| }; |
| -ShortcutsProviderTest::ShortcutsProviderTest() |
| - : ui_thread_(content::BrowserThread::UI, &message_loop_), |
| - file_thread_(content::BrowserThread::FILE, &message_loop_), |
| - client_(&profile_) { |
| +ShortcutsProviderTest::ShortcutsProviderTest() { |
| } |
| void ShortcutsProviderTest::SetUp() { |
| - ShortcutsBackendFactory::GetInstance()->SetTestingFactoryAndUse( |
| - &profile_, &ShortcutsBackendFactory::BuildProfileNoDatabaseForTesting); |
| - backend_ = ShortcutsBackendFactory::GetForProfile(&profile_); |
| - ASSERT_TRUE(backend_.get()); |
| - ASSERT_TRUE(profile_.CreateHistoryService(true, false)); |
| - provider_ = new ShortcutsProvider(&client_); |
| + client_.reset(new FakeAutocompleteProviderClient()); |
| + |
| + ASSERT_TRUE(client_->GetShortcutsBackend()); |
| + provider_ = new ShortcutsProvider(client_.get()); |
| FillData(shortcut_test_db, arraysize(shortcut_test_db)); |
| } |
| @@ -319,13 +340,13 @@ void ShortcutsProviderTest::TearDown() { |
| // Run all pending tasks or else some threads hold on to the message loop |
| // and prevent it from being deleted. |
| message_loop_.RunUntilIdle(); |
| - profile_.DestroyHistoryService(); |
| provider_ = NULL; |
| } |
| void ShortcutsProviderTest::FillData(TestShortcutInfo* db, size_t db_size) { |
| DCHECK(provider_.get()); |
| - size_t expected_size = backend_->shortcuts_map().size() + db_size; |
| + scoped_refptr<ShortcutsBackend> backend = client_->GetShortcutsBackend(); |
| + size_t expected_size = backend->shortcuts_map().size() + db_size; |
| for (size_t i = 0; i < db_size; ++i) { |
| const TestShortcutInfo& cur = db[i]; |
| ShortcutsDatabase::Shortcut shortcut( |
| @@ -337,9 +358,9 @@ void ShortcutsProviderTest::FillData(TestShortcutInfo* db, size_t db_size) { |
| cur.transition, cur.type, ASCIIToUTF16(cur.keyword)), |
| base::Time::Now() - base::TimeDelta::FromDays(cur.days_from_now), |
| cur.number_of_hits); |
| - backend_->AddShortcut(shortcut); |
| + backend->AddShortcut(shortcut); |
| } |
| - EXPECT_EQ(expected_size, backend_->shortcuts_map().size()); |
| + EXPECT_EQ(expected_size, backend->shortcuts_map().size()); |
| } |
| ShortcutsProviderTest::SetShouldContain::SetShouldContain( |
| @@ -365,7 +386,7 @@ void ShortcutsProviderTest::RunTest( |
| AutocompleteInput input(text, base::string16::npos, std::string(), GURL(), |
| metrics::OmniboxEventProto::INVALID_SPEC, |
| prevent_inline_autocomplete, false, true, true, false, |
| - ChromeAutocompleteSchemeClassifier(&profile_)); |
| + TestSchemeClassifier()); |
| provider_->Start(input, false); |
| EXPECT_TRUE(provider_->done()); |
| @@ -403,7 +424,6 @@ int ShortcutsProviderTest::CalculateScore( |
| max_relevance); |
| } |
| - |
| // Actual tests --------------------------------------------------------------- |
| TEST_F(ShortcutsProviderTest, SimpleSingleMatch) { |
| @@ -789,15 +809,16 @@ TEST_F(ShortcutsProviderTest, DeleteMatch) { |
| AutocompleteMatchType::HISTORY_URL, "", 1, 1}, |
| }; |
| - size_t original_shortcuts_count = backend_->shortcuts_map().size(); |
| + scoped_refptr<ShortcutsBackend> backend = client_->GetShortcutsBackend(); |
| + size_t original_shortcuts_count = backend->shortcuts_map().size(); |
| FillData(shortcuts_to_test_delete, arraysize(shortcuts_to_test_delete)); |
| - EXPECT_EQ(original_shortcuts_count + 4, backend_->shortcuts_map().size()); |
| - EXPECT_FALSE(backend_->shortcuts_map().end() == |
| - backend_->shortcuts_map().find(ASCIIToUTF16("delete"))); |
| - EXPECT_FALSE(backend_->shortcuts_map().end() == |
| - backend_->shortcuts_map().find(ASCIIToUTF16("erase"))); |
| + EXPECT_EQ(original_shortcuts_count + 4, backend->shortcuts_map().size()); |
| + EXPECT_FALSE(backend->shortcuts_map().end() == |
| + backend->shortcuts_map().find(ASCIIToUTF16("delete"))); |
| + EXPECT_FALSE(backend->shortcuts_map().end() == |
| + backend->shortcuts_map().find(ASCIIToUTF16("erase"))); |
| AutocompleteMatch match( |
| provider_.get(), 1200, true, AutocompleteMatchType::HISTORY_TITLE); |
| @@ -811,58 +832,27 @@ TEST_F(ShortcutsProviderTest, DeleteMatch) { |
| // shortcuts_to_test_delete[0] and shortcuts_to_test_delete[1] should be |
| // deleted, but not shortcuts_to_test_delete[2] or |
| // shortcuts_to_test_delete[3], which have different URLs. |
| - EXPECT_EQ(original_shortcuts_count + 2, backend_->shortcuts_map().size()); |
| - EXPECT_FALSE(backend_->shortcuts_map().end() == |
| - backend_->shortcuts_map().find(ASCIIToUTF16("delete"))); |
| - EXPECT_TRUE(backend_->shortcuts_map().end() == |
| - backend_->shortcuts_map().find(ASCIIToUTF16("erase"))); |
| + EXPECT_EQ(original_shortcuts_count + 2, backend->shortcuts_map().size()); |
| + EXPECT_FALSE(backend->shortcuts_map().end() == |
| + backend->shortcuts_map().find(ASCIIToUTF16("delete"))); |
| + EXPECT_TRUE(backend->shortcuts_map().end() == |
| + backend->shortcuts_map().find(ASCIIToUTF16("erase"))); |
| match.destination_url = GURL(shortcuts_to_test_delete[3].destination_url); |
| match.contents = ASCIIToUTF16(shortcuts_to_test_delete[3].contents); |
| match.description = ASCIIToUTF16(shortcuts_to_test_delete[3].description); |
| provider_->DeleteMatch(match); |
| - EXPECT_EQ(original_shortcuts_count + 1, backend_->shortcuts_map().size()); |
| - EXPECT_TRUE(backend_->shortcuts_map().end() == |
| - backend_->shortcuts_map().find(ASCIIToUTF16("delete"))); |
| + EXPECT_EQ(original_shortcuts_count + 1, backend->shortcuts_map().size()); |
| + EXPECT_TRUE(backend->shortcuts_map().end() == |
| + backend->shortcuts_map().find(ASCIIToUTF16("delete"))); |
| } |
| TEST_F(ShortcutsProviderTest, DoesNotProvideOnFocus) { |
| AutocompleteInput input( |
| ASCIIToUTF16("about:o"), base::string16::npos, std::string(), GURL(), |
| metrics::OmniboxEventProto::INVALID_SPEC, false, false, true, true, true, |
| - ChromeAutocompleteSchemeClassifier(&profile_)); |
| + TestSchemeClassifier()); |
| provider_->Start(input, false); |
| EXPECT_TRUE(provider_->matches().empty()); |
| } |
| - |
| -#if defined(ENABLE_EXTENSIONS) |
| -TEST_F(ShortcutsProviderTest, Extension) { |
| - // Try an input string that matches an extension URL. |
| - base::string16 text(ASCIIToUTF16("echo")); |
| - std::string expected_url( |
| - "chrome-extension://cedabbhfglmiikkmdgcpjdkocfcmbkee/?q=echo"); |
| - ExpectedURLs expected_urls; |
| - expected_urls.push_back(ExpectedURLAndAllowedToBeDefault( |
| - expected_url, true)); |
| - RunTest(text, false, expected_urls, expected_url, ASCIIToUTF16(" echo")); |
| - |
| - // Claim the extension has been unloaded. |
| - scoped_refptr<const extensions::Extension> extension = |
| - extensions::ExtensionBuilder() |
| - .SetManifest(std::move(extensions::DictionaryBuilder() |
| - .Set("name", "Echo") |
| - .Set("version", "1.0"))) |
| - .SetID("cedabbhfglmiikkmdgcpjdkocfcmbkee") |
| - .Build(); |
| - extensions::UnloadedExtensionInfo details( |
| - extension.get(), extensions::UnloadedExtensionInfo::REASON_UNINSTALL); |
| - content::NotificationService::current()->Notify( |
| - extensions::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED, |
| - content::Source<Profile>(&profile_), |
| - content::Details<extensions::UnloadedExtensionInfo>(&details)); |
| - |
| - // Now the URL should have disappeared. |
| - RunTest(text, false, ExpectedURLs(), std::string(), base::string16()); |
| -} |
| -#endif |