Title: [226127] trunk/Source/WebCore
Revision
226127
Author
[email protected]
Date
2017-12-19 10:56:47 -0800 (Tue, 19 Dec 2017)

Log Message

[RenderTreeBuilder] Move finding-the-parent/creating-wrapper logic from RenderTableRow::addChild to RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=180964
<rdar://problem/36123315>

Reviewed by Antti Koivisto.

This is in preparation for removing all tree mutation from renderering code.

Covered by existing tests.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* rendering/RenderTableRow.cpp:
(WebCore::RenderTableRow::addChild):
* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::insertChild):
* rendering/updating/RenderTreeBuilder.h:
* rendering/updating/RenderTreeBuilderTable.cpp: Added.
(WebCore::RenderTreeBuilder::Table::findOrCreateParentForChild):
* rendering/updating/RenderTreeBuilderTable.h: Copied from Source/WebCore/rendering/updating/RenderTreeBuilder.h.

Modified Paths

Added Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (226126 => 226127)


--- trunk/Source/WebCore/ChangeLog	2017-12-19 18:37:44 UTC (rev 226126)
+++ trunk/Source/WebCore/ChangeLog	2017-12-19 18:56:47 UTC (rev 226127)
@@ -1,3 +1,26 @@
+2017-12-19  Zalan Bujtas  <[email protected]>
+
+        [RenderTreeBuilder] Move finding-the-parent/creating-wrapper logic from RenderTableRow::addChild to RenderTreeBuilder
+        https://bugs.webkit.org/show_bug.cgi?id=180964
+        <rdar://problem/36123315>
+
+        Reviewed by Antti Koivisto.
+
+        This is in preparation for removing all tree mutation from renderering code.
+
+        Covered by existing tests.
+
+        * Sources.txt:
+        * WebCore.xcodeproj/project.pbxproj:
+        * rendering/RenderTableRow.cpp:
+        (WebCore::RenderTableRow::addChild):
+        * rendering/updating/RenderTreeBuilder.cpp:
+        (WebCore::RenderTreeBuilder::insertChild):
+        * rendering/updating/RenderTreeBuilder.h:
+        * rendering/updating/RenderTreeBuilderTable.cpp: Added.
+        (WebCore::RenderTreeBuilder::Table::findOrCreateParentForChild):
+        * rendering/updating/RenderTreeBuilderTable.h: Copied from Source/WebCore/rendering/updating/RenderTreeBuilder.h.
+
 2017-12-19  Youenn Fablet  <[email protected]>
 
         Service Worker should not clean HTTP headers added by the application or by fetch specification before service worker interception

Modified: trunk/Source/WebCore/Sources.txt (226126 => 226127)


--- trunk/Source/WebCore/Sources.txt	2017-12-19 18:37:44 UTC (rev 226126)
+++ trunk/Source/WebCore/Sources.txt	2017-12-19 18:56:47 UTC (rev 226127)
@@ -1980,6 +1980,7 @@
 rendering/svg/SVGTextQuery.cpp
 
 rendering/updating/RenderTreeBuilder.cpp
+rendering/updating/RenderTreeBuilderTable.cpp
 rendering/updating/RenderTreePosition.cpp
 rendering/updating/RenderTreeUpdater.cpp
 rendering/updating/RenderTreeUpdaterFirstLetter.cpp

Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (226126 => 226127)


--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2017-12-19 18:37:44 UTC (rev 226126)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2017-12-19 18:56:47 UTC (rev 226127)
@@ -389,6 +389,7 @@
 		10FB084B14E15C7E00A3DB98 /* PublicURLManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 10FB084A14E15C7E00A3DB98 /* PublicURLManager.h */; };
 		112B34D51E60B98300BB310A /* SimpleLineLayoutPagination.h in Headers */ = {isa = PBXBuildFile; fileRef = 112B34D41E60B98300BB310A /* SimpleLineLayoutPagination.h */; };
 		113D0B521F9FDD2B00F611BB /* LayoutContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 113D0B501F9FDD2B00F611BB /* LayoutContext.h */; settings = {ATTRIBUTES = (Private, ); }; };
