| Index: chrome/browser/history/url_database.h
|
| diff --git a/chrome/browser/history/url_database.h b/chrome/browser/history/url_database.h
|
| deleted file mode 100644
|
| index ea04c2f77a575aa10117624872cbe12598cef869..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/history/url_database.h
|
| +++ /dev/null
|
| @@ -1,308 +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_URL_DATABASE_H_
|
| -#define CHROME_BROWSER_HISTORY_URL_DATABASE_H_
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "chrome/browser/history/history_types.h"
|
| -#include "components/history/core/browser/keyword_id.h"
|
| -#include "components/query_parser/query_parser.h"
|
| -#include "sql/statement.h"
|
| -
|
| -class GURL;
|
| -
|
| -namespace sql {
|
| -class Connection;
|
| -}
|
| -
|
| -namespace history {
|
| -
|
| -class VisitDatabase; // For friend statement.
|
| -
|
| -// Encapsulates an SQL database that holds URL info. This is a subset of the
|
| -// full history data. We split this class' functionality out from the larger
|
| -// HistoryDatabase class to support maintaining separate databases of URLs with
|
| -// different capabilities (for example, the in-memory database).
|
| -//
|
| -// This is refcounted to support calling InvokeLater() with some of its methods
|
| -// (necessary to maintain ordering of DB operations).
|
| -class URLDatabase {
|
| - public:
|
| - // Must call CreateURLTable() and CreateURLIndexes() before using to make
|
| - // sure the database is initialized.
|
| - URLDatabase();
|
| -
|
| - // This object must be destroyed on the thread where all accesses are
|
| - // happening to avoid thread-safety problems.
|
| - virtual ~URLDatabase();
|
| -
|
| - // Converts a GURL to a string used in the history database. We plan to
|
| - // do more complex operations than just getting the spec out involving
|
| - // punycode, so this function should be used instead of url.spec() when
|
| - // interacting with the database.
|
| - //
|
| - // TODO(brettw) this should be moved out of the public section and the
|
| - // entire public HistoryDatabase interface should use GURL. This should
|
| - // also probably return a string instead since that is what the DB uses
|
| - // internally and we can avoid the extra conversion.
|
| - static std::string GURLToDatabaseURL(const GURL& url);
|
| -
|
| - // URL table functions -------------------------------------------------------
|
| -
|
| - // Looks up a url given an id. Fills info with the data. Returns true on
|
| - // success and false otherwise.
|
| - bool GetURLRow(URLID url_id, URLRow* info);
|
| -
|
| - // Looks up all urls that were typed in manually. Fills info with the data.
|
| - // Returns true on success and false otherwise.
|
| - bool GetAllTypedUrls(URLRows* urls);
|
| -
|
| - // Looks up the given URL and if it exists, fills the given pointers with the
|
| - // associated info and returns the ID of that URL. If the info pointer is
|
| - // NULL, no information about the URL will be filled in, only the ID will be
|
| - // returned. Returns 0 if the URL was not found.
|
| - URLID GetRowForURL(const GURL& url, URLRow* info);
|
| -
|
| - // Given an already-existing row in the URL table, updates that URL's stats.
|
| - // This can not change the URL. Returns true on success.
|
| - //
|
| - // This will NOT update the title used for full text indexing. If you are
|
| - // setting the title, call SetPageIndexedData with the new title.
|
| - bool UpdateURLRow(URLID url_id, const URLRow& info);
|
| -
|
| - // Adds a line to the URL database with the given information and returns the
|
| - // newly generated ID for the row (the |id| in |info| is ignored). A row with
|
| - // the given URL must not exist. Returns 0 on error.
|
| - //
|
| - // This does NOT add a row to the full text search database. Use
|
| - // HistoryDatabase::SetPageIndexedData to do this.
|
| - URLID AddURL(const URLRow& info) {
|
| - return AddURLInternal(info, false);
|
| - }
|
| -
|
| - // Either adds a new row to the URL table with the given information (with the
|
| - // the |id| as specified in |info|), or updates the pre-existing row with this
|
| - // |id| if there is one already. This is also known as an "upsert" or "merge"
|
| - // operation. Returns true on success.
|
| - bool InsertOrUpdateURLRowByID(const URLRow& info);
|
| -
|
| - // Delete the row of the corresponding URL. Only the row in the URL table and
|
| - // corresponding keyword search terms will be deleted, not any other data that
|
| - // may refer to the URL row. Returns true if the row existed and was deleted.
|
| - bool DeleteURLRow(URLID id);
|
| -
|
| - // URL mass-deleting ---------------------------------------------------------
|
| -
|
| - // Begins the mass-deleting operation by creating a temporary URL table.
|
| - // The caller than adds the URLs it wants to preseve to the temporary table,
|
| - // and then deletes everything else by calling CommitTemporaryURLTable().
|
| - // Returns true on success.
|
| - bool CreateTemporaryURLTable();
|
| -
|
| - // Adds a row to the temporary URL table. This must be called between
|
| - // CreateTemporaryURLTable() and CommitTemporaryURLTable() (see those for more
|
| - // info). The ID of the URL will change in the temporary table, so the new ID
|
| - // is returned. Returns 0 on failure.
|
| - URLID AddTemporaryURL(const URLRow& row) {
|
| - return AddURLInternal(row, true);
|
| - }
|
| -
|
| - // Ends the mass-deleting by replacing the original URL table with the
|
| - // temporary one created in CreateTemporaryURLTable. Returns true on success.
|
| - bool CommitTemporaryURLTable();
|
| -
|
| - // Enumeration ---------------------------------------------------------------
|
| -
|
| - // A basic enumerator to enumerate urls database.
|
| - class URLEnumeratorBase {
|
| - public:
|
| - URLEnumeratorBase();
|
| - virtual ~URLEnumeratorBase();
|
| -
|
| - private:
|
| - friend class URLDatabase;
|
| -
|
| - bool initialized_;
|
| - sql::Statement statement_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(URLEnumeratorBase);
|
| - };
|
| -
|
| - // A basic enumerator to enumerate urls
|
| - class URLEnumerator : public URLEnumeratorBase {
|
| - public:
|
| - URLEnumerator();
|
| -
|
| - // Retreives the next url. Returns false if no more urls are available
|
| - bool GetNextURL(history::URLRow* r);
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(URLEnumerator);
|
| - };
|
| -
|
| - // Initializes the given enumerator to enumerator all URLs in the database.
|
| - bool InitURLEnumeratorForEverything(URLEnumerator* enumerator);
|
| -
|
| - // Initializes the given enumerator to enumerator all URLs in the database
|
| - // that are historically significant: ones having been visited within 3 days,
|
| - // having their URL manually typed more than once, or having been visited
|
| - // more than 3 times.
|
| - bool InitURLEnumeratorForSignificant(URLEnumerator* enumerator);
|
| -
|
| - // Favicons ------------------------------------------------------------------
|
| -
|
| - // Autocomplete --------------------------------------------------------------
|
| -
|
| - // Fills the given array with URLs matching the given prefix. They will be
|
| - // sorted by typed count, then by visit count, then by visit date (most recent
|
| - // first) up to the given maximum number. If |typed_only| is true, only urls
|
| - // that have been typed once are returned. For caller convenience, returns
|
| - // whether any results were found.
|
| - bool AutocompleteForPrefix(const std::string& prefix,
|
| - size_t max_results,
|
| - bool typed_only,
|
| - URLRows* results);
|
| -
|
| - // Returns true if the database holds some past typed navigation to a URL on
|
| - // the provided hostname.
|
| - bool IsTypedHost(const std::string& host);
|
| -
|
| - // Tries to find the shortest URL beginning with |base| that strictly
|
| - // prefixes |url|, and has minimum visit_ and typed_counts as specified.
|
| - // If found, fills in |info| and returns true; otherwise returns false,
|
| - // leaving |info| unchanged.
|
| - // We allow matches of exactly |base| iff |allow_base| is true.
|
| - bool FindShortestURLFromBase(const std::string& base,
|
| - const std::string& url,
|
| - int min_visits,
|
| - int min_typed,
|
| - bool allow_base,
|
| - history::URLRow* info);
|
| -
|
| - // History search ------------------------------------------------------------
|
| -
|
| - // Performs a brute force search over the database to find any URLs or titles
|
| - // which match the |query| string. Returns any matches in |results|.
|
| - bool GetTextMatches(const base::string16& query, URLRows* results);
|
| -
|
| - // Keyword Search Terms ------------------------------------------------------
|
| -
|
| - // Sets the search terms for the specified url/keyword pair.
|
| - bool SetKeywordSearchTermsForURL(URLID url_id,
|
| - KeywordID keyword_id,
|
| - const base::string16& term);
|
| -
|
| - // Looks up a keyword search term given a url id. Returns all the search terms
|
| - // in |rows|. Returns true on success.
|
| - bool GetKeywordSearchTermRow(URLID url_id, KeywordSearchTermRow* row);
|
| -
|
| - // Looks up all keyword search terms given a term, Fills the rows with data.
|
| - // Returns true on success and false otherwise.
|
| - bool GetKeywordSearchTermRows(const base::string16& term,
|
| - std::vector<KeywordSearchTermRow>* rows);
|
| -
|
| - // Deletes all search terms for the specified keyword that have been added by
|
| - // way of SetKeywordSearchTermsForURL.
|
| - void DeleteAllSearchTermsForKeyword(KeywordID keyword_id);
|
| -
|
| - // Returns up to max_count of the most recent search terms for the specified
|
| - // keyword.
|
| - void GetMostRecentKeywordSearchTerms(
|
| - KeywordID keyword_id,
|
| - const base::string16& prefix,
|
| - int max_count,
|
| - std::vector<KeywordSearchTermVisit>* matches);
|
| -
|
| - // Deletes all searches matching |term|.
|
| - bool DeleteKeywordSearchTerm(const base::string16& term);
|
| -
|
| - // Deletes any search corresponding to |url_id|.
|
| - bool DeleteKeywordSearchTermForURL(URLID url_id);
|
| -
|
| - // Migration -----------------------------------------------------------------
|
| -
|
| - // Do to a bug we were setting the favicon of about:blank. This forces
|
| - // about:blank to have no icon or title. Returns true on success, false if
|
| - // the favicon couldn't be updated.
|
| - bool MigrateFromVersion11ToVersion12();
|
| -
|
| - protected:
|
| - friend class VisitDatabase;
|
| -
|
| - // See HISTORY_URL_ROW_FIELDS below.
|
| - static const char kURLRowFields[];
|
| -
|
| - // The number of fiends in kURLRowFields. If callers need additional
|
| - // fields, they can add their 0-based index to this value to get the index of
|
| - // fields following kURLRowFields.
|
| - static const int kNumURLRowFields;
|
| -
|
| - // Drops the starred_id column from urls, returning true on success. This does
|
| - // nothing (and returns true) if the urls doesn't contain the starred_id
|
| - // column.
|
| - bool DropStarredIDFromURLs();
|
| -
|
| - // Initialization functions. The indexing functions are separate from the
|
| - // table creation functions so the in-memory database and the temporary tables
|
| - // used when clearing history can populate the table and then create the
|
| - // index, which is faster than the reverse.
|
| - //
|
| - // is_temporary is false when generating the "regular" URLs table. The expirer
|
| - // sets this to true to generate the temporary table, which will have a
|
| - // different name but the same schema.
|
| - bool CreateURLTable(bool is_temporary);
|
| -
|
| - // Creates the index over URLs so we can quickly look up based on URL.
|
| - bool CreateMainURLIndex();
|
| -
|
| - // Ensures the keyword search terms table exists.
|
| - bool InitKeywordSearchTermsTable();
|
| -
|
| - // Creates the indices used for keyword search terms.
|
| - bool CreateKeywordSearchTermsIndices();
|
| -
|
| - // Deletes the keyword search terms table.
|
| - bool DropKeywordSearchTermsTable();
|
| -
|
| - // Inserts the given URL row into the URLs table, using the regular table
|
| - // if is_temporary is false, or the temporary URL table if is temporary is
|
| - // true. The current |id| of |info| will be ignored in both cases and a new ID
|
| - // will be generated, which will also constitute the return value, except in
|
| - // case of an error, when the return value is 0. The temporary table may only
|
| - // be used in between CreateTemporaryURLTable() and CommitTemporaryURLTable().
|
| - URLID AddURLInternal(const URLRow& info, bool is_temporary);
|
| -
|
| - // Convenience to fill a history::URLRow. Must be in sync with the fields in
|
| - // kHistoryURLRowFields.
|
| - static void FillURLRow(sql::Statement& s, URLRow* i);
|
| -
|
| - // Returns the database for the functions in this interface. The decendent of
|
| - // this class implements these functions to return its objects.
|
| - virtual sql::Connection& GetDB() = 0;
|
| -
|
| - private:
|
| - // True if InitKeywordSearchTermsTable() has been invoked. Not all subclasses
|
| - // have keyword search terms.
|
| - bool has_keyword_search_terms_;
|
| -
|
| - query_parser::QueryParser query_parser_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(URLDatabase);
|
| -};
|
| -
|
| -// The fields and order expected by FillURLRow(). ID is guaranteed to be first
|
| -// so that DISTINCT can be prepended to get distinct URLs.
|
| -//
|
| -// This is available BOTH as a macro and a static string (kURLRowFields). Use
|
| -// the macro if you want to put this in the middle of an otherwise constant
|
| -// string, it will save time doing string appends. If you have to build a SQL
|
| -// string dynamically anyway, use the constant, it will save space.
|
| -#define HISTORY_URL_ROW_FIELDS \
|
| - " urls.id, urls.url, urls.title, urls.visit_count, urls.typed_count, " \
|
| - "urls.last_visit_time, urls.hidden "
|
| -
|
| -} // namespace history
|
| -
|
| -#endif // CHROME_BROWSER_HISTORY_URL_DATABASE_H_
|
|
|