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

Side by Side Diff: third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp

Issue 1512243005: Finish support for <image> type parsing using CSSParserTokens (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Patch for review Created 5 years 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 #include "core/css/parser/CSSPropertyParser.h" 6 #include "core/css/parser/CSSPropertyParser.h"
7 7
8 #include "core/StylePropertyShorthand.h" 8 #include "core/StylePropertyShorthand.h"
9 #include "core/css/CSSCalculationValue.h" 9 #include "core/css/CSSCalculationValue.h"
10 #include "core/css/CSSCrossfadeValue.h" 10 #include "core/css/CSSCrossfadeValue.h"
(...skipping 814 matching lines...) Expand 10 before | Expand all | Expand 10 after
825 825
826 static PassRefPtrWillBeRawPtr<CSSValue> consumePosition(CSSParserTokenRange& ran ge, CSSParserMode cssParserMode, UnitlessQuirk unitless) 826 static PassRefPtrWillBeRawPtr<CSSValue> consumePosition(CSSParserTokenRange& ran ge, CSSParserMode cssParserMode, UnitlessQuirk unitless)
827 { 827 {
828 RefPtrWillBeRawPtr<CSSValue> resultX = nullptr; 828 RefPtrWillBeRawPtr<CSSValue> resultX = nullptr;
829 RefPtrWillBeRawPtr<CSSValue> resultY = nullptr; 829 RefPtrWillBeRawPtr<CSSValue> resultY = nullptr;
830 if (consumePosition(range, cssParserMode, unitless, resultX, resultY)) 830 if (consumePosition(range, cssParserMode, unitless, resultX, resultY))
831 return CSSValuePair::create(resultX.release(), resultY.release(), CSSVal uePair::KeepIdenticalValues); 831 return CSSValuePair::create(resultX.release(), resultY.release(), CSSVal uePair::KeepIdenticalValues);
832 return nullptr; 832 return nullptr;
833 } 833 }
834 834
835 static bool consumeTransformOrigin(CSSParserTokenRange& range, CSSParserMode css ParserMode, UnitlessQuirk unitless, RefPtrWillBeRawPtr<CSSValue>& resultX, RefPt rWillBeRawPtr<CSSValue>& resultY) 835 static bool consumePosition2Values(CSSParserTokenRange& range, CSSParserMode css ParserMode, UnitlessQuirk unitless, RefPtrWillBeRawPtr<CSSValue>& resultX, RefPt rWillBeRawPtr<CSSValue>& resultY)
Timothy Loh 2015/12/14 06:59:54 consumeOneOrTwoValuedPosition maybe? :S
rwlbuis 2015/12/14 19:38:38 Done.
836 { 836 {
837 RefPtrWillBeRawPtr<CSSPrimitiveValue> value1 = consumePositionComponent(rang e, cssParserMode, unitless); 837 RefPtrWillBeRawPtr<CSSPrimitiveValue> value1 = consumePositionComponent(rang e, cssParserMode, unitless);
838 if (!value1) 838 if (!value1)
839 return false; 839 return false;
840 RefPtrWillBeRawPtr<CSSPrimitiveValue> value2 = consumePositionComponent(rang e, cssParserMode, unitless); 840 RefPtrWillBeRawPtr<CSSPrimitiveValue> value2 = consumePositionComponent(rang e, cssParserMode, unitless);
841 if (!value2) { 841 if (!value2) {
842 positionFromOneValue(value1.release(), resultX, resultY); 842 positionFromOneValue(value1.release(), resultX, resultY);
843 return true; 843 return true;
844 } 844 }
845 return positionFromTwoValues(value1.release(), value2.release(), resultX, re sultY); 845 return positionFromTwoValues(value1.release(), value2.release(), resultX, re sultY);
846 } 846 }
847 847
848 static PassRefPtrWillBeRawPtr<CSSValueList> consumeTransformOrigin(CSSParserToke nRange& range, CSSParserMode cssParserMode, UnitlessQuirk unitless) 848 static PassRefPtrWillBeRawPtr<CSSValueList> consumeTransformOrigin(CSSParserToke nRange& range, CSSParserMode cssParserMode, UnitlessQuirk unitless)
849 { 849 {
850 RefPtrWillBeRawPtr<CSSValue> resultX = nullptr; 850 RefPtrWillBeRawPtr<CSSValue> resultX = nullptr;
851 RefPtrWillBeRawPtr<CSSValue> resultY = nullptr; 851 RefPtrWillBeRawPtr<CSSValue> resultY = nullptr;
852 if (consumeTransformOrigin(range, cssParserMode, unitless, resultX, resultY) ) { 852 if (consumePosition2Values(range, cssParserMode, unitless, resultX, resultY) ) {
853 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparat ed(); 853 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparat ed();
854 list->append(resultX.release()); 854 list->append(resultX.release());
855 list->append(resultY.release()); 855 list->append(resultY.release());
856 RefPtrWillBeRawPtr<CSSValue> resultZ = consumeLength(range, cssParserMod e, ValueRangeAll); 856 RefPtrWillBeRawPtr<CSSValue> resultZ = consumeLength(range, cssParserMod e, ValueRangeAll);
857 if (!resultZ) 857 if (!resultZ)
858 resultZ = cssValuePool().createValue(0, CSSPrimitiveValue::UnitType: :Pixels); 858 resultZ = cssValuePool().createValue(0, CSSPrimitiveValue::UnitType: :Pixels);
859 list->append(resultZ.release()); 859 list->append(resultZ.release());
860 return list.release(); 860 return list.release();
861 } 861 }
862 return nullptr; 862 return nullptr;
(...skipping 1536 matching lines...) Expand 10 before | Expand all | Expand 10 after
2399 cursorType = consumeIdent(range); 2399 cursorType = consumeIdent(range);
2400 } 2400 }
2401 2401
2402 if (!list) 2402 if (!list)
2403 return cursorType.release(); 2403 return cursorType.release();
2404 if (cursorType) 2404 if (cursorType)
2405 list->append(cursorType.release()); 2405 list->append(cursorType.release());
2406 return list.release(); 2406 return list.release();
2407 } 2407 }
2408 2408
2409 // This should go away once we drop support for -webkit-gradient
2410 static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> consumeDeprecatedGradientPoint( CSSParserTokenRange& args, bool horizontal)
2411 {
2412 if (args.peek().type() == IdentToken) {
2413 if ((horizontal && consumeIdent<CSSValueLeft>(args)) || (!horizontal && consumeIdent<CSSValueTop>(args)))
2414 return cssValuePool().createValue(0., CSSPrimitiveValue::UnitType::P ercentage);
2415 if ((horizontal && consumeIdent<CSSValueRight>(args)) || (!horizontal && consumeIdent<CSSValueBottom>(args)))
2416 return cssValuePool().createValue(100., CSSPrimitiveValue::UnitType: :Percentage);
2417 if (consumeIdent<CSSValueCenter>(args))
2418 return cssValuePool().createValue(50., CSSPrimitiveValue::UnitType:: Percentage);
2419 return nullptr;
2420 }
2421 RefPtrWillBeRawPtr<CSSPrimitiveValue> result = consumePercent(args, ValueRan geAll);
2422 if (!result)
2423 result = consumeNumber(args, ValueRangeAll);
2424 return result;
2425 }
2426
2427 // Used to parse colors for -webkit-gradient(...).
2428 static PassRefPtrWillBeRawPtr<CSSValue> consumeDeprecatedGradientStopColor(CSSPa rserTokenRange& args, CSSParserMode cssParserMode)
2429 {
2430 // Disallow currentcolor.
Timothy Loh 2015/12/14 06:59:55 This comment doesn't add value
rwlbuis 2015/12/14 19:38:38 Yeah, I thought for a first review I'd keep them b
2431 if (args.peek().id() == CSSValueCurrentcolor)
2432 return nullptr;
2433 return consumeColor(args, cssParserMode);
2434 }
2435
2436 static bool consumeDeprecatedGradientColorStop(CSSParserTokenRange& range, CSSGr adientColorStop& stop, CSSParserMode cssParserMode)
2437 {
2438 CSSValueID id = range.peek().functionId();
2439 if (id != CSSValueFrom && id != CSSValueTo && id != CSSValueColorStop)
2440 return false;
2441
2442 CSSParserTokenRange args = consumeFunction(range);
2443 if (id == CSSValueFrom || id == CSSValueTo) {
2444 stop.m_position = cssValuePool().createValue((id == CSSValueFrom) ? 0 : 1, CSSPrimitiveValue::UnitType::Number);
2445 stop.m_color = consumeDeprecatedGradientStopColor(args, cssParserMode);
2446 } else if (id == CSSValueColorStop) {
Timothy Loh 2015/12/14 06:59:55 IMO clearer as } else { ASSERT(id == CSSValue
rwlbuis 2015/12/14 19:38:39 Done. I basically forgot about the if at the top o
2447 const CSSParserToken& stopArg = args.consumeIncludingWhitespace();
2448 if (stopArg.type() == PercentageToken)
2449 stop.m_position = cssValuePool().createValue(stopArg.numericValue() / 100, CSSPrimitiveValue::UnitType::Number);
2450 else if (stopArg.type() == NumberToken)
2451 stop.m_position = cssValuePool().createValue(stopArg.numericValue(), CSSPrimitiveValue::UnitType::Number);
2452 else
2453 return false;
2454
2455 if (!consumeCommaIncludingWhitespace(args))
2456 return false;
2457
2458 stop.m_color = consumeDeprecatedGradientStopColor(args, cssParserMode);
Timothy Loh 2015/12/14 06:59:55 Could put this outside the if/else. Also might be
rwlbuis 2015/12/14 19:38:38 Done.
2459 }
2460
2461 return stop.m_color && args.atEnd();
2462 }
2463
2464 static PassRefPtrWillBeRawPtr<CSSValue> consumeDeprecatedGradient(CSSParserToken Range& args, CSSParserMode cssParserMode)
2465 {
2466 RefPtrWillBeRawPtr<CSSGradientValue> result = nullptr;
2467 CSSValueID id = args.consumeIncludingWhitespace().id();
2468 bool isDeprecatedRadialGradient = (id == CSSValueRadial);
2469 if (isDeprecatedRadialGradient)
2470 result = CSSRadialGradientValue::create(NonRepeating, CSSDeprecatedRadia lGradient);
2471 else if (id == CSSValueLinear)
2472 result = CSSLinearGradientValue::create(NonRepeating, CSSDeprecatedLinea rGradient);
2473 if (!result || !consumeCommaIncludingWhitespace(args))
2474 return nullptr;
2475
2476 RefPtrWillBeRawPtr<CSSPrimitiveValue> point = consumeDeprecatedGradientPoint (args, true);
2477 if (!point)
2478 return nullptr;
2479 result->setFirstX(point.release());
2480 point = consumeDeprecatedGradientPoint(args, false);
2481 if (!point)
2482 return nullptr;
2483 result->setFirstY(point.release());
2484
2485 if (!consumeCommaIncludingWhitespace(args))
2486 return nullptr;
2487
2488 // For radial gradients only, we now expect a numeric radius.
2489 if (isDeprecatedRadialGradient) {
2490 RefPtrWillBeRawPtr<CSSPrimitiveValue> radius = consumeNumber(args, Value RangeAll);
2491 if (!radius || !consumeCommaIncludingWhitespace(args))
2492 return nullptr;
2493 toCSSRadialGradientValue(result.get())->setFirstRadius(radius.release()) ;
2494 }
2495
2496 point = consumeDeprecatedGradientPoint(args, true);
2497 if (!point)
2498 return nullptr;
2499 result->setSecondX(point.release());
2500 point = consumeDeprecatedGradientPoint(args, false);
2501 if (!point)
2502 return nullptr;
2503 result->setSecondY(point.release());
2504
2505 // For radial gradients only, we now expect the second radius.
2506 if (isDeprecatedRadialGradient) {
2507 if (!consumeCommaIncludingWhitespace(args))
2508 return nullptr;
2509 RefPtrWillBeRawPtr<CSSPrimitiveValue> radius = consumeNumber(args, Value RangeAll);
2510 if (!radius)
2511 return nullptr;
2512 toCSSRadialGradientValue(result.get())->setSecondRadius(radius.release() );
2513 }
2514
2515 CSSGradientColorStop stop;
2516 while (!args.atEnd()) {
Timothy Loh 2015/12/14 06:59:55 maybe clearer as while (consumeComma..(args)) ?
rwlbuis 2015/12/14 19:38:39 Oops, forgot, will have a look...
2517 // The function name needs to be one of "from", "to", or "color-stop."
Timothy Loh 2015/12/14 06:59:55 not sure this comment helps
rwlbuis 2015/12/14 19:38:39 Done.
2518 if (!consumeCommaIncludingWhitespace(args) || !consumeDeprecatedGradient ColorStop(args, stop, cssParserMode))
2519 return nullptr;
2520 result->addStop(stop);
2521 }
2522
2523 return result.release();
2524 }
2525
2409 static bool consumeGradientColorStops(CSSParserTokenRange& range, CSSParserMode cssParserMode, CSSGradientValue* gradient) 2526 static bool consumeGradientColorStops(CSSParserTokenRange& range, CSSParserMode cssParserMode, CSSGradientValue* gradient)
2410 { 2527 {
2411 bool supportsColorHints = gradient->gradientType() == CSSLinearGradient || g radient->gradientType() == CSSRadialGradient; 2528 bool supportsColorHints = gradient->gradientType() == CSSLinearGradient || g radient->gradientType() == CSSRadialGradient;
2412 2529
2413 // The first color stop cannot be a color hint. 2530 // The first color stop cannot be a color hint.
2414 bool previousStopWasColorHint = true; 2531 bool previousStopWasColorHint = true;
2415 do { 2532 do {
2416 CSSGradientColorStop stop; 2533 CSSGradientColorStop stop;
2417 stop.m_color = consumeColor(range, cssParserMode); 2534 stop.m_color = consumeColor(range, cssParserMode);
2418 // Two hints in a row are not allowed. 2535 // Two hints in a row are not allowed.
2419 if (!stop.m_color && (!supportsColorHints || previousStopWasColorHint)) 2536 if (!stop.m_color && (!supportsColorHints || previousStopWasColorHint))
2420 return false; 2537 return false;
2421 previousStopWasColorHint = !stop.m_color; 2538 previousStopWasColorHint = !stop.m_color;
2422 stop.m_position = consumeLengthOrPercent(range, cssParserMode, ValueRang eAll); 2539 stop.m_position = consumeLengthOrPercent(range, cssParserMode, ValueRang eAll);
2423 if (!stop.m_color && !stop.m_position) 2540 if (!stop.m_color && !stop.m_position)
2424 return false; 2541 return false;
2425 gradient->addStop(stop); 2542 gradient->addStop(stop);
2426 } while (consumeCommaIncludingWhitespace(range)); 2543 } while (consumeCommaIncludingWhitespace(range));
2427 2544
2428 // The last color stop cannot be a color hint. 2545 // The last color stop cannot be a color hint.
2429 if (previousStopWasColorHint) 2546 if (previousStopWasColorHint)
2430 return false; 2547 return false;
2431 2548
2432 // Must have 2 or more stops to be valid. 2549 // Must have 2 or more stops to be valid.
2433 return gradient->stopCount() >= 2; 2550 return gradient->stopCount() >= 2;
2434 } 2551 }
2435 2552
2553 static PassRefPtrWillBeRawPtr<CSSValue> consumeDeprecatedRadialGradient(CSSParse rTokenRange& args, CSSParserMode cssParserMode, CSSGradientRepeat repeating)
2554 {
2555 RefPtrWillBeRawPtr<CSSRadialGradientValue> result = CSSRadialGradientValue:: create(repeating, CSSPrefixedRadialGradient);
2556 // Optional background-position
Timothy Loh 2015/12/14 06:59:55 comment is weird, this isn't background-position,
rwlbuis 2015/12/14 19:38:38 Done.
2557 RefPtrWillBeRawPtr<CSSValue> centerX = nullptr;
2558 RefPtrWillBeRawPtr<CSSValue> centerY = nullptr;
2559 consumePosition2Values(args, cssParserMode, UnitlessQuirk::Forbid, centerX, centerY);
Timothy Loh 2015/12/14 06:59:54 OK This function (and the equivalent in the legac
rwlbuis 2015/12/14 19:38:39 Main thing is that everything remains green and we
2560 if ((centerX || centerY) && !consumeCommaIncludingWhitespace(args))
2561 return nullptr;
2562
2563 result->setFirstX(toCSSPrimitiveValue(centerX.get()));
2564 result->setSecondX(toCSSPrimitiveValue(centerX.get()));
2565 // CSS3 radial gradients always share the same start and end point.
Timothy Loh 2015/12/14 06:59:55 drop the comment, -webkit-* probably doesn't count
rwlbuis 2015/12/14 19:38:39 Done.
2566 result->setFirstY(toCSSPrimitiveValue(centerY.get()));
2567 result->setSecondY(toCSSPrimitiveValue(centerY.get()));
2568
2569 RefPtrWillBeRawPtr<CSSPrimitiveValue> shape = consumeIdent<CSSValueCircle, C SSValueEllipse>(args);
2570 RefPtrWillBeRawPtr<CSSPrimitiveValue> sizeKeyword = consumeIdent<CSSValueClo sestSide, CSSValueClosestCorner, CSSValueFarthestSide, CSSValueFarthestCorner, C SSValueContain, CSSValueCover>(args);
2571 if (!shape)
2572 shape = consumeIdent<CSSValueCircle, CSSValueEllipse>(args);
2573 result->setShape(shape);
2574 result->setSizingBehavior(sizeKeyword);
2575
2576 // Or, two lengths or percentages
2577 RefPtrWillBeRawPtr<CSSPrimitiveValue> horizontalSize = nullptr;
Timothy Loh 2015/12/14 06:59:54 I'd move these into the first if branch and the th
rwlbuis 2015/12/14 19:38:38 Done.
2578 RefPtrWillBeRawPtr<CSSPrimitiveValue> verticalSize = nullptr;
2579 if (!shape && !sizeKeyword) {
2580 if ((horizontalSize = consumeLengthOrPercent(args, cssParserMode, ValueR angeAll))) {
2581 verticalSize = consumeLengthOrPercent(args, cssParserMode, ValueRang eAll);
2582 if (!verticalSize)
2583 return nullptr;
2584 consumeCommaIncludingWhitespace(args);
2585 }
2586 } else {
2587 consumeCommaIncludingWhitespace(args);
2588 }
2589 if (!consumeGradientColorStops(args, cssParserMode, result.get()))
2590 return nullptr;
2591
2592 result->setEndHorizontalSize(horizontalSize);
2593 result->setEndVerticalSize(verticalSize);
2594 return result.release();
2595 }
2596
2436 static PassRefPtrWillBeRawPtr<CSSValue> consumeRadialGradient(CSSParserTokenRang e& args, CSSParserMode cssParserMode, CSSGradientRepeat repeating) 2597 static PassRefPtrWillBeRawPtr<CSSValue> consumeRadialGradient(CSSParserTokenRang e& args, CSSParserMode cssParserMode, CSSGradientRepeat repeating)
2437 { 2598 {
2438 RefPtrWillBeRawPtr<CSSRadialGradientValue> result = CSSRadialGradientValue:: create(repeating, CSSRadialGradient); 2599 RefPtrWillBeRawPtr<CSSRadialGradientValue> result = CSSRadialGradientValue:: create(repeating, CSSRadialGradient);
2439 2600
2440 RefPtrWillBeRawPtr<CSSPrimitiveValue> shape = nullptr; 2601 RefPtrWillBeRawPtr<CSSPrimitiveValue> shape = nullptr;
2441 RefPtrWillBeRawPtr<CSSPrimitiveValue> sizeKeyword = nullptr; 2602 RefPtrWillBeRawPtr<CSSPrimitiveValue> sizeKeyword = nullptr;
2442 RefPtrWillBeRawPtr<CSSPrimitiveValue> horizontalSize = nullptr; 2603 RefPtrWillBeRawPtr<CSSPrimitiveValue> horizontalSize = nullptr;
2443 RefPtrWillBeRawPtr<CSSPrimitiveValue> verticalSize = nullptr; 2604 RefPtrWillBeRawPtr<CSSPrimitiveValue> verticalSize = nullptr;
2444 2605
2445 // First part of grammar, the size/shape clause: 2606 // First part of grammar, the size/shape clause:
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
2583 if (context.useCounter()) 2744 if (context.useCounter())
2584 context.useCounter()->count(UseCounter::DeprecatedWebKitLinearGradie nt); 2745 context.useCounter()->count(UseCounter::DeprecatedWebKitLinearGradie nt);
2585 result = consumeLinearGradient(args, context.mode(), NonRepeating, CSSPr efixedLinearGradient); 2746 result = consumeLinearGradient(args, context.mode(), NonRepeating, CSSPr efixedLinearGradient);
2586 } else if (id == CSSValueWebkitRepeatingLinearGradient) { 2747 } else if (id == CSSValueWebkitRepeatingLinearGradient) {
2587 // FIXME: This should send a deprecation message. 2748 // FIXME: This should send a deprecation message.
2588 if (context.useCounter()) 2749 if (context.useCounter())
2589 context.useCounter()->count(UseCounter::DeprecatedWebKitRepeatingLin earGradient); 2750 context.useCounter()->count(UseCounter::DeprecatedWebKitRepeatingLin earGradient);
2590 result = consumeLinearGradient(args, context.mode(), Repeating, CSSPrefi xedLinearGradient); 2751 result = consumeLinearGradient(args, context.mode(), Repeating, CSSPrefi xedLinearGradient);
2591 } else if (id == CSSValueLinearGradient) { 2752 } else if (id == CSSValueLinearGradient) {
2592 result = consumeLinearGradient(args, context.mode(), NonRepeating, CSSLi nearGradient); 2753 result = consumeLinearGradient(args, context.mode(), NonRepeating, CSSLi nearGradient);
2754 } else if (id == CSSValueWebkitGradient) {
2755 // FIXME: This should send a deprecation message.
2756 if (context.useCounter())
2757 context.useCounter()->count(UseCounter::DeprecatedWebKitGradient);
2758 result = consumeDeprecatedGradient(args, context.mode());
2759 } else if (id == CSSValueWebkitRadialGradient) {
2760 // FIXME: This should send a deprecation message.
2761 if (context.useCounter())
2762 context.useCounter()->count(UseCounter::DeprecatedWebKitRadialGradie nt);
2763 result = consumeDeprecatedRadialGradient(args, context.mode(), NonRepeat ing);
2764 } else if (id == CSSValueWebkitRepeatingRadialGradient) {
2765 if (context.useCounter())
2766 context.useCounter()->count(UseCounter::DeprecatedWebKitRepeatingRad ialGradient);
2767 result = consumeDeprecatedRadialGradient(args, context.mode(), Repeating );
2593 } else if (id == CSSValueWebkitCrossFade) { 2768 } else if (id == CSSValueWebkitCrossFade) {
2594 result = consumeCrossFade(args, context); 2769 result = consumeCrossFade(args, context);
2595 } 2770 }
2596 if (!result || !args.atEnd()) 2771 if (!result || !args.atEnd())
2597 return nullptr; 2772 return nullptr;
2598 range = rangeCopy; 2773 range = rangeCopy;
2599 return result; 2774 return result;
2600 } 2775 }
2601 2776
2602 static PassRefPtrWillBeRawPtr<CSSValue> consumeImage(CSSParserTokenRange& range, CSSParserContext context) 2777 static PassRefPtrWillBeRawPtr<CSSValue> consumeImage(CSSParserTokenRange& range, CSSParserContext context)
(...skipping 843 matching lines...) Expand 10 before | Expand all | Expand 10 after
3446 return consumeShorthandGreedily(flexFlowShorthand(), important); 3621 return consumeShorthandGreedily(flexFlowShorthand(), important);
3447 case CSSPropertyWebkitColumnRule: 3622 case CSSPropertyWebkitColumnRule:
3448 return consumeShorthandGreedily(webkitColumnRuleShorthand(), important); 3623 return consumeShorthandGreedily(webkitColumnRuleShorthand(), important);
3449 default: 3624 default:
3450 m_currentShorthand = oldShorthand; 3625 m_currentShorthand = oldShorthand;
3451 return false; 3626 return false;
3452 } 3627 }
3453 } 3628 }
3454 3629
3455 } // namespace blink 3630 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698