Index: Source/core/rendering/RenderTheme.cpp |
diff --git a/Source/core/rendering/RenderTheme.cpp b/Source/core/rendering/RenderTheme.cpp |
index 86408f068552457e2c777ab373da5205930d927d..d5948367d811650333d50ad6594be4c027a83c1c 100644 |
--- a/Source/core/rendering/RenderTheme.cpp |
+++ b/Source/core/rendering/RenderTheme.cpp |
@@ -86,7 +86,7 @@ RenderTheme::RenderTheme() |
{ |
} |
-void RenderTheme::adjustStyle(RenderStyle* style, Element* e, const CachedUAStyle* uaStyle) |
+void RenderTheme::adjustStyle(RenderStyle* style, Element* e, bool uaStyleHasWebkitAppearance, bool valuesUnchangedForWebkitAppearance) |
{ |
// Force inline and table display styles to be inline-block (except for table- which is block) |
ControlPart part = style->appearance(); |
@@ -98,7 +98,7 @@ void RenderTheme::adjustStyle(RenderStyle* style, Element* e, const CachedUAStyl |
else if (style->display() == LIST_ITEM || style->display() == TABLE) |
style->setDisplay(BLOCK); |
- if (uaStyle && uaStyle->hasAppearance && isControlStyled(style, uaStyle)) { |
+ if (uaStyleHasWebkitAppearance && isControlStyled(style, valuesUnchangedForWebkitAppearance)) { |
if (part == MenulistPart) { |
style->setAppearance(MenulistButtonPart); |
part = MenulistButtonPart; |
@@ -551,25 +551,8 @@ bool RenderTheme::isControlContainer(ControlPart appearance) const |
return appearance != CheckboxPart && appearance != RadioPart; |
} |
-static bool isBackgroundOrBorderStyled(const RenderStyle& style, const CachedUAStyle& uaStyle) |
+bool RenderTheme::isControlStyled(const RenderStyle* style, bool valuesUnchangedForWebkitAppearance) const |
{ |
- // Code below excludes the background-repeat from comparison by resetting it |
- FillLayer backgroundCopy = uaStyle.backgroundLayers; |
- FillLayer backgroundLayersCopy = style.backgroundLayers(); |
- backgroundCopy.setRepeatX(NoRepeatFill); |
- backgroundCopy.setRepeatY(NoRepeatFill); |
- backgroundLayersCopy.setRepeatX(NoRepeatFill); |
- backgroundLayersCopy.setRepeatY(NoRepeatFill); |
- // Test the style to see if the UA border and background match. |
- return style.border() != uaStyle.border |
- || backgroundLayersCopy != backgroundCopy |
- || style.visitedDependentColor(CSSPropertyBackgroundColor) != uaStyle.backgroundColor; |
-} |
- |
-bool RenderTheme::isControlStyled(const RenderStyle* style, const CachedUAStyle* uaStyle) const |
-{ |
- ASSERT(uaStyle); |
- |
switch (style->appearance()) { |
case PushButtonPart: |
case SquareButtonPart: |
@@ -580,13 +563,13 @@ bool RenderTheme::isControlStyled(const RenderStyle* style, const CachedUAStyle* |
case ContinuousCapacityLevelIndicatorPart: |
case DiscreteCapacityLevelIndicatorPart: |
case RatingLevelIndicatorPart: |
- return isBackgroundOrBorderStyled(*style, *uaStyle); |
+ return !valuesUnchangedForWebkitAppearance; |
case MenulistPart: |
case SearchFieldPart: |
case TextAreaPart: |
case TextFieldPart: |
- return isBackgroundOrBorderStyled(*style, *uaStyle) || style->boxShadow(); |
+ return !valuesUnchangedForWebkitAppearance || style->boxShadow(); |
case SliderHorizontalPart: |
case SliderVerticalPart: |