Chromium Code Reviews| Index: Source/core/rendering/RenderObject.cpp |
| diff --git a/Source/core/rendering/RenderObject.cpp b/Source/core/rendering/RenderObject.cpp |
| index ee7c9c519961a8cd7c08afe823552b02850ec49f..d46ad24a5e79fa2a38b8183ccafb255be3c0d1cf 100644 |
| --- a/Source/core/rendering/RenderObject.cpp |
| +++ b/Source/core/rendering/RenderObject.cpp |
| @@ -1780,6 +1780,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(); |
|
esprehn
2014/04/03 19:59:07
Your host must have a renderer if you do. The null
deepak.sa
2014/04/07 15:20:00
Done.
|
| + if (shadowHostRenderer && shadowHostRenderer->isTextControl()) { |
| + if (RefPtr<RenderStyle> pseudoStyle = shadowHostRenderer->getUncachedPseudoStyle(PseudoStyleRequest(SELECTION))) |
| + return resolveColor(pseudoStyle.get(), CSSPropertyBackgroundColor).blendWithWhite(); |
| + } |
| + } |
| + |
| return frame()->selection().isFocusedAndActive() ? |
| RenderTheme::theme().activeSelectionBackgroundColor() : |
| RenderTheme::theme().inactiveSelectionBackgroundColor(); |
| @@ -1794,6 +1805,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 && 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() ? |