| Index: Source/core/css/resolver/StyleBuilderCustom.cpp
|
| diff --git a/Source/core/css/resolver/StyleBuilderCustom.cpp b/Source/core/css/resolver/StyleBuilderCustom.cpp
|
| index 59465222d3ab3257e3930fe23ece5124d9f979b7..922826ed2c6eed75892595fedf080cc4f4c4ea14 100644
|
| --- a/Source/core/css/resolver/StyleBuilderCustom.cpp
|
| +++ b/Source/core/css/resolver/StyleBuilderCustom.cpp
|
| @@ -45,6 +45,7 @@
|
| #include "core/css/BasicShapeFunctions.h"
|
| #include "core/css/CSSCounterValue.h"
|
| #include "core/css/CSSCursorImageValue.h"
|
| +#include "core/css/CSSFunctionValue.h"
|
| #include "core/css/CSSGradientValue.h"
|
| #include "core/css/CSSGridTemplateAreasValue.h"
|
| #include "core/css/CSSHelper.h"
|
| @@ -728,24 +729,28 @@ void StyleBuilderFunctions::applyValueCSSPropertyContent(StyleResolverState& sta
|
| didSet = true;
|
| }
|
|
|
| - if (!item->isPrimitiveValue())
|
| - continue;
|
| -
|
| - CSSPrimitiveValue* contentValue = toCSSPrimitiveValue(item.get());
|
| -
|
| - if (contentValue->isString()) {
|
| - state.style()->setContent(contentValue->getStringValue().impl(), didSet);
|
| - didSet = true;
|
| - } else if (contentValue->isAttr()) {
|
| + if (item->isFunctionValue()) {
|
| + CSSFunctionValue* functionValue = toCSSFunctionValue(item.get());
|
| + ASSERT(functionValue->functionType() == CSSValueAttr);
|
| // FIXME: Can a namespace be specified for an attr(foo)?
|
| if (state.style()->styleType() == NOPSEUDO)
|
| state.style()->setUnique();
|
| else
|
| state.parentStyle()->setUnique();
|
| - QualifiedName attr(nullAtom, AtomicString(contentValue->getStringValue()), nullAtom);
|
| + QualifiedName attr(nullAtom, AtomicString(toCSSPrimitiveValue(functionValue->item(0))->getStringValue()), nullAtom);
|
| const AtomicString& value = state.element()->getAttribute(attr);
|
| state.style()->setContent(value.isNull() ? emptyString() : value.string(), didSet);
|
| didSet = true;
|
| + }
|
| +
|
| + if (!item->isPrimitiveValue())
|
| + continue;
|
| +
|
| + CSSPrimitiveValue* contentValue = toCSSPrimitiveValue(item.get());
|
| +
|
| + if (contentValue->isString()) {
|
| + state.style()->setContent(contentValue->getStringValue().impl(), didSet);
|
| + didSet = true;
|
| } else {
|
| switch (contentValue->getValueID()) {
|
| case CSSValueOpenQuote:
|
|
|