summaryrefslogtreecommitdiff
path: root/chromium/base/task_runner.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/base/task_runner.cc')
-rw-r--r--chromium/base/task_runner.cc41
1 files changed, 5 insertions, 36 deletions
diff --git a/chromium/base/task_runner.cc b/chromium/base/task_runner.cc
index d8644a989dc..e2787f3d1ac 100644
--- a/chromium/base/task_runner.cc
+++ b/chromium/base/task_runner.cc
@@ -10,6 +10,7 @@
#include "base/compiler_specific.h"
#include "base/logging.h"
#include "base/task/promise/abstract_promise.h"
+#include "base/task/promise/helpers.h"
#include "base/threading/post_task_and_reply_impl.h"
namespace base {
@@ -40,40 +41,8 @@ bool PostTaskAndReplyTaskRunner::PostTask(const Location& from_here,
return destination_->PostTask(from_here, std::move(task));
}
-// TODO(alexclarke): Remove this when TaskRunner::PostPromiseInternal becomes
-// pure virtual.
-class PromiseHolder {
- public:
- explicit PromiseHolder(scoped_refptr<internal::AbstractPromise> promise)
- : promise_(std::move(promise)) {}
-
- ~PromiseHolder() {
- // Detect if the promise was not executed and if so cancel to ensure memory
- // is released.
- if (promise_)
- promise_->OnCanceled();
- }
-
- PromiseHolder(PromiseHolder&& other) : promise_(std::move(other.promise_)) {}
-
- scoped_refptr<internal::AbstractPromise> Unwrap() const {
- return std::move(promise_);
- }
-
- private:
- mutable scoped_refptr<internal::AbstractPromise> promise_;
-};
-
} // namespace
-template <>
-struct BindUnwrapTraits<PromiseHolder> {
- static scoped_refptr<internal::AbstractPromise> Unwrap(
- const PromiseHolder& o) {
- return o.Unwrap();
- }
-};
-
bool TaskRunner::PostTask(const Location& from_here, OnceClosure task) {
return PostDelayedTask(from_here, std::move(task), base::TimeDelta());
}
@@ -88,10 +57,10 @@ bool TaskRunner::PostTaskAndReply(const Location& from_here,
bool TaskRunner::PostPromiseInternal(
const scoped_refptr<internal::AbstractPromise>& promise,
base::TimeDelta delay) {
- return PostDelayedTask(
- promise->from_here(),
- BindOnce(&internal::AbstractPromise::Execute, PromiseHolder(promise)),
- delay);
+ return PostDelayedTask(promise->from_here(),
+ BindOnce(&internal::AbstractPromise::Execute,
+ internal::PromiseHolder(promise)),
+ delay);
}
TaskRunner::TaskRunner() = default;