| Index: chrome/browser/history/in_memory_url_index.cc
|
| diff --git a/chrome/browser/history/in_memory_url_index.cc b/chrome/browser/history/in_memory_url_index.cc
|
| index 38eb30ca4410d7cffb2d206c525c7d6f22d9f07f..28ab039b9a33e4898d77cefb4f7b0b9f90b4398d 100644
|
| --- a/chrome/browser/history/in_memory_url_index.cc
|
| +++ b/chrome/browser/history/in_memory_url_index.cc
|
| @@ -138,12 +138,12 @@ void InMemoryURLIndex::Init() {
|
|
|
| void InMemoryURLIndex::ShutDown() {
|
| registrar_.RemoveAll();
|
| - cache_reader_consumer_.CancelAllRequests();
|
| + cache_reader_tracker_.TryCancelAll();
|
| shutdown_ = true;
|
| base::FilePath path;
|
| if (!GetCacheFilePath(&path))
|
| return;
|
| - private_data_->CancelPendingUpdates();
|
| + private_data_tracker_.TryCancelAll();
|
| URLIndexPrivateData::WritePrivateDataToCacheFileTask(private_data_, path);
|
| needs_to_be_cached_ = false;
|
| }
|
| @@ -210,8 +210,11 @@ void InMemoryURLIndex::OnURLVisited(const URLVisitedDetails* details) {
|
| HistoryService* service =
|
| HistoryServiceFactory::GetForProfile(profile_,
|
| Profile::EXPLICIT_ACCESS);
|
| - needs_to_be_cached_ |= private_data_->UpdateURL(
|
| - service, details->row, languages_, scheme_whitelist_);
|
| + needs_to_be_cached_ |= private_data_->UpdateURL(service,
|
| + details->row,
|
| + languages_,
|
| + scheme_whitelist_,
|
| + &private_data_tracker_);
|
| }
|
|
|
| void InMemoryURLIndex::OnURLsModified(const URLsModifiedDetails* details) {
|
| @@ -219,9 +222,10 @@ void InMemoryURLIndex::OnURLsModified(const URLsModifiedDetails* details) {
|
| HistoryServiceFactory::GetForProfile(profile_,
|
| Profile::EXPLICIT_ACCESS);
|
| for (URLRows::const_iterator row = details->changed_urls.begin();
|
| - row != details->changed_urls.end(); ++row)
|
| - needs_to_be_cached_ |=
|
| - private_data_->UpdateURL(service, *row, languages_, scheme_whitelist_);
|
| + row != details->changed_urls.end(); ++row) {
|
| + needs_to_be_cached_ |= private_data_->UpdateURL(
|
| + service, *row, languages_, scheme_whitelist_, &private_data_tracker_);
|
| + }
|
| }
|
|
|
| void InMemoryURLIndex::OnURLsDeleted(const URLsDeletedDetails* details) {
|
| @@ -259,6 +263,7 @@ void InMemoryURLIndex::PostRestoreFromCacheFileTask() {
|
| void InMemoryURLIndex::OnCacheLoadDone(
|
| scoped_refptr<URLIndexPrivateData> private_data) {
|
| if (private_data.get() && !private_data->Empty()) {
|
| + private_data_tracker_.TryCancelAll();
|
| private_data_ = private_data;
|
| restored_ = true;
|
| if (restore_cache_observer_)
|
| @@ -292,7 +297,7 @@ void InMemoryURLIndex::ScheduleRebuildFromHistory() {
|
| service->ScheduleDBTask(
|
| new InMemoryURLIndex::RebuildPrivateDataFromHistoryDBTask(
|
| this, languages_, scheme_whitelist_),
|
| - &cache_reader_consumer_);
|
| + &cache_reader_tracker_);
|
| }
|
|
|
| void InMemoryURLIndex::DoneRebuidingPrivateDataFromHistoryDB(
|
| @@ -300,6 +305,7 @@ void InMemoryURLIndex::DoneRebuidingPrivateDataFromHistoryDB(
|
| scoped_refptr<URLIndexPrivateData> private_data) {
|
| DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
|
| if (succeeded) {
|
| + private_data_tracker_.TryCancelAll();
|
| private_data_ = private_data;
|
| PostSaveToCacheFileTask(); // Cache the newly rebuilt index.
|
| } else {
|
| @@ -313,6 +319,7 @@ void InMemoryURLIndex::DoneRebuidingPrivateDataFromHistoryDB(
|
| }
|
|
|
| void InMemoryURLIndex::RebuildFromHistory(HistoryDatabase* history_db) {
|
| + private_data_tracker_.TryCancelAll();
|
| private_data_ = URLIndexPrivateData::RebuildFromHistory(history_db,
|
| languages_,
|
| scheme_whitelist_);
|
|
|