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

Side by Side Diff: Source/core/css/resolver/StyleBuilderCustom.cpp

Issue 148293008: [CSS Grid Layout] Add support to place items using named grid lines (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: New approach Created 6 years, 9 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) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 3 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
4 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) 4 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com)
5 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) 5 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com)
6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved. 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved.
7 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> 7 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
8 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> 8 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org>
9 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) 9 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/)
10 * Copyright (c) 2011, Code Aurora Forum. All rights reserved. 10 * Copyright (c) 2011, Code Aurora Forum. All rights reserved.
(...skipping 939 matching lines...) Expand 10 before | Expand all | Expand 10 after
950 return GridTrackSize(createGridTrackBreadth(toCSSPrimitiveValue(value), state)); 950 return GridTrackSize(createGridTrackBreadth(toCSSPrimitiveValue(value), state));
951 951
952 CSSFunctionValue* minmaxFunction = toCSSFunctionValue(value); 952 CSSFunctionValue* minmaxFunction = toCSSFunctionValue(value);
953 CSSValueList* arguments = minmaxFunction->arguments(); 953 CSSValueList* arguments = minmaxFunction->arguments();
954 ASSERT_WITH_SECURITY_IMPLICATION(arguments->length() == 2); 954 ASSERT_WITH_SECURITY_IMPLICATION(arguments->length() == 2);
955 GridLength minTrackBreadth(createGridTrackBreadth(toCSSPrimitiveValue(argume nts->itemWithoutBoundsCheck(0)), state)); 955 GridLength minTrackBreadth(createGridTrackBreadth(toCSSPrimitiveValue(argume nts->itemWithoutBoundsCheck(0)), state));
956 GridLength maxTrackBreadth(createGridTrackBreadth(toCSSPrimitiveValue(argume nts->itemWithoutBoundsCheck(1)), state)); 956 GridLength maxTrackBreadth(createGridTrackBreadth(toCSSPrimitiveValue(argume nts->itemWithoutBoundsCheck(1)), state));
957 return GridTrackSize(minTrackBreadth, maxTrackBreadth); 957 return GridTrackSize(minTrackBreadth, maxTrackBreadth);
958 } 958 }
959 959
960 static bool createGridTrackList(CSSValue* value, Vector<GridTrackSize>& trackSiz es, NamedGridLinesMap& namedGridLines, OrderedNamedGridLines& orderedNamedGridLi nes, const StyleResolverState& state) 960 static bool createGridTrackList(CSSValue* value, Vector<GridTrackSize>& trackSiz es, OrderedNamedGridLines& orderedNamedGridLines, const StyleResolverState& stat e)
961 { 961 {
962 // Handle 'none'. 962 // Handle 'none'.
963 if (value->isPrimitiveValue()) { 963 if (value->isPrimitiveValue()) {
964 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); 964 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value);
965 return primitiveValue->getValueID() == CSSValueNone; 965 return primitiveValue->getValueID() == CSSValueNone;
966 } 966 }
967 967
968 if (!value->isValueList()) 968 if (!value->isValueList())
969 return false; 969 return false;
970 970
971 size_t currentNamedGridLine = 0; 971 size_t currentNamedGridLine = 0;
972 for (CSSValueListIterator i = value; i.hasMore(); i.advance()) { 972 for (CSSValueListIterator i = value; i.hasMore(); i.advance()) {
973 CSSValue* currValue = i.value(); 973 CSSValue* currValue = i.value();
974 if (currValue->isGridLineNamesValue()) { 974 if (currValue->isGridLineNamesValue()) {
975 CSSGridLineNamesValue* lineNamesValue = toCSSGridLineNamesValue(curr Value); 975 CSSGridLineNamesValue* lineNamesValue = toCSSGridLineNamesValue(curr Value);
976 for (CSSValueListIterator j = lineNamesValue; j.hasMore(); j.advance ()) { 976 for (CSSValueListIterator j = lineNamesValue; j.hasMore(); j.advance ()) {
977 String namedGridLine = toCSSPrimitiveValue(j.value())->getString Value();
978 NamedGridLinesMap::AddResult result = namedGridLines.add(namedGr idLine, Vector<size_t>());
979 result.storedValue->value.append(currentNamedGridLine);
980 OrderedNamedGridLines::AddResult orderedInsertionResult = ordere dNamedGridLines.add(currentNamedGridLine, Vector<String>()); 977 OrderedNamedGridLines::AddResult orderedInsertionResult = ordere dNamedGridLines.add(currentNamedGridLine, Vector<String>());
981 orderedInsertionResult.storedValue->value.append(namedGridLine); 978 orderedInsertionResult.storedValue->value.append(toCSSPrimitiveV alue(j.value())->getStringValue());
982 } 979 }
983 continue; 980 continue;
984 } 981 }
985 982
986 ++currentNamedGridLine; 983 ++currentNamedGridLine;
987 trackSizes.append(createGridTrackSize(currValue, state)); 984 trackSizes.append(createGridTrackSize(currValue, state));
988 } 985 }
989 986
990 // The parser should have rejected any <track-list> without any <track-size> as 987 // The parser should have rejected any <track-list> without any <track-size> as
991 // this is not conformant to the syntax. 988 // this is not conformant to the syntax.
(...skipping 599 matching lines...) Expand 10 before | Expand all | Expand 10 after
1591 return; 1588 return;
1592 } 1589 }
1593 case CSSPropertyGridAutoRows: { 1590 case CSSPropertyGridAutoRows: {
1594 HANDLE_INHERIT_AND_INITIAL(gridAutoRows, GridAutoRows); 1591 HANDLE_INHERIT_AND_INITIAL(gridAutoRows, GridAutoRows);
1595 state.style()->setGridAutoRows(createGridTrackSize(value, state)); 1592 state.style()->setGridAutoRows(createGridTrackSize(value, state));
1596 return; 1593 return;
1597 } 1594 }
1598 case CSSPropertyGridTemplateColumns: { 1595 case CSSPropertyGridTemplateColumns: {
1599 if (isInherit) { 1596 if (isInherit) {
1600 state.style()->setGridTemplateColumns(state.parentStyle()->gridTempl ateColumns()); 1597 state.style()->setGridTemplateColumns(state.parentStyle()->gridTempl ateColumns());
1601 state.style()->setNamedGridColumnLines(state.parentStyle()->namedGri dColumnLines());
1602 state.style()->setOrderedNamedGridColumnLines(state.parentStyle()->o rderedNamedGridColumnLines()); 1598 state.style()->setOrderedNamedGridColumnLines(state.parentStyle()->o rderedNamedGridColumnLines());
1603 return; 1599 return;
1604 } 1600 }
1605 if (isInitial) { 1601 if (isInitial) {
1606 state.style()->setGridTemplateColumns(RenderStyle::initialGridTempla teColumns()); 1602 state.style()->setGridTemplateColumns(RenderStyle::initialGridTempla teColumns());
1607 state.style()->setNamedGridColumnLines(RenderStyle::initialNamedGrid ColumnLines());
1608 state.style()->setOrderedNamedGridColumnLines(RenderStyle::initialOr deredNamedGridColumnLines()); 1603 state.style()->setOrderedNamedGridColumnLines(RenderStyle::initialOr deredNamedGridColumnLines());
1609 return; 1604 return;
1610 } 1605 }
1611 1606
1612 Vector<GridTrackSize> trackSizes; 1607 Vector<GridTrackSize> trackSizes;
1613 NamedGridLinesMap namedGridLines;
1614 OrderedNamedGridLines orderedNamedGridLines; 1608 OrderedNamedGridLines orderedNamedGridLines;
1615 if (!createGridTrackList(value, trackSizes, namedGridLines, orderedNamed GridLines, state)) 1609 if (!createGridTrackList(value, trackSizes, orderedNamedGridLines, state ))
1616 return; 1610 return;
1611
1617 state.style()->setGridTemplateColumns(trackSizes); 1612 state.style()->setGridTemplateColumns(trackSizes);
1618 state.style()->setNamedGridColumnLines(namedGridLines);
1619 state.style()->setOrderedNamedGridColumnLines(orderedNamedGridLines); 1613 state.style()->setOrderedNamedGridColumnLines(orderedNamedGridLines);
1620 return; 1614 return;
1621 } 1615 }
1622 case CSSPropertyGridTemplateRows: { 1616 case CSSPropertyGridTemplateRows: {
1623 if (isInherit) { 1617 if (isInherit) {
1624 state.style()->setGridTemplateRows(state.parentStyle()->gridTemplate Rows()); 1618 state.style()->setGridTemplateRows(state.parentStyle()->gridTemplate Rows());
1625 state.style()->setNamedGridRowLines(state.parentStyle()->namedGridRo wLines());
1626 state.style()->setOrderedNamedGridRowLines(state.parentStyle()->orde redNamedGridRowLines()); 1619 state.style()->setOrderedNamedGridRowLines(state.parentStyle()->orde redNamedGridRowLines());
1627 return; 1620 return;
1628 } 1621 }
1629 if (isInitial) { 1622 if (isInitial) {
1630 state.style()->setGridTemplateRows(RenderStyle::initialGridTemplateR ows()); 1623 state.style()->setGridTemplateRows(RenderStyle::initialGridTemplateR ows());
1631 state.style()->setNamedGridRowLines(RenderStyle::initialNamedGridRow Lines());
1632 state.style()->setOrderedNamedGridRowLines(RenderStyle::initialOrder edNamedGridRowLines()); 1624 state.style()->setOrderedNamedGridRowLines(RenderStyle::initialOrder edNamedGridRowLines());
1633 return; 1625 return;
1634 } 1626 }
1635 1627
1636 Vector<GridTrackSize> trackSizes; 1628 Vector<GridTrackSize> trackSizes;
1637 NamedGridLinesMap namedGridLines;
1638 OrderedNamedGridLines orderedNamedGridLines; 1629 OrderedNamedGridLines orderedNamedGridLines;
1639 if (!createGridTrackList(value, trackSizes, namedGridLines, orderedNamed GridLines, state)) 1630 if (!createGridTrackList(value, trackSizes, orderedNamedGridLines, state ))
1640 return; 1631 return;
1632
1641 state.style()->setGridTemplateRows(trackSizes); 1633 state.style()->setGridTemplateRows(trackSizes);
1642 state.style()->setNamedGridRowLines(namedGridLines);
1643 state.style()->setOrderedNamedGridRowLines(orderedNamedGridLines); 1634 state.style()->setOrderedNamedGridRowLines(orderedNamedGridLines);
1644 return; 1635 return;
1645 } 1636 }
1646 1637
1647 case CSSPropertyGridColumnStart: { 1638 case CSSPropertyGridColumnStart: {
1648 HANDLE_INHERIT_AND_INITIAL(gridColumnStart, GridColumnStart); 1639 HANDLE_INHERIT_AND_INITIAL(gridColumnStart, GridColumnStart);
1649 GridPosition startPosition; 1640 GridPosition startPosition;
1650 if (!createGridPosition(value, startPosition)) 1641 if (!createGridPosition(value, startPosition))
1651 return; 1642 return;
1652 state.style()->setGridColumnStart(startPosition); 1643 state.style()->setGridColumnStart(startPosition);
(...skipping 524 matching lines...) Expand 10 before | Expand all | Expand 10 after
2177 break; 2168 break;
2178 } 2169 }
2179 case CSSPropertyEnableBackground: 2170 case CSSPropertyEnableBackground:
2180 // Silently ignoring this property for now 2171 // Silently ignoring this property for now
2181 // http://bugs.webkit.org/show_bug.cgi?id=6022 2172 // http://bugs.webkit.org/show_bug.cgi?id=6022
2182 break; 2173 break;
2183 } 2174 }
2184 } 2175 }
2185 2176
2186 } // namespace WebCore 2177 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698