⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 283269 in webkit


Ignore:
Timestamp:
Sep 29, 2021, 3:25:07 PM (5 years ago)
Author:
Aditya Keerthi
Message:

[css-ui] getComputedStyle() must return the specified value for '-webkit-appearance'
https://bugs.webkit.org/show_bug.cgi?id=230916
rdar://83640938

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt:

Rebaseline for progression.

Source/WebCore:

Currently, an element's appearance can be adjusted to "none" depending
on the applied CSS properties. For example, buttons that specify a
background-color lose their native appearance. The existing behavior is
implemented by modifying the appearance field on RenderStyle.

While the spec allows certain properties to affect appearance, it
also asserts that the computed value must be equal to the specific
value [1]. However, since the specified and adjusted values are stored
in the same field in RenderStyle, the computed value does not always
equal the specified value.

To fix, introduce an effectiveAppearance field to RenderStyle, which
stores the used appearance. The specified appearance remains in the
appearance field, ensuring the computed value adheres to the spec.

The new behavior matches Chrome and Firefox. This work is also necessary
for WebKit to support 'auto' as a valid appearance value, since the
used value will need to be adjusted depending on the element type, but
the computed value should remain 'auto'.

[1] https://www.w3.org/TR/css-ui-4/#appearance-switching

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::boundingBoxForQuads):

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::isApplePayButton const):

  • accessibility/AccessibilitySlider.cpp:

(WebCore::AccessibilitySlider::orientation const):

  • dom/Element.cpp:

(WebCore::Element::setActive):
(WebCore::Element::setHovered):

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::focusedOrActiveStateChanged):

  • html/HTMLFormControlElement.cpp:

(WebCore::HTMLFormControlElement::disabledStateChanged):

  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::setChecked):
(WebCore::HTMLInputElement::setIndeterminate):

  • html/HTMLMeterElement.cpp:

(WebCore::HTMLMeterElement::createElementRenderer):

  • html/HTMLOptionElement.cpp:

(WebCore::HTMLOptionElement::parseAttribute):

  • html/HTMLProgressElement.cpp:

(WebCore::HTMLProgressElement::createElementRenderer):

  • html/RangeInputType.cpp:

(WebCore::RangeInputType::handleKeydownEvent):

  • html/shadow/ProgressShadowElement.cpp:

(WebCore::ProgressShadowElement::rendererIsNeeded):
(WebCore::ProgressInnerElement::rendererIsNeeded):

  • html/shadow/SliderThumbElement.cpp:

(WebCore::hasVerticalAppearance):
(WebCore::RenderSliderThumb::updateAppearance):
(WebCore::SliderThumbElement::resolveCustomStyle):
(WebCore::SliderContainerElement::resolveCustomStyle):

  • html/shadow/TextControlInnerElements.cpp:

(WebCore::SearchFieldResultsButtonElement::resolveCustomStyle):

  • rendering/RenderAttachment.cpp:

(WebCore::RenderAttachment::shouldDrawBorder const):
(WebCore::RenderAttachment::paintReplaced):

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::addVisualOverflowFromTheme):
(WebCore::RenderBlock::baselinePosition const):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::determineBackgroundBleedAvoidance const):
(WebCore::RenderBox::paintBoxDecorations):
(WebCore::RenderBox::backgroundIsKnownToBeOpaqueInRect const):

  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::hasVisibleBoxDecorationStyle const):
(WebCore::RenderBoxModelObject::boxShadowShouldBeAppliedToBackground const):

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateCustomAppearance):
(WebCore::hasVisibleBoxDecorations):

  • rendering/RenderLayerScrollableArea.cpp:

(WebCore::RenderLayerScrollableArea::updateScrollbarsAfterStyleChange):
(WebCore::RenderLayerScrollableArea::updateScrollbarsAfterLayout):

  • rendering/RenderMenuList.cpp:

(RenderMenuList::menuStyle const):
(RenderMenuList::clientPaddingLeft const):
(RenderMenuList::clientPaddingRight const):

  • rendering/RenderProgress.cpp:

(WebCore::RenderProgress::updateAnimationState):

  • rendering/RenderTheme.cpp:

(WebCore::RenderTheme::adjustStyle):

Ensure the specified value is not modified by adjusting the
effectiveAppearance field instead of the appearance field.

(WebCore::RenderTheme::adjustSearchFieldDecorationStyle const):
(WebCore::RenderTheme::paint):
(WebCore::RenderTheme::paintBorderOnly):
(WebCore::RenderTheme::paintDecorations):
(WebCore::RenderTheme::baselinePosition const):
(WebCore::RenderTheme::isControlStyled const):
(WebCore::RenderTheme::adjustRepaintRect):
(WebCore::RenderTheme::supportsFocusRing const):
(WebCore::RenderTheme::isDefault const):
(WebCore::RenderTheme::paintSliderTicks):

  • rendering/RenderThemeAdwaita.cpp:

(WebCore::RenderThemeAdwaita::supportsFocusRing const):
(WebCore::RenderThemeAdwaita::popupInternalPaddingBox const):
(WebCore::RenderThemeAdwaita::paintSliderTrack):
(WebCore::RenderThemeAdwaita::adjustSliderThumbSize const):
(WebCore::RenderThemeAdwaita::paintSliderThumb):

  • rendering/RenderThemeIOS.mm:

(WebCore::RenderThemeIOS::adjustedPaintRect const):
(WebCore::RenderThemeIOS::baselinePosition const):
(WebCore::RenderThemeIOS::isControlStyled const):
(WebCore::RenderThemeIOS::popupInternalPaddingBox const):
(WebCore::RenderThemeIOS::adjustRoundBorderRadius):
(WebCore::RenderThemeIOS::paintSliderTrack):
(WebCore::RenderThemeIOS::adjustSliderThumbSize const):
(WebCore::RenderThemeIOS::adjustButtonStyle const):
(WebCore::RenderThemeIOS::supportsBoxShadow const):
(WebCore::RenderThemeIOS::paintSliderTicks):
(WebCore::RenderThemeIOS::paintSliderTrackWithFormControlRefresh):

  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::isControlStyled const):
(WebCore::RenderThemeMac::adjustRepaintRect):
(WebCore::RenderThemeMac::controlSupportsTints const):
(WebCore::RenderThemeMac::meterSizeForBounds const):
(WebCore::RenderThemeMac::levelIndicatorFor const):
(WebCore::RenderThemeMac::progressBarRectForBounds const):
(WebCore::RenderThemeMac::popupInternalPaddingBox const):
(WebCore::RenderThemeMac::paintSliderTrack):
(WebCore::RenderThemeMac::paintSliderThumb):
(WebCore::RenderThemeMac::adjustSliderThumbSize const):

  • rendering/RenderThemeWin.cpp:

(WebCore::RenderThemeWin::supportsFocusRing const):
(WebCore::RenderThemeWin::determineClassicState):
(WebCore::RenderThemeWin::determineState):
(WebCore::RenderThemeWin::determineSliderThumbState):
(WebCore::RenderThemeWin::determineButtonState):
(WebCore::RenderThemeWin::getClassicThemeData):
(WebCore::RenderThemeWin::getThemeData):
(WebCore::drawControl):
(WebCore::RenderThemeWin::paintSliderTrack):
(WebCore::RenderThemeWin::adjustSliderThumbSize const):

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::hashForTextAutosizing const):
(WebCore::RenderStyle::equalForTextAutosizing const):
(WebCore::rareNonInheritedDataChangeRequiresLayout):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::hasEffectiveAppearance const):
(WebCore::RenderStyle::effectiveAppearance const):
(WebCore::RenderStyle::setAppearance):
(WebCore::RenderStyle::setEffectiveAppearance):

  • rendering/style/StyleRareNonInheritedData.cpp:

(WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
(WebCore::StyleRareNonInheritedData::operator== const):

  • rendering/style/StyleRareNonInheritedData.h:
  • style/MatchedDeclarationsCache.cpp:

(WebCore::Style::MatchedDeclarationsCache::isCacheable):

  • style/StyleAdjuster.cpp:

(WebCore::Style::Adjuster::adjust const):

  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::resolveElement):

LayoutTests:

  • platform/gtk/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt:
Location:
trunk
Files:
41 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r283268 r283269  
     12021-09-29  Aditya Keerthi  <akeerthi@apple.com>
     2
     3        [css-ui] getComputedStyle() must return the specified value for '-webkit-appearance'
     4        https://bugs.webkit.org/show_bug.cgi?id=230916
     5        rdar://83640938
     6
     7        Reviewed by Simon Fraser.
     8
     9        * platform/gtk/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt:
     10        * platform/ios-wk2/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt:
     11        * platform/wpe/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt:
     12
    1132021-09-29  Robert Jenner  <Jenner@apple.com>
    214
  • trunk/LayoutTests/imported/w3c/ChangeLog

    r283244 r283269  
     12021-09-29  Aditya Keerthi  <akeerthi@apple.com>
     2
     3        [css-ui] getComputedStyle() must return the specified value for '-webkit-appearance'
     4        https://bugs.webkit.org/show_bug.cgi?id=230916
     5        rdar://83640938
     6
     7        Reviewed by Simon Fraser.
     8
     9        * web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt:
     10
     11        Rebaseline for progression.
     12
    1132021-09-29  Myles C. Maxfield  <mmaxfield@apple.com>
    214
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt

    r283223 r283269  
    33PASS -webkit-appearance: none
    44FAIL -webkit-appearance: auto assert_equals: style.WebkitAppearance (uppercase W) expected "auto" but got ""
    5 FAIL -webkit-appearance: button assert_equals: style.WebkitAppearance (uppercase W) expected "button" but got "none"
     5PASS -webkit-appearance: button
    66PASS -webkit-appearance: checkbox
    77PASS -webkit-appearance: listbox
    8 FAIL -webkit-appearance: menulist assert_equals: style.WebkitAppearance (uppercase W) expected "menulist" but got "menulist-button"
     8PASS -webkit-appearance: menulist
    99PASS -webkit-appearance: menulist-button
    10 FAIL -webkit-appearance: meter assert_equals: style.WebkitAppearance (uppercase W) expected "meter" but got "none"
    11 FAIL -webkit-appearance: progress-bar assert_equals: style.WebkitAppearance (uppercase W) expected "progress-bar" but got "none"
    12 FAIL -webkit-appearance: push-button assert_equals: style.WebkitAppearance (uppercase W) expected "push-button" but got "none"
     10PASS -webkit-appearance: meter
     11PASS -webkit-appearance: progress-bar
     12PASS -webkit-appearance: push-button
    1313PASS -webkit-appearance: radio
    1414PASS -webkit-appearance: searchfield
    1515PASS -webkit-appearance: slider-horizontal
    16 FAIL -webkit-appearance: square-button assert_equals: style.WebkitAppearance (uppercase W) expected "square-button" but got "none"
     16PASS -webkit-appearance: square-button
    1717PASS -webkit-appearance: textarea
    1818PASS -webkit-appearance: textfield
  • trunk/LayoutTests/platform/gtk/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt

    r283223 r283269  
    33PASS -webkit-appearance: none
    44FAIL -webkit-appearance: auto assert_equals: style.WebkitAppearance (uppercase W) expected "auto" but got ""
    5 FAIL -webkit-appearance: button assert_equals: style.WebkitAppearance (uppercase W) expected "button" but got "none"
     5PASS -webkit-appearance: button
    66PASS -webkit-appearance: checkbox
    7 FAIL -webkit-appearance: listbox assert_equals: style.WebkitAppearance (uppercase W) expected "listbox" but got "none"
    8 FAIL -webkit-appearance: menulist assert_equals: style.WebkitAppearance (uppercase W) expected "menulist" but got "menulist-button"
     7PASS -webkit-appearance: listbox
     8PASS -webkit-appearance: menulist
    99PASS -webkit-appearance: menulist-button
    10 FAIL -webkit-appearance: meter assert_equals: style.WebkitAppearance (uppercase W) expected "meter" but got "none"
    11 FAIL -webkit-appearance: progress-bar assert_equals: style.WebkitAppearance (uppercase W) expected "progress-bar" but got "none"
     10PASS -webkit-appearance: meter
     11PASS -webkit-appearance: progress-bar
    1212PASS -webkit-appearance: push-button
    1313PASS -webkit-appearance: radio
    1414PASS -webkit-appearance: searchfield
    1515PASS -webkit-appearance: slider-horizontal
    16 FAIL -webkit-appearance: square-button assert_equals: style.WebkitAppearance (uppercase W) expected "square-button" but got "none"
     16PASS -webkit-appearance: square-button
    1717PASS -webkit-appearance: textarea
    1818PASS -webkit-appearance: textfield
  • trunk/LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt

    r283223 r283269  
    33PASS -webkit-appearance: none
    44FAIL -webkit-appearance: auto assert_equals: style.WebkitAppearance (uppercase W) expected "auto" but got ""
    5 FAIL -webkit-appearance: button assert_equals: style.WebkitAppearance (uppercase W) expected "button" but got "none"
     5PASS -webkit-appearance: button
    66PASS -webkit-appearance: checkbox
    7 FAIL -webkit-appearance: listbox assert_equals: style.WebkitAppearance (uppercase W) expected "listbox" but got "none"
    8 FAIL -webkit-appearance: menulist assert_equals: style.WebkitAppearance (uppercase W) expected "menulist" but got "menulist-button"
     7PASS -webkit-appearance: listbox
     8PASS -webkit-appearance: menulist
    99PASS -webkit-appearance: menulist-button
    10 FAIL -webkit-appearance: meter assert_equals: style.WebkitAppearance (uppercase W) expected "meter" but got "none"
    11 FAIL -webkit-appearance: progress-bar assert_equals: style.WebkitAppearance (uppercase W) expected "progress-bar" but got "none"
     10PASS -webkit-appearance: meter
     11PASS -webkit-appearance: progress-bar
    1212PASS -webkit-appearance: push-button
    1313PASS -webkit-appearance: radio
    1414PASS -webkit-appearance: searchfield
    1515PASS -webkit-appearance: slider-horizontal
    16 FAIL -webkit-appearance: square-button assert_equals: style.WebkitAppearance (uppercase W) expected "square-button" but got "none"
     16PASS -webkit-appearance: square-button
    1717PASS -webkit-appearance: textarea
    1818PASS -webkit-appearance: textfield
  • trunk/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt

    r283223 r283269  
    33PASS -webkit-appearance: none
    44FAIL -webkit-appearance: auto assert_equals: style.WebkitAppearance (uppercase W) expected "auto" but got ""
    5 FAIL -webkit-appearance: button assert_equals: style.WebkitAppearance (uppercase W) expected "button" but got "none"
     5PASS -webkit-appearance: button
    66PASS -webkit-appearance: checkbox
    7 FAIL -webkit-appearance: listbox assert_equals: style.WebkitAppearance (uppercase W) expected "listbox" but got "none"
    8 FAIL -webkit-appearance: menulist assert_equals: style.WebkitAppearance (uppercase W) expected "menulist" but got "menulist-button"
     7PASS -webkit-appearance: listbox
     8PASS -webkit-appearance: menulist
    99PASS -webkit-appearance: menulist-button
    10 FAIL -webkit-appearance: meter assert_equals: style.WebkitAppearance (uppercase W) expected "meter" but got "none"
    11 FAIL -webkit-appearance: progress-bar assert_equals: style.WebkitAppearance (uppercase W) expected "progress-bar" but got "none"
     10PASS -webkit-appearance: meter
     11PASS -webkit-appearance: progress-bar
    1212PASS -webkit-appearance: push-button
    1313PASS -webkit-appearance: radio
    1414PASS -webkit-appearance: searchfield
    1515PASS -webkit-appearance: slider-horizontal
    16 FAIL -webkit-appearance: square-button assert_equals: style.WebkitAppearance (uppercase W) expected "square-button" but got "none"
     16PASS -webkit-appearance: square-button
    1717PASS -webkit-appearance: textarea
    1818PASS -webkit-appearance: textfield
  • trunk/Source/WebCore/ChangeLog

    r283260 r283269  
     12021-09-29  Aditya Keerthi  <akeerthi@apple.com>
     2
     3        [css-ui] getComputedStyle() must return the specified value for '-webkit-appearance'
     4        https://bugs.webkit.org/show_bug.cgi?id=230916
     5        rdar://83640938
     6
     7        Reviewed by Simon Fraser.
     8
     9        Currently, an element's appearance can be adjusted to "none" depending
     10        on the applied CSS properties. For example, buttons that specify a
     11        background-color lose their native appearance. The existing behavior is
     12        implemented by modifying the appearance field on RenderStyle.
     13
     14        While the spec allows certain properties to affect appearance, it
     15        also asserts that the computed value must be equal to the specific
     16        value [1]. However, since the specified and adjusted values are stored
     17        in the same field in RenderStyle, the computed value does not always
     18        equal the specified value.
     19
     20        To fix, introduce an effectiveAppearance field to RenderStyle, which
     21        stores the used appearance. The specified appearance remains in the
     22        appearance field, ensuring the computed value adheres to the spec.
     23
     24        The new behavior matches Chrome and Firefox. This work is also necessary
     25        for WebKit to support 'auto' as a valid appearance value, since the
     26        used value will need to be adjusted depending on the element type, but
     27        the computed value should remain 'auto'.
     28
     29        [1] https://www.w3.org/TR/css-ui-4/#appearance-switching
     30
     31        * accessibility/AccessibilityObject.cpp:
     32        (WebCore::AccessibilityObject::boundingBoxForQuads):
     33        * accessibility/AccessibilityRenderObject.cpp:
     34        (WebCore::AccessibilityRenderObject::isApplePayButton const):
     35        * accessibility/AccessibilitySlider.cpp:
     36        (WebCore::AccessibilitySlider::orientation const):
     37        * dom/Element.cpp:
     38        (WebCore::Element::setActive):
     39        (WebCore::Element::setHovered):
     40        * editing/FrameSelection.cpp:
     41        (WebCore::FrameSelection::focusedOrActiveStateChanged):
     42        * html/HTMLFormControlElement.cpp:
     43        (WebCore::HTMLFormControlElement::disabledStateChanged):
     44        * html/HTMLInputElement.cpp:
     45        (WebCore::HTMLInputElement::setChecked):
     46        (WebCore::HTMLInputElement::setIndeterminate):
     47        * html/HTMLMeterElement.cpp:
     48        (WebCore::HTMLMeterElement::createElementRenderer):
     49        * html/HTMLOptionElement.cpp:
     50        (WebCore::HTMLOptionElement::parseAttribute):
     51        * html/HTMLProgressElement.cpp:
     52        (WebCore::HTMLProgressElement::createElementRenderer):
     53        * html/RangeInputType.cpp:
     54        (WebCore::RangeInputType::handleKeydownEvent):
     55        * html/shadow/ProgressShadowElement.cpp:
     56        (WebCore::ProgressShadowElement::rendererIsNeeded):
     57        (WebCore::ProgressInnerElement::rendererIsNeeded):
     58        * html/shadow/SliderThumbElement.cpp:
     59        (WebCore::hasVerticalAppearance):
     60        (WebCore::RenderSliderThumb::updateAppearance):
     61        (WebCore::SliderThumbElement::resolveCustomStyle):
     62        (WebCore::SliderContainerElement::resolveCustomStyle):
     63        * html/shadow/TextControlInnerElements.cpp:
     64        (WebCore::SearchFieldResultsButtonElement::resolveCustomStyle):
     65        * rendering/RenderAttachment.cpp:
     66        (WebCore::RenderAttachment::shouldDrawBorder const):
     67        (WebCore::RenderAttachment::paintReplaced):
     68        * rendering/RenderBlock.cpp:
     69        (WebCore::RenderBlock::addVisualOverflowFromTheme):
     70        (WebCore::RenderBlock::baselinePosition const):
     71        * rendering/RenderBox.cpp:
     72        (WebCore::RenderBox::determineBackgroundBleedAvoidance const):
     73        (WebCore::RenderBox::paintBoxDecorations):
     74        (WebCore::RenderBox::backgroundIsKnownToBeOpaqueInRect const):
     75        * rendering/RenderBoxModelObject.cpp:
     76        (WebCore::RenderBoxModelObject::hasVisibleBoxDecorationStyle const):
     77        (WebCore::RenderBoxModelObject::boxShadowShouldBeAppliedToBackground const):
     78        * rendering/RenderLayerBacking.cpp:
     79        (WebCore::RenderLayerBacking::updateCustomAppearance):
     80        (WebCore::hasVisibleBoxDecorations):
     81        * rendering/RenderLayerScrollableArea.cpp:
     82        (WebCore::RenderLayerScrollableArea::updateScrollbarsAfterStyleChange):
     83        (WebCore::RenderLayerScrollableArea::updateScrollbarsAfterLayout):
     84        * rendering/RenderMenuList.cpp:
     85        (RenderMenuList::menuStyle const):
     86        (RenderMenuList::clientPaddingLeft const):
     87        (RenderMenuList::clientPaddingRight const):
     88        * rendering/RenderProgress.cpp:
     89        (WebCore::RenderProgress::updateAnimationState):
     90        * rendering/RenderTheme.cpp:
     91        (WebCore::RenderTheme::adjustStyle):
     92
     93        Ensure the specified value is not modified by adjusting the
     94        effectiveAppearance field instead of the appearance field.
     95
     96        (WebCore::RenderTheme::adjustSearchFieldDecorationStyle const):
     97        (WebCore::RenderTheme::paint):
     98        (WebCore::RenderTheme::paintBorderOnly):
     99        (WebCore::RenderTheme::paintDecorations):
     100        (WebCore::RenderTheme::baselinePosition const):
     101        (WebCore::RenderTheme::isControlStyled const):
     102        (WebCore::RenderTheme::adjustRepaintRect):
     103        (WebCore::RenderTheme::supportsFocusRing const):
     104        (WebCore::RenderTheme::isDefault const):
     105        (WebCore::RenderTheme::paintSliderTicks):
     106        * rendering/RenderThemeAdwaita.cpp:
     107        (WebCore::RenderThemeAdwaita::supportsFocusRing const):
     108        (WebCore::RenderThemeAdwaita::popupInternalPaddingBox const):
     109        (WebCore::RenderThemeAdwaita::paintSliderTrack):
     110        (WebCore::RenderThemeAdwaita::adjustSliderThumbSize const):
     111        (WebCore::RenderThemeAdwaita::paintSliderThumb):
     112        * rendering/RenderThemeIOS.mm:
     113        (WebCore::RenderThemeIOS::adjustedPaintRect const):
     114        (WebCore::RenderThemeIOS::baselinePosition const):
     115        (WebCore::RenderThemeIOS::isControlStyled const):
     116        (WebCore::RenderThemeIOS::popupInternalPaddingBox const):
     117        (WebCore::RenderThemeIOS::adjustRoundBorderRadius):
     118        (WebCore::RenderThemeIOS::paintSliderTrack):
     119        (WebCore::RenderThemeIOS::adjustSliderThumbSize const):
     120        (WebCore::RenderThemeIOS::adjustButtonStyle const):
     121        (WebCore::RenderThemeIOS::supportsBoxShadow const):
     122        (WebCore::RenderThemeIOS::paintSliderTicks):
     123        (WebCore::RenderThemeIOS::paintSliderTrackWithFormControlRefresh):
     124        * rendering/RenderThemeMac.mm:
     125        (WebCore::RenderThemeMac::isControlStyled const):
     126        (WebCore::RenderThemeMac::adjustRepaintRect):
     127        (WebCore::RenderThemeMac::controlSupportsTints const):
     128        (WebCore::RenderThemeMac::meterSizeForBounds const):
     129        (WebCore::RenderThemeMac::levelIndicatorFor const):
     130        (WebCore::RenderThemeMac::progressBarRectForBounds const):
     131        (WebCore::RenderThemeMac::popupInternalPaddingBox const):
     132        (WebCore::RenderThemeMac::paintSliderTrack):
     133        (WebCore::RenderThemeMac::paintSliderThumb):
     134        (WebCore::RenderThemeMac::adjustSliderThumbSize const):
     135        * rendering/RenderThemeWin.cpp:
     136        (WebCore::RenderThemeWin::supportsFocusRing const):
     137        (WebCore::RenderThemeWin::determineClassicState):
     138        (WebCore::RenderThemeWin::determineState):
     139        (WebCore::RenderThemeWin::determineSliderThumbState):
     140        (WebCore::RenderThemeWin::determineButtonState):
     141        (WebCore::RenderThemeWin::getClassicThemeData):
     142        (WebCore::RenderThemeWin::getThemeData):
     143        (WebCore::drawControl):
     144        (WebCore::RenderThemeWin::paintSliderTrack):
     145        (WebCore::RenderThemeWin::adjustSliderThumbSize const):
     146        * rendering/style/RenderStyle.cpp:
     147        (WebCore::RenderStyle::hashForTextAutosizing const):
     148        (WebCore::RenderStyle::equalForTextAutosizing const):
     149        (WebCore::rareNonInheritedDataChangeRequiresLayout):
     150        * rendering/style/RenderStyle.h:
     151        (WebCore::RenderStyle::hasEffectiveAppearance const):
     152        (WebCore::RenderStyle::effectiveAppearance const):
     153        (WebCore::RenderStyle::setAppearance):
     154        (WebCore::RenderStyle::setEffectiveAppearance):
     155        * rendering/style/StyleRareNonInheritedData.cpp:
     156        (WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
     157        (WebCore::StyleRareNonInheritedData::operator== const):
     158        * rendering/style/StyleRareNonInheritedData.h:
     159        * style/MatchedDeclarationsCache.cpp:
     160        (WebCore::Style::MatchedDeclarationsCache::isCacheable):
     161        * style/StyleAdjuster.cpp:
     162        (WebCore::Style::Adjuster::adjust const):
     163        * style/StyleTreeResolver.cpp:
     164        (WebCore::Style::TreeResolver::resolveElement):
     165
    11662021-09-29  Alan Bujtas  <zalan@apple.com>
    2167
  • trunk/Source/WebCore/accessibility/AccessibilityObject.cpp

    r283115 r283269  
    787787        FloatRect r = quad.enclosingBoundingBox();
    788788        if (!r.isEmpty()) {
    789             if (obj->style().hasAppearance())
     789            if (obj->style().hasEffectiveAppearance())
    790790                obj->theme().adjustRepaintRect(*obj, r);
    791791            result.unite(r);
  • trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp

    r283078 r283269  
    38493849    if (!m_renderer)
    38503850        return false;
    3851     return m_renderer->style().appearance() == ApplePayButtonPart;
     3851    return m_renderer->style().effectiveAppearance() == ApplePayButtonPart;
    38523852}
    38533853
  • trunk/Source/WebCore/accessibility/AccessibilitySlider.cpp

    r271166 r283269  
    6767    const RenderStyle& style = m_renderer->style();
    6868
    69     ControlPart styleAppearance = style.appearance();
     69    ControlPart styleAppearance = style.effectiveAppearance();
    7070    switch (styleAppearance) {
    7171    case SliderThumbHorizontalPart:
  • trunk/Source/WebCore/dom/Element.cpp

    r283237 r283269  
    710710
    711711    bool reactsToPress = false;
    712     if (renderer()->style().hasAppearance() && renderer()->theme().stateChanged(*renderer(), ControlStates::States::Pressed))
     712    if (renderer()->style().hasEffectiveAppearance() && renderer()->theme().stateChanged(*renderer(), ControlStates::States::Pressed))
    713713        reactsToPress = true;
    714714
     
    807807    }
    808808
    809     if (auto* style = renderStyle(); style && style->hasAppearance())
     809    if (auto* style = renderStyle(); style && style->hasEffectiveAppearance())
    810810        renderer()->theme().stateChanged(*renderer(), ControlStates::States::Hovered);
    811811}
  • trunk/Source/WebCore/editing/FrameSelection.cpp

    r282784 r283269  
    21052105        element->invalidateStyleForSubtree();
    21062106        if (RenderObject* renderer = element->renderer())
    2107             if (renderer && renderer->style().hasAppearance())
     2107            if (renderer && renderer->style().hasEffectiveAppearance())
    21082108                renderer->theme().stateChanged(*renderer, ControlStates::States::Focused);
    21092109    }
  • trunk/Source/WebCore/html/HTMLFormControlElement.cpp

    r283134 r283269  
    184184    updateWillValidateAndValidity();
    185185    invalidateStyleForSubtree();
    186     if (renderer() && renderer()->style().hasAppearance())
     186    if (renderer() && renderer()->style().hasEffectiveAppearance())
    187187        renderer()->theme().stateChanged(*renderer(), ControlStates::States::Enabled);
    188188}
  • trunk/Source/WebCore/html/HTMLInputElement.cpp

    r282799 r283269  
    986986    if (RadioButtonGroups* buttons = radioButtonGroups())
    987987        buttons->updateCheckedState(*this);
    988     if (renderer() && renderer()->style().hasAppearance())
     988    if (renderer() && renderer()->style().hasEffectiveAppearance())
    989989        renderer()->theme().stateChanged(*renderer(), ControlStates::States::Checked);
    990990    updateValidity();
     
    10101010    invalidateStyleForSubtree();
    10111011
    1012     if (renderer() && renderer()->style().hasAppearance())
     1012    if (renderer() && renderer()->style().hasEffectiveAppearance())
    10131013        renderer()->theme().stateChanged(*renderer(), ControlStates::States::Checked);
    10141014}
  • trunk/Source/WebCore/html/HTMLMeterElement.cpp

    r274997 r283269  
    5959RenderPtr<RenderElement> HTMLMeterElement::createElementRenderer(RenderStyle&& style, const RenderTreePosition&)
    6060{
    61     if (!RenderTheme::singleton().supportsMeter(style.appearance(), *this))
     61    if (!RenderTheme::singleton().supportsMeter(style.effectiveAppearance(), *this))
    6262        return RenderElement::createFor(*this, WTFMove(style));
    6363
  • trunk/Source/WebCore/html/HTMLOptionElement.cpp

    r276547 r283269  
    180180        if (oldDisabled != m_disabled) {
    181181            invalidateStyleForSubtree();
    182             if (renderer() && renderer()->style().hasAppearance())
     182            if (renderer() && renderer()->style().hasEffectiveAppearance())
    183183                renderer()->theme().stateChanged(*renderer(), ControlStates::States::Enabled);
    184184        }
  • trunk/Source/WebCore/html/HTMLProgressElement.cpp

    r246490 r283269  
    5858RenderPtr<RenderElement> HTMLProgressElement::createElementRenderer(RenderStyle&& style, const RenderTreePosition&)
    5959{
    60     if (!style.hasAppearance())
     60    if (!style.hasEffectiveAppearance())
    6161        return RenderElement::createFor(*this, WTFMove(style));
    6262
  • trunk/Source/WebCore/html/RangeInputType.cpp

    r279054 r283269  
    206206    bool isVertical = false;
    207207    if (auto* renderer = element()->renderer()) {
    208         ControlPart part = renderer->style().appearance();
     208        ControlPart part = renderer->style().effectiveAppearance();
    209209        isVertical = part == SliderVerticalPart || part == MediaVolumeSliderPart;
    210210    }
  • trunk/Source/WebCore/html/shadow/ProgressShadowElement.cpp

    r261013 r283269  
    5656{
    5757    RenderObject* progressRenderer = progressElement()->renderer();
    58     return progressRenderer && !progressRenderer->style().hasAppearance() && HTMLDivElement::rendererIsNeeded(style);
     58    return progressRenderer && !progressRenderer->style().hasEffectiveAppearance() && HTMLDivElement::rendererIsNeeded(style);
    5959}
    6060
     
    7272{
    7373    RenderObject* progressRenderer = progressElement()->renderer();
    74     return progressRenderer && !progressRenderer->style().hasAppearance() && HTMLDivElement::rendererIsNeeded(style);   
     74    return progressRenderer && !progressRenderer->style().hasEffectiveAppearance() && HTMLDivElement::rendererIsNeeded(style);   
    7575}
    7676
  • trunk/Source/WebCore/html/shadow/SliderThumbElement.cpp

    r278253 r283269  
    7878
    7979#if ENABLE(VIDEO)
    80     if (sliderStyle.appearance() == MediaVolumeSliderPart && input.renderer()->theme().usesVerticalVolumeSlider())
     80    if (sliderStyle.effectiveAppearance() == MediaVolumeSliderPart && input.renderer()->theme().usesVerticalVolumeSlider())
    8181        return true;
    8282#endif
    8383
    84     return sliderStyle.appearance() == SliderVerticalPart;
     84    return sliderStyle.effectiveAppearance() == SliderVerticalPart;
    8585}
    8686
     
    9494void RenderSliderThumb::updateAppearance(const RenderStyle* parentStyle)
    9595{
    96     if (parentStyle->appearance() == SliderVerticalPart)
    97         mutableStyle().setAppearance(SliderThumbVerticalPart);
    98     else if (parentStyle->appearance() == SliderHorizontalPart)
    99         mutableStyle().setAppearance(SliderThumbHorizontalPart);
    100     else if (parentStyle->appearance() == MediaSliderPart)
    101         mutableStyle().setAppearance(MediaSliderThumbPart);
    102     else if (parentStyle->appearance() == MediaVolumeSliderPart)
    103         mutableStyle().setAppearance(MediaVolumeSliderThumbPart);
    104     else if (parentStyle->appearance() == MediaFullScreenVolumeSliderPart)
    105         mutableStyle().setAppearance(MediaFullScreenVolumeSliderThumbPart);
    106     if (style().hasAppearance()) {
     96    if (parentStyle->effectiveAppearance() == SliderVerticalPart)
     97        mutableStyle().setEffectiveAppearance(SliderThumbVerticalPart);
     98    else if (parentStyle->effectiveAppearance() == SliderHorizontalPart)
     99        mutableStyle().setEffectiveAppearance(SliderThumbHorizontalPart);
     100    else if (parentStyle->effectiveAppearance() == MediaSliderPart)
     101        mutableStyle().setEffectiveAppearance(MediaSliderThumbPart);
     102    else if (parentStyle->effectiveAppearance() == MediaVolumeSliderPart)
     103        mutableStyle().setEffectiveAppearance(MediaVolumeSliderThumbPart);
     104    else if (parentStyle->effectiveAppearance() == MediaFullScreenVolumeSliderPart)
     105        mutableStyle().setEffectiveAppearance(MediaFullScreenVolumeSliderThumbPart);
     106    if (style().hasEffectiveAppearance()) {
    107107        ASSERT(element());
    108108        theme().adjustSliderThumbSize(mutableStyle(), element());
     
    596596        return std::nullopt;
    597597
    598     switch (hostStyle->appearance()) {
     598    switch (hostStyle->effectiveAppearance()) {
    599599    case MediaSliderPart:
    600600    case MediaSliderThumbPart:
     
    650650        return std::nullopt;
    651651
    652     switch (hostStyle->appearance()) {
     652    switch (hostStyle->effectiveAppearance()) {
    653653    case MediaSliderPart:
    654654    case MediaSliderThumbPart:
  • trunk/Source/WebCore/html/shadow/TextControlInnerElements.cpp

    r282799 r283269  
    246246        return std::nullopt;
    247247
    248     if (shadowHostStyle && shadowHostStyle->appearance() != SearchFieldPart) {
     248    if (shadowHostStyle && shadowHostStyle->effectiveAppearance() != SearchFieldPart) {
    249249        SetForScope<bool> canAdjustStyleForAppearance(m_canAdjustStyleForAppearance, false);
    250250        return resolveStyle(&parentStyle);
  • trunk/Source/WebCore/rendering/RenderAttachment.cpp

    r275413 r283269  
    8080bool RenderAttachment::shouldDrawBorder() const
    8181{
    82     if (style().appearance() == BorderlessAttachmentPart)
     82    if (style().effectiveAppearance() == BorderlessAttachmentPart)
    8383        return false;
    8484    return m_shouldDrawBorder;
     
    8787void RenderAttachment::paintReplaced(PaintInfo& paintInfo, const LayoutPoint& offset)
    8888{
    89     if (paintInfo.phase != PaintPhase::Selection || !hasVisibleBoxDecorations() || !style().hasAppearance())
     89    if (paintInfo.phase != PaintPhase::Selection || !hasVisibleBoxDecorations() || !style().hasEffectiveAppearance())
    9090        return;
    9191
  • trunk/Source/WebCore/rendering/RenderBlock.cpp

    r282736 r283269  
    755755void RenderBlock::addVisualOverflowFromTheme()
    756756{
    757     if (!style().hasAppearance())
     757    if (!style().hasEffectiveAppearance())
    758758        return;
    759759
     
    24522452        // is turned off, checkboxes/radios will still have decent baselines.
    24532453        // FIXME: Need to patch form controls to deal with vertical lines.
    2454         if (style().hasAppearance() && !theme().isControlContainer(style().appearance()))
     2454        if (style().hasEffectiveAppearance() && !theme().isControlContainer(style().effectiveAppearance()))
    24552455            return theme().baselinePosition(*this);
    24562456           
  • trunk/Source/WebCore/rendering/RenderBox.cpp

    r283100 r283269  
    15041504    if (borderObscuresBackgroundEdge(contextScaling))
    15051505        return BackgroundBleedShrinkBackground;
    1506     if (!style.hasAppearance() && borderObscuresBackground() && backgroundHasOpaqueTopLayer())
     1506    if (!style.hasEffectiveAppearance() && borderObscuresBackground() && backgroundHasOpaqueTopLayer())
    15071507        return BackgroundBleedBackgroundOverBorder;
    15081508
     
    15401540    // The theme will tell us whether or not we should also paint the CSS background.
    15411541    bool borderOrBackgroundPaintingIsNeeded = true;
    1542     if (style().hasAppearance()) {
     1542    if (style().hasEffectiveAppearance()) {
    15431543        ControlStates* controlStates = controlStatesForRenderer(*this);
    15441544        borderOrBackgroundPaintingIsNeeded = theme().paint(*this, *controlStates, paintInfo, paintRect);
     
    15531553        paintBackground(paintInfo, paintRect, bleedAvoidance);
    15541554
    1555         if (style().hasAppearance())
     1555        if (style().hasEffectiveAppearance())
    15561556            theme().paintDecorations(*this, paintInfo, paintRect);
    15571557    }
     
    15591559
    15601560    // The theme will tell us whether or not we should also paint the CSS border.
    1561     if (bleedAvoidance != BackgroundBleedBackgroundOverBorder && (!style().hasAppearance() || (borderOrBackgroundPaintingIsNeeded && theme().paintBorderOnly(*this, paintInfo, paintRect))) && style().hasVisibleBorderDecoration())
     1561    if (bleedAvoidance != BackgroundBleedBackgroundOverBorder && (!style().hasEffectiveAppearance() || (borderOrBackgroundPaintingIsNeeded && theme().paintBorderOnly(*this, paintInfo, paintRect))) && style().hasVisibleBorderDecoration())
    15621562        paintBorder(paintInfo, paintRect, style(), bleedAvoidance);
    15631563
     
    16341634    // In this case it is safe to not assume opaqueness.
    16351635    // FIXME: May be ask theme if it paints opaque.
    1636     if (style().hasAppearance())
     1636    if (style().hasEffectiveAppearance())
    16371637        return false;
    16381638    // FIXME: Check the opaqueness of background images.
  • trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp

    r283258 r283269  
    194194bool RenderBoxModelObject::hasVisibleBoxDecorationStyle() const
    195195{
    196     return hasBackground() || style().hasVisibleBorderDecoration() || style().hasAppearance() || style().boxShadow();
     196    return hasBackground() || style().hasVisibleBorderDecoration() || style().hasEffectiveAppearance() || style().boxShadow();
    197197}
    198198
     
    23322332        return false;
    23332333
    2334     if (style().hasAppearance())
     2334    if (style().hasEffectiveAppearance())
    23352335        return false;
    23362336
  • trunk/Source/WebCore/rendering/RenderLayerBacking.cpp

    r282957 r283269  
    772772void RenderLayerBacking::updateCustomAppearance(const RenderStyle& style)
    773773{
    774     ControlPart appearance = style.appearance();
     774    ControlPart appearance = style.effectiveAppearance();
    775775    if (appearance == MediaControlsLightBarBackgroundPart)
    776776        m_graphicsLayer->setCustomAppearance(GraphicsLayer::CustomAppearance::LightBackdrop);
     
    24692469static inline bool hasVisibleBoxDecorations(const RenderStyle& style)
    24702470{
    2471     return style.hasVisibleBorder() || style.hasBorderRadius() || style.hasOutline() || style.hasAppearance() || style.boxShadow() || style.hasFilter();
     2471    return style.hasVisibleBorder() || style.hasBorderRadius() || style.hasOutline() || style.hasEffectiveAppearance() || style.boxShadow() || style.hasFilter();
    24722472}
    24732473
  • trunk/Source/WebCore/rendering/RenderLayerScrollableArea.cpp

    r282903 r283269  
    11191119
    11201120    // List box parts handle the scrollbars by themselves so we have nothing to do.
    1121     if (box->style().appearance() == ListboxPart)
     1121    if (box->style().effectiveAppearance() == ListboxPart)
    11221122        return;
    11231123
     
    11391139
    11401140    // List box parts handle the scrollbars by themselves so we have nothing to do.
    1141     if (box->style().appearance() == ListboxPart)
     1141    if (box->style().effectiveAppearance() == ListboxPart)
    11421142        return;
    11431143
  • trunk/Source/WebCore/rendering/RenderMenuList.cpp

    r277321 r283269  
    541541    return PopupMenuStyle(styleToUse.visitedDependentColorWithColorFilter(CSSPropertyColor), styleToUse.visitedDependentColorWithColorFilter(CSSPropertyBackgroundColor),
    542542        styleToUse.fontCascade(), styleToUse.visibility() == Visibility::Visible, styleToUse.display() == DisplayType::None,
    543         style().hasAppearance() && style().appearance() == MenulistPart, styleToUse.textIndent(),
     543        style().hasEffectiveAppearance() && style().effectiveAppearance() == MenulistPart, styleToUse.textIndent(),
    544544        style().direction(), isOverride(style().unicodeBidi()), PopupMenuStyle::DefaultBackgroundColor,
    545545        PopupMenuStyle::SelectPopup, theme().popupMenuSize(styleToUse, absBounds));
     
    573573LayoutUnit RenderMenuList::clientPaddingLeft() const
    574574{
    575     if ((style().appearance() == MenulistPart || style().appearance() == MenulistButtonPart) && style().direction() == TextDirection::RTL) {
     575    if ((style().effectiveAppearance() == MenulistPart || style().effectiveAppearance() == MenulistButtonPart) && style().direction() == TextDirection::RTL) {
    576576        // For these appearance values, the theme applies padding to leave room for the
    577577        // drop-down button. But leaving room for the button inside the popup menu itself
     
    587587LayoutUnit RenderMenuList::clientPaddingRight() const
    588588{
    589     if ((style().appearance() == MenulistPart || style().appearance() == MenulistButtonPart) && style().direction() == TextDirection::LTR)
     589    if ((style().effectiveAppearance() == MenulistPart || style().effectiveAppearance() == MenulistButtonPart) && style().direction() == TextDirection::LTR)
    590590        return endOfLinePadding;
    591591
  • trunk/Source/WebCore/rendering/RenderProgress.cpp

    r275942 r283269  
    9292    m_animationRepeatInterval = theme().animationRepeatIntervalForProgressBar(*this);
    9393
    94     bool animating = style().hasAppearance() && m_animationRepeatInterval > 0_s && !isDeterminate();
     94    bool animating = style().hasEffectiveAppearance() && m_animationRepeatInterval > 0_s && !isDeterminate();
    9595    if (animating == m_animating)
    9696        return;
  • trunk/Source/WebCore/rendering/RenderTheme.cpp

    r282440 r283269  
    9191        switch (part) {
    9292        case MenulistPart:
    93             style.setAppearance(MenulistButtonPart);
     93            style.setEffectiveAppearance(MenulistButtonPart);
    9494            part = MenulistButtonPart;
    9595            break;
    9696        default:
    97             style.setAppearance(NoControlPart);
     97            style.setEffectiveAppearance(NoControlPart);
    9898            break;
    9999        }
    100100    }
    101101
    102     if (!style.hasAppearance())
     102    if (!style.hasEffectiveAppearance())
    103103        return;
    104104
     
    192192
    193193    // Call the appropriate style adjustment method based off the appearance value.
    194     switch (style.appearance()) {
     194    switch (style.effectiveAppearance()) {
    195195#if !USE(NEW_THEME)
    196196    case CheckboxPart:
     
    274274{
    275275    if (is<SearchFieldResultsButtonElement>(element) && !downcast<SearchFieldResultsButtonElement>(*element).canAdjustStyleForAppearance()) {
    276         style.setAppearance(NoControlPart);
     276        style.setEffectiveAppearance(NoControlPart);
    277277        return;
    278278    }
    279279
    280     switch (style.appearance()) {
     280    switch (style.effectiveAppearance()) {
    281281    case SearchFieldDecorationPart:
    282282        return adjustSearchFieldDecorationPartStyle(style, element);
     
    306306        return false;
    307307
    308     ControlPart part = box.style().appearance();
     308    ControlPart part = box.style().effectiveAppearance();
    309309    IntRect integralSnappedRect = snappedIntRect(rect);
    310310    float deviceScaleFactor = box.document().deviceScaleFactor();
     
    451451#if PLATFORM(IOS_FAMILY)
    452452    UNUSED_PARAM(rect);
    453     return box.style().appearance() != NoControlPart;
     453    return box.style().effectiveAppearance() != NoControlPart;
    454454#else
    455455    FloatRect devicePixelSnappedRect = snapRectToDevicePixels(rect, box.document().deviceScaleFactor());
    456456    // Call the appropriate paint method based off the appearance value.
    457     switch (box.style().appearance()) {
     457    switch (box.style().effectiveAppearance()) {
    458458    case TextFieldPart:
    459459        return paintTextField(box, paintInfo, devicePixelSnappedRect);
     
    508508
    509509    // Call the appropriate paint method based off the appearance value.
    510     switch (box.style().appearance()) {
     510    switch (box.style().effectiveAppearance()) {
    511511    case MenulistButtonPart:
    512512        paintMenuListButtonDecorations(box, paintInfo, devicePixelSnappedRect);
     
    721721{
    722722#if USE(NEW_THEME)
    723     return box.height() + box.marginTop() + Theme::singleton().baselinePositionAdjustment(box.style().appearance()) * box.style().effectiveZoom();
     723    return box.height() + box.marginTop() + Theme::singleton().baselinePositionAdjustment(box.style().effectiveAppearance()) * box.style().effectiveZoom();
    724724#else
    725725    return box.height() + box.marginTop();
     
    736736bool RenderTheme::isControlStyled(const RenderStyle& style, const RenderStyle& userAgentStyle) const
    737737{
    738     switch (style.appearance()) {
     738    switch (style.effectiveAppearance()) {
    739739    case PushButtonPart:
    740740    case SquareButtonPart:
     
    768768#if USE(NEW_THEME)
    769769    ControlStates states(extractControlStatesForRenderer(renderer));
    770     Theme::singleton().inflateControlPaintRect(renderer.style().appearance(), states, rect, renderer.style().effectiveZoom());
     770    Theme::singleton().inflateControlPaintRect(renderer.style().effectiveAppearance(), states, rect, renderer.style().effectiveZoom());
    771771#else
    772772    UNUSED_PARAM(renderer);
     
    777777bool RenderTheme::supportsFocusRing(const RenderStyle& style) const
    778778{
    779     return (style.hasAppearance() && style.appearance() != TextFieldPart && style.appearance() != TextAreaPart && style.appearance() != MenulistButtonPart && style.appearance() != ListboxPart);
     779    return (style.hasEffectiveAppearance() && style.effectiveAppearance() != TextFieldPart && style.effectiveAppearance() != TextAreaPart && style.effectiveAppearance() != MenulistButtonPart && style.effectiveAppearance() != ListboxPart);
    780780}
    781781
     
    925925        return false;
    926926
    927     return o.style().appearance() == DefaultButtonPart;
     927    return o.style().effectiveAppearance() == DefaultButtonPart;
    928928}
    929929
     
    10901090    double min = input.minimum();
    10911091    double max = input.maximum();
    1092     ControlPart part = o.style().appearance();
     1092    ControlPart part = o.style().effectiveAppearance();
    10931093    // We don't support ticks on alternate sliders like MediaVolumeSliders.
    10941094    if (part !=  SliderHorizontalPart && part != SliderVerticalPart)
  • trunk/Source/WebCore/rendering/RenderThemeAdwaita.cpp

    r279987 r283269  
    112112bool RenderThemeAdwaita::supportsFocusRing(const RenderStyle& style) const
    113113{
    114     switch (style.appearance()) {
     114    switch (style.effectiveAppearance()) {
    115115    case PushButtonPart:
    116116    case ButtonPart:
     
    361361LengthBox RenderThemeAdwaita::popupInternalPaddingBox(const RenderStyle& style, const Settings&) const
    362362{
    363     if (style.appearance() == NoControlPart)
     363    if (style.effectiveAppearance() == NoControlPart)
    364364        return { };
    365365
     
    499499    GraphicsContextStateSaver stateSaver(graphicsContext);
    500500
    501     ControlPart part = renderObject.style().appearance();
     501    ControlPart part = renderObject.style().effectiveAppearance();
    502502    ASSERT(part == SliderHorizontalPart || part == SliderVerticalPart);
    503503
     
    582582void RenderThemeAdwaita::adjustSliderThumbSize(RenderStyle& style, const Element*) const
    583583{
    584     ControlPart part = style.appearance();
     584    ControlPart part = style.effectiveAppearance();
    585585    if (part != SliderThumbHorizontalPart && part != SliderThumbVerticalPart)
    586586        return;
     
    595595    GraphicsContextStateSaver stateSaver(graphicsContext);
    596596
    597     ASSERT(renderObject.style().appearance() == SliderThumbHorizontalPart || renderObject.style().appearance() == SliderThumbVerticalPart);
     597    ASSERT(renderObject.style().effectiveAppearance() == SliderThumbHorizontalPart || renderObject.style().effectiveAppearance() == SliderThumbVerticalPart);
    598598
    599599    SRGBA<uint8_t> sliderThumbBackgroundColor;
  • trunk/Source/WebCore/rendering/RenderThemeIOS.mm

    r282844 r283269  
    447447{
    448448    // Workaround for <rdar://problem/6209763>. Force the painting bounds of checkboxes and radio controls to be square.
    449     if (box.style().appearance() == CheckboxPart || box.style().appearance() == RadioPart) {
     449    if (box.style().effectiveAppearance() == CheckboxPart || box.style().effectiveAppearance() == RadioPart) {
    450450        float width = std::min(paintRect.width(), paintRect.height());
    451451        float height = width;
     
    458458int RenderThemeIOS::baselinePosition(const RenderBox& box) const
    459459{
    460     if (box.style().appearance() == CheckboxPart || box.style().appearance() == RadioPart)
     460    if (box.style().effectiveAppearance() == CheckboxPart || box.style().effectiveAppearance() == RadioPart)
    461461        return box.marginTop() + box.height() - 2; // The baseline is 2px up from the bottom of the checkbox/radio in AppKit.
    462     if (box.style().appearance() == MenulistPart)
     462    if (box.style().effectiveAppearance() == MenulistPart)
    463463        return box.marginTop() + box.height() - 5; // This is to match AppKit. There might be a better way to calculate this though.
    464464    return RenderTheme::baselinePosition(box);
     
    468468{
    469469    // Buttons and MenulistButtons are styled if they contain a background image.
    470     if (style.appearance() == PushButtonPart || style.appearance() == MenulistButtonPart)
     470    if (style.effectiveAppearance() == PushButtonPart || style.effectiveAppearance() == MenulistButtonPart)
    471471        return !style.visitedDependentColor(CSSPropertyBackgroundColor).isVisible() || style.backgroundLayers().hasImage();
    472472
    473     if (style.appearance() == TextFieldPart || style.appearance() == TextAreaPart)
     473    if (style.effectiveAppearance() == TextFieldPart || style.effectiveAppearance() == TextAreaPart)
    474474        return style.backgroundLayers() != userAgentStyle.backgroundLayers();
    475475
     
    596596    }
    597597
    598     if (style.appearance() == MenulistButtonPart) {
     598    if (style.effectiveAppearance() == MenulistButtonPart) {
    599599        if (style.direction() == TextDirection::RTL)
    600600            return { 0, 0, 0, static_cast<int>(padding + style.borderTopWidth()) };
     
    625625void RenderThemeIOS::adjustRoundBorderRadius(RenderStyle& style, RenderBox& box)
    626626{
    627     if (!canAdjustBorderRadiusForAppearance(style.appearance(), box) || style.backgroundLayers().hasImage())
     627    if (!canAdjustBorderRadiusForAppearance(style.effectiveAppearance(), box) || style.backgroundLayers().hasImage())
    628628        return;
    629629
     
    877877
    878878    bool isHorizontal = true;
    879     switch (style.appearance()) {
     879    switch (style.effectiveAppearance()) {
    880880    case SliderHorizontalPart:
    881881        isHorizontal = true;
     
    951951void RenderThemeIOS::adjustSliderThumbSize(RenderStyle& style, const Element*) const
    952952{
    953     if (style.appearance() != SliderThumbHorizontalPart && style.appearance() != SliderThumbVerticalPart)
     953    if (style.effectiveAppearance() != SliderThumbHorizontalPart && style.effectiveAppearance() != SliderThumbVerticalPart)
    954954        return;
    955955
     
    11331133
    11341134#if ENABLE(INPUT_TYPE_COLOR)
    1135     if (style.appearance() == ColorWellPart)
     1135    if (style.effectiveAppearance() == ColorWellPart)
    11361136        return;
    11371137#endif
     
    12891289{
    12901290    // FIXME: See if additional native controls can support box shadows.
    1291     switch (style.appearance()) {
     1291    switch (style.effectiveAppearance()) {
    12921292    case SliderThumbHorizontalPart:
    12931293    case SliderThumbVerticalPart:
     
    23712371    FloatRoundedRect::Radii tickCornerRadii(tickCornerRadius);
    23722372
    2373     bool isHorizontal = box.style().appearance() == SliderHorizontalPart;
     2373    bool isHorizontal = box.style().effectiveAppearance() == SliderHorizontalPart;
    23742374    if (isHorizontal) {
    23752375        tickRect.setWidth(tickWidth);
     
    24182418    FloatRect trackClip = rect;
    24192419
    2420     switch (box.style().appearance()) {
     2420    switch (box.style().effectiveAppearance()) {
    24212421    case SliderHorizontalPart:
    24222422        // Inset slightly so the thumb covers the edge.
  • trunk/Source/WebCore/rendering/RenderThemeMac.mm

    r283237 r283269  
    750750bool RenderThemeMac::isControlStyled(const RenderStyle& style, const RenderStyle& userAgentStyle) const
    751751{
    752     auto appearance = style.appearance();
     752    auto appearance = style.effectiveAppearance();
    753753    if (appearance == TextFieldPart || appearance == TextAreaPart || appearance == SearchFieldPart || appearance == ListboxPart)
    754754        return style.border() != userAgentStyle.border();
     
    784784void RenderThemeMac::adjustRepaintRect(const RenderObject& renderer, FloatRect& rect)
    785785{
    786     ControlPart part = renderer.style().appearance();
     786    ControlPart part = renderer.style().effectiveAppearance();
    787787
    788788#if USE(NEW_THEME)
     
    876876
    877877    // Checkboxes only have tint when checked.
    878     if (o.style().appearance() == CheckboxPart)
     878    if (o.style().effectiveAppearance() == CheckboxPart)
    879879        return isChecked(o);
    880880
     
    11551155IntSize RenderThemeMac::meterSizeForBounds(const RenderMeter& renderMeter, const IntRect& bounds) const
    11561156{
    1157     if (NoControlPart == renderMeter.style().appearance())
     1157    if (NoControlPart == renderMeter.style().effectiveAppearance())
    11581158        return bounds.size();
    11591159
     
    12141214{
    12151215    const RenderStyle& style = renderMeter.style();
    1216     ASSERT(style.appearance() != NoControlPart);
     1216    ASSERT(style.effectiveAppearance() != NoControlPart);
    12171217
    12181218    if (!m_levelIndicator)
     
    12431243    }
    12441244
    1245     [cell setLevelIndicatorStyle:levelIndicatorStyleFor(style.appearance())];
     1245    [cell setLevelIndicatorStyle:levelIndicatorStyleFor(style.effectiveAppearance())];
    12461246    [cell setUserInterfaceLayoutDirection:style.isLeftToRightDirection() ? NSUserInterfaceLayoutDirectionLeftToRight : NSUserInterfaceLayoutDirectionRightToLeft];
    12471247    [cell setMinValue:element->min()];
     
    12751275    int maxDimension = static_cast<int>(std::numeric_limits<ushort>::max());
    12761276    IntRect progressBarBounds(bounds.x(), bounds.y(), std::min(bounds.width(), maxDimension), std::min(bounds.height(), maxDimension));
    1277     if (NoControlPart == renderObject.style().appearance())
     1277    if (NoControlPart == renderObject.style().effectiveAppearance())
    12781278        return progressBarBounds;
    12791279
     
    15901590LengthBox RenderThemeMac::popupInternalPaddingBox(const RenderStyle& style, const Settings&) const
    15911591{
    1592     if (style.appearance() == MenulistPart) {
     1592    if (style.effectiveAppearance() == MenulistPart) {
    15931593        const int* padding = popupButtonPadding(controlSizeForFont(style), style.direction() == TextDirection::RTL);
    15941594        return { static_cast<int>(padding[topPadding] * style.effectiveZoom()),
     
    15981598    }
    15991599
    1600     if (style.appearance() == MenulistButtonPart) {
     1600    if (style.effectiveAppearance() == MenulistButtonPart) {
    16011601        float arrowWidth = baseArrowWidth * (style.computedFontPixelSize() / baseFontSize);
    16021602        float rightPadding = ceilf(arrowWidth + (arrowPaddingBefore + arrowPaddingAfter + paddingBeforeSeparator) * style.effectiveZoom());
     
    16951695    float zoomedTrackWidth = trackWidth * zoomLevel;
    16961696
    1697     if (o.style().appearance() ==  SliderHorizontalPart || o.style().appearance() ==  MediaSliderPart) {
     1697    if (o.style().effectiveAppearance() ==  SliderHorizontalPart || o.style().effectiveAppearance() ==  MediaSliderPart) {
    16981698        bounds.setHeight(zoomedTrackWidth);
    16991699        bounds.setY(r.y() + r.height() / 2 - zoomedTrackWidth / 2);
    1700     } else if (o.style().appearance() == SliderVerticalPart) {
     1700    } else if (o.style().effectiveAppearance() == SliderVerticalPart) {
    17011701        bounds.setWidth(zoomedTrackWidth);
    17021702        bounds.setX(r.x() + r.width() / 2 - zoomedTrackWidth / 2);
     
    17171717    RetainPtr<CGFunctionRef> mainFunction = adoptCF(CGFunctionCreate(NULL, 1, NULL, 4, NULL, &mainCallbacks));
    17181718    RetainPtr<CGShadingRef> mainShading;
    1719     if (o.style().appearance() == SliderVerticalPart)
     1719    if (o.style().effectiveAppearance() == SliderVerticalPart)
    17201720        mainShading = adoptCF(CGShadingCreateAxial(cspace, CGPointMake(bounds.x(),  bounds.maxY()), CGPointMake(bounds.maxX(), bounds.maxY()), mainFunction.get(), false, false));
    17211721    else
     
    17401740bool RenderThemeMac::paintSliderThumb(const RenderObject& o, const PaintInfo& paintInfo, const IntRect& r)
    17411741{
    1742     NSSliderCell* sliderThumbCell = o.style().appearance() == SliderThumbVerticalPart
     1742    NSSliderCell* sliderThumbCell = o.style().effectiveAppearance() == SliderThumbVerticalPart
    17431743        ? sliderThumbVertical()
    17441744        : sliderThumbHorizontal();
     
    17551755    // Update the pressed state using the NSCell tracking methods, since that's how NSSliderCell keeps track of it.
    17561756    bool oldPressed;
    1757     if (o.style().appearance() == SliderThumbVerticalPart)
     1757    if (o.style().effectiveAppearance() == SliderThumbVerticalPart)
    17581758        oldPressed = m_isSliderThumbVerticalPressed;
    17591759    else
     
    17621762    bool pressed = isPressed(o);
    17631763
    1764     if (o.style().appearance() == SliderThumbVerticalPart)
     1764    if (o.style().effectiveAppearance() == SliderThumbVerticalPart)
    17651765        m_isSliderThumbVerticalPressed = pressed;
    17661766    else
     
    17781778    FloatRect bounds = r;
    17791779    // Make the height of the vertical slider slightly larger so NSSliderCell will draw a vertical slider.
    1780     if (o.style().appearance() == SliderThumbVerticalPart)
     1780    if (o.style().effectiveAppearance() == SliderThumbVerticalPart)
    17811781        bounds.setHeight(bounds.height() + verticalSliderHeightPadding * o.style().effectiveZoom());
    17821782
     
    21152115{
    21162116    float zoomLevel = style.effectiveZoom();
    2117     if (style.appearance() == SliderThumbHorizontalPart || style.appearance() == SliderThumbVerticalPart) {
     2117    if (style.effectiveAppearance() == SliderThumbHorizontalPart || style.effectiveAppearance() == SliderThumbVerticalPart) {
    21182118        style.setWidth(Length(static_cast<int>(sliderThumbThickness * zoomLevel), LengthType::Fixed));
    21192119        style.setHeight(Length(static_cast<int>(sliderThumbThickness * zoomLevel), LengthType::Fixed));
  • trunk/Source/WebCore/rendering/RenderThemeWin.cpp

    r282237 r283269  
    380380bool RenderThemeWin::supportsFocusRing(const RenderStyle& style) const
    381381{
    382     return supportsFocus(style.appearance());
     382    return supportsFocus(style.effectiveAppearance());
    383383}
    384384
     
    386386{
    387387    unsigned state = 0;
    388     switch (o.style().appearance()) {
     388    switch (o.style().effectiveAppearance()) {
    389389        case PushButtonPart:
    390390        case ButtonPart:
     
    398398        case RadioPart:
    399399        case CheckboxPart:
    400             state = (o.style().appearance() == RadioPart) ? DFCS_BUTTONRADIO : DFCS_BUTTONCHECK;
     400            state = (o.style().effectiveAppearance() == RadioPart) ? DFCS_BUTTONRADIO : DFCS_BUTTONCHECK;
    401401            if (isChecked(o))
    402402                state |= DFCS_CHECKED;
     
    433433{
    434434    unsigned result = TS_NORMAL;
    435     ControlPart appearance = o.style().appearance();
     435    ControlPart appearance = o.style().effectiveAppearance();
    436436    if (!isEnabled(o))
    437437        result = TS_DISABLED;
     
    456456    if (!isEnabled(o))
    457457        result = TUS_DISABLED;
    458     else if (supportsFocus(o.style().appearance()) && isFocused(o))
     458    else if (supportsFocus(o.style().effectiveAppearance()) && isFocused(o))
    459459        result = TUS_FOCUSED;
    460460    else if (isPressed(o))
     
    472472    else if (isPressed(o))
    473473        result = PBS_PRESSED;
    474     else if (supportsFocus(o.style().appearance()) && isFocused(o))
     474    else if (supportsFocus(o.style().effectiveAppearance()) && isFocused(o))
    475475        result = PBS_DEFAULTED;
    476476    else if (isHovered(o))
     
    497497{
    498498    ThemeData result;
    499     switch (o.style().appearance()) {
     499    switch (o.style().effectiveAppearance()) {
    500500        case PushButtonPart:
    501501        case ButtonPart:
     
    552552
    553553    ThemeData result;
    554     switch (o.style().appearance()) {
     554    switch (o.style().effectiveAppearance()) {
    555555        case PushButtonPart:
    556556        case ButtonPart:
     
    634634            ::DrawEdge(hdc, &widgetRect, EDGE_SUNKEN, BF_RECT | BF_ADJUST);
    635635            ::FillRect(hdc, &widgetRect, (HBRUSH)GetStockObject(GRAY_BRUSH));
    636         } else if ((o.style().appearance() == SliderThumbHorizontalPart
    637         || o.style().appearance() == SliderThumbVerticalPart)
     636        } else if ((o.style().effectiveAppearance() == SliderThumbHorizontalPart
     637        || o.style().effectiveAppearance() == SliderThumbVerticalPart)
    638638        && (themeData.m_part == TKP_THUMBBOTTOM || themeData.m_part == TKP_THUMBTOP
    639639        || themeData.m_part == TKP_THUMBLEFT || themeData.m_part == TKP_THUMBRIGHT)) {
     
    659659        } else {
    660660            // Push buttons, buttons, checkboxes and radios, and the dropdown arrow in menulists.
    661             if (o.style().appearance() == DefaultButtonPart) {
     661            if (o.style().effectiveAppearance() == DefaultButtonPart) {
    662662                HBRUSH brush = ::GetSysColorBrush(COLOR_3DDKSHADOW);
    663663                ::FrameRect(hdc, &widgetRect, brush);
     
    811811    IntRect bounds = r;
    812812   
    813     if (o.style().appearance() ==  SliderHorizontalPart) {
     813    if (o.style().effectiveAppearance() ==  SliderHorizontalPart) {
    814814        bounds.setHeight(trackWidth);
    815815        bounds.setY(r.y() + r.height() / 2 - trackWidth / 2);
    816     } else if (o.style().appearance() == SliderVerticalPart) {
     816    } else if (o.style().effectiveAppearance() == SliderVerticalPart) {
    817817        bounds.setWidth(trackWidth);
    818818        bounds.setX(r.x() + r.width() / 2 - trackWidth / 2);
     
    834834void RenderThemeWin::adjustSliderThumbSize(RenderStyle& style, const Element*) const
    835835{
    836     ControlPart part = style.appearance();
     836    ControlPart part = style.effectiveAppearance();
    837837    if (part == SliderThumbVerticalPart) {
    838838        style.setWidth(Length(sliderThumbHeight, LengthType::Fixed));
  • trunk/Source/WebCore/rendering/style/RenderStyle.cpp

    r283082 r283269  
    458458{
    459459    // FIXME: Not a very smart hash. Could be improved upon. See <https://bugs.webkit.org/show_bug.cgi?id=121131>.
    460     unsigned hash = m_rareNonInheritedData->appearance;
     460    unsigned hash = m_rareNonInheritedData->effectiveAppearance;
    461461    hash ^= m_rareNonInheritedData->marginBeforeCollapse;
    462462    hash ^= m_rareNonInheritedData->marginAfterCollapse;
     
    480480bool RenderStyle::equalForTextAutosizing(const RenderStyle& other) const
    481481{
    482     return m_rareNonInheritedData->appearance == other.m_rareNonInheritedData->appearance
     482    return m_rareNonInheritedData->effectiveAppearance == other.m_rareNonInheritedData->effectiveAppearance
    483483        && m_rareNonInheritedData->marginBeforeCollapse == other.m_rareNonInheritedData->marginBeforeCollapse
    484484        && m_rareNonInheritedData->marginAfterCollapse == other.m_rareNonInheritedData->marginAfterCollapse
     
    651651    ASSERT(&first != &second);
    652652
    653     if (first.appearance != second.appearance
     653    if (first.effectiveAppearance != second.effectiveAppearance
    654654        || first.marginBeforeCollapse != second.marginBeforeCollapse
    655655        || first.marginAfterCollapse != second.marginAfterCollapse
  • trunk/Source/WebCore/rendering/style/RenderStyle.h

    r283082 r283269  
    216216
    217217    bool hasAppearance() const { return appearance() != NoControlPart; }
     218    bool hasEffectiveAppearance() const { return effectiveAppearance() != NoControlPart; }
    218219
    219220    bool hasBackground() const;
     
    510511    bool hasOpacity() const { return m_rareNonInheritedData->opacity < 1; }
    511512    ControlPart appearance() const { return static_cast<ControlPart>(m_rareNonInheritedData->appearance); }
     513    ControlPart effectiveAppearance() const { return static_cast<ControlPart>(m_rareNonInheritedData->effectiveAppearance); }
    512514    AspectRatioType aspectRatioType() const { return static_cast<AspectRatioType>(m_rareNonInheritedData->aspectRatioType); }
    513515    double aspectRatioWidth() const { return m_rareNonInheritedData->aspectRatioWidth; }
     
    11321134    void setHasAutoCaretColor() { SET_VAR(m_rareInheritedData, hasAutoCaretColor, true); SET_VAR(m_rareInheritedData, caretColor, currentColor()); }
    11331135    void setOpacity(float f) { float v = clampTo<float>(f, 0.f, 1.f); SET_VAR(m_rareNonInheritedData, opacity, v); }
    1134     void setAppearance(ControlPart a) { SET_VAR(m_rareNonInheritedData, appearance, a); }
     1136    void setAppearance(ControlPart a) { SET_VAR(m_rareNonInheritedData, appearance, a); SET_VAR(m_rareNonInheritedData, effectiveAppearance, a); }
     1137    void setEffectiveAppearance(ControlPart a) { SET_VAR(m_rareNonInheritedData, effectiveAppearance, a); }
    11351138    // For valid values of box-align see http://www.w3.org/TR/2009/WD-css3-flexbox-20090723/#alignment
    11361139    void setBoxAlign(BoxAlignment a) { SET_NESTED_VAR(m_rareNonInheritedData, deprecatedFlexibleBox, align, static_cast<unsigned>(a)); }
  • trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp

    r282750 r283269  
    9393    , marginAfterCollapse(static_cast<unsigned>(MarginCollapse::Collapse))
    9494    , appearance(static_cast<unsigned>(RenderStyle::initialAppearance()))
     95    , effectiveAppearance(static_cast<unsigned>(RenderStyle::initialAppearance()))
    9596    , borderFit(static_cast<unsigned>(RenderStyle::initialBorderFit()))
    9697    , textCombine(static_cast<unsigned>(RenderStyle::initialTextCombine()))
     
    193194    , marginAfterCollapse(o.marginAfterCollapse)
    194195    , appearance(o.appearance)
     196    , effectiveAppearance(o.effectiveAppearance)
    195197    , borderFit(o.borderFit)
    196198    , textCombine(o.textCombine)
     
    297299        && marginAfterCollapse == o.marginAfterCollapse
    298300        && appearance == o.appearance
     301        && effectiveAppearance == o.effectiveAppearance
    299302        && borderFit == o.borderFit
    300303        && textCombine == o.textCombine
  • trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.h

    r282750 r283269  
    202202    unsigned marginAfterCollapse : 2; // MarginCollapse
    203203    unsigned appearance : 6; // EAppearance
     204    unsigned effectiveAppearance : 6; // EAppearance
    204205    unsigned borderFit : 1; // BorderFit
    205206    unsigned textCombine : 1; // CSS3 text-combine properties
  • trunk/Source/WebCore/style/MatchedDeclarationsCache.cpp

    r278277 r283269  
    5454    if (style.hasAttrContent() || (style.styleType() != PseudoId::None && parentStyle.hasAttrContent()))
    5555        return false;
    56     if (style.hasAppearance())
     56    if (style.hasEffectiveAppearance())
    5757        return false;
    5858    if (style.zoom() != RenderStyle::initialZoom())
  • trunk/Source/WebCore/style/StyleAdjuster.cpp

    r283079 r283269  
    460460
    461461    // Menulists should have visible overflow
    462     if (style.appearance() == MenulistPart) {
     462    if (style.effectiveAppearance() == MenulistPart) {
    463463        style.setOverflowX(Overflow::Visible);
    464464        style.setOverflowY(Overflow::Visible);
  • trunk/Source/WebCore/style/StyleTreeResolver.cpp

    r283134 r283269  
    247247        || is<HTMLProgressElement>(element)
    248248        || (is<HTMLInputElement>(element) && downcast<HTMLInputElement>(element).isSearchField())) {
    249         if (existingStyle && update.style->appearance() != existingStyle->appearance()) {
     249        if (existingStyle && update.style->effectiveAppearance() != existingStyle->effectiveAppearance()) {
    250250            update.change = Change::Renderer;
    251251            descendantsToResolve = DescendantsToResolve::All;
Note: See TracChangeset for help on using the changeset viewer.