OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |