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 |