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

Side by Side Diff: third_party/WebKit/Source/core/layout/LayoutTableCell.cpp

Issue 2770123003: Replace ASSERT with DCHECK in core/layout/ excluding subdirs (Closed)
Patch Set: Split some DCHECKs and add DCHECK_ops wherever possible Created 3 years, 8 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1997 Martin Jones (mjones@kde.org) 2 * Copyright (C) 1997 Martin Jones (mjones@kde.org)
3 * (C) 1997 Torben Weis (weis@kde.org) 3 * (C) 1997 Torben Weis (weis@kde.org)
4 * (C) 1998 Waldo Bastian (bastian@kde.org) 4 * (C) 1998 Waldo Bastian (bastian@kde.org)
5 * (C) 1999 Lars Knoll (knoll@kde.org) 5 * (C) 1999 Lars Knoll (knoll@kde.org)
6 * (C) 1999 Antti Koivisto (koivisto@kde.org) 6 * (C) 1999 Antti Koivisto (koivisto@kde.org)
7 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. 7 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc.
8 * All rights reserved. 8 * All rights reserved.
9 * 9 *
10 * This library is free software; you can redistribute it and/or 10 * This library is free software; you can redistribute it and/or
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 previousCell()->setPreferredLogicalWidthsDirty(); 115 previousCell()->setPreferredLogicalWidthsDirty();
116 } 116 }
117 if (nextCell()) { 117 if (nextCell()) {
118 // TODO(dgrogan): Same as above re: setChildNeedsLayout vs setNeedsLayout. 118 // TODO(dgrogan): Same as above re: setChildNeedsLayout vs setNeedsLayout.
119 nextCell()->setNeedsLayout(LayoutInvalidationReason::TableChanged); 119 nextCell()->setNeedsLayout(LayoutInvalidationReason::TableChanged);
120 nextCell()->setPreferredLogicalWidthsDirty(); 120 nextCell()->setPreferredLogicalWidthsDirty();
121 } 121 }
122 } 122 }
123 123
124 unsigned LayoutTableCell::parseColSpanFromDOM() const { 124 unsigned LayoutTableCell::parseColSpanFromDOM() const {
125 ASSERT(node()); 125 DCHECK(node());
126 // TODO(dgrogan): HTMLTableCellElement::colSpan() already clamps to something 126 // TODO(dgrogan): HTMLTableCellElement::colSpan() already clamps to something
127 // smaller than maxColumnIndex; can we just DCHECK here? 127 // smaller than maxColumnIndex; can we just DCHECK here?
128 if (isHTMLTableCellElement(*node())) 128 if (isHTMLTableCellElement(*node()))
129 return std::min<unsigned>(toHTMLTableCellElement(*node()).colSpan(), 129 return std::min<unsigned>(toHTMLTableCellElement(*node()).colSpan(),
130 maxColumnIndex); 130 maxColumnIndex);
131 return 1; 131 return 1;
132 } 132 }
133 133
134 unsigned LayoutTableCell::parseRowSpanFromDOM() const { 134 unsigned LayoutTableCell::parseRowSpanFromDOM() const {
135 ASSERT(node()); 135 DCHECK(node());
136 if (isHTMLTableCellElement(*node())) 136 if (isHTMLTableCellElement(*node()))
137 return std::min<unsigned>(toHTMLTableCellElement(*node()).rowSpan(), 137 return std::min<unsigned>(toHTMLTableCellElement(*node()).rowSpan(),
138 maxRowIndex); 138 maxRowIndex);
139 return 1; 139 return 1;
140 } 140 }
141 141
142 void LayoutTableCell::updateColAndRowSpanFlags() { 142 void LayoutTableCell::updateColAndRowSpanFlags() {
143 // The vast majority of table cells do not have a colspan or rowspan, 143 // The vast majority of table cells do not have a colspan or rowspan,
144 // so we keep a bool to know if we need to bother reading from the DOM. 144 // so we keep a bool to know if we need to bother reading from the DOM.
145 m_hasColSpan = node() && parseColSpanFromDOM() != 1; 145 m_hasColSpan = node() && parseColSpanFromDOM() != 1;
146 m_hasRowSpan = node() && parseRowSpanFromDOM() != 1; 146 m_hasRowSpan = node() && parseRowSpanFromDOM() != 1;
147 } 147 }
148 148
149 void LayoutTableCell::colSpanOrRowSpanChanged() { 149 void LayoutTableCell::colSpanOrRowSpanChanged() {
150 ASSERT(node()); 150 DCHECK(node());
151 ASSERT(isHTMLTableCellElement(*node())); 151 DCHECK(isHTMLTableCellElement(*node()));
152 152
153 updateColAndRowSpanFlags(); 153 updateColAndRowSpanFlags();
154 154
155 setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation( 155 setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation(
156 LayoutInvalidationReason::AttributeChanged); 156 LayoutInvalidationReason::AttributeChanged);
157 if (parent() && section()) 157 if (parent() && section())
158 section()->setNeedsCellRecalc(); 158 section()->setNeedsCellRecalc();
159 } 159 }
160 160
161 Length LayoutTableCell::logicalWidthFromColumns( 161 Length LayoutTableCell::logicalWidthFromColumns(
162 LayoutTableCol* firstColForThisCell, 162 LayoutTableCol* firstColForThisCell,
163 Length widthFromStyle) const { 163 Length widthFromStyle) const {
164 ASSERT(firstColForThisCell && 164 DCHECK(firstColForThisCell);
165 firstColForThisCell == 165 DCHECK_EQ(firstColForThisCell,
166 table() 166 table()
167 ->colElementAtAbsoluteColumn(absoluteColumnIndex()) 167 ->colElementAtAbsoluteColumn(absoluteColumnIndex())
168 .innermostColOrColGroup()); 168 .innermostColOrColGroup());
169 LayoutTableCol* tableCol = firstColForThisCell; 169 LayoutTableCol* tableCol = firstColForThisCell;
170 170
171 unsigned colSpanCount = colSpan(); 171 unsigned colSpanCount = colSpan();
172 int colWidthSum = 0; 172 int colWidthSum = 0;
173 for (unsigned i = 1; i <= colSpanCount; i++) { 173 for (unsigned i = 1; i <= colSpanCount; i++) {
174 Length colWidth = tableCol->style()->logicalWidth(); 174 Length colWidth = tableCol->style()->logicalWidth();
175 175
176 // Percentage value should be returned only for colSpan == 1. 176 // Percentage value should be returned only for colSpan == 1.
177 // Otherwise we return original width for the cell. 177 // Otherwise we return original width for the cell.
178 if (!colWidth.isFixed()) { 178 if (!colWidth.isFixed()) {
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 if (tableLayoutLogicalWidth == logicalWidth()) 293 if (tableLayoutLogicalWidth == logicalWidth())
294 return; 294 return;
295 295
296 layouter.setNeedsLayout(this, LayoutInvalidationReason::SizeChanged); 296 layouter.setNeedsLayout(this, LayoutInvalidationReason::SizeChanged);
297 297
298 setLogicalWidth(LayoutUnit(tableLayoutLogicalWidth)); 298 setLogicalWidth(LayoutUnit(tableLayoutLogicalWidth));
299 setCellWidthChanged(true); 299 setCellWidthChanged(true);
300 } 300 }
301 301
302 void LayoutTableCell::layout() { 302 void LayoutTableCell::layout() {
303 ASSERT(needsLayout()); 303 DCHECK(needsLayout());
304 LayoutAnalyzer::Scope analyzer(*this); 304 LayoutAnalyzer::Scope analyzer(*this);
305 305
306 int oldCellBaseline = cellBaselinePosition(); 306 int oldCellBaseline = cellBaselinePosition();
307 layoutBlock(cellWidthChanged()); 307 layoutBlock(cellWidthChanged());
308 308
309 // If we have replaced content, the intrinsic height of our content may have 309 // If we have replaced content, the intrinsic height of our content may have
310 // changed since the last time we laid out. If that's the case the intrinsic 310 // changed since the last time we laid out. If that's the case the intrinsic
311 // padding we used for layout (the padding required to push the contents of 311 // padding we used for layout (the padding required to push the contents of
312 // the cell down to the row's baseline) is included in our new height and 312 // the cell down to the row's baseline) is included in our new height and
313 // baseline and makes both of them wrong. So if our content's intrinsic height 313 // baseline and makes both of them wrong. So if our content's intrinsic height
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 389
390 void LayoutTableCell::setOverrideLogicalContentHeightFromRowHeight( 390 void LayoutTableCell::setOverrideLogicalContentHeightFromRowHeight(
391 LayoutUnit rowHeight) { 391 LayoutUnit rowHeight) {
392 clearIntrinsicPadding(); 392 clearIntrinsicPadding();
393 setOverrideLogicalContentHeight( 393 setOverrideLogicalContentHeight(
394 (rowHeight - collapsedBorderAndCSSPaddingLogicalHeight()) 394 (rowHeight - collapsedBorderAndCSSPaddingLogicalHeight())
395 .clampNegativeToZero()); 395 .clampNegativeToZero());
396 } 396 }
397 397
398 LayoutSize LayoutTableCell::offsetFromContainer(const LayoutObject* o) const { 398 LayoutSize LayoutTableCell::offsetFromContainer(const LayoutObject* o) const {
399 ASSERT(o == container()); 399 DCHECK_EQ(o, container());
400 400
401 LayoutSize offset = LayoutBlockFlow::offsetFromContainer(o); 401 LayoutSize offset = LayoutBlockFlow::offsetFromContainer(o);
402 if (parent()) 402 if (parent())
403 offset -= parentBox()->locationOffset(); 403 offset -= parentBox()->locationOffset();
404 404
405 return offset; 405 return offset;
406 } 406 }
407 407
408 LayoutRect LayoutTableCell::localVisualRect() const { 408 LayoutRect LayoutTableCell::localVisualRect() const {
409 // If the table grid is dirty, we cannot get reliable information about 409 // If the table grid is dirty, we cannot get reliable information about
(...skipping 1088 matching lines...) Expand 10 before | Expand all | Expand 10 after
1498 } 1498 }
1499 1499
1500 bool LayoutTableCell::hasLineIfEmpty() const { 1500 bool LayoutTableCell::hasLineIfEmpty() const {
1501 if (node() && hasEditableStyle(*node())) 1501 if (node() && hasEditableStyle(*node()))
1502 return true; 1502 return true;
1503 1503
1504 return LayoutBlock::hasLineIfEmpty(); 1504 return LayoutBlock::hasLineIfEmpty();
1505 } 1505 }
1506 1506
1507 } // namespace blink 1507 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/LayoutTableCell.h ('k') | third_party/WebKit/Source/core/layout/LayoutTableCol.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698