[webkit-changes] [WebKit/WebKit] 4b0374: [LBSE] Add transform related tests from LBSE downs...

Nikolas Zimmermann noreply at github.com
Tue Nov 22 13:10:55 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 4b037413854dfa4e198e32cf46e9a653bbf67724
      https://github.com/WebKit/WebKit/commit/4b037413854dfa4e198e32cf46e9a653bbf67724
  Author: Nikolas Zimmermann <nzimmermann at igalia.com>
  Date:   2022-11-22 (Tue, 22 Nov 2022)

  Changed paths:
    M LayoutTests/platform/glib/TestExpectations
    M LayoutTests/platform/ios-wk2/TestExpectations
    M LayoutTests/platform/mac-ventura-wk2-lbse-text/TestExpectations
    M LayoutTests/platform/mac/TestExpectations
    M LayoutTests/platform/win/TestExpectations
    A LayoutTests/svg/custom/circle-move-invalidation-small-viewBox-expected.svg
    A LayoutTests/svg/custom/circle-move-invalidation-small-viewBox.svg
    A LayoutTests/svg/transforms/layout-tiny-elements-expected.svg
    A LayoutTests/svg/transforms/layout-tiny-elements-in-scaled-group-expected.svg
    A LayoutTests/svg/transforms/layout-tiny-elements-in-scaled-group.svg
    A LayoutTests/svg/transforms/layout-tiny-elements.svg
    A LayoutTests/svg/transforms/nested-containers-expected.svg
    A LayoutTests/svg/transforms/nested-containers.svg
    A LayoutTests/svg/transforms/nested-transforms-rotation-origin-expected.svg
    A LayoutTests/svg/transforms/nested-transforms-rotation-origin-with-viewBox-expected.svg
    A LayoutTests/svg/transforms/nested-transforms-rotation-origin-with-viewBox.svg
    A LayoutTests/svg/transforms/nested-transforms-rotation-origin.svg
    A LayoutTests/svg/transforms/rotation-origin-in-small-units-expected.svg
    A LayoutTests/svg/transforms/rotation-origin-in-small-units.svg
    A LayoutTests/svg/transforms/rotation-tiny-element-expected.svg
    A LayoutTests/svg/transforms/rotation-tiny-element-in-group-expected.svg
    A LayoutTests/svg/transforms/rotation-tiny-element-in-group.svg
    A LayoutTests/svg/transforms/rotation-tiny-element.svg
    A LayoutTests/svg/transforms/transform-origin-and-box-expected.svg
    A LayoutTests/svg/transforms/transform-origin-and-box-getCTM-expected.txt
    A LayoutTests/svg/transforms/transform-origin-and-box-getCTM.html
    A LayoutTests/svg/transforms/transform-origin-and-box.svg
    A LayoutTests/svg/transforms/transformed-child-in-container-expected.svg
    A LayoutTests/svg/transforms/transformed-child-in-container-small-units-expected.svg
    A LayoutTests/svg/transforms/transformed-child-in-container-small-units.svg
    A LayoutTests/svg/transforms/transformed-child-in-container.svg
    A LayoutTests/svg/transforms/transformed-container-expected.svg
    A LayoutTests/svg/transforms/transformed-container-small-units-expected.svg
    A LayoutTests/svg/transforms/transformed-container-small-units.svg
    A LayoutTests/svg/transforms/transformed-container.svg
    A LayoutTests/svg/transforms/translation-tiny-element-expected.svg
    A LayoutTests/svg/transforms/translation-tiny-element.svg

  Log Message:
  -----------
  [LBSE] Add transform related tests from LBSE downstream
https://bugs.webkit.org/show_bug.cgi?id=247668

Reviewed by Rob Buis.

Add more tests that were written in the past years and haven't
been upstreamed yet. They mostly cover laying out objects with tiny
dimensions, to assure LBSE renderers these kind of documents properly.
In fact it improves over the legacy engine, which had issues with these
kind of documents (see discussion of test results below).

