Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6272)

Unified Diff: chrome/browser/history/in_memory_url_index.h

Issue 963823003: Move InMemoryURLIndex into chrome/browser/autocomplete (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@shortcut-database
Patch Set: Fixing win_chromium_x64_rel_ng build Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/history/history_service.cc ('k') | chrome/browser/history/in_memory_url_index.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_
« no previous file with comments | « chrome/browser/history/history_service.cc ('k') | chrome/browser/history/in_memory_url_index.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698