Skip to content
Permalink
Browse files
[LBSE] Unify all SVG geometry/transform computations with CSS
https://bugs.webkit.org/show_bug.cgi?id=247672

Reviewed by Rob Buis.

Consistently use SVGLayerTranformComputation whenever transformations
need to be computed in the SVG render tree, utilizing 'TransformState'
and 'mapLocalToContainer', which were previously extended for SVGs
needs (TransformState::TransformMatrixTracking).

This assures that the very same transformation matrices / code paths
are used for the following items:

- Query SVG CTM (e.g. from JS), via SVGLocatable interface
  getCTM() / getScreenCTM() / (getTransformToElement()).

- Painting layers for SVG renderers
  RenderLayer::paintLayerByApplyingTransform() uses the 4x4 3D aware
  m_transform matrix previously computed in RenderLayer::updateTransform().

- DOM geometry API (getBoundingClientRect / getClientRect / etc.)
...

Covered by existing tests, fixes a bunch of tests in LBSE related to
getCTM & friends. One test - svg/zoom/page/zoom-zoom-coords.xhtml was
wrong in all browsers -- fix that, now legacy fails it and LBSE passes
as all others (no change in behavior for legacy, only the test changed).

* LayoutTests/platform/ios-wk2/svg/custom/getClientRects-expected.txt:
* LayoutTests/platform/mac-ventura-wk2-lbse-text/TestExpectations:
* LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/W3C-SVG-1.1/coords-viewattr-01-b-expected.txt:
* LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/custom/container-opacity-clip-viewBox-expected.png: Added.
* LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/custom/getTransformToElement-expected.txt: Added.
* LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/custom/getscreenctm-in-mixed-content-expected.txt: Added.
* LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/custom/getscreenctm-in-scrollable-div-area-expected.txt: Added.
* LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/custom/getscreenctm-in-scrollable-div-area-nested-expected.txt: Added.
* LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/custom/getscreenctm-in-scrollable-svg-area-expected.txt: Added.
* LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/custom/text-ctm-expected.txt: Added.
* LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/text/selection-doubleclick-expected.txt:
* LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/text/text-rescale-expected.txt:
* LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/zoom/page/zoom-coords-viewattr-01-b-expected.txt:
* LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/zoom/page/zoom-zoom-coords-expected.txt: Copied from LayoutTests/platform/mac/svg/zoom/page/zoom-zoom-coords-expected.txt.
* LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/zoom/text/zoom-coords-viewattr-01-b-expected.txt:
* LayoutTests/platform/mac/svg/zoom/page/zoom-zoom-coords-expected.txt:
* LayoutTests/svg/custom/getClientRects-expected.txt:
* LayoutTests/svg/zoom/page/zoom-zoom-coords.xhtml:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/dom/Element.cpp:
(WebCore::shouldObtainBoundsFromSVGModel):
(WebCore::shouldObtainBoundsFromBoxModel):
(WebCore::Element::boundsInRootViewSpace):
(WebCore::Element::absoluteEventBounds):
(WebCore::Element::getClientRects):
(WebCore::Element::boundingAbsoluteRectWithoutLayout const):
* Source/WebCore/rendering/RenderLayerModelObject.cpp:
(WebCore::RenderLayerModelObject::mapLocalToSVGContainer const):
(WebCore::RenderLayerModelObject::applySVGTransform const):
* Source/WebCore/rendering/RenderLayerModelObject.h:
* Source/WebCore/rendering/svg/RenderSVGBlock.cpp:
(WebCore::RenderSVGBlock::absoluteRects const):
(WebCore::RenderSVGBlock::absoluteQuads const):
(WebCore::RenderSVGBlock::mapLocalToContainer const):
(WebCore::RenderSVGBlock::offsetFromContainer const):
* Source/WebCore/rendering/svg/RenderSVGModelObject.cpp:
(WebCore::RenderSVGModelObject::absoluteRects const):
(WebCore::RenderSVGModelObject::absoluteQuads const):
* Source/WebCore/rendering/svg/RenderSVGRoot.cpp:
(WebCore::RenderSVGRoot::mapLocalToContainer const):
(WebCore::RenderSVGRoot::absoluteQuads const):
* Source/WebCore/rendering/svg/SVGBoundingBoxComputation.cpp:
(WebCore::SVGBoundingBoxComputation::handleRootOrContainer const):
* Source/WebCore/rendering/svg/SVGLayerTransformComputation.h:
(WebCore::SVGLayerTransformComputation::computeAccumulatedTransform const):
(WebCore::SVGLayerTransformComputation::calculateScreenFontSizeScalingFactor const):
* Source/WebCore/svg/SVGLocatable.cpp:
(WebCore::SVGLocatable::computeCTM):
* Source/WebCore/svg/SVGSVGElement.cpp:
(WebCore::SVGSVGElement::localCoordinateSpaceTransform const):
* Source/WebCore/svg/SVGUseElement.cpp:
(WebCore::SVGUseElement::toClipPath):

