| Index: Source/core/css/resolver/CSSToStyleMap.cpp | 
| diff --git a/Source/core/css/resolver/CSSToStyleMap.cpp b/Source/core/css/resolver/CSSToStyleMap.cpp | 
| index 98054cf32f51ce08bfe1e7e0a882566484a87095..a8fe3b4b9d888ad86d5a4b3611b5a976b3311c39 100644 | 
| --- a/Source/core/css/resolver/CSSToStyleMap.cpp | 
| +++ b/Source/core/css/resolver/CSSToStyleMap.cpp | 
| @@ -42,17 +42,7 @@ | 
|  | 
| namespace blink { | 
|  | 
| -const CSSToLengthConversionData& CSSToStyleMap::cssToLengthConversionData() const | 
| -{ | 
| -    return m_state.cssToLengthConversionData(); | 
| -} | 
| - | 
| -PassRefPtr<StyleImage> CSSToStyleMap::styleImage(CSSPropertyID propertyId, CSSValue* value) | 
| -{ | 
| -    return m_elementStyleResources.styleImage(m_state.document(), m_state.document().textLinkColors(), m_state.style()->color(), propertyId, value); | 
| -} | 
| - | 
| -void CSSToStyleMap::mapFillAttachment(FillLayer* layer, CSSValue* value) const | 
| +void CSSToStyleMap::mapFillAttachment(StyleResolverState&, FillLayer* layer, CSSValue* value) | 
| { | 
| if (value->isInitialValue()) { | 
| layer->setAttachment(FillLayer::initialFillAttachment(layer->type())); | 
| @@ -78,7 +68,7 @@ void CSSToStyleMap::mapFillAttachment(FillLayer* layer, CSSValue* value) const | 
| } | 
| } | 
|  | 
| -void CSSToStyleMap::mapFillClip(FillLayer* layer, CSSValue* value) const | 
| +void CSSToStyleMap::mapFillClip(StyleResolverState&, FillLayer* layer, CSSValue* value) | 
| { | 
| if (value->isInitialValue()) { | 
| layer->setClip(FillLayer::initialFillClip(layer->type())); | 
| @@ -92,7 +82,7 @@ void CSSToStyleMap::mapFillClip(FillLayer* layer, CSSValue* value) const | 
| layer->setClip(*primitiveValue); | 
| } | 
|  | 
| -void CSSToStyleMap::mapFillComposite(FillLayer* layer, CSSValue* value) const | 
| +void CSSToStyleMap::mapFillComposite(StyleResolverState&, FillLayer* layer, CSSValue* value) | 
| { | 
| if (value->isInitialValue()) { | 
| layer->setComposite(FillLayer::initialFillComposite(layer->type())); | 
| @@ -106,7 +96,7 @@ void CSSToStyleMap::mapFillComposite(FillLayer* layer, CSSValue* value) const | 
| layer->setComposite(*primitiveValue); | 
| } | 
|  | 
| -void CSSToStyleMap::mapFillBlendMode(FillLayer* layer, CSSValue* value) const | 
| +void CSSToStyleMap::mapFillBlendMode(StyleResolverState&, FillLayer* layer, CSSValue* value) | 
| { | 
| if (value->isInitialValue()) { | 
| layer->setBlendMode(FillLayer::initialFillBlendMode(layer->type())); | 
| @@ -120,7 +110,7 @@ void CSSToStyleMap::mapFillBlendMode(FillLayer* layer, CSSValue* value) const | 
| layer->setBlendMode(*primitiveValue); | 
| } | 
|  | 
| -void CSSToStyleMap::mapFillOrigin(FillLayer* layer, CSSValue* value) const | 
| +void CSSToStyleMap::mapFillOrigin(StyleResolverState&, FillLayer* layer, CSSValue* value) | 
| { | 
| if (value->isInitialValue()) { | 
| layer->setOrigin(FillLayer::initialFillOrigin(layer->type())); | 
| @@ -135,7 +125,7 @@ void CSSToStyleMap::mapFillOrigin(FillLayer* layer, CSSValue* value) const | 
| } | 
|  | 
|  | 
| -void CSSToStyleMap::mapFillImage(FillLayer* layer, CSSValue* value) | 
| +void CSSToStyleMap::mapFillImage(StyleResolverState& state, FillLayer* layer, CSSValue* value) | 
| { | 
| if (value->isInitialValue()) { | 
| layer->setImage(FillLayer::initialFillImage(layer->type())); | 
| @@ -143,10 +133,10 @@ void CSSToStyleMap::mapFillImage(FillLayer* layer, CSSValue* value) | 
| } | 
|  | 
| CSSPropertyID property = layer->type() == BackgroundFillLayer ? CSSPropertyBackgroundImage : CSSPropertyWebkitMaskImage; | 
| -    layer->setImage(styleImage(property, value)); | 
| +    layer->setImage(state.styleImage(property, value)); | 
| } | 
|  | 
| -void CSSToStyleMap::mapFillRepeatX(FillLayer* layer, CSSValue* value) const | 
| +void CSSToStyleMap::mapFillRepeatX(StyleResolverState&, FillLayer* layer, CSSValue* value) | 
| { | 
| if (value->isInitialValue()) { | 
| layer->setRepeatX(FillLayer::initialFillRepeatX(layer->type())); | 
| @@ -160,7 +150,7 @@ void CSSToStyleMap::mapFillRepeatX(FillLayer* layer, CSSValue* value) const | 
| layer->setRepeatX(*primitiveValue); | 
| } | 
|  | 
| -void CSSToStyleMap::mapFillRepeatY(FillLayer* layer, CSSValue* value) const | 
| +void CSSToStyleMap::mapFillRepeatY(StyleResolverState&, FillLayer* layer, CSSValue* value) | 
| { | 
| if (value->isInitialValue()) { | 
| layer->setRepeatY(FillLayer::initialFillRepeatY(layer->type())); | 
| @@ -174,7 +164,7 @@ void CSSToStyleMap::mapFillRepeatY(FillLayer* layer, CSSValue* value) const | 
| layer->setRepeatY(*primitiveValue); | 
| } | 
|  | 
| -void CSSToStyleMap::mapFillSize(FillLayer* layer, CSSValue* value) const | 
| +void CSSToStyleMap::mapFillSize(StyleResolverState& state, FillLayer* layer, CSSValue* value) | 
| { | 
| if (value->isInitialValue()) { | 
| layer->setSizeType(FillLayer::initialFillSizeType(layer->type())); | 
| @@ -204,10 +194,10 @@ void CSSToStyleMap::mapFillSize(FillLayer* layer, CSSValue* value) const | 
| Length secondLength; | 
|  | 
| if (Pair* pair = primitiveValue->getPairValue()) { | 
| -        firstLength = pair->first()->convertToLength<AnyConversion>(cssToLengthConversionData()); | 
| -        secondLength = pair->second()->convertToLength<AnyConversion>(cssToLengthConversionData()); | 
| +        firstLength = pair->first()->convertToLength<AnyConversion>(state.cssToLengthConversionData()); | 
| +        secondLength = pair->second()->convertToLength<AnyConversion>(state.cssToLengthConversionData()); | 
| } else { | 
| -        firstLength = primitiveValue->convertToLength<AnyConversion>(cssToLengthConversionData()); | 
| +        firstLength = primitiveValue->convertToLength<AnyConversion>(state.cssToLengthConversionData()); | 
| secondLength = Length(); | 
| } | 
|  | 
| @@ -216,7 +206,7 @@ void CSSToStyleMap::mapFillSize(FillLayer* layer, CSSValue* value) const | 
| layer->setSizeLength(b); | 
| } | 
|  | 
| -void CSSToStyleMap::mapFillXPosition(FillLayer* layer, CSSValue* value) const | 
| +void CSSToStyleMap::mapFillXPosition(StyleResolverState& state, FillLayer* layer, CSSValue* value) | 
| { | 
| if (value->isInitialValue()) { | 
| layer->setXPosition(FillLayer::initialFillXPosition(layer->type())); | 
| @@ -231,14 +221,14 @@ void CSSToStyleMap::mapFillXPosition(FillLayer* layer, CSSValue* value) const | 
| if (pair) | 
| primitiveValue = pair->second(); | 
|  | 
| -    Length length = primitiveValue->convertToLength<FixedConversion | PercentConversion>(cssToLengthConversionData()); | 
| +    Length length = primitiveValue->convertToLength<FixedConversion | PercentConversion>(state.cssToLengthConversionData()); | 
|  | 
| layer->setXPosition(length); | 
| if (pair) | 
| layer->setBackgroundXOrigin(*(pair->first())); | 
| } | 
|  | 
| -void CSSToStyleMap::mapFillYPosition(FillLayer* layer, CSSValue* value) const | 
| +void CSSToStyleMap::mapFillYPosition(StyleResolverState& state, FillLayer* layer, CSSValue* value) | 
| { | 
| if (value->isInitialValue()) { | 
| layer->setYPosition(FillLayer::initialFillYPosition(layer->type())); | 
| @@ -253,14 +243,14 @@ void CSSToStyleMap::mapFillYPosition(FillLayer* layer, CSSValue* value) const | 
| if (pair) | 
| primitiveValue = pair->second(); | 
|  | 
| -    Length length = primitiveValue->convertToLength<FixedConversion | PercentConversion>(cssToLengthConversionData()); | 
| +    Length length = primitiveValue->convertToLength<FixedConversion | PercentConversion>(state.cssToLengthConversionData()); | 
|  | 
| layer->setYPosition(length); | 
| if (pair) | 
| layer->setBackgroundYOrigin(*(pair->first())); | 
| } | 
|  | 
| -void CSSToStyleMap::mapFillMaskSourceType(FillLayer* layer, CSSValue* value) const | 
| +void CSSToStyleMap::mapFillMaskSourceType(StyleResolverState&, FillLayer* layer, CSSValue* value) | 
| { | 
| EMaskSourceType type = FillLayer::initialFillMaskSourceType(layer->type()); | 
| if (value->isInitialValue()) { | 
| @@ -433,7 +423,7 @@ PassRefPtr<TimingFunction> CSSToStyleMap::mapAnimationTimingFunction(CSSValue* v | 
| return StepsTimingFunction::create(stepsTimingFunction->numberOfSteps(), stepsTimingFunction->stepAtPosition()); | 
| } | 
|  | 
| -void CSSToStyleMap::mapNinePieceImage(RenderStyle* mutableStyle, CSSPropertyID property, CSSValue* value, NinePieceImage& image) | 
| +void CSSToStyleMap::mapNinePieceImage(StyleResolverState& state, CSSPropertyID property, CSSValue* value, NinePieceImage& image) | 
| { | 
| // If we're not a value list, then we are "none" and don't need to alter the empty image at all. | 
| if (!value || !value->isValueList()) | 
| @@ -455,26 +445,26 @@ void CSSToStyleMap::mapNinePieceImage(RenderStyle* mutableStyle, CSSPropertyID p | 
| CSSValue* current = borderImage->item(i); | 
|  | 
| if (current->isImageValue() || current->isImageGeneratorValue() || current->isImageSetValue()) | 
| -            image.setImage(styleImage(imageProperty, current)); | 
| +            image.setImage(state.styleImage(imageProperty, current)); | 
| else if (current->isBorderImageSliceValue()) | 
| -            mapNinePieceImageSlice(current, image); | 
| +            mapNinePieceImageSlice(state, current, image); | 
| else if (current->isValueList()) { | 
| CSSValueList* slashList = toCSSValueList(current); | 
| size_t length = slashList->length(); | 
| // Map in the image slices. | 
| if (length && slashList->item(0)->isBorderImageSliceValue()) | 
| -                mapNinePieceImageSlice(slashList->item(0), image); | 
| +                mapNinePieceImageSlice(state, slashList->item(0), image); | 
|  | 
| // Map in the border slices. | 
| if (length > 1) | 
| -                image.setBorderSlices(mapNinePieceImageQuad(slashList->item(1))); | 
| +                image.setBorderSlices(mapNinePieceImageQuad(state, slashList->item(1))); | 
|  | 
| // Map in the outset. | 
| if (length > 2) | 
| -                image.setOutset(mapNinePieceImageQuad(slashList->item(2))); | 
| +                image.setOutset(mapNinePieceImageQuad(state, slashList->item(2))); | 
| } else if (current->isPrimitiveValue()) { | 
| // Set the appropriate rules for stretch/round/repeat of the slices. | 
| -            mapNinePieceImageRepeat(current, image); | 
| +            mapNinePieceImageRepeat(state, current, image); | 
| } | 
| } | 
|  | 
| @@ -483,17 +473,17 @@ void CSSToStyleMap::mapNinePieceImage(RenderStyle* mutableStyle, CSSPropertyID p | 
| // also set the border widths. We don't need to worry about percentages, since we don't even support | 
| // those on real borders yet. | 
| if (image.borderSlices().top().isLength() && image.borderSlices().top().length().isFixed()) | 
| -            mutableStyle->setBorderTopWidth(image.borderSlices().top().length().value()); | 
| +            state.style()->setBorderTopWidth(image.borderSlices().top().length().value()); | 
| if (image.borderSlices().right().isLength() && image.borderSlices().right().length().isFixed()) | 
| -            mutableStyle->setBorderRightWidth(image.borderSlices().right().length().value()); | 
| +            state.style()->setBorderRightWidth(image.borderSlices().right().length().value()); | 
| if (image.borderSlices().bottom().isLength() && image.borderSlices().bottom().length().isFixed()) | 
| -            mutableStyle->setBorderBottomWidth(image.borderSlices().bottom().length().value()); | 
| +            state.style()->setBorderBottomWidth(image.borderSlices().bottom().length().value()); | 
| if (image.borderSlices().left().isLength() && image.borderSlices().left().length().isFixed()) | 
| -            mutableStyle->setBorderLeftWidth(image.borderSlices().left().length().value()); | 
| +            state.style()->setBorderLeftWidth(image.borderSlices().left().length().value()); | 
| } | 
| } | 
|  | 
| -void CSSToStyleMap::mapNinePieceImageSlice(CSSValue* value, NinePieceImage& image) const | 
| +void CSSToStyleMap::mapNinePieceImageSlice(StyleResolverState&, CSSValue* value, NinePieceImage& image) | 
| { | 
| if (!value || !value->isBorderImageSliceValue()) | 
| return; | 
| @@ -537,7 +527,7 @@ static BorderImageLength toBorderImageLength(CSSPrimitiveValue& value, const CSS | 
| return Length(Auto); | 
| } | 
|  | 
| -BorderImageLengthBox CSSToStyleMap::mapNinePieceImageQuad(CSSValue* value) const | 
| +BorderImageLengthBox CSSToStyleMap::mapNinePieceImageQuad(StyleResolverState& state, CSSValue* value) | 
| { | 
| if (!value || !value->isPrimitiveValue()) | 
| return BorderImageLengthBox(Length(Auto)); | 
| @@ -546,13 +536,13 @@ BorderImageLengthBox CSSToStyleMap::mapNinePieceImageQuad(CSSValue* value) const | 
|  | 
| // Set up a border image length box to represent our image slices. | 
| return BorderImageLengthBox( | 
| -        toBorderImageLength(*slices->top(), cssToLengthConversionData()), | 
| -        toBorderImageLength(*slices->right(), cssToLengthConversionData()), | 
| -        toBorderImageLength(*slices->bottom(), cssToLengthConversionData()), | 
| -        toBorderImageLength(*slices->left(), cssToLengthConversionData())); | 
| +        toBorderImageLength(*slices->top(), state.cssToLengthConversionData()), | 
| +        toBorderImageLength(*slices->right(), state.cssToLengthConversionData()), | 
| +        toBorderImageLength(*slices->bottom(), state.cssToLengthConversionData()), | 
| +        toBorderImageLength(*slices->left(), state.cssToLengthConversionData())); | 
| } | 
|  | 
| -void CSSToStyleMap::mapNinePieceImageRepeat(CSSValue* value, NinePieceImage& image) const | 
| +void CSSToStyleMap::mapNinePieceImageRepeat(StyleResolverState&, CSSValue* value, NinePieceImage& image) | 
| { | 
| if (!value || !value->isPrimitiveValue()) | 
| return; | 
|  |