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

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

Issue 1610283002: Componentizes history_url_provider_unittest.cc. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased. 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
« components/omnibox/browser/DEPS ('K') | « components/omnibox/browser/DEPS ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/omnibox/browser/history_url_provider_unittest.cc
diff --git a/chrome/browser/autocomplete/history_url_provider_unittest.cc b/components/omnibox/browser/history_url_provider_unittest.cc
similarity index 92%
rename from chrome/browser/autocomplete/history_url_provider_unittest.cc
rename to components/omnibox/browser/history_url_provider_unittest.cc
index d4122f89865c63bdf8b7f29339ab8a0141d31554..87b4a7ff8c25b338538a69d8396cb69a02d87f24 100644
--- a/chrome/browser/autocomplete/history_url_provider_unittest.cc
+++ b/components/omnibox/browser/history_url_provider_unittest.cc
@@ -8,6 +8,7 @@
#include <algorithm>
+#include "base/files/scoped_temp_dir.h"
#include "base/macros.h"
#include "base/memory/scoped_ptr.h"
#include "base/message_loop/message_loop.h"
@@ -15,16 +16,10 @@
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "base/time/time.h"
-#include "chrome/browser/autocomplete/chrome_autocomplete_provider_client.h"
-#include "chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.h"
-#include "chrome/browser/history/history_service_factory.h"
-#include "chrome/browser/search_engines/chrome_template_url_service_client.h"
-#include "chrome/browser/search_engines/template_url_service_factory.h"
-#include "chrome/common/pref_names.h"
-#include "chrome/test/base/testing_browser_process.h"
-#include "chrome/test/base/testing_profile.h"
+#include "components/history/core/browser/history_database_params.h"
#include "components/history/core/browser/history_service.h"
#include "components/history/core/browser/url_database.h"
+#include "components/history/core/test/test_history_database.h"
#include "components/metrics/proto/omnibox_event.pb.h"
#include "components/metrics/proto/omnibox_input_type.pb.h"
#include "components/omnibox/browser/autocomplete_match.h"
@@ -32,19 +27,20 @@
#include "components/omnibox/browser/autocomplete_provider_listener.h"
#include "components/omnibox/browser/autocomplete_result.h"
#include "components/omnibox/browser/history_quick_provider.h"
+#include "components/omnibox/browser/mock_autocomplete_provider_client.h"
+#include "components/omnibox/browser/test_scheme_classifier.h"
#include "components/search_engines/default_search_manager.h"
#include "components/search_engines/search_terms_data.h"
#include "components/search_engines/template_url.h"
#include "components/search_engines/template_url_service.h"
#include "components/url_formatter/url_fixer.h"
-#include "content/public/test/test_browser_thread_bundle.h"
#include "testing/gtest/include/gtest/gtest.h"
using base::ASCIIToUTF16;
using base::Time;
using base::TimeDelta;
-using content::TestBrowserThreadBundle;
+namespace {
struct TestURLInfo {
const char* url;
@@ -157,6 +153,54 @@ struct TestURLInfo {
{"http://7.com/5a", "Five A", 8, 0, 64}, // never typed.
};
+class QuittingHistoryDBTask : public history::HistoryDBTask {
Peter Kasting 2016/01/21 11:08:40 Nit: QuitTask? "Quitting" in particular reads wei
rohitrao (ping after 24h) 2016/01/21 13:10:55 Renamed to QuitTask.
+ public:
+ QuittingHistoryDBTask() {}
+
+ bool RunOnDBThread(history::HistoryBackend* backend,
+ history::HistoryDatabase* db) override {
+ return true;
+ }
+
+ void DoneRunOnMainThread() override {
+ base::MessageLoop::current()->QuitWhenIdle();
+ }
+
+ private:
+ ~QuittingHistoryDBTask() override {}
+
+ DISALLOW_COPY_AND_ASSIGN(QuittingHistoryDBTask);
+};
+
+class FakeAutocompleteProviderClient : public MockAutocompleteProviderClient {
+ public:
+ FakeAutocompleteProviderClient() {
+ set_template_url_service(
+ make_scoped_ptr(new TemplateURLService(nullptr, 0)));
+ }
+
+ const AutocompleteSchemeClassifier& GetSchemeClassifier() const override {
+ return scheme_classifier_;
+ }
+
+ const SearchTermsData& GetSearchTermsData() const override {
+ return search_terms_data_;
+ }
+
+ history::HistoryService* GetHistoryService() override {
+ return &history_service_;
+ }
+
+ private:
+ TestSchemeClassifier scheme_classifier_;
+ SearchTermsData search_terms_data_;
+ history::HistoryService history_service_;
+
+ DISALLOW_COPY_AND_ASSIGN(FakeAutocompleteProviderClient);
+};
+
+} // namespace
+
class HistoryURLProviderTest : public testing::Test,
public AutocompleteProviderListener {
public:
@@ -178,17 +222,6 @@ class HistoryURLProviderTest : public testing::Test,
void OnProviderUpdate(bool updated_matches) override;
protected:
- static scoped_ptr<KeyedService> CreateTemplateURLService(
- content::BrowserContext* context) {
- Profile* profile = static_cast<Profile*>(context);
- return make_scoped_ptr(new TemplateURLService(
- profile->GetPrefs(), make_scoped_ptr(new SearchTermsData), NULL,
- scoped_ptr<TemplateURLServiceClient>(new ChromeTemplateURLServiceClient(
- HistoryServiceFactory::GetForProfile(
- profile, ServiceAccessType::EXPLICIT_ACCESS))),
- NULL, NULL, base::Closure()));
- }
-
// testing::Test
void SetUp() override {
ASSERT_TRUE(SetUpImpl(false));
@@ -222,14 +255,20 @@ class HistoryURLProviderTest : public testing::Test,
expected_urls, num_results, &type);
}
- content::TestBrowserThreadBundle thread_bundle_;
+ // Helper functions to initialize the HistoryService.
+ bool InitializeHistoryService(
+ bool delete_file, bool no_db) WARN_UNUSED_RESULT;
Peter Kasting 2016/01/21 11:08:40 Nit: Prefer to wrap like: bool InitializeHistor
rohitrao (ping after 24h) 2016/01/21 13:10:55 Removed WARN_UNUSED_RESULT.
+ void BlockUntilHistoryProcessesPendingRequests();
+
+ base::MessageLoop message_loop_;
+ base::ScopedTempDir history_dir_;
ACMatches matches_;
- scoped_ptr<TestingProfile> profile_;
- scoped_ptr<ChromeAutocompleteProviderClient> client_;
+ scoped_ptr<FakeAutocompleteProviderClient> client_;
history::HistoryService* history_service_;
scoped_refptr<HistoryURLProvider> autocomplete_;
// Should the matches be sorted and duplicates removed?
bool sort_matches_;
+
};
Peter Kasting 2016/01/21 11:08:40 If you're going to touch this anyway, add DISALLOW
rohitrao (ping after 24h) 2016/01/21 13:10:55 Done.
class HistoryURLProviderTestNoDB : public HistoryURLProviderTest {
@@ -257,22 +296,45 @@ void HistoryURLProviderTest::OnProviderUpdate(bool updated_matches) {
base::MessageLoop::current()->QuitWhenIdle();
}
-bool HistoryURLProviderTest::SetUpImpl(bool no_db) {
- profile_.reset(new TestingProfile());
- client_.reset(new ChromeAutocompleteProviderClient(profile_.get()));
- if (!(profile_->CreateHistoryService(true, no_db)))
+bool HistoryURLProviderTest::InitializeHistoryService(
+ bool delete_file, bool no_db) {
+ if (!history_dir_.CreateUniqueTempDir()) {
Peter Kasting 2016/01/21 11:08:40 Nit: No {} on any of the conditionals in this func
rohitrao (ping after 24h) 2016/01/21 13:10:55 Done.
return false;
+ }
+
+ history_service_ = client_->GetHistoryService();
+ if (!history_service_->Init(
+ no_db,
+ std::string(),
+ history::TestHistoryDatabaseParamsForPath(history_dir_.path()))) {
+ return false;
+ }
+
if (!no_db) {
Peter Kasting 2016/01/21 11:08:40 Nit: Ugh, double-negative. Makes me think we shou
rohitrao (ping after 24h) 2016/01/21 13:10:55 Leaving this for now. I think that if we make a c
- profile_->BlockUntilHistoryProcessesPendingRequests();
- profile_->BlockUntilHistoryIndexIsRefreshed();
+ BlockUntilHistoryProcessesPendingRequests();
}
- profile_->GetPrefs()->SetString(prefs::kAcceptLanguages, "en-US,en,ko");
- history_service_ = HistoryServiceFactory::GetForProfile(
- profile_.get(), ServiceAccessType::EXPLICIT_ACCESS);
+
+ return true;
+}
+
+void HistoryURLProviderTest::BlockUntilHistoryProcessesPendingRequests() {
+ base::CancelableTaskTracker tracker;
+ client_->GetHistoryService()->ScheduleDBTask(
+ scoped_ptr<history::HistoryDBTask>(
Peter Kasting 2016/01/21 11:08:40 Nit: make_scoped_ptr?
rohitrao (ping after 24h) 2016/01/21 13:10:54 This makes scoped_ptr unhappy, due to the private
+ new QuittingHistoryDBTask()),
+ &tracker);
+ base::MessageLoop::current()->Run();
+}
+
+bool HistoryURLProviderTest::SetUpImpl(bool no_db) {
+ client_.reset(new FakeAutocompleteProviderClient());
+
+ if (!InitializeHistoryService(true, no_db))
+ return false;
+ EXPECT_CALL(*client_, GetAcceptLanguages())
+ .WillRepeatedly(testing::Return("en-US,en,ko"));
autocomplete_ = new HistoryURLProvider(client_.get(), this);
- TemplateURLServiceFactory::GetInstance()->SetTestingFactoryAndUse(
- profile_.get(), &HistoryURLProviderTest::CreateTemplateURLService);
FillData();
return true;
}
@@ -317,7 +379,7 @@ void HistoryURLProviderTest::RunTest(
AutocompleteInput input(text, base::string16::npos, desired_tld, GURL(),
metrics::OmniboxEventProto::INVALID_SPEC,
prevent_inline_autocomplete, false, true, true, false,
- ChromeAutocompleteSchemeClassifier(profile_.get()));
+ TestSchemeClassifier());
*identified_input_type = input.type();
autocomplete_->Start(input, false);
if (!autocomplete_->done())
@@ -325,8 +387,7 @@ void HistoryURLProviderTest::RunTest(
matches_ = autocomplete_->matches();
if (sort_matches_) {
- TemplateURLService* service =
- TemplateURLServiceFactory::GetForProfile(profile_.get());
+ TemplateURLService* service = client_->GetTemplateURLService();
for (ACMatches::iterator i = matches_.begin(); i != matches_.end(); ++i) {
i->ComputeStrippedDestinationURL(
input, client_->GetAcceptLanguages(), service);
@@ -641,12 +702,12 @@ TEST_F(HistoryURLProviderTest, Fixup) {
// second passes.
TEST_F(HistoryURLProviderTest, EmptyVisits) {
// Wait for history to create the in memory DB.
- profile_->BlockUntilHistoryProcessesPendingRequests();
+ BlockUntilHistoryProcessesPendingRequests();
AutocompleteInput input(
ASCIIToUTF16("pa"), base::string16::npos, std::string(), GURL(),
metrics::OmniboxEventProto::INVALID_SPEC, false, false, true, true, false,
- ChromeAutocompleteSchemeClassifier(profile_.get()));
+ TestSchemeClassifier());
autocomplete_->Start(input, false);
// HistoryURLProvider shouldn't be done (waiting on async results).
EXPECT_FALSE(autocomplete_->done());
@@ -688,7 +749,7 @@ TEST_F(HistoryURLProviderTest, DontAutocompleteOnTrailingWhitespace) {
AutocompleteInput input(
ASCIIToUTF16("slash "), base::string16::npos, std::string(), GURL(),
metrics::OmniboxEventProto::INVALID_SPEC, false, false, true, true, false,
- ChromeAutocompleteSchemeClassifier(profile_.get()));
+ TestSchemeClassifier());
autocomplete_->Start(input, false);
if (!autocomplete_->done())
base::MessageLoop::current()->Run();
@@ -826,7 +887,7 @@ TEST_F(HistoryURLProviderTest, CrashDueToFixup) {
AutocompleteInput input(
ASCIIToUTF16(test_cases[i]), base::string16::npos, std::string(),
GURL(), metrics::OmniboxEventProto::INVALID_SPEC, false, false, true,
- true, false, ChromeAutocompleteSchemeClassifier(profile_.get()));
+ true, false, TestSchemeClassifier());
autocomplete_->Start(input, false);
if (!autocomplete_->done())
base::MessageLoop::current()->Run();
@@ -837,7 +898,7 @@ TEST_F(HistoryURLProviderTest, DoesNotProvideMatchesOnFocus) {
AutocompleteInput input(
ASCIIToUTF16("foo"), base::string16::npos, std::string(), GURL(),
metrics::OmniboxEventProto::INVALID_SPEC, false, false, true, true, true,
- ChromeAutocompleteSchemeClassifier(profile_.get()));
+ TestSchemeClassifier());
autocomplete_->Start(input, false);
EXPECT_TRUE(autocomplete_->matches().empty());
}
@@ -872,7 +933,8 @@ TEST_F(HistoryURLProviderTest, DoesNotInlinePunycodeMatches) {
// international characters. Then this match should not be allowed to be
// the default match if the inline autocomplete text starts in the middle
// of the international characters.
- profile_->GetPrefs()->SetString(prefs::kAcceptLanguages, "zh-CN");
+ EXPECT_CALL(*client_, GetAcceptLanguages())
+ .WillRepeatedly(testing::Return("zh-CN"));
RunTest(ASCIIToUTF16("pun"), std::string(), false, expected_true,
arraysize(expected_true));
RunTest(ASCIIToUTF16("puny."), std::string(), false, expected_true,
@@ -897,8 +959,7 @@ TEST_F(HistoryURLProviderTest, CullSearchResults) {
data.SetShortName(ASCIIToUTF16("TestEngine"));
data.SetKeyword(ASCIIToUTF16("TestEngine"));
data.SetURL("http://testsearch.com/?q={searchTerms}");
- TemplateURLService* template_url_service =
- TemplateURLServiceFactory::GetForProfile(profile_.get());
+ TemplateURLService* template_url_service = client_->GetTemplateURLService();
TemplateURL* template_url = new TemplateURL(data);
template_url_service->Add(template_url);
template_url_service->SetUserSelectedDefaultSearchProvider(template_url);
@@ -1003,7 +1064,7 @@ TEST_F(HistoryURLProviderTest, SuggestExactInput) {
ASCIIToUTF16(test_cases[i].input), base::string16::npos, std::string(),
GURL("about:blank"), metrics::OmniboxEventProto::INVALID_SPEC, false,
false, true, true, false,
- ChromeAutocompleteSchemeClassifier(profile_.get()));
+ TestSchemeClassifier());
AutocompleteMatch match(autocomplete_->SuggestExactInput(
input, input.canonicalized_url(), test_cases[i].trim_http));
EXPECT_EQ(ASCIIToUTF16(test_cases[i].contents), match.contents);
« components/omnibox/browser/DEPS ('K') | « components/omnibox/browser/DEPS ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698