Chromium Code Reviews| Index: Source/core/rendering/RenderObject.cpp |
| diff --git a/Source/core/rendering/RenderObject.cpp b/Source/core/rendering/RenderObject.cpp |
| index 36cc3c3a510e50dfaeb972df4d7b9afffce99ba7..34d9465d34a710ac7a5fcc30922b544210b208aa 100644 |
| --- a/Source/core/rendering/RenderObject.cpp |
| +++ b/Source/core/rendering/RenderObject.cpp |
| @@ -1787,6 +1787,17 @@ Color RenderObject::selectionBackgroundColor() const |
| if (RefPtr<RenderStyle> pseudoStyle = getUncachedPseudoStyle(PseudoStyleRequest(SELECTION))) |
| return resolveColor(pseudoStyle.get(), CSSPropertyBackgroundColor).blendWithWhite(); |
| + |
| + // If the element is in shadow tree of input element, then get the PseudoStyle |
| + // from the input element. |
| + if (node() && node()->shadowHost()) { |
| + RenderObject* shadowHostRenderer = node()->shadowHost()->renderer(); |
| + if (shadowHostRenderer->isTextControl()) { |
|
ojan
2014/04/09 01:57:53
Special casing text controls is not right. For exa
|
| + if (RefPtr<RenderStyle> pseudoStyle = shadowHostRenderer->getUncachedPseudoStyle(PseudoStyleRequest(SELECTION))) |
| + return resolveColor(pseudoStyle.get(), CSSPropertyBackgroundColor).blendWithWhite(); |
| + } |
| + } |
| + |
| return frame()->selection().isFocusedAndActive() ? |
| RenderTheme::theme().activeSelectionBackgroundColor() : |
| RenderTheme::theme().inactiveSelectionBackgroundColor(); |
| @@ -1801,6 +1812,17 @@ Color RenderObject::selectionColor(int colorProperty) const |
| if (RefPtr<RenderStyle> pseudoStyle = getUncachedPseudoStyle(PseudoStyleRequest(SELECTION))) |
| return resolveColor(pseudoStyle.get(), colorProperty); |
| + |
| + // If the element is in shadow tree of input element, then get the PseudoStyle |
| + // from the input element. |
| + if (node() && node()->shadowHost()) { |
| + RenderObject* shadowHostRenderer = node()->shadowHost()->renderer(); |
| + if (shadowHostRenderer->isTextControl()) { |
| + if (RefPtr<RenderStyle> pseudoStyle = shadowHostRenderer->getUncachedPseudoStyle(PseudoStyleRequest(SELECTION))) |
| + return resolveColor(pseudoStyle.get(), colorProperty); |
| + } |
| + } |
| + |
| if (!RenderTheme::theme().supportsSelectionForegroundColors()) |
| return resolveColor(colorProperty); |
| return frame()->selection().isFocusedAndActive() ? |