| Index: chrome/browser/history/history_service.cc
|
| diff --git a/chrome/browser/history/history_service.cc b/chrome/browser/history/history_service.cc
|
| index 81043923e3bae018f35d1ab0ae11791b92fbe2eb..af61f108a548fc551b69d7e5627e17efa9b813c1 100644
|
| --- a/chrome/browser/history/history_service.cc
|
| +++ b/chrome/browser/history/history_service.cc
|
| @@ -33,7 +33,6 @@
|
| #include "base/threading/thread.h"
|
| #include "base/time/time.h"
|
| #include "chrome/browser/autocomplete/history_url_provider.h"
|
| -#include "chrome/browser/bookmarks/bookmark_model_factory.h"
|
| #include "chrome/browser/browser_process.h"
|
| #include "chrome/browser/chrome_notification_types.h"
|
| #include "chrome/browser/history/download_row.h"
|
| @@ -56,7 +55,6 @@
|
| #include "chrome/common/pref_names.h"
|
| #include "chrome/common/thumbnail_score.h"
|
| #include "chrome/common/url_constants.h"
|
| -#include "components/bookmarks/browser/bookmark_model.h"
|
| #include "components/history/core/browser/history_client.h"
|
| #include "components/visitedlink/browser/visitedlink_master.h"
|
| #include "content/public/browser/browser_thread.h"
|
| @@ -196,7 +194,6 @@ HistoryService::HistoryService()
|
| history_client_(NULL),
|
| profile_(NULL),
|
| backend_loaded_(false),
|
| - bookmark_service_(NULL),
|
| no_db_(false) {
|
| }
|
|
|
| @@ -208,7 +205,6 @@ HistoryService::HistoryService(history::HistoryClient* client, Profile* profile)
|
| visitedlink_master_(new visitedlink::VisitedLinkMaster(
|
| profile, this, true)),
|
| backend_loaded_(false),
|
| - bookmark_service_(NULL),
|
| no_db_(false) {
|
| DCHECK(profile_);
|
| registrar_.Add(this, chrome::NOTIFICATION_HISTORY_URLS_DELETED,
|
| @@ -331,19 +327,6 @@ history::TypedUrlSyncableService* HistoryService::GetTypedUrlSyncableService()
|
|
|
| void HistoryService::Shutdown() {
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
| - // It's possible that bookmarks haven't loaded and history is waiting for
|
| - // bookmarks to complete loading. In such a situation history can't shutdown
|
| - // (meaning if we invoked history_service_->Cleanup now, we would
|
| - // deadlock). To break the deadlock we tell BookmarkModel it's about to be
|
| - // deleted so that it can release the signal history is waiting on, allowing
|
| - // history to shutdown (history_service_->Cleanup to complete). In such a
|
| - // scenario history sees an incorrect view of bookmarks, but it's better
|
| - // than a deadlock.
|
| - BookmarkModel* bookmark_model = static_cast<BookmarkModel*>(
|
| - BookmarkModelFactory::GetForProfileIfExists(profile_));
|
| - if (bookmark_model)
|
| - bookmark_model->Shutdown();
|
| -
|
| Cleanup();
|
| }
|
|
|
| @@ -911,9 +894,7 @@ void HistoryService::RebuildTable(
|
| ScheduleAndForget(PRIORITY_NORMAL, &HistoryBackend::IterateURLs, enumerator);
|
| }
|
|
|
| -bool HistoryService::Init(const base::FilePath& history_dir,
|
| - BookmarkService* bookmark_service,
|
| - bool no_db) {
|
| +bool HistoryService::Init(const base::FilePath& history_dir, bool no_db) {
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
| if (!thread_->Start()) {
|
| Cleanup();
|
| @@ -921,14 +902,13 @@ bool HistoryService::Init(const base::FilePath& history_dir,
|
| }
|
|
|
| history_dir_ = history_dir;
|
| - bookmark_service_ = bookmark_service;
|
| no_db_ = no_db;
|
|
|
| if (profile_) {
|
| std::string languages =
|
| profile_->GetPrefs()->GetString(prefs::kAcceptLanguages);
|
| - in_memory_url_index_.reset(
|
| - new history::InMemoryURLIndex(profile_, history_dir_, languages));
|
| + in_memory_url_index_.reset(new history::InMemoryURLIndex(
|
| + profile_, history_dir_, languages, history_client_));
|
| in_memory_url_index_->Init();
|
| }
|
|
|
| @@ -939,7 +919,7 @@ bool HistoryService::Init(const base::FilePath& history_dir,
|
| weak_ptr_factory_.GetWeakPtr(),
|
| base::ThreadTaskRunnerHandle::Get(),
|
| profile_),
|
| - bookmark_service_));
|
| + history_client_));
|
| history_backend_.swap(backend);
|
|
|
| // There may not be a profile when unit testing.
|
|
|