[webkit-reviews] review granted: [Bug 49220] REGRESSION: transform matrix applied too many times when nested : [Attachment 75709] Patch (fix tabs in ChangeLog)

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon Dec 6 11:38:55 PST 2010


Simon Fraser (smfr) <simon.fraser at apple.com> has granted Dave Hyatt
<hyatt at apple.com>'s request for review:
Bug 49220: REGRESSION: transform matrix applied too many times when nested
https://bugs.webkit.org/show_bug.cgi?id=49220

Attachment 75709: Patch (fix tabs in ChangeLog)
https://bugs.webkit.org/attachment.cgi?id=75709&action=review

------- Additional Comments from Simon Fraser (smfr) <simon.fraser at apple.com>
View in context: https://bugs.webkit.org/attachment.cgi?id=75709&action=review

> WebCore/ChangeLog:82
> +	   Blocks now have a computeOverflow function called at the end that
adds in all the types of overflow.  The addOverflowFromChildren

Called at the end of what?

> WebCore/ChangeLog:99
> +	   (WebCore::RenderBlock::addOverhangingFloats):
> +	   The propagation of float overflow has changed substantially.  The
basic rules are:
> +	       (1) The float must be in our floating objects list to contribute
to overflow.
> +	       (2) The float must be a descendant to contribute to overflow.
> +	       (3) The block must have the outermost list that contains the
float, or it has a self-painting layer and
> +		   so the float needs to be included in its overflow.

Are these covered by layout tests?

> WebCore/rendering/RenderTreeAsText.cpp:621
> +    // FIXME: Apply overflow to the root layer to not break every test. 
Complete hack.	Sigh.

Maybe file a bug on this and reference it in the comment?

> LayoutTests/ChangeLog:33
> +	   Fix for https://bugs.webkit.org/show_bug.cgi?id=49220
<<rdar://problem/8644849>, REGRESSION: transforms now
> +	   O(n^3) from pathological behavior in lowestPosition,
rightmostPosition, leftmostPosition and topmostPosition.
> +
> +	   This patch throws out the lowest/rightmost/leftmost/topmostPosition
functions and re-architects layout overflow
> +	   in the engine to cache all the information required to properly
handle scrolling.
> +
> +	   In the old code, there were two types of overflow: layout overflow
and visual overflow.  The former could
> +	   affect scrolling and the latter could not.  The distinction was
largely meaningless, since layout overflow
> +	   wasn't actually used to determine scroll width or scroll height.  It
didn't propagate across self-painting layer
> +	   boundaries either.  In the old code, the term visible overflow meant
the union of the layout overflow and
> +	   visual overflow rects.
> +
> +	   In the new code, the two types of overflow remain, but the
distinction between the two is now clear.  Visual overflow
> +	   is used purely for painting and hit testing checks and layout
overflow is used specifically for scrolling.  It has
> +	   been expanded to propagate across self-painting layers, to factor in
relative positioning and transforms, and to
> +	   work with writing modes.
> +
> +	   In order to minimize layout test changes, layers no longer
incorporate right/bottom overflow into their width/height members.
> +	   Doing so uncovered two bugs where left/top overflow was ignored
(proof that even having layer dimensions is harmful).
> +	   A render tree dump hack has been put into the code to keep this
overflow dumping for the RenderView's layer, since otherwise
> +	   a huge number of tests would change.
> +
> +	   Added fast/overflow/overflow-rtl-vertical.html to test vertical
writing-mode overflow.	Existing tests cover the rest.
> +
> +	   * page/FrameView.cpp:
> +	   (WebCore::FrameView::adjustViewSize):
> +	   (WebCore::FrameView::forceLayoutForPagination):
> +	   Changed to use RenderView's docTop/Left/Width/Height accessors,
which simply grab the overflow and properly flip it
> +	   to account for writing modes.

You can just describe the LayoutTests changes here.


More information about the webkit-reviews mailing list