Canonical link: https://commits.webkit.org/256862@main
  • Loading branch information
nikolaszimmermann committed Nov 19, 2022
1 parent ca1977f commit 5c3443a0ab7a7fdeaeeb20c104da59b55de0e265
Show file tree
Hide file tree
Showing 31 changed files with 524 additions and 202 deletions.
@@ -53,11 +53,11 @@ PASS image1.height.toFixed(2) is "25.00"
PASS image1.right.toFixed(2) is "150.00"
PASS image1.bottom.toFixed(2) is "275.00"
PASS text1.left.toFixed(2) is "100.00"
FAIL text1.top.toFixed(2) should be 282.66. Was 282.58.
PASS text1.width.toFixed(2) is "49.20"
PASS text1.height.toFixed(2) is "6.16"
PASS text1.right.toFixed(2) is "149.20"
FAIL text1.bottom.toFixed(2) should be 288.82. Was 288.73.
FAIL text1.top.toFixed(2) should be 282.95. Was 282.58.
FAIL text1.width.toFixed(2) should be 45.55. Was 49.20.
FAIL text1.height.toFixed(2) should be 5.70. Was 6.16.
FAIL text1.right.toFixed(2) should be 145.55. Was 149.20.
FAIL text1.bottom.toFixed(2) should be 288.64. Was 288.73.

PASS svg2.left.toFixed(2) is "75.00"
PASS svg2.top.toFixed(2) is "100.00"
@@ -78,11 +78,11 @@ PASS image2.height.toFixed(2) is "25.00"
PASS image2.right.toFixed(2) is "225.00"
PASS image2.bottom.toFixed(2) is "125.00"
PASS text2.left.toFixed(2) is "175.00"
FAIL text2.top.toFixed(2) should be 132.66. Was 132.75.
PASS text2.width.toFixed(2) is "47.44"
PASS text2.height.toFixed(2) is "5.94"
PASS text2.right.toFixed(2) is "222.44"
FAIL text2.bottom.toFixed(2) should be 138.60. Was 138.69.
FAIL text2.top.toFixed(2) should be 132.95. Was 132.75.
FAIL text2.width.toFixed(2) should be 45.55. Was 47.44.
FAIL text2.height.toFixed(2) should be 5.70. Was 5.94.
FAIL text2.right.toFixed(2) should be 220.55. Was 222.44.
FAIL text2.bottom.toFixed(2) should be 138.64. Was 138.69.

PASS svg3.left.toFixed(2) is "900.00"
PASS svg3.top.toFixed(2) is "500.00"
@@ -103,11 +103,11 @@ PASS image3.height.toFixed(2) is "50.00"
PASS image3.right.toFixed(2) is "1200.00"
PASS image3.bottom.toFixed(2) is "550.00"
PASS text3.left.toFixed(2) is "1100.00"
FAIL text3.top.toFixed(2) should be 565.33. Was 565.16.
PASS text3.width.toFixed(2) is "98.41"
PASS text3.height.toFixed(2) is "12.31"
PASS text3.right.toFixed(2) is "1198.41"
FAIL text3.bottom.toFixed(2) should be 577.64. Was 577.47.
FAIL text3.top.toFixed(2) should be 565.38. Was 565.16.
FAIL text3.width.toFixed(2) should be 96.16. Was 98.41.
FAIL text3.height.toFixed(2) should be 12.03. Was 12.31.
FAIL text3.right.toFixed(2) should be 1196.16. Was 1198.41.
FAIL text3.bottom.toFixed(2) should be 577.41. Was 577.47.