+		119340791FE8B92300935F1E /* RenderTreeBuilderTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 119340771FE8B92300935F1E /* RenderTreeBuilderTable.h */; };
 		11E067EE1E6246E500162D16 /* SimpleLineLayoutCoverage.h in Headers */ = {isa = PBXBuildFile; fileRef = 11E067ED1E6246E500162D16 /* SimpleLineLayoutCoverage.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		1400D7A817136EA70077CE05 /* ScriptWrappableInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 1400D7A717136EA70077CE05 /* ScriptWrappableInlines.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		1403B99709EB13AF00797C7F /* DOMWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = 1403B99509EB13AF00797C7F /* DOMWindow.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -5561,6 +5562,8 @@
 		112B34D41E60B98300BB310A /* SimpleLineLayoutPagination.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimpleLineLayoutPagination.h; sourceTree = "<group>"; };
 		113D0B4F1F9FDD2B00F611BB /* LayoutContext.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = LayoutContext.cpp; sourceTree = "<group>"; };
 		113D0B501F9FDD2B00F611BB /* LayoutContext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LayoutContext.h; sourceTree = "<group>"; };
+		119340761FE8B92300935F1E /* RenderTreeBuilderTable.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RenderTreeBuilderTable.cpp; sourceTree = "<group>"; };
+		119340771FE8B92300935F1E /* RenderTreeBuilderTable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RenderTreeBuilderTable.h; sourceTree = "<group>"; };
 		11E067EB1E62461300162D16 /* SimpleLineLayoutCoverage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SimpleLineLayoutCoverage.cpp; sourceTree = "<group>"; };
 		11E067ED1E6246E500162D16 /* SimpleLineLayoutCoverage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimpleLineLayoutCoverage.h; sourceTree = "<group>"; };
 		1400D7A717136EA70077CE05 /* ScriptWrappableInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptWrappableInlines.h; sourceTree = "<group>"; };
@@ -24510,6 +24513,8 @@
 			children = (
 				E47C39201FE6E0D900BBBC6B /* RenderTreeBuilder.cpp */,
 				E47C392A1FE6E0DE00BBBC6B /* RenderTreeBuilder.h */,
+				119340761FE8B92300935F1E /* RenderTreeBuilderTable.cpp */,
+				119340771FE8B92300935F1E /* RenderTreeBuilderTable.h */,
 				E47C39291FE6E0DE00BBBC6B /* RenderTreePosition.cpp */,
 				E47C39241FE6E0DB00BBBC6B /* RenderTreePosition.h */,
 				E47C391F1FE6E0D800BBBC6B /* RenderTreeUpdater.cpp */,
@@ -26372,7 +26377,6 @@
 				079D086B162F21F900DB8658 /* CaptionUserPreferencesMediaAF.h in Headers */,
 				07B7116D1D899E63009F0FFB /* CaptureDevice.h in Headers */,
 				07B7116F1D899E63009F0FFB /* CaptureDeviceManager.h in Headers */,
-				E47C392D1FE6E0F300BBBC6B /* RenderTreeBuilder.h in Headers */,
 				CDC734151977896D0046BFC5 /* CARingBuffer.h in Headers */,
 				6550B69E099DF0270090D781 /* CDATASection.h in Headers */,
 				CDF4B7161E00B7E500E235A2 /* CDM.h in Headers */,
@@ -26477,7 +26481,6 @@
 				9746AF2114F4DDE6003E7A71 /* Coordinates.h in Headers */,
 				3F8020351E9E47BF00DEC61D /* CoreAudioCaptureDevice.h in Headers */,
 				3F8020371E9E47C500DEC61D /* CoreAudioCaptureDeviceManager.h in Headers */,
-				E47C392E1FE6E0F700BBBC6B /* RenderTreePosition.h in Headers */,
 				07AFF4221EFB144900B545B3 /* CoreAudioCaptureSourceIOS.h in Headers */,
 				CD7D33481C7A16BF00041293 /* CoreVideoSoftLink.h in Headers */,
 				862F129E18C1576F005C54AF /* CountedUserActivity.h in Headers */,
@@ -26839,7 +26842,6 @@
 				A7CFB3D20B7ED10A0070C32D /* DragImage.h in Headers */,
 				1AF5E4D91E5677A9004A1F01 /* DragItem.h in Headers */,
 				81F65FF613788FAA00FF6F2D /* DragState.h in Headers */,
-				E47C39321FE6E10500BBBC6B /* RenderTreeUpdaterListItem.h in Headers */,
 				E1BA66F11742BD8600C20251 /* DynamicLinkerInterposing.h in Headers */,
 				FD6ED2C8136B8E66003CF072 /* DynamicsCompressor.h in Headers */,
 				FD537357137B653B00008DCE /* DynamicsCompressorKernel.h in Headers */,
@@ -27236,7 +27238,6 @@
 				977B3878122883E900B81FF8 /* HTMLTokenizer.h in Headers */,
 				0707568C142262D600414161 /* HTMLTrackElement.h in Headers */,
 				977B37261228721700B81FF8 /* HTMLTreeBuilder.h in Headers */,
-				E47C39301FE6E0FD00BBBC6B /* RenderTreeUpdaterFirstLetter.h in Headers */,
 				A8EA79F20A1916DF00A8EF5F /* HTMLUListElement.h in Headers */,
 				AD49914318F0815100BF0092 /* HTMLUnknownElement.h in Headers */,
 				E44613AB0CD6331000FADA75 /* HTMLVideoElement.h in Headers */,
@@ -28523,7 +28524,6 @@
 				1A569D0B0D7E2B82007C3983 /* NP_jsobject.h in Headers */,
 				1A927FD21416A15B003A83C8 /* npapi.h in Headers */,
 				1A219B3B0DCA87AB0040E3A0 /* npfunctions.h in Headers */,
-				E47C392F1FE6E0F900BBBC6B /* RenderTreeUpdater.h in Headers */,
 				1A927FD31416A15B003A83C8 /* npruntime.h in Headers */,
 				1A569D0F0D7E2B82007C3983 /* npruntime_impl.h in Headers */,
 				1A569D100D7E2B82007C3983 /* npruntime_internal.h in Headers */,
@@ -28677,7 +28677,6 @@
 				070E09191875EEFC003A1D3C /* PlatformMediaSession.h in Headers */,
 				07F944161864D046005D31CB /* PlatformMediaSessionManager.h in Headers */,
 				41BF70100FE86F61005E8DEC /* PlatformMessagePortChannel.h in Headers */,
-				E47C39331FE6E10800BBBC6B /* RenderTreeUpdaterMultiColumn.h in Headers */,
 				935C476909AC4D4300A6AAB4 /* PlatformMouseEvent.h in Headers */,
 				C598905814E9C29900E8D18B /* PlatformPasteboard.h in Headers */,
 				BCEC01D70C274EB4009F4EC9 /* PlatformScreen.h in Headers */,
@@ -28925,6 +28924,14 @@
 				FED13D520CEA949700D89466 /* RenderThemeIOS.h in Headers */,
 				BCEA4887097D93020094C9E4 /* RenderThemeMac.h in Headers */,
 				93F1998C08245E59001E9ABC /* RenderTreeAsText.h in Headers */,
+				E47C392D1FE6E0F300BBBC6B /* RenderTreeBuilder.h in Headers */,
+				119340791FE8B92300935F1E /* RenderTreeBuilderTable.h in Headers */,
+				E47C392E1FE6E0F700BBBC6B /* RenderTreePosition.h in Headers */,
+				E47C392F1FE6E0F900BBBC6B /* RenderTreeUpdater.h in Headers */,
+				E47C39301FE6E0FD00BBBC6B /* RenderTreeUpdaterFirstLetter.h in Headers */,
+				E47C39311FE6E10200BBBC6B /* RenderTreeUpdaterGeneratedContent.h in Headers */,
+				E47C39321FE6E10500BBBC6B /* RenderTreeUpdaterListItem.h in Headers */,
+				E47C39331FE6E10800BBBC6B /* RenderTreeUpdaterMultiColumn.h in Headers */,
 				E44614520CD68A3500FADA75 /* RenderVideo.h in Headers */,
 				BCEA4868097D93020094C9E4 /* RenderView.h in Headers */,
 				BE20507E18A458C20080647E /* RenderVTTCue.h in Headers */,
@@ -29207,7 +29214,6 @@
 				97BC6A3C1505F081001B74AC /* SQLError.h in Headers */,
 				1A22464A0CC98DDB00C05240 /* SQLiteDatabase.h in Headers */,
 				7E474E1F12494DC900235364 /* SQLiteDatabaseTracker.h in Headers */,
-				E47C39311FE6E10200BBBC6B /* RenderTreeUpdaterGeneratedContent.h in Headers */,
 				7E474E1E12494DC900235364 /* SQLiteDatabaseTrackerClient.h in Headers */,
 				B5A684220FFABE9800D24689 /* SQLiteFileSystem.h in Headers */,
 				512BDB4B1C456FFA006494DF /* SQLiteIDBBackingStore.h in Headers */,

Modified: trunk/Source/WebCore/rendering/RenderTableRow.cpp (226126 => 226127)


--- trunk/Source/WebCore/rendering/RenderTableRow.cpp	2017-12-19 18:37:44 UTC (rev 226126)
+++ trunk/Source/WebCore/rendering/RenderTableRow.cpp	2017-12-19 18:56:47 UTC (rev 226127)
@@ -113,58 +113,12 @@
 
 void RenderTableRow::addChild(RenderTreeBuilder& builder, RenderPtr<RenderObject> child, RenderObject* beforeChild)
 {
-    if (!is<RenderTableCell>(*child)) {
-        RenderObject* last = beforeChild;
-        if (!last)
-            last = lastCell();
-        if (last && last->isAnonymous() && is<RenderTableCell>(*last) && !last->isBeforeOrAfterContent()) {
-            RenderTableCell& cell = downcast<RenderTableCell>(*last);
-            if (beforeChild == &cell)
-                beforeChild = cell.firstChild();
-            builder.insertChild(cell, WTFMove(child), beforeChild);
-            return;
-        }
-
-        if (beforeChild && !beforeChild->isAnonymous() && beforeChild->parent() == this) {
-            RenderObject* cell = beforeChild->previousSibling();
-            if (is<RenderTableCell>(cell) && cell->isAnonymous()) {
-                builder.insertChild(downcast<RenderTableCell>(*cell), WTFMove(child));
-                return;
-            }
-        }
-
-        // Try to find an anonymous container for the child.
-        if (last && last->parent() && last->parent()->isAnonymous() && !last->parent()->isBeforeOrAfterContent()) {
-            // If beforeChild is inside an anonymous cell, insert into the cell.
-            if (!is<RenderTableCell>(*last)) {
-                builder.insertChild(*last->parent(), WTFMove(child), beforeChild);
-                return;
-            }
-            // If beforeChild is inside an anonymous row, insert into the row.
-            auto& parent = *last->parent();
-            if (is<RenderTableRow>(parent)) {
-                auto newCell = RenderTableCell::createAnonymousWithParentRenderer(*this);
-                auto& cell = *newCell;
-                builder.insertChild(parent, WTFMove(newCell), beforeChild);
-                builder.insertChild(cell, WTFMove(child));
-                return;
-            }
-        }
-        auto newCell = RenderTableCell::createAnonymousWithParentRenderer(*this);
-        auto& cell = *newCell;
-        builder.insertChild(*this, WTFMove(newCell), beforeChild);
-        builder.insertChild(cell, WTFMove(child));
-        return;
-    } 
-
     if (beforeChild && beforeChild->parent() != this)
         beforeChild = splitAnonymousBoxesAroundChild(beforeChild);    
 
-    RenderTableCell& cell = downcast<RenderTableCell>(*child);
-
     // Generated content can result in us having a null section so make sure to null check our parent.
-    if (RenderTableSection* section = this->section())
-        section->addCell(&cell, this);
+    if (auto* section = this->section())
+        section->addCell(&downcast<RenderTableCell>(*child), this);
 
     ASSERT(!beforeChild || is<RenderTableCell>(*beforeChild));
     RenderBox::addChild(builder, WTFMove(child), beforeChild);

Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp (226126 => 226127)


--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp	2017-12-19 18:37:44 UTC (rev 226126)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp	2017-12-19 18:56:47 UTC (rev 226127)
@@ -30,7 +30,9 @@
 #include "RenderRuby.h"
 #include "RenderRubyBase.h"
 #include "RenderRubyRun.h"
+#include "RenderTableRow.h"
 #include "RenderText.h"
+#include "RenderTreeBuilderTable.h"
 #include "RenderTreeUpdater.h"
 
 namespace WebCore {
@@ -39,6 +41,7 @@
 
 RenderTreeBuilder::RenderTreeBuilder(RenderView& view)
     : m_view(view)
+    , m_tableBuilder(std::make_unique<Table>(*this))
 {
     RELEASE_ASSERT(!s_current || &m_view != &s_current->m_view);
     m_previous = s_current;
@@ -59,6 +62,11 @@
             beforeChild = wrapperInline;
     }
 
+    if (is<RenderTableRow>(parent)) {
+        m_tableBuilder->findOrCreateParentForChild(downcast<RenderTableRow>(parent), *child, beforeChild).addChild(*this, WTFMove(child), beforeChild);
+        return;
+    }
+
     if (is<RenderRubyRun>(parent)) {
         rubyRunInsertChild(downcast<RenderRubyRun>(parent), WTFMove(child), beforeChild);
         return;

Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.h (226126 => 226127)


--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.h	2017-12-19 18:37:44 UTC (rev 226126)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.h	2017-12-19 18:56:47 UTC (rev 226127)
@@ -45,11 +45,14 @@
     static RenderTreeBuilder* current() { return s_current; }
 
 private:
+    class Table;
+
     void rubyRunInsertChild(RenderRubyRun&, RenderPtr<RenderObject> child, RenderObject* beforeChild);
 
     RenderView& m_view;
 
     RenderTreeBuilder* m_previous { nullptr };
+    std::unique_ptr<Table> m_tableBuilder;
     static RenderTreeBuilder* s_current;
 };
 

Added: trunk/Source/WebCore/rendering/updating/RenderTreeBuilderTable.cpp (0 => 226127)


--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilderTable.cpp	                        (rev 0)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilderTable.cpp	2017-12-19 18:56:47 UTC (rev 226127)
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2017 Apple 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:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS 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 APPLE INC. OR ITS 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 "RenderTreeBuilderTable.h"
+
+#include "RenderTableCell.h"
+#include "RenderTableRow.h"
+#include "RenderTreeBuilder.h"
+
+namespace WebCore {
+
+RenderTreeBuilder::Table::Table(RenderTreeBuilder& builder)
+    : m_builder(builder)
+{
+}
+
+RenderElement& RenderTreeBuilder::Table::findOrCreateParentForChild(RenderTableRow& parent, const RenderObject& child, RenderObject*& beforeChild)
+{
+    if (is<RenderTableCell>(child))
+        return parent;
+
+    if (beforeChild && !beforeChild->isAnonymous() && beforeChild->parent() == &parent) {
+        auto* previousSibling = beforeChild->previousSibling();
+        if (is<RenderTableCell>(previousSibling) && previousSibling->isAnonymous()) {
+            beforeChild = nullptr;
+            return downcast<RenderElement>(*previousSibling);
+        }
+    }
+
+    auto* lastChild = beforeChild ? beforeChild : parent.lastCell();
+    if (lastChild) {
+        if (is<RenderTableCell>(*lastChild) && lastChild->isAnonymous() && !lastChild->isBeforeOrAfterContent()) {
+            if (beforeChild == lastChild)
+                beforeChild = downcast<RenderElement>(*lastChild).firstChild();
+            return downcast<RenderElement>(*lastChild);
+        }
+
+        // Try to find an anonymous container for the child.
+        if (auto* lastChildParent = lastChild->parent()) {
+            if (lastChildParent->isAnonymous() && !lastChildParent->isBeforeOrAfterContent()) {
+                // If beforeChild is inside an anonymous cell, insert into the cell.
+                if (!is<RenderTableCell>(*lastChild))
+                    return *lastChildParent;
+                // If beforeChild is inside an anonymous row, insert into the row.
+                if (is<RenderTableRow>(*lastChildParent)) {
+                    auto newCell = RenderTableCell::createAnonymousWithParentRenderer(parent);
+                    auto& cell = *newCell;
+                    m_builder.insertChild(*lastChildParent, WTFMove(newCell), beforeChild);
+                    beforeChild = nullptr;
+                    return cell;
+                }
+            }
+        }
+    }
+    auto newCell = RenderTableCell::createAnonymousWithParentRenderer(parent);
+    auto& cell = *newCell;
+    m_builder.insertChild(parent, WTFMove(newCell), beforeChild);
+    beforeChild = nullptr;
+    return cell;
+}
+
+}

Copied: trunk/Source/WebCore/rendering/updating/RenderTreeBuilderTable.h (from rev 226126, trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.h) (0 => 226127)


--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilderTable.h	                        (rev 0)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilderTable.h	2017-12-19 18:56:47 UTC (rev 226127)
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2017 Apple 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:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS 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 APPLE INC. OR ITS 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 "RenderTreeUpdater.h"
+
+namespace WebCore {
+
+class RenderElement;
+class RenderObject;
+class RenderTableRow;
+class RenderTreeBuilder;
+
+class RenderTreeBuilder::Table {
+public:
+    Table(RenderTreeBuilder&);
+
+    RenderElement& findOrCreateParentForChild(RenderTableRow& parent, const RenderObject& child, RenderObject*& beforeChild);
+
+private:
+    RenderTreeBuilder& m_builder;
+};
+
+}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to