Changeset 121164 in webkit


Ignore:
Timestamp:
Jun 25, 2012 10:36:38 AM (12 years ago)
Author:
eric@webkit.org
Message:

Split map* functions out of StyleResolver into a helper object
https://bugs.webkit.org/show_bug.cgi?id=89881

Reviewed by Daniel Bates.

These map* functions are completely independent of the rest of StyleResolver
and only exist to serve StyleBuilder.
CSSToStyleMap doesn't even want to have a StyleResolver pointer, but
currently needs one to access the resolve-lifetime caches for the
current resolve. Once we split out that per-resolve state into
some sort of ResolveState/ResolveInfo object (akin to PaintInfo/LayoutState)
then this object will be even simpler.

No behavioral change, thus no tests.

  • CMakeLists.txt:
  • GNUmakefile.list.am:
  • WebCore.gypi:
  • WebCore.vcproj/WebCore.vcproj:
  • WebCore.xcodeproj/project.pbxproj:
  • css/CSSToStyleMap.cpp: Added.

(WebCore):
(WebCore::CSSToStyleMap::style):
(WebCore::CSSToStyleMap::rootElementStyle):
(WebCore::CSSToStyleMap::useSVGZoomRules):
(WebCore::CSSToStyleMap::styleImage):
(WebCore::CSSToStyleMap::mapFillAttachment):
(WebCore::CSSToStyleMap::mapFillClip):
(WebCore::CSSToStyleMap::mapFillComposite):
(WebCore::CSSToStyleMap::mapFillOrigin):
(WebCore::CSSToStyleMap::mapFillImage):
(WebCore::CSSToStyleMap::mapFillRepeatX):
(WebCore::CSSToStyleMap::mapFillRepeatY):
(WebCore::CSSToStyleMap::mapFillSize):
(WebCore::CSSToStyleMap::mapFillXPosition):
(WebCore::CSSToStyleMap::mapFillYPosition):
(WebCore::CSSToStyleMap::mapAnimationDelay):
(WebCore::CSSToStyleMap::mapAnimationDirection):
(WebCore::CSSToStyleMap::mapAnimationDuration):
(WebCore::CSSToStyleMap::mapAnimationFillMode):
(WebCore::CSSToStyleMap::mapAnimationIterationCount):
(WebCore::CSSToStyleMap::mapAnimationName):
(WebCore::CSSToStyleMap::mapAnimationPlayState):
(WebCore::CSSToStyleMap::mapAnimationProperty):
(WebCore::CSSToStyleMap::mapAnimationTimingFunction):
(WebCore::CSSToStyleMap::mapNinePieceImage):
(WebCore::CSSToStyleMap::mapNinePieceImageSlice):
(WebCore::CSSToStyleMap::mapNinePieceImageQuad):
(WebCore::CSSToStyleMap::mapNinePieceImageRepeat):

  • css/CSSToStyleMap.h: Added.

(WebCore):
(CSSToStyleMap):
(WebCore::CSSToStyleMap::CSSToStyleMap):

  • css/StyleBuilder.cpp:

(WebCore::ApplyPropertyFillLayer::applyValue):
(WebCore::ApplyPropertyBorderImage::applyValue):
(WebCore::ApplyPropertyBorderImageModifier::applyValue):
(WebCore):
(WebCore::ApplyPropertyAnimation::map):
(WebCore::StyleBuilder::StyleBuilder):

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::StyleResolver):
(WebCore::StyleResolver::collectMatchingRulesForList):

  • css/StyleResolver.h:

(WebCore::StyleResolver::styleMap):
(StyleResolver):

