| Index: third_party/WebKit/Source/core/layout/LayoutTable.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/LayoutTable.cpp b/third_party/WebKit/Source/core/layout/LayoutTable.cpp
|
| index b4048d931ea0dbc75ceced2745b708a72f761f56..c497b9f0b7e9942f166ea2cf6e0efa119e756892 100644
|
| --- a/third_party/WebKit/Source/core/layout/LayoutTable.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/LayoutTable.cpp
|
| @@ -788,15 +788,16 @@ void LayoutTable::addOverflowFromChildren() {
|
| // descendant objects, but since tables don't support overflow:auto, this
|
| // works out fine.
|
| if (collapseBorders()) {
|
| - int rightBorderOverflow =
|
| - (size().width() + outerBorderRight() - borderRight()).toInt();
|
| - int leftBorderOverflow = borderLeft() - outerBorderLeft();
|
| - int bottomBorderOverflow =
|
| - (size().height() + outerBorderBottom() - borderBottom()).toInt();
|
| - int topBorderOverflow = borderTop() - outerBorderTop();
|
| - IntRect borderOverflowRect(leftBorderOverflow, topBorderOverflow,
|
| - rightBorderOverflow - leftBorderOverflow,
|
| - bottomBorderOverflow - topBorderOverflow);
|
| + LayoutUnit rightBorderOverflow =
|
| + size().width() + outerBorderRight() - borderRight();
|
| + LayoutUnit leftBorderOverflow = borderLeft() - outerBorderLeft();
|
| + LayoutUnit bottomBorderOverflow =
|
| + size().height() + outerBorderBottom() - borderBottom();
|
| + LayoutUnit topBorderOverflow = borderTop() - outerBorderTop();
|
| + IntRect borderOverflowRect(
|
| + leftBorderOverflow.toInt(), topBorderOverflow.toInt(),
|
| + (rightBorderOverflow - leftBorderOverflow).toInt(),
|
| + (bottomBorderOverflow - topBorderOverflow).toInt());
|
| if (borderOverflowRect != pixelSnappedBorderBoxRect()) {
|
| LayoutRect borderLayoutRect(borderOverflowRect);
|
| addLayoutOverflow(borderLayoutRect);
|
| @@ -1125,7 +1126,7 @@ void LayoutTable::recalcSections() const {
|
|
|
| int LayoutTable::calcBorderStart() const {
|
| if (!collapseBorders())
|
| - return LayoutBlock::borderStart();
|
| + return LayoutBlock::borderStart().toInt();
|
|
|
| // Determined by the first cell of the first row. See the CSS 2.1 spec,
|
| // section 17.6.2.
|
| @@ -1149,7 +1150,7 @@ int LayoutTable::calcBorderStart() const {
|
| if (columnAdjoiningBorder.style() == BorderStyleHidden)
|
| return 0;
|
| if (columnAdjoiningBorder.style() > BorderStyleHidden)
|
| - borderWidth = std::max(borderWidth, columnAdjoiningBorder.width());
|
| + borderWidth = std::max<int>(borderWidth, columnAdjoiningBorder.width());
|
| }
|
|
|
| if (const LayoutTableSection* topNonEmptySection =
|
| @@ -1160,7 +1161,7 @@ int LayoutTable::calcBorderStart() const {
|
| return 0;
|
|
|
| if (sectionAdjoiningBorder.style() > BorderStyleHidden)
|
| - borderWidth = std::max(borderWidth, sectionAdjoiningBorder.width());
|
| + borderWidth = std::max<int>(borderWidth, sectionAdjoiningBorder.width());
|
|
|
| if (const LayoutTableCell* adjoiningStartCell =
|
| topNonEmptySection->firstRowCellAdjoiningTableStart()) {
|
| @@ -1175,10 +1176,14 @@ int LayoutTable::calcBorderStart() const {
|
| if (firstRowAdjoiningBorder.style() == BorderStyleHidden)
|
| return 0;
|
|
|
| - if (startCellAdjoiningBorder.style() > BorderStyleHidden)
|
| - borderWidth = std::max(borderWidth, startCellAdjoiningBorder.width());
|
| - if (firstRowAdjoiningBorder.style() > BorderStyleHidden)
|
| - borderWidth = std::max(borderWidth, firstRowAdjoiningBorder.width());
|
| + if (startCellAdjoiningBorder.style() > BorderStyleHidden) {
|
| + borderWidth =
|
| + std::max<int>(borderWidth, startCellAdjoiningBorder.width());
|
| + }
|
| + if (firstRowAdjoiningBorder.style() > BorderStyleHidden) {
|
| + borderWidth =
|
| + std::max<int>(borderWidth, firstRowAdjoiningBorder.width());
|
| + }
|
| }
|
| }
|
| return (borderWidth + (style()->isLeftToRightDirection() ? 0 : 1)) / 2;
|
| @@ -1186,7 +1191,7 @@ int LayoutTable::calcBorderStart() const {
|
|
|
| int LayoutTable::calcBorderEnd() const {
|
| if (!collapseBorders())
|
| - return LayoutBlock::borderEnd();
|
| + return LayoutBlock::borderEnd().toInt();
|
|
|
| // Determined by the last cell of the first row. See the CSS 2.1 spec, section
|
| // 17.6.2.
|
| @@ -1212,7 +1217,7 @@ int LayoutTable::calcBorderEnd() const {
|
| if (columnAdjoiningBorder.style() == BorderStyleHidden)
|
| return 0;
|
| if (columnAdjoiningBorder.style() > BorderStyleHidden)
|
| - borderWidth = std::max(borderWidth, columnAdjoiningBorder.width());
|
| + borderWidth = std::max<int>(borderWidth, columnAdjoiningBorder.width());
|
| }
|
|
|
| if (const LayoutTableSection* topNonEmptySection =
|
| @@ -1223,7 +1228,7 @@ int LayoutTable::calcBorderEnd() const {
|
| return 0;
|
|
|
| if (sectionAdjoiningBorder.style() > BorderStyleHidden)
|
| - borderWidth = std::max(borderWidth, sectionAdjoiningBorder.width());
|
| + borderWidth = std::max<int>(borderWidth, sectionAdjoiningBorder.width());
|
|
|
| if (const LayoutTableCell* adjoiningEndCell =
|
| topNonEmptySection->firstRowCellAdjoiningTableEnd()) {
|
| @@ -1238,10 +1243,14 @@ int LayoutTable::calcBorderEnd() const {
|
| if (firstRowAdjoiningBorder.style() == BorderStyleHidden)
|
| return 0;
|
|
|
| - if (endCellAdjoiningBorder.style() > BorderStyleHidden)
|
| - borderWidth = std::max(borderWidth, endCellAdjoiningBorder.width());
|
| - if (firstRowAdjoiningBorder.style() > BorderStyleHidden)
|
| - borderWidth = std::max(borderWidth, firstRowAdjoiningBorder.width());
|
| + if (endCellAdjoiningBorder.style() > BorderStyleHidden) {
|
| + borderWidth =
|
| + std::max<int>(borderWidth, endCellAdjoiningBorder.width());
|
| + }
|
| + if (firstRowAdjoiningBorder.style() > BorderStyleHidden) {
|
| + borderWidth =
|
| + std::max<int>(borderWidth, firstRowAdjoiningBorder.width());
|
| + }
|
| }
|
| }
|
| return (borderWidth + (style()->isLeftToRightDirection() ? 1 : 0)) / 2;
|
| @@ -1254,18 +1263,18 @@ void LayoutTable::recalcBordersInRowDirection() {
|
| m_borderEnd = calcBorderEnd();
|
| }
|
|
|
| -int LayoutTable::borderBefore() const {
|
| +LayoutUnit LayoutTable::borderBefore() const {
|
| if (collapseBorders()) {
|
| recalcSectionsIfNeeded();
|
| - return outerBorderBefore();
|
| + return LayoutUnit(outerBorderBefore());
|
| }
|
| return LayoutBlock::borderBefore();
|
| }
|
|
|
| -int LayoutTable::borderAfter() const {
|
| +LayoutUnit LayoutTable::borderAfter() const {
|
| if (collapseBorders()) {
|
| recalcSectionsIfNeeded();
|
| - return outerBorderAfter();
|
| + return LayoutUnit(outerBorderAfter());
|
| }
|
| return LayoutBlock::borderAfter();
|
| }
|
|
|