| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2004 Zack Rusin <zack@kde.org> | 2 * Copyright (C) 2004 Zack Rusin <zack@kde.org> |
| 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc.
All rights reserved. | 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc.
All rights reserved. |
| 4 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> | 4 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> |
| 5 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com> | 5 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com> |
| 6 * Copyright (C) 2011 Sencha, Inc. All rights reserved. | 6 * Copyright (C) 2011 Sencha, Inc. All rights reserved. |
| 7 * | 7 * |
| 8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
| 9 * modify it under the terms of the GNU Lesser General Public | 9 * modify it under the terms of the GNU Lesser General Public |
| 10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
| (...skipping 10 matching lines...) Expand all Loading... |
| 21 * 02110-1301 USA | 21 * 02110-1301 USA |
| 22 */ | 22 */ |
| 23 | 23 |
| 24 #include "sky/engine/core/css/CSSComputedStyleDeclaration.h" | 24 #include "sky/engine/core/css/CSSComputedStyleDeclaration.h" |
| 25 | 25 |
| 26 #include "gen/sky/core/CSSPropertyNames.h" | 26 #include "gen/sky/core/CSSPropertyNames.h" |
| 27 #include "gen/sky/core/StylePropertyShorthand.h" | 27 #include "gen/sky/core/StylePropertyShorthand.h" |
| 28 #include "gen/sky/platform/FontFamilyNames.h" | 28 #include "gen/sky/platform/FontFamilyNames.h" |
| 29 #include "gen/sky/platform/RuntimeEnabledFeatures.h" | 29 #include "gen/sky/platform/RuntimeEnabledFeatures.h" |
| 30 #include "sky/engine/bindings/exception_state.h" | 30 #include "sky/engine/bindings/exception_state.h" |
| 31 #include "sky/engine/core/animation/DocumentAnimations.h" | |
| 32 #include "sky/engine/core/css/BasicShapeFunctions.h" | 31 #include "sky/engine/core/css/BasicShapeFunctions.h" |
| 33 #include "sky/engine/core/css/CSSAspectRatioValue.h" | 32 #include "sky/engine/core/css/CSSAspectRatioValue.h" |
| 34 #include "sky/engine/core/css/CSSBorderImage.h" | 33 #include "sky/engine/core/css/CSSBorderImage.h" |
| 35 #include "sky/engine/core/css/CSSFilterValue.h" | 34 #include "sky/engine/core/css/CSSFilterValue.h" |
| 36 #include "sky/engine/core/css/CSSFontFeatureValue.h" | 35 #include "sky/engine/core/css/CSSFontFeatureValue.h" |
| 37 #include "sky/engine/core/css/CSSFontValue.h" | 36 #include "sky/engine/core/css/CSSFontValue.h" |
| 38 #include "sky/engine/core/css/CSSFunctionValue.h" | 37 #include "sky/engine/core/css/CSSFunctionValue.h" |
| 39 #include "sky/engine/core/css/CSSLineBoxContainValue.h" | 38 #include "sky/engine/core/css/CSSLineBoxContainValue.h" |
| 40 #include "sky/engine/core/css/CSSPrimitiveValue.h" | 39 #include "sky/engine/core/css/CSSPrimitiveValue.h" |
| 41 #include "sky/engine/core/css/CSSPrimitiveValueMappings.h" | 40 #include "sky/engine/core/css/CSSPrimitiveValueMappings.h" |
| 42 #include "sky/engine/core/css/CSSPropertyMetadata.h" | 41 #include "sky/engine/core/css/CSSPropertyMetadata.h" |
| 43 #include "sky/engine/core/css/CSSSelector.h" | 42 #include "sky/engine/core/css/CSSSelector.h" |
| 44 #include "sky/engine/core/css/CSSShadowValue.h" | 43 #include "sky/engine/core/css/CSSShadowValue.h" |
| 45 #include "sky/engine/core/css/CSSTimingFunctionValue.h" | |
| 46 #include "sky/engine/core/css/CSSTransformValue.h" | 44 #include "sky/engine/core/css/CSSTransformValue.h" |
| 47 #include "sky/engine/core/css/CSSValueList.h" | 45 #include "sky/engine/core/css/CSSValueList.h" |
| 48 #include "sky/engine/core/css/CSSValuePool.h" | 46 #include "sky/engine/core/css/CSSValuePool.h" |
| 49 #include "sky/engine/core/css/Pair.h" | 47 #include "sky/engine/core/css/Pair.h" |
| 50 #include "sky/engine/core/css/Rect.h" | 48 #include "sky/engine/core/css/Rect.h" |
| 51 #include "sky/engine/core/css/StylePropertySet.h" | 49 #include "sky/engine/core/css/StylePropertySet.h" |
| 52 #include "sky/engine/core/css/parser/BisonCSSParser.h" | 50 #include "sky/engine/core/css/parser/BisonCSSParser.h" |
| 53 #include "sky/engine/core/css/resolver/StyleResolver.h" | 51 #include "sky/engine/core/css/resolver/StyleResolver.h" |
| 54 #include "sky/engine/core/dom/Document.h" | 52 #include "sky/engine/core/dom/Document.h" |
| 55 #include "sky/engine/core/dom/ExceptionCode.h" | 53 #include "sky/engine/core/dom/ExceptionCode.h" |
| 56 #include "sky/engine/core/rendering/RenderBox.h" | 54 #include "sky/engine/core/rendering/RenderBox.h" |
| 57 #include "sky/engine/core/rendering/style/RenderStyle.h" | 55 #include "sky/engine/core/rendering/style/RenderStyle.h" |
| 58 #include "sky/engine/core/rendering/style/ShadowList.h" | 56 #include "sky/engine/core/rendering/style/ShadowList.h" |
| 59 #include "sky/engine/core/rendering/style/ShapeValue.h" | 57 #include "sky/engine/core/rendering/style/ShapeValue.h" |
| 60 #include "sky/engine/platform/fonts/FontFeatureSettings.h" | 58 #include "sky/engine/platform/fonts/FontFeatureSettings.h" |
| 61 #include "sky/engine/wtf/text/StringBuilder.h" | 59 #include "sky/engine/wtf/text/StringBuilder.h" |
| 62 | 60 |
| 63 namespace blink { | 61 namespace blink { |
| 64 | 62 |
| 65 // List of all properties we know how to compute, omitting shorthands. | 63 // List of all properties we know how to compute, omitting shorthands. |
| 66 // NOTE: Do not use this list, use computableProperties() instead | 64 // NOTE: Do not use this list, use computableProperties() instead |
| 67 // to respect runtime enabling of CSS properties. | 65 // to respect runtime enabling of CSS properties. |
| 68 static const CSSPropertyID staticComputableProperties[] = { | 66 static const CSSPropertyID staticComputableProperties[] = { |
| 69 CSSPropertyAnimationDelay, | |
| 70 CSSPropertyAnimationDirection, | |
| 71 CSSPropertyAnimationDuration, | |
| 72 CSSPropertyAnimationFillMode, | |
| 73 CSSPropertyAnimationIterationCount, | |
| 74 CSSPropertyAnimationName, | |
| 75 CSSPropertyAnimationPlayState, | |
| 76 CSSPropertyAnimationTimingFunction, | |
| 77 CSSPropertyBackgroundAttachment, | 67 CSSPropertyBackgroundAttachment, |
| 78 CSSPropertyBackgroundClip, | 68 CSSPropertyBackgroundClip, |
| 79 CSSPropertyBackgroundColor, | 69 CSSPropertyBackgroundColor, |
| 80 CSSPropertyBackgroundImage, | 70 CSSPropertyBackgroundImage, |
| 81 CSSPropertyBackgroundOrigin, | 71 CSSPropertyBackgroundOrigin, |
| 82 CSSPropertyBackgroundPosition, // more-specific background-position-x/y are
non-standard | 72 CSSPropertyBackgroundPosition, // more-specific background-position-x/y are
non-standard |
| 83 CSSPropertyBackgroundRepeat, | 73 CSSPropertyBackgroundRepeat, |
| 84 CSSPropertyBackgroundSize, | 74 CSSPropertyBackgroundSize, |
| 85 CSSPropertyBorderBottomColor, | 75 CSSPropertyBorderBottomColor, |
| 86 CSSPropertyBorderBottomLeftRadius, | 76 CSSPropertyBorderBottomLeftRadius, |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 157 CSSPropertyTextDecorationColor, | 147 CSSPropertyTextDecorationColor, |
| 158 CSSPropertyTextJustify, | 148 CSSPropertyTextJustify, |
| 159 CSSPropertyTextUnderlinePosition, | 149 CSSPropertyTextUnderlinePosition, |
| 160 CSSPropertyTextIndent, | 150 CSSPropertyTextIndent, |
| 161 CSSPropertyTextRendering, | 151 CSSPropertyTextRendering, |
| 162 CSSPropertyTextShadow, | 152 CSSPropertyTextShadow, |
| 163 CSSPropertyTextOverflow, | 153 CSSPropertyTextOverflow, |
| 164 CSSPropertyTop, | 154 CSSPropertyTop, |
| 165 CSSPropertyTouchAction, | 155 CSSPropertyTouchAction, |
| 166 CSSPropertyTouchActionDelay, | 156 CSSPropertyTouchActionDelay, |
| 167 CSSPropertyTransitionDelay, | |
| 168 CSSPropertyTransitionDuration, | |
| 169 CSSPropertyTransitionProperty, | |
| 170 CSSPropertyTransitionTimingFunction, | |
| 171 CSSPropertyUnicodeBidi, | 157 CSSPropertyUnicodeBidi, |
| 172 CSSPropertyVerticalAlign, | 158 CSSPropertyVerticalAlign, |
| 173 CSSPropertyWhiteSpace, | 159 CSSPropertyWhiteSpace, |
| 174 CSSPropertyWidth, | 160 CSSPropertyWidth, |
| 175 CSSPropertyWillChange, | |
| 176 CSSPropertyWordBreak, | 161 CSSPropertyWordBreak, |
| 177 CSSPropertyWordSpacing, | 162 CSSPropertyWordSpacing, |
| 178 CSSPropertyWordWrap, | 163 CSSPropertyWordWrap, |
| 179 CSSPropertyZIndex, | 164 CSSPropertyZIndex, |
| 180 | 165 |
| 181 CSSPropertyWebkitBackgroundClip, | 166 CSSPropertyWebkitBackgroundClip, |
| 182 CSSPropertyWebkitBackgroundComposite, | 167 CSSPropertyWebkitBackgroundComposite, |
| 183 CSSPropertyWebkitBackgroundOrigin, | 168 CSSPropertyWebkitBackgroundOrigin, |
| 184 CSSPropertyWebkitBackgroundSize, | 169 CSSPropertyWebkitBackgroundSize, |
| 185 CSSPropertyWebkitBorderHorizontalSpacing, | 170 CSSPropertyWebkitBorderHorizontalSpacing, |
| (...skipping 475 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 661 default: | 646 default: |
| 662 filterValue = CSSFilterValue::create(CSSFilterValue::UnknownFilterOp
eration); | 647 filterValue = CSSFilterValue::create(CSSFilterValue::UnknownFilterOp
eration); |
| 663 break; | 648 break; |
| 664 } | 649 } |
| 665 list->append(filterValue.release()); | 650 list->append(filterValue.release()); |
| 666 } | 651 } |
| 667 | 652 |
| 668 return list.release(); | 653 return list.release(); |
| 669 } | 654 } |
| 670 | 655 |
| 671 static PassRefPtr<CSSValue> createTransitionPropertyValue(const CSSTransitionDat
a::TransitionProperty& property) | |
| 672 { | |
| 673 if (property.propertyType == CSSTransitionData::TransitionNone) | |
| 674 return cssValuePool().createIdentifierValue(CSSValueNone); | |
| 675 if (property.propertyType == CSSTransitionData::TransitionAll) | |
| 676 return cssValuePool().createIdentifierValue(CSSValueAll); | |
| 677 if (property.propertyType == CSSTransitionData::TransitionUnknown) | |
| 678 return cssValuePool().createValue(property.propertyString, CSSPrimitiveV
alue::CSS_STRING); | |
| 679 ASSERT(property.propertyType == CSSTransitionData::TransitionSingleProperty)
; | |
| 680 return cssValuePool().createValue(getPropertyNameString(property.propertyId)
, CSSPrimitiveValue::CSS_STRING); | |
| 681 } | |
| 682 | |
| 683 static PassRefPtr<CSSValue> valueForTransitionProperty(const CSSTransitionData*
transitionData) | |
| 684 { | |
| 685 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); | |
| 686 if (transitionData) { | |
| 687 for (size_t i = 0; i < transitionData->propertyList().size(); ++i) | |
| 688 list->append(createTransitionPropertyValue(transitionData->propertyL
ist()[i])); | |
| 689 } else { | |
| 690 list->append(cssValuePool().createIdentifierValue(CSSValueAll)); | |
| 691 } | |
| 692 return list.release(); | |
| 693 } | |
| 694 | |
| 695 static PassRefPtr<CSSValue> valueForAnimationDelay(const CSSTimingData* timingDa
ta) | |
| 696 { | |
| 697 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); | |
| 698 if (timingData) { | |
| 699 for (size_t i = 0; i < timingData->delayList().size(); ++i) | |
| 700 list->append(cssValuePool().createValue(timingData->delayList()[i],
CSSPrimitiveValue::CSS_S)); | |
| 701 } else { | |
| 702 list->append(cssValuePool().createValue(CSSTimingData::initialDelay(), C
SSPrimitiveValue::CSS_S)); | |
| 703 } | |
| 704 return list.release(); | |
| 705 } | |
| 706 | |
| 707 static PassRefPtr<CSSValue> valueForAnimationDuration(const CSSTimingData* timin
gData) | |
| 708 { | |
| 709 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); | |
| 710 if (timingData) { | |
| 711 for (size_t i = 0; i < timingData->durationList().size(); ++i) | |
| 712 list->append(cssValuePool().createValue(timingData->durationList()[i
], CSSPrimitiveValue::CSS_S)); | |
| 713 } else { | |
| 714 list->append(cssValuePool().createValue(CSSTimingData::initialDuration()
, CSSPrimitiveValue::CSS_S)); | |
| 715 } | |
| 716 return list.release(); | |
| 717 } | |
| 718 | |
| 719 static PassRefPtr<CSSValue> valueForAnimationIterationCount(double iterationCoun
t) | |
| 720 { | |
| 721 if (iterationCount == std::numeric_limits<double>::infinity()) | |
| 722 return cssValuePool().createIdentifierValue(CSSValueInfinite); | |
| 723 return cssValuePool().createValue(iterationCount, CSSPrimitiveValue::CSS_NUM
BER); | |
| 724 } | |
| 725 | |
| 726 static PassRefPtr<CSSValue> valueForAnimationPlayState(EAnimPlayState playState) | |
| 727 { | |
| 728 if (playState == AnimPlayStatePlaying) | |
| 729 return cssValuePool().createIdentifierValue(CSSValueRunning); | |
| 730 ASSERT(playState == AnimPlayStatePaused); | |
| 731 return cssValuePool().createIdentifierValue(CSSValuePaused); | |
| 732 } | |
| 733 | |
| 734 static PassRefPtr<CSSValue> createTimingFunctionValue(const TimingFunction* timi
ngFunction) | |
| 735 { | |
| 736 switch (timingFunction->type()) { | |
| 737 case TimingFunction::CubicBezierFunction: | |
| 738 { | |
| 739 const CubicBezierTimingFunction* bezierTimingFunction = toCubicBezie
rTimingFunction(timingFunction); | |
| 740 if (bezierTimingFunction->subType() != CubicBezierTimingFunction::Cu
stom) { | |
| 741 CSSValueID valueId = CSSValueInvalid; | |
| 742 switch (bezierTimingFunction->subType()) { | |
| 743 case CubicBezierTimingFunction::Ease: | |
| 744 valueId = CSSValueEase; | |
| 745 break; | |
| 746 case CubicBezierTimingFunction::EaseIn: | |
| 747 valueId = CSSValueEaseIn; | |
| 748 break; | |
| 749 case CubicBezierTimingFunction::EaseOut: | |
| 750 valueId = CSSValueEaseOut; | |
| 751 break; | |
| 752 case CubicBezierTimingFunction::EaseInOut: | |
| 753 valueId = CSSValueEaseInOut; | |
| 754 break; | |
| 755 default: | |
| 756 ASSERT_NOT_REACHED(); | |
| 757 return nullptr; | |
| 758 } | |
| 759 return cssValuePool().createIdentifierValue(valueId); | |
| 760 } | |
| 761 return CSSCubicBezierTimingFunctionValue::create(bezierTimingFunctio
n->x1(), bezierTimingFunction->y1(), bezierTimingFunction->x2(), bezierTimingFun
ction->y2()); | |
| 762 } | |
| 763 | |
| 764 case TimingFunction::StepsFunction: | |
| 765 { | |
| 766 const StepsTimingFunction* stepsTimingFunction = toStepsTimingFuncti
on(timingFunction); | |
| 767 if (stepsTimingFunction->subType() == StepsTimingFunction::Custom) | |
| 768 return CSSStepsTimingFunctionValue::create(stepsTimingFunction->
numberOfSteps(), stepsTimingFunction->stepAtPosition()); | |
| 769 | |
| 770 CSSValueID valueId; | |
| 771 switch (stepsTimingFunction->subType()) { | |
| 772 case StepsTimingFunction::Start: | |
| 773 valueId = CSSValueStepStart; | |
| 774 break; | |
| 775 case StepsTimingFunction::End: | |
| 776 valueId = CSSValueStepEnd; | |
| 777 break; | |
| 778 default: | |
| 779 ASSERT_NOT_REACHED(); | |
| 780 return nullptr; | |
| 781 } | |
| 782 return cssValuePool().createIdentifierValue(valueId); | |
| 783 } | |
| 784 | |
| 785 default: | |
| 786 return cssValuePool().createIdentifierValue(CSSValueLinear); | |
| 787 } | |
| 788 } | |
| 789 | |
| 790 static PassRefPtr<CSSValue> valueForAnimationTimingFunction(const CSSTimingData*
timingData) | |
| 791 { | |
| 792 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); | |
| 793 if (timingData) { | |
| 794 for (size_t i = 0; i < timingData->timingFunctionList().size(); ++i) | |
| 795 list->append(createTimingFunctionValue(timingData->timingFunctionLis
t()[i].get())); | |
| 796 } else { | |
| 797 list->append(createTimingFunctionValue(CSSTimingData::initialTimingFunct
ion().get())); | |
| 798 } | |
| 799 return list.release(); | |
| 800 } | |
| 801 | |
| 802 static PassRefPtr<CSSValue> valueForAnimationFillMode(Timing::FillMode fillMode) | |
| 803 { | |
| 804 switch (fillMode) { | |
| 805 case Timing::FillModeNone: | |
| 806 return cssValuePool().createIdentifierValue(CSSValueNone); | |
| 807 case Timing::FillModeForwards: | |
| 808 return cssValuePool().createIdentifierValue(CSSValueForwards); | |
| 809 case Timing::FillModeBackwards: | |
| 810 return cssValuePool().createIdentifierValue(CSSValueBackwards); | |
| 811 case Timing::FillModeBoth: | |
| 812 return cssValuePool().createIdentifierValue(CSSValueBoth); | |
| 813 default: | |
| 814 ASSERT_NOT_REACHED(); | |
| 815 return nullptr; | |
| 816 } | |
| 817 } | |
| 818 | |
| 819 static PassRefPtr<CSSValue> valueForAnimationDirection(Timing::PlaybackDirection
direction) | |
| 820 { | |
| 821 switch (direction) { | |
| 822 case Timing::PlaybackDirectionNormal: | |
| 823 return cssValuePool().createIdentifierValue(CSSValueNormal); | |
| 824 case Timing::PlaybackDirectionAlternate: | |
| 825 return cssValuePool().createIdentifierValue(CSSValueAlternate); | |
| 826 case Timing::PlaybackDirectionReverse: | |
| 827 return cssValuePool().createIdentifierValue(CSSValueReverse); | |
| 828 case Timing::PlaybackDirectionAlternateReverse: | |
| 829 return cssValuePool().createIdentifierValue(CSSValueAlternateReverse); | |
| 830 default: | |
| 831 ASSERT_NOT_REACHED(); | |
| 832 return nullptr; | |
| 833 } | |
| 834 } | |
| 835 | |
| 836 static PassRefPtr<CSSValue> valueForWillChange(const Vector<CSSPropertyID>& will
ChangeProperties, bool willChangeContents) | |
| 837 { | |
| 838 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); | |
| 839 if (willChangeContents) | |
| 840 list->append(cssValuePool().createIdentifierValue(CSSValueContents)); | |
| 841 for (size_t i = 0; i < willChangeProperties.size(); ++i) | |
| 842 list->append(cssValuePool().createIdentifierValue(willChangeProperties[i
])); | |
| 843 if (!list->length()) | |
| 844 list->append(cssValuePool().createIdentifierValue(CSSValueAuto)); | |
| 845 return list.release(); | |
| 846 } | |
| 847 | |
| 848 static PassRefPtr<CSSValue> createLineBoxContainValue(unsigned lineBoxContain) | 656 static PassRefPtr<CSSValue> createLineBoxContainValue(unsigned lineBoxContain) |
| 849 { | 657 { |
| 850 if (!lineBoxContain) | 658 if (!lineBoxContain) |
| 851 return cssValuePool().createIdentifierValue(CSSValueNone); | 659 return cssValuePool().createIdentifierValue(CSSValueNone); |
| 852 return CSSLineBoxContainValue::create(lineBoxContain); | 660 return CSSLineBoxContainValue::create(lineBoxContain); |
| 853 } | 661 } |
| 854 | 662 |
| 855 CSSComputedStyleDeclaration::CSSComputedStyleDeclaration(PassRefPtr<Node> n, boo
l allowVisitedStyle) | 663 CSSComputedStyleDeclaration::CSSComputedStyleDeclaration(PassRefPtr<Node> n, boo
l allowVisitedStyle) |
| 856 : m_node(n) | 664 : m_node(n) |
| 857 , m_allowVisitedStyle(allowVisitedStyle) | 665 , m_allowVisitedStyle(allowVisitedStyle) |
| (...skipping 823 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1681 return cssValuePool().createValue(style->whiteSpace()); | 1489 return cssValuePool().createValue(style->whiteSpace()); |
| 1682 case CSSPropertyWidth: | 1490 case CSSPropertyWidth: |
| 1683 if (renderer) { | 1491 if (renderer) { |
| 1684 // According to http://www.w3.org/TR/CSS2/visudet.html#the-width
-property, | 1492 // According to http://www.w3.org/TR/CSS2/visudet.html#the-width
-property, |
| 1685 // the "width" property does not apply for non-replaced inline e
lements. | 1493 // the "width" property does not apply for non-replaced inline e
lements. |
| 1686 if (!renderer->isReplaced() && renderer->isInline()) | 1494 if (!renderer->isReplaced() && renderer->isInline()) |
| 1687 return cssValuePool().createIdentifierValue(CSSValueAuto); | 1495 return cssValuePool().createIdentifierValue(CSSValueAuto); |
| 1688 return pixelValue(sizingBox(renderer).width(), *style); | 1496 return pixelValue(sizingBox(renderer).width(), *style); |
| 1689 } | 1497 } |
| 1690 return pixelValueForLength(style->width(), *style); | 1498 return pixelValueForLength(style->width(), *style); |
| 1691 case CSSPropertyWillChange: | |
| 1692 return valueForWillChange(style->willChangeProperties(), style->will
ChangeContents()); | |
| 1693 case CSSPropertyWordBreak: | 1499 case CSSPropertyWordBreak: |
| 1694 return cssValuePool().createValue(style->wordBreak()); | 1500 return cssValuePool().createValue(style->wordBreak()); |
| 1695 case CSSPropertyWordSpacing: | 1501 case CSSPropertyWordSpacing: |
| 1696 return pixelValue(style->wordSpacing(), *style); | 1502 return pixelValue(style->wordSpacing(), *style); |
| 1697 case CSSPropertyWordWrap: | 1503 case CSSPropertyWordWrap: |
| 1698 return cssValuePool().createValue(style->overflowWrap()); | 1504 return cssValuePool().createValue(style->overflowWrap()); |
| 1699 case CSSPropertyWebkitLineBreak: | 1505 case CSSPropertyWebkitLineBreak: |
| 1700 return cssValuePool().createValue(style->lineBreak()); | 1506 return cssValuePool().createValue(style->lineBreak()); |
| 1701 case CSSPropertyFontKerning: | 1507 case CSSPropertyFontKerning: |
| 1702 return cssValuePool().createValue(style->fontDescription().kerning()
); | 1508 return cssValuePool().createValue(style->fontDescription().kerning()
); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 1723 return valueList; | 1529 return valueList; |
| 1724 } | 1530 } |
| 1725 case CSSPropertyZIndex: | 1531 case CSSPropertyZIndex: |
| 1726 if (style->hasAutoZIndex()) | 1532 if (style->hasAutoZIndex()) |
| 1727 return cssValuePool().createIdentifierValue(CSSValueAuto); | 1533 return cssValuePool().createIdentifierValue(CSSValueAuto); |
| 1728 return cssValuePool().createValue(style->zIndex(), CSSPrimitiveValue
::CSS_NUMBER); | 1534 return cssValuePool().createValue(style->zIndex(), CSSPrimitiveValue
::CSS_NUMBER); |
| 1729 case CSSPropertyBoxSizing: | 1535 case CSSPropertyBoxSizing: |
| 1730 if (style->boxSizing() == CONTENT_BOX) | 1536 if (style->boxSizing() == CONTENT_BOX) |
| 1731 return cssValuePool().createIdentifierValue(CSSValueContentBox); | 1537 return cssValuePool().createIdentifierValue(CSSValueContentBox); |
| 1732 return cssValuePool().createIdentifierValue(CSSValueBorderBox); | 1538 return cssValuePool().createIdentifierValue(CSSValueBorderBox); |
| 1733 case CSSPropertyAnimationDelay: | |
| 1734 return valueForAnimationDelay(style->animations()); | |
| 1735 case CSSPropertyAnimationDirection: { | |
| 1736 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); | |
| 1737 const CSSAnimationData* animationData = style->animations(); | |
| 1738 if (animationData) { | |
| 1739 for (size_t i = 0; i < animationData->directionList().size(); ++
i) | |
| 1740 list->append(valueForAnimationDirection(animationData->direc
tionList()[i])); | |
| 1741 } else { | |
| 1742 list->append(cssValuePool().createIdentifierValue(CSSValueNormal
)); | |
| 1743 } | |
| 1744 return list.release(); | |
| 1745 } | |
| 1746 case CSSPropertyAnimationDuration: | |
| 1747 return valueForAnimationDuration(style->animations()); | |
| 1748 case CSSPropertyAnimationFillMode: { | |
| 1749 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); | |
| 1750 const CSSAnimationData* animationData = style->animations(); | |
| 1751 if (animationData) { | |
| 1752 for (size_t i = 0; i < animationData->fillModeList().size(); ++i
) | |
| 1753 list->append(valueForAnimationFillMode(animationData->fillMo
deList()[i])); | |
| 1754 } else { | |
| 1755 list->append(cssValuePool().createIdentifierValue(CSSValueNone))
; | |
| 1756 } | |
| 1757 return list.release(); | |
| 1758 } | |
| 1759 case CSSPropertyAnimationIterationCount: { | |
| 1760 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); | |
| 1761 const CSSAnimationData* animationData = style->animations(); | |
| 1762 if (animationData) { | |
| 1763 for (size_t i = 0; i < animationData->iterationCountList().size(
); ++i) | |
| 1764 list->append(valueForAnimationIterationCount(animationData->
iterationCountList()[i])); | |
| 1765 } else { | |
| 1766 list->append(cssValuePool().createValue(CSSAnimationData::initia
lIterationCount(), CSSPrimitiveValue::CSS_NUMBER)); | |
| 1767 } | |
| 1768 return list.release(); | |
| 1769 } | |
| 1770 case CSSPropertyAnimationName: { | |
| 1771 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); | |
| 1772 const CSSAnimationData* animationData = style->animations(); | |
| 1773 if (animationData) { | |
| 1774 for (size_t i = 0; i < animationData->nameList().size(); ++i) | |
| 1775 list->append(cssValuePool().createValue(animationData->nameL
ist()[i], CSSPrimitiveValue::CSS_STRING)); | |
| 1776 } else { | |
| 1777 list->append(cssValuePool().createIdentifierValue(CSSValueNone))
; | |
| 1778 } | |
| 1779 return list.release(); | |
| 1780 } | |
| 1781 case CSSPropertyAnimationPlayState: { | |
| 1782 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); | |
| 1783 const CSSAnimationData* animationData = style->animations(); | |
| 1784 if (animationData) { | |
| 1785 for (size_t i = 0; i < animationData->playStateList().size(); ++
i) | |
| 1786 list->append(valueForAnimationPlayState(animationData->playS
tateList()[i])); | |
| 1787 } else { | |
| 1788 list->append(cssValuePool().createIdentifierValue(CSSValueRunnin
g)); | |
| 1789 } | |
| 1790 return list.release(); | |
| 1791 } | |
| 1792 case CSSPropertyAnimationTimingFunction: | |
| 1793 return valueForAnimationTimingFunction(style->animations()); | |
| 1794 case CSSPropertyAnimation: { | |
| 1795 const CSSAnimationData* animationData = style->animations(); | |
| 1796 if (animationData) { | |
| 1797 RefPtr<CSSValueList> animationsList = CSSValueList::createCommaS
eparated(); | |
| 1798 for (size_t i = 0; i < animationData->nameList().size(); ++i) { | |
| 1799 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparat
ed(); | |
| 1800 list->append(cssValuePool().createValue(animationData->nameL
ist()[i], CSSPrimitiveValue::CSS_STRING)); | |
| 1801 list->append(cssValuePool().createValue(CSSTimingData::getRe
peated(animationData->durationList(), i), CSSPrimitiveValue::CSS_S)); | |
| 1802 list->append(createTimingFunctionValue(CSSTimingData::getRep
eated(animationData->timingFunctionList(), i).get())); | |
| 1803 list->append(cssValuePool().createValue(CSSTimingData::getRe
peated(animationData->delayList(), i), CSSPrimitiveValue::CSS_S)); | |
| 1804 list->append(valueForAnimationIterationCount(CSSTimingData::
getRepeated(animationData->iterationCountList(), i))); | |
| 1805 list->append(valueForAnimationDirection(CSSTimingData::getRe
peated(animationData->directionList(), i))); | |
| 1806 list->append(valueForAnimationFillMode(CSSTimingData::getRep
eated(animationData->fillModeList(), i))); | |
| 1807 list->append(valueForAnimationPlayState(CSSTimingData::getRe
peated(animationData->playStateList(), i))); | |
| 1808 animationsList->append(list); | |
| 1809 } | |
| 1810 return animationsList.release(); | |
| 1811 } | |
| 1812 | |
| 1813 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); | |
| 1814 // animation-name default value. | |
| 1815 list->append(cssValuePool().createIdentifierValue(CSSValueNone)); | |
| 1816 list->append(cssValuePool().createValue(CSSAnimationData::initialDur
ation(), CSSPrimitiveValue::CSS_S)); | |
| 1817 list->append(createTimingFunctionValue(CSSAnimationData::initialTimi
ngFunction().get())); | |
| 1818 list->append(cssValuePool().createValue(CSSAnimationData::initialDel
ay(), CSSPrimitiveValue::CSS_S)); | |
| 1819 list->append(cssValuePool().createValue(CSSAnimationData::initialIte
rationCount(), CSSPrimitiveValue::CSS_NUMBER)); | |
| 1820 list->append(valueForAnimationDirection(CSSAnimationData::initialDir
ection())); | |
| 1821 list->append(valueForAnimationFillMode(CSSAnimationData::initialFill
Mode())); | |
| 1822 // Initial animation-play-state. | |
| 1823 list->append(cssValuePool().createIdentifierValue(CSSValueRunning)); | |
| 1824 return list.release(); | |
| 1825 } | |
| 1826 case CSSPropertyWebkitAspectRatio: | 1539 case CSSPropertyWebkitAspectRatio: |
| 1827 if (!style->hasAspectRatio()) | 1540 if (!style->hasAspectRatio()) |
| 1828 return cssValuePool().createIdentifierValue(CSSValueNone); | 1541 return cssValuePool().createIdentifierValue(CSSValueNone); |
| 1829 return CSSAspectRatioValue::create(style->aspectRatioNumerator(), st
yle->aspectRatioDenominator()); | 1542 return CSSAspectRatioValue::create(style->aspectRatioNumerator(), st
yle->aspectRatioDenominator()); |
| 1830 case CSSPropertyWebkitBorderImage: | 1543 case CSSPropertyWebkitBorderImage: |
| 1831 return valueForNinePieceImage(style->borderImage(), *style); | 1544 return valueForNinePieceImage(style->borderImage(), *style); |
| 1832 case CSSPropertyBorderImageOutset: | 1545 case CSSPropertyBorderImageOutset: |
| 1833 return valueForNinePieceImageQuad(style->borderImage().outset(), *st
yle); | 1546 return valueForNinePieceImageQuad(style->borderImage().outset(), *st
yle); |
| 1834 case CSSPropertyBorderImageRepeat: | 1547 case CSSPropertyBorderImageRepeat: |
| 1835 return valueForNinePieceImageRepeat(style->borderImage()); | 1548 return valueForNinePieceImageRepeat(style->borderImage()); |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1906 list->append(pixelValueForLength(style->transformOriginX(), *sty
le)); | 1619 list->append(pixelValueForLength(style->transformOriginX(), *sty
le)); |
| 1907 list->append(pixelValueForLength(style->transformOriginY(), *sty
le)); | 1620 list->append(pixelValueForLength(style->transformOriginY(), *sty
le)); |
| 1908 if (style->transformOriginZ() != 0) | 1621 if (style->transformOriginZ() != 0) |
| 1909 list->append(pixelValue(style->transformOriginZ(), *style)); | 1622 list->append(pixelValue(style->transformOriginZ(), *style)); |
| 1910 } | 1623 } |
| 1911 return list.release(); | 1624 return list.release(); |
| 1912 } | 1625 } |
| 1913 case CSSPropertyTransformStyle: | 1626 case CSSPropertyTransformStyle: |
| 1914 case CSSPropertyWebkitTransformStyle: | 1627 case CSSPropertyWebkitTransformStyle: |
| 1915 return cssValuePool().createIdentifierValue((style->transformStyle3D
() == TransformStyle3DPreserve3D) ? CSSValuePreserve3d : CSSValueFlat); | 1628 return cssValuePool().createIdentifierValue((style->transformStyle3D
() == TransformStyle3DPreserve3D) ? CSSValuePreserve3d : CSSValueFlat); |
| 1916 case CSSPropertyTransitionDelay: | |
| 1917 return valueForAnimationDelay(style->transitions()); | |
| 1918 case CSSPropertyTransitionDuration: | |
| 1919 return valueForAnimationDuration(style->transitions()); | |
| 1920 case CSSPropertyTransitionProperty: | |
| 1921 return valueForTransitionProperty(style->transitions()); | |
| 1922 case CSSPropertyTransitionTimingFunction: | |
| 1923 return valueForAnimationTimingFunction(style->transitions()); | |
| 1924 case CSSPropertyTransition: { | |
| 1925 const CSSTransitionData* transitionData = style->transitions(); | |
| 1926 if (transitionData) { | |
| 1927 RefPtr<CSSValueList> transitionsList = CSSValueList::createComma
Separated(); | |
| 1928 for (size_t i = 0; i < transitionData->propertyList().size(); ++
i) { | |
| 1929 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparat
ed(); | |
| 1930 list->append(createTransitionPropertyValue(transitionData->p
ropertyList()[i])); | |
| 1931 list->append(cssValuePool().createValue(CSSTimingData::getRe
peated(transitionData->durationList(), i), CSSPrimitiveValue::CSS_S)); | |
| 1932 list->append(createTimingFunctionValue(CSSTimingData::getRep
eated(transitionData->timingFunctionList(), i).get())); | |
| 1933 list->append(cssValuePool().createValue(CSSTimingData::getRe
peated(transitionData->delayList(), i), CSSPrimitiveValue::CSS_S)); | |
| 1934 transitionsList->append(list); | |
| 1935 } | |
| 1936 return transitionsList.release(); | |
| 1937 } | |
| 1938 | |
| 1939 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); | |
| 1940 // transition-property default value. | |
| 1941 list->append(cssValuePool().createIdentifierValue(CSSValueAll)); | |
| 1942 list->append(cssValuePool().createValue(CSSTransitionData::initialDu
ration(), CSSPrimitiveValue::CSS_S)); | |
| 1943 list->append(createTimingFunctionValue(CSSTransitionData::initialTim
ingFunction().get())); | |
| 1944 list->append(cssValuePool().createValue(CSSTransitionData::initialDe
lay(), CSSPrimitiveValue::CSS_S)); | |
| 1945 return list.release(); | |
| 1946 } | |
| 1947 case CSSPropertyPointerEvents: | 1629 case CSSPropertyPointerEvents: |
| 1948 return cssValuePool().createValue(style->pointerEvents()); | 1630 return cssValuePool().createValue(style->pointerEvents()); |
| 1949 case CSSPropertyWebkitTextOrientation: | 1631 case CSSPropertyWebkitTextOrientation: |
| 1950 return CSSPrimitiveValue::create(style->textOrientation()); | 1632 return CSSPrimitiveValue::create(style->textOrientation()); |
| 1951 case CSSPropertyWebkitLineBoxContain: | 1633 case CSSPropertyWebkitLineBoxContain: |
| 1952 return createLineBoxContainValue(style->lineBoxContain()); | 1634 return createLineBoxContainValue(style->lineBoxContain()); |
| 1953 case CSSPropertyWebkitClipPath: | 1635 case CSSPropertyWebkitClipPath: |
| 1954 if (ClipPathOperation* operation = style->clipPath()) { | 1636 if (ClipPathOperation* operation = style->clipPath()) { |
| 1955 if (operation->type() == ClipPathOperation::SHAPE) | 1637 if (operation->type() == ClipPathOperation::SHAPE) |
| 1956 return valueForBasicShape(*style, toShapeClipPathOperation(o
peration)->basicShape()); | 1638 return valueForBasicShape(*style, toShapeClipPathOperation(o
peration)->basicShape()); |
| (...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2225 static const CSSPropertyID propertiesAfterSlashSeperator[3] = { CSSPropertyB
ackgroundSize, CSSPropertyBackgroundOrigin, | 1907 static const CSSPropertyID propertiesAfterSlashSeperator[3] = { CSSPropertyB
ackgroundSize, CSSPropertyBackgroundOrigin, |
| 2226 CSSPropertyB
ackgroundClip }; | 1908 CSSPropertyB
ackgroundClip }; |
| 2227 | 1909 |
| 2228 RefPtr<CSSValueList> list = CSSValueList::createSlashSeparated(); | 1910 RefPtr<CSSValueList> list = CSSValueList::createSlashSeparated(); |
| 2229 list->append(valuesForShorthandProperty(StylePropertyShorthand(CSSPropertyBa
ckground, propertiesBeforeSlashSeperator, WTF_ARRAY_LENGTH(propertiesBeforeSlash
Seperator)))); | 1911 list->append(valuesForShorthandProperty(StylePropertyShorthand(CSSPropertyBa
ckground, propertiesBeforeSlashSeperator, WTF_ARRAY_LENGTH(propertiesBeforeSlash
Seperator)))); |
| 2230 list->append(valuesForShorthandProperty(StylePropertyShorthand(CSSPropertyBa
ckground, propertiesAfterSlashSeperator, WTF_ARRAY_LENGTH(propertiesAfterSlashSe
perator)))); | 1912 list->append(valuesForShorthandProperty(StylePropertyShorthand(CSSPropertyBa
ckground, propertiesAfterSlashSeperator, WTF_ARRAY_LENGTH(propertiesAfterSlashSe
perator)))); |
| 2231 return list.release(); | 1913 return list.release(); |
| 2232 } | 1914 } |
| 2233 | 1915 |
| 2234 } // namespace blink | 1916 } // namespace blink |
| OLD | NEW |