Location:
trunk/Source/WebCore
Files:
2 added
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/CMakeLists.txt

    r121051 r121164  
    504504    css/CSSStyleSheet.cpp
    505505    css/CSSTimingFunctionValue.cpp
     506    css/CSSToStyleMap.cpp
    506507    css/CSSUnicodeRangeValue.cpp
    507508    css/CSSValue.cpp
  • trunk/Source/WebCore/ChangeLog

    r121163 r121164  
     12012-06-25  Eric Seidel  <eric@webkit.org>
     2
     3        Split map* functions out of StyleResolver into a helper object
     4        https://bugs.webkit.org/show_bug.cgi?id=89881
     5
     6        Reviewed by Daniel Bates.
     7
     8        These map* functions are completely independent of the rest of StyleResolver
     9        and only exist to serve StyleBuilder.
     10        CSSToStyleMap doesn't even want to have a StyleResolver pointer, but
     11        currently needs one to access the resolve-lifetime caches for the
     12        current resolve.  Once we split out that per-resolve state into
     13        some sort of ResolveState/ResolveInfo object (akin to PaintInfo/LayoutState)
     14        then this object will be even simpler.
     15
     16        No behavioral change, thus no tests.
     17
     18        * CMakeLists.txt:
     19        * GNUmakefile.list.am:
     20        * WebCore.gypi:
     21        * WebCore.vcproj/WebCore.vcproj:
     22        * WebCore.xcodeproj/project.pbxproj:
     23        * css/CSSToStyleMap.cpp: Added.
     24        (WebCore):
     25        (WebCore::CSSToStyleMap::style):
     26        (WebCore::CSSToStyleMap::rootElementStyle):
     27        (WebCore::CSSToStyleMap::useSVGZoomRules):
     28        (WebCore::CSSToStyleMap::styleImage):
     29        (WebCore::CSSToStyleMap::mapFillAttachment):
     30        (WebCore::CSSToStyleMap::mapFillClip):
     31        (WebCore::CSSToStyleMap::mapFillComposite):
     32        (WebCore::CSSToStyleMap::mapFillOrigin):
     33        (WebCore::CSSToStyleMap::mapFillImage):
     34        (WebCore::CSSToStyleMap::mapFillRepeatX):
     35        (WebCore::CSSToStyleMap::mapFillRepeatY):
     36        (WebCore::CSSToStyleMap::mapFillSize):
     37        (WebCore::CSSToStyleMap::mapFillXPosition):
     38        (WebCore::CSSToStyleMap::mapFillYPosition):
     39        (WebCore::CSSToStyleMap::mapAnimationDelay):
     40        (WebCore::CSSToStyleMap::mapAnimationDirection):
     41        (WebCore::CSSToStyleMap::mapAnimationDuration):
     42        (WebCore::CSSToStyleMap::mapAnimationFillMode):
     43        (WebCore::CSSToStyleMap::mapAnimationIterationCount):
     44        (WebCore::CSSToStyleMap::mapAnimationName):
     45        (WebCore::CSSToStyleMap::mapAnimationPlayState):
     46        (WebCore::CSSToStyleMap::mapAnimationProperty):
     47        (WebCore::CSSToStyleMap::mapAnimationTimingFunction):
     48        (WebCore::CSSToStyleMap::mapNinePieceImage):
     49        (WebCore::CSSToStyleMap::mapNinePieceImageSlice):
     50        (WebCore::CSSToStyleMap::mapNinePieceImageQuad):
     51        (WebCore::CSSToStyleMap::mapNinePieceImageRepeat):
     52        * css/CSSToStyleMap.h: Added.
     53        (WebCore):
     54        (CSSToStyleMap):
     55        (WebCore::CSSToStyleMap::CSSToStyleMap):
     56        * css/StyleBuilder.cpp:
     57        (WebCore::ApplyPropertyFillLayer::applyValue):
     58        (WebCore::ApplyPropertyBorderImage::applyValue):
     59        (WebCore::ApplyPropertyBorderImageModifier::applyValue):
     60        (WebCore):
     61        (WebCore::ApplyPropertyAnimation::map):
     62        (WebCore::StyleBuilder::StyleBuilder):
     63        * css/StyleResolver.cpp:
     64        (WebCore::StyleResolver::StyleResolver):
     65        (WebCore::StyleResolver::collectMatchingRulesForList):
     66        * css/StyleResolver.h:
     67        (WebCore::StyleResolver::styleMap):
     68        (StyleResolver):
     69
    1702012-06-25  Gyuyoung Kim  <gyuyoung.kim@samsung.com>
    271
  • trunk/Source/WebCore/GNUmakefile.list.am

    r121148 r121164  
    16801680        Source/WebCore/css/CSSTimingFunctionValue.cpp \
    16811681        Source/WebCore/css/CSSTimingFunctionValue.h \
     1682        Source/WebCore/css/CSSToStyleMap.cpp \
     1683        Source/WebCore/css/CSSToStyleMap.h \
    16821684        Source/WebCore/css/CSSWrapShapes.cpp \
    16831685        Source/WebCore/css/CSSWrapShapes.h \
  • trunk/Source/WebCore/Target.pri

    r121147 r121164  
    467467    css/CSSStyleSheet.cpp \
    468468    css/CSSTimingFunctionValue.cpp \
     469    css/CSSToStyleMap.cpp \
    469470    css/CSSUnicodeRangeValue.cpp \
    470471    css/CSSValue.cpp \
     
    16491650    css/CSSStyleSheet.h \
    16501651    css/CSSTimingFunctionValue.h \
     1652    css/CSSToStyleMap.h \
    16511653    css/CSSUnicodeRangeValue.h \
    16521654    css/CSSValue.cpp \
  • trunk/Source/WebCore/WebCore.gypi

    r121144 r121164  
    25062506            'css/CSSTimingFunctionValue.cpp',
    25072507            'css/CSSTimingFunctionValue.h',
     2508            'css/CSSToStyleMap.cpp',
     2509            'css/CSSToStyleMap.h',
    25082510            'css/CSSUnicodeRangeValue.cpp',
    25092511            'css/CSSUnicodeRangeValue.h',
  • trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj

    r121144 r121164  
    3663636636                        </File>
    3663736637                        <File
     36638                                RelativePath="..\css\CSSToStyleMap.cpp"
     36639                                >
     36640                        </File>
     36641                        <File
     36642                                RelativePath="..\css\CSSToStyleMap.h"
     36643                                >
     36644                        </File>
     36645                        <File
    3663836646                                RelativePath="..\css\CSSUnicodeRangeValue.cpp"
    3663936647                                >
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r121144 r121164  
    41884188                A871DFE50A15376B00B12A68 /* RenderWidget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871DFE10A15376B00B12A68 /* RenderWidget.cpp */; };
    41894189                A8748BE012CBF2DC001FBA41 /* HashTools.h in Headers */ = {isa = PBXBuildFile; fileRef = A8748BDF12CBF2DC001FBA41 /* HashTools.h */; };
     4190                A882DA201593846A000115ED /* CSSToStyleMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A882DA1F1593846A000115ED /* CSSToStyleMap.cpp */; };
     4191                A882DA231593848D000115ED /* CSSToStyleMap.h in Headers */ = {isa = PBXBuildFile; fileRef = A882DA221593848D000115ED /* CSSToStyleMap.h */; };
    41904192                A883DF270F3D045D00F19BF6 /* VisibleSelection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A883DF250F3D045D00F19BF6 /* VisibleSelection.cpp */; };
    41914193                A883DF280F3D045D00F19BF6 /* VisibleSelection.h in Headers */ = {isa = PBXBuildFile; fileRef = A883DF260F3D045D00F19BF6 /* VisibleSelection.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    1119811200                A8748D6612CC3763001FBA41 /* ImageOrientation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageOrientation.h; sourceTree = "<group>"; };
    1119911201                A8748D7412CC3F89001FBA41 /* ImageOrientation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ImageOrientation.cpp; sourceTree = "<group>"; };
     11202                A882DA1F1593846A000115ED /* CSSToStyleMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSToStyleMap.cpp; sourceTree = "<group>"; };
     11203                A882DA221593848D000115ED /* CSSToStyleMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSToStyleMap.h; sourceTree = "<group>"; };
    1120011204                A883DF250F3D045D00F19BF6 /* VisibleSelection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VisibleSelection.cpp; sourceTree = "<group>"; };
    1120111205                A883DF260F3D045D00F19BF6 /* VisibleSelection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VisibleSelection.h; sourceTree = "<group>"; };
     
    2099821002                                BC9ADD220CC4032600098C4C /* WebKitCSSTransformValue.h */,
    2099921003                                31611E540E1C4D4A00F6A579 /* WebKitCSSTransformValue.idl */,
     21004                                A882DA1F1593846A000115ED /* CSSToStyleMap.cpp */,
     21005                                A882DA221593848D000115ED /* CSSToStyleMap.h */,
    2100021006                        );
    2100121007                        path = css;
     
    2514925155                                50987C27157D676D00BDA835 /* CustomFilterGlobalContext.h in Headers */,
    2515025156                                4F32BB1B14FA85E800F6C1A3 /* MemoryInstrumentation.h in Headers */,
     25157                                A882DA231593848D000115ED /* CSSToStyleMap.h in Headers */,
    2515125158                        );
    2515225159                        runOnlyForDeploymentPostprocessing = 0;
     
    2820128208                                CE7B2DB61586ABAD0098B3FA /* TextAlternativeWithRange.mm in Sources */,
    2820228209                                50987C26157D676D00BDA835 /* CustomFilterGlobalContext.cpp in Sources */,
     28210                                A882DA201593846A000115ED /* CSSToStyleMap.cpp in Sources */,
    2820328211                        );
    2820428212                        runOnlyForDeploymentPostprocessing = 0;
  • trunk/Source/WebCore/css/StyleBuilder.cpp

    r121127 r121164  
    3030#include "CSSCursorImageValue.h"
    3131#include "CSSPrimitiveValueMappings.h"
     32#include "CSSToStyleMap.h"
    3233#include "CSSValueList.h"
    3334#include "CursorList.h"
     
    497498          void (FillLayer::*clearFunction)(),
    498499          typename FillLayerAccessorTypes<T>::Getter (*initialFunction)(EFillLayerType),
    499           void (StyleResolver::*mapFillFunction)(CSSPropertyID, FillLayer*, CSSValue*)>
     500          void (CSSToStyleMap::*mapFillFunction)(CSSPropertyID, FillLayer*, CSSValue*)>
    500501class ApplyPropertyFillLayer {
    501502public:
     
    549550                    prevChild->setNext(currChild);
    550551                }
    551                 (styleResolver->*mapFillFunction)(propertyId, currChild, valueList->itemWithoutBoundsCheck(i));
     552                (styleResolver->styleMap()->*mapFillFunction)(propertyId, currChild, valueList->itemWithoutBoundsCheck(i));
    552553                prevChild = currChild;
    553554                currChild = currChild->next();
    554555            }
    555556        } else {
    556             (styleResolver->*mapFillFunction)(propertyId, currChild, value);
     557            (styleResolver->styleMap()->*mapFillFunction)(propertyId, currChild, value);
    557558            currChild = currChild->next();
    558559        }
     
    887888        if (borderImageType == Mask)
    888889            image.setMaskDefaults();
    889         styleResolver->mapNinePieceImage(property, value, image);
     890        styleResolver->styleMap()->mapNinePieceImage(property, value, image);
    890891        (styleResolver->style()->*setterFunction)(image);
    891892    }
     
    954955        switch (modifier) {
    955956        case Outset:
    956             image.setOutset(styleResolver->mapNinePieceImageQuad(value));
     957            image.setOutset(styleResolver->styleMap()->mapNinePieceImageQuad(value));
    957958            break;
    958959        case Repeat:
    959             styleResolver->mapNinePieceImageRepeat(value, image);
     960            styleResolver->styleMap()->mapNinePieceImageRepeat(value, image);
    960961            break;
    961962        case Slice:
    962             styleResolver->mapNinePieceImageSlice(value, image);
     963            styleResolver->styleMap()->mapNinePieceImageSlice(value, image);
    963964            break;
    964965        case Width:
    965             image.setBorderSlices(styleResolver->mapNinePieceImageQuad(value));
     966            image.setBorderSlices(styleResolver->styleMap()->mapNinePieceImageQuad(value));
    966967            break;
    967968        }
     
    14381439          void (Animation::*clearFunction)(),
    14391440          T (*initialFunction)(),
    1440           void (StyleResolver::*mapFunction)(Animation*, CSSValue*),
     1441          void (CSSToStyleMap::*mapFunction)(Animation*, CSSValue*),
    14411442          AnimationList* (RenderStyle::*animationGetterFunction)(),
    14421443          const AnimationList* (RenderStyle::*immutableAnimationGetterFunction)() const>
     
    14481449    static void clear(Animation* animation) { (animation->*clearFunction)(); }
    14491450    static T initial() { return (*initialFunction)(); }
    1450     static void map(StyleResolver* styleResolver, Animation* animation, CSSValue* value) { (styleResolver->*mapFunction)(animation, value); }
     1451    static void map(StyleResolver* styleResolver, Animation* animation, CSSValue* value) { (styleResolver->styleMap()->*mapFunction)(animation, value); }
    14511452    static AnimationList* accessAnimations(RenderStyle* style) { return (style->*animationGetterFunction)(); }
    14521453    static const AnimationList* animations(RenderStyle* style) { return (style->*immutableAnimationGetterFunction)(); }
     
    18411842
    18421843    // Please keep CSS property list in alphabetical order.
    1843     setPropertyHandler(CSSPropertyBackgroundAttachment, ApplyPropertyFillLayer<EFillAttachment, CSSPropertyBackgroundAttachment, BackgroundFillLayer, &RenderStyle::accessBackgroundLayers, &RenderStyle::backgroundLayers, &FillLayer::isAttachmentSet, &FillLayer::attachment, &FillLayer::setAttachment, &FillLayer::clearAttachment, &FillLayer::initialFillAttachment, &StyleResolver::mapFillAttachment>::createHandler());
    1844     setPropertyHandler(CSSPropertyBackgroundClip, ApplyPropertyFillLayer<EFillBox, CSSPropertyBackgroundClip, BackgroundFillLayer, &RenderStyle::accessBackgroundLayers, &RenderStyle::backgroundLayers, &FillLayer::isClipSet, &FillLayer::clip, &FillLayer::setClip, &FillLayer::clearClip, &FillLayer::initialFillClip, &StyleResolver::mapFillClip>::createHandler());
     1844    setPropertyHandler(CSSPropertyBackgroundAttachment, ApplyPropertyFillLayer<EFillAttachment, CSSPropertyBackgroundAttachment, BackgroundFillLayer, &RenderStyle::accessBackgroundLayers, &RenderStyle::backgroundLayers, &FillLayer::isAttachmentSet, &FillLayer::attachment, &FillLayer::setAttachment, &FillLayer::clearAttachment, &FillLayer::initialFillAttachment, &CSSToStyleMap::mapFillAttachment>::createHandler());
     1845    setPropertyHandler(CSSPropertyBackgroundClip, ApplyPropertyFillLayer<EFillBox, CSSPropertyBackgroundClip, BackgroundFillLayer, &RenderStyle::accessBackgroundLayers, &RenderStyle::backgroundLayers, &FillLayer::isClipSet, &FillLayer::clip, &FillLayer::setClip, &FillLayer::clearClip, &FillLayer::initialFillClip, &CSSToStyleMap::mapFillClip>::createHandler());
    18451846    setPropertyHandler(CSSPropertyBackgroundColor, ApplyPropertyColor<NoInheritFromParent, &RenderStyle::backgroundColor, &RenderStyle::setBackgroundColor, &RenderStyle::setVisitedLinkBackgroundColor, &RenderStyle::invalidColor>::createHandler());
    1846     setPropertyHandler(CSSPropertyBackgroundImage, ApplyPropertyFillLayer<StyleImage*, CSSPropertyBackgroundImage, BackgroundFillLayer, &RenderStyle::accessBackgroundLayers, &RenderStyle::backgroundLayers, &FillLayer::isImageSet, &FillLayer::image, &FillLayer::setImage, &FillLayer::clearImage, &FillLayer::initialFillImage, &StyleResolver::mapFillImage>::createHandler());
    1847     setPropertyHandler(CSSPropertyBackgroundOrigin, ApplyPropertyFillLayer<EFillBox, CSSPropertyBackgroundOrigin, BackgroundFillLayer, &RenderStyle::accessBackgroundLayers, &RenderStyle::backgroundLayers, &FillLayer::isOriginSet, &FillLayer::origin, &FillLayer::setOrigin, &FillLayer::clearOrigin, &FillLayer::initialFillOrigin, &StyleResolver::mapFillOrigin>::createHandler());
     1847    setPropertyHandler(CSSPropertyBackgroundImage, ApplyPropertyFillLayer<StyleImage*, CSSPropertyBackgroundImage, BackgroundFillLayer, &RenderStyle::accessBackgroundLayers, &RenderStyle::backgroundLayers, &FillLayer::isImageSet, &FillLayer::image, &FillLayer::setImage, &FillLayer::clearImage, &FillLayer::initialFillImage, &CSSToStyleMap::mapFillImage>::createHandler());
     1848    setPropertyHandler(CSSPropertyBackgroundOrigin, ApplyPropertyFillLayer<EFillBox, CSSPropertyBackgroundOrigin, BackgroundFillLayer, &RenderStyle::accessBackgroundLayers, &RenderStyle::backgroundLayers, &FillLayer::isOriginSet, &FillLayer::origin, &FillLayer::setOrigin, &FillLayer::clearOrigin, &FillLayer::initialFillOrigin, &CSSToStyleMap::mapFillOrigin>::createHandler());
    18481849    setPropertyHandler(CSSPropertyBackgroundPosition, ApplyPropertyExpanding<SuppressValue, CSSPropertyBackgroundPositionX, CSSPropertyBackgroundPositionY>::createHandler());
    1849     setPropertyHandler(CSSPropertyBackgroundPositionX, ApplyPropertyFillLayer<Length, CSSPropertyBackgroundPositionX, BackgroundFillLayer, &RenderStyle::accessBackgroundLayers, &RenderStyle::backgroundLayers, &FillLayer::isXPositionSet, &FillLayer::xPosition, &FillLayer::setXPosition, &FillLayer::clearXPosition, &FillLayer::initialFillXPosition, &StyleResolver::mapFillXPosition>::createHandler());
    1850     setPropertyHandler(CSSPropertyBackgroundPositionY, ApplyPropertyFillLayer<Length, CSSPropertyBackgroundPositionY, BackgroundFillLayer, &RenderStyle::accessBackgroundLayers, &RenderStyle::backgroundLayers, &FillLayer::isYPositionSet, &FillLayer::yPosition, &FillLayer::setYPosition, &FillLayer::clearYPosition, &FillLayer::initialFillYPosition, &StyleResolver::mapFillYPosition>::createHandler());
     1850    setPropertyHandler(CSSPropertyBackgroundPositionX, ApplyPropertyFillLayer<Length, CSSPropertyBackgroundPositionX, BackgroundFillLayer, &RenderStyle::accessBackgroundLayers, &RenderStyle::backgroundLayers, &FillLayer::isXPositionSet, &FillLayer::xPosition, &FillLayer::setXPosition, &FillLayer::clearXPosition, &FillLayer::initialFillXPosition, &CSSToStyleMap::mapFillXPosition>::createHandler());
     1851    setPropertyHandler(CSSPropertyBackgroundPositionY, ApplyPropertyFillLayer<Length, CSSPropertyBackgroundPositionY, BackgroundFillLayer, &RenderStyle::accessBackgroundLayers, &RenderStyle::backgroundLayers, &FillLayer::isYPositionSet, &FillLayer::yPosition, &FillLayer::setYPosition, &FillLayer::clearYPosition, &FillLayer::initialFillYPosition, &CSSToStyleMap::mapFillYPosition>::createHandler());
    18511852    setPropertyHandler(CSSPropertyBackgroundRepeat, ApplyPropertyExpanding<SuppressValue, CSSPropertyBackgroundRepeatX, CSSPropertyBackgroundRepeatY>::createHandler());
    1852     setPropertyHandler(CSSPropertyBackgroundRepeatX, ApplyPropertyFillLayer<EFillRepeat, CSSPropertyBackgroundRepeatX, BackgroundFillLayer, &RenderStyle::accessBackgroundLayers, &RenderStyle::backgroundLayers, &FillLayer::isRepeatXSet, &FillLayer::repeatX, &FillLayer::setRepeatX, &FillLayer::clearRepeatX, &FillLayer::initialFillRepeatX, &StyleResolver::mapFillRepeatX>::createHandler());
    1853     setPropertyHandler(CSSPropertyBackgroundRepeatY, ApplyPropertyFillLayer<EFillRepeat, CSSPropertyBackgroundRepeatY, BackgroundFillLayer, &RenderStyle::accessBackgroundLayers, &RenderStyle::backgroundLayers, &FillLayer::isRepeatYSet, &FillLayer::repeatY, &FillLayer::setRepeatY, &FillLayer::clearRepeatY, &FillLayer::initialFillRepeatY, &StyleResolver::mapFillRepeatY>::createHandler());
    1854     setPropertyHandler(CSSPropertyBackgroundSize, ApplyPropertyFillLayer<FillSize, CSSPropertyBackgroundSize, BackgroundFillLayer, &RenderStyle::accessBackgroundLayers, &RenderStyle::backgroundLayers, &FillLayer::isSizeSet, &FillLayer::size, &FillLayer::setSize, &FillLayer::clearSize, &FillLayer::initialFillSize, &StyleResolver::mapFillSize>::createHandler());
     1853    setPropertyHandler(CSSPropertyBackgroundRepeatX, ApplyPropertyFillLayer<EFillRepeat, CSSPropertyBackgroundRepeatX, BackgroundFillLayer, &RenderStyle::accessBackgroundLayers, &RenderStyle::backgroundLayers, &FillLayer::isRepeatXSet, &FillLayer::repeatX, &FillLayer::setRepeatX, &FillLayer::clearRepeatX, &FillLayer::initialFillRepeatX, &CSSToStyleMap::mapFillRepeatX>::createHandler());
     1854    setPropertyHandler(CSSPropertyBackgroundRepeatY, ApplyPropertyFillLayer<EFillRepeat, CSSPropertyBackgroundRepeatY, BackgroundFillLayer, &RenderStyle::accessBackgroundLayers, &RenderStyle::backgroundLayers, &FillLayer::isRepeatYSet, &FillLayer::repeatY, &FillLayer::setRepeatY, &FillLayer::clearRepeatY, &FillLayer::initialFillRepeatY, &CSSToStyleMap::mapFillRepeatY>::createHandler());
     1855    setPropertyHandler(CSSPropertyBackgroundSize, ApplyPropertyFillLayer<FillSize, CSSPropertyBackgroundSize, BackgroundFillLayer, &RenderStyle::accessBackgroundLayers, &RenderStyle::backgroundLayers, &FillLayer::isSizeSet, &FillLayer::size, &FillLayer::setSize, &FillLayer::clearSize, &FillLayer::initialFillSize, &CSSToStyleMap::mapFillSize>::createHandler());
    18551856    setPropertyHandler(CSSPropertyBorder, ApplyPropertyExpanding<SuppressValue, CSSPropertyBorderStyle, CSSPropertyBorderWidth, CSSPropertyBorderColor>::createHandler());
    18561857    setPropertyHandler(CSSPropertyBorderBottom, ApplyPropertyExpanding<SuppressValue, CSSPropertyBorderBottomColor, CSSPropertyBorderBottomStyle, CSSPropertyBorderBottomWidth>::createHandler());
     
    19581959    setPropertyHandler(CSSPropertyVerticalAlign, ApplyPropertyVerticalAlign::createHandler());
    19591960    setPropertyHandler(CSSPropertyVisibility, ApplyPropertyDefault<EVisibility, &RenderStyle::visibility, EVisibility, &RenderStyle::setVisibility, EVisibility, &RenderStyle::initialVisibility>::createHandler());
    1960     setPropertyHandler(CSSPropertyWebkitAnimationDelay, ApplyPropertyAnimation<double, &Animation::delay, &Animation::setDelay, &Animation::isDelaySet, &Animation::clearDelay, &Animation::initialAnimationDelay, &StyleResolver::mapAnimationDelay, &RenderStyle::accessAnimations, &RenderStyle::animations>::createHandler());
    1961     setPropertyHandler(CSSPropertyWebkitAnimationDirection, ApplyPropertyAnimation<Animation::AnimationDirection, &Animation::direction, &Animation::setDirection, &Animation::isDirectionSet, &Animation::clearDirection, &Animation::initialAnimationDirection, &StyleResolver::mapAnimationDirection, &RenderStyle::accessAnimations, &RenderStyle::animations>::createHandler());
    1962     setPropertyHandler(CSSPropertyWebkitAnimationDuration, ApplyPropertyAnimation<double, &Animation::duration, &Animation::setDuration, &Animation::isDurationSet, &Animation::clearDuration, &Animation::initialAnimationDuration, &StyleResolver::mapAnimationDuration, &RenderStyle::accessAnimations, &RenderStyle::animations>::createHandler());
    1963     setPropertyHandler(CSSPropertyWebkitAnimationFillMode, ApplyPropertyAnimation<unsigned, &Animation::fillMode, &Animation::setFillMode, &Animation::isFillModeSet, &Animation::clearFillMode, &Animation::initialAnimationFillMode, &StyleResolver::mapAnimationFillMode, &RenderStyle::accessAnimations, &RenderStyle::animations>::createHandler());
    1964     setPropertyHandler(CSSPropertyWebkitAnimationIterationCount, ApplyPropertyAnimation<double, &Animation::iterationCount, &Animation::setIterationCount, &Animation::isIterationCountSet, &Animation::clearIterationCount, &Animation::initialAnimationIterationCount, &StyleResolver::mapAnimationIterationCount, &RenderStyle::accessAnimations, &RenderStyle::animations>::createHandler());
    1965     setPropertyHandler(CSSPropertyWebkitAnimationName, ApplyPropertyAnimation<const String&, &Animation::name, &Animation::setName, &Animation::isNameSet, &Animation::clearName, &Animation::initialAnimationName, &StyleResolver::mapAnimationName, &RenderStyle::accessAnimations, &RenderStyle::animations>::createHandler());
    1966     setPropertyHandler(CSSPropertyWebkitAnimationPlayState, ApplyPropertyAnimation<EAnimPlayState, &Animation::playState, &Animation::setPlayState, &Animation::isPlayStateSet, &Animation::clearPlayState, &Animation::initialAnimationPlayState, &StyleResolver::mapAnimationPlayState, &RenderStyle::accessAnimations, &RenderStyle::animations>::createHandler());
    1967     setPropertyHandler(CSSPropertyWebkitAnimationTimingFunction, ApplyPropertyAnimation<const PassRefPtr<TimingFunction>, &Animation::timingFunction, &Animation::setTimingFunction, &Animation::isTimingFunctionSet, &Animation::clearTimingFunction, &Animation::initialAnimationTimingFunction, &StyleResolver::mapAnimationTimingFunction, &RenderStyle::accessAnimations, &RenderStyle::animations>::createHandler());
     1961    setPropertyHandler(CSSPropertyWebkitAnimationDelay, ApplyPropertyAnimation<double, &Animation::delay, &Animation::setDelay, &Animation::isDelaySet, &Animation::clearDelay, &Animation::initialAnimationDelay, &CSSToStyleMap::mapAnimationDelay, &RenderStyle::accessAnimations, &RenderStyle::animations>::createHandler());
     1962    setPropertyHandler(CSSPropertyWebkitAnimationDirection, ApplyPropertyAnimation<Animation::AnimationDirection, &Animation::direction, &Animation::setDirection, &Animation::isDirectionSet, &Animation::clearDirection, &Animation::initialAnimationDirection, &CSSToStyleMap::mapAnimationDirection, &RenderStyle::accessAnimations, &RenderStyle::animations>::createHandler());
     1963    setPropertyHandler(CSSPropertyWebkitAnimationDuration, ApplyPropertyAnimation<double, &Animation::duration, &Animation::setDuration, &Animation::isDurationSet, &Animation::clearDuration, &Animation::initialAnimationDuration, &CSSToStyleMap::mapAnimationDuration, &RenderStyle::accessAnimations, &RenderStyle::animations>::createHandler());
     1964    setPropertyHandler(CSSPropertyWebkitAnimationFillMode, ApplyPropertyAnimation<unsigned, &Animation::fillMode, &Animation::setFillMode, &Animation::isFillModeSet, &Animation::clearFillMode, &Animation::initialAnimationFillMode, &CSSToStyleMap::mapAnimationFillMode, &RenderStyle::accessAnimations, &RenderStyle::animations>::createHandler());
     1965    setPropertyHandler(CSSPropertyWebkitAnimationIterationCount, ApplyPropertyAnimation<double, &Animation::iterationCount, &Animation::setIterationCount, &Animation::isIterationCountSet, &Animation::clearIterationCount, &Animation::initialAnimationIterationCount, &CSSToStyleMap::mapAnimationIterationCount, &RenderStyle::accessAnimations, &RenderStyle::animations>::createHandler());
     1966    setPropertyHandler(CSSPropertyWebkitAnimationName, ApplyPropertyAnimation<const String&, &Animation::name, &Animation::setName, &Animation::isNameSet, &Animation::clearName, &Animation::initialAnimationName, &CSSToStyleMap::mapAnimationName, &RenderStyle::accessAnimations, &RenderStyle::animations>::createHandler());
     1967    setPropertyHandler(CSSPropertyWebkitAnimationPlayState, ApplyPropertyAnimation<EAnimPlayState, &Animation::playState, &Animation::setPlayState, &Animation::isPlayStateSet, &Animation::clearPlayState, &Animation::initialAnimationPlayState, &CSSToStyleMap::mapAnimationPlayState, &RenderStyle::accessAnimations, &RenderStyle::animations>::createHandler());
     1968    setPropertyHandler(CSSPropertyWebkitAnimationTimingFunction, ApplyPropertyAnimation<const PassRefPtr<TimingFunction>, &Animation::timingFunction, &Animation::setTimingFunction, &Animation::isTimingFunctionSet, &Animation::clearTimingFunction, &Animation::initialAnimationTimingFunction, &CSSToStyleMap::mapAnimationTimingFunction, &RenderStyle::accessAnimations, &RenderStyle::animations>::createHandler());
    19681969    setPropertyHandler(CSSPropertyWebkitAppearance, ApplyPropertyDefault<ControlPart, &RenderStyle::appearance, ControlPart, &RenderStyle::setAppearance, ControlPart, &RenderStyle::initialAppearance>::createHandler());
    19691970    setPropertyHandler(CSSPropertyWebkitAspectRatio, ApplyPropertyAspectRatio::createHandler());
    19701971    setPropertyHandler(CSSPropertyWebkitBackfaceVisibility, ApplyPropertyDefault<EBackfaceVisibility, &RenderStyle::backfaceVisibility, EBackfaceVisibility, &RenderStyle::setBackfaceVisibility, EBackfaceVisibility, &RenderStyle::initialBackfaceVisibility>::createHandler());
    19711972    setPropertyHandler(CSSPropertyWebkitBackgroundClip, CSSPropertyBackgroundClip);
    1972     setPropertyHandler(CSSPropertyWebkitBackgroundComposite, ApplyPropertyFillLayer<CompositeOperator, CSSPropertyWebkitBackgroundComposite, BackgroundFillLayer, &RenderStyle::accessBackgroundLayers, &RenderStyle::backgroundLayers, &FillLayer::isCompositeSet, &FillLayer::composite, &FillLayer::setComposite, &FillLayer::clearComposite, &FillLayer::initialFillComposite, &StyleResolver::mapFillComposite>::createHandler());
     1973    setPropertyHandler(CSSPropertyWebkitBackgroundComposite, ApplyPropertyFillLayer<CompositeOperator, CSSPropertyWebkitBackgroundComposite, BackgroundFillLayer, &RenderStyle::accessBackgroundLayers, &RenderStyle::backgroundLayers, &FillLayer::isCompositeSet, &FillLayer::composite, &FillLayer::setComposite, &FillLayer::clearComposite, &FillLayer::initialFillComposite, &CSSToStyleMap::mapFillComposite>::createHandler());
    19731974    setPropertyHandler(CSSPropertyWebkitBackgroundOrigin, CSSPropertyBackgroundOrigin);
    19741975    setPropertyHandler(CSSPropertyWebkitBackgroundSize, CSSPropertyBackgroundSize);
     
    20382039    setPropertyHandler(CSSPropertyWebkitMarqueeDirection, ApplyPropertyDefault<EMarqueeDirection, &RenderStyle::marqueeDirection, EMarqueeDirection, &RenderStyle::setMarqueeDirection, EMarqueeDirection, &RenderStyle::initialMarqueeDirection>::createHandler());
    20392040    setPropertyHandler(CSSPropertyWebkitMarqueeStyle, ApplyPropertyDefault<EMarqueeBehavior, &RenderStyle::marqueeBehavior, EMarqueeBehavior, &RenderStyle::setMarqueeBehavior, EMarqueeBehavior, &RenderStyle::initialMarqueeBehavior>::createHandler());
    2040     setPropertyHandler(CSSPropertyWebkitMaskAttachment, ApplyPropertyFillLayer<EFillAttachment, CSSPropertyWebkitMaskAttachment, MaskFillLayer, &RenderStyle::accessMaskLayers, &RenderStyle::maskLayers, &FillLayer::isAttachmentSet, &FillLayer::attachment, &FillLayer::setAttachment, &FillLayer::clearAttachment, &FillLayer::initialFillAttachment, &StyleResolver::mapFillAttachment>::createHandler());
     2041    setPropertyHandler(CSSPropertyWebkitMaskAttachment, ApplyPropertyFillLayer<EFillAttachment, CSSPropertyWebkitMaskAttachment, MaskFillLayer, &RenderStyle::accessMaskLayers, &RenderStyle::maskLayers, &FillLayer::isAttachmentSet, &FillLayer::attachment, &FillLayer::setAttachment, &FillLayer::clearAttachment, &FillLayer::initialFillAttachment, &CSSToStyleMap::mapFillAttachment>::createHandler());
    20412042    setPropertyHandler(CSSPropertyWebkitMaskBoxImage, ApplyPropertyBorderImage<Mask, CSSPropertyWebkitMaskBoxImage, &RenderStyle::maskBoxImage, &RenderStyle::setMaskBoxImage>::createHandler());
    20422043    setPropertyHandler(CSSPropertyWebkitMaskBoxImageOutset, ApplyPropertyBorderImageModifier<Mask, Outset>::createHandler());
     
    20452046    setPropertyHandler(CSSPropertyWebkitMaskBoxImageSource, ApplyPropertyBorderImageSource<CSSPropertyWebkitMaskBoxImageSource, &RenderStyle::maskBoxImageSource, &RenderStyle::setMaskBoxImageSource, &RenderStyle::initialMaskBoxImageSource>::createHandler());
    20462047    setPropertyHandler(CSSPropertyWebkitMaskBoxImageWidth, ApplyPropertyBorderImageModifier<Mask, Width>::createHandler());
    2047     setPropertyHandler(CSSPropertyWebkitMaskClip, ApplyPropertyFillLayer<EFillBox, CSSPropertyWebkitMaskClip, MaskFillLayer, &RenderStyle::accessMaskLayers, &RenderStyle::maskLayers, &FillLayer::isClipSet, &FillLayer::clip, &FillLayer::setClip, &FillLayer::clearClip, &FillLayer::initialFillClip, &StyleResolver::mapFillClip>::createHandler());
    2048     setPropertyHandler(CSSPropertyWebkitMaskComposite, ApplyPropertyFillLayer<CompositeOperator, CSSPropertyWebkitMaskComposite, MaskFillLayer, &RenderStyle::accessMaskLayers, &RenderStyle::maskLayers, &FillLayer::isCompositeSet, &FillLayer::composite, &FillLayer::setComposite, &FillLayer::clearComposite, &FillLayer::initialFillComposite, &StyleResolver::mapFillComposite>::createHandler());
    2049     setPropertyHandler(CSSPropertyWebkitMaskImage, ApplyPropertyFillLayer<StyleImage*, CSSPropertyWebkitMaskImage, MaskFillLayer, &RenderStyle::accessMaskLayers, &RenderStyle::maskLayers, &FillLayer::isImageSet, &FillLayer::image, &FillLayer::setImage, &FillLayer::clearImage, &FillLayer::initialFillImage, &StyleResolver::mapFillImage>::createHandler());
    2050     setPropertyHandler(CSSPropertyWebkitMaskOrigin, ApplyPropertyFillLayer<EFillBox, CSSPropertyWebkitMaskOrigin, MaskFillLayer, &RenderStyle::accessMaskLayers, &RenderStyle::maskLayers, &FillLayer::isOriginSet, &FillLayer::origin, &FillLayer::setOrigin, &FillLayer::clearOrigin, &FillLayer::initialFillOrigin, &StyleResolver::mapFillOrigin>::createHandler());
     2048    setPropertyHandler(CSSPropertyWebkitMaskClip, ApplyPropertyFillLayer<EFillBox, CSSPropertyWebkitMaskClip, MaskFillLayer, &RenderStyle::accessMaskLayers, &RenderStyle::maskLayers, &FillLayer::isClipSet, &FillLayer::clip, &FillLayer::setClip, &FillLayer::clearClip, &FillLayer::initialFillClip, &CSSToStyleMap::mapFillClip>::createHandler());
     2049    setPropertyHandler(CSSPropertyWebkitMaskComposite, ApplyPropertyFillLayer<CompositeOperator, CSSPropertyWebkitMaskComposite, MaskFillLayer, &RenderStyle::accessMaskLayers, &RenderStyle::maskLayers, &FillLayer::isCompositeSet, &FillLayer::composite, &FillLayer::setComposite, &FillLayer::clearComposite, &FillLayer::initialFillComposite, &CSSToStyleMap::mapFillComposite>::createHandler());
     2050    setPropertyHandler(CSSPropertyWebkitMaskImage, ApplyPropertyFillLayer<StyleImage*, CSSPropertyWebkitMaskImage, MaskFillLayer, &RenderStyle::accessMaskLayers, &RenderStyle::maskLayers, &FillLayer::isImageSet, &FillLayer::image, &FillLayer::setImage, &FillLayer::clearImage, &FillLayer::initialFillImage, &CSSToStyleMap::mapFillImage>::createHandler());
     2051    setPropertyHandler(CSSPropertyWebkitMaskOrigin, ApplyPropertyFillLayer<EFillBox, CSSPropertyWebkitMaskOrigin, MaskFillLayer, &RenderStyle::accessMaskLayers, &RenderStyle::maskLayers, &FillLayer::isOriginSet, &FillLayer::origin, &FillLayer::setOrigin, &FillLayer::clearOrigin, &FillLayer::initialFillOrigin, &CSSToStyleMap::mapFillOrigin>::createHandler());
    20512052    setPropertyHandler(CSSPropertyWebkitMaskPosition, ApplyPropertyExpanding<SuppressValue, CSSPropertyWebkitMaskPositionX, CSSPropertyWebkitMaskPositionY>::createHandler());
    2052     setPropertyHandler(CSSPropertyWebkitMaskPositionX, ApplyPropertyFillLayer<Length, CSSPropertyWebkitMaskPositionX, MaskFillLayer, &RenderStyle::accessMaskLayers, &RenderStyle::maskLayers, &FillLayer::isXPositionSet, &FillLayer::xPosition, &FillLayer::setXPosition, &FillLayer::clearXPosition, &FillLayer::initialFillXPosition, &StyleResolver::mapFillXPosition>::createHandler());
    2053     setPropertyHandler(CSSPropertyWebkitMaskPositionY, ApplyPropertyFillLayer<Length, CSSPropertyWebkitMaskPositionY, MaskFillLayer, &RenderStyle::accessMaskLayers, &RenderStyle::maskLayers, &FillLayer::isYPositionSet, &FillLayer::yPosition, &FillLayer::setYPosition, &FillLayer::clearYPosition, &FillLayer::initialFillYPosition, &StyleResolver::mapFillYPosition>::createHandler());
     2053    setPropertyHandler(CSSPropertyWebkitMaskPositionX, ApplyPropertyFillLayer<Length, CSSPropertyWebkitMaskPositionX, MaskFillLayer, &RenderStyle::accessMaskLayers, &RenderStyle::maskLayers, &FillLayer::isXPositionSet, &FillLayer::xPosition, &FillLayer::setXPosition, &FillLayer::clearXPosition, &FillLayer::initialFillXPosition, &CSSToStyleMap::mapFillXPosition>::createHandler());
     2054    setPropertyHandler(CSSPropertyWebkitMaskPositionY, ApplyPropertyFillLayer<Length, CSSPropertyWebkitMaskPositionY, MaskFillLayer, &RenderStyle::accessMaskLayers, &RenderStyle::maskLayers, &FillLayer::isYPositionSet, &FillLayer::yPosition, &FillLayer::setYPosition, &FillLayer::clearYPosition, &FillLayer::initialFillYPosition, &CSSToStyleMap::mapFillYPosition>::createHandler());
    20542055    setPropertyHandler(CSSPropertyWebkitMaskRepeat, ApplyPropertyExpanding<SuppressValue, CSSPropertyBackgroundRepeatX, CSSPropertyBackgroundRepeatY>::createHandler());
    2055     setPropertyHandler(CSSPropertyWebkitMaskRepeatX, ApplyPropertyFillLayer<EFillRepeat, CSSPropertyWebkitMaskRepeatX, MaskFillLayer, &RenderStyle::accessMaskLayers, &RenderStyle::maskLayers, &FillLayer::isRepeatXSet, &FillLayer::repeatX, &FillLayer::setRepeatX, &FillLayer::clearRepeatX, &FillLayer::initialFillRepeatX, &StyleResolver::mapFillRepeatX>::createHandler());
    2056     setPropertyHandler(CSSPropertyWebkitMaskRepeatY, ApplyPropertyFillLayer<EFillRepeat, CSSPropertyWebkitMaskRepeatY, MaskFillLayer, &RenderStyle::accessMaskLayers, &RenderStyle::maskLayers, &FillLayer::isRepeatYSet, &FillLayer::repeatY, &FillLayer::setRepeatY, &FillLayer::clearRepeatY, &FillLayer::initialFillRepeatY, &StyleResolver::mapFillRepeatY>::createHandler());
    2057     setPropertyHandler(CSSPropertyWebkitMaskSize, ApplyPropertyFillLayer<FillSize, CSSPropertyWebkitMaskSize, MaskFillLayer, &RenderStyle::accessMaskLayers, &RenderStyle::maskLayers, &FillLayer::isSizeSet, &FillLayer::size, &FillLayer::setSize, &FillLayer::clearSize, &FillLayer::initialFillSize, &StyleResolver::mapFillSize>::createHandler());
     2056    setPropertyHandler(CSSPropertyWebkitMaskRepeatX, ApplyPropertyFillLayer<EFillRepeat, CSSPropertyWebkitMaskRepeatX, MaskFillLayer, &RenderStyle::accessMaskLayers, &RenderStyle::maskLayers, &FillLayer::isRepeatXSet, &FillLayer::repeatX, &FillLayer::setRepeatX, &FillLayer::clearRepeatX, &FillLayer::initialFillRepeatX, &CSSToStyleMap::mapFillRepeatX>::createHandler());
     2057    setPropertyHandler(CSSPropertyWebkitMaskRepeatY, ApplyPropertyFillLayer<EFillRepeat, CSSPropertyWebkitMaskRepeatY, MaskFillLayer, &RenderStyle::accessMaskLayers, &RenderStyle::maskLayers, &FillLayer::isRepeatYSet, &FillLayer::repeatY, &FillLayer::setRepeatY, &FillLayer::clearRepeatY, &FillLayer::initialFillRepeatY, &CSSToStyleMap::mapFillRepeatY>::createHandler());
     2058    setPropertyHandler(CSSPropertyWebkitMaskSize, ApplyPropertyFillLayer<FillSize, CSSPropertyWebkitMaskSize, MaskFillLayer, &RenderStyle::accessMaskLayers, &RenderStyle::maskLayers, &FillLayer::isSizeSet, &FillLayer::size, &FillLayer::setSize, &FillLayer::clearSize, &FillLayer::initialFillSize, &CSSToStyleMap::mapFillSize>::createHandler());
    20582059    setPropertyHandler(CSSPropertyWebkitNbspMode, ApplyPropertyDefault<ENBSPMode, &RenderStyle::nbspMode, ENBSPMode, &RenderStyle::setNBSPMode, ENBSPMode, &RenderStyle::initialNBSPMode>::createHandler());
    20592060    setPropertyHandler(CSSPropertyWebkitPerspectiveOrigin, ApplyPropertyExpanding<SuppressValue, CSSPropertyWebkitPerspectiveOriginX, CSSPropertyWebkitPerspectiveOriginY>::createHandler());
     
    20812082    setPropertyHandler(CSSPropertyWebkitTransformOriginZ, ApplyPropertyComputeLength<float, &RenderStyle::transformOriginZ, &RenderStyle::setTransformOriginZ, &RenderStyle::initialTransformOriginZ>::createHandler());
    20822083    setPropertyHandler(CSSPropertyWebkitTransformStyle, ApplyPropertyDefault<ETransformStyle3D, &RenderStyle::transformStyle3D, ETransformStyle3D, &RenderStyle::setTransformStyle3D, ETransformStyle3D, &RenderStyle::initialTransformStyle3D>::createHandler());
    2083     setPropertyHandler(CSSPropertyWebkitTransitionDelay, ApplyPropertyAnimation<double, &Animation::delay, &Animation::setDelay, &Animation::isDelaySet, &Animation::clearDelay, &Animation::initialAnimationDelay, &StyleResolver::mapAnimationDelay, &RenderStyle::accessTransitions, &RenderStyle::transitions>::createHandler());
    2084     setPropertyHandler(CSSPropertyWebkitTransitionDuration, ApplyPropertyAnimation<double, &Animation::duration, &Animation::setDuration, &Animation::isDurationSet, &Animation::clearDuration, &Animation::initialAnimationDuration, &StyleResolver::mapAnimationDuration, &RenderStyle::accessTransitions, &RenderStyle::transitions>::createHandler());
    2085     setPropertyHandler(CSSPropertyWebkitTransitionProperty, ApplyPropertyAnimation<CSSPropertyID, &Animation::property, &Animation::setProperty, &Animation::isPropertySet, &Animation::clearProperty, &Animation::initialAnimationProperty, &StyleResolver::mapAnimationProperty, &RenderStyle::accessTransitions, &RenderStyle::transitions>::createHandler());
    2086     setPropertyHandler(CSSPropertyWebkitTransitionTimingFunction, ApplyPropertyAnimation<const PassRefPtr<TimingFunction>, &Animation::timingFunction, &Animation::setTimingFunction, &Animation::isTimingFunctionSet, &Animation::clearTimingFunction, &Animation::initialAnimationTimingFunction, &StyleResolver::mapAnimationTimingFunction, &RenderStyle::accessTransitions, &RenderStyle::transitions>::createHandler());
     2084    setPropertyHandler(CSSPropertyWebkitTransitionDelay, ApplyPropertyAnimation<double, &Animation::delay, &Animation::setDelay, &Animation::isDelaySet, &Animation::clearDelay, &Animation::initialAnimationDelay, &CSSToStyleMap::mapAnimationDelay, &RenderStyle::accessTransitions, &RenderStyle::transitions>::createHandler());
     2085    setPropertyHandler(CSSPropertyWebkitTransitionDuration, ApplyPropertyAnimation<double, &Animation::duration, &Animation::setDuration, &Animation::isDurationSet, &Animation::clearDuration, &Animation::initialAnimationDuration, &CSSToStyleMap::mapAnimationDuration, &RenderStyle::accessTransitions, &RenderStyle::transitions>::createHandler());
     2086    setPropertyHandler(CSSPropertyWebkitTransitionProperty, ApplyPropertyAnimation<CSSPropertyID, &Animation::property, &Animation::setProperty, &Animation::isPropertySet, &Animation::clearProperty, &Animation::initialAnimationProperty, &CSSToStyleMap::mapAnimationProperty, &RenderStyle::accessTransitions, &RenderStyle::transitions>::createHandler());
     2087    setPropertyHandler(CSSPropertyWebkitTransitionTimingFunction, ApplyPropertyAnimation<const PassRefPtr<TimingFunction>, &Animation::timingFunction, &Animation::setTimingFunction, &Animation::isTimingFunctionSet, &Animation::clearTimingFunction, &Animation::initialAnimationTimingFunction, &CSSToStyleMap::mapAnimationTimingFunction, &RenderStyle::accessTransitions, &RenderStyle::transitions>::createHandler());
    20872088    setPropertyHandler(CSSPropertyWebkitUserDrag, ApplyPropertyDefault<EUserDrag, &RenderStyle::userDrag, EUserDrag, &RenderStyle::setUserDrag, EUserDrag, &RenderStyle::initialUserDrag>::createHandler());
    20882089    setPropertyHandler(CSSPropertyWebkitUserModify, ApplyPropertyDefault<EUserModify, &RenderStyle::userModify, EUserModify, &RenderStyle::setUserModify, EUserModify, &RenderStyle::initialUserModify>::createHandler());
  • trunk/Source/WebCore/css/StyleResolver.cpp

    r121129 r121164  
    99 * Copyright (c) 2011, Code Aurora Forum. All rights reserved.
    1010 * Copyright (C) Research In Motion Limited 2011. All rights reserved.
     11 * Copyright (C) 2012 Google Inc. All rights reserved.
    1112 *
    1213 * This library is free software; you can redistribute it and/or
     
    375376    , m_scopeStackParentBoundsIndex(0)
    376377#endif
     378    , m_styleMap(this)
    377379{
    378380    Element* root = document->documentElement();
     
    37413743        NinePieceImage mask;
    37423744        mask.setMaskDefaults();
    3743         mapNinePieceImage(id, reflectValue->mask(), mask);
     3745        m_styleMap.mapNinePieceImage(id, reflectValue->mask(), mask);
    37443746        reflection->setMask(mask);
    37453747
     
    44294431}
    44304432
    4431 void StyleResolver::mapFillAttachment(CSSPropertyID, FillLayer* layer, CSSValue* value)
    4432 {
    4433     if (value->isInitialValue()) {
    4434         layer->setAttachment(FillLayer::initialFillAttachment(layer->type()));
    4435         return;
    4436     }
    4437 
    4438     if (!value->isPrimitiveValue())
    4439         return;
    4440 
    4441     CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(value);
    4442     switch (primitiveValue->getIdent()) {
    4443     case CSSValueFixed:
    4444         layer->setAttachment(FixedBackgroundAttachment);
    4445         break;
    4446     case CSSValueScroll:
    4447         layer->setAttachment(ScrollBackgroundAttachment);
    4448         break;
    4449     case CSSValueLocal:
    4450         layer->setAttachment(LocalBackgroundAttachment);
    4451         break;
    4452     default:
    4453         return;
    4454     }
    4455 }
    4456 
    4457 void StyleResolver::mapFillClip(CSSPropertyID, FillLayer* layer, CSSValue* value)
    4458 {
    4459     if (value->isInitialValue()) {
    4460         layer->setClip(FillLayer::initialFillClip(layer->type()));
    4461         return;
    4462     }
    4463 
    4464     if (!value->isPrimitiveValue())
    4465         return;
    4466 
    4467     CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(value);
    4468     layer->setClip(*primitiveValue);
    4469 }
    4470 
    4471 void StyleResolver::mapFillComposite(CSSPropertyID, FillLayer* layer, CSSValue* value)
    4472 {
    4473     if (value->isInitialValue()) {
    4474         layer->setComposite(FillLayer::initialFillComposite(layer->type()));
    4475         return;
    4476     }
    4477 
    4478     if (!value->isPrimitiveValue())
    4479         return;
    4480 
    4481     CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(value);
    4482     layer->setComposite(*primitiveValue);
    4483 }
    4484 
    4485 void StyleResolver::mapFillOrigin(CSSPropertyID, FillLayer* layer, CSSValue* value)
    4486 {
    4487     if (value->isInitialValue()) {
    4488         layer->setOrigin(FillLayer::initialFillOrigin(layer->type()));
    4489         return;
    4490     }
    4491 
    4492     if (!value->isPrimitiveValue())
    4493         return;
    4494 
    4495     CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(value);
    4496     layer->setOrigin(*primitiveValue);
    4497 }
    4498 
    44994433PassRefPtr<StyleImage> StyleResolver::styleImage(CSSPropertyID property, CSSValue* value)
    45004434{
     
    45394473}
    45404474#endif
    4541 
    4542 void StyleResolver::mapFillImage(CSSPropertyID property, FillLayer* layer, CSSValue* value)
    4543 {
    4544     if (value->isInitialValue()) {
    4545         layer->setImage(FillLayer::initialFillImage(layer->type()));
    4546         return;
    4547     }
    4548 
    4549     layer->setImage(styleImage(property, value));
    4550 }
    4551 
    4552 void StyleResolver::mapFillRepeatX(CSSPropertyID, FillLayer* layer, CSSValue* value)
    4553 {
    4554     if (value->isInitialValue()) {
    4555         layer->setRepeatX(FillLayer::initialFillRepeatX(layer->type()));
    4556         return;
    4557     }
    4558 
    4559     if (!value->isPrimitiveValue())
    4560         return;
    4561 
    4562     CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(value);
    4563     layer->setRepeatX(*primitiveValue);
    4564 }
    4565 
    4566 void StyleResolver::mapFillRepeatY(CSSPropertyID, FillLayer* layer, CSSValue* value)
    4567 {
    4568     if (value->isInitialValue()) {
    4569         layer->setRepeatY(FillLayer::initialFillRepeatY(layer->type()));
    4570         return;
    4571     }
    4572 
    4573     if (!value->isPrimitiveValue())
    4574         return;
    4575 
    4576     CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(value);
    4577     layer->setRepeatY(*primitiveValue);
    4578 }
    4579 
    4580 void StyleResolver::mapFillSize(CSSPropertyID, FillLayer* layer, CSSValue* value)
    4581 {
    4582     if (!value->isPrimitiveValue()) {
    4583         layer->setSizeType(SizeNone);
    4584         return;
    4585     }
    4586 
    4587     CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(value);
    4588     if (primitiveValue->getIdent() == CSSValueContain)
    4589         layer->setSizeType(Contain);
    4590     else if (primitiveValue->getIdent() == CSSValueCover)
    4591         layer->setSizeType(Cover);
    4592     else
    4593         layer->setSizeType(SizeLength);
    4594 
    4595     LengthSize b = FillLayer::initialFillSizeLength(layer->type());
    4596 
    4597     if (value->isInitialValue() || primitiveValue->getIdent() == CSSValueContain || primitiveValue->getIdent() == CSSValueCover) {
    4598         layer->setSizeLength(b);
    4599         return;
    4600     }
    4601 
    4602     float zoomFactor = m_style->effectiveZoom();
    4603 
    4604     Length firstLength;
    4605     Length secondLength;
    4606 
    4607     if (Pair* pair = primitiveValue->getPairValue()) {
    4608         CSSPrimitiveValue* first = static_cast<CSSPrimitiveValue*>(pair->first());
    4609         CSSPrimitiveValue* second = static_cast<CSSPrimitiveValue*>(pair->second());
    4610         firstLength = first->convertToLength<AnyConversion>(style(), m_rootElementStyle, zoomFactor);
    4611         secondLength = second->convertToLength<AnyConversion>(style(), m_rootElementStyle, zoomFactor);
    4612     } else {
    4613         firstLength = primitiveValue->convertToLength<AnyConversion>(style(), m_rootElementStyle, zoomFactor);
    4614         secondLength = Length();
    4615     }
    4616 
    4617     if (firstLength.isUndefined() || secondLength.isUndefined())
    4618         return;
    4619 
    4620     b.setWidth(firstLength);
    4621     b.setHeight(secondLength);
    4622     layer->setSizeLength(b);
    4623 }
    4624 
    4625 void StyleResolver::mapFillXPosition(CSSPropertyID, FillLayer* layer, CSSValue* value)
    4626 {
    4627     if (value->isInitialValue()) {
    4628         layer->setXPosition(FillLayer::initialFillXPosition(layer->type()));
    4629         return;
    4630     }
    4631 
    4632     if (!value->isPrimitiveValue())
    4633         return;
    4634 
    4635     float zoomFactor = m_style->effectiveZoom();
    4636 
    4637     CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(value);
    4638     Length length;
    4639     if (primitiveValue->isLength())
    4640         length = primitiveValue->computeLength<Length>(style(), m_rootElementStyle, zoomFactor);
    4641     else if (primitiveValue->isPercentage())
    4642         length = Length(primitiveValue->getDoubleValue(), Percent);
    4643     else if (primitiveValue->isCalculatedPercentageWithLength())
    4644         length = Length(primitiveValue->cssCalcValue()->toCalcValue(style(), m_rootElementStyle, zoomFactor));
    4645     else if (primitiveValue->isViewportPercentageLength())
    4646         length = primitiveValue->viewportPercentageLength();
    4647     else
    4648         return;
    4649     layer->setXPosition(length);
    4650 }
    4651 
    4652 void StyleResolver::mapFillYPosition(CSSPropertyID, FillLayer* layer, CSSValue* value)
    4653 {
    4654     if (value->isInitialValue()) {
    4655         layer->setYPosition(FillLayer::initialFillYPosition(layer->type()));
    4656         return;
    4657     }
    4658 
    4659     if (!value->isPrimitiveValue())
    4660         return;
    4661 
    4662     float zoomFactor = m_style->effectiveZoom();
    4663 
    4664     CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(value);
    4665     Length length;
    4666     if (primitiveValue->isLength())
    4667         length = primitiveValue->computeLength<Length>(style(), m_rootElementStyle, zoomFactor);
    4668     else if (primitiveValue->isPercentage())
    4669         length = Length(primitiveValue->getDoubleValue(), Percent);
    4670     else if (primitiveValue->isCalculatedPercentageWithLength())
    4671         length = Length(primitiveValue->cssCalcValue()->toCalcValue(style(), m_rootElementStyle, zoomFactor));
    4672     else if (primitiveValue->isViewportPercentageLength())
    4673         length = primitiveValue->viewportPercentageLength();
    4674     else
    4675         return;
    4676     layer->setYPosition(length);
    4677 }
    4678 
    4679 void StyleResolver::mapAnimationDelay(Animation* animation, CSSValue* value)
    4680 {
    4681     if (value->isInitialValue()) {
    4682         animation->setDelay(Animation::initialAnimationDelay());
    4683         return;
    4684     }
    4685 
    4686     if (!value->isPrimitiveValue())
    4687         return;
    4688 
    4689     CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(value);
    4690     animation->setDelay(primitiveValue->computeTime<float, CSSPrimitiveValue::Seconds>());
    4691 }
    4692 
    4693 void StyleResolver::mapAnimationDirection(Animation* layer, CSSValue* value)
    4694 {
    4695     if (value->isInitialValue()) {
    4696         layer->setDirection(Animation::initialAnimationDirection());
    4697         return;
    4698     }
    4699 
    4700     if (!value->isPrimitiveValue())
    4701         return;
    4702 
    4703     CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(value);
    4704     switch (primitiveValue->getIdent()) {
    4705     case CSSValueNormal:
    4706         layer->setDirection(Animation::AnimationDirectionNormal);
    4707         break;
    4708     case CSSValueAlternate:
    4709         layer->setDirection(Animation::AnimationDirectionAlternate);
    4710         break;
    4711     case CSSValueReverse:
    4712         layer->setDirection(Animation::AnimationDirectionReverse);
    4713         break;
    4714     case CSSValueAlternateReverse:
    4715         layer->setDirection(Animation::AnimationDirectionAlternateReverse);
    4716         break;
    4717     }
    4718 }
    4719 
    4720 void StyleResolver::mapAnimationDuration(Animation* animation, CSSValue* value)
    4721 {
    4722     if (value->isInitialValue()) {
    4723         animation->setDuration(Animation::initialAnimationDuration());
    4724         return;
    4725     }
    4726 
    4727     if (!value->isPrimitiveValue())
    4728         return;
    4729 
    4730     CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(value);
    4731     animation->setDuration(primitiveValue->computeTime<float, CSSPrimitiveValue::Seconds>());
    4732 }
    4733 
    4734 void StyleResolver::mapAnimationFillMode(Animation* layer, CSSValue* value)
    4735 {
    4736     if (value->isInitialValue()) {
    4737         layer->setFillMode(Animation::initialAnimationFillMode());
    4738         return;
    4739     }
    4740 
    4741     if (!value->isPrimitiveValue())
    4742         return;
    4743 
    4744     CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(value);
    4745     switch (primitiveValue->getIdent()) {
    4746     case CSSValueNone:
    4747         layer->setFillMode(AnimationFillModeNone);
    4748         break;
    4749     case CSSValueForwards:
    4750         layer->setFillMode(AnimationFillModeForwards);
    4751         break;
    4752     case CSSValueBackwards:
    4753         layer->setFillMode(AnimationFillModeBackwards);
    4754         break;
    4755     case CSSValueBoth:
    4756         layer->setFillMode(AnimationFillModeBoth);
    4757         break;
    4758     }
    4759 }
    4760 
    4761 void StyleResolver::mapAnimationIterationCount(Animation* animation, CSSValue* value)
    4762 {
    4763     if (value->isInitialValue()) {
    4764         animation->setIterationCount(Animation::initialAnimationIterationCount());
    4765         return;
    4766     }
    4767 
    4768     if (!value->isPrimitiveValue())
    4769         return;
    4770 
    4771     CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(value);
    4772     if (primitiveValue->getIdent() == CSSValueInfinite)
    4773         animation->setIterationCount(-1);
    4774     else
    4775         animation->setIterationCount(primitiveValue->getFloatValue());
    4776 }
    4777 
    4778 void StyleResolver::mapAnimationName(Animation* layer, CSSValue* value)
    4779 {
    4780     if (value->isInitialValue()) {
    4781         layer->setName(Animation::initialAnimationName());
    4782         return;
    4783     }
    4784 
    4785     if (!value->isPrimitiveValue())
    4786         return;
    4787 
    4788     CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(value);
    4789     if (primitiveValue->getIdent() == CSSValueNone)
    4790         layer->setIsNoneAnimation(true);
    4791     else
    4792         layer->setName(primitiveValue->getStringValue());
    4793 }
    4794 
    4795 void StyleResolver::mapAnimationPlayState(Animation* layer, CSSValue* value)
    4796 {
    4797     if (value->isInitialValue()) {
    4798         layer->setPlayState(Animation::initialAnimationPlayState());
    4799         return;
    4800     }
    4801 
    4802     if (!value->isPrimitiveValue())
    4803         return;
    4804 
    4805     CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(value);
    4806     EAnimPlayState playState = (primitiveValue->getIdent() == CSSValuePaused) ? AnimPlayStatePaused : AnimPlayStatePlaying;
    4807     layer->setPlayState(playState);
    4808 }
    4809 
    4810 void StyleResolver::mapAnimationProperty(Animation* animation, CSSValue* value)
    4811 {
    4812     if (value->isInitialValue()) {
    4813         animation->setAnimationMode(Animation::AnimateAll);
    4814         animation->setProperty(CSSPropertyInvalid);
    4815         return;
    4816     }
    4817 
    4818     if (!value->isPrimitiveValue())
    4819         return;
    4820 
    4821     CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(value);
    4822     if (primitiveValue->getIdent() == CSSValueAll) {
    4823         animation->setAnimationMode(Animation::AnimateAll);
    4824         animation->setProperty(CSSPropertyInvalid);
    4825     } else if (primitiveValue->getIdent() == CSSValueNone) {
    4826         animation->setAnimationMode(Animation::AnimateNone);
    4827         animation->setProperty(CSSPropertyInvalid);
    4828     } else {
    4829         animation->setAnimationMode(Animation::AnimateSingleProperty);
    4830         animation->setProperty(static_cast<CSSPropertyID>(primitiveValue->getIdent()));
    4831     }
    4832 }
    4833 
    4834 void StyleResolver::mapAnimationTimingFunction(Animation* animation, CSSValue* value)
    4835 {
    4836     if (value->isInitialValue()) {
    4837         animation->setTimingFunction(Animation::initialAnimationTimingFunction());
    4838         return;
    4839     }
    4840 
    4841     if (value->isPrimitiveValue()) {
    4842         CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(value);
    4843         switch (primitiveValue->getIdent()) {
    4844         case CSSValueLinear:
    4845             animation->setTimingFunction(LinearTimingFunction::create());
    4846             break;
    4847         case CSSValueEase:
    4848             animation->setTimingFunction(CubicBezierTimingFunction::create());
    4849             break;
    4850         case CSSValueEaseIn:
    4851             animation->setTimingFunction(CubicBezierTimingFunction::create(0.42, 0.0, 1.0, 1.0));
    4852             break;
    4853         case CSSValueEaseOut:
    4854             animation->setTimingFunction(CubicBezierTimingFunction::create(0.0, 0.0, 0.58, 1.0));
    4855             break;
    4856         case CSSValueEaseInOut:
    4857             animation->setTimingFunction(CubicBezierTimingFunction::create(0.42, 0.0, 0.58, 1.0));
    4858             break;
    4859         case CSSValueStepStart:
    4860             animation->setTimingFunction(StepsTimingFunction::create(1, true));
    4861             break;
    4862         case CSSValueStepEnd:
    4863             animation->setTimingFunction(StepsTimingFunction::create(1, false));
    4864             break;
    4865         }
    4866         return;
    4867     }
    4868 
    4869     if (value->isCubicBezierTimingFunctionValue()) {
    4870         CSSCubicBezierTimingFunctionValue* cubicTimingFunction = static_cast<CSSCubicBezierTimingFunctionValue*>(value);
    4871         animation->setTimingFunction(CubicBezierTimingFunction::create(cubicTimingFunction->x1(), cubicTimingFunction->y1(), cubicTimingFunction->x2(), cubicTimingFunction->y2()));
    4872     } else if (value->isStepsTimingFunctionValue()) {
    4873         CSSStepsTimingFunctionValue* stepsTimingFunction = static_cast<CSSStepsTimingFunctionValue*>(value);
    4874         animation->setTimingFunction(StepsTimingFunction::create(stepsTimingFunction->numberOfSteps(), stepsTimingFunction->stepAtStart()));
    4875     } else if (value->isLinearTimingFunctionValue())
    4876         animation->setTimingFunction(LinearTimingFunction::create());
    4877 }
    4878 
    4879 void StyleResolver::mapNinePieceImage(CSSPropertyID property, CSSValue* value, NinePieceImage& image)
    4880 {
    4881     // If we're not a value list, then we are "none" and don't need to alter the empty image at all.
    4882     if (!value || !value->isValueList())
    4883         return;
    4884 
    4885     // Retrieve the border image value.
    4886     CSSValueList* borderImage = static_cast<CSSValueList*>(value);
    4887 
    4888     // Set the image (this kicks off the load).
    4889     CSSPropertyID imageProperty;
    4890     if (property == CSSPropertyWebkitBorderImage)
    4891         imageProperty = CSSPropertyBorderImageSource;
    4892     else if (property == CSSPropertyWebkitMaskBoxImage)
    4893         imageProperty = CSSPropertyWebkitMaskBoxImageSource;
    4894     else
    4895         imageProperty = property;
    4896 
    4897     for (unsigned i = 0 ; i < borderImage->length() ; ++i) {
    4898         CSSValue* current = borderImage->item(i);
    4899 
    4900         if (current->isImageValue() || current->isImageGeneratorValue()
    4901 #if ENABLE(CSS_IMAGE_SET)
    4902             || current->isImageSetValue()
    4903 #endif
    4904             )
    4905             image.setImage(styleImage(imageProperty, current));
    4906         else if (current->isBorderImageSliceValue())
    4907             mapNinePieceImageSlice(current, image);
    4908         else if (current->isValueList()) {
    4909             CSSValueList* slashList = static_cast<CSSValueList*>(current);
    4910             // Map in the image slices.
    4911             if (slashList->item(0) && slashList->item(0)->isBorderImageSliceValue())
    4912                 mapNinePieceImageSlice(slashList->item(0), image);
    4913 
    4914             // Map in the border slices.
    4915             if (slashList->item(1))
    4916                 image.setBorderSlices(mapNinePieceImageQuad(slashList->item(1)));
    4917 
    4918             // Map in the outset.
    4919             if (slashList->item(2))
    4920                 image.setOutset(mapNinePieceImageQuad(slashList->item(2)));
    4921         } else if (current->isPrimitiveValue()) {
    4922             // Set the appropriate rules for stretch/round/repeat of the slices.
    4923             mapNinePieceImageRepeat(current, image);
    4924         }
    4925     }
    4926 
    4927     if (property == CSSPropertyWebkitBorderImage) {
    4928         // We have to preserve the legacy behavior of -webkit-border-image and make the border slices
    4929         // also set the border widths. We don't need to worry about percentages, since we don't even support
    4930         // those on real borders yet.
    4931         if (image.borderSlices().top().isFixed())
    4932             style()->setBorderTopWidth(image.borderSlices().top().value());
    4933         if (image.borderSlices().right().isFixed())
    4934             style()->setBorderRightWidth(image.borderSlices().right().value());
    4935         if (image.borderSlices().bottom().isFixed())
    4936             style()->setBorderBottomWidth(image.borderSlices().bottom().value());
    4937         if (image.borderSlices().left().isFixed())
    4938             style()->setBorderLeftWidth(image.borderSlices().left().value());
    4939     }
    4940 }
    4941 
    4942 void StyleResolver::mapNinePieceImageSlice(CSSValue* value, NinePieceImage& image)
    4943 {
    4944     if (!value || !value->isBorderImageSliceValue())
    4945         return;
    4946 
    4947     // Retrieve the border image value.
    4948     CSSBorderImageSliceValue* borderImageSlice = static_cast<CSSBorderImageSliceValue*>(value);
    4949 
    4950     // Set up a length box to represent our image slices.
    4951     LengthBox box;
    4952     Quad* slices = borderImageSlice->slices();
    4953     if (slices->top()->isPercentage())
    4954         box.m_top = Length(slices->top()->getDoubleValue(), Percent);
    4955     else
    4956         box.m_top = Length(slices->top()->getIntValue(CSSPrimitiveValue::CSS_NUMBER), Fixed);
    4957     if (slices->bottom()->isPercentage())
    4958         box.m_bottom = Length(slices->bottom()->getDoubleValue(), Percent);
    4959     else
    4960         box.m_bottom = Length((int)slices->bottom()->getFloatValue(CSSPrimitiveValue::CSS_NUMBER), Fixed);
    4961     if (slices->left()->isPercentage())
    4962         box.m_left = Length(slices->left()->getDoubleValue(), Percent);
    4963     else
    4964         box.m_left = Length(slices->left()->getIntValue(CSSPrimitiveValue::CSS_NUMBER), Fixed);
    4965     if (slices->right()->isPercentage())
    4966         box.m_right = Length(slices->right()->getDoubleValue(), Percent);
    4967     else
    4968         box.m_right = Length(slices->right()->getIntValue(CSSPrimitiveValue::CSS_NUMBER), Fixed);
    4969     image.setImageSlices(box);
    4970 
    4971     // Set our fill mode.
    4972     image.setFill(borderImageSlice->m_fill);
    4973 }
    4974 
    4975 LengthBox StyleResolver::mapNinePieceImageQuad(CSSValue* value)
    4976 {
    4977     if (!value || !value->isPrimitiveValue())
    4978         return LengthBox();
    4979 
    4980     // Get our zoom value.
    4981     float zoom = useSVGZoomRules() ? 1.0f : style()->effectiveZoom();
    4982 
    4983     // Retrieve the primitive value.
    4984     CSSPrimitiveValue* borderWidths = static_cast<CSSPrimitiveValue*>(value);
    4985 
    4986     // Set up a length box to represent our image slices.
    4987     LengthBox box; // Defaults to 'auto' so we don't have to handle that explicitly below.
    4988     Quad* slices = borderWidths->getQuadValue();
    4989     if (slices->top()->isNumber())
    4990         box.m_top = Length(slices->top()->getIntValue(), Relative);
    4991     else if (slices->top()->isPercentage())
    4992         box.m_top = Length(slices->top()->getDoubleValue(CSSPrimitiveValue::CSS_PERCENTAGE), Percent);
    4993     else if (slices->top()->getIdent() != CSSValueAuto)
    4994         box.m_top = slices->top()->computeLength<Length>(style(), rootElementStyle(), zoom);
    4995 
    4996     if (slices->right()->isNumber())
    4997         box.m_right = Length(slices->right()->getIntValue(), Relative);
    4998     else if (slices->right()->isPercentage())
    4999         box.m_right = Length(slices->right()->getDoubleValue(CSSPrimitiveValue::CSS_PERCENTAGE), Percent);
    5000     else if (slices->right()->getIdent() != CSSValueAuto)
    5001         box.m_right = slices->right()->computeLength<Length>(style(), rootElementStyle(), zoom);
    5002 
    5003     if (slices->bottom()->isNumber())
    5004         box.m_bottom = Length(slices->bottom()->getIntValue(), Relative);
    5005     else if (slices->bottom()->isPercentage())
    5006         box.m_bottom = Length(slices->bottom()->getDoubleValue(CSSPrimitiveValue::CSS_PERCENTAGE), Percent);
    5007     else if (slices->bottom()->getIdent() != CSSValueAuto)
    5008         box.m_bottom = slices->bottom()->computeLength<Length>(style(), rootElementStyle(), zoom);
    5009 
    5010     if (slices->left()->isNumber())
    5011         box.m_left = Length(slices->left()->getIntValue(), Relative);
    5012     else if (slices->left()->isPercentage())
    5013         box.m_left = Length(slices->left()->getDoubleValue(CSSPrimitiveValue::CSS_PERCENTAGE), Percent);
    5014     else if (slices->left()->getIdent() != CSSValueAuto)
    5015         box.m_left = slices->left()->computeLength<Length>(style(), rootElementStyle(), zoom);
    5016 
    5017     return box;
    5018 }
    5019 
    5020 void StyleResolver::mapNinePieceImageRepeat(CSSValue* value, NinePieceImage& image)
    5021 {
    5022     if (!value || !value->isPrimitiveValue())
    5023         return;
    5024 
    5025     CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(value);
    5026     Pair* pair = primitiveValue->getPairValue();
    5027     if (!pair || !pair->first() || !pair->second())
    5028         return;
    5029 
    5030     int firstIdentifier = pair->first()->getIdent();
    5031     int secondIdentifier = pair->second()->getIdent();
    5032 
    5033     ENinePieceImageRule horizontalRule;
    5034     switch (firstIdentifier) {
    5035     case CSSValueStretch:
    5036         horizontalRule = StretchImageRule;
    5037         break;
    5038     case CSSValueRound:
    5039         horizontalRule = RoundImageRule;
    5040         break;
    5041     case CSSValueSpace:
    5042         horizontalRule = SpaceImageRule;
    5043         break;
    5044     default: // CSSValueRepeat
    5045         horizontalRule = RepeatImageRule;
    5046         break;
    5047     }
    5048     image.setHorizontalRule(horizontalRule);
    5049 
    5050     ENinePieceImageRule verticalRule;
    5051     switch (secondIdentifier) {
    5052     case CSSValueStretch:
    5053         verticalRule = StretchImageRule;
    5054         break;
    5055     case CSSValueRound:
    5056         verticalRule = RoundImageRule;
    5057         break;
    5058     case CSSValueSpace:
    5059         verticalRule = SpaceImageRule;
    5060         break;
    5061     default: // CSSValueRepeat
    5062         verticalRule = RepeatImageRule;
    5063         break;
    5064     }
    5065     image.setVerticalRule(verticalRule);
    5066 }
    50674475
    50684476void StyleResolver::checkForTextSizeAdjust()
  • trunk/Source/WebCore/css/StyleResolver.h

    r120816 r121164  
    2424
    2525#include "CSSRule.h"
     26#include "CSSToStyleMap.h"
    2627#include "CSSValueList.h"
    2728#include "LinkHash.h"
     
    412413    static Length convertToFloatLength(CSSPrimitiveValue*, RenderStyle*, RenderStyle* rootStyle, double multiplier = 1);
    413414
     415    CSSToStyleMap* styleMap() { return &m_styleMap; }
     416   
    414417private:
    415418    static RenderStyle* s_styleNotYetAvailable;
     
    420423    void cacheBorderAndBackground();
    421424
    422     void mapFillAttachment(CSSPropertyID, FillLayer*, CSSValue*);
    423     void mapFillClip(CSSPropertyID, FillLayer*, CSSValue*);
    424     void mapFillComposite(CSSPropertyID, FillLayer*, CSSValue*);
    425     void mapFillOrigin(CSSPropertyID, FillLayer*, CSSValue*);
    426     void mapFillImage(CSSPropertyID, FillLayer*, CSSValue*);
    427     void mapFillRepeatX(CSSPropertyID, FillLayer*, CSSValue*);
    428     void mapFillRepeatY(CSSPropertyID, FillLayer*, CSSValue*);
    429     void mapFillSize(CSSPropertyID, FillLayer*, CSSValue*);
    430     void mapFillXPosition(CSSPropertyID, FillLayer*, CSSValue*);
    431     void mapFillYPosition(CSSPropertyID, FillLayer*, CSSValue*);
    432 
    433     void mapAnimationDelay(Animation*, CSSValue*);
    434     void mapAnimationDirection(Animation*, CSSValue*);
    435     void mapAnimationDuration(Animation*, CSSValue*);
    436     void mapAnimationFillMode(Animation*, CSSValue*);
    437     void mapAnimationIterationCount(Animation*, CSSValue*);
    438     void mapAnimationName(Animation*, CSSValue*);
    439     void mapAnimationPlayState(Animation*, CSSValue*);
    440     void mapAnimationProperty(Animation*, CSSValue*);
    441     void mapAnimationTimingFunction(Animation*, CSSValue*);
    442 
    443 public:
    444     void mapNinePieceImage(CSSPropertyID, CSSValue*, NinePieceImage&);
    445     void mapNinePieceImageSlice(CSSValue*, NinePieceImage&);
    446     LengthBox mapNinePieceImageQuad(CSSValue*);
    447     void mapNinePieceImageRepeat(CSSValue*, NinePieceImage&);
    448425private:
    449426    bool canShareStyleWithControl(StyledElement*) const;
     
    547524#endif
    548525
     526    CSSToStyleMap m_styleMap;
     527
    549528    friend class StyleBuilder;
    550529    friend bool operator==(const MatchedProperties&, const MatchedProperties&);
Note: See TracChangeset for help on using the changeset viewer.