| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // The history system runs on a background thread so that potentially slow | 5 // The history system runs on a background thread so that potentially slow |
| 6 // database operations don't delay the browser. This backend processing is | 6 // database operations don't delay the browser. This backend processing is |
| 7 // represented by HistoryBackend. The HistoryService's job is to dispatch to | 7 // represented by HistoryBackend. The HistoryService's job is to dispatch to |
| 8 // that thread. | 8 // that thread. |
| 9 // | 9 // |
| 10 // Main thread History thread | 10 // Main thread History thread |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 194 | 194 |
| 195 void HistoryService::UnloadBackend() { | 195 void HistoryService::UnloadBackend() { |
| 196 if (!history_backend_) | 196 if (!history_backend_) |
| 197 return; // Already unloaded. | 197 return; // Already unloaded. |
| 198 | 198 |
| 199 // Get rid of the in-memory backend. | 199 // Get rid of the in-memory backend. |
| 200 in_memory_backend_.reset(); | 200 in_memory_backend_.reset(); |
| 201 | 201 |
| 202 // Give the InMemoryURLIndex a chance to shutdown. | 202 // Give the InMemoryURLIndex a chance to shutdown. |
| 203 if (in_memory_url_index_.get()) | 203 if (in_memory_url_index_.get()) |
| 204 in_memory_url_index_->ShutDown(); | 204 in_memory_url_index_->Shutdown(); |
| 205 | 205 |
| 206 // The backend's destructor must run on the history thread since it is not | 206 // The backend's destructor must run on the history thread since it is not |
| 207 // threadsafe. So this thread must not be the last thread holding a reference | 207 // threadsafe. So this thread must not be the last thread holding a reference |
| 208 // to the backend, or a crash could happen. | 208 // to the backend, or a crash could happen. |
| 209 // | 209 // |
| 210 // We have a reference to the history backend. There is also an extra | 210 // We have a reference to the history backend. There is also an extra |
| 211 // reference held by our delegate installed in the backend, which | 211 // reference held by our delegate installed in the backend, which |
| 212 // HistoryBackend::Closing will release. This means if we scheduled a call | 212 // HistoryBackend::Closing will release. This means if we scheduled a call |
| 213 // to HistoryBackend::Closing and *then* released our backend reference, there | 213 // to HistoryBackend::Closing and *then* released our backend reference, there |
| 214 // will be a race between us and the backend's Closing function to see who is | 214 // will be a race between us and the backend's Closing function to see who is |
| (...skipping 515 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 730 *(content::Details<TemplateURLID>(details).ptr())); | 730 *(content::Details<TemplateURLID>(details).ptr())); |
| 731 break; | 731 break; |
| 732 | 732 |
| 733 default: | 733 default: |
| 734 NOTREACHED(); | 734 NOTREACHED(); |
| 735 } | 735 } |
| 736 } | 736 } |
| 737 | 737 |
| 738 bool HistoryService::Init(const FilePath& history_dir, | 738 bool HistoryService::Init(const FilePath& history_dir, |
| 739 BookmarkService* bookmark_service, | 739 BookmarkService* bookmark_service, |
| 740 bool no_db) { | 740 bool no_db, |
| 741 bool disable_index_cache) { |
| 741 if (!thread_->Start()) { | 742 if (!thread_->Start()) { |
| 742 Cleanup(); | 743 Cleanup(); |
| 743 return false; | 744 return false; |
| 744 } | 745 } |
| 745 | 746 |
| 746 history_dir_ = history_dir; | 747 history_dir_ = history_dir; |
| 747 bookmark_service_ = bookmark_service; | 748 bookmark_service_ = bookmark_service; |
| 748 no_db_ = no_db; | 749 no_db_ = no_db; |
| 749 | 750 |
| 750 #if !defined(OS_ANDROID) | 751 #if !defined(OS_ANDROID) |
| 751 // History quick provider is enabled on all platforms other than Android. | 752 // History quick provider is enabled on all platforms other than Android. |
| 752 // TODO(jcivelli): Enable the History Quick Provider on Android and figure out | 753 // TODO(jcivelli): Enable the History Quick Provider on Android and figure out |
| 753 // why it reports the wrong results for some pages. | 754 // why it reports the wrong results for some pages. |
| 754 if (profile_) { | 755 if (profile_) { |
| 755 std::string languages = | 756 std::string languages = |
| 756 profile_->GetPrefs()->GetString(prefs::kAcceptLanguages); | 757 profile_->GetPrefs()->GetString(prefs::kAcceptLanguages); |
| 757 in_memory_url_index_.reset( | 758 in_memory_url_index_.reset( |
| 758 new history::InMemoryURLIndex(profile_, history_dir_, languages)); | 759 new history::InMemoryURLIndex(profile_, history_dir_, languages)); |
| 759 in_memory_url_index_->Init(); | 760 in_memory_url_index_->Init(disable_index_cache); |
| 760 } | 761 } |
| 761 #endif // !OS_ANDROID | 762 #endif // !OS_ANDROID |
| 762 | 763 |
| 763 // Create the history backend. | 764 // Create the history backend. |
| 764 LoadBackendIfNecessary(); | 765 LoadBackendIfNecessary(); |
| 765 return true; | 766 return true; |
| 766 } | 767 } |
| 767 | 768 |
| 768 void HistoryService::ScheduleAutocomplete(HistoryURLProvider* provider, | 769 void HistoryService::ScheduleAutocomplete(HistoryURLProvider* provider, |
| 769 HistoryURLProviderParams* params) { | 770 HistoryURLProviderParams* params) { |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 939 void HistoryService::RemoveVisitDatabaseObserver( | 940 void HistoryService::RemoveVisitDatabaseObserver( |
| 940 history::VisitDatabaseObserver* observer) { | 941 history::VisitDatabaseObserver* observer) { |
| 941 visit_database_observers_->RemoveObserver(observer); | 942 visit_database_observers_->RemoveObserver(observer); |
| 942 } | 943 } |
| 943 | 944 |
| 944 void HistoryService::NotifyVisitDBObserversOnAddVisit( | 945 void HistoryService::NotifyVisitDBObserversOnAddVisit( |
| 945 const history::BriefVisitInfo& info) { | 946 const history::BriefVisitInfo& info) { |
| 946 visit_database_observers_->Notify( | 947 visit_database_observers_->Notify( |
| 947 &history::VisitDatabaseObserver::OnAddVisit, info); | 948 &history::VisitDatabaseObserver::OnAddVisit, info); |
| 948 } | 949 } |
| OLD | NEW |