Diff
Modified: trunk/Source/WebCore/ChangeLog (240841 => 240842)
--- trunk/Source/WebCore/ChangeLog 2019-02-01 10:32:55 UTC (rev 240841)
+++ trunk/Source/WebCore/ChangeLog 2019-02-01 14:15:09 UTC (rev 240842)
@@ -1,3 +1,26 @@
+2019-02-01 Zalan Bujtas <[email protected]>
+
+ [LFC] Set intrinsic size on Layout::Replaced
+ https://bugs.webkit.org/show_bug.cgi?id=194139
+
+ Reviewed by Antti Koivisto.
+
+ Eventually Layout::Replaced will track intrinsic size internally until then let's query the RenderReplaced.
+
+ * layout/layouttree/LayoutBox.h:
+ (WebCore::Layout::Box::replaced):
+ * layout/layouttree/LayoutReplaced.cpp:
+ (WebCore::Layout::Replaced::hasIntrinsicWidth const):
+ (WebCore::Layout::Replaced::hasIntrinsicHeight const):
+ (WebCore::Layout::Replaced::intrinsicWidth const):
+ (WebCore::Layout::Replaced::intrinsicHeight const):
+ * layout/layouttree/LayoutReplaced.h:
+ (WebCore::Layout::Replaced::setIntrinsicSize):
+ (WebCore::Layout::Replaced::setIntrinsicRatio):
+ * layout/layouttree/LayoutTreeBuilder.cpp:
+ (WebCore::Layout::TreeBuilder::createSubTree):
+ * rendering/RenderReplaced.h:
+
2019-02-01 Claudio Saavedra <[email protected]>
Race-condition during scrolling thread creation
Modified: trunk/Source/WebCore/layout/layouttree/LayoutBox.h (240841 => 240842)
--- trunk/Source/WebCore/layout/layouttree/LayoutBox.h 2019-02-01 10:32:55 UTC (rev 240841)
+++ trunk/Source/WebCore/layout/layouttree/LayoutBox.h 2019-02-01 14:15:09 UTC (rev 240842)
@@ -131,6 +131,8 @@
const RenderStyle& style() const { return m_style; }
const Replaced* replaced() const { return m_replaced.get(); }
+ // FIXME: Temporary until after intrinsic size change is tracked by Replaced.
+ Replaced* replaced() { return m_replaced.get(); }
void setParent(Container& parent) { m_parent = &parent; }
void setNextSibling(Box& nextSibling) { m_nextSibling = &nextSibling; }
@@ -147,7 +149,7 @@
Box* m_previousSibling { nullptr };
Box* m_nextSibling { nullptr };
- std::unique_ptr<const Replaced> m_replaced;
+ std::unique_ptr<Replaced> m_replaced;
unsigned m_baseTypeFlags : 4;
};
Modified: trunk/Source/WebCore/layout/layouttree/LayoutReplaced.cpp (240841 => 240842)
--- trunk/Source/WebCore/layout/layouttree/LayoutReplaced.cpp 2019-02-01 10:32:55 UTC (rev 240841)
+++ trunk/Source/WebCore/layout/layouttree/LayoutReplaced.cpp 2019-02-01 14:15:09 UTC (rev 240842)
@@ -44,12 +44,12 @@
bool Replaced::hasIntrinsicWidth() const
{
- return m_layoutBox->style().logicalWidth().isIntrinsic();
+ return m_intrinsicSize || m_layoutBox->style().logicalWidth().isIntrinsic();
}
bool Replaced::hasIntrinsicHeight() const
{
- return m_layoutBox->style().logicalHeight().isIntrinsic();
+ return m_intrinsicSize || m_layoutBox->style().logicalHeight().isIntrinsic();
}
bool Replaced::hasIntrinsicRatio() const
@@ -60,6 +60,8 @@
LayoutUnit Replaced::intrinsicWidth() const
{
ASSERT(hasIntrinsicWidth());
+ if (m_intrinsicSize)
+ return m_intrinsicSize->width();
return m_layoutBox->style().logicalWidth().value();
}
@@ -66,6 +68,8 @@
LayoutUnit Replaced::intrinsicHeight() const
{
ASSERT(hasIntrinsicHeight());
+ if (m_intrinsicSize)
+ return m_intrinsicSize->height();
return m_layoutBox->style().logicalHeight().value();
}
Modified: trunk/Source/WebCore/layout/layouttree/LayoutReplaced.h (240841 => 240842)
--- trunk/Source/WebCore/layout/layouttree/LayoutReplaced.h 2019-02-01 10:32:55 UTC (rev 240841)
+++ trunk/Source/WebCore/layout/layouttree/LayoutReplaced.h 2019-02-01 14:15:09 UTC (rev 240842)
@@ -27,6 +27,7 @@
#if ENABLE(LAYOUT_FORMATTING_CONTEXT)
+#include "LayoutSize.h"
#include "LayoutUnit.h"
#include <wtf/IsoMalloc.h>
#include <wtf/WeakPtr.h>
@@ -43,6 +44,10 @@
Replaced(const Box&);
~Replaced() = default;
+ // FIXME: Temporary until after intrinsic size change is tracked internallys.
+ void setIntrinsicSize(LayoutSize size) { m_intrinsicSize = size; }
+ void setIntrinsicRatio(LayoutUnit ratio) { m_intrinsicRatio = ratio; };
+
bool hasIntrinsicWidth() const;
bool hasIntrinsicHeight() const;
bool hasIntrinsicRatio() const;
@@ -52,6 +57,8 @@
private:
WeakPtr<const Box> m_layoutBox;
+ Optional<LayoutSize> m_intrinsicSize;
+ Optional<LayoutUnit> m_intrinsicRatio;
};
}
Modified: trunk/Source/WebCore/layout/layouttree/LayoutTreeBuilder.cpp (240841 => 240842)
--- trunk/Source/WebCore/layout/layouttree/LayoutTreeBuilder.cpp 2019-02-01 10:32:55 UTC (rev 240841)
+++ trunk/Source/WebCore/layout/layouttree/LayoutTreeBuilder.cpp 2019-02-01 14:15:09 UTC (rev 240842)
@@ -97,6 +97,9 @@
box = std::make_unique<Box>(elementAttributes(renderer), RenderStyle::clone(renderer.style()));
else
box = std::make_unique<InlineBox>(elementAttributes(renderer), RenderStyle::clone(renderer.style()));
+ // FIXME: We don't yet support all replaced elements.
+ if (box->replaced())
+ box->replaced()->setIntrinsicSize(renderer.intrinsicSize());
} else if (is<RenderElement>(child)) {
auto& renderer = downcast<RenderElement>(child);
auto display = renderer.style().display();
Modified: trunk/Source/WebCore/rendering/RenderReplaced.h (240841 => 240842)
--- trunk/Source/WebCore/rendering/RenderReplaced.h 2019-02-01 10:32:55 UTC (rev 240841)
+++ trunk/Source/WebCore/rendering/RenderReplaced.h 2019-02-01 14:15:09 UTC (rev 240842)
@@ -40,6 +40,8 @@
bool hasReplacedLogicalHeight() const;
bool setNeedsLayoutIfNeededAfterIntrinsicSizeChange();
+ LayoutSize intrinsicSize() const final { return m_intrinsicSize; }
+
protected:
RenderReplaced(Element&, RenderStyle&&);
RenderReplaced(Element&, RenderStyle&&, const LayoutSize& intrinsicSize);
@@ -47,7 +49,6 @@
void layout() override;
- LayoutSize intrinsicSize() const final { return m_intrinsicSize; }
void computeIntrinsicRatioInformation(FloatSize& intrinsicSize, double& intrinsicRatio) const override;
void computeIntrinsicLogicalWidths(LayoutUnit& minLogicalWidth, LayoutUnit& maxLogicalWidth) const final;
Modified: trunk/Tools/ChangeLog (240841 => 240842)
--- trunk/Tools/ChangeLog 2019-02-01 10:32:55 UTC (rev 240841)
+++ trunk/Tools/ChangeLog 2019-02-01 14:15:09 UTC (rev 240842)
@@ -1,3 +1,14 @@
+2019-02-01 Zalan Bujtas <[email protected]>
+
+ [LFC] Set intrinsic size on Layout::Replaced
+ https://bugs.webkit.org/show_bug.cgi?id=194139
+
+ Reviewed by Antti Koivisto.
+
+ 744
+
+ * LayoutReloaded/misc/LFC-passing-tests.txt:
+
2019-02-01 Carlos Garcia Campos <[email protected]>
[WPE] MiniBrowser: use g_file_new_for_commandline_arg
Modified: trunk/Tools/LayoutReloaded/misc/LFC-passing-tests.txt (240841 => 240842)
--- trunk/Tools/LayoutReloaded/misc/LFC-passing-tests.txt 2019-02-01 10:32:55 UTC (rev 240841)
+++ trunk/Tools/LayoutReloaded/misc/LFC-passing-tests.txt 2019-02-01 14:15:09 UTC (rev 240842)
@@ -415,20 +415,6 @@
css2.1/20110323/absolute-non-replaced-width-014.htm
css2.1/20110323/absolute-non-replaced-width-015.htm
css2.1/20110323/absolute-non-replaced-width-016.htm
-css2.1/20110323/absolute-replaced-height-004.htm
-css2.1/20110323/absolute-replaced-height-005.htm
-css2.1/20110323/absolute-replaced-height-007.htm
-css2.1/20110323/absolute-replaced-height-011.htm
-css2.1/20110323/absolute-replaced-height-012.htm
-css2.1/20110323/absolute-replaced-height-014.htm
-css2.1/20110323/absolute-replaced-height-018.htm
-css2.1/20110323/absolute-replaced-height-019.htm
-css2.1/20110323/absolute-replaced-height-021.htm
-css2.1/20110323/absolute-replaced-height-025.htm
-css2.1/20110323/absolute-replaced-height-026.htm
-css2.1/20110323/block-replaced-height-004.htm
-css2.1/20110323/block-replaced-height-005.htm
-css2.1/20110323/block-replaced-height-007.htm
css2.1/t0402-c71-fwd-parsing-00-f.html
css2.1/t0402-c71-fwd-parsing-01-f.html
css2.1/t0402-c71-fwd-parsing-03-f.html
@@ -449,8 +435,35 @@
css2.1/t0511-c21-pseud-link-02-e.html
css2.1/t0511-c21-pseud-link-03-e.html
css2.1/t0602-c13-inh-underlin-00-e.html
+css2.1/20110323/absolute-replaced-height-001.htm
+css2.1/20110323/absolute-replaced-height-002.htm
css2.1/t0603-c11-import-00-b.html
+css2.1/20110323/absolute-replaced-height-004.htm
+css2.1/20110323/absolute-replaced-height-005.htm
+css2.1/20110323/absolute-replaced-height-007.htm
+css2.1/20110323/absolute-replaced-height-008.htm
+css2.1/20110323/absolute-replaced-height-009.htm
+css2.1/20110323/absolute-replaced-height-011.htm
+css2.1/20110323/absolute-replaced-height-012.htm
+css2.1/20110323/absolute-replaced-height-014.htm
+css2.1/20110323/absolute-replaced-height-016.htm
css2.1/t0803-c5502-imrgn-r-00-b-ag.html
+css2.1/20110323/absolute-replaced-height-018.htm
+css2.1/20110323/absolute-replaced-height-019.htm
+css2.1/20110323/absolute-replaced-height-021.htm
+css2.1/20110323/absolute-replaced-height-022.htm
+css2.1/20110323/absolute-replaced-height-023.htm
+css2.1/20110323/absolute-replaced-height-025.htm
+css2.1/20110323/absolute-replaced-height-026.htm
+css2.1/20110323/absolute-replaced-height-028.htm
+css2.1/20110323/absolute-replaced-height-029.htm
+css2.1/20110323/absolute-replaced-height-030.htm
+css2.1/20110323/absolute-replaced-height-032.htm
+css2.1/20110323/absolute-replaced-height-033.htm
+css2.1/20110323/absolute-replaced-height-035.htm
+css2.1/20110323/absolute-replaced-height-036.htm
+css2.1/20110323/absolute-replaced-width-001.htm
+css2.1/20110323/absolute-replaced-width-008.htm
css2.1/t0803-c5502-mrgn-r-02-c.html
css2.1/t0803-c5502-mrgn-r-03-c.html
css2.1/t0803-c5504-imrgn-l-00-b-ag.html
@@ -463,6 +476,9 @@
css2.1/t0804-c5506-ipadn-t-01-b-a.html
css2.1/t0804-c5506-ipadn-t-02-b-a.html
css2.1/t0804-c5507-ipadn-r-00-b-ag.html
+css2.1/20110323/abspos-containing-block-initial-001.htm
+css2.1/20110323/abspos-containing-block-initial-004a.htm
+css2.1/20110323/abspos-containing-block-initial-004b.htm
css2.1/t0804-c5507-padn-r-00-c-ag.html
css2.1/t0804-c5507-padn-r-02-f.html
css2.1/t0804-c5507-padn-r-03-f.html
@@ -469,10 +485,26 @@
css2.1/t0804-c5508-ipadn-b-00-b-a.html
css2.1/t0804-c5508-ipadn-b-01-f-a.html
css2.1/t0804-c5508-ipadn-b-02-b-a.html
+css2.1/20110323/abspos-containing-block-initial-005a.htm
css2.1/t0804-c5509-ipadn-l-00-b-ag.html
+css2.1/20110323/abspos-containing-block-initial-005c.htm
+css2.1/20110323/abspos-containing-block-initial-007.htm
+css2.1/20110323/abspos-containing-block-initial-009b.htm
+css2.1/20110323/abspos-containing-block-initial-009e.htm
css2.1/t0804-c5509-padn-l-00-b-ag.html
css2.1/t0804-c5509-padn-l-02-f.html
+css2.1/20110323/at-import-001.htm
+css2.1/20110323/at-import-002.htm
+css2.1/20110323/at-import-003.htm
+css2.1/20110323/at-import-004.htm
+css2.1/20110323/at-import-005.htm
+css2.1/20110323/at-import-006.htm
+css2.1/20110323/at-import-007.htm
+css2.1/20110323/at-import-009.htm
+css2.1/20110323/at-import-010.htm
+css2.1/20110323/at-import-011.htm
css2.1/t0804-c5510-padn-00-b-ag.html
+css2.1/20110323/background-intrinsic-003.htm
css2.1/t0804-c5510-padn-02-f.html
css2.1/t0805-c5511-brdr-tw-01-b-g.html
css2.1/t0805-c5511-brdr-tw-02-b.html
@@ -481,9 +513,13 @@
css2.1/t0805-c5512-brdr-rw-01-b-g.html
css2.1/t0805-c5512-brdr-rw-02-b.html
css2.1/t0805-c5512-brdr-rw-03-b.html
+css2.1/20110323/background-intrinsic-008.htm
+css2.1/20110323/background-intrinsic-009.htm
+css2.1/20110323/block-non-replaced-height-001.htm
css2.1/t0805-c5513-brdr-bw-01-b-g.html
css2.1/t0805-c5513-brdr-bw-02-b.html
css2.1/t0805-c5513-brdr-bw-03-b.html
+css2.1/20110323/block-non-replaced-height-003.htm
css2.1/t0805-c5514-brdr-lw-00-b.html
css2.1/t0805-c5514-brdr-lw-01-b-g.html
css2.1/t0805-c5514-brdr-lw-02-b.html
@@ -496,41 +532,14 @@
css2.1/t0805-c5517-brdr-s-00-c.html
css2.1/t0805-c5517-ibrdr-s-00-a.html
css2.1/t0805-c5518-brdr-t-00-a.html
+css2.1/20110323/block-non-replaced-height-007.htm
css2.1/t0805-c5518-ibrdr-t-00-a.html
-css2.1/t0805-c5520-brdr-b-00-a.html
-css2.1/t0805-c5520-ibrdr-b-00-a.html
-css2.1/20110323/abspos-containing-block-initial-001.htm
-css2.1/20110323/abspos-containing-block-initial-004a.htm
-css2.1/20110323/abspos-containing-block-initial-004b.htm
-css2.1/t0805-c5522-brdr-00-b.html
-css2.1/20110323/abspos-containing-block-initial-005a.htm
-css2.1/20110323/abspos-containing-block-initial-005c.htm
-css2.1/20110323/abspos-containing-block-initial-007.htm
-css2.1/t0905-c414-flt-00-d.html
-css2.1/t0905-c414-flt-01-d-g.html
-css2.1/20110323/abspos-containing-block-initial-009b.htm
-css2.1/20110323/abspos-containing-block-initial-009e.htm
-css2.1/20110323/at-import-001.htm
-css2.1/20110323/at-import-002.htm
-css2.1/20110323/at-import-003.htm
-css2.1/20110323/at-import-004.htm
-css2.1/20110323/at-import-005.htm
-css2.1/20110323/at-import-006.htm
-css2.1/20110323/at-import-007.htm
-css2.1/20110323/at-import-009.htm
-css2.1/20110323/at-import-010.htm
-css2.1/20110323/at-import-011.htm
-css2.1/20110323/background-intrinsic-003.htm
-css2.1/20110323/background-intrinsic-008.htm
-css2.1/20110323/background-intrinsic-009.htm
-css2.1/20110323/block-non-replaced-height-001.htm
-css2.1/20110323/block-non-replaced-height-003.htm
-css2.1/t0905-c5525-fltinln-00-c-ag.html
-css2.1/20110323/block-non-replaced-height-007.htm
css2.1/20110323/block-non-replaced-height-009.htm
css2.1/20110323/block-non-replaced-height-011.htm
css2.1/20110323/block-non-replaced-height-013.htm
css2.1/20110323/block-non-replaced-height-015.htm
+css2.1/t0805-c5520-brdr-b-00-a.html
+css2.1/t0805-c5520-ibrdr-b-00-a.html
css2.1/20110323/block-non-replaced-width-003.htm
css2.1/20110323/block-non-replaced-width-004.htm
css2.1/20110323/block-non-replaced-width-005.htm
@@ -537,6 +546,15 @@
css2.1/20110323/block-non-replaced-width-006.htm
css2.1/20110323/block-non-replaced-width-007.htm
css2.1/20110323/block-non-replaced-width-008.htm
+css2.1/20110323/block-replaced-height-001.htm
+css2.1/20110323/block-replaced-height-004.htm
+css2.1/20110323/block-replaced-height-005.htm
+css2.1/20110323/block-replaced-height-007.htm
+css2.1/20110323/block-replaced-width-001.htm
+css2.1/t0805-c5522-brdr-00-b.html
+css2.1/t0905-c414-flt-00-d.html
+css2.1/t0905-c414-flt-01-d-g.html
+css2.1/t0905-c5525-fltinln-00-c-ag.html
css2.1/t1001-abs-pos-cb-01-b.html
css2.1/t1001-abs-pos-cb-02-b.html
css2.1/t1001-abs-pos-cb-03-b.html
@@ -646,16 +664,37 @@
css2.1/t060403-c21-pseu-cls-00-e-i.html
css2.1/t060403-c21-pseu-id-00-e-i.html
css2.1/t090501-c414-flt-00-d.html
+css2.1/20110323/clip-001.html
+css2.1/20110323/dynamic-top-change-001.htm
+css2.1/20110323/dynamic-top-change-004.htm
css2.1/t100303-c412-blockw-00-d-ag.html
+css2.1/20110323/empty-inline-001.htm
+css2.1/20110323/eof-001.htm
+css2.1/20110323/eof-002.htm
+css2.1/20110323/eof-003.htm
+css2.1/20110323/eof-004.htm
+css2.1/20110323/eof-005.htm
+css2.1/20110323/eof-006.htm
+css2.1/20110323/eof-007.htm
+css2.1/20110323/float-non-replaced-height-001.htm
+css2.1/20110323/float-non-replaced-width-001.htm
+css2.1/20110323/float-non-replaced-width-002.htm
+css2.1/20110323/float-non-replaced-width-003.htm
+css2.1/20110323/float-non-replaced-width-004.htm
+css2.1/20110323/float-non-replaced-width-005.htm
+css2.1/20110323/float-non-replaced-width-006.htm
css2.1/t100801-c548-ln-ht-01-b-ag.html
css2.1/t100801-c548-ln-ht-02-b-ag.html
css2.1/t100801-c548-ln-ht-03-d-ag.html
css2.1/t100801-c548-ln-ht-04-d-ag.html
css2.1/t120401-scope-00-b.html
+css2.1/20110323/float-non-replaced-width-010.htm
css2.1/t120401-scope-04-d.html
css2.1/t120403-content-none-00-c.html
css2.1/t120403-display-none-00-c.html
css2.1/t120403-visibility-00-c.html
+css2.1/20110323/float-non-replaced-width-012.htm
+css2.1/20110323/float-replaced-height-001.htm
css2.1/t140201-c532-bgcolor-01-b.html
css2.1/t140201-c533-bgimage-01-b-g.html
css2.1/t140201-c534-bgre-00-b-ag.html
@@ -670,35 +709,30 @@
css2.1/t140201-c536-bgpos-00-b-ag.html
css2.1/t140201-c536-bgpos-01-b-ag.html
css2.1/t140201-c537-bgfxps-00-c-ag.html
-css2.1/20110323/clip-001.html
-css2.1/20110323/dynamic-top-change-001.htm
-css2.1/20110323/dynamic-top-change-004.htm
-css2.1/20110323/empty-inline-001.htm
-css2.1/20110323/eof-001.htm
-css2.1/20110323/eof-002.htm
-css2.1/20110323/eof-003.htm
-css2.1/20110323/eof-004.htm
-css2.1/20110323/eof-005.htm
-css2.1/20110323/eof-006.htm
-css2.1/20110323/eof-007.htm
-css2.1/20110323/float-non-replaced-height-001.htm
-css2.1/20110323/float-non-replaced-width-001.htm
-css2.1/20110323/float-non-replaced-width-002.htm
-css2.1/20110323/float-non-replaced-width-003.htm
-css2.1/20110323/float-non-replaced-width-004.htm
-css2.1/20110323/float-non-replaced-width-005.htm
-css2.1/20110323/float-non-replaced-width-006.htm
-css2.1/20110323/float-non-replaced-width-010.htm
-css2.1/20110323/float-non-replaced-width-012.htm
+css2.1/20110323/float-replaced-height-004.htm
+css2.1/20110323/float-replaced-height-005.htm
+css2.1/20110323/float-replaced-height-007.htm
css2.1/20110323/float-replaced-width-001.htm
css2.1/20110323/float-replaced-width-002.htm
css2.1/20110323/float-replaced-width-003.htm
css2.1/20110323/float-replaced-width-004.htm
css2.1/20110323/float-replaced-width-005.htm
+css2.1/20110323/float-replaced-width-006.htm
css2.1/20110323/floats-001.html
css2.1/20110323/inline-block-non-replaced-width-001.htm
css2.1/20110323/inline-block-non-replaced-width-002.htm
+css2.1/20110323/inline-block-replaced-height-001.htm
+css2.1/20110323/inline-block-replaced-height-002.htm
+css2.1/20110323/inline-block-replaced-height-004.htm
+css2.1/20110323/inline-block-replaced-height-005.htm
+css2.1/20110323/inline-block-replaced-height-007.htm
+css2.1/20110323/inline-block-replaced-width-001.htm
css2.1/20110323/inline-box-002.htm
+css2.1/20110323/inline-replaced-height-001.htm
+css2.1/20110323/inline-replaced-height-002.htm
+css2.1/20110323/inline-replaced-height-004.htm
+css2.1/20110323/inline-replaced-height-005.htm
+css2.1/20110323/inline-replaced-height-007.htm
css2.1/20110323/inline-replaced-width-011.htm
css2.1/20110323/inline-replaced-width-014.htm
css2.1/20110323/margin-applies-to-009.htm