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

Unified Diff: Source/core/rendering/RenderTableSection.cpp

Issue 18553003: Add a runtime flag for distributing extra logical height to rowspans (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: Source/core/rendering/RenderTableSection.cpp
diff --git a/Source/core/rendering/RenderTableSection.cpp b/Source/core/rendering/RenderTableSection.cpp
index 3bcff2dbf6d5d9c45795c5cf47efbd7cf47e71d3..6f951d4cfb1f89d89c5765d578eef2d6b48b3442 100644
--- a/Source/core/rendering/RenderTableSection.cpp
+++ b/Source/core/rendering/RenderTableSection.cpp
@@ -24,6 +24,7 @@
*/
#include "config.h"
+
Julien - ping for review 2013/07/02 17:39:28 #include "core/rendering/RenderTableSection.h" sho
a.suchit 2013/07/02 18:33:35 It is giving me presubmit failure.
Julien - ping for review 2013/07/02 19:08:58 #include "config.h" #include "core/rendering/Rende
a.suchit 2013/07/03 06:33:40 Done.
#include <limits>
#include "core/rendering/HitTestResult.h"
#include "core/rendering/PaintInfo.h"
@@ -31,6 +32,7 @@
#include "core/rendering/RenderTableCol.h"
#include "core/rendering/RenderTableRow.h"
#include "core/rendering/RenderTableSection.h"
+#include "RuntimeEnabledFeatures.h"
Julien - ping for review 2013/07/02 17:39:28 We are not consistent in how we sort the #includes
a.suchit 2013/07/02 18:33:35 It gives me presubmit failure.
Julien - ping for review 2013/07/02 19:08:58 The way you went triggers a style violation for me
a.suchit 2013/07/03 06:33:40 Done.
#include "core/rendering/RenderView.h"
#include <wtf/HashSet.h>
#include <wtf/MemoryInstrumentationHashMap.h>
@@ -360,18 +362,25 @@ int RenderTableSection::calcRowLogicalHeight()
if (current.inColSpan && cell->rowSpan() == 1)
continue;
- if (cell->rowSpan() > 1) {
- // For row spanning cells, we only handle them for the first row they span. This ensures we take their baseline into account.
- if (cell->rowIndex() == r) {
- rowSpanCells.append(cell);
+ if (RuntimeEnabledFeatures::rowSpanLogicalHeightSpreadingEnabled()) {
+ if (cell->rowSpan() > 1) {
+ // For row spanning cells, we only handle them for the first row they span. This ensures we take their baseline into account.
+ if (cell->rowIndex() == r) {
+ rowSpanCells.append(cell);
- // Find out the baseline. The baseline is set on the first row in a rowSpan.
- updateBaselineForCell(cell, r, baselineDescent);
+ // Find out the baseline. The baseline is set on the first row in a rowSpan.
+ updateBaselineForCell(cell, r, baselineDescent);
+ }
+ continue;
}
- continue;
- }
- ASSERT(cell->rowSpan() == 1);
+ ASSERT(cell->rowSpan() == 1);
+ } else {
+ // FIXME: We are always adding the height of a rowspan to the last rows which doesn't match
Julien - ping for review 2013/07/02 17:39:28 We probably want to remove this FIXME but have it
a.suchit 2013/07/02 18:33:35 Done.
+ // other browsers. See webkit.org/b/52185 for example.
+ if ((cell->rowIndex() + cell->rowSpan() - 1) != r)
+ continue;
+ }
if (cell->hasOverrideHeight()) {
if (!statePusher.didPush()) {
@@ -385,10 +394,20 @@ int RenderTableSection::calcRowLogicalHeight()
cell->layoutIfNeeded();
}
- m_rowPos[r + 1] = max(m_rowPos[r + 1], m_rowPos[r] + cell->logicalHeightForRowSizing());
+ if (RuntimeEnabledFeatures::rowSpanLogicalHeightSpreadingEnabled()) {
+ m_rowPos[r + 1] = max(m_rowPos[r + 1], m_rowPos[r] + cell->logicalHeightForRowSizing());
+
+ // Find out the baseline.
+ updateBaselineForCell(cell, r, baselineDescent);
+ } else {
+ // For row spanning cells, |r| is the last row in the span.
+ unsigned cellStartRow = cell->rowIndex();
+
+ m_rowPos[r + 1] = max(m_rowPos[r + 1], m_rowPos[cellStartRow] + cell->logicalHeightForRowSizing());
- // Find out the baseline.
- updateBaselineForCell(cell, r, baselineDescent);
+ // Find out the baseline.
+ updateBaselineForCell(cell, cellStartRow, baselineDescent);
+ }
}
}
@@ -397,8 +416,10 @@ int RenderTableSection::calcRowLogicalHeight()
m_rowPos[r + 1] = max(m_rowPos[r + 1], m_rowPos[r]);
}
- if (!rowSpanCells.isEmpty())
- distributeRowSpanHeightToRows(rowSpanCells);
+ if (RuntimeEnabledFeatures::rowSpanLogicalHeightSpreadingEnabled()) {
+ if (!rowSpanCells.isEmpty())
Julien - ping for review 2013/07/02 17:39:28 rowSpanCells will be empty if the feature is disab
a.suchit 2013/07/02 18:33:35 do you want me to use both if(RuntimeEnabledFeatur
Julien - ping for review 2013/07/02 19:08:58 That's what I meant as you only collect rowSpanCel
a.suchit 2013/07/03 06:33:40 Done.
+ distributeRowSpanHeightToRows(rowSpanCells);
+ }
ASSERT(!needsLayout());
« Source/core/page/RuntimeEnabledFeatures.in ('K') | « Source/core/page/RuntimeEnabledFeatures.in ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698