Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(206)

Side by Side Diff: Source/core/rendering/RenderBlockFlow.cpp

Issue 869323003: Oilpan: move RenderObjects off heap. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: review-induced improvements Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/rendering/RenderBlockFlow.h ('k') | Source/core/rendering/RenderBoxModelObject.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 while (curr && curr != renderView) { 152 while (curr && curr != renderView) {
153 if (curr->hasColumns() || curr->isRenderFlowThread()) 153 if (curr->hasColumns() || curr->isRenderFlowThread())
154 return true; 154 return true;
155 if (curr->isFloatingOrOutOfFlowPositioned()) 155 if (curr->isFloatingOrOutOfFlowPositioned())
156 return false; 156 return false;
157 curr = curr->containingBlock(); 157 curr = curr->containingBlock();
158 } 158 }
159 return true; 159 return true;
160 } 160 }
161 161
162 void RenderBlockFlow::RenderBlockFlowRareData::trace(Visitor* visitor)
163 {
164 visitor->trace(m_multiColumnFlowThread);
165 }
166
167 RenderBlockFlow::RenderBlockFlow(ContainerNode* node) 162 RenderBlockFlow::RenderBlockFlow(ContainerNode* node)
168 : RenderBlock(node) 163 : RenderBlock(node)
169 { 164 {
170 static_assert(sizeof(MarginInfo) == sizeof(SameSizeAsMarginInfo), "MarginInf o should stay small"); 165 static_assert(sizeof(MarginInfo) == sizeof(SameSizeAsMarginInfo), "MarginInf o should stay small");
171 setChildrenInline(true); 166 setChildrenInline(true);
172 } 167 }
173 168
174 RenderBlockFlow::~RenderBlockFlow() 169 RenderBlockFlow::~RenderBlockFlow()
175 { 170 {
176 } 171 }
177 172
178 void RenderBlockFlow::trace(Visitor* visitor)
179 {
180 visitor->trace(m_rareData);
181 RenderBlock::trace(visitor);
182 }
183
184 RenderBlockFlow* RenderBlockFlow::createAnonymous(Document* document) 173 RenderBlockFlow* RenderBlockFlow::createAnonymous(Document* document)
185 { 174 {
186 RenderBlockFlow* renderer = new RenderBlockFlow(0); 175 RenderBlockFlow* renderer = new RenderBlockFlow(0);
187 renderer->setDocumentForAnonymous(document); 176 renderer->setDocumentForAnonymous(document);
188 return renderer; 177 return renderer;
189 } 178 }
190 179
191 RenderObject* RenderBlockFlow::layoutSpecialExcludedChild(bool relayoutChildren, SubtreeLayoutScope& layoutScope) 180 RenderObject* RenderBlockFlow::layoutSpecialExcludedChild(bool relayoutChildren, SubtreeLayoutScope& layoutScope)
192 { 181 {
193 RenderMultiColumnFlowThread* flowThread = multiColumnFlowThread(); 182 RenderMultiColumnFlowThread* flowThread = multiColumnFlowThread();
(...skipping 1429 matching lines...) Expand 10 before | Expand all | Expand 10 after
1623 { 1612 {
1624 if (style()->marginBeforeCollapse() == MDISCARD) { 1613 if (style()->marginBeforeCollapse() == MDISCARD) {
1625 ASSERT(value); 1614 ASSERT(value);
1626 return; 1615 return;
1627 } 1616 }
1628 1617
1629 if (!m_rareData && !value) 1618 if (!m_rareData && !value)
1630 return; 1619 return;
1631 1620
1632 if (!m_rareData) 1621 if (!m_rareData)
1633 m_rareData = adoptPtrWillBeNoop(new RenderBlockFlowRareData(this)); 1622 m_rareData = adoptPtr(new RenderBlockFlowRareData(this));
1634 1623
1635 m_rareData->m_discardMarginBefore = value; 1624 m_rareData->m_discardMarginBefore = value;
1636 } 1625 }
1637 1626
1638 void RenderBlockFlow::setMustDiscardMarginAfter(bool value) 1627 void RenderBlockFlow::setMustDiscardMarginAfter(bool value)
1639 { 1628 {
1640 if (style()->marginAfterCollapse() == MDISCARD) { 1629 if (style()->marginAfterCollapse() == MDISCARD) {
1641 ASSERT(value); 1630 ASSERT(value);
1642 return; 1631 return;
1643 } 1632 }
1644 1633
1645 if (!m_rareData && !value) 1634 if (!m_rareData && !value)
1646 return; 1635 return;
1647 1636
1648 if (!m_rareData) 1637 if (!m_rareData)
1649 m_rareData = adoptPtrWillBeNoop(new RenderBlockFlowRareData(this)); 1638 m_rareData = adoptPtr(new RenderBlockFlowRareData(this));
1650 1639
1651 m_rareData->m_discardMarginAfter = value; 1640 m_rareData->m_discardMarginAfter = value;
1652 } 1641 }
1653 1642
1654 bool RenderBlockFlow::mustDiscardMarginBefore() const 1643 bool RenderBlockFlow::mustDiscardMarginBefore() const
1655 { 1644 {
1656 return style()->marginBeforeCollapse() == MDISCARD || (m_rareData && m_rareD ata->m_discardMarginBefore); 1645 return style()->marginBeforeCollapse() == MDISCARD || (m_rareData && m_rareD ata->m_discardMarginBefore);
1657 } 1646 }
1658 1647
1659 bool RenderBlockFlow::mustDiscardMarginAfter() const 1648 bool RenderBlockFlow::mustDiscardMarginAfter() const
(...skipping 24 matching lines...) Expand all
1684 1673
1685 // FIXME: See |mustDiscardMarginBeforeForChild| above. 1674 // FIXME: See |mustDiscardMarginBeforeForChild| above.
1686 return false; 1675 return false;
1687 } 1676 }
1688 1677
1689 void RenderBlockFlow::setMaxMarginBeforeValues(LayoutUnit pos, LayoutUnit neg) 1678 void RenderBlockFlow::setMaxMarginBeforeValues(LayoutUnit pos, LayoutUnit neg)
1690 { 1679 {
1691 if (!m_rareData) { 1680 if (!m_rareData) {
1692 if (pos == RenderBlockFlowRareData::positiveMarginBeforeDefault(this) && neg == RenderBlockFlowRareData::negativeMarginBeforeDefault(this)) 1681 if (pos == RenderBlockFlowRareData::positiveMarginBeforeDefault(this) && neg == RenderBlockFlowRareData::negativeMarginBeforeDefault(this))
1693 return; 1682 return;
1694 m_rareData = adoptPtrWillBeNoop(new RenderBlockFlowRareData(this)); 1683 m_rareData = adoptPtr(new RenderBlockFlowRareData(this));
1695 } 1684 }
1696 m_rareData->m_margins.setPositiveMarginBefore(pos); 1685 m_rareData->m_margins.setPositiveMarginBefore(pos);
1697 m_rareData->m_margins.setNegativeMarginBefore(neg); 1686 m_rareData->m_margins.setNegativeMarginBefore(neg);
1698 } 1687 }
1699 1688
1700 void RenderBlockFlow::setMaxMarginAfterValues(LayoutUnit pos, LayoutUnit neg) 1689 void RenderBlockFlow::setMaxMarginAfterValues(LayoutUnit pos, LayoutUnit neg)
1701 { 1690 {
1702 if (!m_rareData) { 1691 if (!m_rareData) {
1703 if (pos == RenderBlockFlowRareData::positiveMarginAfterDefault(this) && neg == RenderBlockFlowRareData::negativeMarginAfterDefault(this)) 1692 if (pos == RenderBlockFlowRareData::positiveMarginAfterDefault(this) && neg == RenderBlockFlowRareData::negativeMarginAfterDefault(this))
1704 return; 1693 return;
1705 m_rareData = adoptPtrWillBeNoop(new RenderBlockFlowRareData(this)); 1694 m_rareData = adoptPtr(new RenderBlockFlowRareData(this));
1706 } 1695 }
1707 m_rareData->m_margins.setPositiveMarginAfter(pos); 1696 m_rareData->m_margins.setPositiveMarginAfter(pos);
1708 m_rareData->m_margins.setNegativeMarginAfter(neg); 1697 m_rareData->m_margins.setNegativeMarginAfter(neg);
1709 } 1698 }
1710 1699
1711 bool RenderBlockFlow::mustSeparateMarginBeforeForChild(const RenderBox& child) c onst 1700 bool RenderBlockFlow::mustSeparateMarginBeforeForChild(const RenderBox& child) c onst
1712 { 1701 {
1713 ASSERT(!child.selfNeedsLayout()); 1702 ASSERT(!child.selfNeedsLayout());
1714 const RenderStyle* childStyle = child.style(); 1703 const RenderStyle* childStyle = child.style();
1715 if (!child.isWritingModeRoot()) 1704 if (!child.isWritingModeRoot())
(...skipping 1273 matching lines...) Expand 10 before | Expand all | Expand 10 after
2989 rightGap = (state == RenderObject::SelectionInside) 2978 rightGap = (state == RenderObject::SelectionInside)
2990 || (state == RenderObject::SelectionStart && ltr) 2979 || (state == RenderObject::SelectionStart && ltr)
2991 || (state == RenderObject::SelectionEnd && !ltr); 2980 || (state == RenderObject::SelectionEnd && !ltr);
2992 } 2981 }
2993 2982
2994 void RenderBlockFlow::setPaginationStrut(LayoutUnit strut) 2983 void RenderBlockFlow::setPaginationStrut(LayoutUnit strut)
2995 { 2984 {
2996 if (!m_rareData) { 2985 if (!m_rareData) {
2997 if (!strut) 2986 if (!strut)
2998 return; 2987 return;
2999 m_rareData = adoptPtrWillBeNoop(new RenderBlockFlowRareData(this)); 2988 m_rareData = adoptPtr(new RenderBlockFlowRareData(this));
3000 } 2989 }
3001 m_rareData->m_paginationStrut = strut; 2990 m_rareData->m_paginationStrut = strut;
3002 } 2991 }
3003 2992
3004 void RenderBlockFlow::positionSpannerDescendant(RenderMultiColumnSpannerPlacehol der& child) 2993 void RenderBlockFlow::positionSpannerDescendant(RenderMultiColumnSpannerPlacehol der& child)
3005 { 2994 {
3006 RenderBox& spanner = *child.rendererInFlowThread(); 2995 RenderBox& spanner = *child.rendererInFlowThread();
3007 // FIXME: |spanner| is a descendant, but never a direct child, so the names here are bad, if 2996 // FIXME: |spanner| is a descendant, but never a direct child, so the names here are bad, if
3008 // nothing else. 2997 // nothing else.
3009 setLogicalTopForChild(spanner, child.logicalTop()); 2998 setLogicalTopForChild(spanner, child.logicalTop());
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
3116 RenderBlockFlowRareData& rareData = ensureRareData(); 3105 RenderBlockFlowRareData& rareData = ensureRareData();
3117 ASSERT(!rareData.m_multiColumnFlowThread); 3106 ASSERT(!rareData.m_multiColumnFlowThread);
3118 rareData.m_multiColumnFlowThread = flowThread; 3107 rareData.m_multiColumnFlowThread = flowThread;
3119 } 3108 }
3120 3109
3121 RenderBlockFlow::RenderBlockFlowRareData& RenderBlockFlow::ensureRareData() 3110 RenderBlockFlow::RenderBlockFlowRareData& RenderBlockFlow::ensureRareData()
3122 { 3111 {
3123 if (m_rareData) 3112 if (m_rareData)
3124 return *m_rareData; 3113 return *m_rareData;
3125 3114
3126 m_rareData = adoptPtrWillBeNoop(new RenderBlockFlowRareData(this)); 3115 m_rareData = adoptPtr(new RenderBlockFlowRareData(this));
3127 return *m_rareData; 3116 return *m_rareData;
3128 } 3117 }
3129 3118
3130 void RenderBlockFlow::positionDialog() 3119 void RenderBlockFlow::positionDialog()
3131 { 3120 {
3132 HTMLDialogElement* dialog = toHTMLDialogElement(node()); 3121 HTMLDialogElement* dialog = toHTMLDialogElement(node());
3133 if (dialog->centeringMode() == HTMLDialogElement::NotCentered) 3122 if (dialog->centeringMode() == HTMLDialogElement::NotCentered)
3134 return; 3123 return;
3135 3124
3136 bool canCenterDialog = (style()->position() == AbsolutePosition || style()-> position() == FixedPosition) 3125 bool canCenterDialog = (style()->position() == AbsolutePosition || style()-> position() == FixedPosition)
(...skipping 14 matching lines...) Expand all
3151 FrameView* frameView = document().view(); 3140 FrameView* frameView = document().view();
3152 LayoutUnit top = (style()->position() == FixedPosition) ? 0 : frameView->scr ollOffset().height(); 3141 LayoutUnit top = (style()->position() == FixedPosition) ? 0 : frameView->scr ollOffset().height();
3153 int visibleHeight = frameView->visibleContentRect(IncludeScrollbars).height( ); 3142 int visibleHeight = frameView->visibleContentRect(IncludeScrollbars).height( );
3154 if (size().height() < visibleHeight) 3143 if (size().height() < visibleHeight)
3155 top += (visibleHeight - size().height()) / 2; 3144 top += (visibleHeight - size().height()) / 2;
3156 setY(top); 3145 setY(top);
3157 dialog->setCentered(top); 3146 dialog->setCentered(top);
3158 } 3147 }
3159 3148
3160 } // namespace blink 3149 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/rendering/RenderBlockFlow.h ('k') | Source/core/rendering/RenderBoxModelObject.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698