Index: third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp |
diff --git a/third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp b/third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp |
index 6e57c22e8a006fb3b6daffaf135995b57cd305f7..a85fe102ffb1548480b334a6468fd954fd9518a7 100644 |
--- a/third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp |
+++ b/third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp |
@@ -16,6 +16,7 @@ |
#include "core/css/CSSFontFaceSrcValue.h" |
#include "core/css/CSSFontFeatureValue.h" |
#include "core/css/CSSFunctionValue.h" |
+#include "core/css/CSSGradientValue.h" |
#include "core/css/CSSImageSetValue.h" |
#include "core/css/CSSPathValue.h" |
#include "core/css/CSSPrimitiveValueMappings.h" |
@@ -2355,6 +2356,13 @@ static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> consumeBaselineShift(CSSParserT |
return consumeLengthOrPercent(range, SVGAttributeMode, ValueRangeAll); |
} |
+static PassRefPtrWillBeRawPtr<CSSValue> createCSSImageValueWithReferrer(const AtomicString& rawValue, const CSSParserContext& context) |
+{ |
+ RefPtrWillBeRawPtr<CSSValue> imageValue = CSSImageValue::create(rawValue, context.completeURL(rawValue)); |
+ toCSSImageValue(imageValue.get())->setReferrer(context.referrer()); |
+ return imageValue; |
+} |
+ |
static PassRefPtrWillBeRawPtr<CSSValue> consumeImageSet(CSSParserTokenRange& range, const CSSParserContext& context) |
{ |
CSSParserTokenRange rangeCopy = range; |
@@ -2365,7 +2373,7 @@ static PassRefPtrWillBeRawPtr<CSSValue> consumeImageSet(CSSParserTokenRange& ran |
if (urlValue.isNull()) |
return nullptr; |
- RefPtrWillBeRawPtr<CSSValue> image = CSSPropertyParser::createCSSImageValueWithReferrer(urlValue, context); |
+ RefPtrWillBeRawPtr<CSSValue> image = createCSSImageValueWithReferrer(urlValue, context); |
imageSet->append(image); |
const CSSParserToken& token = args.consumeIncludingWhitespace(); |
@@ -2392,7 +2400,7 @@ static PassRefPtrWillBeRawPtr<CSSValue> consumeCursor(CSSParserTokenRange& range |
RefPtrWillBeRawPtr<CSSValue> image = nullptr; |
AtomicString uri(consumeUrl(range)); |
if (!uri.isNull()) { |
- image = CSSPropertyParser::createCSSImageValueWithReferrer(uri, context); |
+ image = createCSSImageValueWithReferrer(uri, context); |
} else if (range.peek().type() == FunctionToken && range.peek().functionId() == CSSValueWebkitImageSet) { |
image = consumeImageSet(range, context); |
if (!image) |
@@ -2814,6 +2822,15 @@ static PassRefPtrWillBeRawPtr<CSSValue> consumeGeneratedImage(CSSParserTokenRang |
return result; |
} |
+static bool isGeneratedImage(CSSValueID id) |
+{ |
+ return id == CSSValueLinearGradient || id == CSSValueRadialGradient |
+ || id == CSSValueRepeatingLinearGradient || id == CSSValueRepeatingRadialGradient |
+ || id == CSSValueWebkitLinearGradient || id == CSSValueWebkitRadialGradient |
+ || id == CSSValueWebkitRepeatingLinearGradient || id == CSSValueWebkitRepeatingRadialGradient |
+ || id == CSSValueWebkitGradient || id == CSSValueWebkitCrossFade; |
+} |
+ |
static PassRefPtrWillBeRawPtr<CSSValue> consumeImage(CSSParserTokenRange& range, CSSParserContext context) |
{ |
if (range.peek().id() == CSSValueNone) |
@@ -2821,12 +2838,12 @@ static PassRefPtrWillBeRawPtr<CSSValue> consumeImage(CSSParserTokenRange& range, |
AtomicString uri(consumeUrl(range)); |
if (!uri.isNull()) |
- return CSSPropertyParser::createCSSImageValueWithReferrer(uri, context); |
+ return createCSSImageValueWithReferrer(uri, context); |
if (range.peek().type() == FunctionToken) { |
CSSValueID id = range.peek().functionId(); |
if (id == CSSValueWebkitImageSet) |
return consumeImageSet(range, context); |
- if (CSSPropertyParser::isGeneratedImage(id)) |
+ if (isGeneratedImage(id)) |
return consumeGeneratedImage(range, context); |
} |
return nullptr; |