| // Copyright 2019 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 COMPONENTS_OFFLINE_PAGES_TASK_SQL_CALLBACK_TASK_H_ |
| #define COMPONENTS_OFFLINE_PAGES_TASK_SQL_CALLBACK_TASK_H_ |
| |
| #include "base/callback.h" |
| #include "base/memory/weak_ptr.h" |
| #include "components/offline_pages/task/task.h" |
| |
| namespace sql { |
| class Database; |
| } |
| |
| namespace offline_pages { |
| class SqlStoreBase; |
| |
| // A simple task that calls store->Execute() with the provided |exec_callback| |
| // and completes. |done_callback|, if provided, is called with the result. This |
| // class can be used if there are no UI thread actions that need done. |
| class SqlCallbackTask : public Task { |
| public: |
| typedef base::OnceCallback<bool(sql::Database* db)> ExecuteCallback; |
| typedef base::OnceCallback<void(bool)> DoneCallback; |
| |
| SqlCallbackTask(SqlStoreBase* store, |
| ExecuteCallback exec_callback, |
| DoneCallback done_callback = {}); |
| ~SqlCallbackTask() override; |
| void Run() override; |
| |
| private: |
| base::WeakPtr<SqlCallbackTask> GetWeakPtr() { |
| return weak_ptr_factory_.GetWeakPtr(); |
| } |
| |
| void Done(bool result); |
| |
| SqlStoreBase* store_; |
| ExecuteCallback exec_callback_; |
| DoneCallback done_callback_; |
| base::WeakPtrFactory<SqlCallbackTask> weak_ptr_factory_{this}; |
| }; |
| |
| } // namespace offline_pages |
| |
| #endif // COMPONENTS_OFFLINE_PAGES_TASK_SQL_CALLBACK_TASK_H_ |