Index: chrome/browser/history/in_memory_url_index.h |
diff --git a/chrome/browser/history/in_memory_url_index.h b/chrome/browser/history/in_memory_url_index.h |
deleted file mode 100644 |
index fa1647faba8bc6d2cff8db3cfe21b415b6abc7e4..0000000000000000000000000000000000000000 |
--- a/chrome/browser/history/in_memory_url_index.h |
+++ /dev/null |
@@ -1,306 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#ifndef CHROME_BROWSER_HISTORY_IN_MEMORY_URL_INDEX_H_ |
-#define CHROME_BROWSER_HISTORY_IN_MEMORY_URL_INDEX_H_ |
- |
-#include <functional> |
-#include <map> |
-#include <set> |
-#include <string> |
-#include <vector> |
- |
-#include "base/basictypes.h" |
-#include "base/files/file_path.h" |
-#include "base/gtest_prod_util.h" |
-#include "base/memory/ref_counted.h" |
-#include "base/memory/weak_ptr.h" |
-#include "base/strings/string16.h" |
-#include "base/task/cancelable_task_tracker.h" |
-#include "components/history/core/browser/history_db_task.h" |
-#include "components/history/core/browser/history_service_observer.h" |
-#include "components/history/core/browser/history_types.h" |
-#include "components/history/core/browser/scored_history_match.h" |
-#include "sql/connection.h" |
- |
-class HistoryService; |
-class HistoryQuickProviderTest; |
- |
-namespace base { |
-class Time; |
-} |
- |
-namespace in_memory_url_index { |
-class InMemoryURLIndexCacheItem; |
-} |
- |
-namespace history { |
- |
-namespace imui = in_memory_url_index; |
- |
-class HistoryDatabase; |
-class URLIndexPrivateData; |
- |
-// The URL history source. |
-// Holds portions of the URL database in memory in an indexed form. Used to |
-// quickly look up matching URLs for a given query string. Used by |
-// the HistoryURLProvider for inline autocomplete and to provide URL |
-// matches to the omnibox. |
-// |
-// Note about multi-byte codepoints and the data structures in the |
-// InMemoryURLIndex class: One will quickly notice that no effort is made to |
-// insure that multi-byte character boundaries are detected when indexing the |
-// words and characters in the URL history database except when converting |
-// URL strings to lowercase. Multi-byte-edness makes no difference when |
-// indexing or when searching the index as the final filtering of results |
-// is dependent on the comparison of a string of bytes, not individual |
-// characters. While the lookup of those bytes during a search in the |
-// |char_word_map_| could serve up words in which the individual char16 |
-// occurs as a portion of a composite character the next filtering step |
-// will eliminate such words except in the case where a single character |
-// is being searched on and which character occurs as the second char16 of a |
-// multi-char16 instance. |
-class InMemoryURLIndex : public HistoryServiceObserver, |
- public base::SupportsWeakPtr<InMemoryURLIndex> { |
- public: |
- // Defines an abstract class which is notified upon completion of restoring |
- // the index's private data either by reading from the cache file or by |
- // rebuilding from the history database. |
- class RestoreCacheObserver { |
- public: |
- virtual ~RestoreCacheObserver(); |
- |
- // Callback that lets the observer know that the restore operation has |
- // completed. |succeeded| indicates if the restore was successful. This is |
- // called on the UI thread. |
- virtual void OnCacheRestoreFinished(bool succeeded) = 0; |
- }; |
- |
- // Defines an abstract class which is notified upon completion of saving |
- // the index's private data to the cache file. |
- class SaveCacheObserver { |
- public: |
- virtual ~SaveCacheObserver(); |
- |
- // Callback that lets the observer know that the save succeeded. |
- // This is called on the UI thread. |
- virtual void OnCacheSaveFinished(bool succeeded) = 0; |
- }; |
- |
- // |history_service| which may be null during unit testing is used to register |
- // |as an HistoryServiceObserver. |history_dir| is a path to the directory |
- // containing the history database within the profile wherein the cache and |
- // transaction journals will be stored. |languages| gives a list of language |
- // encodings by which URLs and omnibox searches are broken down into words and |
- // characters. |
- InMemoryURLIndex(HistoryService* history_service, |
- const base::FilePath& history_dir, |
- const std::string& languages); |
- ~InMemoryURLIndex() override; |
- |
- // Opens and prepares the index of historical URL visits. If the index private |
- // data cannot be restored from its cache file then it is rebuilt from the |
- // history database. |
- void Init(); |
- |
- // Signals that any outstanding initialization should be canceled and |
- // flushes the cache to disk. |
- void ShutDown(); |
- |
- // Scans the history index and returns a vector with all scored, matching |
- // history items. This entry point simply forwards the call on to the |
- // URLIndexPrivateData class. For a complete description of this function |
- // refer to that class. If |cursor_position| is base::string16::npos, the |
- // function doesn't do anything special with the cursor; this is equivalent |
- // to the cursor being at the end. In total, |max_matches| of items will be |
- // returned in the |ScoredHistoryMatches| vector. |
- ScoredHistoryMatches HistoryItemsForTerms( |
- const base::string16& term_string, |
- size_t cursor_position, |
- size_t max_matches, |
- const ScoredHistoryMatch::Builder& builder); |
- |
- // Deletes the index entry, if any, for the given |url|. |
- void DeleteURL(const GURL& url); |
- |
- // Sets the optional observers for completion of restoral and saving of the |
- // index's private data. |
- void set_restore_cache_observer( |
- RestoreCacheObserver* restore_cache_observer) { |
- restore_cache_observer_ = restore_cache_observer; |
- } |
- void set_save_cache_observer(SaveCacheObserver* save_cache_observer) { |
- save_cache_observer_ = save_cache_observer; |
- } |
- |
- // Indicates that the index restoration is complete. |
- bool restored() const { |
- return restored_; |
- } |
- |
- private: |
- friend class ::HistoryQuickProviderTest; |
- friend class InMemoryURLIndexTest; |
- friend class InMemoryURLIndexCacheTest; |
- FRIEND_TEST_ALL_PREFIXES(InMemoryURLIndexTest, ExpireRow); |
- FRIEND_TEST_ALL_PREFIXES(LimitedInMemoryURLIndexTest, Initialization); |
- |
- // HistoryDBTask used to rebuild our private data from the history database. |
- class RebuildPrivateDataFromHistoryDBTask : public HistoryDBTask { |
- public: |
- explicit RebuildPrivateDataFromHistoryDBTask( |
- InMemoryURLIndex* index, |
- const std::string& languages, |
- const std::set<std::string>& scheme_whitelist); |
- |
- bool RunOnDBThread(HistoryBackend* backend, |
- history::HistoryDatabase* db) override; |
- void DoneRunOnMainThread() override; |
- |
- private: |
- ~RebuildPrivateDataFromHistoryDBTask() override; |
- |
- InMemoryURLIndex* index_; // Call back to this index at completion. |
- std::string languages_; // Languages for word-breaking. |
- std::set<std::string> scheme_whitelist_; // Schemes to be indexed. |
- bool succeeded_; // Indicates if the rebuild was successful. |
- scoped_refptr<URLIndexPrivateData> data_; // The rebuilt private data. |
- |
- DISALLOW_COPY_AND_ASSIGN(RebuildPrivateDataFromHistoryDBTask); |
- }; |
- |
- // Initializes all index data members in preparation for restoring the index |
- // from the cache or a complete rebuild from the history database. |
- void ClearPrivateData(); |
- |
- // Constructs a file path for the cache file within the same directory where |
- // the history database is kept and saves that path to |file_path|. Returns |
- // true if |file_path| can be successfully constructed. (This function |
- // provided as a hook for unit testing.) |
- bool GetCacheFilePath(base::FilePath* file_path); |
- |
- // Restores the index's private data from the cache file stored in the history |
- // directory. |
- void PostRestoreFromCacheFileTask(); |
- |
- // Schedules a history task to rebuild our private data from the history |
- // database. |
- void ScheduleRebuildFromHistory(); |
- |
- // Callback used by RebuildPrivateDataFromHistoryDBTask to signal completion |
- // or rebuilding our private data from the history database. |succeeded| |
- // will be true if the rebuild was successful. |data| will point to a new |
- // instanceof the private data just rebuilt. |
- void DoneRebuidingPrivateDataFromHistoryDB( |
- bool succeeded, |
- scoped_refptr<URLIndexPrivateData> private_data); |
- |
- // Rebuilds the history index from the history database in |history_db|. |
- // Used for unit testing only. |
- void RebuildFromHistory(HistoryDatabase* history_db); |
- |
- // Determines if the private data was successfully reloaded from the cache |
- // file or if the private data must be rebuilt from the history database. |
- // |private_data_ptr|'s data will be NULL if the cache file load failed. If |
- // successful, sets the private data and notifies any |
- // |restore_cache_observer_|. Otherwise, kicks off a rebuild from the history |
- // database. |
- void OnCacheLoadDone(scoped_refptr<URLIndexPrivateData> private_data_ptr); |
- |
- // Callback function that sets the private data from the just-restored-from- |
- // file |private_data|. Notifies any |restore_cache_observer_| that the |
- // restore has succeeded. |
- void OnCacheRestored(URLIndexPrivateData* private_data); |
- |
- // Posts a task to cache the index private data and write the cache file to |
- // the history directory. |
- void PostSaveToCacheFileTask(); |
- |
- // Saves private_data_ to the given |path|. Runs on the UI thread. |
- // Provided for unit testing so that a test cache file can be used. |
- void DoSaveToCacheFile(const base::FilePath& path); |
- |
- // Notifies the observer, if any, of the success of the private data caching. |
- // |succeeded| is true on a successful save. |
- void OnCacheSaveDone(bool succeeded); |
- |
- // HistoryServiceObserver: |
- void OnURLVisited(HistoryService* history_service, |
- ui::PageTransition transition, |
- const URLRow& row, |
- const RedirectList& redirects, |
- base::Time visit_time) override; |
- void OnURLsModified(HistoryService* history_service, |
- const URLRows& changed_urls) override; |
- void OnURLsDeleted(HistoryService* history_service, |
- bool all_history, |
- bool expired, |
- const URLRows& deleted_rows, |
- const std::set<GURL>& favicon_urls) override; |
- void OnHistoryServiceLoaded(HistoryService* history_service) override; |
- |
- // Sets the directory wherein the cache file will be maintained. |
- // For unit test usage only. |
- void set_history_dir(const base::FilePath& dir_path) { |
- history_dir_ = dir_path; |
- } |
- |
- // Returns a pointer to our private data. For unit testing only. |
- URLIndexPrivateData* private_data() { return private_data_.get(); } |
- |
- // Returns a pointer to our private data cancelable request tracker. For |
- // unit testing only. |
- base::CancelableTaskTracker* private_data_tracker() { |
- return &private_data_tracker_; |
- } |
- |
- // Returns the set of whitelisted schemes. For unit testing only. |
- const std::set<std::string>& scheme_whitelist() { return scheme_whitelist_; } |
- |
- // The HistoryService; may be null when testing. |
- HistoryService* history_service_; |
- |
- // Directory where cache file resides. This is, except when unit testing, |
- // the same directory in which the history database is found. It should never |
- // be empty. |
- base::FilePath history_dir_; |
- |
- // Languages used during the word-breaking process during indexing. |
- std::string languages_; |
- |
- // Only URLs with a whitelisted scheme are indexed. |
- std::set<std::string> scheme_whitelist_; |
- |
- // The index's durable private data. |
- scoped_refptr<URLIndexPrivateData> private_data_; |
- |
- // Observers to notify upon restoral or save of the private data cache. |
- RestoreCacheObserver* restore_cache_observer_; |
- SaveCacheObserver* save_cache_observer_; |
- |
- base::CancelableTaskTracker private_data_tracker_; |
- base::CancelableTaskTracker cache_reader_tracker_; |
- |
- // Set to true once the shutdown process has begun. |
- bool shutdown_; |
- |
- // Set to true once the index restoration is complete. |
- bool restored_; |
- |
- // Set to true when changes to the index have been made and the index needs |
- // to be cached. Set to false when the index has been cached. Used as a |
- // temporary safety check to insure that the cache is saved before the |
- // index has been destructed. |
- bool needs_to_be_cached_; |
- |
- // This flag is set to true,if we want to listen to the |
- // HistoryServiceLoaded Notification. |
- bool listen_to_history_service_loaded_; |
- |
- DISALLOW_COPY_AND_ASSIGN(InMemoryURLIndex); |
-}; |
- |
-} // namespace history |
- |
-#endif // CHROME_BROWSER_HISTORY_IN_MEMORY_URL_INDEX_H_ |