Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(100)

Unified Diff: components/omnibox/browser/shortcuts_provider_unittest.cc

Issue 1654833005: Componentizes shortcuts unittests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 20% Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698