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

Side by Side Diff: Source/core/css/StyleResolver.cpp

Issue 14786002: Allow defining named grid lines on the grid element (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebaselined patch for try job / landing Created 7 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « Source/core/css/CSSParser.cpp ('k') | Source/core/rendering/style/RenderStyle.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) 3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com)
4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) 4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com)
5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved. 5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved.
6 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> 6 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
7 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> 7 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org>
8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/)
9 * Copyright (c) 2011, Code Aurora Forum. All rights reserved. 9 * Copyright (c) 2011, Code Aurora Forum. All rights reserved.
10 * Copyright (C) Research In Motion Limited 2011. All rights reserved. 10 * Copyright (C) Research In Motion Limited 2011. All rights reserved.
(...skipping 2221 matching lines...) Expand 10 before | Expand all | Expand 10 after
2232 2232
2233 GridLength minTrackBreadth; 2233 GridLength minTrackBreadth;
2234 GridLength maxTrackBreadth; 2234 GridLength maxTrackBreadth;
2235 if (!createGridTrackBreadth(minMaxTrackBreadth->first(), state, minTrackBrea dth) || !createGridTrackBreadth(minMaxTrackBreadth->second(), state, maxTrackBre adth)) 2235 if (!createGridTrackBreadth(minMaxTrackBreadth->first(), state, minTrackBrea dth) || !createGridTrackBreadth(minMaxTrackBreadth->second(), state, maxTrackBre adth))
2236 return false; 2236 return false;
2237 2237
2238 trackSize.setMinMax(minTrackBreadth, maxTrackBreadth); 2238 trackSize.setMinMax(minTrackBreadth, maxTrackBreadth);
2239 return true; 2239 return true;
2240 } 2240 }
2241 2241
2242 static bool createGridTrackList(CSSValue* value, Vector<GridTrackSize>& trackSiz es, const StyleResolverState& state) 2242 static bool createGridTrackList(CSSValue* value, Vector<GridTrackSize>& trackSiz es, NamedGridLinesMap& namedGridLines, const StyleResolverState& state)
2243 { 2243 {
2244 // Handle 'none'. 2244 // Handle 'none'.
2245 if (value->isPrimitiveValue()) { 2245 if (value->isPrimitiveValue()) {
2246 CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(valu e); 2246 CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(valu e);
2247 return primitiveValue->getIdent() == CSSValueNone; 2247 return primitiveValue->getIdent() == CSSValueNone;
2248 } 2248 }
2249 2249
2250 if (!value->isValueList()) 2250 if (!value->isValueList())
2251 return false; 2251 return false;
2252 2252
2253 size_t currentNamedGridLine = 0;
2253 for (CSSValueListIterator i = value; i.hasMore(); i.advance()) { 2254 for (CSSValueListIterator i = value; i.hasMore(); i.advance()) {
2254 CSSValue* currValue = i.value(); 2255 CSSValue* currValue = i.value();
2256 if (currValue->isPrimitiveValue()) {
2257 CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>( currValue);
2258 if (primitiveValue->isString()) {
2259 NamedGridLinesMap::AddResult result = namedGridLines.add(primiti veValue->getStringValue(), Vector<size_t>());
2260 result.iterator->value.append(currentNamedGridLine);
2261 continue;
2262 }
2263 }
2264
2265 ++currentNamedGridLine;
2255 GridTrackSize trackSize; 2266 GridTrackSize trackSize;
2256 if (!createGridTrackSize(currValue, trackSize, state)) 2267 if (!createGridTrackSize(currValue, trackSize, state))
2257 return false; 2268 return false;
2258 2269
2259 trackSizes.append(trackSize); 2270 trackSizes.append(trackSize);
2260 } 2271 }
2272
2273 if (trackSizes.isEmpty())
2274 return false;
2275
2261 return true; 2276 return true;
2262 } 2277 }
2263 2278
2264 2279
2265 static bool createGridPosition(CSSValue* value, GridPosition& position) 2280 static bool createGridPosition(CSSValue* value, GridPosition& position)
2266 { 2281 {
2267 // For now, we only accept: 'auto' | <integer> | span && <integer>? 2282 // For now, we only accept: 'auto' | <integer> | span && <integer>?
2268 if (value->isPrimitiveValue()) { 2283 if (value->isPrimitiveValue()) {
2269 CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(valu e); 2284 CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(valu e);
2270 if (primitiveValue->getIdent() == CSSValueAuto) 2285 if (primitiveValue->getIdent() == CSSValueAuto)
(...skipping 643 matching lines...) Expand 10 before | Expand all | Expand 10 after
2914 } 2929 }
2915 case CSSPropertyWebkitGridAutoRows: { 2930 case CSSPropertyWebkitGridAutoRows: {
2916 GridTrackSize trackSize; 2931 GridTrackSize trackSize;
2917 if (!createGridTrackSize(value, trackSize, state)) 2932 if (!createGridTrackSize(value, trackSize, state))
2918 return; 2933 return;
2919 state.style()->setGridAutoRows(trackSize); 2934 state.style()->setGridAutoRows(trackSize);
2920 return; 2935 return;
2921 } 2936 }
2922 case CSSPropertyWebkitGridColumns: { 2937 case CSSPropertyWebkitGridColumns: {
2923 Vector<GridTrackSize> trackSizes; 2938 Vector<GridTrackSize> trackSizes;
2924 if (!createGridTrackList(value, trackSizes, state)) 2939 NamedGridLinesMap namedGridLines;
2940 if (!createGridTrackList(value, trackSizes, namedGridLines, state))
2925 return; 2941 return;
2926 state.style()->setGridColumns(trackSizes); 2942 state.style()->setGridColumns(trackSizes);
2943 state.style()->setNamedGridColumnLines(namedGridLines);
2927 return; 2944 return;
2928 } 2945 }
2929 case CSSPropertyWebkitGridRows: { 2946 case CSSPropertyWebkitGridRows: {
2930 Vector<GridTrackSize> trackSizes; 2947 Vector<GridTrackSize> trackSizes;
2931 if (!createGridTrackList(value, trackSizes, state)) 2948 NamedGridLinesMap namedGridLines;
2949 if (!createGridTrackList(value, trackSizes, namedGridLines, state))
2932 return; 2950 return;
2933 state.style()->setGridRows(trackSizes); 2951 state.style()->setGridRows(trackSizes);
2952 state.style()->setNamedGridRowLines(namedGridLines);
2934 return; 2953 return;
2935 } 2954 }
2936 2955
2937 case CSSPropertyWebkitGridStart: { 2956 case CSSPropertyWebkitGridStart: {
2938 HANDLE_INHERIT_AND_INITIAL(gridStart, GridStart); 2957 HANDLE_INHERIT_AND_INITIAL(gridStart, GridStart);
2939 GridPosition startPosition; 2958 GridPosition startPosition;
2940 if (!createGridPosition(value, startPosition)) 2959 if (!createGridPosition(value, startPosition))
2941 return; 2960 return;
2942 state.style()->setGridStart(startPosition); 2961 state.style()->setGridStart(startPosition);
2943 return; 2962 return;
(...skipping 1349 matching lines...) Expand 10 before | Expand all | Expand 10 after
4293 info.addMember(m_state, "state"); 4312 info.addMember(m_state, "state");
4294 4313
4295 // FIXME: move this to a place where it would be called only once? 4314 // FIXME: move this to a place where it would be called only once?
4296 info.addMember(CSSDefaultStyleSheets::defaultStyle, "defaultStyle"); 4315 info.addMember(CSSDefaultStyleSheets::defaultStyle, "defaultStyle");
4297 info.addMember(CSSDefaultStyleSheets::defaultQuirksStyle, "defaultQuirksStyl e"); 4316 info.addMember(CSSDefaultStyleSheets::defaultQuirksStyle, "defaultQuirksStyl e");
4298 info.addMember(CSSDefaultStyleSheets::defaultPrintStyle,"defaultPrintStyle") ; 4317 info.addMember(CSSDefaultStyleSheets::defaultPrintStyle,"defaultPrintStyle") ;
4299 info.addMember(CSSDefaultStyleSheets::defaultViewSourceStyle, "defaultViewSo urceStyle"); 4318 info.addMember(CSSDefaultStyleSheets::defaultViewSourceStyle, "defaultViewSo urceStyle");
4300 } 4319 }
4301 4320
4302 } // namespace WebCore 4321 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/css/CSSParser.cpp ('k') | Source/core/rendering/style/RenderStyle.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698