PASS successfullyParsed is true

@@ -14,10 +14,10 @@ getClientRects on a g:
{ x 0.00 y 105.00 width 260.00 height 110.00 }

getClientRects on a path:
{ x 25.00 y 140.00 width 60.00 height 60.00 }
{ x 30.00 y 145.00 width 50.00 height 50.00 }

getClientRects on text:
{ x 25.00 y 140.00 width 60.00 height 60.00 }
{ x 30.00 y 145.00 width 50.00 height 50.00 }
PASS successfullyParsed is true

TEST COMPLETE
@@ -194,29 +194,6 @@ svg/zoom/page/zoom-img-preserveAspectRatio-support-1.html [ ImageOnlyFailure ]
svg/as-background-image/background-image-preserveaspectRatio-support.html [ ImageOnlyFailure ]
svg/as-image/img-preserveAspectRatio-support-1.html [ ImageOnlyFailure ]

# getBBox() / getBoundingClientRect() / getCTM() / getScreenCTM() / getIntersectionList / etc. return incorrect results
svg/animations/fill-remove-support.html [ Failure ]
svg/custom/getBoundingClientRect.xhtml [ Failure ]
svg/custom/getClientRects.xhtml [ Failure ]
svg/custom/getTransformToElement.svg [ Failure ]
svg/custom/getscreenctm-in-mixed-content.xhtml [ Failure ]
svg/custom/getscreenctm-in-mixed-content2.xhtml [ Failure ]
svg/custom/getscreenctm-in-scrollable-div-area-nested.xhtml [ Failure ]
svg/custom/getscreenctm-in-scrollable-div-area.xhtml [ Failure ]
svg/custom/getscreenctm-in-scrollable-svg-area.xhtml [ Failure ]
svg/custom/intersection-list-clipping.svg [ Failure ]
svg/custom/svgsvgelement-ctm.xhtml [ Failure ]
svg/custom/svgsvgelement-ctm2.xhtml [ Failure ]
svg/custom/svgsvgelement-ctm3.xhtml [ Failure ]
svg/custom/svgsvgelement-ctm4.xhtml [ Failure ]
svg/custom/svgsvgelement-ctm5.xhtml [ Failure ]
svg/custom/text-ctm.svg [ Failure ]
svg/dom/SVGLocatable-getCTM-svg-root.html [ Failure ]
svg/dom/css-transforms.xhtml [ Failure ]
svg/zoom/page/zoom-get-screen-ctm.html [ Failure ]
svg/zoom/page/zoom-getBoundingClientRect.xhtml [ Failure ]
svg/zoom/page/zoom-zoom-coords.xhtml [ Failure ]

# General repainting issue
svg/custom/js-repaint-rect-on-path-with-stroke.svg [ Failure ]

@@ -468,6 +445,7 @@ svg/clip-path/opacity-assertion.svg [ ImageOnlyFailure ]
svg/clip-path/svg-in-html.html [ ImageOnlyFailure ]
svg/clip-path/webkit-clip-path-after.svg [ ImageOnlyFailure ]
svg/clip-path/webkit-clip-path-before.svg [ ImageOnlyFailure ]
svg/custom/intersection-list-clipping.svg [ Failure ]
svg/custom/js-late-clipPath-and-object-creation.svg [ Failure ]
svg/custom/js-late-clipPath-creation.svg [ Failure ]
svg/custom/local-url-reference-clip-path.html [ ImageOnlyFailure ]
@@ -538,14 +516,10 @@ svg/text/select-x-list-with-tspans-1.svg [ Failure ]
svg/text/select-x-list-with-tspans-2.svg [ Failure ]
svg/text/select-x-list-with-tspans-3.svg [ Failure ]
svg/text/select-x-list-with-tspans-4.svg [ Failure ]
svg/text/selection-doubleclick.svg [ ImageOnlyFailure ]

