Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 55e9a6904b90968a17928515bfc4058c721e4774
https://github.com/WebKit/WebKit/commit/55e9a6904b90968a17928515bfc4058c721e4774
Author: Aditya Keerthi <[email protected]>
Date: 2023-03-06 (Mon, 06 Mar 2023)
Changed paths:
M Source/WebCore/dom/DocumentMarkerController.cpp
M Source/WebCore/dom/DocumentMarkerController.h
Log Message:
-----------
`DocumentMarkerController::possiblyHasMarkers` can be incorrect following
animated marker removal
https://bugs.webkit.org/show_bug.cgi?id=253450
rdar://106297392
Reviewed by Wenson Hsieh.
260842@main added a filter function to `DocumentMarkerController::removeMarkers`
to support the removal of animated markers once their animation had finished.
However, this method unconditionally clears the input marker types from
`m_possiblyExistingMarkerTypes`. Following the introduction of a filter
function,
it is no longer true that a marker matching the marker type passed into
`removeMarkers` is always removed.
To fix, keep track of which marker types were preserved by the filter function,
and exclude them from the set of types to remove from
`m_possiblyExistingMarkerTypes`.
This issue is observable via a debug assertion in
`DocumentMarkerController::hasMarkers`.
* Source/WebCore/dom/DocumentMarkerController.cpp:
(WebCore::DocumentMarkerController::removeMarkers):
Maintain a set of completely removed marker types as the marker map is
iterated over. At the end, only remove marker types that were not preserved from
`m_possiblyExistingMarkerTypes`.
(WebCore::DocumentMarkerController::removeMarkersFromList):
Return the set of completely removed marker types.
* Source/WebCore/dom/DocumentMarkerController.h:
Canonical link: https://commits.webkit.org/261291@main
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes