Chromium Code Reviews| Index: Source/core/rendering/RenderObject.cpp |
| diff --git a/Source/core/rendering/RenderObject.cpp b/Source/core/rendering/RenderObject.cpp |
| index 9c8086c3227d76a293079398053446b5ce96de1c..8859c394b148db83ef0f47fa02a3fae398c03884 100644 |
| --- a/Source/core/rendering/RenderObject.cpp |
| +++ b/Source/core/rendering/RenderObject.cpp |
| @@ -1788,8 +1788,18 @@ Color RenderObject::selectionBackgroundColor() const |
| if (!isSelectable()) |
| return Color::transparent; |
| - if (RefPtr<RenderStyle> pseudoStyle = getUncachedPseudoStyle(PseudoStyleRequest(SELECTION))) |
| + RefPtr<RenderStyle> pseudoStyle; |
| + if (node() && node()->shadowHost()) { |
| + // If the element is in shadow tree of input element, then get the PseudoStyle |
| + // from the input element. |
| + pseudoStyle = node()->shadowHost()->renderer()->getUncachedPseudoStyle(PseudoStyleRequest(SELECTION)); |
| + } else { |
| + pseudoStyle = getUncachedPseudoStyle(PseudoStyleRequest(SELECTION)); |
| + } |
| + |
| + if (pseudoStyle) |
| return resolveColor(pseudoStyle.get(), CSSPropertyBackgroundColor).blendWithWhite(); |
| + |
| return frame()->selection().isFocusedAndActive() ? |
| RenderTheme::theme().activeSelectionBackgroundColor() : |
| RenderTheme::theme().inactiveSelectionBackgroundColor(); |
| @@ -1802,8 +1812,18 @@ Color RenderObject::selectionColor(int colorProperty) const |
| if (!isSelectable() || (frame()->view()->paintBehavior() & PaintBehaviorSelectionOnly)) |
| return resolveColor(colorProperty); |
| - if (RefPtr<RenderStyle> pseudoStyle = getUncachedPseudoStyle(PseudoStyleRequest(SELECTION))) |
| + RefPtr<RenderStyle> pseudoStyle; |
| + if (node() && node()->shadowHost()) { |
| + // If the element is in shadow tree of input element, then get the PseudoStyle |
| + // from the input element. |
| + pseudoStyle = node()->shadowHost()->renderer()->getUncachedPseudoStyle(PseudoStyleRequest(SELECTION)); |
| + } else { |
| + pseudoStyle = getUncachedPseudoStyle(PseudoStyleRequest(SELECTION)); |
|
esprehn
2014/04/09 20:36:06
Why isn't this in a method, you do the exact same
|
| + } |
| + |
| + if (pseudoStyle) |
| return resolveColor(pseudoStyle.get(), colorProperty); |
| + |
| if (!RenderTheme::theme().supportsSelectionForegroundColors()) |
| return resolveColor(colorProperty); |
| return frame()->selection().isFocusedAndActive() ? |