Changeset 237321 in webkit
- Timestamp:
- Oct 22, 2018 8:42:44 AM (6 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r237320 r237321 1 2018-10-22 Zalan Bujtas <zalan@apple.com> 2 3 [LFC][IFC] Implement Replaced helper class. 4 https://bugs.webkit.org/show_bug.cgi?id=190719 5 6 Reviewed by Antti Koivisto. 7 8 * layout/layouttree/LayoutBox.cpp: 9 (WebCore::Layout::Box::Box): 10 * layout/layouttree/LayoutBox.h: 11 (WebCore::Layout::Box::replaced const): 12 * layout/layouttree/LayoutReplaced.cpp: 13 (WebCore::Layout::Replaced::Replaced): 14 (WebCore::Layout::Replaced::hasIntrinsicWidth const): 15 (WebCore::Layout::Replaced::hasIntrinsicHeight const): 16 (WebCore::Layout::Replaced::hasIntrinsicRatio const): 17 (WebCore::Layout::Replaced::intrinsicWidth const): 18 (WebCore::Layout::Replaced::intrinsicHeight const): 19 (WebCore::Layout::Replaced::intrinsicRatio const): 20 * layout/layouttree/LayoutReplaced.h: 21 (WebCore::Layout::Replaced::hasIntrinsicWidth const): Deleted. 22 (WebCore::Layout::Replaced::hasIntrinsicHeight const): Deleted. 23 (WebCore::Layout::Replaced::hasIntrinsicRatio const): Deleted. 24 (WebCore::Layout::Replaced::intrinsicWidth const): Deleted. 25 (WebCore::Layout::Replaced::intrinsicHeight const): Deleted. 26 (WebCore::Layout::Replaced::intrinsicRatio const): Deleted. 27 * layout/layouttree/LayoutTreeBuilder.cpp: 28 (WebCore::Layout::TreeBuilder::createSubTree): 29 1 30 2018-10-22 Zalan Bujtas <zalan@apple.com> 2 31 -
trunk/Source/WebCore/layout/layouttree/LayoutBox.cpp
r237287 r237321 43 43 , m_baseTypeFlags(baseTypeFlags) 44 44 { 45 if (m_elementAttributes && m_elementAttributes.value().elementType == ElementType::Replaced) 46 m_replaced = std::make_unique<Replaced>(*this); 45 47 } 46 48 -
trunk/Source/WebCore/layout/layouttree/LayoutBox.h
r237293 r237321 52 52 TableHeaderGroup, 53 53 TableFooterGroup, 54 Replaced, 54 55 GenericElement 55 56 }; … … 127 128 const RenderStyle& style() const { return m_style; } 128 129 129 std::optional<const Replaced> replaced() const { return m_replaced; }130 const Replaced* replaced() const { return m_replaced.get(); } 130 131 131 132 void setParent(Container& parent) { m_parent = &parent; } … … 141 142 Box* m_nextSibling { nullptr }; 142 143 143 std:: optional<const Replaced> m_replaced;144 std::unique_ptr<const Replaced> m_replaced; 144 145 145 146 unsigned m_baseTypeFlags : 4; -
trunk/Source/WebCore/layout/layouttree/LayoutReplaced.cpp
r231895 r237321 30 30 31 31 #include "LayoutBox.h" 32 #include "RenderStyle.h" 32 33 #include <wtf/IsoMallocInlines.h> 33 34 … … 35 36 namespace Layout { 36 37 37 Replaced::Replaced(const LayoutBox&) 38 WTF_MAKE_ISO_ALLOCATED_IMPL(Replaced); 39 40 Replaced::Replaced(const Box& layoutBox) 41 : m_layoutBox(makeWeakPtr(layoutBox)) 38 42 { 43 } 44 45 bool Replaced::hasIntrinsicWidth() const 46 { 47 return m_layoutBox->style().logicalWidth().isIntrinsic(); 48 } 49 50 bool Replaced::hasIntrinsicHeight() const 51 { 52 return m_layoutBox->style().logicalHeight().isIntrinsic(); 53 } 54 55 bool Replaced::hasIntrinsicRatio() const 56 { 57 return m_layoutBox->style().aspectRatioType() == AspectRatioType::FromIntrinsic; 58 } 59 60 LayoutUnit Replaced::intrinsicWidth() const 61 { 62 ASSERT(hasIntrinsicWidth()); 63 return m_layoutBox->style().logicalWidth().value(); 64 } 65 66 LayoutUnit Replaced::intrinsicHeight() const 67 { 68 ASSERT(hasIntrinsicHeight()); 69 return m_layoutBox->style().logicalHeight().value(); 70 } 71 72 LayoutUnit Replaced::intrinsicRatio() const 73 { 74 ASSERT(hasIntrinsicRatio()); 75 ASSERT_NOT_IMPLEMENTED_YET(); 76 return 1; 39 77 } 40 78 41 79 } 42 80 } 43 44 81 #endif -
trunk/Source/WebCore/layout/layouttree/LayoutReplaced.h
r231895 r237321 30 30 #include "LayoutUnit.h" 31 31 #include <wtf/IsoMalloc.h> 32 #include <wtf/WeakPtr.h> 32 33 33 34 namespace WebCore { 35 namespace Layout { 34 36 35 namespace Layout { 36 class LayoutBox; 37 class Box; 37 38 38 39 // HTMLAudioElement, HTMLCanvasElement. HTMLEmbedElement, HTMLIFrameElement, HTMLImageElement, HTMLInputElement, HTMLObjectElement, HTMLVideoElement. … … 40 41 WTF_MAKE_ISO_ALLOCATED(Replaced); 41 42 public: 42 friend class LayoutBox; 43 Replaced(const Box&); 44 ~Replaced() = default; 43 45 44 bool hasIntrinsicWidth() const { return m_intrinsicWidth.has_value(); }45 bool hasIntrinsicHeight() const { return m_intrinsicHeight.has_value(); }46 bool hasIntrinsicRatio() const { return m_intrinsicRatio.has_value(); }46 bool hasIntrinsicWidth() const; 47 bool hasIntrinsicHeight() const; 48 bool hasIntrinsicRatio() const; 47 49 LayoutUnit intrinsicWidth() const; 48 50 LayoutUnit intrinsicHeight() const; … … 50 52 51 53 private: 52 Replaced(const LayoutBox&); 53 54 std::optional<LayoutUnit> m_intrinsicWidth; 55 std::optional<LayoutUnit> m_intrinsicHeight; 56 std::optional<LayoutUnit> m_intrinsicRatio; 54 WeakPtr<const Box> m_layoutBox; 57 55 }; 58 59 inline LayoutUnit Replaced::intrinsicWidth() const60 {61 ASSERT(hasIntrinsicWidth());62 return m_intrinsicWidth.value_or(LayoutUnit::max());63 }64 65 inline LayoutUnit Replaced::intrinsicHeight() const66 {67 ASSERT(hasIntrinsicHeight());68 return m_intrinsicHeight.value_or(LayoutUnit::max());69 }70 71 inline LayoutUnit Replaced::intrinsicRatio() const72 {73 ASSERT(hasIntrinsicRatio());74 return m_intrinsicRatio.value_or(LayoutUnit::max());75 }76 56 77 57 } 78 58 } 79 80 59 #endif -
trunk/Source/WebCore/layout/layouttree/LayoutTreeBuilder.cpp
r237293 r237321 78 78 if (element->hasTagName(HTMLNames::tfootTag)) 79 79 return Box::ElementAttributes { Box::ElementType::TableFooterGroup }; 80 if (element->hasTagName(HTMLNames::imgTag)) 81 return Box::ElementAttributes { Box::ElementType::Replaced }; 80 82 return Box::ElementAttributes { Box::ElementType::GenericElement }; 81 83 }
Note: See TracChangeset
for help on using the changeset viewer.