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

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

Issue 2346193002: Split CSSPrimitiveValue into CSSPrimitiveValue and CSSIdentifierValue (Closed)
Patch Set: Replaced ASSERTs with DCHECKS in presubmit warnings Created 4 years, 3 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 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 Color color = state.parentStyle()->color(); 160 Color color = state.parentStyle()->color();
161 if (state.applyPropertyToRegularStyle()) 161 if (state.applyPropertyToRegularStyle())
162 state.style()->setColor(color); 162 state.style()->setColor(color);
163 if (state.applyPropertyToVisitedLinkStyle()) 163 if (state.applyPropertyToVisitedLinkStyle())
164 state.style()->setVisitedLinkColor(color); 164 state.style()->setVisitedLinkColor(color);
165 } 165 }
166 166
167 void StyleBuilderFunctions::applyValueCSSPropertyColor(StyleResolverState& state , const CSSValue& value) 167 void StyleBuilderFunctions::applyValueCSSPropertyColor(StyleResolverState& state , const CSSValue& value)
168 { 168 {
169 // As per the spec, 'color: currentColor' is treated as 'color: inherit' 169 // As per the spec, 'color: currentColor' is treated as 'color: inherit'
170 if (value.isPrimitiveValue() && toCSSPrimitiveValue(value).getValueID() == C SSValueCurrentcolor) { 170 if (value.isIdentifierValue() && toCSSIdentifierValue(value).getValueID() == CSSValueCurrentcolor) {
171 applyInheritCSSPropertyColor(state); 171 applyInheritCSSPropertyColor(state);
172 return; 172 return;
173 } 173 }
174 174
175 if (state.applyPropertyToRegularStyle()) 175 if (state.applyPropertyToRegularStyle())
176 state.style()->setColor(StyleBuilderConverter::convertColor(state, value )); 176 state.style()->setColor(StyleBuilderConverter::convertColor(state, value ));
177 if (state.applyPropertyToVisitedLinkStyle()) 177 if (state.applyPropertyToVisitedLinkStyle())
178 state.style()->setVisitedLinkColor(StyleBuilderConverter::convertColor(s tate, value, true)); 178 state.style()->setVisitedLinkColor(StyleBuilderConverter::convertColor(s tate, value, true));
179 } 179 }
180 180
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 SVGElement* svgElement = toSVGElement(element); 223 SVGElement* svgElement = toSVGElement(element);
224 svgElement->setCursorImageValue(&image); 224 svgElement->setCursorImageValue(&image);
225 cursorElement->addClient(svgElement); 225 cursorElement->addClient(svgElement);
226 226
227 // Elements with SVG cursors are not allowed to share style. 227 // Elements with SVG cursors are not allowed to share style.
228 state.style()->setUnique(); 228 state.style()->setUnique();
229 } 229 }
230 230
231 state.style()->addCursor(state.styleImage(CSSPropertyCursor, ima ge), hotSpotSpecified, hotSpot); 231 state.style()->addCursor(state.styleImage(CSSPropertyCursor, ima ge), hotSpotSpecified, hotSpot);
232 } else { 232 } else {
233 state.style()->setCursor(toCSSPrimitiveValue(item).convertTo<ECu rsor>()); 233 state.style()->setCursor(toCSSIdentifierValue(item).convertTo<EC ursor>());
234 } 234 }
235 } 235 }
236 } else { 236 } else {
237 state.style()->setCursor(toCSSPrimitiveValue(value).convertTo<ECursor>() ); 237 state.style()->setCursor(toCSSIdentifierValue(value).convertTo<ECursor>( ));
238 } 238 }
239 } 239 }
240 240
241 void StyleBuilderFunctions::applyValueCSSPropertyDirection(StyleResolverState& s tate, const CSSValue& value) 241 void StyleBuilderFunctions::applyValueCSSPropertyDirection(StyleResolverState& s tate, const CSSValue& value)
242 { 242 {
243 state.style()->setDirection(toCSSPrimitiveValue(value).convertTo<TextDirecti on>()); 243 state.style()->setDirection(toCSSIdentifierValue(value).convertTo<TextDirect ion>());
244 } 244 }
245 245
246 void StyleBuilderFunctions::applyInitialCSSPropertyGridTemplateAreas(StyleResolv erState& state) 246 void StyleBuilderFunctions::applyInitialCSSPropertyGridTemplateAreas(StyleResolv erState& state)
247 { 247 {
248 state.style()->setNamedGridArea(ComputedStyle::initialNamedGridArea()); 248 state.style()->setNamedGridArea(ComputedStyle::initialNamedGridArea());
249 state.style()->setNamedGridAreaRowCount(ComputedStyle::initialNamedGridAreaC ount()); 249 state.style()->setNamedGridAreaRowCount(ComputedStyle::initialNamedGridAreaC ount());
250 state.style()->setNamedGridAreaColumnCount(ComputedStyle::initialNamedGridAr eaCount()); 250 state.style()->setNamedGridAreaColumnCount(ComputedStyle::initialNamedGridAr eaCount());
251 } 251 }
252 252
253 void StyleBuilderFunctions::applyInheritCSSPropertyGridTemplateAreas(StyleResolv erState& state) 253 void StyleBuilderFunctions::applyInheritCSSPropertyGridTemplateAreas(StyleResolv erState& state)
254 { 254 {
255 state.style()->setNamedGridArea(state.parentStyle()->namedGridArea()); 255 state.style()->setNamedGridArea(state.parentStyle()->namedGridArea());
256 state.style()->setNamedGridAreaRowCount(state.parentStyle()->namedGridAreaRo wCount()); 256 state.style()->setNamedGridAreaRowCount(state.parentStyle()->namedGridAreaRo wCount());
257 state.style()->setNamedGridAreaColumnCount(state.parentStyle()->namedGridAre aColumnCount()); 257 state.style()->setNamedGridAreaColumnCount(state.parentStyle()->namedGridAre aColumnCount());
258 } 258 }
259 259
260 void StyleBuilderFunctions::applyValueCSSPropertyGridTemplateAreas(StyleResolver State& state, const CSSValue& value) 260 void StyleBuilderFunctions::applyValueCSSPropertyGridTemplateAreas(StyleResolver State& state, const CSSValue& value)
261 { 261 {
262 if (value.isPrimitiveValue()) { 262 if (value.isIdentifierValue()) {
263 // FIXME: Shouldn't we clear the grid-area values 263 // FIXME: Shouldn't we clear the grid-area values
264 DCHECK_EQ(toCSSPrimitiveValue(value).getValueID(), CSSValueNone); 264 DCHECK_EQ(toCSSIdentifierValue(value).getValueID(), CSSValueNone);
265 return; 265 return;
266 } 266 }
267 267
268 const CSSGridTemplateAreasValue& gridTemplateAreasValue = toCSSGridTemplateA reasValue(value); 268 const CSSGridTemplateAreasValue& gridTemplateAreasValue = toCSSGridTemplateA reasValue(value);
269 const NamedGridAreaMap& newNamedGridAreas = gridTemplateAreasValue.gridAreaM ap(); 269 const NamedGridAreaMap& newNamedGridAreas = gridTemplateAreasValue.gridAreaM ap();
270 270
271 NamedGridLinesMap namedGridColumnLines; 271 NamedGridLinesMap namedGridColumnLines;
272 NamedGridLinesMap namedGridRowLines; 272 NamedGridLinesMap namedGridRowLines;
273 StyleBuilderConverter::convertOrderedNamedGridLinesMapToNamedGridLinesMap(st ate.style()->orderedNamedGridColumnLines(), namedGridColumnLines); 273 StyleBuilderConverter::convertOrderedNamedGridLinesMapToNamedGridLinesMap(st ate.style()->orderedNamedGridColumnLines(), namedGridColumnLines);
274 StyleBuilderConverter::convertOrderedNamedGridLinesMapToNamedGridLinesMap(st ate.style()->orderedNamedGridRowLines(), namedGridRowLines); 274 StyleBuilderConverter::convertOrderedNamedGridLinesMapToNamedGridLinesMap(st ate.style()->orderedNamedGridRowLines(), namedGridRowLines);
(...skipping 19 matching lines...) Expand all
294 } 294 }
295 295
296 void StyleBuilderFunctions::applyInheritCSSPropertyOutlineStyle(StyleResolverSta te& state) 296 void StyleBuilderFunctions::applyInheritCSSPropertyOutlineStyle(StyleResolverSta te& state)
297 { 297 {
298 state.style()->setOutlineStyleIsAuto(state.parentStyle()->outlineStyleIsAuto ()); 298 state.style()->setOutlineStyleIsAuto(state.parentStyle()->outlineStyleIsAuto ());
299 state.style()->setOutlineStyle(state.parentStyle()->outlineStyle()); 299 state.style()->setOutlineStyle(state.parentStyle()->outlineStyle());
300 } 300 }
301 301
302 void StyleBuilderFunctions::applyValueCSSPropertyOutlineStyle(StyleResolverState & state, const CSSValue& value) 302 void StyleBuilderFunctions::applyValueCSSPropertyOutlineStyle(StyleResolverState & state, const CSSValue& value)
303 { 303 {
304 const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); 304 const CSSIdentifierValue& identifierValue = toCSSIdentifierValue(value);
305 state.style()->setOutlineStyleIsAuto(primitiveValue.convertTo<OutlineIsAuto> ()); 305 state.style()->setOutlineStyleIsAuto(identifierValue.convertTo<OutlineIsAuto >());
306 state.style()->setOutlineStyle(primitiveValue.convertTo<EBorderStyle>()); 306 state.style()->setOutlineStyle(identifierValue.convertTo<EBorderStyle>());
307 } 307 }
308 308
309 void StyleBuilderFunctions::applyValueCSSPropertyResize(StyleResolverState& stat e, const CSSValue& value) 309 void StyleBuilderFunctions::applyValueCSSPropertyResize(StyleResolverState& stat e, const CSSValue& value)
310 { 310 {
311 const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); 311 const CSSIdentifierValue& identifierValue = toCSSIdentifierValue(value);
312 312
313 EResize r = RESIZE_NONE; 313 EResize r = RESIZE_NONE;
314 if (primitiveValue.getValueID() == CSSValueAuto) { 314 if (identifierValue.getValueID() == CSSValueAuto) {
315 if (Settings* settings = state.document().settings()) 315 if (Settings* settings = state.document().settings())
316 r = settings->textAreasAreResizable() ? RESIZE_BOTH : RESIZE_NONE; 316 r = settings->textAreasAreResizable() ? RESIZE_BOTH : RESIZE_NONE;
317 } else { 317 } else {
318 r = primitiveValue.convertTo<EResize>(); 318 r = identifierValue.convertTo<EResize>();
319 } 319 }
320 state.style()->setResize(r); 320 state.style()->setResize(r);
321 } 321 }
322 322
323 static float mmToPx(float mm) { return mm * cssPixelsPerMillimeter; } 323 static float mmToPx(float mm) { return mm * cssPixelsPerMillimeter; }
324 static float inchToPx(float inch) { return inch * cssPixelsPerInch; } 324 static float inchToPx(float inch) { return inch * cssPixelsPerInch; }
325 static FloatSize getPageSizeFromName(const CSSPrimitiveValue& pageSizeName) 325 static FloatSize getPageSizeFromName(const CSSIdentifierValue& pageSizeName)
326 { 326 {
327 switch (pageSizeName.getValueID()) { 327 switch (pageSizeName.getValueID()) {
328 case CSSValueA5: 328 case CSSValueA5:
329 return FloatSize(mmToPx(148), mmToPx(210)); 329 return FloatSize(mmToPx(148), mmToPx(210));
330 case CSSValueA4: 330 case CSSValueA4:
331 return FloatSize(mmToPx(210), mmToPx(297)); 331 return FloatSize(mmToPx(210), mmToPx(297));
332 case CSSValueA3: 332 case CSSValueA3:
333 return FloatSize(mmToPx(297), mmToPx(420)); 333 return FloatSize(mmToPx(297), mmToPx(420));
334 case CSSValueB5: 334 case CSSValueB5:
335 return FloatSize(mmToPx(176), mmToPx(250)); 335 return FloatSize(mmToPx(176), mmToPx(250));
(...skipping 14 matching lines...) Expand all
350 void StyleBuilderFunctions::applyInitialCSSPropertySize(StyleResolverState&) { } 350 void StyleBuilderFunctions::applyInitialCSSPropertySize(StyleResolverState&) { }
351 void StyleBuilderFunctions::applyInheritCSSPropertySize(StyleResolverState&) { } 351 void StyleBuilderFunctions::applyInheritCSSPropertySize(StyleResolverState&) { }
352 void StyleBuilderFunctions::applyValueCSSPropertySize(StyleResolverState& state, const CSSValue& value) 352 void StyleBuilderFunctions::applyValueCSSPropertySize(StyleResolverState& state, const CSSValue& value)
353 { 353 {
354 state.style()->resetPageSizeType(); 354 state.style()->resetPageSizeType();
355 FloatSize size; 355 FloatSize size;
356 PageSizeType pageSizeType = PAGE_SIZE_AUTO; 356 PageSizeType pageSizeType = PAGE_SIZE_AUTO;
357 const CSSValueList& list = toCSSValueList(value); 357 const CSSValueList& list = toCSSValueList(value);
358 if (list.length() == 2) { 358 if (list.length() == 2) {
359 // <length>{2} | <page-size> <orientation> 359 // <length>{2} | <page-size> <orientation>
360 const CSSPrimitiveValue& first = toCSSPrimitiveValue(list.item(0)); 360 const CSSValue& first = list.item(0);
361 const CSSPrimitiveValue& second = toCSSPrimitiveValue(list.item(1)); 361 const CSSValue& second = list.item(1);
362 if (first.isLength()) { 362 if (first.isPrimitiveValue() && toCSSPrimitiveValue(first).isLength()) {
363 // <length>{2} 363 // <length>{2}
364 size = FloatSize(first.computeLength<float>(state.cssToLengthConvers ionData().copyWithAdjustedZoom(1.0)), 364 size = FloatSize(toCSSPrimitiveValue(first).computeLength<float>(sta te.cssToLengthConversionData().copyWithAdjustedZoom(1.0)),
365 second.computeLength<float>(state.cssToLengthConversionData().co pyWithAdjustedZoom(1.0))); 365 toCSSPrimitiveValue(second).computeLength<float>(state.cssToLeng thConversionData().copyWithAdjustedZoom(1.0)));
366 } else { 366 } else {
367 // <page-size> <orientation> 367 // <page-size> <orientation>
368 size = getPageSizeFromName(first); 368 size = getPageSizeFromName(toCSSIdentifierValue(first));
369 369
370 DCHECK(second.getValueID() == CSSValueLandscape || second.getValueID () == CSSValuePortrait); 370 DCHECK(toCSSIdentifierValue(second).getValueID() == CSSValueLandscap e || toCSSIdentifierValue(second).getValueID() == CSSValuePortrait);
371 if (second.getValueID() == CSSValueLandscape) 371 if (toCSSIdentifierValue(second).getValueID() == CSSValueLandscape)
372 size = size.transposedSize(); 372 size = size.transposedSize();
373 } 373 }
374 pageSizeType = PAGE_SIZE_RESOLVED; 374 pageSizeType = PAGE_SIZE_RESOLVED;
375 } else { 375 } else {
376 DCHECK_EQ(list.length(), 1U); 376 DCHECK_EQ(list.length(), 1U);
377 // <length> | auto | <page-size> | [ portrait | landscape] 377 // <length> | auto | <page-size> | [ portrait | landscape]
378 const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(list.item( 0)); 378 const CSSValue& first = list.item(0);
379 if (primitiveValue.isLength()) { 379 if (first.isPrimitiveValue() && toCSSPrimitiveValue(first).isLength()) {
380 // <length> 380 // <length>
381 pageSizeType = PAGE_SIZE_RESOLVED; 381 pageSizeType = PAGE_SIZE_RESOLVED;
382 float width = primitiveValue.computeLength<float>(state.cssToLengthC onversionData().copyWithAdjustedZoom(1.0)); 382 float width = toCSSPrimitiveValue(first).computeLength<float>(state. cssToLengthConversionData().copyWithAdjustedZoom(1.0));
383 size = FloatSize(width, width); 383 size = FloatSize(width, width);
384 } else { 384 } else {
385 switch (primitiveValue.getValueID()) { 385 const CSSIdentifierValue& ident = toCSSIdentifierValue(first);
386 switch (ident.getValueID()) {
386 case CSSValueAuto: 387 case CSSValueAuto:
387 pageSizeType = PAGE_SIZE_AUTO; 388 pageSizeType = PAGE_SIZE_AUTO;
388 break; 389 break;
389 case CSSValuePortrait: 390 case CSSValuePortrait:
390 pageSizeType = PAGE_SIZE_AUTO_PORTRAIT; 391 pageSizeType = PAGE_SIZE_AUTO_PORTRAIT;
391 break; 392 break;
392 case CSSValueLandscape: 393 case CSSValueLandscape:
393 pageSizeType = PAGE_SIZE_AUTO_LANDSCAPE; 394 pageSizeType = PAGE_SIZE_AUTO_LANDSCAPE;
394 break; 395 break;
395 default: 396 default:
396 // <page-size> 397 // <page-size>
397 pageSizeType = PAGE_SIZE_RESOLVED; 398 pageSizeType = PAGE_SIZE_RESOLVED;
398 size = getPageSizeFromName(primitiveValue); 399 size = getPageSizeFromName(ident);
399 } 400 }
400 } 401 }
401 } 402 }
402 state.style()->setPageSizeType(pageSizeType); 403 state.style()->setPageSizeType(pageSizeType);
403 state.style()->setPageSize(size); 404 state.style()->setPageSize(size);
404 } 405 }
405 406
406 void StyleBuilderFunctions::applyInitialCSSPropertySnapHeight(StyleResolverState & state) 407 void StyleBuilderFunctions::applyInitialCSSPropertySnapHeight(StyleResolverState & state)
407 { 408 {
408 state.style()->setSnapHeightUnit(0); 409 state.style()->setSnapHeightUnit(0);
(...skipping 23 matching lines...) Expand all
432 DCHECK_EQ(list.length(), 2U); 433 DCHECK_EQ(list.length(), 2U);
433 const CSSPrimitiveValue& second = toCSSPrimitiveValue(list.item(1)); 434 const CSSPrimitiveValue& second = toCSSPrimitiveValue(list.item(1));
434 DCHECK(second.isNumber()); 435 DCHECK(second.isNumber());
435 int position = second.getIntValue(); 436 int position = second.getIntValue();
436 DCHECK(position > 0 && position <= 100); 437 DCHECK(position > 0 && position <= 100);
437 state.style()->setSnapHeightPosition(position); 438 state.style()->setSnapHeightPosition(position);
438 } 439 }
439 440
440 void StyleBuilderFunctions::applyValueCSSPropertyTextAlign(StyleResolverState& s tate, const CSSValue& value) 441 void StyleBuilderFunctions::applyValueCSSPropertyTextAlign(StyleResolverState& s tate, const CSSValue& value)
441 { 442 {
442 const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); 443 if (value.isIdentifierValue() && toCSSIdentifierValue(value).getValueID() != CSSValueWebkitMatchParent) {
443 if (primitiveValue.isValueID() && primitiveValue.getValueID() != CSSValueWeb kitMatchParent) {
444 // Special case for th elements - UA stylesheet text-align does not appl y if parent's computed value for text-align is not its initial value 444 // Special case for th elements - UA stylesheet text-align does not appl y if parent's computed value for text-align is not its initial value
445 // https://html.spec.whatwg.org/multipage/rendering.html#tables-2 445 // https://html.spec.whatwg.org/multipage/rendering.html#tables-2
446 if (primitiveValue.getValueID() == CSSValueInternalCenter && state.paren tStyle()->textAlign() != ComputedStyle::initialTextAlign()) 446 const CSSIdentifierValue& identValue = toCSSIdentifierValue(value);
447 if (identValue.getValueID() == CSSValueInternalCenter && state.parentSty le()->textAlign() != ComputedStyle::initialTextAlign())
447 state.style()->setTextAlign(state.parentStyle()->textAlign()); 448 state.style()->setTextAlign(state.parentStyle()->textAlign());
448 else 449 else
449 state.style()->setTextAlign(primitiveValue.convertTo<ETextAlign>()); 450 state.style()->setTextAlign(identValue.convertTo<ETextAlign>());
450 } 451 }
451 else if (state.parentStyle()->textAlign() == TASTART) 452 else if (state.parentStyle()->textAlign() == TASTART)
452 state.style()->setTextAlign(state.parentStyle()->isLeftToRightDirection( ) ? LEFT : RIGHT); 453 state.style()->setTextAlign(state.parentStyle()->isLeftToRightDirection( ) ? LEFT : RIGHT);
453 else if (state.parentStyle()->textAlign() == TAEND) 454 else if (state.parentStyle()->textAlign() == TAEND)
454 state.style()->setTextAlign(state.parentStyle()->isLeftToRightDirection( ) ? RIGHT : LEFT); 455 state.style()->setTextAlign(state.parentStyle()->isLeftToRightDirection( ) ? RIGHT : LEFT);
455 else 456 else
456 state.style()->setTextAlign(state.parentStyle()->textAlign()); 457 state.style()->setTextAlign(state.parentStyle()->textAlign());
457 } 458 }
458 459
459 void StyleBuilderFunctions::applyInheritCSSPropertyTextIndent(StyleResolverState & state) 460 void StyleBuilderFunctions::applyInheritCSSPropertyTextIndent(StyleResolverState & state)
(...skipping 10 matching lines...) Expand all
470 state.style()->setTextIndentType(ComputedStyle::initialTextIndentType()); 471 state.style()->setTextIndentType(ComputedStyle::initialTextIndentType());
471 } 472 }
472 473
473 void StyleBuilderFunctions::applyValueCSSPropertyTextIndent(StyleResolverState& state, const CSSValue& value) 474 void StyleBuilderFunctions::applyValueCSSPropertyTextIndent(StyleResolverState& state, const CSSValue& value)
474 { 475 {
475 Length lengthOrPercentageValue; 476 Length lengthOrPercentageValue;
476 TextIndentLine textIndentLineValue = ComputedStyle::initialTextIndentLine(); 477 TextIndentLine textIndentLineValue = ComputedStyle::initialTextIndentLine();
477 TextIndentType textIndentTypeValue = ComputedStyle::initialTextIndentType(); 478 TextIndentType textIndentTypeValue = ComputedStyle::initialTextIndentType();
478 479
479 for (auto& listValue : toCSSValueList(value)) { 480 for (auto& listValue : toCSSValueList(value)) {
480 const CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(listValue. get()); 481 if (listValue->isPrimitiveValue()) {
481 if (!primitiveValue->getValueID()) 482 lengthOrPercentageValue = toCSSPrimitiveValue(*listValue).convertToL ength(state.cssToLengthConversionData());
482 lengthOrPercentageValue = primitiveValue->convertToLength(state.cssT oLengthConversionData()); 483 } else if (toCSSIdentifierValue(*listValue).getValueID() == CSSValueEach Line) {
483 else if (primitiveValue->getValueID() == CSSValueEachLine)
484 textIndentLineValue = TextIndentEachLine; 484 textIndentLineValue = TextIndentEachLine;
485 else if (primitiveValue->getValueID() == CSSValueHanging) 485 } else if (toCSSIdentifierValue(*listValue).getValueID() == CSSValueHang ing) {
486 textIndentTypeValue = TextIndentHanging; 486 textIndentTypeValue = TextIndentHanging;
487 else 487 } else {
488 NOTREACHED(); 488 NOTREACHED();
489 }
489 } 490 }
490 491
491 state.style()->setTextIndent(lengthOrPercentageValue); 492 state.style()->setTextIndent(lengthOrPercentageValue);
492 state.style()->setTextIndentLine(textIndentLineValue); 493 state.style()->setTextIndentLine(textIndentLineValue);
493 state.style()->setTextIndentType(textIndentTypeValue); 494 state.style()->setTextIndentType(textIndentTypeValue);
494 } 495 }
495 496
496 void StyleBuilderFunctions::applyValueCSSPropertyTransform(StyleResolverState& s tate, const CSSValue& value) 497 void StyleBuilderFunctions::applyValueCSSPropertyTransform(StyleResolverState& s tate, const CSSValue& value)
497 { 498 {
498 // FIXME: We should just make this a converter 499 // FIXME: We should just make this a converter
499 TransformOperations operations; 500 TransformOperations operations;
500 TransformBuilder::createTransformOperations(value, state.cssToLengthConversi onData(), operations); 501 TransformBuilder::createTransformOperations(value, state.cssToLengthConversi onData(), operations);
501 state.style()->setTransform(operations); 502 state.style()->setTransform(operations);
502 } 503 }
503 504
504 void StyleBuilderFunctions::applyInheritCSSPropertyVerticalAlign(StyleResolverSt ate& state) 505 void StyleBuilderFunctions::applyInheritCSSPropertyVerticalAlign(StyleResolverSt ate& state)
505 { 506 {
506 EVerticalAlign verticalAlign = state.parentStyle()->verticalAlign(); 507 EVerticalAlign verticalAlign = state.parentStyle()->verticalAlign();
507 state.style()->setVerticalAlign(verticalAlign); 508 state.style()->setVerticalAlign(verticalAlign);
508 if (verticalAlign == VerticalAlignLength) 509 if (verticalAlign == VerticalAlignLength)
509 state.style()->setVerticalAlignLength(state.parentStyle()->getVerticalAl ignLength()); 510 state.style()->setVerticalAlignLength(state.parentStyle()->getVerticalAl ignLength());
510 } 511 }
511 512
512 void StyleBuilderFunctions::applyValueCSSPropertyVerticalAlign(StyleResolverStat e& state, const CSSValue& value) 513 void StyleBuilderFunctions::applyValueCSSPropertyVerticalAlign(StyleResolverStat e& state, const CSSValue& value)
513 { 514 {
514 const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); 515 if (value.isIdentifierValue())
515 516 state.style()->setVerticalAlign(toCSSIdentifierValue(value).convertTo<EV erticalAlign>());
516 if (primitiveValue.getValueID())
517 state.style()->setVerticalAlign(primitiveValue.convertTo<EVerticalAlign> ());
518 else 517 else
519 state.style()->setVerticalAlignLength(primitiveValue.convertToLength(sta te.cssToLengthConversionData())); 518 state.style()->setVerticalAlignLength(toCSSPrimitiveValue(value).convert ToLength(state.cssToLengthConversionData()));
520 } 519 }
521 520
522 static void resetEffectiveZoom(StyleResolverState& state) 521 static void resetEffectiveZoom(StyleResolverState& state)
523 { 522 {
524 // Reset the zoom in effect. This allows the setZoom method to accurately co mpute a new zoom in effect. 523 // Reset the zoom in effect. This allows the setZoom method to accurately co mpute a new zoom in effect.
525 state.setEffectiveZoom(state.parentStyle() ? state.parentStyle()->effectiveZ oom() : ComputedStyle::initialZoom()); 524 state.setEffectiveZoom(state.parentStyle() ? state.parentStyle()->effectiveZ oom() : ComputedStyle::initialZoom());
526 } 525 }
527 526
528 void StyleBuilderFunctions::applyInitialCSSPropertyZoom(StyleResolverState& stat e) 527 void StyleBuilderFunctions::applyInitialCSSPropertyZoom(StyleResolverState& stat e)
529 { 528 {
530 resetEffectiveZoom(state); 529 resetEffectiveZoom(state);
531 state.setZoom(ComputedStyle::initialZoom()); 530 state.setZoom(ComputedStyle::initialZoom());
532 } 531 }
533 532
534 void StyleBuilderFunctions::applyInheritCSSPropertyZoom(StyleResolverState& stat e) 533 void StyleBuilderFunctions::applyInheritCSSPropertyZoom(StyleResolverState& stat e)
535 { 534 {
536 resetEffectiveZoom(state); 535 resetEffectiveZoom(state);
537 state.setZoom(state.parentStyle()->zoom()); 536 state.setZoom(state.parentStyle()->zoom());
538 } 537 }
539 538
540 void StyleBuilderFunctions::applyValueCSSPropertyZoom(StyleResolverState& state, const CSSValue& value) 539 void StyleBuilderFunctions::applyValueCSSPropertyZoom(StyleResolverState& state, const CSSValue& value)
541 { 540 {
542 SECURITY_DCHECK(value.isPrimitiveValue()); 541 SECURITY_DCHECK(value.isPrimitiveValue() || value.isIdentifierValue());
543 const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value);
544 542
545 if (primitiveValue.getValueID() == CSSValueNormal) { 543 if (value.isIdentifierValue()) {
546 resetEffectiveZoom(state); 544 const CSSIdentifierValue& identifierValue = toCSSIdentifierValue(value);
547 state.setZoom(ComputedStyle::initialZoom()); 545 if (identifierValue.getValueID() == CSSValueNormal) {
548 } else if (primitiveValue.getValueID() == CSSValueReset) { 546 resetEffectiveZoom(state);
549 state.setEffectiveZoom(ComputedStyle::initialZoom()); 547 state.setZoom(ComputedStyle::initialZoom());
550 state.setZoom(ComputedStyle::initialZoom()); 548 } else if (identifierValue.getValueID() == CSSValueReset) {
551 } else if (primitiveValue.getValueID() == CSSValueDocument) { 549 state.setEffectiveZoom(ComputedStyle::initialZoom());
552 float docZoom = state.rootElementStyle() ? state.rootElementStyle()->zoo m() : ComputedStyle::initialZoom(); 550 state.setZoom(ComputedStyle::initialZoom());
553 state.setEffectiveZoom(docZoom); 551 } else if (identifierValue.getValueID() == CSSValueDocument) {
554 state.setZoom(docZoom); 552 float docZoom = state.rootElementStyle() ? state.rootElementStyle()- >zoom() : ComputedStyle::initialZoom();
555 } else if (primitiveValue.isPercentage()) { 553 state.setEffectiveZoom(docZoom);
556 resetEffectiveZoom(state); 554 state.setZoom(docZoom);
557 if (float percent = primitiveValue.getFloatValue()) 555 }
558 state.setZoom(percent / 100.0f); 556 } else if (value.isPrimitiveValue()) {
559 } else if (primitiveValue.isNumber()) { 557 const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value);
560 resetEffectiveZoom(state); 558 if (primitiveValue.isPercentage()) {
561 if (float number = primitiveValue.getFloatValue()) 559 resetEffectiveZoom(state);
562 state.setZoom(number); 560 if (float percent = primitiveValue.getFloatValue())
561 state.setZoom(percent / 100.0f);
562 } else if (primitiveValue.isNumber()) {
563 resetEffectiveZoom(state);
564 if (float number = primitiveValue.getFloatValue())
565 state.setZoom(number);
566 }
563 } 567 }
564 } 568 }
565 569
566 void StyleBuilderFunctions::applyValueCSSPropertyWebkitBorderImage(StyleResolver State& state, const CSSValue& value) 570 void StyleBuilderFunctions::applyValueCSSPropertyWebkitBorderImage(StyleResolver State& state, const CSSValue& value)
567 { 571 {
568 NinePieceImage image; 572 NinePieceImage image;
569 CSSToStyleMap::mapNinePieceImage(state, CSSPropertyWebkitBorderImage, value, image); 573 CSSToStyleMap::mapNinePieceImage(state, CSSPropertyWebkitBorderImage, value, image);
570 state.style()->setBorderImage(image); 574 state.style()->setBorderImage(image);
571 } 575 }
572 576
(...skipping 10 matching lines...) Expand all
583 state.style()->setTextEmphasisMark(state.parentStyle()->getTextEmphasisMark( )); 587 state.style()->setTextEmphasisMark(state.parentStyle()->getTextEmphasisMark( ));
584 state.style()->setTextEmphasisCustomMark(state.parentStyle()->textEmphasisCu stomMark()); 588 state.style()->setTextEmphasisCustomMark(state.parentStyle()->textEmphasisCu stomMark());
585 } 589 }
586 590
587 void StyleBuilderFunctions::applyValueCSSPropertyWebkitTextEmphasisStyle(StyleRe solverState& state, const CSSValue& value) 591 void StyleBuilderFunctions::applyValueCSSPropertyWebkitTextEmphasisStyle(StyleRe solverState& state, const CSSValue& value)
588 { 592 {
589 if (value.isValueList()) { 593 if (value.isValueList()) {
590 const CSSValueList& list = toCSSValueList(value); 594 const CSSValueList& list = toCSSValueList(value);
591 DCHECK_EQ(list.length(), 2U); 595 DCHECK_EQ(list.length(), 2U);
592 for (unsigned i = 0; i < 2; ++i) { 596 for (unsigned i = 0; i < 2; ++i) {
593 const CSSPrimitiveValue& value = toCSSPrimitiveValue(list.item(i)); 597 const CSSIdentifierValue& value = toCSSIdentifierValue(list.item(i)) ;
594 if (value.getValueID() == CSSValueFilled || value.getValueID() == CS SValueOpen) 598 if (value.getValueID() == CSSValueFilled || value.getValueID() == CS SValueOpen)
595 state.style()->setTextEmphasisFill(value.convertTo<TextEmphasisF ill>()); 599 state.style()->setTextEmphasisFill(value.convertTo<TextEmphasisF ill>());
596 else 600 else
597 state.style()->setTextEmphasisMark(value.convertTo<TextEmphasisM ark>()); 601 state.style()->setTextEmphasisMark(value.convertTo<TextEmphasisM ark>());
598 } 602 }
599 state.style()->setTextEmphasisCustomMark(nullAtom); 603 state.style()->setTextEmphasisCustomMark(nullAtom);
600 return; 604 return;
601 } 605 }
602 606
603 if (value.isStringValue()) { 607 if (value.isStringValue()) {
604 state.style()->setTextEmphasisFill(TextEmphasisFillFilled); 608 state.style()->setTextEmphasisFill(TextEmphasisFillFilled);
605 state.style()->setTextEmphasisMark(TextEmphasisMarkCustom); 609 state.style()->setTextEmphasisMark(TextEmphasisMarkCustom);
606 state.style()->setTextEmphasisCustomMark(AtomicString(toCSSStringValue(v alue).value())); 610 state.style()->setTextEmphasisCustomMark(AtomicString(toCSSStringValue(v alue).value()));
607 return; 611 return;
608 } 612 }
609 613
610 const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); 614 const CSSIdentifierValue& identifierValue = toCSSIdentifierValue(value);
611 615
612 state.style()->setTextEmphasisCustomMark(nullAtom); 616 state.style()->setTextEmphasisCustomMark(nullAtom);
613 617
614 if (primitiveValue.getValueID() == CSSValueFilled || primitiveValue.getValue ID() == CSSValueOpen) { 618 if (identifierValue.getValueID() == CSSValueFilled || identifierValue.getVal ueID() == CSSValueOpen) {
615 state.style()->setTextEmphasisFill(primitiveValue.convertTo<TextEmphasis Fill>()); 619 state.style()->setTextEmphasisFill(identifierValue.convertTo<TextEmphasi sFill>());
616 state.style()->setTextEmphasisMark(TextEmphasisMarkAuto); 620 state.style()->setTextEmphasisMark(TextEmphasisMarkAuto);
617 } else { 621 } else {
618 state.style()->setTextEmphasisFill(TextEmphasisFillFilled); 622 state.style()->setTextEmphasisFill(TextEmphasisFillFilled);
619 state.style()->setTextEmphasisMark(primitiveValue.convertTo<TextEmphasis Mark>()); 623 state.style()->setTextEmphasisMark(identifierValue.convertTo<TextEmphasi sMark>());
620 } 624 }
621 } 625 }
622 626
623 void StyleBuilderFunctions::applyInitialCSSPropertyWillChange(StyleResolverState & state) 627 void StyleBuilderFunctions::applyInitialCSSPropertyWillChange(StyleResolverState & state)
624 { 628 {
625 state.style()->setWillChangeContents(false); 629 state.style()->setWillChangeContents(false);
626 state.style()->setWillChangeScrollPosition(false); 630 state.style()->setWillChangeScrollPosition(false);
627 state.style()->setWillChangeProperties(Vector<CSSPropertyID>()); 631 state.style()->setWillChangeProperties(Vector<CSSPropertyID>());
628 state.style()->setSubtreeWillChangeContents(state.parentStyle()->subtreeWill ChangeContents()); 632 state.style()->setSubtreeWillChangeContents(state.parentStyle()->subtreeWill ChangeContents());
629 } 633 }
630 634
631 void StyleBuilderFunctions::applyInheritCSSPropertyWillChange(StyleResolverState & state) 635 void StyleBuilderFunctions::applyInheritCSSPropertyWillChange(StyleResolverState & state)
632 { 636 {
633 state.style()->setWillChangeContents(state.parentStyle()->willChangeContents ()); 637 state.style()->setWillChangeContents(state.parentStyle()->willChangeContents ());
634 state.style()->setWillChangeScrollPosition(state.parentStyle()->willChangeSc rollPosition()); 638 state.style()->setWillChangeScrollPosition(state.parentStyle()->willChangeSc rollPosition());
635 state.style()->setWillChangeProperties(state.parentStyle()->willChangeProper ties()); 639 state.style()->setWillChangeProperties(state.parentStyle()->willChangeProper ties());
636 state.style()->setSubtreeWillChangeContents(state.parentStyle()->subtreeWill ChangeContents()); 640 state.style()->setSubtreeWillChangeContents(state.parentStyle()->subtreeWill ChangeContents());
637 } 641 }
638 642
639 void StyleBuilderFunctions::applyValueCSSPropertyWillChange(StyleResolverState& state, const CSSValue& value) 643 void StyleBuilderFunctions::applyValueCSSPropertyWillChange(StyleResolverState& state, const CSSValue& value)
640 { 644 {
641 bool willChangeContents = false; 645 bool willChangeContents = false;
642 bool willChangeScrollPosition = false; 646 bool willChangeScrollPosition = false;
643 Vector<CSSPropertyID> willChangeProperties; 647 Vector<CSSPropertyID> willChangeProperties;
644 648
645 if (value.isPrimitiveValue()) { 649 if (value.isIdentifierValue()) {
646 DCHECK_EQ(toCSSPrimitiveValue(value).getValueID(), CSSValueAuto); 650 DCHECK_EQ(toCSSIdentifierValue(value).getValueID(), CSSValueAuto);
647 } else { 651 } else {
648 DCHECK(value.isValueList()); 652 DCHECK(value.isValueList());
649 for (auto& willChangeValue : toCSSValueList(value)) { 653 for (auto& willChangeValue : toCSSValueList(value)) {
650 if (willChangeValue->isCustomIdentValue()) 654 if (willChangeValue->isCustomIdentValue())
651 willChangeProperties.append(toCSSCustomIdentValue(*willChangeVal ue).valueAsPropertyID()); 655 willChangeProperties.append(toCSSCustomIdentValue(*willChangeVal ue).valueAsPropertyID());
652 else if (toCSSPrimitiveValue(*willChangeValue).getValueID() == CSSVa lueContents) 656 else if (toCSSIdentifierValue(*willChangeValue).getValueID() == CSSV alueContents)
653 willChangeContents = true; 657 willChangeContents = true;
654 else if (toCSSPrimitiveValue(*willChangeValue).getValueID() == CSSVa lueScrollPosition) 658 else if (toCSSIdentifierValue(*willChangeValue).getValueID() == CSSV alueScrollPosition)
655 willChangeScrollPosition = true; 659 willChangeScrollPosition = true;
656 else 660 else
657 NOTREACHED(); 661 NOTREACHED();
658 } 662 }
659 } 663 }
660 state.style()->setWillChangeContents(willChangeContents); 664 state.style()->setWillChangeContents(willChangeContents);
661 state.style()->setWillChangeScrollPosition(willChangeScrollPosition); 665 state.style()->setWillChangeScrollPosition(willChangeScrollPosition);
662 state.style()->setWillChangeProperties(willChangeProperties); 666 state.style()->setWillChangeProperties(willChangeProperties);
663 state.style()->setSubtreeWillChangeContents(willChangeContents || state.pare ntStyle()->subtreeWillChangeContents()); 667 state.style()->setSubtreeWillChangeContents(willChangeContents || state.pare ntStyle()->subtreeWillChangeContents());
664 } 668 }
665 669
666 void StyleBuilderFunctions::applyInitialCSSPropertyContent(StyleResolverState& s tate) 670 void StyleBuilderFunctions::applyInitialCSSPropertyContent(StyleResolverState& s tate)
667 { 671 {
668 state.style()->setContent(nullptr); 672 state.style()->setContent(nullptr);
669 } 673 }
670 674
671 void StyleBuilderFunctions::applyInheritCSSPropertyContent(StyleResolverState&) 675 void StyleBuilderFunctions::applyInheritCSSPropertyContent(StyleResolverState&)
672 { 676 {
673 // FIXME: In CSS3, it will be possible to inherit content. In CSS2 it is not . This 677 // FIXME: In CSS3, it will be possible to inherit content. In CSS2 it is not . This
674 // note is a reminder that eventually "inherit" needs to be supported. 678 // note is a reminder that eventually "inherit" needs to be supported.
675 } 679 }
676 680
677 void StyleBuilderFunctions::applyValueCSSPropertyContent(StyleResolverState& sta te, const CSSValue& value) 681 void StyleBuilderFunctions::applyValueCSSPropertyContent(StyleResolverState& sta te, const CSSValue& value)
678 { 682 {
679 if (value.isPrimitiveValue()) { 683 if (value.isIdentifierValue()) {
680 DCHECK(toCSSPrimitiveValue(value).getValueID() == CSSValueNormal || toCS SPrimitiveValue(value).getValueID() == CSSValueNone); 684 DCHECK(toCSSIdentifierValue(value).getValueID() == CSSValueNormal || toC SSIdentifierValue(value).getValueID() == CSSValueNone);
681 state.style()->setContent(nullptr); 685 state.style()->setContent(nullptr);
682 return; 686 return;
683 } 687 }
684 688
685 ContentData* firstContent = nullptr; 689 ContentData* firstContent = nullptr;
686 ContentData* prevContent = nullptr; 690 ContentData* prevContent = nullptr;
687 for (auto& item : toCSSValueList(value)) { 691 for (auto& item : toCSSValueList(value)) {
688 ContentData* nextContent = nullptr; 692 ContentData* nextContent = nullptr;
689 if (item->isImageGeneratorValue() || item->isImageSetValue() || item->is ImageValue()) { 693 if (item->isImageGeneratorValue() || item->isImageSetValue() || item->is ImageValue()) {
690 nextContent = ContentData::create(state.styleImage(CSSPropertyConten t, *item)); 694 nextContent = ContentData::create(state.styleImage(CSSPropertyConten t, *item));
691 } else if (item->isCounterValue()) { 695 } else if (item->isCounterValue()) {
692 const CSSCounterValue* counterValue = toCSSCounterValue(item.get()); 696 const CSSCounterValue* counterValue = toCSSCounterValue(item.get());
693 EListStyleType listStyleType = NoneListStyle; 697 EListStyleType listStyleType = NoneListStyle;
694 CSSValueID listStyleIdent = counterValue->listStyle(); 698 CSSValueID listStyleIdent = counterValue->listStyle();
695 if (listStyleIdent != CSSValueNone) 699 if (listStyleIdent != CSSValueNone)
696 listStyleType = static_cast<EListStyleType>(listStyleIdent - CSS ValueDisc); 700 listStyleType = static_cast<EListStyleType>(listStyleIdent - CSS ValueDisc);
697 std::unique_ptr<CounterContent> counter = wrapUnique(new CounterCont ent(AtomicString(counterValue->identifier()), listStyleType, AtomicString(counte rValue->separator()))); 701 std::unique_ptr<CounterContent> counter = wrapUnique(new CounterCont ent(AtomicString(counterValue->identifier()), listStyleType, AtomicString(counte rValue->separator())));
698 nextContent = ContentData::create(std::move(counter)); 702 nextContent = ContentData::create(std::move(counter));
699 } else if (item->isPrimitiveValue()) { 703 } else if (item->isIdentifierValue()) {
700 QuoteType quoteType; 704 QuoteType quoteType;
701 switch (toCSSPrimitiveValue(*item).getValueID()) { 705 switch (toCSSIdentifierValue(*item).getValueID()) {
702 default: 706 default:
703 NOTREACHED(); 707 NOTREACHED();
704 case CSSValueOpenQuote: 708 case CSSValueOpenQuote:
705 quoteType = OPEN_QUOTE; 709 quoteType = OPEN_QUOTE;
706 break; 710 break;
707 case CSSValueCloseQuote: 711 case CSSValueCloseQuote:
708 quoteType = CLOSE_QUOTE; 712 quoteType = CLOSE_QUOTE;
709 break; 713 break;
710 case CSSValueNoOpenQuote: 714 case CSSValueNoOpenQuote:
711 quoteType = NO_OPEN_QUOTE; 715 quoteType = NO_OPEN_QUOTE;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
745 prevContent->setNext(nextContent); 749 prevContent->setNext(nextContent);
746 750
747 prevContent = nextContent; 751 prevContent = nextContent;
748 } 752 }
749 DCHECK(firstContent); 753 DCHECK(firstContent);
750 state.style()->setContent(firstContent); 754 state.style()->setContent(firstContent);
751 } 755 }
752 756
753 void StyleBuilderFunctions::applyValueCSSPropertyWebkitLocale(StyleResolverState & state, const CSSValue& value) 757 void StyleBuilderFunctions::applyValueCSSPropertyWebkitLocale(StyleResolverState & state, const CSSValue& value)
754 { 758 {
755 if (value.isPrimitiveValue()) { 759 if (value.isIdentifierValue()) {
756 DCHECK_EQ(toCSSPrimitiveValue(value).getValueID(), CSSValueAuto); 760 DCHECK_EQ(toCSSIdentifierValue(value).getValueID(), CSSValueAuto);
757 state.fontBuilder().setLocale(nullptr); 761 state.fontBuilder().setLocale(nullptr);
758 } else { 762 } else {
759 state.fontBuilder().setLocale(LayoutLocale::get(AtomicString(toCSSString Value(value).value()))); 763 state.fontBuilder().setLocale(LayoutLocale::get(AtomicString(toCSSString Value(value).value())));
760 } 764 }
761 } 765 }
762 766
763 void StyleBuilderFunctions::applyInitialCSSPropertyWebkitAppRegion(StyleResolver State&) 767 void StyleBuilderFunctions::applyInitialCSSPropertyWebkitAppRegion(StyleResolver State&)
764 { 768 {
765 } 769 }
766 770
767 void StyleBuilderFunctions::applyInheritCSSPropertyWebkitAppRegion(StyleResolver State&) 771 void StyleBuilderFunctions::applyInheritCSSPropertyWebkitAppRegion(StyleResolver State&)
768 { 772 {
769 } 773 }
770 774
771 void StyleBuilderFunctions::applyValueCSSPropertyWebkitAppRegion(StyleResolverSt ate& state, const CSSValue& value) 775 void StyleBuilderFunctions::applyValueCSSPropertyWebkitAppRegion(StyleResolverSt ate& state, const CSSValue& value)
772 { 776 {
773 const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); 777 const CSSIdentifierValue& identifierValue = toCSSIdentifierValue(value);
774 state.style()->setDraggableRegionMode(primitiveValue.getValueID() == CSSValu eDrag ? DraggableRegionDrag : DraggableRegionNoDrag); 778 state.style()->setDraggableRegionMode(identifierValue.getValueID() == CSSVal ueDrag ? DraggableRegionDrag : DraggableRegionNoDrag);
775 state.document().setHasAnnotatedRegions(true); 779 state.document().setHasAnnotatedRegions(true);
776 } 780 }
777 781
778 void StyleBuilderFunctions::applyValueCSSPropertyWritingMode(StyleResolverState& state, const CSSValue& value) 782 void StyleBuilderFunctions::applyValueCSSPropertyWritingMode(StyleResolverState& state, const CSSValue& value)
779 { 783 {
780 state.setWritingMode(toCSSPrimitiveValue(value).convertTo<WritingMode>()); 784 state.setWritingMode(toCSSIdentifierValue(value).convertTo<WritingMode>());
781 } 785 }
782 786
783 void StyleBuilderFunctions::applyValueCSSPropertyWebkitWritingMode(StyleResolver State& state, const CSSValue& value) 787 void StyleBuilderFunctions::applyValueCSSPropertyWebkitWritingMode(StyleResolver State& state, const CSSValue& value)
784 { 788 {
785 state.setWritingMode(toCSSPrimitiveValue(value).convertTo<WritingMode>()); 789 state.setWritingMode(toCSSIdentifierValue(value).convertTo<WritingMode>());
786 } 790 }
787 791
788 void StyleBuilderFunctions::applyValueCSSPropertyTextOrientation(StyleResolverSt ate& state, const CSSValue& value) 792 void StyleBuilderFunctions::applyValueCSSPropertyTextOrientation(StyleResolverSt ate& state, const CSSValue& value)
789 { 793 {
790 state.setTextOrientation(toCSSPrimitiveValue(value).convertTo<TextOrientatio n>()); 794 state.setTextOrientation(toCSSIdentifierValue(value).convertTo<TextOrientati on>());
791 } 795 }
792 796
793 void StyleBuilderFunctions::applyValueCSSPropertyWebkitTextOrientation(StyleReso lverState& state, const CSSValue& value) 797 void StyleBuilderFunctions::applyValueCSSPropertyWebkitTextOrientation(StyleReso lverState& state, const CSSValue& value)
794 { 798 {
795 state.setTextOrientation(toCSSPrimitiveValue(value).convertTo<TextOrientatio n>()); 799 state.setTextOrientation(toCSSIdentifierValue(value).convertTo<TextOrientati on>());
796 } 800 }
797 801
798 void StyleBuilderFunctions::applyValueCSSPropertyVariable(StyleResolverState& st ate, const CSSValue& value) 802 void StyleBuilderFunctions::applyValueCSSPropertyVariable(StyleResolverState& st ate, const CSSValue& value)
799 { 803 {
800 const CSSCustomPropertyDeclaration& declaration = toCSSCustomPropertyDeclara tion(value); 804 const CSSCustomPropertyDeclaration& declaration = toCSSCustomPropertyDeclara tion(value);
801 const AtomicString& name = declaration.name(); 805 const AtomicString& name = declaration.name();
802 const PropertyRegistry::Registration* registration = nullptr; 806 const PropertyRegistry::Registration* registration = nullptr;
803 const PropertyRegistry* registry = state.document().propertyRegistry(); 807 const PropertyRegistry* registry = state.document().propertyRegistry();
804 if (registry) 808 if (registry)
805 registration = registry->registration(name); 809 registration = registry->registration(name);
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
853 EBaselineShift baselineShift = parentSvgStyle.baselineShift(); 857 EBaselineShift baselineShift = parentSvgStyle.baselineShift();
854 SVGComputedStyle& svgStyle = state.style()->accessSVGStyle(); 858 SVGComputedStyle& svgStyle = state.style()->accessSVGStyle();
855 svgStyle.setBaselineShift(baselineShift); 859 svgStyle.setBaselineShift(baselineShift);
856 if (baselineShift == BS_LENGTH) 860 if (baselineShift == BS_LENGTH)
857 svgStyle.setBaselineShiftValue(parentSvgStyle.baselineShiftValue()); 861 svgStyle.setBaselineShiftValue(parentSvgStyle.baselineShiftValue());
858 } 862 }
859 863
860 void StyleBuilderFunctions::applyValueCSSPropertyBaselineShift(StyleResolverStat e& state, const CSSValue& value) 864 void StyleBuilderFunctions::applyValueCSSPropertyBaselineShift(StyleResolverStat e& state, const CSSValue& value)
861 { 865 {
862 SVGComputedStyle& svgStyle = state.style()->accessSVGStyle(); 866 SVGComputedStyle& svgStyle = state.style()->accessSVGStyle();
863 const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); 867 if (!value.isIdentifierValue()) {
864 if (!primitiveValue.isValueID()) {
865 svgStyle.setBaselineShift(BS_LENGTH); 868 svgStyle.setBaselineShift(BS_LENGTH);
866 svgStyle.setBaselineShiftValue(StyleBuilderConverter::convertLength(stat e, primitiveValue)); 869 svgStyle.setBaselineShiftValue(StyleBuilderConverter::convertLength(stat e, toCSSPrimitiveValue(value)));
867 return; 870 return;
868 } 871 }
869 switch (primitiveValue.getValueID()) { 872 switch (toCSSIdentifierValue(value).getValueID()) {
870 case CSSValueBaseline: 873 case CSSValueBaseline:
871 svgStyle.setBaselineShift(BS_LENGTH); 874 svgStyle.setBaselineShift(BS_LENGTH);
872 svgStyle.setBaselineShiftValue(Length(Fixed)); 875 svgStyle.setBaselineShiftValue(Length(Fixed));
873 return; 876 return;
874 case CSSValueSub: 877 case CSSValueSub:
875 svgStyle.setBaselineShift(BS_SUB); 878 svgStyle.setBaselineShift(BS_SUB);
876 return; 879 return;
877 case CSSValueSuper: 880 case CSSValueSuper:
878 svgStyle.setBaselineShift(BS_SUPER); 881 svgStyle.setBaselineShift(BS_SUPER);
879 return; 882 return;
880 default: 883 default:
881 NOTREACHED(); 884 NOTREACHED();
882 } 885 }
883 } 886 }
884 887
885 void StyleBuilderFunctions::applyInheritCSSPropertyPosition(StyleResolverState& state) 888 void StyleBuilderFunctions::applyInheritCSSPropertyPosition(StyleResolverState& state)
886 { 889 {
887 if (!state.parentNode()->isDocumentNode()) 890 if (!state.parentNode()->isDocumentNode())
888 state.style()->setPosition(state.parentStyle()->position()); 891 state.style()->setPosition(state.parentStyle()->position());
889 } 892 }
890 893
891 } // namespace blink 894 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698