Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 55e9a6904b90968a17928515bfc4058c721e4774
      
https://github.com/WebKit/WebKit/commit/55e9a6904b90968a17928515bfc4058c721e4774
  Author: Aditya Keerthi <akeer...@apple.com>
  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
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to