| // Copyright 2016 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "components/omnibox/browser/fake_autocomplete_provider_client.h" |
| |
| #include <memory> |
| |
| #include "base/files/file_path.h" |
| #include "base/run_loop.h" |
| #include "components/bookmarks/browser/bookmark_model.h" |
| #include "components/bookmarks/test/test_bookmark_client.h" |
| #include "components/history/core/browser/history_service.h" |
| #include "components/history/core/test/history_service_test_util.h" |
| #include "components/omnibox/browser/in_memory_url_index.h" |
| #include "components/omnibox/browser/in_memory_url_index_test_util.h" |
| #include "components/omnibox/browser/shortcuts_backend.h" |
| #include "components/search_engines/search_terms_data.h" |
| #include "components/search_engines/template_url_service.h" |
| |
| FakeAutocompleteProviderClient::FakeAutocompleteProviderClient( |
| bool create_history_db) { |
| set_template_url_service(std::make_unique<TemplateURLService>(nullptr, 0)); |
| |
| bookmark_model_ = bookmarks::TestBookmarkClient::CreateModel(); |
| |
| CHECK(history_dir_.CreateUniqueTempDir()); |
| history_service_ = |
| history::CreateHistoryService(history_dir_.GetPath(), create_history_db); |
| |
| in_memory_url_index_.reset( |
| new InMemoryURLIndex(bookmark_model_.get(), history_service_.get(), |
| nullptr, history_dir_.GetPath(), SchemeSet())); |
| in_memory_url_index_->Init(); |
| |
| shortcuts_backend_ = base::MakeRefCounted<ShortcutsBackend>( |
| GetTemplateURLService(), std::make_unique<SearchTermsData>(), |
| GetHistoryService(), base::FilePath(), true); |
| shortcuts_backend_->Init(); |
| } |
| |
| FakeAutocompleteProviderClient::~FakeAutocompleteProviderClient() { |
| // The InMemoryURLIndex must be explicitly shut down or it will DCHECK() in |
| // its destructor. |
| GetInMemoryURLIndex()->Shutdown(); |
| set_in_memory_url_index(nullptr); |
| // History service can have its own thread. So we need to explicitly shut down |
| // it to prevent memory leaks. |
| GetHistoryService()->Shutdown(); |
| // Note that RunUntilIdle() must still be called after this, from |
| // whichever task model is being used, probably ScopedTaskEnvironment, |
| // or there will be memory leaks. |
| } |
| |
| const AutocompleteSchemeClassifier& |
| FakeAutocompleteProviderClient::GetSchemeClassifier() const { |
| return scheme_classifier_; |
| } |
| |
| history::HistoryService* FakeAutocompleteProviderClient::GetHistoryService() { |
| return history_service_.get(); |
| } |
| |
| bookmarks::BookmarkModel* FakeAutocompleteProviderClient::GetBookmarkModel() { |
| return bookmark_model_.get(); |
| } |
| |
| InMemoryURLIndex* FakeAutocompleteProviderClient::GetInMemoryURLIndex() { |
| return in_memory_url_index_.get(); |
| } |
| |
| scoped_refptr<ShortcutsBackend> |
| FakeAutocompleteProviderClient::GetShortcutsBackend() { |
| return shortcuts_backend_; |
| } |
| |
| scoped_refptr<ShortcutsBackend> |
| FakeAutocompleteProviderClient::GetShortcutsBackendIfExists() { |
| return shortcuts_backend_; |
| } |
| |
| bool FakeAutocompleteProviderClient::IsTabOpenWithURL( |
| const GURL& url, |
| const AutocompleteInput* input) { |
| return !substring_to_match_.empty() && |
| url.spec().find(substring_to_match_) != std::string::npos; |
| } |