Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 8165e091f4df59390169d58b88c9f06ed93591ae
      
https://github.com/WebKit/WebKit/commit/8165e091f4df59390169d58b88c9f06ed93591ae
  Author: Simon Fraser <simon.fra...@apple.com>
  Date:   2023-03-09 (Thu, 09 Mar 2023)

  Changed paths:
    A 
LayoutTests/fast/scrolling/mac/event-region-prevent-default-with-sublayer-expected.txt
    A 
LayoutTests/fast/scrolling/mac/event-region-prevent-default-with-sublayer.html
    M Source/WebCore/dom/Document.cpp
    M Source/WebCore/rendering/RenderBlock.cpp
    M Source/WebCore/style/StyleAdjuster.cpp
    M Source/WebCore/style/StyleAdjuster.h
    M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm

  Log Message:
  -----------
  [UI-side compositing] Scrolling over the video causes jumpiness after opening 
the profile menu on YouTube.com
https://bugs.webkit.org/show_bug.cgi?id=253522
rdar://104072756

Reviewed by Antti Koivisto.

The addition of an active wheel event handler on the window or document would 
fail to correctly update
the eventListenerRegionTypes for all elements in the document. This resulted in 
off-main-thread hit-testing
for scrolling incorrectly assuming that it could do async scrolls, leading to 
scroll stutter in some
scenarios.

Invalidation after event listener changes on most DOM nodes behaved correctly 
by virtue of inherited property
handling. But event listeners on the window or document are represented by the 
root style (set on RenderView)
and this only gets updated when we do a full style rebuild.

So fix Document::invalidateEventListenerRegions() to trigger a full style 
rebuild if updating
the root style changes the event listener regions types.

* 
LayoutTests/fast/scrolling/mac/event-region-prevent-default-with-sublayer-expected.txt:
 Added.
* 
LayoutTests/fast/scrolling/mac/event-region-prevent-default-with-sublayer.html: 
Added.
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::invalidateEventListenerRegions):
* Source/WebCore/rendering/RenderBlock.cpp:
(WebCore::RenderBlock::paintObject): Improve logging.
* Source/WebCore/style/StyleAdjuster.cpp:
(WebCore::Style::Adjuster::adjustEventListenerRegionTypesForRootStyle):
* Source/WebCore/style/StyleAdjuster.h:
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
(WebKit::dumpChangedLayers): Log event regions.

Canonical link: https://commits.webkit.org/261439@main


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to