Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: d94b209da5dbab0b2e45adbf8bda39ec3a5d4b31
https://github.com/WebKit/WebKit/commit/d94b209da5dbab0b2e45adbf8bda39ec3a5d4b31
Author: Chris Dumez <[email protected]>
Date: 2022-09-22 (Thu, 22 Sep 2022)
Changed paths:
M LayoutTests/TestExpectations
M
LayoutTests/http/wpt/webauthn/public-key-credential-create-failure.https-expected.txt
M
LayoutTests/http/wpt/webauthn/public-key-credential-get-failure.https-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/tasks.window-expected.txt
M
LayoutTests/platform/glib/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-request-resources.https-expected.txt
M Source/WebCore/bindings/js/JSExecState.cpp
M Source/WebCore/dom/Document.cpp
M Source/WebCore/dom/EmptyScriptExecutionContext.h
M Source/WebCore/dom/EventLoop.cpp
M Source/WebCore/dom/EventLoop.h
M Source/WebCore/dom/Microtasks.cpp
M Source/WebCore/dom/Microtasks.h
M Source/WebCore/dom/ScriptExecutionContext.h
M Source/WebCore/dom/WindowEventLoop.cpp
M Source/WebCore/workers/WorkerEventLoop.cpp
Log Message:
-----------
Performing a micro tasks checkpoint should notify about rejected promises
https://bugs.webkit.org/show_bug.cgi?id=245454
Reviewed by Darin Adler and Ryosuke Niwa.
Performing a micro tasks checkpoint should notify about rejected promises:
-
https://html.spec.whatwg.org/multipage/webappapis.html#event-loop-processing-model:notify-about-rejected-promises
(Step 4)
Previously, we would notify about rejected promises in
JSExecState::didLeaveScriptContext(),
after performing the microtasks checkpoint. However, there were 2 issues with
that:
1. Per the specification, we're supposed to notify about rejected promises
every time we
perform a microtasks checkpoint. However,
JSExecState::didLeaveScriptContext() is not
the only place to perform a microtasks checkpoint. As a result, it makes
more sense
to do the notification as part of the checkpoint steps, like in the spec.
2. We were doing the "notify about rejected promises" step only for the context
we were
leaving. However, the specification says to do it in every context
associated with this
event loop.
This patch addresses both issues and helps us pass one more WPT test. Note that
this test
was already passing in both Chrome and Firefox.
* LayoutTests/TestExpectations:
*
LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/tasks.window-expected.txt:
* Source/WebCore/bindings/js/JSExecState.cpp:
(WebCore::JSExecState::didLeaveScriptContext):
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::~Document):
(WebCore::Document::windowEventLoop):
* Source/WebCore/dom/EmptyScriptExecutionContext.h:
* Source/WebCore/dom/EventLoop.cpp:
(WebCore::EventLoop::forEachAssociatedContext):
(WebCore::EventLoop::addAssociatedContext):
(WebCore::EventLoop::removeAssociatedContext):
* Source/WebCore/dom/EventLoop.h:
* Source/WebCore/dom/Microtasks.cpp:
(WebCore::MicrotaskQueue::MicrotaskQueue):
(WebCore::MicrotaskQueue::performMicrotaskCheckpoint):
* Source/WebCore/dom/Microtasks.h:
* Source/WebCore/dom/ScriptExecutionContext.h:
(WebCore::ScriptExecutionContext::rejectedPromiseTracker):
* Source/WebCore/dom/WindowEventLoop.cpp:
(WebCore::WindowEventLoop::microtaskQueue):
* Source/WebCore/workers/WorkerEventLoop.cpp:
(WebCore::WorkerEventLoop::WorkerEventLoop):
(WebCore::WorkerEventLoop::microtaskQueue):
Canonical link: https://commits.webkit.org/254766@main
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes