Index: Source/core/css/parser/CSSPropertyParser.cpp |
diff --git a/Source/core/css/parser/CSSPropertyParser.cpp b/Source/core/css/parser/CSSPropertyParser.cpp |
index f07a1d46a76cd796d29178ae851686605d87f4cf..6a73395a84860308455206e880ec42b9447cadae 100644 |
--- a/Source/core/css/parser/CSSPropertyParser.cpp |
+++ b/Source/core/css/parser/CSSPropertyParser.cpp |
@@ -320,6 +320,13 @@ inline PassRefPtrWillBeRawPtr<CSSPrimitiveValue> CSSPropertyParser::createPrimit |
return cssValuePool().createValue(value->string, CSSPrimitiveValue::CSS_STRING); |
} |
+inline PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::createCSSImageValueWithReferrer(const String& rawValue, const KURL& url) |
+{ |
+ RefPtrWillBeRawPtr<CSSValue> imageValue = CSSImageValue::create(rawValue, url); |
+ toCSSImageValue(imageValue.get())->setReferrer(m_context.referrer()); |
+ return imageValue; |
+} |
+ |
static inline bool isComma(CSSParserValue* value) |
{ |
return value && value->unit == CSSParserValue::Operator && value->iValue == ','; |
@@ -593,7 +600,7 @@ bool CSSPropertyParser::parseValue(CSSPropertyID propId, bool important) |
if (value->unit == CSSPrimitiveValue::CSS_URI) { |
String uri = value->string; |
if (!uri.isNull()) |
- image = CSSImageValue::create(uri, completeURL(uri)); |
+ image = createCSSImageValueWithReferrer(uri, completeURL(uri)); |
} else if (value->unit == CSSParserValue::Function && equalIgnoringCase(value->function->name, "-webkit-image-set(")) { |
image = parseImageSet(m_valueList.get()); |
if (!image) |
@@ -718,7 +725,7 @@ bool CSSPropertyParser::parseValue(CSSPropertyID propId, bool important) |
parsedValue = cssValuePool().createIdentifierValue(CSSValueNone); |
m_valueList->next(); |
} else if (value->unit == CSSPrimitiveValue::CSS_URI) { |
- parsedValue = CSSImageValue::create(value->string, completeURL(value->string)); |
+ parsedValue = createCSSImageValueWithReferrer(value->string, completeURL(value->string)); |
m_valueList->next(); |
} else if (isGeneratedImageValue(value)) { |
if (parseGeneratedImage(m_valueList.get(), parsedValue)) |
@@ -2255,7 +2262,7 @@ bool CSSPropertyParser::parseContent(CSSPropertyID propId, bool important) |
RefPtrWillBeRawPtr<CSSValue> parsedValue = nullptr; |
if (val->unit == CSSPrimitiveValue::CSS_URI) { |
// url |
- parsedValue = CSSImageValue::create(val->string, completeURL(val->string)); |
+ parsedValue = createCSSImageValueWithReferrer(val->string, completeURL(val->string)); |
} else if (val->unit == CSSParserValue::Function) { |
// attr(X) | counter(X [,Y]) | counters(X, Y, [,Z]) | -webkit-gradient(...) |
CSSParserValueList* args = val->function->args.get(); |
@@ -2359,7 +2366,7 @@ bool CSSPropertyParser::parseFillImage(CSSParserValueList* valueList, RefPtrWill |
return true; |
} |
if (valueList->current()->unit == CSSPrimitiveValue::CSS_URI) { |
- value = CSSImageValue::create(valueList->current()->string, completeURL(valueList->current()->string)); |
+ value = createCSSImageValueWithReferrer(valueList->current()->string, completeURL(valueList->current()->string)); |
return true; |
} |
@@ -4718,6 +4725,7 @@ bool CSSPropertyParser::parseFontWeight(bool important) |
bool CSSPropertyParser::parseFontFaceSrcURI(CSSValueList* valueList) |
{ |
RefPtrWillBeRawPtr<CSSFontFaceSrcValue> uriValue(CSSFontFaceSrcValue::create(completeURL(m_valueList->current()->string))); |
+ uriValue->setReferrer(m_context.referrer()); |
CSSParserValue* value = m_valueList->next(); |
if (!value) { |
@@ -5813,7 +5821,7 @@ bool BorderImageParseContext::buildFromParser(CSSPropertyParser& parser, CSSProp |
if (!context.canAdvance() && context.allowImage()) { |
if (val->unit == CSSPrimitiveValue::CSS_URI) { |
- context.commitImage(CSSImageValue::create(val->string, parser.m_context.completeURL(val->string))); |
+ context.commitImage(parser.createCSSImageValueWithReferrer(val->string, parser.m_context.completeURL(val->string))); |
} else if (isGeneratedImageValue(val)) { |
RefPtrWillBeRawPtr<CSSValue> value = nullptr; |
if (parser.parseGeneratedImage(parser.m_valueList.get(), value)) |
@@ -7102,7 +7110,7 @@ PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseImageSet(CSSParserValue |
if (arg->unit != CSSPrimitiveValue::CSS_URI) |
return nullptr; |
- RefPtrWillBeRawPtr<CSSImageValue> image = CSSImageValue::create(arg->string, completeURL(arg->string)); |
+ RefPtrWillBeRawPtr<CSSValue> image = createCSSImageValueWithReferrer(arg->string, completeURL(arg->string)); |
imageSet->append(image); |
arg = functionArgs->next(); |