# Transforming inner svg elements has issues
# TODO: Test needs to be adapted (see test), then it will pass with LBSE, but fail legacy -- leaving it as-is for now.
svg/transforms/svgsvgelement-transform.svg [ ImageOnlyFailure ]

# Transform + relative values issues
svg/transforms/percent-transform-values.xhtml [ Failure ]

# Outline / focus-ring support
svg/custom/focus-ring.svg [ Failure ]
svg/custom/rgba-color-outline.svg [ ImageOnlyFailure ]
@@ -555,7 +529,6 @@ svg/text/text-outline-rgba.html [ ImageOnlyFailure ]
svg/hittest/text-multiple-dx-values.svg [ ImageOnlyFailure ]
svg/hittest/text-with-multiple-tspans.svg [ ImageOnlyFailure ]
svg/hittest/text-with-text-path.svg [ ImageOnlyFailure ]
svg/text/text-rescale.html [ ImageOnlyFailure ]
svg/text/scaled-font.svg [ ImageOnlyFailure ]

# Text rendering has issues with CSS 'visibility'
@@ -582,7 +555,6 @@ svg/css/mix-blend-mode-background-root.svg [ ImageOnlyFailure ]
svg/css/mix-blend-mode-opacity-root.svg [ ImageOnlyFailure ]

