<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[286962] trunk/Source/WebCore</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/286962">286962</a></dd>
<dt>Author</dt> <dd>zimmermann@webkit.org</dd>
<dt>Date</dt> <dd>2021-12-13 11:55:06 -0800 (Mon, 13 Dec 2021)</dd>
</dl>

<h3>Log Message</h3>
<pre>[LBSE] Rename RenderSVGModelObject -> LegacyRenderSVGModelObject
https://bugs.webkit.org/show_bug.cgi?id=234235

Reviewed by Rob Buis.

RenderSVGModelObject will inherit from RenderLayerModelObject in LBSE,
therefore rename the current implementation to LegacyRenderSVGRoot and
adapt all callsites.

Covered by existing tests, no change in behaviour.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::isLayoutDependent):
(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):
* rendering/RenderObject.cpp:
(WebCore::RenderObject::computedFragmentedFlowState):
* rendering/RenderObject.h:
(WebCore::RenderObject::isLegacyRenderSVGModelObject const):
(WebCore::RenderObject::isRenderOrLegacyRenderSVGModelObject const):
* rendering/svg/LegacyRenderSVGModelObject.cpp: Renamed from Source/WebCore/rendering/svg/RenderSVGModelObject.cpp.
(WebCore::LegacyRenderSVGModelObject::LegacyRenderSVGModelObject):
(WebCore::LegacyRenderSVGModelObject::clippedOverflowRect const):
(WebCore::LegacyRenderSVGModelObject::computeFloatVisibleRectInContainer const):
(WebCore::LegacyRenderSVGModelObject::mapLocalToContainer const):
(WebCore::LegacyRenderSVGModelObject::pushMappingToContainer const):
(WebCore::LegacyRenderSVGModelObject::outlineBoundsForRepaint const):
(WebCore::LegacyRenderSVGModelObject::absoluteRects const):
(WebCore::LegacyRenderSVGModelObject::absoluteQuads const):
(WebCore::LegacyRenderSVGModelObject::willBeDestroyed):
(WebCore::LegacyRenderSVGModelObject::styleDidChange):
(WebCore::LegacyRenderSVGModelObject::nodeAtPoint):
(WebCore::LegacyRenderSVGModelObject::absoluteFocusRingQuads):
(WebCore::LegacyRenderSVGModelObject::checkIntersection):
(WebCore::LegacyRenderSVGModelObject::checkEnclosure):
* rendering/svg/LegacyRenderSVGModelObject.h: Renamed from Source/WebCore/rendering/svg/RenderSVGModelObject.h.
* rendering/svg/RenderSVGContainer.cpp:
(WebCore::RenderSVGContainer::RenderSVGContainer):
(WebCore::RenderSVGContainer::layout):
* rendering/svg/RenderSVGContainer.h:
* rendering/svg/RenderSVGImage.cpp:
(WebCore::RenderSVGImage::RenderSVGImage):
(WebCore::RenderSVGImage::willBeDestroyed):
(WebCore::RenderSVGImage::imageElement const):
(WebCore::RenderSVGImage::layout):
* rendering/svg/RenderSVGImage.h:
* rendering/svg/RenderSVGShape.cpp:
(WebCore::RenderSVGShape::RenderSVGShape):
(WebCore::RenderSVGShape::layout):
* rendering/svg/RenderSVGShape.h:
* rendering/svg/RenderSVGShapeInlines.h:
(WebCore::RenderSVGShape::graphicsElement const):
* svg/SVGSVGElement.cpp:
(WebCore::checkIntersectionWithoutUpdatingLayout):
(WebCore::checkEnclosureWithoutUpdatingLayout):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreSourcestxt">trunk/Source/WebCore/Sources.txt</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCorecssCSSComputedStyleDeclarationcpp">trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderObjectcpp">trunk/Source/WebCore/rendering/RenderObject.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderObjecth">trunk/Source/WebCore/rendering/RenderObject.h</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGContainercpp">trunk/Source/WebCore/rendering/svg/RenderSVGContainer.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGContainerh">trunk/Source/WebCore/rendering/svg/RenderSVGContainer.h</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGImagecpp">trunk/Source/WebCore/rendering/svg/RenderSVGImage.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGImageh">trunk/Source/WebCore/rendering/svg/RenderSVGImage.h</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGShapecpp">trunk/Source/WebCore/rendering/svg/RenderSVGShape.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGShapeh">trunk/Source/WebCore/rendering/svg/RenderSVGShape.h</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGShapeInlinesh">trunk/Source/WebCore/rendering/svg/RenderSVGShapeInlines.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGSVGElementcpp">trunk/Source/WebCore/svg/SVGSVGElement.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebCorerenderingsvgLegacyRenderSVGModelObjectcpp">trunk/Source/WebCore/rendering/svg/LegacyRenderSVGModelObject.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgLegacyRenderSVGModelObjecth">trunk/Source/WebCore/rendering/svg/LegacyRenderSVGModelObject.h</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGModelObjectcpp">trunk/Source/WebCore/rendering/svg/RenderSVGModelObject.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGModelObjecth">trunk/Source/WebCore/rendering/svg/RenderSVGModelObject.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (286961 => 286962)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog   2021-12-13 19:52:03 UTC (rev 286961)
+++ trunk/Source/WebCore/ChangeLog      2021-12-13 19:55:06 UTC (rev 286962)
</span><span class="lines">@@ -1,3 +1,62 @@
</span><ins>+2021-12-13  Nikolas Zimmermann  <nzimmermann@igalia.com>
+
+        [LBSE] Rename RenderSVGModelObject -> LegacyRenderSVGModelObject
+        https://bugs.webkit.org/show_bug.cgi?id=234235
+
+        Reviewed by Rob Buis.
+
+        RenderSVGModelObject will inherit from RenderLayerModelObject in LBSE,
+        therefore rename the current implementation to LegacyRenderSVGRoot and
+        adapt all callsites.
+
+        Covered by existing tests, no change in behaviour.
+
+        * Sources.txt:
+        * WebCore.xcodeproj/project.pbxproj:
+        * css/CSSComputedStyleDeclaration.cpp:
+        (WebCore::isLayoutDependent):
+        (WebCore::ComputedStyleExtractor::valueForPropertyInStyle):
+        * rendering/RenderObject.cpp:
+        (WebCore::RenderObject::computedFragmentedFlowState):
+        * rendering/RenderObject.h:
+        (WebCore::RenderObject::isLegacyRenderSVGModelObject const):
+        (WebCore::RenderObject::isRenderOrLegacyRenderSVGModelObject const):
+        * rendering/svg/LegacyRenderSVGModelObject.cpp: Renamed from Source/WebCore/rendering/svg/RenderSVGModelObject.cpp.
+        (WebCore::LegacyRenderSVGModelObject::LegacyRenderSVGModelObject):
+        (WebCore::LegacyRenderSVGModelObject::clippedOverflowRect const):
+        (WebCore::LegacyRenderSVGModelObject::computeFloatVisibleRectInContainer const):
+        (WebCore::LegacyRenderSVGModelObject::mapLocalToContainer const):
+        (WebCore::LegacyRenderSVGModelObject::pushMappingToContainer const):
+        (WebCore::LegacyRenderSVGModelObject::outlineBoundsForRepaint const):
+        (WebCore::LegacyRenderSVGModelObject::absoluteRects const):
+        (WebCore::LegacyRenderSVGModelObject::absoluteQuads const):
+        (WebCore::LegacyRenderSVGModelObject::willBeDestroyed):
+        (WebCore::LegacyRenderSVGModelObject::styleDidChange):
+        (WebCore::LegacyRenderSVGModelObject::nodeAtPoint):
+        (WebCore::LegacyRenderSVGModelObject::absoluteFocusRingQuads):
+        (WebCore::LegacyRenderSVGModelObject::checkIntersection):
+        (WebCore::LegacyRenderSVGModelObject::checkEnclosure):
+        * rendering/svg/LegacyRenderSVGModelObject.h: Renamed from Source/WebCore/rendering/svg/RenderSVGModelObject.h.
+        * rendering/svg/RenderSVGContainer.cpp:
+        (WebCore::RenderSVGContainer::RenderSVGContainer):
+        (WebCore::RenderSVGContainer::layout):
+        * rendering/svg/RenderSVGContainer.h:
+        * rendering/svg/RenderSVGImage.cpp:
+        (WebCore::RenderSVGImage::RenderSVGImage):
+        (WebCore::RenderSVGImage::willBeDestroyed):
+        (WebCore::RenderSVGImage::imageElement const):
+        (WebCore::RenderSVGImage::layout):
+        * rendering/svg/RenderSVGImage.h:
+        * rendering/svg/RenderSVGShape.cpp:
+        (WebCore::RenderSVGShape::RenderSVGShape):
+        (WebCore::RenderSVGShape::layout):
+        * rendering/svg/RenderSVGShape.h:
+        * rendering/svg/RenderSVGShapeInlines.h:
+        (WebCore::RenderSVGShape::graphicsElement const):
+        * svg/SVGSVGElement.cpp:
+        (WebCore::checkIntersectionWithoutUpdatingLayout):
+        (WebCore::checkEnclosureWithoutUpdatingLayout):
+
</ins><span class="cx"> 2021-12-13  Elliott Williams  <emw@apple.com>
</span><span class="cx"> 
</span><span class="cx">         Deployment target for macOS 11+ does not follow minor version bumps
</span></span></pre></div>
<a id="trunkSourceWebCoreSourcestxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Sources.txt (286961 => 286962)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Sources.txt 2021-12-13 19:52:03 UTC (rev 286961)
+++ trunk/Source/WebCore/Sources.txt    2021-12-13 19:55:06 UTC (rev 286962)
</span><span class="lines">@@ -2461,6 +2461,7 @@
</span><span class="cx"> rendering/style/StyleVisualData.cpp
</span><span class="cx"> rendering/style/TextSizeAdjustment.cpp
</span><span class="cx"> rendering/style/WillChangeData.cpp
</span><ins>+rendering/svg/LegacyRenderSVGModelObject.cpp
</ins><span class="cx"> rendering/svg/LegacyRenderSVGRoot.cpp
</span><span class="cx"> rendering/svg/RenderSVGBlock.cpp
</span><span class="cx"> rendering/svg/RenderSVGContainer.cpp
</span><span class="lines">@@ -2471,7 +2472,6 @@
</span><span class="cx"> rendering/svg/RenderSVGImage.cpp
</span><span class="cx"> rendering/svg/RenderSVGInline.cpp
</span><span class="cx"> rendering/svg/RenderSVGInlineText.cpp
</span><del>-rendering/svg/RenderSVGModelObject.cpp
</del><span class="cx"> rendering/svg/RenderSVGPath.cpp
</span><span class="cx"> rendering/svg/RenderSVGRect.cpp
</span><span class="cx"> rendering/svg/RenderSVGResource.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (286961 => 286962)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj   2021-12-13 19:52:03 UTC (rev 286961)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj      2021-12-13 19:55:06 UTC (rev 286962)
</span><span class="lines">@@ -1241,7 +1241,7 @@
</span><span class="cx">          436708C512D9CA4B00044234 /* RenderSVGGradientStop.h in Headers */ = {isa = PBXBuildFile; fileRef = 4367088612D9CA4A00044234 /* RenderSVGGradientStop.h */; };
</span><span class="cx">          436708C712D9CA4B00044234 /* RenderSVGHiddenContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4367088812D9CA4A00044234 /* RenderSVGHiddenContainer.h */; };
</span><span class="cx">          436708C912D9CA4B00044234 /* RenderSVGImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 4367088A12D9CA4A00044234 /* RenderSVGImage.h */; };
</span><del>-               436708CB12D9CA4B00044234 /* RenderSVGModelObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 4367088C12D9CA4A00044234 /* RenderSVGModelObject.h */; };
</del><ins>+                436708CB12D9CA4B00044234 /* LegacyRenderSVGModelObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 4367088C12D9CA4A00044234 /* LegacyRenderSVGModelObject.h */; };
</ins><span class="cx">           436708CD12D9CA4B00044234 /* RenderSVGResource.h in Headers */ = {isa = PBXBuildFile; fileRef = 4367088E12D9CA4A00044234 /* RenderSVGResource.h */; };
</span><span class="cx">          436708CF12D9CA4B00044234 /* RenderSVGResourceClipper.h in Headers */ = {isa = PBXBuildFile; fileRef = 4367089012D9CA4A00044234 /* RenderSVGResourceClipper.h */; };
</span><span class="cx">          436708D112D9CA4B00044234 /* RenderSVGResourceContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4367089212D9CA4A00044234 /* RenderSVGResourceContainer.h */; };
</span><span class="lines">@@ -8961,8 +8961,8 @@
</span><span class="cx">          4367088812D9CA4A00044234 /* RenderSVGHiddenContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGHiddenContainer.h; sourceTree = "<group>"; };
</span><span class="cx">          4367088912D9CA4A00044234 /* RenderSVGImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGImage.cpp; sourceTree = "<group>"; };
</span><span class="cx">          4367088A12D9CA4A00044234 /* RenderSVGImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGImage.h; sourceTree = "<group>"; };
</span><del>-               4367088B12D9CA4A00044234 /* RenderSVGModelObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGModelObject.cpp; sourceTree = "<group>"; };
-               4367088C12D9CA4A00044234 /* RenderSVGModelObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGModelObject.h; sourceTree = "<group>"; };
</del><ins>+                4367088B12D9CA4A00044234 /* LegacyRenderSVGModelObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LegacyRenderSVGModelObject.cpp; sourceTree = "<group>"; };
+               4367088C12D9CA4A00044234 /* LegacyRenderSVGModelObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LegacyRenderSVGModelObject.h; sourceTree = "<group>"; };
</ins><span class="cx">           4367088D12D9CA4A00044234 /* RenderSVGResource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGResource.cpp; sourceTree = "<group>"; };
</span><span class="cx">          4367088E12D9CA4A00044234 /* RenderSVGResource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGResource.h; sourceTree = "<group>"; };
</span><span class="cx">          4367088F12D9CA4A00044234 /* RenderSVGResourceClipper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGResourceClipper.cpp; sourceTree = "<group>"; };
</span><span class="lines">@@ -18847,6 +18847,8 @@
</span><span class="cx">          088C2F7412390080003D65CE /* svg */ = {
</span><span class="cx">                  isa = PBXGroup;
</span><span class="cx">                  children = (
</span><ins>+                               4367088B12D9CA4A00044234 /* LegacyRenderSVGModelObject.cpp */,
+                               4367088C12D9CA4A00044234 /* LegacyRenderSVGModelObject.h */,
</ins><span class="cx">                           436708A512D9CA4B00044234 /* LegacyRenderSVGRoot.cpp */,
</span><span class="cx">                          436708A612D9CA4B00044234 /* LegacyRenderSVGRoot.h */,
</span><span class="cx">                          4367088112D9CA4A00044234 /* RenderSVGBlock.cpp */,
</span><span class="lines">@@ -18870,8 +18872,6 @@
</span><span class="cx">                          CDF747E8270F6CAE008FEEEC /* RenderSVGInlineInlines.h */,
</span><span class="cx">                          0854B0041255E4E600B9CDD0 /* RenderSVGInlineText.cpp */,
</span><span class="cx">                          0854B0051255E4E600B9CDD0 /* RenderSVGInlineText.h */,
</span><del>-                               4367088B12D9CA4A00044234 /* RenderSVGModelObject.cpp */,
-                               4367088C12D9CA4A00044234 /* RenderSVGModelObject.h */,
</del><span class="cx">                           ADDF1AD41257CD9A0003A759 /* RenderSVGPath.cpp */,
</span><span class="cx">                          ADDF1AD51257CD9A0003A759 /* RenderSVGPath.h */,
</span><span class="cx">                          A10BB5821484E3A700B2E87A /* RenderSVGRect.cpp */,
</span><span class="lines">@@ -35796,6 +35796,7 @@
</span><span class="cx">                          F44A5F591FED38F2007F5944 /* LegacyNSPasteboardTypes.h in Headers */,
</span><span class="cx">                          A185B42A1E8211A100DC9118 /* LegacyPreviewLoader.h in Headers */,
</span><span class="cx">                          A10DBF4718F92317000D70C6 /* LegacyPreviewLoaderClient.h in Headers */,
</span><ins>+                               436708CB12D9CA4B00044234 /* LegacyRenderSVGModelObject.h in Headers */,
</ins><span class="cx">                           436708E512D9CA4B00044234 /* LegacyRenderSVGRoot.h in Headers */,
</span><span class="cx">                          A8CFF5E10A155A05000A4234 /* LegacyRootInlineBox.h in Headers */,
</span><span class="cx">                          5162C7F511F77EFB00612EFE /* LegacySchemeRegistry.h in Headers */,
</span><span class="lines">@@ -36600,7 +36601,6 @@
</span><span class="cx">                          0854B0151255E4E600B9CDD0 /* RenderSVGInline.h in Headers */,
</span><span class="cx">                          CDF747E9270F6CAE008FEEEC /* RenderSVGInlineInlines.h in Headers */,
</span><span class="cx">                          0854B0171255E4E600B9CDD0 /* RenderSVGInlineText.h in Headers */,
</span><del>-                               436708CB12D9CA4B00044234 /* RenderSVGModelObject.h in Headers */,
</del><span class="cx">                           ADDF1AD71257CD9A0003A759 /* RenderSVGPath.h in Headers */,
</span><span class="cx">                          A10BB5851484E3A700B2E87A /* RenderSVGRect.h in Headers */,
</span><span class="cx">                          436708CD12D9CA4B00044234 /* RenderSVGResource.h in Headers */,
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSComputedStyleDeclarationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp (286961 => 286962)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp 2021-12-13 19:52:03 UTC (rev 286961)
+++ trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp    2021-12-13 19:55:06 UTC (rev 286962)
</span><span class="lines">@@ -2257,7 +2257,7 @@
</span><span class="cx">     case CSSPropertyHeight:
</span><span class="cx">     case CSSPropertyInlineSize:
</span><span class="cx">     case CSSPropertyBlockSize:
</span><del>-        return renderer && !renderer->isRenderSVGModelObject() && !isNonReplacedInline(*renderer);
</del><ins>+        return renderer && !renderer->isRenderOrLegacyRenderSVGModelObject() && !isNonReplacedInline(*renderer);
</ins><span class="cx">     case CSSPropertyPerspectiveOrigin:
</span><span class="cx">     case CSSPropertyTransformOrigin:
</span><span class="cx">     case CSSPropertyTransform:
</span><span class="lines">@@ -3134,7 +3134,7 @@
</span><span class="cx">         case CSSPropertyGap:
</span><span class="cx">             return getCSSPropertyValuesForShorthandProperties(gapShorthand());
</span><span class="cx">         case CSSPropertyHeight:
</span><del>-            if (renderer && !renderer->isRenderSVGModelObject()) {
</del><ins>+            if (renderer && !renderer->isRenderOrLegacyRenderSVGModelObject()) {
</ins><span class="cx">                 // According to http://www.w3.org/TR/CSS2/visudet.html#the-height-property,
</span><span class="cx">                 // the "height" property does not apply for non-replaced inline elements.
</span><span class="cx">                 if (!isNonReplacedInline(*renderer))
</span><span class="lines">@@ -3460,7 +3460,7 @@
</span><span class="cx">                 return cssValuePool.createIdentifierValue(CSSValueAuto);
</span><span class="cx">             return cssValuePool.createValue(style.widows(), CSSUnitType::CSS_NUMBER);
</span><span class="cx">         case CSSPropertyWidth:
</span><del>-            if (renderer && !renderer->isRenderSVGModelObject()) {
</del><ins>+            if (renderer && !renderer->isRenderOrLegacyRenderSVGModelObject()) {
</ins><span class="cx">                 // According to http://www.w3.org/TR/CSS2/visudet.html#the-width-property,
</span><span class="cx">                 // the "width" property does not apply for non-replaced inline elements.
</span><span class="cx">                 if (!isNonReplacedInline(*renderer))
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderObject.cpp (286961 => 286962)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderObject.cpp  2021-12-13 19:52:03 UTC (rev 286961)
+++ trunk/Source/WebCore/rendering/RenderObject.cpp     2021-12-13 19:55:06 UTC (rev 286962)
</span><span class="lines">@@ -43,6 +43,7 @@
</span><span class="cx"> #include "HTMLTableElement.h"
</span><span class="cx"> #include "HitTestResult.h"
</span><span class="cx"> #include "LayoutIntegrationLineLayout.h"
</span><ins>+#include "LegacyRenderSVGModelObject.h"
</ins><span class="cx"> #include "LegacyRenderSVGRoot.h"
</span><span class="cx"> #include "LogicalSelectionOffsetCaches.h"
</span><span class="cx"> #include "Page.h"
</span><span class="lines">@@ -63,7 +64,6 @@
</span><span class="cx"> #include "RenderRuby.h"
</span><span class="cx"> #include "RenderSVGBlock.h"
</span><span class="cx"> #include "RenderSVGInline.h"
</span><del>-#include "RenderSVGModelObject.h"
</del><span class="cx"> #include "RenderSVGResourceContainer.h"
</span><span class="cx"> #include "RenderScrollbarPart.h"
</span><span class="cx"> #include "RenderTableRow.h"
</span><span class="lines">@@ -238,7 +238,7 @@
</span><span class="cx">     auto inheritedFlowState = RenderObject::NotInsideFragmentedFlow;
</span><span class="cx">     if (is<RenderText>(renderer))
</span><span class="cx">         inheritedFlowState = renderer.parent()->fragmentedFlowState();
</span><del>-    else if (is<RenderSVGBlock>(renderer) || is<RenderSVGInline>(renderer) || is<RenderSVGModelObject>(renderer)) {
</del><ins>+    else if (is<RenderSVGBlock>(renderer) || is<RenderSVGInline>(renderer) || is<LegacyRenderSVGModelObject>(renderer)) {
</ins><span class="cx">         // containingBlock() skips svg boundary (SVG root is a RenderReplaced).
</span><span class="cx">         if (auto* svgRoot = SVGRenderSupport::findTreeRootObject(downcast<RenderElement>(renderer)))
</span><span class="cx">             inheritedFlowState = svgRoot->fragmentedFlowState();
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderObject.h (286961 => 286962)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderObject.h    2021-12-13 19:52:03 UTC (rev 286961)
+++ trunk/Source/WebCore/rendering/RenderObject.h       2021-12-13 19:55:06 UTC (rev 286962)
</span><span class="lines">@@ -324,8 +324,7 @@
</span><span class="cx">     virtual bool isRenderMathMLUnderOver() const { return false; }
</span><span class="cx"> #endif // ENABLE(MATHML)
</span><span class="cx"> 
</span><del>-    // FIXME: Until all SVG renders can be subclasses of RenderSVGModelObject we have
-    // to add SVG renderer methods to RenderObject with an ASSERT_NOT_REACHED() default implementation.
</del><ins>+    virtual bool isLegacyRenderSVGModelObject() const { return false; }
</ins><span class="cx">     virtual bool isRenderSVGModelObject() const { return false; }
</span><span class="cx">     virtual bool isRenderSVGBlock() const { return false; };
</span><span class="cx">     virtual bool isLegacySVGRoot() const { return false; }
</span><span class="lines">@@ -349,6 +348,7 @@
</span><span class="cx">     virtual bool isSVGResourceClipper() const { return false; }
</span><span class="cx">     virtual bool isSVGResourceFilterPrimitive() const { return false; }
</span><span class="cx">     bool isSVGRootOrLegacySVGRoot() const { return isSVGRoot() || isLegacySVGRoot(); }
</span><ins>+    bool isRenderOrLegacyRenderSVGModelObject() const { return isRenderSVGModelObject() || isLegacyRenderSVGModelObject(); }
</ins><span class="cx"> 
</span><span class="cx">     // FIXME: Those belong into a SVG specific base-class for all renderers (see above)
</span><span class="cx">     // Unfortunately we don't have such a class yet, because it's not possible for all renderers
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgLegacyRenderSVGModelObjectcppfromrev286961trunkSourceWebCorerenderingsvgRenderSVGModelObjectcpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/rendering/svg/LegacyRenderSVGModelObject.cpp (from rev 286961, trunk/Source/WebCore/rendering/svg/RenderSVGModelObject.cpp) (0 => 286962)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/LegacyRenderSVGModelObject.cpp                                (rev 0)
+++ trunk/Source/WebCore/rendering/svg/LegacyRenderSVGModelObject.cpp   2021-12-13 19:55:06 UTC (rev 286962)
</span><span class="lines">@@ -0,0 +1,216 @@
</span><ins>+/*
+ * Copyright (c) 2009, Google Inc. All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ * 
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "LegacyRenderSVGModelObject.h"
+
+#include "NotImplemented.h"
+#include "RenderLayer.h"
+#include "RenderLayerModelObject.h"
+#include "RenderSVGResource.h"
+#include "RenderView.h"
+#include "SVGElementInlines.h"
+#include "SVGNames.h"
+#include "SVGResourcesCache.h"
+#include "ShadowRoot.h"
+#include <wtf/IsoMallocInlines.h>
+
+namespace WebCore {
+
+WTF_MAKE_ISO_ALLOCATED_IMPL(LegacyRenderSVGModelObject);
+
+LegacyRenderSVGModelObject::LegacyRenderSVGModelObject(SVGElement& element, RenderStyle&& style)
+    : RenderElement(element, WTFMove(style), 0)
+{
+}
+
+LayoutRect LegacyRenderSVGModelObject::clippedOverflowRect(const RenderLayerModelObject* repaintContainer, VisibleRectContext context) const
+{
+#if ENABLE(LAYER_BASED_SVG_ENGINE)
+    if (document().settings().layerBasedSVGEngineEnabled()) {
+        if (style().visibility() != Visibility::Visible && !enclosingLayer()->hasVisibleContent())
+            return LayoutRect();
+
+        ASSERT(!view().frameView().layoutContext().isPaintOffsetCacheEnabled());
+        return computeRect(visualOverflowRectEquivalent(), repaintContainer, context);
+    }
+#else
+    UNUSED_PARAM(context);
+#endif
+
+    return SVGRenderSupport::clippedOverflowRectForRepaint(*this, repaintContainer);
+}
+
+std::optional<FloatRect> LegacyRenderSVGModelObject::computeFloatVisibleRectInContainer(const FloatRect& rect, const RenderLayerModelObject* container, VisibleRectContext context) const
+{
+    return SVGRenderSupport::computeFloatVisibleRectInContainer(*this, rect, container, context);
+}
+
+void LegacyRenderSVGModelObject::mapLocalToContainer(const RenderLayerModelObject* ancestorContainer, TransformState& transformState, OptionSet<MapCoordinatesMode>, bool* wasFixed) const
+{
+    SVGRenderSupport::mapLocalToContainer(*this, ancestorContainer, transformState, wasFixed);
+}
+
+const RenderObject* LegacyRenderSVGModelObject::pushMappingToContainer(const RenderLayerModelObject* ancestorToStopAt, RenderGeometryMap& geometryMap) const
+{
+    return SVGRenderSupport::pushMappingToContainer(*this, ancestorToStopAt, geometryMap);
+}
+
+// Copied from RenderBox, this method likely requires further refactoring to work easily for both SVG and CSS Box Model content.
+// FIXME: This may also need to move into SVGRenderSupport as the RenderBox version depends
+// on borderBoundingBox() which SVG RenderBox subclases (like SVGRenderBlock) do not implement.
+LayoutRect LegacyRenderSVGModelObject::outlineBoundsForRepaint(const RenderLayerModelObject* repaintContainer, const RenderGeometryMap*) const
+{
+    LayoutRect box = enclosingLayoutRect(repaintRectInLocalCoordinates());
+    adjustRectForOutlineAndShadow(box);
+
+    FloatQuad containerRelativeQuad = localToContainerQuad(FloatRect(box), repaintContainer);
+    return LayoutRect(snapRectToDevicePixels(LayoutRect(containerRelativeQuad.boundingBox()), document().deviceScaleFactor()));
+}
+
+void LegacyRenderSVGModelObject::absoluteRects(Vector<IntRect>& rects, const LayoutPoint& accumulatedOffset) const
+{
+    IntRect rect = enclosingIntRect(strokeBoundingBox());
+    rect.moveBy(roundedIntPoint(accumulatedOffset));
+    rects.append(rect);
+}
+
+void LegacyRenderSVGModelObject::absoluteQuads(Vector<FloatQuad>& quads, bool* wasFixed) const
+{
+    quads.append(localToAbsoluteQuad(strokeBoundingBox(), UseTransforms, wasFixed));
+}
+
+void LegacyRenderSVGModelObject::willBeDestroyed()
+{
+    SVGResourcesCache::clientDestroyed(*this);
+    RenderElement::willBeDestroyed();
+}
+
+void LegacyRenderSVGModelObject::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle)
+{
+    if (diff == StyleDifference::Layout) {
+        setNeedsBoundariesUpdate();
+        if (style().hasTransform() || (oldStyle && oldStyle->hasTransform()))
+            setNeedsTransformUpdate();
+    }
+    RenderElement::styleDidChange(diff, oldStyle);
+    SVGResourcesCache::clientStyleChanged(*this, diff, style());
+}
+
+bool LegacyRenderSVGModelObject::nodeAtPoint(const HitTestRequest&, HitTestResult&, const HitTestLocation&, const LayoutPoint&, HitTestAction)
+{
+#if ENABLE(LAYER_BASED_SVG_ENGINE)
+    if (document().settings().layerBasedSVGEngineEnabled()) {
+        // FIXME: [LBSE] Upstream LegacyRenderSVGModelObject inheritance changes (should inherit from RenderLayerModelObject).
+        notImplemented();
+        return false;
+    }
+#endif
+
+    ASSERT_NOT_REACHED();
+    return false;
+}
+
+static void getElementCTM(SVGElement* element, AffineTransform& transform)
+{
+    ASSERT(element);
+
+    SVGElement* stopAtElement = SVGLocatable::nearestViewportElement(element);
+    ASSERT(stopAtElement);
+
+    AffineTransform localTransform;
+    Node* current = element;
+
+    while (current && current->isSVGElement()) {
+        SVGElement& currentElement = downcast<SVGElement>(*current);
+        localTransform = currentElement.renderer()->localToParentTransform();
+        transform = localTransform.multiply(transform);
+        // For getCTM() computation, stop at the nearest viewport element
+        if (&currentElement == stopAtElement)
+            break;
+
+        current = current->parentOrShadowHostNode();
+    }
+}
+
+// FloatRect::intersects does not consider horizontal or vertical lines (because of isEmpty()).
+// So special-case handling of such lines.
+static bool intersectsAllowingEmpty(const FloatRect& r, const FloatRect& other)
+{
+    if (r.isEmpty() && other.isEmpty())
+        return false;
+    if (r.isEmpty() && !other.isEmpty())
+        return (other.contains(r.x(), r.y()) && !other.contains(r.maxX(), r.maxY())) || (!other.contains(r.x(), r.y()) && other.contains(r.maxX(), r.maxY()));
+    if (other.isEmpty() && !r.isEmpty())
+        return intersectsAllowingEmpty(other, r);
+    return r.intersects(other);
+}
+
+// One of the element types that can cause graphics to be drawn onto the target canvas. Specifically: circle, ellipse,
+// image, line, path, polygon, polyline, rect, text and use.
+static bool isGraphicsElement(const RenderElement& renderer)
+{
+    return renderer.isSVGShape() || renderer.isSVGText() || renderer.isSVGImage() || renderer.element()->hasTagName(SVGNames::useTag);
+}
+
+// The SVG addFocusRingRects() method adds rects in local coordinates so the default absoluteFocusRingQuads
+// returns incorrect values for SVG objects. Overriding this method provides access to the absolute bounds.
+void LegacyRenderSVGModelObject::absoluteFocusRingQuads(Vector<FloatQuad>& quads)
+{
+    quads.append(localToAbsoluteQuad(FloatQuad(repaintRectInLocalCoordinates())));
+}
+    
+bool LegacyRenderSVGModelObject::checkIntersection(RenderElement* renderer, const FloatRect& rect)
+{
+    if (!renderer || renderer->style().pointerEvents() == PointerEvents::None)
+        return false;
+    if (!isGraphicsElement(*renderer))
+        return false;
+    AffineTransform ctm;
+    SVGElement* svgElement = downcast<SVGElement>(renderer->element());
+    getElementCTM(svgElement, ctm);
+    ASSERT(svgElement->renderer());
+    return intersectsAllowingEmpty(rect, ctm.mapRect(svgElement->renderer()->repaintRectInLocalCoordinates()));
+}
+
+bool LegacyRenderSVGModelObject::checkEnclosure(RenderElement* renderer, const FloatRect& rect)
+{
+    if (!renderer || renderer->style().pointerEvents() == PointerEvents::None)
+        return false;
+    if (!isGraphicsElement(*renderer))
+        return false;
+    AffineTransform ctm;
+    SVGElement* svgElement = downcast<SVGElement>(renderer->element());
+    getElementCTM(svgElement, ctm);
+    ASSERT(svgElement->renderer());
+    return rect.contains(ctm.mapRect(svgElement->renderer()->repaintRectInLocalCoordinates()));
+}
+
+} // namespace WebCore
</ins></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgLegacyRenderSVGModelObjecthfromrev286961trunkSourceWebCorerenderingsvgRenderSVGModelObjecth"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/rendering/svg/LegacyRenderSVGModelObject.h (from rev 286961, trunk/Source/WebCore/rendering/svg/RenderSVGModelObject.h) (0 => 286962)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/LegacyRenderSVGModelObject.h                          (rev 0)
+++ trunk/Source/WebCore/rendering/svg/LegacyRenderSVGModelObject.h     2021-12-13 19:55:06 UTC (rev 286962)
</span><span class="lines">@@ -0,0 +1,84 @@
</span><ins>+/*
+ * Copyright (c) 2009, Google Inc. All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ * 
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include "RenderElement.h"
+#include "SVGElement.h"
+#include "SVGRenderSupport.h"
+
+namespace WebCore {
+
+// Most renderers in the SVG rendering tree will inherit from this class
+// but not all. (e.g. RenderSVGForeignObject, RenderSVGBlock) thus methods
+// required by SVG renders need to be declared on RenderObject, but shared
+// logic can go in this class or in SVGRenderSupport.
+
+class SVGElement;
+
+class LegacyRenderSVGModelObject : public RenderElement {
+    WTF_MAKE_ISO_ALLOCATED(LegacyRenderSVGModelObject);
+public:
+    LayoutRect clippedOverflowRect(const RenderLayerModelObject* repaintContainer, VisibleRectContext) const override;
+    std::optional<FloatRect> computeFloatVisibleRectInContainer(const FloatRect&, const RenderLayerModelObject* container, VisibleRectContext) const final;
+    LayoutRect outlineBoundsForRepaint(const RenderLayerModelObject* repaintContainer, const RenderGeometryMap*) const final;
+
+    void absoluteRects(Vector<IntRect>&, const LayoutPoint& accumulatedOffset) const final;
+    void absoluteQuads(Vector<FloatQuad>&, bool* wasFixed) const override;
+
+    void mapLocalToContainer(const RenderLayerModelObject* ancestorContainer, TransformState&, OptionSet<MapCoordinatesMode>, bool* wasFixed) const final;
+    const RenderObject* pushMappingToContainer(const RenderLayerModelObject* ancestorToStopAt, RenderGeometryMap&) const final;
+    void styleDidChange(StyleDifference, const RenderStyle* oldStyle) override;
+
+    static bool checkIntersection(RenderElement*, const FloatRect&);
+    static bool checkEnclosure(RenderElement*, const FloatRect&);
+
+    SVGElement& element() const { return downcast<SVGElement>(nodeForNonAnonymous()); }
+
+    // FIXME: [LBSE] Upstream SVGBoundingBoxComputation
+    // LayoutRect visualOverflowRectEquivalent() const { return SVGBoundingBoxComputation::computeVisualOverflowRect(*this); }
+    LayoutRect visualOverflowRectEquivalent() const { return LayoutRect(); }
+
+protected:
+    LegacyRenderSVGModelObject(SVGElement&, RenderStyle&&);
+
+    void willBeDestroyed() override;
+
+private:
+    bool isLegacyRenderSVGModelObject() const final { return true; }
+
+    // This method should never be called, SVG uses a different nodeAtPoint method
+    bool nodeAtPoint(const HitTestRequest&, HitTestResult&, const HitTestLocation& locationInContainer, const LayoutPoint& accumulatedOffset, HitTestAction) override;
+    void absoluteFocusRingQuads(Vector<FloatQuad>&) final;
+};
+
+} // namespace WebCore
+
+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(LegacyRenderSVGModelObject, isLegacyRenderSVGModelObject())
</ins></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGContainercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGContainer.cpp (286961 => 286962)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGContainer.cpp        2021-12-13 19:52:03 UTC (rev 286961)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGContainer.cpp   2021-12-13 19:55:06 UTC (rev 286962)
</span><span class="lines">@@ -43,7 +43,7 @@
</span><span class="cx"> WTF_MAKE_ISO_ALLOCATED_IMPL(RenderSVGContainer);
</span><span class="cx"> 
</span><span class="cx"> RenderSVGContainer::RenderSVGContainer(SVGElement& element, RenderStyle&& style)
</span><del>-    : RenderSVGModelObject(element, WTFMove(style))
</del><ins>+    : LegacyRenderSVGModelObject(element, WTFMove(style))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -81,7 +81,7 @@
</span><span class="cx">         m_needsBoundariesUpdate = false;
</span><span class="cx">     
</span><span class="cx">         // If our bounds changed, notify the parents.
</span><del>-        RenderSVGModelObject::setNeedsBoundariesUpdate();
</del><ins>+        LegacyRenderSVGModelObject::setNeedsBoundariesUpdate();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     repainter.repaintAfterLayout();
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGContainerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGContainer.h (286961 => 286962)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGContainer.h  2021-12-13 19:52:03 UTC (rev 286961)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGContainer.h     2021-12-13 19:55:06 UTC (rev 286962)
</span><span class="lines">@@ -22,13 +22,13 @@
</span><span class="cx"> 
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><del>-#include "RenderSVGModelObject.h"
</del><ins>+#include "LegacyRenderSVGModelObject.h"
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class SVGElement;
</span><span class="cx"> 
</span><del>-class RenderSVGContainer : public RenderSVGModelObject {
</del><ins>+class RenderSVGContainer : public LegacyRenderSVGModelObject {
</ins><span class="cx">     WTF_MAKE_ISO_ALLOCATED(RenderSVGContainer);
</span><span class="cx"> public:
</span><span class="cx">     virtual ~RenderSVGContainer();
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGImagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGImage.cpp (286961 => 286962)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGImage.cpp    2021-12-13 19:52:03 UTC (rev 286961)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGImage.cpp       2021-12-13 19:55:06 UTC (rev 286962)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx"> WTF_MAKE_ISO_ALLOCATED_IMPL(RenderSVGImage);
</span><span class="cx"> 
</span><span class="cx"> RenderSVGImage::RenderSVGImage(SVGImageElement& element, RenderStyle&& style)
</span><del>-    : RenderSVGModelObject(element, WTFMove(style))
</del><ins>+    : LegacyRenderSVGModelObject(element, WTFMove(style))
</ins><span class="cx">     , m_needsBoundariesUpdate(true)
</span><span class="cx">     , m_needsTransformUpdate(true)
</span><span class="cx">     , m_imageResource(makeUnique<RenderImageResource>())
</span><span class="lines">@@ -61,12 +61,12 @@
</span><span class="cx"> void RenderSVGImage::willBeDestroyed()
</span><span class="cx"> {
</span><span class="cx">     imageResource().shutdown();
</span><del>-    RenderSVGModelObject::willBeDestroyed();
</del><ins>+    LegacyRenderSVGModelObject::willBeDestroyed();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> SVGImageElement& RenderSVGImage::imageElement() const
</span><span class="cx"> {
</span><del>-    return downcast<SVGImageElement>(RenderSVGModelObject::element());
</del><ins>+    return downcast<SVGImageElement>(LegacyRenderSVGModelObject::element());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> FloatRect RenderSVGImage::calculateObjectBoundingBox() const
</span><span class="lines">@@ -156,7 +156,7 @@
</span><span class="cx"> 
</span><span class="cx">     // If our bounds changed, notify the parents.
</span><span class="cx">     if (transformOrBoundariesUpdate)
</span><del>-        RenderSVGModelObject::setNeedsBoundariesUpdate();
</del><ins>+        LegacyRenderSVGModelObject::setNeedsBoundariesUpdate();
</ins><span class="cx"> 
</span><span class="cx">     repainter.repaintAfterLayout();
</span><span class="cx">     clearNeedsLayout();
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGImageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGImage.h (286961 => 286962)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGImage.h      2021-12-13 19:52:03 UTC (rev 286961)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGImage.h 2021-12-13 19:55:06 UTC (rev 286962)
</span><span class="lines">@@ -25,7 +25,7 @@
</span><span class="cx"> 
</span><span class="cx"> #include "AffineTransform.h"
</span><span class="cx"> #include "FloatRect.h"
</span><del>-#include "RenderSVGModelObject.h"
</del><ins>+#include "LegacyRenderSVGModelObject.h"
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx"> class RenderImageResource;
</span><span class="cx"> class SVGImageElement;
</span><span class="cx"> 
</span><del>-class RenderSVGImage final : public RenderSVGModelObject {
</del><ins>+class RenderSVGImage final : public LegacyRenderSVGModelObject {
</ins><span class="cx">     WTF_MAKE_ISO_ALLOCATED(RenderSVGImage);
</span><span class="cx"> public:
</span><span class="cx">     RenderSVGImage(SVGImageElement&, RenderStyle&&);
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGModelObjectcpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/rendering/svg/RenderSVGModelObject.cpp (286961 => 286962)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGModelObject.cpp      2021-12-13 19:52:03 UTC (rev 286961)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGModelObject.cpp 2021-12-13 19:55:06 UTC (rev 286962)
</span><span class="lines">@@ -1,218 +0,0 @@
</span><del>-/*
- * Copyright (c) 2009, Google Inc. All rights reserved.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- * 
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "RenderSVGModelObject.h"
-
-#include "NotImplemented.h"
-#include "RenderLayer.h"
-#include "RenderLayerModelObject.h"
-#include "RenderSVGResource.h"
-#include "RenderView.h"
-#include "SVGElementInlines.h"
-#include "SVGNames.h"
-#include "SVGResourcesCache.h"
-#include "ShadowRoot.h"
-#include <wtf/IsoMallocInlines.h>
-
-namespace WebCore {
-
-WTF_MAKE_ISO_ALLOCATED_IMPL(RenderSVGModelObject);
-
-RenderSVGModelObject::RenderSVGModelObject(SVGElement& element, RenderStyle&& style)
-    : RenderElement(element, WTFMove(style), 0)
-{
-}
-
-LayoutRect RenderSVGModelObject::clippedOverflowRect(const RenderLayerModelObject* repaintContainer, VisibleRectContext context) const
-{
-#if ENABLE(LAYER_BASED_SVG_ENGINE)
-    if (document().settings().layerBasedSVGEngineEnabled()) {
-        if (style().visibility() != Visibility::Visible && !enclosingLayer()->hasVisibleContent())
-            return LayoutRect();
-
-        ASSERT(!view().frameView().layoutContext().isPaintOffsetCacheEnabled());
-        return computeRect(visualOverflowRectEquivalent(), repaintContainer, context);
-    }
-#else
-    UNUSED_PARAM(context);
-#endif
-
-    return SVGRenderSupport::clippedOverflowRectForRepaint(*this, repaintContainer);
-}
-
-std::optional<FloatRect> RenderSVGModelObject::computeFloatVisibleRectInContainer(const FloatRect& rect, const RenderLayerModelObject* container, VisibleRectContext context) const
-{
-    return SVGRenderSupport::computeFloatVisibleRectInContainer(*this, rect, container, context);
-}
-
-void RenderSVGModelObject::mapLocalToContainer(const RenderLayerModelObject* ancestorContainer, TransformState& transformState, OptionSet<MapCoordinatesMode>, bool* wasFixed) const
-{
-    SVGRenderSupport::mapLocalToContainer(*this, ancestorContainer, transformState, wasFixed);
-}
-
-const RenderObject* RenderSVGModelObject::pushMappingToContainer(const RenderLayerModelObject* ancestorToStopAt, RenderGeometryMap& geometryMap) const
-{
-    return SVGRenderSupport::pushMappingToContainer(*this, ancestorToStopAt, geometryMap);
-}
-
-// Copied from RenderBox, this method likely requires further refactoring to work easily for both SVG and CSS Box Model content.
-// FIXME: This may also need to move into SVGRenderSupport as the RenderBox version depends
-// on borderBoundingBox() which SVG RenderBox subclases (like SVGRenderBlock) do not implement.
-LayoutRect RenderSVGModelObject::outlineBoundsForRepaint(const RenderLayerModelObject* repaintContainer, const RenderGeometryMap*) const
-{
-    LayoutRect box = enclosingLayoutRect(repaintRectInLocalCoordinates());
-    adjustRectForOutlineAndShadow(box);
-
-    FloatQuad containerRelativeQuad = localToContainerQuad(FloatRect(box), repaintContainer);
-    return LayoutRect(snapRectToDevicePixels(LayoutRect(containerRelativeQuad.boundingBox()), document().deviceScaleFactor()));
-}
-
-void RenderSVGModelObject::absoluteRects(Vector<IntRect>& rects, const LayoutPoint& accumulatedOffset) const
-{
-    IntRect rect = enclosingIntRect(strokeBoundingBox());
-    rect.moveBy(roundedIntPoint(accumulatedOffset));
-    rects.append(rect);
-}
-
-void RenderSVGModelObject::absoluteQuads(Vector<FloatQuad>& quads, bool* wasFixed) const
-{
-    quads.append(localToAbsoluteQuad(strokeBoundingBox(), UseTransforms, wasFixed));
-}
-
-void RenderSVGModelObject::willBeDestroyed()
-{
-    SVGResourcesCache::clientDestroyed(*this);
-    RenderElement::willBeDestroyed();
-}
-
-void RenderSVGModelObject::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle)
-{
-    if (diff == StyleDifference::Layout) {
-        setNeedsBoundariesUpdate();
-        if (style().hasTransform() || (oldStyle && oldStyle->hasTransform()))
-            setNeedsTransformUpdate();
-    }
-    RenderElement::styleDidChange(diff, oldStyle);
-    SVGResourcesCache::clientStyleChanged(*this, diff, style());
-}
-
-bool RenderSVGModelObject::nodeAtPoint(const HitTestRequest&, HitTestResult&, const HitTestLocation&, const LayoutPoint&, HitTestAction)
-{
-#if ENABLE(LAYER_BASED_SVG_ENGINE)
-    if (document().settings().layerBasedSVGEngineEnabled()) {
-        // FIXME: [LBSE] Upstream RenderSVGModelObject inheritance changes (should inherit from RenderLayerModelObject).
-        notImplemented();
-        return false;
-    }
-#endif
-
-    ASSERT_NOT_REACHED();
-    return false;
-}
-
-static void getElementCTM(SVGElement* element, AffineTransform& transform)
-{
-    ASSERT(element);
-
-    SVGElement* stopAtElement = SVGLocatable::nearestViewportElement(element);
-    ASSERT(stopAtElement);
-
-    AffineTransform localTransform;
-    Node* current = element;
-
-    while (current && current->isSVGElement()) {
-        SVGElement& currentElement = downcast<SVGElement>(*current);
-        localTransform = currentElement.renderer()->localToParentTransform();
-        transform = localTransform.multiply(transform);
-        // For getCTM() computation, stop at the nearest viewport element
-        if (&currentElement == stopAtElement)
-            break;
-
-        current = current->parentOrShadowHostNode();
-    }
-}
-
-// FloatRect::intersects does not consider horizontal or vertical lines (because of isEmpty()).
-// So special-case handling of such lines.
-static bool intersectsAllowingEmpty(const FloatRect& r, const FloatRect& other)
-{
-    if (r.isEmpty() && other.isEmpty())
-        return false;
-    if (r.isEmpty() && !other.isEmpty()) {
-        return (other.contains(r.x(), r.y()) && !other.contains(r.maxX(), r.maxY()))
-               || (!other.contains(r.x(), r.y()) && other.contains(r.maxX(), r.maxY()));
-    }
-    if (other.isEmpty() && !r.isEmpty())
-        return intersectsAllowingEmpty(other, r);
-    return r.intersects(other);
-}
-
-// One of the element types that can cause graphics to be drawn onto the target canvas. Specifically: circle, ellipse,
-// image, line, path, polygon, polyline, rect, text and use.
-static bool isGraphicsElement(const RenderElement& renderer)
-{
-    return renderer.isSVGShape() || renderer.isSVGText() || renderer.isSVGImage() || renderer.element()->hasTagName(SVGNames::useTag);
-}
-
-// The SVG addFocusRingRects() method adds rects in local coordinates so the default absoluteFocusRingQuads
-// returns incorrect values for SVG objects. Overriding this method provides access to the absolute bounds.
-void RenderSVGModelObject::absoluteFocusRingQuads(Vector<FloatQuad>& quads)
-{
-    quads.append(localToAbsoluteQuad(FloatQuad(repaintRectInLocalCoordinates())));
-}
-    
-bool RenderSVGModelObject::checkIntersection(RenderElement* renderer, const FloatRect& rect)
-{
-    if (!renderer || renderer->style().pointerEvents() == PointerEvents::None)
-        return false;
-    if (!isGraphicsElement(*renderer))
-        return false;
-    AffineTransform ctm;
-    SVGElement* svgElement = downcast<SVGElement>(renderer->element());
-    getElementCTM(svgElement, ctm);
-    ASSERT(svgElement->renderer());
-    return intersectsAllowingEmpty(rect, ctm.mapRect(svgElement->renderer()->repaintRectInLocalCoordinates()));
-}
-
-bool RenderSVGModelObject::checkEnclosure(RenderElement* renderer, const FloatRect& rect)
-{
-    if (!renderer || renderer->style().pointerEvents() == PointerEvents::None)
-        return false;
-    if (!isGraphicsElement(*renderer))
-        return false;
-    AffineTransform ctm;
-    SVGElement* svgElement = downcast<SVGElement>(renderer->element());
-    getElementCTM(svgElement, ctm);
-    ASSERT(svgElement->renderer());
-    return rect.contains(ctm.mapRect(svgElement->renderer()->repaintRectInLocalCoordinates()));
-}
-
-} // namespace WebCore
</del></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGModelObjecth"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/rendering/svg/RenderSVGModelObject.h (286961 => 286962)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGModelObject.h        2021-12-13 19:52:03 UTC (rev 286961)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGModelObject.h   2021-12-13 19:55:06 UTC (rev 286962)
</span><span class="lines">@@ -1,84 +0,0 @@
</span><del>-/*
- * Copyright (c) 2009, Google Inc. All rights reserved.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- * 
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#pragma once
-
-#include "RenderElement.h"
-#include "SVGElement.h"
-#include "SVGRenderSupport.h"
-
-namespace WebCore {
-
-// Most renderers in the SVG rendering tree will inherit from this class
-// but not all. (e.g. RenderSVGForeignObject, RenderSVGBlock) thus methods
-// required by SVG renders need to be declared on RenderObject, but shared
-// logic can go in this class or in SVGRenderSupport.
-
-class SVGElement;
-
-class RenderSVGModelObject : public RenderElement {
-    WTF_MAKE_ISO_ALLOCATED(RenderSVGModelObject);
-public:
-    LayoutRect clippedOverflowRect(const RenderLayerModelObject* repaintContainer, VisibleRectContext) const override;
-    std::optional<FloatRect> computeFloatVisibleRectInContainer(const FloatRect&, const RenderLayerModelObject* container, VisibleRectContext) const final;
-    LayoutRect outlineBoundsForRepaint(const RenderLayerModelObject* repaintContainer, const RenderGeometryMap*) const final;
-
-    void absoluteRects(Vector<IntRect>&, const LayoutPoint& accumulatedOffset) const final;
-    void absoluteQuads(Vector<FloatQuad>&, bool* wasFixed) const override;
-
-    void mapLocalToContainer(const RenderLayerModelObject* ancestorContainer, TransformState&, OptionSet<MapCoordinatesMode>, bool* wasFixed) const final;
-    const RenderObject* pushMappingToContainer(const RenderLayerModelObject* ancestorToStopAt, RenderGeometryMap&) const final;
-    void styleDidChange(StyleDifference, const RenderStyle* oldStyle) override;
-
-    static bool checkIntersection(RenderElement*, const FloatRect&);
-    static bool checkEnclosure(RenderElement*, const FloatRect&);
-
-    SVGElement& element() const { return downcast<SVGElement>(nodeForNonAnonymous()); }
-
-    // FIXME: [LBSE] Upstream SVGBoundingBoxComputation
-    // LayoutRect visualOverflowRectEquivalent() const { return SVGBoundingBoxComputation::computeVisualOverflowRect(*this); }
-    LayoutRect visualOverflowRectEquivalent() const { return LayoutRect(); }
-
-protected:
-    RenderSVGModelObject(SVGElement&, RenderStyle&&);
-
-    void willBeDestroyed() override;
-
-private:
-    bool isRenderSVGModelObject() const final { return true; }
-
-    // This method should never be called, SVG uses a different nodeAtPoint method
-    bool nodeAtPoint(const HitTestRequest&, HitTestResult&, const HitTestLocation& locationInContainer, const LayoutPoint& accumulatedOffset, HitTestAction) override;
-    void absoluteFocusRingQuads(Vector<FloatQuad>&) final;
-};
-
-} // namespace WebCore
-
-SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSVGModelObject, isRenderSVGModelObject())
</del></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGShapecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGShape.cpp (286961 => 286962)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGShape.cpp    2021-12-13 19:52:03 UTC (rev 286961)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGShape.cpp       2021-12-13 19:55:06 UTC (rev 286962)
</span><span class="lines">@@ -52,7 +52,7 @@
</span><span class="cx"> WTF_MAKE_ISO_ALLOCATED_IMPL(RenderSVGShape);
</span><span class="cx"> 
</span><span class="cx"> RenderSVGShape::RenderSVGShape(SVGGraphicsElement& element, RenderStyle&& style)
</span><del>-    : RenderSVGModelObject(element, WTFMove(style))
</del><ins>+    : LegacyRenderSVGModelObject(element, WTFMove(style))
</ins><span class="cx">     , m_needsBoundariesUpdate(false) // Default is false, the cached rects are empty from the beginning.
</span><span class="cx">     , m_needsShapeUpdate(true) // Default is true, so we grab a Path object once from SVGGraphicsElement.
</span><span class="cx">     , m_needsTransformUpdate(true) // Default is true, so we grab a AffineTransform object once from SVGGraphicsElement.
</span><span class="lines">@@ -168,7 +168,7 @@
</span><span class="cx"> 
</span><span class="cx">     // If our bounds changed, notify the parents.
</span><span class="cx">     if (updateCachedBoundariesInParents)
</span><del>-        RenderSVGModelObject::setNeedsBoundariesUpdate();
</del><ins>+        LegacyRenderSVGModelObject::setNeedsBoundariesUpdate();
</ins><span class="cx"> 
</span><span class="cx">     repainter.repaintAfterLayout();
</span><span class="cx">     clearNeedsLayout();
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGShapeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGShape.h (286961 => 286962)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGShape.h      2021-12-13 19:52:03 UTC (rev 286961)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGShape.h 2021-12-13 19:55:06 UTC (rev 286962)
</span><span class="lines">@@ -27,7 +27,7 @@
</span><span class="cx"> 
</span><span class="cx"> #include "AffineTransform.h"
</span><span class="cx"> #include "FloatRect.h"
</span><del>-#include "RenderSVGModelObject.h"
</del><ins>+#include "LegacyRenderSVGModelObject.h"
</ins><span class="cx"> #include "SVGMarkerData.h"
</span><span class="cx"> #include <memory>
</span><span class="cx"> #include <wtf/Vector.h>
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx"> class RenderSVGResource;
</span><span class="cx"> class SVGGraphicsElement;
</span><span class="cx"> 
</span><del>-class RenderSVGShape : public RenderSVGModelObject {
</del><ins>+class RenderSVGShape : public LegacyRenderSVGModelObject {
</ins><span class="cx">     WTF_MAKE_ISO_ALLOCATED(RenderSVGShape);
</span><span class="cx"> public:
</span><span class="cx">     enum PointCoordinateSpace {
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGShapeInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGShapeInlines.h (286961 => 286962)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGShapeInlines.h       2021-12-13 19:52:03 UTC (rev 286961)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGShapeInlines.h  2021-12-13 19:55:06 UTC (rev 286962)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx"> 
</span><span class="cx"> inline SVGGraphicsElement& RenderSVGShape::graphicsElement() const
</span><span class="cx"> {
</span><del>-    return downcast<SVGGraphicsElement>(RenderSVGModelObject::element());
</del><ins>+    return downcast<SVGGraphicsElement>(LegacyRenderSVGModelObject::element());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGSVGElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGSVGElement.cpp (286961 => 286962)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGSVGElement.cpp       2021-12-13 19:52:03 UTC (rev 286961)
+++ trunk/Source/WebCore/svg/SVGSVGElement.cpp  2021-12-13 19:55:06 UTC (rev 286962)
</span><span class="lines">@@ -245,12 +245,12 @@
</span><span class="cx"> 
</span><span class="cx"> static bool checkIntersectionWithoutUpdatingLayout(SVGElement& element, SVGRect& rect)
</span><span class="cx"> {
</span><del>-    return RenderSVGModelObject::checkIntersection(element.renderer(), rect.value());
</del><ins>+    return LegacyRenderSVGModelObject::checkIntersection(element.renderer(), rect.value());
</ins><span class="cx"> }
</span><span class="cx">     
</span><span class="cx"> static bool checkEnclosureWithoutUpdatingLayout(SVGElement& element, SVGRect& rect)
</span><span class="cx"> {
</span><del>-    return RenderSVGModelObject::checkEnclosure(element.renderer(), rect.value());
</del><ins>+    return LegacyRenderSVGModelObject::checkEnclosure(element.renderer(), rect.value());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Ref<NodeList> SVGSVGElement::getIntersectionList(SVGRect& rect, SVGElement* referenceElement)
</span></span></pre>
</div>
</div>

</body>
</html>