[webkit-changes] [WebKit/WebKit] 8165e0: [UI-side compositing] Scrolling over the video cau...
Simon Fraser
noreply at github.com
Thu Mar 9 08:47:37 PST 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 8165e091f4df59390169d58b88c9f06ed93591ae
https://github.com/WebKit/WebKit/commit/8165e091f4df59390169d58b88c9f06ed93591ae
Author: Simon Fraser <simon.fraser at 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
More information about the webkit-changes
mailing list