svg/transforms/transform-origin-and-box-getCTM.html deserves to be a
WPT test, since currently all browser deviate. To my understanding
LBSE handles all combinations correctly, whereas the legacy engine
performed worst before.

Test discussion:

- svg/custom/circle-move-invalidation-small-viewBox.svg
  1) Purpose
  Copy from circle-move-invalidation.svg, but with a user coordinate system
  that is two orders of magnitudes smaller -- verify repainting works fine.

  2) Results
  Works fine across FF/Chrome/SafariLegacy/SafariLBSE.
  (Used to have a LBSE-only regression, that's why the test got added)

- svg/transforms/layout-tiny-elements-in-scaled-group.svg
  1) Purpose
  Verifies that using small numbers for e.g. rect dimensions works as expected.
  The test uses four rectangles, with a width/height of 0.0015 - which is an order
  of magnitude smaller than the LayoutUnit epsilon (~1/64 ~ 0.015625), enclosed
  by a group that scales the content by a factor 10000.

  2) Results
    o FF: Layout/rendering is broken - the blue rect covers the whole viewport.
    o Chrome: Works as expected.
    o SafariLegacy: Empty document, nothing rendered.
    o SafariLBSE: Works as expected.

- svg/transforms/layout-tiny-elements.svg, and
  svg/transforms/rotation-tiny-element.svg
  1) Purpose
  Same as layout-tiny-elements-in-scaled-group.svg, however not enclosing the
  rectangles in a scaled group, but transforming the rects themselves.

  2) Results
  Works fine across Chrome/SafariLegacy/SafariLBSE. FF shows the same
  broken behavior as for layout-tiny-elements-in-scaled-group.svg

- svg/transforms/nested-containers.svg, and
  svg/transforms/nested-transforms-rotation-origin-with-viewBox.svg, and
  svg/transforms/nested-transforms-rotation-origin.svg
  1) Purpose
  Basic reftests to check nesting containers with scale/rotation/translation works as intended.

  2) Results
  Works fine across FF/Chrome/SafariLegacy/SafariLBSE.

- svg/transforms/rotation-origin-in-small-units.svg
  1) Purpose
  Testing small units as rotation origins in transform attributes.

  2) Results
    o FF: Layout/rendering is broken - tilted, parallel red/yellow stripes + large blue rect appear.
    o Chrome: Works as expected.
    o SafariLegacy: Empty document, nothing rendered.
    o SafariLBSE: Works as expected.

- svg/transforms/rotation-tiny-element-in-group.svg,
  svg/transforms/translation-tiny-element.svg

  1) Purpose
  Similar to rotation-tiny-element.svg (however the rotation is applied on an enclosing container).

  2) Results
    o FF: Layout/rendering is broken - red rectangle covers the whole viewport (however at right origin, and rotated as expected for the rotation-* test).
    o Chrome: Works as expected.
    o SafariLegacy: Empty document, nothing rendered.
    o SafariLBSE: Works as expected.

- svg/transforms/transform-origin-and-box-getCTM.html, and
  svg/transforms/transform-origin-and-box.svg
  1) Purpose
  transform-origin-and-box.svg checks various transform-box / transform-origin permutations, combined with transform
  defined as SVG transform attribute. The *getCTM.html then queries the SVG JS exposed geometry (getCTM/getBBox/etc.).

  2) Results
  transform-origin-and-box.svg works fine.
  transform-origin-and-box-getCTM.html highlights a number of cross-browser differences:

    o FF: Fails getCTM() / getScreenCTM() (+ getAbsoluteBBoxById()) tests for rect7 / rect8 / rect9.
    o Chrome: Works as expected.
    o SafariLegacy: Fails getCTM() / getScreenCTM() (+ getAbsoluteBBoxById()) for rect3 / rect4 / rect5 / rect6 / rect9.
    o SafariLBSE: Fails all tests -- getCTM is currently not implemented in a LBSE-aware way (patch is ready to fix that -- then we'll pass all tests!)

- svg/transforms/transformed-child-in-container.svg, and
  svg/transforms/transformed-child-in-container-small-units.svg, and
  svg/transforms/transformed-container.svg, and
  svg/transforms/transformed-container-small-units.svg
  1) Purpose
  Basic reftests to check nesting transformed and untransformed containers works fine.
  Used for original LBSE bootstrapping process.

  2) Results:
  Works fine across FF/Chrome/SafariLegacy/SafariLBSE.

