Chromium Code Reviews| Index: chrome/browser/history/url_index_private_data.h |
| =================================================================== |
| --- chrome/browser/history/url_index_private_data.h (revision 125451) |
| +++ chrome/browser/history/url_index_private_data.h (working copy) |
| @@ -8,8 +8,11 @@ |
| #include "base/file_path.h" |
| #include "base/gtest_prod_util.h" |
| +#include "base/memory/ref_counted.h" |
| +#include "base/memory/scoped_ptr.h" |
| #include "chrome/browser/history/in_memory_url_index_types.h" |
| #include "chrome/browser/history/in_memory_url_index_cache.pb.h" |
| +#include "content/public/browser/notification_details.h" |
| class HistoryQuickProviderTest; |
| @@ -22,7 +25,27 @@ |
| namespace imui = in_memory_url_index; |
| class HistoryDatabase; |
| +class InMemoryURLIndex; |
| +class URLIndexPrivateData; |
| +// A helper class to carry around a pointer to private data that is being |
| +// restored from the cache or rebuilt from the history database. |
| +class RefCountedURLIndexPrivateDataPtr |
| + : public base::RefCountedThreadSafe<RefCountedURLIndexPrivateDataPtr> { |
| + public: |
| + RefCountedURLIndexPrivateDataPtr(); |
| + |
| + URLIndexPrivateData* get(); |
| + URLIndexPrivateData* release(); |
|
brettw
2012/03/12 04:37:40
Delete release and reset.
mrossetti
2012/03/13 22:25:46
This whole class is gone now.
|
| + void reset(URLIndexPrivateData* data); |
| + |
| + private: |
| + friend class base::RefCountedThreadSafe<RefCountedURLIndexPrivateDataPtr>; |
| + virtual ~RefCountedURLIndexPrivateDataPtr(); |
| + |
| + scoped_ptr<URLIndexPrivateData> data_; |
|
brettw
2012/03/12 04:37:40
I don't think you should wrap a scoped_ptr with a
mrossetti
2012/03/12 23:21:13
Because I wanted the original class to be copy-abl
mrossetti
2012/03/13 22:25:46
Done.
|
| +}; |
| + |
| // A structure describing the InMemoryURLIndex's internal data and providing for |
| // restoring, rebuilding and updating that internal data. |
| class URLIndexPrivateData { |
| @@ -131,23 +154,41 @@ |
| // down into words and each word is broken down into characters. |
| void set_languages(const std::string& languages) { languages_ = languages; } |
| - // Restores the index's private data from the cache file stored in the |
| - // profile directory and returns true if successful. |
| - bool RestoreFromFile(const FilePath& file_path); |
| + // Creates a new URLIndexPrivateData object, populates it from the contents |
| + // of the cache file stored in |file_path|, and assigns it to |
| + // |private_data_ptr|. |
| + static void RestoreFromFileTask( |
| + const FilePath& file_path, |
| + scoped_refptr<RefCountedURLIndexPrivateDataPtr> private_data_ptr); |
| + // Constructs a new object by restoring its contents from the file at |path|. |
| + // Returns the new URLIndexPrivateData which on success will contain the |
| + // restored data but upon failure will be empty. |
| + static URLIndexPrivateData* RestoreFromFile(const FilePath& path); |
| + |
| // Constructs a new object by rebuilding its contents from the history |
| // database in |history_db|. Returns the new URLIndexPrivateData which on |
| // success will contain the rebuilt data but upon failure will be empty. |
| static URLIndexPrivateData* RebuildFromHistory(HistoryDatabase* history_db); |
| + // Writes |private_data| as a cache file to |file_path| and returns success |
| + // via |succeeded|. |
| + static void WritePrivateDataToCacheFileTask( |
| + scoped_ptr<URLIndexPrivateData> private_data, |
| + const FilePath& file_path, |
| + scoped_refptr<history::RefCountedBool> succeeded); |
| + |
| // Caches the index private data and writes the cache file to the profile |
| - // directory. |
| + // directory. Called by WritePrivateDataToCacheFileTask. |
| bool SaveToFile(const FilePath& file_path); |
| // Initializes all index data members in preparation for restoring the index |
| // from the cache or a complete rebuild from the history database. |
| void Clear(); |
| + // Returns true if there is no data in the index. |
| + bool Empty() const; |
| + |
| // Adds |word_id| to |history_id|'s entry in the history/word map, |
| // creating a new entry if one does not already exist. |
| void AddToHistoryIDWordMap(HistoryID history_id, WordID word_id); |
| @@ -230,9 +271,6 @@ |
| static int ScoreComponentForMatches(const TermMatches& matches, |
| size_t max_length); |
| - // Determines if |gurl| has a whitelisted scheme and returns true if so. |
| - bool URLSchemeIsWhitelisted(const GURL& gurl) const; |
| - |
| // Encode a data structure into the protobuf |cache|. |
| void SavePrivateData(imui::InMemoryURLIndexCacheItem* cache) const; |
| void SaveWordList(imui::InMemoryURLIndexCacheItem* cache) const; |
| @@ -250,6 +288,9 @@ |
| bool RestoreWordIDHistoryMap(const imui::InMemoryURLIndexCacheItem& cache); |
| bool RestoreHistoryInfoMap(const imui::InMemoryURLIndexCacheItem& cache); |
| + // Determines if |gurl| has a whitelisted scheme and returns true if so. |
| + bool URLSchemeIsWhitelisted(const GURL& gurl) const; |
| + |
| // Cache of search terms. |
| SearchTermCacheMap search_term_cache_; |