| // 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_ANDROID_HISTORY_PROVIDER_SERVICE_H_ |
| #define CHROME_BROWSER_HISTORY_ANDROID_ANDROID_HISTORY_PROVIDER_SERVICE_H_ |
| |
| #include "base/callback.h" |
| #include "base/memory/ref_counted.h" |
| #include "chrome/browser/common/cancelable_request.h" |
| #include "chrome/browser/history/android/android_history_types.h" |
| #include "sql/statement.h" |
| |
| class Profile; |
| |
| // This class provides the methods to communicate with history backend service |
| // for the Android content provider. |
| // The methods of this class must run on the UI thread to cooperate with the |
| // BookmarkModel task posted in the DB thread. |
| class AndroidHistoryProviderService : public CancelableRequestProvider { |
| public: |
| explicit AndroidHistoryProviderService(Profile* profile); |
| virtual ~AndroidHistoryProviderService(); |
| |
| // The callback definitions ------------------------------------------------ |
| typedef base::Callback<void( |
| Handle, // handle |
| bool, // true if the query succeeded. |
| history::AndroidStatement*)> // the result of query |
| QueryCallback; |
| typedef CancelableRequest<QueryCallback> QueryRequest; |
| |
| typedef base::Callback<void( |
| Handle, // handle |
| bool, // true if the update succeeded. |
| int)> // the number of row updated. |
| UpdateCallback; |
| typedef CancelableRequest<UpdateCallback> UpdateRequest; |
| |
| typedef base::Callback<void( |
| Handle, // handle |
| bool, // true if the insert succeeded. |
| int64)> // the id of inserted row. |
| InsertCallback; |
| typedef CancelableRequest<InsertCallback> InsertRequest; |
| |
| typedef base::Callback<void( |
| Handle, // handle |
| bool, // true if the deletion succeeded. |
| int)> // the number of row deleted. |
| DeleteCallback; |
| typedef CancelableRequest<DeleteCallback> DeleteRequest; |
| |
| typedef base::Callback<void( |
| Handle, // handle |
| int)> // the new position. |
| MoveStatementCallback; |
| typedef CancelableRequest<MoveStatementCallback> MoveStatementRequest; |
| |
| // History and Bookmarks ---------------------------------------------------- |
| // |
| // Runs the given query on history backend, and invokes the |callback| to |
| // return the result. |
| // |
| // |projections| is the vector of the result columns. |
| // |selection| is the SQL WHERE clause without 'WHERE'. |
| // |selection_args| is the arguments for WHERE clause. |
| // |sort_order| is the SQL ORDER clause. |
| Handle QueryHistoryAndBookmarks( |
| const std::vector<history::HistoryAndBookmarkRow::ColumnID>& projections, |
| const std::string& selection, |
| const std::vector<string16>& selection_args, |
| const std::string& sort_order, |
| CancelableRequestConsumerBase* consumer, |
| const QueryCallback& callback); |
| |
| // Runs the given update and the number of the row updated is returned to the |
| // |callback| on success. |
| // |
| // |row| is the value to update. |
| // |selection| is the SQL WHERE clause without 'WHERE'. |
| // |selection_args| is the arguments for the WHERE clause. |
| Handle UpdateHistoryAndBookmarks(const history::HistoryAndBookmarkRow& row, |
| const std::string& selection, |
| const std::vector<string16>& selection_args, |
| CancelableRequestConsumerBase* consumer, |
| const UpdateCallback& callback); |
| |
| // Deletes the specified rows and invokes the |callback| to return the number |
| // of row deleted on success. |
| // |
| // |selection| is the SQL WHERE clause without 'WHERE'. |
| // |selection_args| is the arguments for the WHERE clause. |
| // |
| // if |selection| is empty all history and bookmarks are deleted. |
| Handle DeleteHistoryAndBookmarks(const std::string& selection, |
| const std::vector<string16>& selection_args, |
| CancelableRequestConsumerBase* consumer, |
| const DeleteCallback& callback); |
| |
| // Inserts the given values into history backend, and invokes the |callback| |
| // to return the result. |
| Handle InsertHistoryAndBookmark(const history::HistoryAndBookmarkRow& values, |
| CancelableRequestConsumerBase* consumer, |
| const InsertCallback& callback); |
| |
| // Deletes the matched history and invokes |callback| to return the number of |
| // the row deleted from the |callback|. |
| Handle DeleteHistory(const std::string& selection, |
| const std::vector<string16>& selection_args, |
| CancelableRequestConsumerBase* consumer, |
| const DeleteCallback& callback); |
| |
| // Statement ---------------------------------------------------------------- |
| // Moves the statement's current row from |current_pos| to |destination| in DB |
| // thread. The new position is returned to the callback. The result supplied |
| // the callback is constrained by the number of rows might. |
| Handle MoveStatement(history::AndroidStatement* statement, |
| int current_pos, |
| int destination, |
| CancelableRequestConsumerBase* consumer, |
| const MoveStatementCallback& callback); |
| |
| // Closes the statement in db thread. The AndroidHistoryProviderService takes |
| // the ownership of |statement|. |
| void CloseStatement(history::AndroidStatement* statement); |
| |
| // Search term -------------------------------------------------------------- |
| // Inserts the given values and returns the SearchTermID of the inserted row |
| // from the |callback| on success. |
| Handle InsertSearchTerm(const history::SearchRow& row, |
| CancelableRequestConsumerBase* consumer, |
| const InsertCallback& callback); |
| |
| // Runs the given update and returns the number of the update rows from the |
| // |callback| on success. |
| // |
| // |row| is the value need to update. |
| // |selection| is the SQL WHERE clause without 'WHERE'. |
| // |selection_args| is the arguments for WHERE clause. |
| Handle UpdateSearchTerms(const history::SearchRow& row, |
| const std::string& selection, |
| const std::vector<string16>& selection_args, |
| CancelableRequestConsumerBase* consumer, |
| const UpdateCallback& callback); |
| |
| // Deletes the matched rows and the number of deleted rows is returned from |
| // the |callback| on success. |
| // |selection| is the SQL WHERE clause without 'WHERE'. |
| // |selection_args| is the arguments for WHERE clause. |
| // |
| // if |selection| is empty all search be deleted. |
| Handle DeleteSearchTerms(const std::string& selection, |
| const std::vector<string16>& selection_args, |
| CancelableRequestConsumerBase* consumer, |
| const DeleteCallback& callback); |
| |
| // Returns the result of the given query from the |callback|. |
| // |projections| specifies the result columns, can not be empty, otherwise |
| // NULL is returned. |
| // |selection| is the SQL WHERE clause without 'WHERE'. |
| // |selection_args| is the arguments for WHERE clause. |
| // |sort_order| the SQL ORDER clause. |
| Handle QuerySearchTerms( |
| const std::vector<history::SearchRow::ColumnID>& projections, |
| const std::string& selection, |
| const std::vector<string16>& selection_args, |
| const std::string& sort_order, |
| CancelableRequestConsumerBase* consumer, |
| const QueryCallback& callback); |
| |
| private: |
| Profile* profile_; |
| |
| DISALLOW_COPY_AND_ASSIGN(AndroidHistoryProviderService); |
| }; |
| |
| #endif // CHROME_BROWSER_HISTORY_ANDROID_ANDROID_HISTORY_PROVIDER_SERVICE_H_ |