// 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_ANDROID_SQL_HANDLER_H_ #define CHROME_BROWSER_HISTORY_ANDROID_SQL_HANDLER_H_ #include "chrome/browser/history/android/android_history_types.h" namespace history { // This is a wrapper of information needed for Insert/Update/Delete // method in SQLHandler. Refer to SQLHandler's comment below for how // it is used. struct TableIDRow { TableIDRow(); ~TableIDRow(); URLID url_id; GURL url; // Whether the URL was bookmarked. bool bookmarked; }; typedef std::vector<TableIDRow> TableIDRows; // This base class is used by AndroidProviderBackend to manipulate the indvidual // table or BookmarkModel in its Insert/Update/Delete method. // // The implementation needs to provides an array of columns. Once the columns // are inserted or updated, the corresponding Insert() or Update() method will // be invoked. The Delete() method is called to delete rows. // // The HistoryAndBookmarkRow given in Insert() or Update() provide the data for // insert or update. No all the data in HistoryAndBookmarkRow maybe valid, using // HistoryAndBookmarkRow::is_value_set_explicitly() method to see if the data // need be inserted or updated. class SQLHandler { public: // |columns| is the implementation's columns. // |column_count| is the number of column in |columns|. SQLHandler(const HistoryAndBookmarkRow::ColumnID columns[], int column_count); virtual ~SQLHandler(); // Updates the rows whose URLID or URL is in the given |ids_set| with new // value stored in |row|. Return true if the update succeeds. virtual bool Update(const HistoryAndBookmarkRow& row, const TableIDRows& ids_set) = 0; // Inserts the given |row|, return true on success; The id of insertted row // should be set in |row|, so other implemnetations could use it to complete // the insert. virtual bool Insert(HistoryAndBookmarkRow* row) = 0; // Deletes the rows whose id is in |ids_set|, returns false if any deletion // failed, otherwise return true even all/some of rows are not found. virtual bool Delete(const TableIDRows& ids_set) = 0; // Return true if |row| has a value explicitly set for at least one of the // columns in |row| that are known to this class. bool HasColumnIn(const HistoryAndBookmarkRow& row); // Returns true if |id| is one of the columns known to this class. bool HasColumn(HistoryAndBookmarkRow::ColumnID id); private: // The columns of this handler. const std::set<HistoryAndBookmarkRow::ColumnID> columns_; DISALLOW_COPY_AND_ASSIGN(SQLHandler); }; } // namespace history. #endif // CHROME_BROWSER_HISTORY_ANDROID_SQL_HANDLER_H_