[webkit-changes] [WebKit/WebKit] 1ffe12: Do not check for clean subtree when the entire tre...

Alan Baradlay noreply at github.com
Mon Jan 15 07:09:18 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 1ffe12c923b950248155f422002151988234600d
      https://github.com/WebKit/WebKit/commit/1ffe12c923b950248155f422002151988234600d
  Author: Alan Baradlay <zalan at apple.com>
  Date:   2024-01-15 (Mon, 15 Jan 2024)

  Changed paths:
    M LayoutTests/fast/repaint/content-inside-subpixel-positioned-iframe.html
    M LayoutTests/fast/repaint/hidpi-content-inside-iframe-leaves-trails.html
    M Source/WebCore/dom/Document.cpp

  Log Message:
  -----------
  Do not check for clean subtree when the entire tree is clean
https://bugs.webkit.org/show_bug.cgi?id=267502

Reviewed by Antti Koivisto.

* LayoutTests/fast/repaint/content-inside-subpixel-positioned-iframe.html:
* LayoutTests/fast/repaint/hidpi-content-inside-iframe-leaves-trails.html:
Geometry query on the _in-flow_ body with _out-of-flow_ descendant does not trigger layout.

These 2 tests have the following structure;
out-of-flow box _inside_ an iframe and JS changes the position of these out-of-flow boxes.

updateLayoutIfDimensionsOutOfDate incorrectly forces layout on the iframe's content through recursing into the parent document (where the iframe lives).
When we find the (otherwise clean) iframe in the parent document we bail out of this optimized codepath (as we can only handle block boxes) and
return to the child document saying it needs layout. This is a bug in this optimized codepath as a non-optimized version of it would not
force layout on the iframe's render view when querying for geometry on an _in-flow_ box with _out-of-flow_ descendant.

These repaint tests pass fine as layout happens through the normal, non-sync operation, but they expect sync results (hence the change).

* Source/WebCore/dom/Document.cpp:
(WebCore::Document::updateLayoutIfDimensionsOutOfDate):

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




More information about the webkit-changes mailing list