<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[200182] trunk/Source/WebCore</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/200182">200182</a></dd>
<dt>Author</dt> <dd>svillar@igalia.com</dd>
<dt>Date</dt> <dd>2016-04-28 02:27:55 -0700 (Thu, 28 Apr 2016)</dd>
</dl>
<h3>Log Message</h3>
<pre>[css-grid] Store auto-repeat information in style
https://bugs.webkit.org/show_bug.cgi?id=157097
Reviewed by Darin Adler.
This is the second step to implement auto-repeat. This patch provides the necessary
machinery to store the auto-repeat data extracted by the parser in the RenderStyle class. We
are not doing anything with that information yet, it will be used later to compute the
number of auto-repeat tracks in a follow up patch.
No new tests required as there is no change in behavior yet (we're just storing the info we
already get from the parser).
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::valueForGridTrackList): Check also that the auto-repeat list of tracks is empty.
* css/StyleBuilderConverter.h:
(WebCore::createGridLineNamesList): Refactored from createGridTrackList.
(WebCore::StyleBuilderConverter::createGridTrackList): Extract auto-repeat data from the
parser. Also gathered all the out arguments in a single new struct called TracksData.
* css/StyleBuilderCustom.h: Added new macro SET_TRACKS_DATA which properly sets the info
from TracksData struct into style.
(WebCore::StyleBuilderCustom::applyValueWebkitGridTemplateColumns): Store auto-repeat data
in RenderStyle.
(WebCore::StyleBuilderCustom::applyValueWebkitGridTemplateRows): Ditto.
* rendering/style/RenderStyle.h: Add methods and attributes for auto-repeat data.
* rendering/style/RenderStyleConstants.h: New AutoRepeatType enumerated type.
* rendering/style/StyleGridData.cpp:
(WebCore::StyleGridData::StyleGridData): Add auto-repeat data.
* rendering/style/StyleGridData.h:
(WebCore::StyleGridData::operator==): Check also auto-repeat data.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorecssCSSComputedStyleDeclarationcpp">trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp</a></li>
<li><a href="#trunkSourceWebCorecssStyleBuilderConverterh">trunk/Source/WebCore/css/StyleBuilderConverter.h</a></li>
<li><a href="#trunkSourceWebCorecssStyleBuilderCustomh">trunk/Source/WebCore/css/StyleBuilderCustom.h</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleRenderStyleh">trunk/Source/WebCore/rendering/style/RenderStyle.h</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleRenderStyleConstantsh">trunk/Source/WebCore/rendering/style/RenderStyleConstants.h</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleStyleGridDatacpp">trunk/Source/WebCore/rendering/style/StyleGridData.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleStyleGridDatah">trunk/Source/WebCore/rendering/style/StyleGridData.h</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (200181 => 200182)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-04-28 08:54:33 UTC (rev 200181)
+++ trunk/Source/WebCore/ChangeLog        2016-04-28 09:27:55 UTC (rev 200182)
</span><span class="lines">@@ -1,3 +1,36 @@
</span><ins>+2016-04-28 Sergio Villar Senin <svillar@igalia.com>
+
+ [css-grid] Store auto-repeat information in style
+ https://bugs.webkit.org/show_bug.cgi?id=157097
+
+ Reviewed by Darin Adler.
+
+ This is the second step to implement auto-repeat. This patch provides the necessary
+ machinery to store the auto-repeat data extracted by the parser in the RenderStyle class. We
+ are not doing anything with that information yet, it will be used later to compute the
+ number of auto-repeat tracks in a follow up patch.
+
+ No new tests required as there is no change in behavior yet (we're just storing the info we
+ already get from the parser).
+
+ * css/CSSComputedStyleDeclaration.cpp:
+ (WebCore::valueForGridTrackList): Check also that the auto-repeat list of tracks is empty.
+ * css/StyleBuilderConverter.h:
+ (WebCore::createGridLineNamesList): Refactored from createGridTrackList.
+ (WebCore::StyleBuilderConverter::createGridTrackList): Extract auto-repeat data from the
+ parser. Also gathered all the out arguments in a single new struct called TracksData.
+ * css/StyleBuilderCustom.h: Added new macro SET_TRACKS_DATA which properly sets the info
+ from TracksData struct into style.
+ (WebCore::StyleBuilderCustom::applyValueWebkitGridTemplateColumns): Store auto-repeat data
+ in RenderStyle.
+ (WebCore::StyleBuilderCustom::applyValueWebkitGridTemplateRows): Ditto.
+ * rendering/style/RenderStyle.h: Add methods and attributes for auto-repeat data.
+ * rendering/style/RenderStyleConstants.h: New AutoRepeatType enumerated type.
+ * rendering/style/StyleGridData.cpp:
+ (WebCore::StyleGridData::StyleGridData): Add auto-repeat data.
+ * rendering/style/StyleGridData.h:
+ (WebCore::StyleGridData::operator==): Check also auto-repeat data.
+
</ins><span class="cx"> 2016-04-28 Manuel Rego Casasnovas <rego@igalia.com>
</span><span class="cx">
</span><span class="cx"> [css-grid] Fix alignment with content distribution
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSComputedStyleDeclarationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp (200181 => 200182)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp        2016-04-28 08:54:33 UTC (rev 200181)
+++ trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp        2016-04-28 09:27:55 UTC (rev 200182)
</span><span class="lines">@@ -1049,12 +1049,14 @@
</span><span class="cx">
</span><span class="cx"> static Ref<CSSValue> valueForGridTrackList(GridTrackSizingDirection direction, RenderObject* renderer, const RenderStyle& style)
</span><span class="cx"> {
</span><del>- const Vector<GridTrackSize>& trackSizes = direction == ForColumns ? style.gridColumns() : style.gridRows();
- const OrderedNamedGridLinesMap& orderedNamedGridLines = direction == ForColumns ? style.orderedNamedGridColumnLines() : style.orderedNamedGridRowLines();
</del><ins>+ bool isRowAxis = direction == ForColumns;
</ins><span class="cx"> bool isRenderGrid = is<RenderGrid>(renderer);
</span><ins>+ auto& trackSizes = isRowAxis ? style.gridColumns() : style.gridRows();
+ auto& autoRepeatTrackSizes = isRowAxis ? style.gridAutoRepeatColumns() : style.gridAutoRepeatRows();
+ auto& orderedNamedGridLines = isRowAxis ? style.orderedNamedGridColumnLines() : style.orderedNamedGridRowLines();
</ins><span class="cx">
</span><span class="cx"> // Handle the 'none' case.
</span><del>- bool trackListIsEmpty = trackSizes.isEmpty();
</del><ins>+ bool trackListIsEmpty = trackSizes.isEmpty() && autoRepeatTrackSizes.isEmpty();
</ins><span class="cx"> if (isRenderGrid && trackListIsEmpty) {
</span><span class="cx"> // For grids we should consider every listed track, whether implicitly or explicitly created. If we don't have
</span><span class="cx"> // any explicit track and there are no children then there are no implicit tracks. We cannot simply check the
</span></span></pre></div>
<a id="trunkSourceWebCorecssStyleBuilderConverterh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/StyleBuilderConverter.h (200181 => 200182)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/StyleBuilderConverter.h        2016-04-28 08:54:33 UTC (rev 200181)
+++ trunk/Source/WebCore/css/StyleBuilderConverter.h        2016-04-28 09:27:55 UTC (rev 200182)
</span><span class="lines">@@ -32,6 +32,7 @@
</span><span class="cx"> #include "CSSContentDistributionValue.h"
</span><span class="cx"> #include "CSSFontFeatureValue.h"
</span><span class="cx"> #include "CSSFunctionValue.h"
</span><ins>+#include "CSSGridAutoRepeatValue.h"
</ins><span class="cx"> #include "CSSGridLineNamesValue.h"
</span><span class="cx"> #include "CSSGridTemplateAreasValue.h"
</span><span class="cx"> #include "CSSImageGeneratorValue.h"
</span><span class="lines">@@ -156,7 +157,8 @@
</span><span class="cx"> #if ENABLE(CSS_GRID_LAYOUT)
</span><span class="cx"> static GridLength createGridTrackBreadth(CSSPrimitiveValue&, StyleResolver&);
</span><span class="cx"> static GridTrackSize createGridTrackSize(CSSValue&, StyleResolver&);
</span><del>- static bool createGridTrackList(CSSValue&, Vector<GridTrackSize>& trackSizes, NamedGridLinesMap&, OrderedNamedGridLinesMap&, StyleResolver&);
</del><ins>+ struct TracksData;
+ static bool createGridTrackList(CSSValue&, TracksData&, StyleResolver&);
</ins><span class="cx"> static bool createGridPosition(CSSValue&, GridPosition&);
</span><span class="cx"> static void createImplicitNamedGridLinesFromGridArea(const NamedGridAreaMap&, NamedGridLinesMap&, GridTrackSizingDirection);
</span><span class="cx"> #endif // ENABLE(CSS_GRID_LAYOUT)
</span><span class="lines">@@ -852,8 +854,36 @@
</span><span class="cx"> return GridTrackSize(minTrackBreadth, maxTrackBreadth);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-inline bool StyleBuilderConverter::createGridTrackList(CSSValue& value, Vector<GridTrackSize>& trackSizes, NamedGridLinesMap& namedGridLines, OrderedNamedGridLinesMap& orderedNamedGridLines, StyleResolver& styleResolver)
</del><ins>+static void createGridLineNamesList(const CSSValue& value, unsigned currentNamedGridLine, NamedGridLinesMap& namedGridLines, OrderedNamedGridLinesMap& orderedNamedGridLines)
</ins><span class="cx"> {
</span><ins>+ ASSERT(value.isGridLineNamesValue());
+
+ for (auto& namedGridLineValue : downcast<CSSGridLineNamesValue>(value)) {
+ String namedGridLine = downcast<CSSPrimitiveValue>(namedGridLineValue.get()).getStringValue();
+ auto result = namedGridLines.add(namedGridLine, Vector<unsigned>());
+ result.iterator->value.append(currentNamedGridLine);
+ auto orderedResult = orderedNamedGridLines.add(currentNamedGridLine, Vector<String>());
+ orderedResult.iterator->value.append(namedGridLine);
+ }
+}
+
+struct StyleBuilderConverter::TracksData {
+ WTF_MAKE_NONCOPYABLE(TracksData); WTF_MAKE_FAST_ALLOCATED;
+public:
+ TracksData() = default;
+
+ Vector<GridTrackSize> m_trackSizes;
+ NamedGridLinesMap m_namedGridLines;
+ OrderedNamedGridLinesMap m_orderedNamedGridLines;
+ Vector<GridTrackSize> m_autoRepeatTrackSizes;
+ NamedGridLinesMap m_autoRepeatNamedGridLines;
+ OrderedNamedGridLinesMap m_autoRepeatOrderedNamedGridLines;
+ unsigned m_autoRepeatInsertionPoint { RenderStyle::initialGridAutoRepeatInsertionPoint() };
+ AutoRepeatType m_autoRepeatType { RenderStyle::initialGridAutoRepeatType() };
+};
+
+inline bool StyleBuilderConverter::createGridTrackList(CSSValue& value, TracksData& tracksData, StyleResolver& styleResolver)
+{
</ins><span class="cx"> // Handle 'none'.
</span><span class="cx"> if (is<CSSPrimitiveValue>(value))
</span><span class="cx"> return downcast<CSSPrimitiveValue>(value).getValueID() == CSSValueNone;
</span><span class="lines">@@ -864,23 +894,35 @@
</span><span class="cx"> unsigned currentNamedGridLine = 0;
</span><span class="cx"> for (auto& currentValue : downcast<CSSValueList>(value)) {
</span><span class="cx"> if (is<CSSGridLineNamesValue>(currentValue.get())) {
</span><del>- for (auto& currentGridLineName : downcast<CSSGridLineNamesValue>(currentValue.get())) {
- String namedGridLine = downcast<CSSPrimitiveValue>(currentGridLineName.get()).getStringValue();
- NamedGridLinesMap::AddResult result = namedGridLines.add(namedGridLine, Vector<unsigned>());
- result.iterator->value.append(currentNamedGridLine);
- OrderedNamedGridLinesMap::AddResult orderedResult = orderedNamedGridLines.add(currentNamedGridLine, Vector<String>());
- orderedResult.iterator->value.append(namedGridLine);
</del><ins>+ createGridLineNamesList(currentValue.get(), currentNamedGridLine, tracksData.m_namedGridLines, tracksData.m_orderedNamedGridLines);
+ continue;
+ }
+
+ if (is<CSSGridAutoRepeatValue>(currentValue)) {
+ ASSERT(tracksData.m_autoRepeatTrackSizes.isEmpty());
+ unsigned autoRepeatIndex = 0;
+ CSSValueID autoRepeatID = downcast<CSSGridAutoRepeatValue>(currentValue.get()).autoRepeatID();
+ ASSERT(autoRepeatID == CSSValueAutoFill || autoRepeatID == CSSValueAutoFit);
+ tracksData.m_autoRepeatType = autoRepeatID == CSSValueAutoFill ? AutoFill : AutoFit;
+ for (auto& autoRepeatValue : downcast<CSSValueList>(currentValue.get())) {
+ if (is<CSSGridLineNamesValue>(autoRepeatValue.get())) {
+ createGridLineNamesList(autoRepeatValue.get(), autoRepeatIndex, tracksData.m_autoRepeatNamedGridLines, tracksData.m_autoRepeatOrderedNamedGridLines);
+ continue;
+ }
+ ++autoRepeatIndex;
+ tracksData.m_autoRepeatTrackSizes.append(createGridTrackSize(autoRepeatValue.get(), styleResolver));
</ins><span class="cx"> }
</span><ins>+ tracksData.m_autoRepeatInsertionPoint = currentNamedGridLine++;
</ins><span class="cx"> continue;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> ++currentNamedGridLine;
</span><del>- trackSizes.append(createGridTrackSize(currentValue, styleResolver));
</del><ins>+ tracksData.m_trackSizes.append(createGridTrackSize(currentValue, styleResolver));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // The parser should have rejected any <track-list> without any <track-size> as
</span><span class="cx"> // this is not conformant to the syntax.
</span><del>- ASSERT(!trackSizes.isEmpty());
</del><ins>+ ASSERT(!tracksData.m_trackSizes.isEmpty() || !tracksData.m_autoRepeatTrackSizes.isEmpty());
</ins><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorecssStyleBuilderCustomh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/StyleBuilderCustom.h (200181 => 200182)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/StyleBuilderCustom.h        2016-04-28 08:54:33 UTC (rev 200181)
+++ trunk/Source/WebCore/css/StyleBuilderCustom.h        2016-04-28 09:27:55 UTC (rev 200182)
</span><span class="lines">@@ -1649,20 +1649,26 @@
</span><span class="cx"> styleResolver.style()->setOrderedNamedGridColumnLines(styleResolver.parentStyle()->orderedNamedGridColumnLines());
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+#define SET_TRACKS_DATA(tracksData, style, TrackType) \
+ style->setGrid##TrackType##s(tracksData.m_trackSizes); \
+ style->setNamedGrid##TrackType##Lines(tracksData.m_namedGridLines); \
+ style->setOrderedNamedGrid##TrackType##Lines(tracksData.m_orderedNamedGridLines); \
+ style->setGridAutoRepeat##TrackType##s(tracksData.m_autoRepeatTrackSizes); \
+ style->setGridAutoRepeat##TrackType##sInsertionPoint(tracksData.m_autoRepeatInsertionPoint); \
+ style->setAutoRepeatNamedGrid##TrackType##Lines(tracksData.m_autoRepeatNamedGridLines); \
+ style->setAutoRepeatOrderedNamedGrid##TrackType##Lines(tracksData.m_autoRepeatOrderedNamedGridLines); \
+ style->setGridAutoRepeat##TrackType##sType(tracksData.m_autoRepeatType);
+
</ins><span class="cx"> inline void StyleBuilderCustom::applyValueWebkitGridTemplateColumns(StyleResolver& styleResolver, CSSValue& value)
</span><span class="cx"> {
</span><del>- Vector<GridTrackSize> trackSizes;
- NamedGridLinesMap namedGridLines;
- OrderedNamedGridLinesMap orderedNamedGridLines;
- if (!StyleBuilderConverter::createGridTrackList(value, trackSizes, namedGridLines, orderedNamedGridLines, styleResolver))
</del><ins>+ StyleBuilderConverter::TracksData tracksData;
+ if (!StyleBuilderConverter::createGridTrackList(value, tracksData, styleResolver))
</ins><span class="cx"> return;
</span><span class="cx"> const NamedGridAreaMap& namedGridAreas = styleResolver.style()->namedGridArea();
</span><span class="cx"> if (!namedGridAreas.isEmpty())
</span><del>- StyleBuilderConverter::createImplicitNamedGridLinesFromGridArea(namedGridAreas, namedGridLines, ForColumns);
</del><ins>+ StyleBuilderConverter::createImplicitNamedGridLinesFromGridArea(namedGridAreas, tracksData.m_namedGridLines, ForColumns);
</ins><span class="cx">
</span><del>- styleResolver.style()->setGridColumns(trackSizes);
- styleResolver.style()->setNamedGridColumnLines(namedGridLines);
- styleResolver.style()->setOrderedNamedGridColumnLines(orderedNamedGridLines);
</del><ins>+ SET_TRACKS_DATA(tracksData, styleResolver.style(), Column);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> inline void StyleBuilderCustom::applyInitialWebkitGridTemplateRows(StyleResolver& styleResolver)
</span><span class="lines">@@ -1681,18 +1687,14 @@
</span><span class="cx">
</span><span class="cx"> inline void StyleBuilderCustom::applyValueWebkitGridTemplateRows(StyleResolver& styleResolver, CSSValue& value)
</span><span class="cx"> {
</span><del>- Vector<GridTrackSize> trackSizes;
- NamedGridLinesMap namedGridLines;
- OrderedNamedGridLinesMap orderedNamedGridLines;
- if (!StyleBuilderConverter::createGridTrackList(value, trackSizes, namedGridLines, orderedNamedGridLines, styleResolver))
</del><ins>+ StyleBuilderConverter::TracksData tracksData;
+ if (!StyleBuilderConverter::createGridTrackList(value, tracksData, styleResolver))
</ins><span class="cx"> return;
</span><span class="cx"> const NamedGridAreaMap& namedGridAreas = styleResolver.style()->namedGridArea();
</span><span class="cx"> if (!namedGridAreas.isEmpty())
</span><del>- StyleBuilderConverter::createImplicitNamedGridLinesFromGridArea(namedGridAreas, namedGridLines, ForRows);
</del><ins>+ StyleBuilderConverter::createImplicitNamedGridLinesFromGridArea(namedGridAreas, tracksData.m_namedGridLines, ForRows);
</ins><span class="cx">
</span><del>- styleResolver.style()->setGridRows(trackSizes);
- styleResolver.style()->setNamedGridRowLines(namedGridLines);
- styleResolver.style()->setOrderedNamedGridRowLines(orderedNamedGridLines);
</del><ins>+ SET_TRACKS_DATA(tracksData, styleResolver.style(), Row);
</ins><span class="cx"> }
</span><span class="cx"> #endif // ENABLE(CSS_GRID_LAYOUT)
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleRenderStyleh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/style/RenderStyle.h (200181 => 200182)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/RenderStyle.h        2016-04-28 08:54:33 UTC (rev 200181)
+++ trunk/Source/WebCore/rendering/style/RenderStyle.h        2016-04-28 09:27:55 UTC (rev 200182)
</span><span class="lines">@@ -958,10 +958,20 @@
</span><span class="cx"> #if ENABLE(CSS_GRID_LAYOUT)
</span><span class="cx"> const Vector<GridTrackSize>& gridColumns() const { return rareNonInheritedData->m_grid->m_gridColumns; }
</span><span class="cx"> const Vector<GridTrackSize>& gridRows() const { return rareNonInheritedData->m_grid->m_gridRows; }
</span><ins>+ const Vector<GridTrackSize>& gridAutoRepeatColumns() const { return rareNonInheritedData->m_grid->m_gridAutoRepeatColumns; }
+ const Vector<GridTrackSize>& gridAutoRepeatRows() const { return rareNonInheritedData->m_grid->m_gridAutoRepeatRows; }
+ unsigned gridAutoRepeatColumnsInsertionPoint() const { return rareNonInheritedData->m_grid->m_autoRepeatColumnsInsertionPoint; }
+ unsigned gridAutoRepeatRowsInsertionPoint() const { return rareNonInheritedData->m_grid->m_autoRepeatRowsInsertionPoint; }
+ AutoRepeatType gridAutoRepeatColumnsType() const { return rareNonInheritedData->m_grid->m_autoRepeatColumnsType; }
+ AutoRepeatType gridAutoRepeatRowsType() const { return rareNonInheritedData->m_grid->m_autoRepeatRowsType; }
</ins><span class="cx"> const NamedGridLinesMap& namedGridColumnLines() const { return rareNonInheritedData->m_grid->m_namedGridColumnLines; }
</span><span class="cx"> const NamedGridLinesMap& namedGridRowLines() const { return rareNonInheritedData->m_grid->m_namedGridRowLines; }
</span><span class="cx"> const OrderedNamedGridLinesMap& orderedNamedGridColumnLines() const { return rareNonInheritedData->m_grid->m_orderedNamedGridColumnLines; }
</span><span class="cx"> const OrderedNamedGridLinesMap& orderedNamedGridRowLines() const { return rareNonInheritedData->m_grid->m_orderedNamedGridRowLines; }
</span><ins>+ const NamedGridLinesMap& autoRepeatNamedGridColumnLines() const { return rareNonInheritedData->m_grid->m_autoRepeatNamedGridColumnLines; }
+ const NamedGridLinesMap& autoRepeatNamedGridRowLines() const { return rareNonInheritedData->m_grid->m_autoRepeatNamedGridRowLines; }
+ const OrderedNamedGridLinesMap& autoRepeatOrderedNamedGridColumnLines() const { return rareNonInheritedData->m_grid->m_autoRepeatOrderedNamedGridColumnLines; }
+ const OrderedNamedGridLinesMap& autoRepeatOrderedNamedGridRowLines() const { return rareNonInheritedData->m_grid->m_autoRepeatOrderedNamedGridRowLines; }
</ins><span class="cx"> const NamedGridAreaMap& namedGridArea() const { return rareNonInheritedData->m_grid->m_namedGridArea; }
</span><span class="cx"> size_t namedGridAreaRowCount() const { return rareNonInheritedData->m_grid->m_namedGridAreaRowCount; }
</span><span class="cx"> size_t namedGridAreaColumnCount() const { return rareNonInheritedData->m_grid->m_namedGridAreaColumnCount; }
</span><span class="lines">@@ -1555,10 +1565,20 @@
</span><span class="cx"> void setGridAutoRows(const GridTrackSize& length) { SET_NESTED_VAR(rareNonInheritedData, m_grid, m_gridAutoRows, length); }
</span><span class="cx"> void setGridColumns(const Vector<GridTrackSize>& lengths) { SET_NESTED_VAR(rareNonInheritedData, m_grid, m_gridColumns, lengths); }
</span><span class="cx"> void setGridRows(const Vector<GridTrackSize>& lengths) { SET_NESTED_VAR(rareNonInheritedData, m_grid, m_gridRows, lengths); }
</span><ins>+ void setGridAutoRepeatColumns(const Vector<GridTrackSize>& lengths) { SET_NESTED_VAR(rareNonInheritedData, m_grid, m_gridAutoRepeatColumns, lengths); }
+ void setGridAutoRepeatRows(const Vector<GridTrackSize>& lengths) { SET_NESTED_VAR(rareNonInheritedData, m_grid, m_gridAutoRepeatRows, lengths); }
+ void setGridAutoRepeatColumnsInsertionPoint(const unsigned insertionPoint) { SET_NESTED_VAR(rareNonInheritedData, m_grid, m_autoRepeatColumnsInsertionPoint, insertionPoint); }
+ void setGridAutoRepeatRowsInsertionPoint(const unsigned insertionPoint) { SET_NESTED_VAR(rareNonInheritedData, m_grid, m_autoRepeatRowsInsertionPoint, insertionPoint); }
+ void setGridAutoRepeatColumnsType(const AutoRepeatType autoRepeatType) { SET_NESTED_VAR(rareNonInheritedData, m_grid, m_autoRepeatColumnsType, autoRepeatType); }
+ void setGridAutoRepeatRowsType(const AutoRepeatType autoRepeatType) { SET_NESTED_VAR(rareNonInheritedData, m_grid, m_autoRepeatRowsType, autoRepeatType); }
</ins><span class="cx"> void setNamedGridColumnLines(const NamedGridLinesMap& namedGridColumnLines) { SET_NESTED_VAR(rareNonInheritedData, m_grid, m_namedGridColumnLines, namedGridColumnLines); }
</span><span class="cx"> void setNamedGridRowLines(const NamedGridLinesMap& namedGridRowLines) { SET_NESTED_VAR(rareNonInheritedData, m_grid, m_namedGridRowLines, namedGridRowLines); }
</span><span class="cx"> void setOrderedNamedGridColumnLines(const OrderedNamedGridLinesMap& orderedNamedGridColumnLines) { SET_NESTED_VAR(rareNonInheritedData, m_grid, m_orderedNamedGridColumnLines, orderedNamedGridColumnLines); }
</span><span class="cx"> void setOrderedNamedGridRowLines(const OrderedNamedGridLinesMap& orderedNamedGridRowLines) { SET_NESTED_VAR(rareNonInheritedData, m_grid, m_orderedNamedGridRowLines, orderedNamedGridRowLines); }
</span><ins>+ void setAutoRepeatNamedGridColumnLines(const NamedGridLinesMap& namedGridColumnLines) { SET_NESTED_VAR(rareNonInheritedData, m_grid, m_autoRepeatNamedGridColumnLines, namedGridColumnLines); }
+ void setAutoRepeatNamedGridRowLines(const NamedGridLinesMap& namedGridRowLines) { SET_NESTED_VAR(rareNonInheritedData, m_grid, m_autoRepeatNamedGridRowLines, namedGridRowLines); }
+ void setAutoRepeatOrderedNamedGridColumnLines(const OrderedNamedGridLinesMap& orderedNamedGridColumnLines) { SET_NESTED_VAR(rareNonInheritedData, m_grid, m_autoRepeatOrderedNamedGridColumnLines, orderedNamedGridColumnLines); }
+ void setAutoRepeatOrderedNamedGridRowLines(const OrderedNamedGridLinesMap& orderedNamedGridRowLines) { SET_NESTED_VAR(rareNonInheritedData, m_grid, m_autoRepeatOrderedNamedGridRowLines, orderedNamedGridRowLines); }
</ins><span class="cx"> void setNamedGridArea(const NamedGridAreaMap& namedGridArea) { SET_NESTED_VAR(rareNonInheritedData, m_grid, m_namedGridArea, namedGridArea); }
</span><span class="cx"> void setNamedGridAreaRowCount(size_t rowCount) { SET_NESTED_VAR(rareNonInheritedData, m_grid, m_namedGridAreaRowCount, rowCount); }
</span><span class="cx"> void setNamedGridAreaColumnCount(size_t columnCount) { SET_NESTED_VAR(rareNonInheritedData, m_grid, m_namedGridAreaColumnCount, columnCount); }
</span><span class="lines">@@ -2068,6 +2088,10 @@
</span><span class="cx"> static Vector<GridTrackSize> initialGridColumns() { return Vector<GridTrackSize>(); }
</span><span class="cx"> static Vector<GridTrackSize> initialGridRows() { return Vector<GridTrackSize>(); }
</span><span class="cx">
</span><ins>+ static Vector<GridTrackSize> initialGridAutoRepeatTracks() { return Vector<GridTrackSize>(); }
+ static unsigned initialGridAutoRepeatInsertionPoint() { return 0; }
+ static AutoRepeatType initialGridAutoRepeatType() { return NoAutoRepeat; }
+
</ins><span class="cx"> static GridAutoFlow initialGridAutoFlow() { return AutoFlowRow; }
</span><span class="cx">
</span><span class="cx"> static GridTrackSize initialGridAutoColumns() { return GridTrackSize(Length(Auto)); }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleRenderStyleConstantsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/style/RenderStyleConstants.h (200181 => 200182)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/RenderStyleConstants.h        2016-04-28 08:54:33 UTC (rev 200181)
+++ trunk/Source/WebCore/rendering/style/RenderStyleConstants.h        2016-04-28 09:27:55 UTC (rev 200182)
</span><span class="lines">@@ -653,6 +653,12 @@
</span><span class="cx"> AutoFlowRowDense = InternalAutoFlowAlgorithmDense | InternalAutoFlowDirectionRow,
</span><span class="cx"> AutoFlowColumnDense = InternalAutoFlowAlgorithmDense | InternalAutoFlowDirectionColumn
</span><span class="cx"> };
</span><ins>+
+enum AutoRepeatType {
+ NoAutoRepeat,
+ AutoFill,
+ AutoFit
+};
</ins><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> // Reasonable maximum to prevent insane font sizes from causing crashes on some platforms (such as Windows).
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleStyleGridDatacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/style/StyleGridData.cpp (200181 => 200182)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/StyleGridData.cpp        2016-04-28 08:54:33 UTC (rev 200181)
+++ trunk/Source/WebCore/rendering/style/StyleGridData.cpp        2016-04-28 09:27:55 UTC (rev 200182)
</span><span class="lines">@@ -39,6 +39,10 @@
</span><span class="cx"> , m_namedGridRowLines(RenderStyle::initialNamedGridRowLines())
</span><span class="cx"> , m_orderedNamedGridColumnLines(RenderStyle::initialOrderedNamedGridColumnLines())
</span><span class="cx"> , m_orderedNamedGridRowLines(RenderStyle::initialOrderedNamedGridRowLines())
</span><ins>+ , m_autoRepeatNamedGridColumnLines(RenderStyle::initialNamedGridColumnLines())
+ , m_autoRepeatNamedGridRowLines(RenderStyle::initialNamedGridRowLines())
+ , m_autoRepeatOrderedNamedGridColumnLines(RenderStyle::initialOrderedNamedGridColumnLines())
+ , m_autoRepeatOrderedNamedGridRowLines(RenderStyle::initialOrderedNamedGridRowLines())
</ins><span class="cx"> , m_gridAutoFlow(RenderStyle::initialGridAutoFlow())
</span><span class="cx"> , m_gridAutoRows(RenderStyle::initialGridAutoRows())
</span><span class="cx"> , m_gridAutoColumns(RenderStyle::initialGridAutoColumns())
</span><span class="lines">@@ -47,6 +51,12 @@
</span><span class="cx"> , m_namedGridAreaColumnCount(RenderStyle::initialNamedGridAreaCount())
</span><span class="cx"> , m_gridColumnGap(RenderStyle::initialGridColumnGap())
</span><span class="cx"> , m_gridRowGap(RenderStyle::initialGridRowGap())
</span><ins>+ , m_gridAutoRepeatColumns(RenderStyle::initialGridAutoRepeatTracks())
+ , m_gridAutoRepeatRows(RenderStyle::initialGridAutoRepeatTracks())
+ , m_autoRepeatColumnsInsertionPoint(RenderStyle::initialGridAutoRepeatInsertionPoint())
+ , m_autoRepeatRowsInsertionPoint(RenderStyle::initialGridAutoRepeatInsertionPoint())
+ , m_autoRepeatColumnsType(RenderStyle::initialGridAutoRepeatType())
+ , m_autoRepeatRowsType(RenderStyle::initialGridAutoRepeatType())
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -58,6 +68,10 @@
</span><span class="cx"> , m_namedGridRowLines(o.m_namedGridRowLines)
</span><span class="cx"> , m_orderedNamedGridColumnLines(o.m_orderedNamedGridColumnLines)
</span><span class="cx"> , m_orderedNamedGridRowLines(o.m_orderedNamedGridRowLines)
</span><ins>+ , m_autoRepeatNamedGridColumnLines(o.m_autoRepeatNamedGridColumnLines)
+ , m_autoRepeatNamedGridRowLines(o.m_autoRepeatNamedGridRowLines)
+ , m_autoRepeatOrderedNamedGridColumnLines(o.m_autoRepeatOrderedNamedGridColumnLines)
+ , m_autoRepeatOrderedNamedGridRowLines(o.m_autoRepeatOrderedNamedGridRowLines)
</ins><span class="cx"> , m_gridAutoFlow(o.m_gridAutoFlow)
</span><span class="cx"> , m_gridAutoRows(o.m_gridAutoRows)
</span><span class="cx"> , m_gridAutoColumns(o.m_gridAutoColumns)
</span><span class="lines">@@ -66,6 +80,12 @@
</span><span class="cx"> , m_namedGridAreaColumnCount(o.m_namedGridAreaColumnCount)
</span><span class="cx"> , m_gridColumnGap(o.m_gridColumnGap)
</span><span class="cx"> , m_gridRowGap(o.m_gridRowGap)
</span><ins>+ , m_gridAutoRepeatColumns(o.m_gridAutoRepeatColumns)
+ , m_gridAutoRepeatRows(o.m_gridAutoRepeatRows)
+ , m_autoRepeatColumnsInsertionPoint(o.m_autoRepeatColumnsInsertionPoint)
+ , m_autoRepeatRowsInsertionPoint(o.m_autoRepeatRowsInsertionPoint)
+ , m_autoRepeatColumnsType(o.m_autoRepeatColumnsType)
+ , m_autoRepeatRowsType(o.m_autoRepeatRowsType)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleStyleGridDatah"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/style/StyleGridData.h (200181 => 200182)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/StyleGridData.h        2016-04-28 08:54:33 UTC (rev 200181)
+++ trunk/Source/WebCore/rendering/style/StyleGridData.h        2016-04-28 09:27:55 UTC (rev 200182)
</span><span class="lines">@@ -52,10 +52,15 @@
</span><span class="cx"> return m_gridColumns == o.m_gridColumns && m_gridRows == o.m_gridRows
</span><span class="cx"> && m_gridAutoFlow == o.m_gridAutoFlow && m_gridAutoRows == o.m_gridAutoRows && m_gridAutoColumns == o.m_gridAutoColumns
</span><span class="cx"> && m_namedGridColumnLines == o.m_namedGridColumnLines && m_namedGridRowLines == o.m_namedGridRowLines
</span><ins>+ && m_autoRepeatNamedGridColumnLines == o.m_autoRepeatNamedGridColumnLines && m_autoRepeatNamedGridRowLines == o.m_autoRepeatNamedGridRowLines
+ && m_autoRepeatOrderedNamedGridColumnLines == o.m_autoRepeatOrderedNamedGridColumnLines && m_autoRepeatOrderedNamedGridRowLines == o.m_autoRepeatOrderedNamedGridRowLines
</ins><span class="cx"> && m_namedGridArea == o.m_namedGridArea && m_namedGridArea == o.m_namedGridArea
</span><span class="cx"> && m_namedGridAreaRowCount == o.m_namedGridAreaRowCount && m_namedGridAreaColumnCount == o.m_namedGridAreaColumnCount
</span><span class="cx"> && m_orderedNamedGridRowLines == o.m_orderedNamedGridRowLines && m_orderedNamedGridColumnLines == o.m_orderedNamedGridColumnLines
</span><del>- && m_gridColumnGap == o.m_gridColumnGap && m_gridRowGap == o.m_gridRowGap;
</del><ins>+ && m_gridColumnGap == o.m_gridColumnGap && m_gridRowGap == o.m_gridRowGap
+ && m_gridAutoRepeatColumns == o.m_gridAutoRepeatColumns && m_gridAutoRepeatRows == o.m_gridAutoRepeatRows
+ && m_autoRepeatColumnsInsertionPoint == o.m_autoRepeatColumnsInsertionPoint && m_autoRepeatRowsInsertionPoint == o.m_autoRepeatRowsInsertionPoint
+ && m_autoRepeatColumnsType == o.m_autoRepeatColumnsType && m_autoRepeatRowsType == o.m_autoRepeatRowsType;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> bool operator!=(const StyleGridData& o) const
</span><span class="lines">@@ -73,6 +78,11 @@
</span><span class="cx"> OrderedNamedGridLinesMap m_orderedNamedGridColumnLines;
</span><span class="cx"> OrderedNamedGridLinesMap m_orderedNamedGridRowLines;
</span><span class="cx">
</span><ins>+ NamedGridLinesMap m_autoRepeatNamedGridColumnLines;
+ NamedGridLinesMap m_autoRepeatNamedGridRowLines;
+ OrderedNamedGridLinesMap m_autoRepeatOrderedNamedGridColumnLines;
+ OrderedNamedGridLinesMap m_autoRepeatOrderedNamedGridRowLines;
+
</ins><span class="cx"> unsigned m_gridAutoFlow : GridAutoFlowBits;
</span><span class="cx">
</span><span class="cx"> GridTrackSize m_gridAutoRows;
</span><span class="lines">@@ -87,6 +97,15 @@
</span><span class="cx"> Length m_gridColumnGap;
</span><span class="cx"> Length m_gridRowGap;
</span><span class="cx">
</span><ins>+ Vector<GridTrackSize> m_gridAutoRepeatColumns;
+ Vector<GridTrackSize> m_gridAutoRepeatRows;
+
+ unsigned m_autoRepeatColumnsInsertionPoint;
+ unsigned m_autoRepeatRowsInsertionPoint;
+
+ AutoRepeatType m_autoRepeatColumnsType;
+ AutoRepeatType m_autoRepeatRowsType;
+
</ins><span class="cx"> private:
</span><span class="cx"> StyleGridData();
</span><span class="cx"> StyleGridData(const StyleGridData&);
</span></span></pre>
</div>
</div>
</body>
</html>