Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 4016aa647924537a988fe198b589aceeb71add23
https://github.com/WebKit/WebKit/commit/4016aa647924537a988fe198b589aceeb71add23
Author: Chris Dumez <[email protected]>
Date: 2024-12-14 (Sat, 14 Dec 2024)
Changed paths:
M
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/intercept-handler-throws-expected.txt
M Source/WebCore/page/NavigateEvent.cpp
M Source/WebCore/page/Navigation.cpp
M Source/WebCore/page/Navigation.h
M Source/WebCore/page/NavigationHistoryEntry.cpp
M Source/WebCore/page/NavigationHistoryEntry.h
M Source/WebCore/page/NavigationHistoryEntry.idl
Log Message:
-----------
[Navigation API] NavigationHistoryEntry JS wrapper is not kept alive until
the dispose event is fired
https://bugs.webkit.org/show_bug.cgi?id=284663
Reviewed by Ryosuke Niwa.
When a NavigationHistoryEntry object gets removed from a Navigation object, a
`dispose` event is
dispatched on the NavigationHistoryEntry. However, NavigationHistoryEntry was
not an ActiveDOMObject
and therefore nothing was keeping its JS wrapper alive alive as long as a
`dispose` event could get
dispatched. This would lead to flaky crashes in the tests, when dispatching the
event.
To address the issue, make NavigationHistoryEntry an ActiveDOMObject and
provide an implementation
for virtualHasPendingActivity() so that its JS wrapper is kept alive as long as
we haven't dispatched
the `dispose` event on it.
Also add a couple of missing JSLocks to address debug assertions I was seeing
on the tests locally.
*
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/intercept-handler-throws-expected.txt:
Rebaseline the test. While the output looks a bit worse, I do not believe this
is a regression from my
change but rather a timing change on a flaky test.
* Source/WebCore/page/NavigateEvent.cpp:
(WebCore::NavigateEvent::NavigateEvent):
* Source/WebCore/page/Navigation.cpp:
(WebCore::Navigation::initializeForNewWindow):
(WebCore::Navigation::updateForActivation):
(WebCore::Navigation::createForPageswapEvent):
(WebCore::createDOMPromise):
(WebCore::Navigation::updateForNavigation):
(WebCore::Navigation::updateForReactivation):
* Source/WebCore/page/Navigation.h:
* Source/WebCore/page/NavigationHistoryEntry.cpp:
(WebCore::NavigationHistoryEntry::NavigationHistoryEntry):
(WebCore::NavigationHistoryEntry::create):
(WebCore::NavigationHistoryEntry::eventListenersDidChange):
(WebCore::NavigationHistoryEntry::virtualHasPendingActivity const):
(WebCore::NavigationHistoryEntry::dispatchDisposeEvent):
* Source/WebCore/page/NavigationHistoryEntry.h:
* Source/WebCore/page/NavigationHistoryEntry.idl:
Canonical link: https://commits.webkit.org/287839@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes