Index: Source/core/layout/LayoutTheme.cpp |
diff --git a/Source/core/layout/LayoutTheme.cpp b/Source/core/layout/LayoutTheme.cpp |
index 45ca6e2167a324bd7960a41eb5f58cfb8aea8d9f..5933606f8afb638a032610cebf7dd0911fc710e9 100644 |
--- a/Source/core/layout/LayoutTheme.cpp |
+++ b/Source/core/layout/LayoutTheme.cpp |
@@ -44,6 +44,7 @@ |
#include "core/html/shadow/SpinButtonElement.h" |
#include "core/html/shadow/TextControlInnerElements.h" |
#include "core/layout/PaintInfo.h" |
+#include "core/layout/style/AuthorStyleInfo.h" |
#include "core/layout/style/LayoutStyle.h" |
#include "core/page/FocusController.h" |
#include "core/page/Page.h" |
@@ -87,8 +88,10 @@ LayoutTheme::LayoutTheme() |
{ |
} |
-void LayoutTheme::adjustStyle(LayoutStyle& style, Element* e, const CachedUAStyle* uaStyle) |
+void LayoutTheme::adjustStyle(LayoutStyle& style, Element* e, const AuthorStyleInfo& authorStyle) |
{ |
+ ASSERT(style.hasAppearance()); |
+ |
// Force inline and table display styles to be inline-block (except for table- which is block) |
ControlPart part = style.appearance(); |
if (style.display() == INLINE || style.display() == INLINE_TABLE || style.display() == TABLE_ROW_GROUP |
@@ -99,7 +102,7 @@ void LayoutTheme::adjustStyle(LayoutStyle& style, Element* e, const CachedUAStyl |
else if (style.display() == LIST_ITEM || style.display() == TABLE) |
style.setDisplay(BLOCK); |
- if (uaStyle && isControlStyled(style, uaStyle)) { |
+ if (isControlStyled(style, authorStyle)) { |
if (part == MenulistPart) { |
style.setAppearance(MenulistButtonPart); |
part = MenulistButtonPart; |
@@ -545,25 +548,8 @@ bool LayoutTheme::isControlContainer(ControlPart appearance) const |
return appearance != CheckboxPart && appearance != RadioPart; |
} |
-static bool isBackgroundOrBorderStyled(const LayoutStyle& style, const CachedUAStyle* uaStyle) |
+bool LayoutTheme::isControlStyled(const LayoutStyle& style, const AuthorStyleInfo& authorStyle) 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 LayoutTheme::isControlStyled(const LayoutStyle& style, const CachedUAStyle* uaStyle) const |
-{ |
- ASSERT(uaStyle); |
- |
switch (style.appearance()) { |
case PushButtonPart: |
case SquareButtonPart: |
@@ -574,13 +560,13 @@ bool LayoutTheme::isControlStyled(const LayoutStyle& style, const CachedUAStyle* |
case ContinuousCapacityLevelIndicatorPart: |
case DiscreteCapacityLevelIndicatorPart: |
case RatingLevelIndicatorPart: |
- return isBackgroundOrBorderStyled(style, uaStyle); |
+ return authorStyle.specifiesBackground() || authorStyle.specifiesBorder(); |
case MenulistPart: |
case SearchFieldPart: |
case TextAreaPart: |
case TextFieldPart: |
- return isBackgroundOrBorderStyled(style, uaStyle) || style.boxShadow(); |
+ return authorStyle.specifiesBackground() || authorStyle.specifiesBorder() || style.boxShadow(); |
case SliderHorizontalPart: |
case SliderVerticalPart: |