# SMIL animation not correctly updastes (repainting issue only?)
svg/W3C-SVG-1.1/animate-elem-08-t.svg [ ImageOnlyFailure ]
svg/W3C-SVG-1.1/animate-elem-30-t.svg [ ImageOnlyFailure ]
svg/animations/animateMotion-additive-1.svg [ ImageOnlyFailure ]
svg/animations/animated-string-href.svg [ ImageOnlyFailure ]
@@ -671,4 +643,10 @@ svg/W3C-SVG-1.1/text-intro-03-b.svg [ Pass ]
svg/W3C-SVG-1.1/text-intro-04-t.svg [ Pass ]
svg/W3C-SVG-1.1/text-text-06-t.svg [ Pass ]
svg/resource-invalidation/mask-resource-invalidation.html [ Pass ]
svg/transforms/animated-path-inside-transformed-html.xhtml [ Pass ]
svg/transforms/layout-tiny-elements-in-scaled-group.svg [ Pass ]
svg/transforms/rotation-origin-in-small-units.svg [ Pass ]
svg/transforms/rotation-tiny-element-in-group.svg [ Pass ]
svg/transforms/transformed-child-in-container.svg [ Pass ImageOnlyFailure ]
svg/transforms/transformed-text-fill-gradient.html [ Pass ]
svg/transforms/translation-tiny-element.svg [ Pass ]
@@ -54,13 +54,13 @@ layer at (0,-12.75) size 50x53 backgroundClip at (0,0) size 480x360 clip at (0,0
RenderSVGTransformableContainer {g} at (0,15) size 49.50x52.25
layer at (0.50,0.50) size 50x30
RenderSVGRect {rect} at (0.50,13.25) size 49x29 [stroke={[type=SOLID] [color=#0000FF]}] [x=0.50] [y=0.50] [width=49.00] [height=29.00]
layer at (0,0) size 50x31 backgroundClip at (0,12.75) size 30x27.25 clip at (0,0) size 48.34x40
layer at (0,0) size 50x31 backgroundClip at (0,12.75) size 32.50x27.25 clip at (0,0) size 48.34x40
RenderSVGViewportContainer {svg} at (0,12.75) size 50x30
layer at (0,-12.75) size 50x53 backgroundClip at (0,0) size 480x360 clip at (0,0) size 480x360
RenderSVGTransformableContainer {g} at (0,15) size 49.50x52.25
layer at (0.50,0.50) size 50x30
RenderSVGRect {rect} at (0.50,13.25) size 49x29 [stroke={[type=SOLID] [color=#0000FF]}] [x=0.50] [y=0.50] [width=49.00] [height=29.00]
layer at (0,0) size 50x31 backgroundClip at (0,12.75) size 30x27.25 clip at (0,0) size 30.02x40
layer at (0,0) size 50x31 backgroundClip at (0,12.75) size 30.02x27.25 clip at (0,0) size 30.02x40
RenderSVGViewportContainer {svg} at (0,12.75) size 50x30
layer at (0,-27.75) size 124x88 backgroundClip at (0,0) size 480x360 clip at (0,0) size 480x360
RenderSVGTransformableContainer {g} at (0,0) size 123.89x87.25
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@@ -0,0 +1,16 @@
layer at (0,0) size 800x600
RenderView at (0,0) size 800x600
layer at (0,0) size 800x600
RenderSVGRoot {svg} at (0,0) size 800x600
layer at (0,0) size 800x600
RenderSVGViewportContainer at (0,0) size 800x600
layer at (50,123.50) size 82x35
RenderSVGTransformableContainer {g} at (50,123.50) size 81.67x34
layer at (50,123.50) size 82x34
RenderSVGText {text} at (0,0) size 82x34 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,0) size 82x34
chunk 1 text run 1 at (50.00,150.00) startOffset 0 endOffset 6 width 81.67: "Passed"
layer at (50,50) size 70x30
RenderSVGTransformableContainer {g} at (50,50) size 70x30
layer at (50,50) size 70x30
RenderSVGRect {rect} at (0,0) size 70x30 [x=50.00] [y=50.00] [width=70.00] [height=30.00]
@@ -0,0 +1,24 @@
layer at (0,0) size 800x600
RenderView at (0,0) size 800x600
layer at (0,0) size 800x52
RenderBlock {html} at (0,0) size 800x52
RenderBody {body} at (8,8) size 784x36
RenderText {#text} at (0,0) size 174x18
text run at (0,0) width 174: "This tests the behaviour of "
RenderInline {code} at (0,0) size 220x15
RenderText {#text} at (173,2) size 220x15
text run at (173,2) width 220: "SVGLocatable::getScreenCTM()"
RenderText {#text} at (392,0) size 112x18
text run at (392,0) width 112: " in mixed content"
RenderBR {br} at (503,0) size 1x18
RenderText {#text} at (0,18) size 322x18
text run at (0,18) width 322: "If the test passes you should see a green rectangle."
layer at (30,100) size 400x200
RenderBlock (positioned) {div} at (30,100) size 400x200
RenderText {#text} at (0,0) size 0x0
layer at (30,100) size 400x200
RenderSVGRoot {svg} at (0,0) size 400x200
layer at (30,100) size 400x200
RenderSVGViewportContainer at (0,0) size 400x200
layer at (30,100) size 200x100
RenderSVGRect {rect} at (0,0) size 200x100 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=200.00] [height=100.00]
@@ -0,0 +1,20 @@
layer at (0,0) size 800x600
RenderView at (0,0) size 800x600
layer at (0,0) size 800x550
RenderBlock {html} at (0,0) size 800x550
RenderBody {body} at (0,0) size 800x550
layer at (0,0) size 750x550 clip at (0,0) size 735x535 scrollY 1700 scrollHeight 4010
RenderBlock {div} at (0,0) size 750x550
RenderText {#text} at (0,0) size 0x0
layer at (0,-1700) size 735x4006 backgroundClip at (0,0) size 735x535 clip at (0,0) size 735x535
RenderSVGRoot {svg} at (0,0) size 735x4006
layer at (0,-1700) size 735x4006 backgroundClip at (0,0) size 735x535 clip at (0,0) size 735x535
RenderSVGViewportContainer at (0,0) size 735x4006
layer at (350,250) size 100x100
RenderSVGRect {rect} at (350,1950) size 100x100 [fill={[type=SOLID] [color=#000080] [opacity=0.50]}] [x=350.00] [y=1950.00] [width=100.00] [height=100.00]
layer at (350,250) size 100x100
RenderSVGEllipse {circle} at (350,1950) size 100x100 [fill={[type=SOLID] [color=#F08080]}] [cx=400.00] [cy=2000.00] [r=50.00]
layer at (266.92,386) size 266x18
RenderSVGText {text} at (266,2086) size 268x18 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,0) size 267x18
chunk 1 (middle anchor) text run 1 at (266.93,2100.00) startOffset 0 endOffset 46 width 266.13: "The test passes if the circle sits in the rect"
@@ -0,0 +1,22 @@
layer at (0,0) size 800x600
RenderView at (0,0) size 800x600
layer at (0,0) size 800x550
RenderBlock {html} at (0,0) size 800x550
RenderBody {body} at (0,0) size 800x550
layer at (0,0) size 750x550 clip at (0,0) size 735x535 scrollY 300 scrollHeight 1000
RenderBlock {div} at (0,0) size 750x550
layer at (0,-300) size 725x1000 backgroundClip at (0,0) size 725x535 clip at (0,0) size 710x535 scrollY 1400 scrollHeight 4100
RenderBlock {div} at (0,0) size 725x1000
RenderText {#text} at (0,0) size 0x0
layer at (0,-1700) size 710x4096 backgroundClip at (0,0) size 710x535 clip at (0,0) size 710x535
RenderSVGRoot {svg} at (0,0) size 710x4096
layer at (0,-1700) size 710x4096 backgroundClip at (0,0) size 710x535 clip at (0,0) size 710x535
RenderSVGViewportContainer at (0,0) size 710x4096
layer at (350,250) size 100x100
RenderSVGRect {rect} at (350,1950) size 100x100 [fill={[type=SOLID] [color=#000080] [opacity=0.50]}] [x=350.00] [y=1950.00] [width=100.00] [height=100.00]
layer at (350,250) size 100x100
RenderSVGEllipse {circle} at (350,1950) size 100x100 [fill={[type=SOLID] [color=#F08080]}] [cx=400.00] [cy=2000.00] [r=50.00]
layer at (266.92,386) size 266x18
RenderSVGText {text} at (266,2086) size 268x18 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,0) size 267x18
chunk 1 (middle anchor) text run 1 at (266.93,2100.00) startOffset 0 endOffset 46 width 266.13: "The test passes if the circle sits in the rect"
@@ -0,0 +1,20 @@
layer at (0,0) size 785x4004
RenderView at (0,0) size 785x600
layer at (0,0) size 785x4004
RenderBlock {html} at (0,0) size 785x4004
RenderBody {body} at (0,0) size 785x4004
RenderText {#text} at (0,0) size 0x0
RenderText {#text} at (0,0) size 0x0
layer at (0,0) size 785x4000
RenderSVGRoot {svg} at (0,0) size 785x4000
layer at (0,0) size 785x4000
RenderSVGViewportContainer at (0,0) size 785x4000
layer at (350,1950) size 100x100
RenderSVGRect {rect} at (350,1950) size 100x100 [fill={[type=SOLID] [color=#000080] [opacity=0.50]}] [x=350.00] [y=1950.00] [width=100.00] [height=100.00]
layer at (350,1950) size 100x100
RenderSVGEllipse {circle} at (350,1950) size 100x100 [fill={[type=SOLID] [color=#F08080]}] [cx=400.00] [cy=2000.00] [r=50.00]
layer at (266.92,2086) size 266x18
RenderSVGText {text} at (266,2086) size 268x18 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,0) size 267x18
chunk 1 (middle anchor) text run 1 at (266.93,2100.00) startOffset 0 endOffset 46 width 266.13: "The test passes if the circle sits in the rect"
scrolled to 0,1700
@@ -0,0 +1,14 @@
layer at (0,0) size 800x600
RenderView at (0,0) size 800x600
layer at (0,0) size 800x600
RenderSVGRoot {svg} at (0,0) size 800x600
layer at (0,0) size 800x600
RenderSVGViewportContainer at (0,0) size 800x600
layer at (70,55.50) size 44x19
RenderSVGTransformableContainer {g} at (70,55.50) size 43.56x18.50
layer at (0,0) size 800x601 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
RenderSVGViewportContainer {svg} at (-70,-55.50) size 800x600
layer at (70,55.50) size 44x18
RenderSVGText {text} at (70,55) size 44x19 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,0) size 44x19
chunk 1 text run 1 at (70.00,70.00) startOffset 0 endOffset 6 width 43.55: "Passed"
@@ -12,5 +12,5 @@ layer at (14,10.94) size 37x11
RenderSVGText {text} at (14,10) size 38x13 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,0) size 38x12
chunk 1 text run 1 at (14.00,20.00) startOffset 0 endOffset 9 width 37.25: "next line"
selection start: position 0 of child 0 {#text} of child 1 {text} of child 0 {svg} of document
selection end: position 3 of child 0 {#text} of child 1 {text} of child 0 {svg} of document
selection start: position 4 of child 0 {#text} of child 1 {text} of child 0 {svg} of document
selection end: position 7 of child 0 {#text} of child 1 {text} of child 0 {svg} of document
@@ -7,8 +7,16 @@ layer at (0,0) size 500x200
RenderSVGRoot {svg} at (0,0) size 500x200
layer at (0,0) size 500x200
RenderSVGViewportContainer at (0,0) size 500x200
layer at (0,0) size 100x100
RenderSVGTransformableContainer {g} at (0,0) size 100x100
layer at (0,0) size 202x100
RenderSVGTransformableContainer {g} at (0,0) size 201.25x100
layer at (0,14) size 201x46
RenderSVGText {text} at (0,14) size 202x46 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,0) size 106x46
chunk 1 text run 1 at (0.00,50.00) startOffset 0 endOffset 5 width 105.63: "PASS "
RenderSVGTSpan {tspan} at (0,0) size 97x46
RenderSVGInlineText {#text} at (105,0) size 96x46
chunk 1 text run 1 at (105.63,50.00) startOffset 0 endOffset 4 width 95.63: "PASS"
RenderSVGInlineText {#text} at (0,0) size 0x0
layer at (0,0) size 100x100
RenderSVGForeignObject {foreignObject} at (0,0) size 100x100
RenderBlock {P} at (0,0) size 100x46 [color=#008800]
@@ -33,15 +41,15 @@ layer at (0,0) size 100x100
text run at (0,0) width 92: "PASS"
layer at (0,0) size 100x100
RenderSVGViewportContainer {svg} at (0,0) size 100x100
layer at (0,0) size 168x159
RenderSVGTransformableContainer {g} at (0,0) size 167.72x158.34
layer at (0,125) size 168x33
RenderSVGText {text} at (0,125) size 168x34 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,0) size 89x34
chunk 1 text run 1 at (0.00,150.00) startOffset 0 endOffset 5 width 88.02: "PASS "
RenderSVGTSpan {tspan} at (0,0) size 80x34
RenderSVGInlineText {#text} at (88,0) size 80x34
chunk 1 text run 1 at (88.02,150.00) startOffset 0 endOffset 4 width 79.69: "PASS"
layer at (0,0) size 202x160
RenderSVGTransformableContainer {g} at (0,0) size 201.25x160
layer at (0,114) size 201x46
RenderSVGText {text} at (0,114) size 202x46 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,0) size 106x46
chunk 1 text run 1 at (0.00,150.00) startOffset 0 endOffset 5 width 105.63: "PASS "
RenderSVGTSpan {tspan} at (0,0) size 97x46
RenderSVGInlineText {#text} at (105,0) size 96x46
chunk 1 text run 1 at (105.63,150.00) startOffset 0 endOffset 4 width 95.63: "PASS"
RenderSVGInlineText {#text} at (0,0) size 0x0
layer at (0,0) size 100x100
RenderSVGForeignObject {foreignObject} at (0,0) size 100x100

0 comments on commit 5c3443a

Please sign in to comment.