No change in functionality, only adding new tests.

* LayoutTests/platform/glib/TestExpectations:
* LayoutTests/platform/ios-wk2/TestExpectations:
* LayoutTests/platform/mac-ventura-wk2-lbse-text/TestExpectations:
* LayoutTests/platform/mac-wk2/TestExpectations:
* LayoutTests/platform/win/TestExpectations:
* LayoutTests/svg/custom/circle-move-invalidation-small-viewBox-expected.svg: Added.
* LayoutTests/svg/custom/circle-move-invalidation-small-viewBox.svg: Added.
* LayoutTests/svg/transforms/layout-tiny-elements-expected.svg: Added.
* LayoutTests/svg/transforms/layout-tiny-elements-in-scaled-group-expected.svg: Added.
* LayoutTests/svg/transforms/layout-tiny-elements-in-scaled-group.svg: Added.
* LayoutTests/svg/transforms/layout-tiny-elements.svg: Added.
* LayoutTests/svg/transforms/nested-containers-expected.svg: Added.
* LayoutTests/svg/transforms/nested-containers.svg: Added.
* LayoutTests/svg/transforms/nested-transforms-rotation-origin-expected.svg: Added.
* LayoutTests/svg/transforms/nested-transforms-rotation-origin-with-viewBox-expected.svg: Added.
* LayoutTests/svg/transforms/nested-transforms-rotation-origin-with-viewBox.svg: Added.
* LayoutTests/svg/transforms/nested-transforms-rotation-origin.svg: Added.
* LayoutTests/svg/transforms/rotation-origin-in-small-units-expected.svg: Added.
* LayoutTests/svg/transforms/rotation-origin-in-small-units.svg: Added.
* LayoutTests/svg/transforms/rotation-tiny-element-expected.svg: Added.
* LayoutTests/svg/transforms/rotation-tiny-element-in-group-expected.svg: Added.
* LayoutTests/svg/transforms/rotation-tiny-element-in-group.svg: Added.
* LayoutTests/svg/transforms/rotation-tiny-element.svg: Added.
* LayoutTests/svg/transforms/transform-origin-and-box-expected.svg: Added.
* LayoutTests/svg/transforms/transform-origin-and-box-getCTM-expected.txt: Added.
* LayoutTests/svg/transforms/transform-origin-and-box-getCTM.html: Added.
* LayoutTests/svg/transforms/transform-origin-and-box.svg: Added.
* LayoutTests/svg/transforms/transformed-child-in-container-expected.svg: Added.
* LayoutTests/svg/transforms/transformed-child-in-container-small-units-expected.svg: Added.
* LayoutTests/svg/transforms/transformed-child-in-container-small-units.svg: Added.
* LayoutTests/svg/transforms/transformed-child-in-container.svg: Added.
* LayoutTests/svg/transforms/transformed-container-expected.svg: Added.
* LayoutTests/svg/transforms/transformed-container-small-units-expected.svg: Added.
* LayoutTests/svg/transforms/transformed-container-small-units.svg: Added.
* LayoutTests/svg/transforms/transformed-container.svg: Added.
* LayoutTests/svg/transforms/translation-tiny-element-expected.svg: Added.
* LayoutTests/svg/transforms/translation-tiny-element.svg: Added.

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




More information about the webkit-changes mailing list