Index: Source/core/rendering/RenderObject.cpp |
diff --git a/Source/core/rendering/RenderObject.cpp b/Source/core/rendering/RenderObject.cpp |
index e32235b88474d3c23ae76b02079eeb5c46e0066c..fe8f4503802a39d69a1ceba5fa4de8c7af7ce1f9 100644 |
--- a/Source/core/rendering/RenderObject.cpp |
+++ b/Source/core/rendering/RenderObject.cpp |
@@ -1116,7 +1116,7 @@ void RenderObject::paintFocusRing(PaintInfo& paintInfo, const LayoutPoint& paint |
Vector<IntRect> focusRingRects; |
addFocusRingRects(focusRingRects, paintOffset, paintInfo.paintContainer); |
if (style->outlineStyleIsAuto()) |
- paintInfo.context->drawFocusRing(focusRingRects, style->outlineWidth(), style->outlineOffset(), style->visitedDependentColor(CSSPropertyOutlineColor)); |
+ paintInfo.context->drawFocusRing(focusRingRects, style->outlineWidth(), style->outlineOffset(), resolveColor(style, CSSPropertyOutlineColor)); |
else |
addPDFURLRect(paintInfo.context, unionRect(focusRingRects)); |
} |
@@ -1174,7 +1174,7 @@ void RenderObject::paintOutline(PaintInfo& paintInfo, const LayoutRect& paintRec |
return; |
EBorderStyle outlineStyle = styleToUse->outlineStyle(); |
- Color outlineColor = styleToUse->visitedDependentColor(CSSPropertyOutlineColor); |
+ Color outlineColor = resolveColor(styleToUse, CSSPropertyOutlineColor); |
GraphicsContext* graphicsContext = paintInfo.context; |
bool useTransparencyLayer = outlineColor.hasAlpha(); |
@@ -1657,8 +1657,8 @@ Color RenderObject::selectionBackgroundColor() const |
Color color; |
if (shouldUseSelectionColor(*style())) { |
RefPtr<RenderStyle> pseudoStyle = getUncachedPseudoStyle(PseudoStyleRequest(SELECTION)); |
- if (pseudoStyle && pseudoStyle->visitedDependentColor(CSSPropertyBackgroundColor).isValid()) |
- color = pseudoStyle->visitedDependentColor(CSSPropertyBackgroundColor).blendWithWhite(); |
+ if (pseudoStyle && resolveColor(pseudoStyle.get(), CSSPropertyBackgroundColor).isValid()) |
+ color = resolveColor(pseudoStyle.get(), CSSPropertyBackgroundColor).blendWithWhite(); |
else |
color = frame()->selection()->isFocusedAndActive() ? |
theme()->activeSelectionBackgroundColor() : |
@@ -1678,9 +1678,8 @@ Color RenderObject::selectionColor(int colorProperty) const |
return color; |
if (RefPtr<RenderStyle> pseudoStyle = getUncachedPseudoStyle(PseudoStyleRequest(SELECTION))) { |
- color = pseudoStyle->visitedDependentColor(colorProperty); |
- if (!color.isValid()) |
- color = pseudoStyle->visitedDependentColor(CSSPropertyColor); |
+ Color selectionColor = resolveColor(pseudoStyle.get(), colorProperty); |
+ color = selectionColor.isValid() ? selectionColor : resolveColor(pseudoStyle.get(), CSSPropertyColor); |
} else |
color = frame()->selection()->isFocusedAndActive() ? |
theme()->activeSelectionForegroundColor() : |
@@ -2815,21 +2814,21 @@ bool RenderObject::hasBlendMode() const |
return RuntimeEnabledFeatures::cssCompositingEnabled() && style() && style()->hasBlendMode(); |
} |
-static Color decorationColor(RenderStyle* style) |
+static Color decorationColor(const RenderObject* object, RenderStyle* style) |
{ |
Color result; |
// Check for text decoration color first. |
- result = style->visitedDependentColor(CSSPropertyTextDecorationColor); |
+ result = object->resolveColor(style, CSSPropertyTextDecorationColor); |
if (result.isValid()) |
return result; |
if (style->textStrokeWidth() > 0) { |
// Prefer stroke color if possible but not if it's fully transparent. |
- result = style->visitedDependentColor(CSSPropertyWebkitTextStrokeColor); |
+ result = object->resolveColor(style, CSSPropertyWebkitTextStrokeColor); |
if (result.alpha()) |
return result; |
} |
- result = style->visitedDependentColor(CSSPropertyWebkitTextFillColor); |
+ result = object->resolveColor(style, CSSPropertyWebkitTextFillColor); |
return result; |
} |
@@ -2843,7 +2842,7 @@ void RenderObject::getTextDecorationColors(int decorations, Color& underline, Co |
do { |
styleToUse = curr->style(firstlineStyle); |
currDecs = styleToUse->textDecoration(); |
- resultColor = decorationColor(styleToUse); |
+ resultColor = decorationColor(this, styleToUse); |
// Parameter 'decorations' is cast as an int to enable the bitwise operations below. |
if (currDecs) { |
if (currDecs & TextDecorationUnderline) { |
@@ -2869,7 +2868,7 @@ void RenderObject::getTextDecorationColors(int decorations, Color& underline, Co |
// If we bailed out, use the element we bailed out at (typically a <font> or <a> element). |
if (decorations && curr) { |
styleToUse = curr->style(firstlineStyle); |
- resultColor = decorationColor(styleToUse); |
+ resultColor = decorationColor(this, styleToUse); |
if (decorations & TextDecorationUnderline) |
underline = resultColor; |
if (decorations & TextDecorationOverline) |