summaryrefslogtreecommitdiffstats
path: root/chromium/base/task/promise/then_and_catch_executor.h
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-01-20 13:40:20 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-01-22 12:41:23 +0000
commit7961cea6d1041e3e454dae6a1da660b453efd238 (patch)
treec0eeb4a9ff9ba32986289c1653d9608e53ccb444 /chromium/base/task/promise/then_and_catch_executor.h
parentb7034d0803538058e5c9d904ef03cf5eab34f6ef (diff)
BASELINE: Update Chromium to 78.0.3904.130
Change-Id: If185e0c0061b3437531c97c9c8c78f239352a68b Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/base/task/promise/then_and_catch_executor.h')
-rw-r--r--chromium/base/task/promise/then_and_catch_executor.h66
1 files changed, 17 insertions, 49 deletions
diff --git a/chromium/base/task/promise/then_and_catch_executor.h b/chromium/base/task/promise/then_and_catch_executor.h
index da9faf9f882..56d30ba2a11 100644
--- a/chromium/base/task/promise/then_and_catch_executor.h
+++ b/chromium/base/task/promise/then_and_catch_executor.h
@@ -32,7 +32,7 @@ class BASE_EXPORT ThenAndCatchExecutorCommon {
using ExecuteCallback = void (*)(AbstractPromise* prerequisite,
AbstractPromise* promise,
- ThenAndCatchExecutorCommon* executor);
+ CallbackBase* callback);
void Execute(AbstractPromise* promise,
ExecuteCallback execute_then,
@@ -74,9 +74,8 @@ class ThenAndCatchExecutor {
bool IsCancelled() const { return common_.IsCancelled(); }
- PromiseExecutor::PrerequisitePolicy GetPrerequisitePolicy() const {
- return common_.GetPrerequisitePolicy();
- }
+ static constexpr PromiseExecutor::PrerequisitePolicy kPrerequisitePolicy =
+ PromiseExecutor::PrerequisitePolicy::kAll;
using ExecuteCallback = ThenAndCatchExecutorCommon::ExecuteCallback;
@@ -115,83 +114,52 @@ class ThenAndCatchExecutor {
private:
static void ExecuteThen(AbstractPromise* prerequisite,
AbstractPromise* promise,
- ThenAndCatchExecutorCommon* common) {
- ExecuteThenInternal(prerequisite, promise, common,
+ CallbackBase* resolve_callback) {
+ ExecuteThenInternal(prerequisite, promise, resolve_callback,
PrerequisiteCouldResolve());
}
static void ExecuteCatch(AbstractPromise* prerequisite,
AbstractPromise* promise,
- ThenAndCatchExecutorCommon* common) {
- ExecuteCatchInternal(prerequisite, promise, common,
+ CallbackBase* reject_callback) {
+ ExecuteCatchInternal(prerequisite, promise, reject_callback,
PrerequisiteCouldReject());
}
static void ExecuteThenInternal(AbstractPromise* prerequisite,
AbstractPromise* promise,
- ThenAndCatchExecutorCommon* common,
+ CallbackBase* resolve_callback,
std::true_type can_resolve) {
- ResolveOnceCallback* resolve_callback =
- static_cast<ResolveOnceCallback*>(&common->resolve_callback_);
RunHelper<ResolveOnceCallback, Resolved<ArgResolve>, ResolveStorage,
- RejectStorage>::Run(std::move(*resolve_callback), prerequisite,
- promise);
-
- using CheckResultTagType =
- typename PromiseCallbackTraits<ResolveReturnT>::TagType;
-
- CheckResultType(promise, CheckResultTagType());
+ RejectStorage>::
+ Run(std::move(*static_cast<ResolveOnceCallback*>(resolve_callback)),
+ prerequisite, promise);
}
static void ExecuteThenInternal(AbstractPromise* prerequisite,
AbstractPromise* promise,
- ThenAndCatchExecutorCommon* common,
+ CallbackBase* resolve_callback,
std::false_type can_resolve) {
// |prerequisite| can't resolve so don't generate dead code.
}
static void ExecuteCatchInternal(AbstractPromise* prerequisite,
AbstractPromise* promise,
- ThenAndCatchExecutorCommon* common,
+ CallbackBase* reject_callback,
std::true_type can_reject) {
- RejectOnceCallback* reject_callback =
- static_cast<RejectOnceCallback*>(&common->reject_callback_);
RunHelper<RejectOnceCallback, Rejected<ArgReject>, ResolveStorage,
- RejectStorage>::Run(std::move(*reject_callback), prerequisite,
- promise);
-
- using CheckResultTagType =
- typename PromiseCallbackTraits<RejectReturnT>::TagType;
-
- CheckResultType(promise, CheckResultTagType());
+ RejectStorage>::
+ Run(std::move(*static_cast<RejectOnceCallback*>(reject_callback)),
+ prerequisite, promise);
}
static void ExecuteCatchInternal(AbstractPromise* prerequisite,
AbstractPromise* promise,
- ThenAndCatchExecutorCommon* common,
+ CallbackBase* reject_callback,
std::false_type can_reject) {
// |prerequisite| can't reject so don't generate dead code.
}
- static void CheckResultType(AbstractPromise* promise, CouldResolveOrReject) {
- if (promise->IsResolvedWithPromise() ||
- promise->value().type() == TypeId::From<ResolveStorage>()) {
- promise->OnResolved();
- } else {
- DCHECK_EQ(promise->value().type(), TypeId::From<RejectStorage>())
- << " See " << promise->from_here().ToString();
- promise->OnRejected();
- }
- }
-
- static void CheckResultType(AbstractPromise* promise, CanOnlyResolve) {
- promise->OnResolved();
- }
-
- static void CheckResultType(AbstractPromise* promise, CanOnlyReject) {
- promise->OnRejected();
- }
-
ThenAndCatchExecutorCommon common_;
};