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

Side by Side Diff: third_party/WebKit/Source/core/css/resolver/CSSToStyleMap.cpp

Issue 2382653006: Split CSSPrimitiveValue into CSSPrimitiveValue and CSSIdentifierValue (Closed)
Patch Set: Make check-webkit-style happy Created 4 years, 2 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) 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 Apple Inc. All r ights reserved. 5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All r ights 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 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 namespace blink { 44 namespace blink {
45 45
46 void CSSToStyleMap::mapFillAttachment(StyleResolverState&, 46 void CSSToStyleMap::mapFillAttachment(StyleResolverState&,
47 FillLayer* layer, 47 FillLayer* layer,
48 const CSSValue& value) { 48 const CSSValue& value) {
49 if (value.isInitialValue()) { 49 if (value.isInitialValue()) {
50 layer->setAttachment(FillLayer::initialFillAttachment(layer->type())); 50 layer->setAttachment(FillLayer::initialFillAttachment(layer->type()));
51 return; 51 return;
52 } 52 }
53 53
54 if (!value.isPrimitiveValue()) 54 if (!value.isIdentifierValue())
55 return; 55 return;
56 56
57 const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); 57 const CSSIdentifierValue& identifierValue = toCSSIdentifierValue(value);
58 switch (primitiveValue.getValueID()) { 58 switch (identifierValue.getValueID()) {
59 case CSSValueFixed: 59 case CSSValueFixed:
60 layer->setAttachment(FixedBackgroundAttachment); 60 layer->setAttachment(FixedBackgroundAttachment);
61 break; 61 break;
62 case CSSValueScroll: 62 case CSSValueScroll:
63 layer->setAttachment(ScrollBackgroundAttachment); 63 layer->setAttachment(ScrollBackgroundAttachment);
64 break; 64 break;
65 case CSSValueLocal: 65 case CSSValueLocal:
66 layer->setAttachment(LocalBackgroundAttachment); 66 layer->setAttachment(LocalBackgroundAttachment);
67 break; 67 break;
68 default: 68 default:
69 return; 69 return;
70 } 70 }
71 } 71 }
72 72
73 void CSSToStyleMap::mapFillClip(StyleResolverState&, 73 void CSSToStyleMap::mapFillClip(StyleResolverState&,
74 FillLayer* layer, 74 FillLayer* layer,
75 const CSSValue& value) { 75 const CSSValue& value) {
76 if (value.isInitialValue()) { 76 if (value.isInitialValue()) {
77 layer->setClip(FillLayer::initialFillClip(layer->type())); 77 layer->setClip(FillLayer::initialFillClip(layer->type()));
78 return; 78 return;
79 } 79 }
80 80
81 if (!value.isPrimitiveValue()) 81 if (!value.isIdentifierValue())
82 return; 82 return;
83 83
84 const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); 84 const CSSIdentifierValue& identifierValue = toCSSIdentifierValue(value);
85 layer->setClip(primitiveValue.convertTo<EFillBox>()); 85 layer->setClip(identifierValue.convertTo<EFillBox>());
86 } 86 }
87 87
88 void CSSToStyleMap::mapFillComposite(StyleResolverState&, 88 void CSSToStyleMap::mapFillComposite(StyleResolverState&,
89 FillLayer* layer, 89 FillLayer* layer,
90 const CSSValue& value) { 90 const CSSValue& value) {
91 if (value.isInitialValue()) { 91 if (value.isInitialValue()) {
92 layer->setComposite(FillLayer::initialFillComposite(layer->type())); 92 layer->setComposite(FillLayer::initialFillComposite(layer->type()));
93 return; 93 return;
94 } 94 }
95 95
96 if (!value.isPrimitiveValue()) 96 if (!value.isIdentifierValue())
97 return; 97 return;
98 98
99 const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); 99 const CSSIdentifierValue& identifierValue = toCSSIdentifierValue(value);
100 layer->setComposite(primitiveValue.convertTo<CompositeOperator>()); 100 layer->setComposite(identifierValue.convertTo<CompositeOperator>());
101 } 101 }
102 102
103 void CSSToStyleMap::mapFillBlendMode(StyleResolverState&, 103 void CSSToStyleMap::mapFillBlendMode(StyleResolverState&,
104 FillLayer* layer, 104 FillLayer* layer,
105 const CSSValue& value) { 105 const CSSValue& value) {
106 if (value.isInitialValue()) { 106 if (value.isInitialValue()) {
107 layer->setBlendMode(FillLayer::initialFillBlendMode(layer->type())); 107 layer->setBlendMode(FillLayer::initialFillBlendMode(layer->type()));
108 return; 108 return;
109 } 109 }
110 110
111 if (!value.isPrimitiveValue()) 111 if (!value.isIdentifierValue())
112 return; 112 return;
113 113
114 const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); 114 const CSSIdentifierValue& identifierValue = toCSSIdentifierValue(value);
115 layer->setBlendMode(primitiveValue.convertTo<WebBlendMode>()); 115 layer->setBlendMode(identifierValue.convertTo<WebBlendMode>());
116 } 116 }
117 117
118 void CSSToStyleMap::mapFillOrigin(StyleResolverState&, 118 void CSSToStyleMap::mapFillOrigin(StyleResolverState&,
119 FillLayer* layer, 119 FillLayer* layer,
120 const CSSValue& value) { 120 const CSSValue& value) {
121 if (value.isInitialValue()) { 121 if (value.isInitialValue()) {
122 layer->setOrigin(FillLayer::initialFillOrigin(layer->type())); 122 layer->setOrigin(FillLayer::initialFillOrigin(layer->type()));
123 return; 123 return;
124 } 124 }
125 125
126 if (!value.isPrimitiveValue()) 126 if (!value.isIdentifierValue())
127 return; 127 return;
128 128
129 const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); 129 const CSSIdentifierValue& identifierValue = toCSSIdentifierValue(value);
130 layer->setOrigin(primitiveValue.convertTo<EFillBox>()); 130 layer->setOrigin(identifierValue.convertTo<EFillBox>());
131 } 131 }
132 132
133 void CSSToStyleMap::mapFillImage(StyleResolverState& state, 133 void CSSToStyleMap::mapFillImage(StyleResolverState& state,
134 FillLayer* layer, 134 FillLayer* layer,
135 const CSSValue& value) { 135 const CSSValue& value) {
136 if (value.isInitialValue()) { 136 if (value.isInitialValue()) {
137 layer->setImage(FillLayer::initialFillImage(layer->type())); 137 layer->setImage(FillLayer::initialFillImage(layer->type()));
138 return; 138 return;
139 } 139 }
140 140
141 CSSPropertyID property = layer->type() == BackgroundFillLayer 141 CSSPropertyID property = layer->type() == BackgroundFillLayer
142 ? CSSPropertyBackgroundImage 142 ? CSSPropertyBackgroundImage
143 : CSSPropertyWebkitMaskImage; 143 : CSSPropertyWebkitMaskImage;
144 layer->setImage(state.styleImage(property, value)); 144 layer->setImage(state.styleImage(property, value));
145 } 145 }
146 146
147 void CSSToStyleMap::mapFillRepeatX(StyleResolverState&, 147 void CSSToStyleMap::mapFillRepeatX(StyleResolverState&,
148 FillLayer* layer, 148 FillLayer* layer,
149 const CSSValue& value) { 149 const CSSValue& value) {
150 if (value.isInitialValue()) { 150 if (value.isInitialValue()) {
151 layer->setRepeatX(FillLayer::initialFillRepeatX(layer->type())); 151 layer->setRepeatX(FillLayer::initialFillRepeatX(layer->type()));
152 return; 152 return;
153 } 153 }
154 154
155 if (!value.isPrimitiveValue()) 155 if (!value.isIdentifierValue())
156 return; 156 return;
157 157
158 const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); 158 const CSSIdentifierValue& identifierValue = toCSSIdentifierValue(value);
159 layer->setRepeatX(primitiveValue.convertTo<EFillRepeat>()); 159 layer->setRepeatX(identifierValue.convertTo<EFillRepeat>());
160 } 160 }
161 161
162 void CSSToStyleMap::mapFillRepeatY(StyleResolverState&, 162 void CSSToStyleMap::mapFillRepeatY(StyleResolverState&,
163 FillLayer* layer, 163 FillLayer* layer,
164 const CSSValue& value) { 164 const CSSValue& value) {
165 if (value.isInitialValue()) { 165 if (value.isInitialValue()) {
166 layer->setRepeatY(FillLayer::initialFillRepeatY(layer->type())); 166 layer->setRepeatY(FillLayer::initialFillRepeatY(layer->type()));
167 return; 167 return;
168 } 168 }
169 169
170 if (!value.isPrimitiveValue()) 170 if (!value.isIdentifierValue())
171 return; 171 return;
172 172
173 const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); 173 const CSSIdentifierValue& identifierValue = toCSSIdentifierValue(value);
174 layer->setRepeatY(primitiveValue.convertTo<EFillRepeat>()); 174 layer->setRepeatY(identifierValue.convertTo<EFillRepeat>());
175 } 175 }
176 176
177 void CSSToStyleMap::mapFillSize(StyleResolverState& state, 177 void CSSToStyleMap::mapFillSize(StyleResolverState& state,
178 FillLayer* layer, 178 FillLayer* layer,
179 const CSSValue& value) { 179 const CSSValue& value) {
180 if (value.isInitialValue()) { 180 if (value.isInitialValue()) {
181 layer->setSizeType(FillLayer::initialFillSizeType(layer->type())); 181 layer->setSizeType(FillLayer::initialFillSizeType(layer->type()));
182 layer->setSizeLength(FillLayer::initialFillSizeLength(layer->type())); 182 layer->setSizeLength(FillLayer::initialFillSizeLength(layer->type()));
183 return; 183 return;
184 } 184 }
185 185
186 if (!value.isPrimitiveValue() && !value.isValuePair()) 186 if (!value.isIdentifierValue() && !value.isPrimitiveValue() &&
187 !value.isValuePair())
187 return; 188 return;
188 189
189 if (value.isPrimitiveValue() && 190 if (value.isIdentifierValue() &&
190 toCSSPrimitiveValue(value).getValueID() == CSSValueContain) 191 toCSSIdentifierValue(value).getValueID() == CSSValueContain)
191 layer->setSizeType(Contain); 192 layer->setSizeType(Contain);
192 else if (value.isPrimitiveValue() && 193 else if (value.isIdentifierValue() &&
193 toCSSPrimitiveValue(value).getValueID() == CSSValueCover) 194 toCSSIdentifierValue(value).getValueID() == CSSValueCover)
194 layer->setSizeType(Cover); 195 layer->setSizeType(Cover);
195 else 196 else
196 layer->setSizeType(SizeLength); 197 layer->setSizeType(SizeLength);
197 198
198 LengthSize b = FillLayer::initialFillSizeLength(layer->type()); 199 LengthSize b = FillLayer::initialFillSizeLength(layer->type());
199 200
200 if (value.isPrimitiveValue() && 201 if (value.isIdentifierValue() &&
201 (toCSSPrimitiveValue(value).getValueID() == CSSValueContain || 202 (toCSSIdentifierValue(value).getValueID() == CSSValueContain ||
202 toCSSPrimitiveValue(value).getValueID() == CSSValueCover)) { 203 toCSSIdentifierValue(value).getValueID() == CSSValueCover)) {
203 layer->setSizeLength(b); 204 layer->setSizeLength(b);
204 return; 205 return;
205 } 206 }
206 207
207 Length firstLength; 208 Length firstLength;
208 Length secondLength; 209 Length secondLength;
209 210
210 if (value.isValuePair()) { 211 if (value.isValuePair()) {
211 const CSSValuePair& pair = toCSSValuePair(value); 212 const CSSValuePair& pair = toCSSValuePair(value);
212 firstLength = 213 firstLength =
213 StyleBuilderConverter::convertLengthOrAuto(state, pair.first()); 214 StyleBuilderConverter::convertLengthOrAuto(state, pair.first());
214 secondLength = 215 secondLength =
215 StyleBuilderConverter::convertLengthOrAuto(state, pair.second()); 216 StyleBuilderConverter::convertLengthOrAuto(state, pair.second());
216 } else { 217 } else {
217 ASSERT(value.isPrimitiveValue()); 218 DCHECK(value.isPrimitiveValue() || value.isIdentifierValue());
218 firstLength = StyleBuilderConverter::convertLengthOrAuto(state, value); 219 firstLength = StyleBuilderConverter::convertLengthOrAuto(state, value);
219 secondLength = Length(); 220 secondLength = Length();
220 } 221 }
221 222
222 b.setWidth(firstLength); 223 b.setWidth(firstLength);
223 b.setHeight(secondLength); 224 b.setHeight(secondLength);
224 layer->setSizeLength(b); 225 layer->setSizeLength(b);
225 } 226 }
226 227
227 void CSSToStyleMap::mapFillXPosition(StyleResolverState& state, 228 void CSSToStyleMap::mapFillXPosition(StyleResolverState& state,
228 FillLayer* layer, 229 FillLayer* layer,
229 const CSSValue& value) { 230 const CSSValue& value) {
230 if (value.isInitialValue()) { 231 if (value.isInitialValue()) {
231 layer->setXPosition(FillLayer::initialFillXPosition(layer->type())); 232 layer->setXPosition(FillLayer::initialFillXPosition(layer->type()));
232 return; 233 return;
233 } 234 }
234 235
235 if (!value.isPrimitiveValue() && !value.isValuePair()) 236 if (!value.isIdentifierValue() && !value.isPrimitiveValue() &&
237 !value.isValuePair())
236 return; 238 return;
237 239
238 Length length; 240 Length length;
239 if (value.isValuePair()) 241 if (value.isValuePair())
240 length = toCSSPrimitiveValue(toCSSValuePair(value).second()) 242 length = toCSSPrimitiveValue(toCSSValuePair(value).second())
241 .convertToLength(state.cssToLengthConversionData()); 243 .convertToLength(state.cssToLengthConversionData());
242 else 244 else
243 length = StyleBuilderConverter::convertPositionLength<CSSValueLeft, 245 length = StyleBuilderConverter::convertPositionLength<CSSValueLeft,
244 CSSValueRight>( 246 CSSValueRight>(state,
245 state, toCSSPrimitiveValue(value)); 247 value);
246 248
247 layer->setXPosition(length); 249 layer->setXPosition(length);
248 if (value.isValuePair()) 250 if (value.isValuePair())
249 layer->setBackgroundXOrigin( 251 layer->setBackgroundXOrigin(
250 toCSSPrimitiveValue(toCSSValuePair(value).first()) 252 toCSSIdentifierValue(toCSSValuePair(value).first())
251 .convertTo<BackgroundEdgeOrigin>()); 253 .convertTo<BackgroundEdgeOrigin>());
252 } 254 }
253 255
254 void CSSToStyleMap::mapFillYPosition(StyleResolverState& state, 256 void CSSToStyleMap::mapFillYPosition(StyleResolverState& state,
255 FillLayer* layer, 257 FillLayer* layer,
256 const CSSValue& value) { 258 const CSSValue& value) {
257 if (value.isInitialValue()) { 259 if (value.isInitialValue()) {
258 layer->setYPosition(FillLayer::initialFillYPosition(layer->type())); 260 layer->setYPosition(FillLayer::initialFillYPosition(layer->type()));
259 return; 261 return;
260 } 262 }
261 263
262 if (!value.isPrimitiveValue() && !value.isValuePair()) 264 if (!value.isIdentifierValue() && !value.isPrimitiveValue() &&
265 !value.isValuePair())
263 return; 266 return;
264 267
265 Length length; 268 Length length;
266 if (value.isValuePair()) 269 if (value.isValuePair())
267 length = toCSSPrimitiveValue(toCSSValuePair(value).second()) 270 length = toCSSPrimitiveValue(toCSSValuePair(value).second())
268 .convertToLength(state.cssToLengthConversionData()); 271 .convertToLength(state.cssToLengthConversionData());
269 else 272 else
270 length = StyleBuilderConverter::convertPositionLength<CSSValueTop, 273 length = StyleBuilderConverter::convertPositionLength<CSSValueTop,
271 CSSValueBottom>( 274 CSSValueBottom>(
272 state, toCSSPrimitiveValue(value)); 275 state, value);
273 276
274 layer->setYPosition(length); 277 layer->setYPosition(length);
275 if (value.isValuePair()) 278 if (value.isValuePair())
276 layer->setBackgroundYOrigin( 279 layer->setBackgroundYOrigin(
277 toCSSPrimitiveValue(toCSSValuePair(value).first()) 280 toCSSIdentifierValue(toCSSValuePair(value).first())
278 .convertTo<BackgroundEdgeOrigin>()); 281 .convertTo<BackgroundEdgeOrigin>());
279 } 282 }
280 283
281 void CSSToStyleMap::mapFillMaskSourceType(StyleResolverState&, 284 void CSSToStyleMap::mapFillMaskSourceType(StyleResolverState&,
282 FillLayer* layer, 285 FillLayer* layer,
283 const CSSValue& value) { 286 const CSSValue& value) {
284 EMaskSourceType type = FillLayer::initialFillMaskSourceType(layer->type()); 287 EMaskSourceType type = FillLayer::initialFillMaskSourceType(layer->type());
285 if (value.isInitialValue()) { 288 if (value.isInitialValue()) {
286 layer->setMaskSourceType(type); 289 layer->setMaskSourceType(type);
287 return; 290 return;
288 } 291 }
289 292
290 if (!value.isPrimitiveValue()) 293 if (!value.isIdentifierValue())
291 return; 294 return;
292 295
293 switch (toCSSPrimitiveValue(value).getValueID()) { 296 switch (toCSSIdentifierValue(value).getValueID()) {
294 case CSSValueAlpha: 297 case CSSValueAlpha:
295 type = MaskAlpha; 298 type = MaskAlpha;
296 break; 299 break;
297 case CSSValueLuminance: 300 case CSSValueLuminance:
298 type = MaskLuminance; 301 type = MaskLuminance;
299 break; 302 break;
300 case CSSValueAuto: 303 case CSSValueAuto:
301 break; 304 break;
302 default: 305 default:
303 ASSERT_NOT_REACHED(); 306 ASSERT_NOT_REACHED();
304 } 307 }
305 308
306 layer->setMaskSourceType(type); 309 layer->setMaskSourceType(type);
307 } 310 }
308 311
309 double CSSToStyleMap::mapAnimationDelay(const CSSValue& value) { 312 double CSSToStyleMap::mapAnimationDelay(const CSSValue& value) {
310 if (value.isInitialValue()) 313 if (value.isInitialValue())
311 return CSSTimingData::initialDelay(); 314 return CSSTimingData::initialDelay();
312 return toCSSPrimitiveValue(value).computeSeconds(); 315 return toCSSPrimitiveValue(value).computeSeconds();
313 } 316 }
314 317
315 Timing::PlaybackDirection CSSToStyleMap::mapAnimationDirection( 318 Timing::PlaybackDirection CSSToStyleMap::mapAnimationDirection(
316 const CSSValue& value) { 319 const CSSValue& value) {
317 if (value.isInitialValue()) 320 if (value.isInitialValue())
318 return CSSAnimationData::initialDirection(); 321 return CSSAnimationData::initialDirection();
319 322
320 switch (toCSSPrimitiveValue(value).getValueID()) { 323 switch (toCSSIdentifierValue(value).getValueID()) {
321 case CSSValueNormal: 324 case CSSValueNormal:
322 return Timing::PlaybackDirection::NORMAL; 325 return Timing::PlaybackDirection::NORMAL;
323 case CSSValueAlternate: 326 case CSSValueAlternate:
324 return Timing::PlaybackDirection::ALTERNATE_NORMAL; 327 return Timing::PlaybackDirection::ALTERNATE_NORMAL;
325 case CSSValueReverse: 328 case CSSValueReverse:
326 return Timing::PlaybackDirection::REVERSE; 329 return Timing::PlaybackDirection::REVERSE;
327 case CSSValueAlternateReverse: 330 case CSSValueAlternateReverse:
328 return Timing::PlaybackDirection::ALTERNATE_REVERSE; 331 return Timing::PlaybackDirection::ALTERNATE_REVERSE;
329 default: 332 default:
330 ASSERT_NOT_REACHED(); 333 ASSERT_NOT_REACHED();
331 return CSSAnimationData::initialDirection(); 334 return CSSAnimationData::initialDirection();
332 } 335 }
333 } 336 }
334 337
335 double CSSToStyleMap::mapAnimationDuration(const CSSValue& value) { 338 double CSSToStyleMap::mapAnimationDuration(const CSSValue& value) {
336 if (value.isInitialValue()) 339 if (value.isInitialValue())
337 return CSSTimingData::initialDuration(); 340 return CSSTimingData::initialDuration();
338 return toCSSPrimitiveValue(value).computeSeconds(); 341 return toCSSPrimitiveValue(value).computeSeconds();
339 } 342 }
340 343
341 Timing::FillMode CSSToStyleMap::mapAnimationFillMode(const CSSValue& value) { 344 Timing::FillMode CSSToStyleMap::mapAnimationFillMode(const CSSValue& value) {
342 if (value.isInitialValue()) 345 if (value.isInitialValue())
343 return CSSAnimationData::initialFillMode(); 346 return CSSAnimationData::initialFillMode();
344 347
345 switch (toCSSPrimitiveValue(value).getValueID()) { 348 switch (toCSSIdentifierValue(value).getValueID()) {
346 case CSSValueNone: 349 case CSSValueNone:
347 return Timing::FillMode::NONE; 350 return Timing::FillMode::NONE;
348 case CSSValueForwards: 351 case CSSValueForwards:
349 return Timing::FillMode::FORWARDS; 352 return Timing::FillMode::FORWARDS;
350 case CSSValueBackwards: 353 case CSSValueBackwards:
351 return Timing::FillMode::BACKWARDS; 354 return Timing::FillMode::BACKWARDS;
352 case CSSValueBoth: 355 case CSSValueBoth:
353 return Timing::FillMode::BOTH; 356 return Timing::FillMode::BOTH;
354 default: 357 default:
355 ASSERT_NOT_REACHED(); 358 ASSERT_NOT_REACHED();
356 return CSSAnimationData::initialFillMode(); 359 return CSSAnimationData::initialFillMode();
357 } 360 }
358 } 361 }
359 362
360 double CSSToStyleMap::mapAnimationIterationCount(const CSSValue& value) { 363 double CSSToStyleMap::mapAnimationIterationCount(const CSSValue& value) {
361 if (value.isInitialValue()) 364 if (value.isInitialValue())
362 return CSSAnimationData::initialIterationCount(); 365 return CSSAnimationData::initialIterationCount();
363 const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); 366 if (value.isIdentifierValue() &&
364 if (primitiveValue.getValueID() == CSSValueInfinite) 367 toCSSIdentifierValue(value).getValueID() == CSSValueInfinite)
365 return std::numeric_limits<double>::infinity(); 368 return std::numeric_limits<double>::infinity();
366 return primitiveValue.getFloatValue(); 369 return toCSSPrimitiveValue(value).getFloatValue();
367 } 370 }
368 371
369 AtomicString CSSToStyleMap::mapAnimationName(const CSSValue& value) { 372 AtomicString CSSToStyleMap::mapAnimationName(const CSSValue& value) {
370 if (value.isInitialValue()) 373 if (value.isInitialValue())
371 return CSSAnimationData::initialName(); 374 return CSSAnimationData::initialName();
372 if (value.isCustomIdentValue()) 375 if (value.isCustomIdentValue())
373 return AtomicString(toCSSCustomIdentValue(value).value()); 376 return AtomicString(toCSSCustomIdentValue(value).value());
374 ASSERT(toCSSPrimitiveValue(value).getValueID() == CSSValueNone); 377 DCHECK_EQ(toCSSIdentifierValue(value).getValueID(), CSSValueNone);
375 return CSSAnimationData::initialName(); 378 return CSSAnimationData::initialName();
376 } 379 }
377 380
378 EAnimPlayState CSSToStyleMap::mapAnimationPlayState(const CSSValue& value) { 381 EAnimPlayState CSSToStyleMap::mapAnimationPlayState(const CSSValue& value) {
379 if (value.isInitialValue()) 382 if (value.isInitialValue())
380 return CSSAnimationData::initialPlayState(); 383 return CSSAnimationData::initialPlayState();
381 if (toCSSPrimitiveValue(value).getValueID() == CSSValuePaused) 384 if (toCSSIdentifierValue(value).getValueID() == CSSValuePaused)
382 return AnimPlayStatePaused; 385 return AnimPlayStatePaused;
383 ASSERT(toCSSPrimitiveValue(value).getValueID() == CSSValueRunning); 386 DCHECK_EQ(toCSSIdentifierValue(value).getValueID(), CSSValueRunning);
384 return AnimPlayStatePlaying; 387 return AnimPlayStatePlaying;
385 } 388 }
386 389
387 CSSTransitionData::TransitionProperty CSSToStyleMap::mapAnimationProperty( 390 CSSTransitionData::TransitionProperty CSSToStyleMap::mapAnimationProperty(
388 const CSSValue& value) { 391 const CSSValue& value) {
389 if (value.isInitialValue()) 392 if (value.isInitialValue())
390 return CSSTransitionData::initialProperty(); 393 return CSSTransitionData::initialProperty();
391 if (value.isCustomIdentValue()) { 394 if (value.isCustomIdentValue()) {
392 const CSSCustomIdentValue& customIdentValue = toCSSCustomIdentValue(value); 395 const CSSCustomIdentValue& customIdentValue = toCSSCustomIdentValue(value);
393 if (customIdentValue.isKnownPropertyID()) 396 if (customIdentValue.isKnownPropertyID())
394 return CSSTransitionData::TransitionProperty( 397 return CSSTransitionData::TransitionProperty(
395 customIdentValue.valueAsPropertyID()); 398 customIdentValue.valueAsPropertyID());
396 return CSSTransitionData::TransitionProperty(customIdentValue.value()); 399 return CSSTransitionData::TransitionProperty(customIdentValue.value());
397 } 400 }
398 ASSERT(toCSSPrimitiveValue(value).getValueID() == CSSValueNone); 401 DCHECK_EQ(toCSSIdentifierValue(value).getValueID(), CSSValueNone);
399 return CSSTransitionData::TransitionProperty( 402 return CSSTransitionData::TransitionProperty(
400 CSSTransitionData::TransitionNone); 403 CSSTransitionData::TransitionNone);
401 } 404 }
402 405
403 PassRefPtr<TimingFunction> CSSToStyleMap::mapAnimationTimingFunction( 406 PassRefPtr<TimingFunction> CSSToStyleMap::mapAnimationTimingFunction(
404 const CSSValue& value, 407 const CSSValue& value,
405 bool allowStepMiddle) { 408 bool allowStepMiddle) {
406 // FIXME: We should probably only call into this function with a valid 409 // FIXME: We should probably only call into this function with a valid
407 // single timing function value which isn't initial or inherit. We can 410 // single timing function value which isn't initial or inherit. We can
408 // currently get into here with initial since the parser expands unset 411 // currently get into here with initial since the parser expands unset
409 // properties in shorthands to initial. 412 // properties in shorthands to initial.
410 413
411 if (value.isPrimitiveValue()) { 414 if (value.isIdentifierValue()) {
412 const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); 415 const CSSIdentifierValue& identifierValue = toCSSIdentifierValue(value);
413 switch (primitiveValue.getValueID()) { 416 switch (identifierValue.getValueID()) {
414 case CSSValueLinear: 417 case CSSValueLinear:
415 return LinearTimingFunction::shared(); 418 return LinearTimingFunction::shared();
416 case CSSValueEase: 419 case CSSValueEase:
417 return CubicBezierTimingFunction::preset( 420 return CubicBezierTimingFunction::preset(
418 CubicBezierTimingFunction::EaseType::EASE); 421 CubicBezierTimingFunction::EaseType::EASE);
419 case CSSValueEaseIn: 422 case CSSValueEaseIn:
420 return CubicBezierTimingFunction::preset( 423 return CubicBezierTimingFunction::preset(
421 CubicBezierTimingFunction::EaseType::EASE_IN); 424 CubicBezierTimingFunction::EaseType::EASE_IN);
422 case CSSValueEaseOut: 425 case CSSValueEaseOut:
423 return CubicBezierTimingFunction::preset( 426 return CubicBezierTimingFunction::preset(
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
546 if (!value.isBorderImageSliceValue()) 549 if (!value.isBorderImageSliceValue())
547 return; 550 return;
548 551
549 // Retrieve the border image value. 552 // Retrieve the border image value.
550 const CSSBorderImageSliceValue& borderImageSlice = 553 const CSSBorderImageSliceValue& borderImageSlice =
551 toCSSBorderImageSliceValue(value); 554 toCSSBorderImageSliceValue(value);
552 555
553 // Set up a length box to represent our image slices. 556 // Set up a length box to represent our image slices.
554 LengthBox box; 557 LengthBox box;
555 const CSSQuadValue& slices = borderImageSlice.slices(); 558 const CSSQuadValue& slices = borderImageSlice.slices();
556 box.m_top = convertBorderImageSliceSide(*slices.top()); 559 box.m_top = convertBorderImageSliceSide(toCSSPrimitiveValue(*slices.top()));
557 box.m_bottom = convertBorderImageSliceSide(*slices.bottom()); 560 box.m_bottom =
558 box.m_left = convertBorderImageSliceSide(*slices.left()); 561 convertBorderImageSliceSide(toCSSPrimitiveValue(*slices.bottom()));
559 box.m_right = convertBorderImageSliceSide(*slices.right()); 562 box.m_left = convertBorderImageSliceSide(toCSSPrimitiveValue(*slices.left()));
563 box.m_right =
564 convertBorderImageSliceSide(toCSSPrimitiveValue(*slices.right()));
560 image.setImageSlices(box); 565 image.setImageSlices(box);
561 566
562 // Set our fill mode. 567 // Set our fill mode.
563 image.setFill(borderImageSlice.fill()); 568 image.setFill(borderImageSlice.fill());
564 } 569 }
565 570
566 static BorderImageLength toBorderImageLength( 571 static BorderImageLength toBorderImageLength(
567 CSSPrimitiveValue& value, 572 CSSValue& value,
568 const CSSToLengthConversionData& conversionData) { 573 const CSSToLengthConversionData& conversionData) {
569 if (value.isNumber()) 574 if (value.isPrimitiveValue()) {
570 return value.getDoubleValue(); 575 const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value);
571 if (value.isPercentage()) 576 if (primitiveValue.isNumber())
572 return Length(value.getDoubleValue(), Percent); 577 return primitiveValue.getDoubleValue();
573 if (value.getValueID() != CSSValueAuto) 578 if (primitiveValue.isPercentage())
574 return value.computeLength<Length>(conversionData); 579 return Length(primitiveValue.getDoubleValue(), Percent);
580 return primitiveValue.computeLength<Length>(conversionData);
581 }
582 DCHECK_EQ(toCSSIdentifierValue(value).getValueID(), CSSValueAuto);
575 return Length(Auto); 583 return Length(Auto);
576 } 584 }
577 585
578 BorderImageLengthBox CSSToStyleMap::mapNinePieceImageQuad( 586 BorderImageLengthBox CSSToStyleMap::mapNinePieceImageQuad(
579 StyleResolverState& state, 587 StyleResolverState& state,
580 const CSSValue& value) { 588 const CSSValue& value) {
581 if (!value.isQuadValue()) 589 if (!value.isQuadValue())
582 return BorderImageLengthBox(Length(Auto)); 590 return BorderImageLengthBox(Length(Auto));
583 591
584 const CSSQuadValue& slices = toCSSQuadValue(value); 592 const CSSQuadValue& slices = toCSSQuadValue(value);
585 593
586 // Set up a border image length box to represent our image slices. 594 // Set up a border image length box to represent our image slices.
587 return BorderImageLengthBox( 595 return BorderImageLengthBox(
588 toBorderImageLength(*slices.top(), state.cssToLengthConversionData()), 596 toBorderImageLength(*slices.top(), state.cssToLengthConversionData()),
589 toBorderImageLength(*slices.right(), state.cssToLengthConversionData()), 597 toBorderImageLength(*slices.right(), state.cssToLengthConversionData()),
590 toBorderImageLength(*slices.bottom(), state.cssToLengthConversionData()), 598 toBorderImageLength(*slices.bottom(), state.cssToLengthConversionData()),
591 toBorderImageLength(*slices.left(), state.cssToLengthConversionData())); 599 toBorderImageLength(*slices.left(), state.cssToLengthConversionData()));
592 } 600 }
593 601
594 void CSSToStyleMap::mapNinePieceImageRepeat(StyleResolverState&, 602 void CSSToStyleMap::mapNinePieceImageRepeat(StyleResolverState&,
595 const CSSValue& value, 603 const CSSValue& value,
596 NinePieceImage& image) { 604 NinePieceImage& image) {
597 if (!value.isValuePair()) 605 if (!value.isValuePair())
598 return; 606 return;
599 607
600 const CSSValuePair& pair = toCSSValuePair(value); 608 const CSSValuePair& pair = toCSSValuePair(value);
601 CSSValueID firstIdentifier = toCSSPrimitiveValue(pair.first()).getValueID(); 609 CSSValueID firstIdentifier = toCSSIdentifierValue(pair.first()).getValueID();
602 CSSValueID secondIdentifier = toCSSPrimitiveValue(pair.second()).getValueID(); 610 CSSValueID secondIdentifier =
611 toCSSIdentifierValue(pair.second()).getValueID();
603 612
604 ENinePieceImageRule horizontalRule; 613 ENinePieceImageRule horizontalRule;
605 switch (firstIdentifier) { 614 switch (firstIdentifier) {
606 case CSSValueStretch: 615 case CSSValueStretch:
607 horizontalRule = StretchImageRule; 616 horizontalRule = StretchImageRule;
608 break; 617 break;
609 case CSSValueRound: 618 case CSSValueRound:
610 horizontalRule = RoundImageRule; 619 horizontalRule = RoundImageRule;
611 break; 620 break;
612 case CSSValueSpace: 621 case CSSValueSpace:
(...skipping 17 matching lines...) Expand all
630 verticalRule = SpaceImageRule; 639 verticalRule = SpaceImageRule;
631 break; 640 break;
632 default: // CSSValueRepeat 641 default: // CSSValueRepeat
633 verticalRule = RepeatImageRule; 642 verticalRule = RepeatImageRule;
634 break; 643 break;
635 } 644 }
636 image.setVerticalRule(verticalRule); 645 image.setVerticalRule(verticalRule);
637 } 646 }
638 647
639 } // namespace blink 648 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698