12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- // 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/raw_ptr.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);
- raw_ptr<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_
|