Chromium Code Reviews| Index: Source/core/css/resolver/StyleBuilderCustom.cpp | 
| diff --git a/Source/core/css/resolver/StyleBuilderCustom.cpp b/Source/core/css/resolver/StyleBuilderCustom.cpp | 
| index ebd5ed5d1efa43c4a51ad65617cc900d051f62d1..5dca340b22c49b099f3203dd21c7de7f5d52d87c 100644 | 
| --- a/Source/core/css/resolver/StyleBuilderCustom.cpp | 
| +++ b/Source/core/css/resolver/StyleBuilderCustom.cpp | 
| @@ -571,12 +571,12 @@ void StyleBuilderFunctions::applyValueCSSPropertyWebkitClipPath(StyleResolverSta | 
| state.style()->setClipPath(nullptr); | 
| } else if (primitiveValue->isShape()) { | 
| state.style()->setClipPath(ShapeClipPathOperation::create(basicShapeForValue(state, primitiveValue->getShapeValue()))); | 
| - } else if (primitiveValue->isURI()) { | 
| - String cssURLValue = primitiveValue->getStringValue(); | 
| - KURL url = state.document().completeURL(cssURLValue); | 
| - // FIXME: It doesn't work with forward or external SVG references (see https://bugs.webkit.org/show_bug.cgi?id=90405) | 
| - state.style()->setClipPath(ReferenceClipPathOperation::create(cssURLValue, AtomicString(url.fragmentIdentifier()))); | 
| } | 
| + } else if (value->isURIValue()) { | 
| + String cssURLValue = toCSSURIValue(value)->value(); | 
| + KURL url = state.document().completeURL(cssURLValue); | 
| + // FIXME: It doesn't work with forward or external SVG references (see https://bugs.webkit.org/show_bug.cgi?id=90405) | 
| + state.style()->setClipPath(ReferenceClipPathOperation::create(cssURLValue, AtomicString(url.fragmentIdentifier()))); | 
| } | 
| } | 
| @@ -626,15 +626,14 @@ void StyleBuilderFunctions::applyValueCSSPropertyWebkitTextEmphasisStyle(StyleRe | 
| return; | 
| } | 
| - CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); | 
| - | 
| - if (primitiveValue->isString()) { | 
| + if (value->isStringValue()) { | 
| state.style()->setTextEmphasisFill(TextEmphasisFillFilled); | 
| state.style()->setTextEmphasisMark(TextEmphasisMarkCustom); | 
| - state.style()->setTextEmphasisCustomMark(AtomicString(primitiveValue->getStringValue())); | 
| + state.style()->setTextEmphasisCustomMark(AtomicString(toCSSStringValue(value)->value())); | 
| return; | 
| } | 
| + CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); | 
| state.style()->setTextEmphasisCustomMark(nullAtom); | 
| if (primitiveValue->getValueID() == CSSValueFilled || primitiveValue->getValueID() == CSSValueOpen) { | 
| @@ -736,21 +735,21 @@ void StyleBuilderFunctions::applyValueCSSPropertyContent(StyleResolverState& sta | 
| state.style()->setUnique(); | 
| else | 
| state.parentStyle()->setUnique(); | 
| - QualifiedName attr(nullAtom, AtomicString(toCSSPrimitiveValue(functionValue->item(0))->getStringValue()), nullAtom); | 
| + QualifiedName attr(nullAtom, AtomicString(toCSSCustomIdentValue(functionValue->item(0))->value()), nullAtom); | 
| const AtomicString& value = state.element()->getAttribute(attr); | 
| state.style()->setContent(value.isNull() ? emptyString() : value.string(), didSet); | 
| didSet = true; | 
| } | 
| - if (!item->isPrimitiveValue()) | 
| + if (!item->isPrimitiveValue() && !item->isStringValue()) | 
| 
 
alancutter (OOO until 2018)
2015/09/17 02:59:29
Shouldn't this be ||?
 
sashab
2015/09/17 04:19:49
It's a bit confusing, but it should be &&. "If the
 
 | 
| continue; | 
| - CSSPrimitiveValue* contentValue = toCSSPrimitiveValue(item.get()); | 
| - | 
| - if (contentValue->isString()) { | 
| - state.style()->setContent(contentValue->getStringValue().impl(), didSet); | 
| + if (item->isStringValue()) { | 
| + CSSStringValue* contentValue = toCSSStringValue(item.get()); | 
| + state.style()->setContent(contentValue->value().impl(), didSet); | 
| didSet = true; | 
| } else { | 
| + CSSPrimitiveValue* contentValue = toCSSPrimitiveValue(item.get()); | 
| switch (contentValue->getValueID()) { | 
| case CSSValueOpenQuote: | 
| state.style()->setContent(OPEN_QUOTE, didSet); | 
| @@ -780,12 +779,10 @@ void StyleBuilderFunctions::applyValueCSSPropertyContent(StyleResolverState& sta | 
| void StyleBuilderFunctions::applyValueCSSPropertyWebkitLocale(StyleResolverState& state, CSSValue* value) | 
| { | 
| - const CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); | 
| - if (primitiveValue->getValueID() == CSSValueAuto) { | 
| + if (value->isPrimitiveValue() && toCSSPrimitiveValue(value)->getValueID() == CSSValueAuto) { | 
| state.style()->setLocale(nullAtom); | 
| } else { | 
| - ASSERT(primitiveValue->isString()); | 
| - state.style()->setLocale(AtomicString(primitiveValue->getStringValue())); | 
| + state.style()->setLocale(AtomicString(toCSSStringValue(value)->value())); | 
| } | 
| state.fontBuilder().setScript(state.style()->locale()); | 
| } |