| 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 InMemoryHistoryBackend is a wrapper around the in-memory URL database. | 5 // The InMemoryHistoryBackend is a wrapper around the in-memory URL database. |
| 6 // It maintains an in-memory cache of a subset of history that is required for | 6 // It maintains an in-memory cache of a subset of history that is required for |
| 7 // low-latency operations, such as in-line autocomplete. | 7 // low-latency operations, such as in-line autocomplete. |
| 8 // | 8 // |
| 9 // The in-memory cache provides the following guarantees: | 9 // The in-memory cache provides the following guarantees: |
| 10 // (1.) It will always contain URLRows that either have a |typed_count| > 0; or | 10 // (1.) It will always contain URLRows that either have a |typed_count| > 0; or |
| 11 // that have a corresponding search term, in which case information about | 11 // that have a corresponding search term, in which case information about |
| 12 // the search term is also stored. | 12 // the search term is also stored. |
| 13 // (2.) It will be an actual subset, i.e., it will contain verbatim data, and | 13 // (2.) It will be an actual subset, i.e., it will contain verbatim data, and |
| 14 // will never contain more data that can be found in the main database. | 14 // will never contain more data that can be found in the main database. |
| 15 // | 15 // |
| 16 // The InMemoryHistoryBackend is created on the history thread and passed to the | 16 // The InMemoryHistoryBackend is created on the history thread and passed to the |
| 17 // main thread where operations can be completed synchronously. It listens for | 17 // main thread where operations can be completed synchronously. It listens for |
| 18 // notifications from the "regular" history backend and keeps itself in sync. | 18 // notifications from the "regular" history backend and keeps itself in sync. |
| 19 | 19 |
| 20 #ifndef CHROME_BROWSER_HISTORY_IN_MEMORY_HISTORY_BACKEND_H_ | 20 #ifndef CHROME_BROWSER_HISTORY_IN_MEMORY_HISTORY_BACKEND_H_ |
| 21 #define CHROME_BROWSER_HISTORY_IN_MEMORY_HISTORY_BACKEND_H_ | 21 #define CHROME_BROWSER_HISTORY_IN_MEMORY_HISTORY_BACKEND_H_ |
| 22 | 22 |
| 23 #include <string> | 23 #include <string> |
| 24 | 24 |
| 25 #include "base/basictypes.h" | 25 #include "base/basictypes.h" |
| 26 #include "base/gtest_prod_util.h" | 26 #include "base/gtest_prod_util.h" |
| 27 #include "base/memory/scoped_ptr.h" | 27 #include "base/memory/scoped_ptr.h" |
| 28 #include "components/history/core/browser/history_service_observer.h" | 28 #include "chrome/browser/history/history_service.h" |
| 29 #include "components/history/core/browser/keyword_id.h" | 29 #include "components/history/core/browser/keyword_id.h" |
| 30 #include "content/public/browser/notification_observer.h" | 30 #include "content/public/browser/notification_observer.h" |
| 31 #include "content/public/browser/notification_registrar.h" | 31 #include "content/public/browser/notification_registrar.h" |
| 32 | 32 |
| 33 class HistoryService; | |
| 34 class Profile; | 33 class Profile; |
| 35 | 34 |
| 36 namespace base { | 35 namespace base { |
| 37 class FilePath; | 36 class FilePath; |
| 38 } | 37 } |
| 39 | 38 |
| 40 namespace history { | 39 namespace history { |
| 41 | 40 |
| 42 class InMemoryDatabase; | 41 class InMemoryDatabase; |
| 43 struct KeywordSearchUpdatedDetails; | 42 struct KeywordSearchUpdatedDetails; |
| 44 struct KeywordSearchDeletedDetails; | 43 struct KeywordSearchDeletedDetails; |
| 45 class URLDatabase; | 44 class URLDatabase; |
| 46 class URLRow; | 45 class URLRow; |
| 47 struct URLsDeletedDetails; | 46 struct URLsDeletedDetails; |
| 48 struct URLsModifiedDetails; | 47 struct URLsModifiedDetails; |
| 49 | 48 |
| 50 class InMemoryHistoryBackend : public HistoryServiceObserver, | 49 class InMemoryHistoryBackend : public HistoryService::Observer, |
| 51 public content::NotificationObserver { | 50 public content::NotificationObserver { |
| 52 public: | 51 public: |
| 53 InMemoryHistoryBackend(); | 52 InMemoryHistoryBackend(); |
| 54 virtual ~InMemoryHistoryBackend(); | 53 virtual ~InMemoryHistoryBackend(); |
| 55 | 54 |
| 56 // Initializes the backend from the history database pointed to by the | 55 // Initializes the backend from the history database pointed to by the |
| 57 // full path in |history_filename|. | 56 // full path in |history_filename|. |
| 58 bool Init(const base::FilePath& history_filename); | 57 bool Init(const base::FilePath& history_filename); |
| 59 | 58 |
| 60 // Does initialization work when this object is attached to the history | 59 // Does initialization work when this object is attached to the history |
| 61 // system on the main thread. The argument is the profile with which the | 60 // system on the main thread. The argument is the profile with which the |
| 62 // attached history service is under. | 61 // attached history service is under. |
| 63 void AttachToHistoryService(Profile* profile, | 62 void AttachToHistoryService(Profile* profile, |
| 64 HistoryService* history_service); | 63 HistoryService* history_service); |
| 65 | 64 |
| 66 // Deletes all search terms for the specified keyword. | 65 // Deletes all search terms for the specified keyword. |
| 67 void DeleteAllSearchTermsForKeyword(KeywordID keyword_id); | 66 void DeleteAllSearchTermsForKeyword(KeywordID keyword_id); |
| 68 | 67 |
| 69 // Returns the underlying database associated with this backend. The current | 68 // Returns the underlying database associated with this backend. The current |
| 70 // autocomplete code was written fro this, but it should probably be removed | 69 // autocomplete code was written fro this, but it should probably be removed |
| 71 // so that it can deal directly with this object, rather than the DB. | 70 // so that it can deal directly with this object, rather than the DB. |
| 72 InMemoryDatabase* db() const { | 71 InMemoryDatabase* db() const { |
| 73 return db_.get(); | 72 return db_.get(); |
| 74 } | 73 } |
| 75 | 74 |
| 76 // HistoryServiceObserver: | 75 // HistoryService::Observer: |
| 77 virtual void OnURLVisited(ui::PageTransition transition, | 76 virtual void OnURLVisited(ui::PageTransition transition, |
| 78 const URLRow& row, | 77 const URLRow& row, |
| 79 const RedirectList& redirects, | 78 const RedirectList& redirects, |
| 80 base::Time visit_time) OVERRIDE; | 79 base::Time visit_time) OVERRIDE; |
| 81 | 80 |
| 82 // Notification callback. | 81 // Notification callback. |
| 83 virtual void Observe(int type, | 82 virtual void Observe(int type, |
| 84 const content::NotificationSource& source, | 83 const content::NotificationSource& source, |
| 85 const content::NotificationDetails& details) OVERRIDE; | 84 const content::NotificationDetails& details) OVERRIDE; |
| 86 | 85 |
| (...skipping 20 matching lines...) Expand all Loading... |
| 107 // initialization. | 106 // initialization. |
| 108 Profile* profile_; | 107 Profile* profile_; |
| 109 HistoryService* history_service_; | 108 HistoryService* history_service_; |
| 110 | 109 |
| 111 DISALLOW_COPY_AND_ASSIGN(InMemoryHistoryBackend); | 110 DISALLOW_COPY_AND_ASSIGN(InMemoryHistoryBackend); |
| 112 }; | 111 }; |
| 113 | 112 |
| 114 } // namespace history | 113 } // namespace history |
| 115 | 114 |
| 116 #endif // CHROME_BROWSER_HISTORY_IN_MEMORY_HISTORY_BACKEND_H_ | 115 #endif // CHROME_BROWSER_HISTORY_IN_MEMORY_HISTORY_BACKEND_H_ |
| OLD | NEW |