[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