Commit 5f505a81 authored by Liquan (Max) Gu's avatar Liquan (Max) Gu Committed by Commit Bot

Avoid JavaScript GC when pending promise resolution

JavaScript shouldn't garbage-collect PaymentRequest when it still has
promises in flight. Initially, only accept_resolver_ (for show),
retry_resolver_ and complete_resolver_ blocks the GC, this patch adds
the following resolvers to the list:
* has_enrolled_instrument_resolver_
* can_make_payment_resolver_
* abort_resolver_

Bug: 1131215

Change-Id: I4d144ddca45749a596cd96b88a6891643da8860b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2426245
Commit-Queue: Liquan (Max) Gu <maxlg@chromium.org>
Reviewed-by: default avatarRouslan Solomakhin <rouslan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#809975}
parent 13c1eb45
......@@ -926,7 +926,9 @@ ScriptPromise PaymentRequest::hasEnrolledInstrument(
}
bool PaymentRequest::HasPendingActivity() const {
return GetPendingAcceptPromiseResolver() || complete_resolver_;
return accept_resolver_ || retry_resolver_ || complete_resolver_ ||
has_enrolled_instrument_resolver_ || can_make_payment_resolver_ ||
abort_resolver_;
}
const AtomicString& PaymentRequest::InterfaceName() const {
......
......@@ -168,7 +168,8 @@ class MODULES_EXPORT PaymentRequest final
String shipping_option_;
String shipping_type_;
HashSet<String> method_names_;
Member<ScriptPromiseResolver> accept_resolver_;
Member<ScriptPromiseResolver>
accept_resolver_; // the resolver for the show() promise.
Member<ScriptPromiseResolver> complete_resolver_;
Member<ScriptPromiseResolver> retry_resolver_;
Member<ScriptPromiseResolver> abort_resolver_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment