<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[283269] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/283269">283269</a></dd>
<dt>Author</dt> <dd>akeerthi@apple.com</dd>
<dt>Date</dt> <dd>2021-09-29 15:25:07 -0700 (Wed, 29 Sep 2021)</dd>
</dl>

<h3>Log Message</h3>
<pre>[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:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsimportedw3cChangeLog">trunk/LayoutTests/imported/w3c/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssuiappearancecssom001expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformgtkimportedw3cwebplatformtestscsscssuiappearancecssom001expectedtxt">trunk/LayoutTests/platform/gtk/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformioswk2importedw3cwebplatformtestscsscssuiappearancecssom001expectedtxt">trunk/LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformwpeimportedw3cwebplatformtestscsscssuiappearancecssom001expectedtxt">trunk/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilityObjectcpp">trunk/Source/WebCore/accessibility/AccessibilityObject.cpp</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilityRenderObjectcpp">trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilitySlidercpp">trunk/Source/WebCore/accessibility/AccessibilitySlider.cpp</a></li>
<li><a href="#trunkSourceWebCoredomElementcpp">trunk/Source/WebCore/dom/Element.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingFrameSelectioncpp">trunk/Source/WebCore/editing/FrameSelection.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLFormControlElementcpp">trunk/Source/WebCore/html/HTMLFormControlElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLInputElementcpp">trunk/Source/WebCore/html/HTMLInputElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMeterElementcpp">trunk/Source/WebCore/html/HTMLMeterElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLOptionElementcpp">trunk/Source/WebCore/html/HTMLOptionElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLProgressElementcpp">trunk/Source/WebCore/html/HTMLProgressElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlRangeInputTypecpp">trunk/Source/WebCore/html/RangeInputType.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlshadowProgressShadowElementcpp">trunk/Source/WebCore/html/shadow/ProgressShadowElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlshadowSliderThumbElementcpp">trunk/Source/WebCore/html/shadow/SliderThumbElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlshadowTextControlInnerElementscpp">trunk/Source/WebCore/html/shadow/TextControlInnerElements.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderAttachmentcpp">trunk/Source/WebCore/rendering/RenderAttachment.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBlockcpp">trunk/Source/WebCore/rendering/RenderBlock.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBoxcpp">trunk/Source/WebCore/rendering/RenderBox.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBoxModelObjectcpp">trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderLayerBackingcpp">trunk/Source/WebCore/rendering/RenderLayerBacking.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderLayerScrollableAreacpp">trunk/Source/WebCore/rendering/RenderLayerScrollableArea.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderMenuListcpp">trunk/Source/WebCore/rendering/RenderMenuList.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderProgresscpp">trunk/Source/WebCore/rendering/RenderProgress.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderThemecpp">trunk/Source/WebCore/rendering/RenderTheme.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderThemeAdwaitacpp">trunk/Source/WebCore/rendering/RenderThemeAdwaita.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderThemeIOSmm">trunk/Source/WebCore/rendering/RenderThemeIOS.mm</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderThemeMacmm">trunk/Source/WebCore/rendering/RenderThemeMac.mm</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderThemeWincpp">trunk/Source/WebCore/rendering/RenderThemeWin.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleRenderStylecpp">trunk/Source/WebCore/rendering/style/RenderStyle.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleRenderStyleh">trunk/Source/WebCore/rendering/style/RenderStyle.h</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleStyleRareNonInheritedDatacpp">trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleStyleRareNonInheritedDatah">trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.h</a></li>
<li><a href="#trunkSourceWebCorestyleMatchedDeclarationsCachecpp">trunk/Source/WebCore/style/MatchedDeclarationsCache.cpp</a></li>
<li><a href="#trunkSourceWebCorestyleStyleAdjustercpp">trunk/Source/WebCore/style/StyleAdjuster.cpp</a></li>
<li><a href="#trunkSourceWebCorestyleStyleTreeResolvercpp">trunk/Source/WebCore/style/StyleTreeResolver.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog      2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/LayoutTests/ChangeLog 2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2021-09-29  Aditya Keerthi  <akeerthi@apple.com>
+
+        [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.
+
+        * 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:
+
</ins><span class="cx"> 2021-09-29  Robert Jenner  <Jenner@apple.com>
</span><span class="cx"> 
</span><span class="cx">         [ Catalina+ Debug wk2 ] fast/speechrecognition/start-recognition-after-gum.html is a flaky timeout
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/ChangeLog (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/ChangeLog 2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/LayoutTests/imported/w3c/ChangeLog    2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2021-09-29  Aditya Keerthi  <akeerthi@apple.com>
+
+        [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.
+
+        * web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt:
+
+        Rebaseline for progression.
+
</ins><span class="cx"> 2021-09-29  Myles C. Maxfield  <mmaxfield@apple.com>
</span><span class="cx"> 
</span><span class="cx">         Update WPT's IDL for font palettes
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssuiappearancecssom001expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt   2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt      2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -2,18 +2,18 @@
</span><span class="cx"> 
</span><span class="cx"> PASS -webkit-appearance: none
</span><span class="cx"> FAIL -webkit-appearance: auto assert_equals: style.WebkitAppearance (uppercase W) expected "auto" but got ""
</span><del>-FAIL -webkit-appearance: button assert_equals: style.WebkitAppearance (uppercase W) expected "button" but got "none"
</del><ins>+PASS -webkit-appearance: button
</ins><span class="cx"> PASS -webkit-appearance: checkbox
</span><span class="cx"> PASS -webkit-appearance: listbox
</span><del>-FAIL -webkit-appearance: menulist assert_equals: style.WebkitAppearance (uppercase W) expected "menulist" but got "menulist-button"
</del><ins>+PASS -webkit-appearance: menulist
</ins><span class="cx"> PASS -webkit-appearance: menulist-button
</span><del>-FAIL -webkit-appearance: meter assert_equals: style.WebkitAppearance (uppercase W) expected "meter" but got "none"
-FAIL -webkit-appearance: progress-bar assert_equals: style.WebkitAppearance (uppercase W) expected "progress-bar" but got "none"
-FAIL -webkit-appearance: push-button assert_equals: style.WebkitAppearance (uppercase W) expected "push-button" but got "none"
</del><ins>+PASS -webkit-appearance: meter
+PASS -webkit-appearance: progress-bar
+PASS -webkit-appearance: push-button
</ins><span class="cx"> PASS -webkit-appearance: radio
</span><span class="cx"> PASS -webkit-appearance: searchfield
</span><span class="cx"> PASS -webkit-appearance: slider-horizontal
</span><del>-FAIL -webkit-appearance: square-button assert_equals: style.WebkitAppearance (uppercase W) expected "square-button" but got "none"
</del><ins>+PASS -webkit-appearance: square-button
</ins><span class="cx"> PASS -webkit-appearance: textarea
</span><span class="cx"> PASS -webkit-appearance: textfield
</span><span class="cx"> FAIL -webkit-appearance: bogus-button (invalid) assert_equals: style.WebkitAppearance (uppercase W) expected (undefined) undefined but got (string) "button"
</span></span></pre></div>
<a id="trunkLayoutTestsplatformgtkimportedw3cwebplatformtestscsscssuiappearancecssom001expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/gtk/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/gtk/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt      2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/LayoutTests/platform/gtk/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt 2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -2,18 +2,18 @@
</span><span class="cx"> 
</span><span class="cx"> PASS -webkit-appearance: none
</span><span class="cx"> FAIL -webkit-appearance: auto assert_equals: style.WebkitAppearance (uppercase W) expected "auto" but got ""
</span><del>-FAIL -webkit-appearance: button assert_equals: style.WebkitAppearance (uppercase W) expected "button" but got "none"
</del><ins>+PASS -webkit-appearance: button
</ins><span class="cx"> PASS -webkit-appearance: checkbox
</span><del>-FAIL -webkit-appearance: listbox assert_equals: style.WebkitAppearance (uppercase W) expected "listbox" but got "none"
-FAIL -webkit-appearance: menulist assert_equals: style.WebkitAppearance (uppercase W) expected "menulist" but got "menulist-button"
</del><ins>+PASS -webkit-appearance: listbox
+PASS -webkit-appearance: menulist
</ins><span class="cx"> PASS -webkit-appearance: menulist-button
</span><del>-FAIL -webkit-appearance: meter assert_equals: style.WebkitAppearance (uppercase W) expected "meter" but got "none"
-FAIL -webkit-appearance: progress-bar assert_equals: style.WebkitAppearance (uppercase W) expected "progress-bar" but got "none"
</del><ins>+PASS -webkit-appearance: meter
+PASS -webkit-appearance: progress-bar
</ins><span class="cx"> PASS -webkit-appearance: push-button
</span><span class="cx"> PASS -webkit-appearance: radio
</span><span class="cx"> PASS -webkit-appearance: searchfield
</span><span class="cx"> PASS -webkit-appearance: slider-horizontal
</span><del>-FAIL -webkit-appearance: square-button assert_equals: style.WebkitAppearance (uppercase W) expected "square-button" but got "none"
</del><ins>+PASS -webkit-appearance: square-button
</ins><span class="cx"> PASS -webkit-appearance: textarea
</span><span class="cx"> PASS -webkit-appearance: textfield
</span><span class="cx"> FAIL -webkit-appearance: bogus-button (invalid) assert_equals: style.WebkitAppearance (uppercase W) expected (undefined) undefined but got (string) "button"
</span></span></pre></div>
<a id="trunkLayoutTestsplatformioswk2importedw3cwebplatformtestscsscssuiappearancecssom001expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt  2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt     2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -2,18 +2,18 @@
</span><span class="cx"> 
</span><span class="cx"> PASS -webkit-appearance: none
</span><span class="cx"> FAIL -webkit-appearance: auto assert_equals: style.WebkitAppearance (uppercase W) expected "auto" but got ""
</span><del>-FAIL -webkit-appearance: button assert_equals: style.WebkitAppearance (uppercase W) expected "button" but got "none"
</del><ins>+PASS -webkit-appearance: button
</ins><span class="cx"> PASS -webkit-appearance: checkbox
</span><del>-FAIL -webkit-appearance: listbox assert_equals: style.WebkitAppearance (uppercase W) expected "listbox" but got "none"
-FAIL -webkit-appearance: menulist assert_equals: style.WebkitAppearance (uppercase W) expected "menulist" but got "menulist-button"
</del><ins>+PASS -webkit-appearance: listbox
+PASS -webkit-appearance: menulist
</ins><span class="cx"> PASS -webkit-appearance: menulist-button
</span><del>-FAIL -webkit-appearance: meter assert_equals: style.WebkitAppearance (uppercase W) expected "meter" but got "none"
-FAIL -webkit-appearance: progress-bar assert_equals: style.WebkitAppearance (uppercase W) expected "progress-bar" but got "none"
</del><ins>+PASS -webkit-appearance: meter
+PASS -webkit-appearance: progress-bar
</ins><span class="cx"> PASS -webkit-appearance: push-button
</span><span class="cx"> PASS -webkit-appearance: radio
</span><span class="cx"> PASS -webkit-appearance: searchfield
</span><span class="cx"> PASS -webkit-appearance: slider-horizontal
</span><del>-FAIL -webkit-appearance: square-button assert_equals: style.WebkitAppearance (uppercase W) expected "square-button" but got "none"
</del><ins>+PASS -webkit-appearance: square-button
</ins><span class="cx"> PASS -webkit-appearance: textarea
</span><span class="cx"> PASS -webkit-appearance: textfield
</span><span class="cx"> FAIL -webkit-appearance: bogus-button (invalid) assert_equals: style.WebkitAppearance (uppercase W) expected (undefined) undefined but got (string) "button"
</span></span></pre></div>
<a id="trunkLayoutTestsplatformwpeimportedw3cwebplatformtestscsscssuiappearancecssom001expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt      2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt 2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -2,18 +2,18 @@
</span><span class="cx"> 
</span><span class="cx"> PASS -webkit-appearance: none
</span><span class="cx"> FAIL -webkit-appearance: auto assert_equals: style.WebkitAppearance (uppercase W) expected "auto" but got ""
</span><del>-FAIL -webkit-appearance: button assert_equals: style.WebkitAppearance (uppercase W) expected "button" but got "none"
</del><ins>+PASS -webkit-appearance: button
</ins><span class="cx"> PASS -webkit-appearance: checkbox
</span><del>-FAIL -webkit-appearance: listbox assert_equals: style.WebkitAppearance (uppercase W) expected "listbox" but got "none"
-FAIL -webkit-appearance: menulist assert_equals: style.WebkitAppearance (uppercase W) expected "menulist" but got "menulist-button"
</del><ins>+PASS -webkit-appearance: listbox
+PASS -webkit-appearance: menulist
</ins><span class="cx"> PASS -webkit-appearance: menulist-button
</span><del>-FAIL -webkit-appearance: meter assert_equals: style.WebkitAppearance (uppercase W) expected "meter" but got "none"
-FAIL -webkit-appearance: progress-bar assert_equals: style.WebkitAppearance (uppercase W) expected "progress-bar" but got "none"
</del><ins>+PASS -webkit-appearance: meter
+PASS -webkit-appearance: progress-bar
</ins><span class="cx"> PASS -webkit-appearance: push-button
</span><span class="cx"> PASS -webkit-appearance: radio
</span><span class="cx"> PASS -webkit-appearance: searchfield
</span><span class="cx"> PASS -webkit-appearance: slider-horizontal
</span><del>-FAIL -webkit-appearance: square-button assert_equals: style.WebkitAppearance (uppercase W) expected "square-button" but got "none"
</del><ins>+PASS -webkit-appearance: square-button
</ins><span class="cx"> PASS -webkit-appearance: textarea
</span><span class="cx"> PASS -webkit-appearance: textfield
</span><span class="cx"> FAIL -webkit-appearance: bogus-button (invalid) assert_equals: style.WebkitAppearance (uppercase W) expected (undefined) undefined but got (string) "button"
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog   2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/ChangeLog      2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -1,3 +1,168 @@
</span><ins>+2021-09-29  Aditya Keerthi  <akeerthi@apple.com>
+
+        [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.
+
+        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):
+
</ins><span class="cx"> 2021-09-29  Alan Bujtas  <zalan@apple.com>
</span><span class="cx"> 
</span><span class="cx">         [LFC][IFC] LineBoxBuilder should use the first-line style when applicable
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityObject.cpp (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityObject.cpp       2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/accessibility/AccessibilityObject.cpp  2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -786,7 +786,7 @@
</span><span class="cx">     for (const auto& quad : quads) {
</span><span class="cx">         FloatRect r = quad.enclosingBoundingBox();
</span><span class="cx">         if (!r.isEmpty()) {
</span><del>-            if (obj->style().hasAppearance())
</del><ins>+            if (obj->style().hasEffectiveAppearance())
</ins><span class="cx">                 obj->theme().adjustRepaintRect(*obj, r);
</span><span class="cx">             result.unite(r);
</span><span class="cx">         }
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityRenderObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp 2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp    2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -3848,7 +3848,7 @@
</span><span class="cx"> {
</span><span class="cx">     if (!m_renderer)
</span><span class="cx">         return false;
</span><del>-    return m_renderer->style().appearance() == ApplePayButtonPart;
</del><ins>+    return m_renderer->style().effectiveAppearance() == ApplePayButtonPart;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ApplePayButtonType AccessibilityRenderObject::applePayButtonType() const
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilitySlidercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilitySlider.cpp (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilitySlider.cpp       2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/accessibility/AccessibilitySlider.cpp  2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -66,7 +66,7 @@
</span><span class="cx">     
</span><span class="cx">     const RenderStyle& style = m_renderer->style();
</span><span class="cx"> 
</span><del>-    ControlPart styleAppearance = style.appearance();
</del><ins>+    ControlPart styleAppearance = style.effectiveAppearance();
</ins><span class="cx">     switch (styleAppearance) {
</span><span class="cx">     case SliderThumbHorizontalPart:
</span><span class="cx">     case SliderHorizontalPart:
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Element.cpp (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Element.cpp     2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/dom/Element.cpp        2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -709,7 +709,7 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     bool reactsToPress = false;
</span><del>-    if (renderer()->style().hasAppearance() && renderer()->theme().stateChanged(*renderer(), ControlStates::States::Pressed))
</del><ins>+    if (renderer()->style().hasEffectiveAppearance() && renderer()->theme().stateChanged(*renderer(), ControlStates::States::Pressed))
</ins><span class="cx">         reactsToPress = true;
</span><span class="cx"> 
</span><span class="cx">     // The rest of this function implements a feature that only works if the
</span><span class="lines">@@ -806,7 +806,7 @@
</span><span class="cx">         document().userActionElements().setHovered(*this, flag);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (auto* style = renderStyle(); style && style->hasAppearance())
</del><ins>+    if (auto* style = renderStyle(); style && style->hasEffectiveAppearance())
</ins><span class="cx">         renderer()->theme().stateChanged(*renderer(), ControlStates::States::Hovered);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingFrameSelectioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/FrameSelection.cpp (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/FrameSelection.cpp  2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/editing/FrameSelection.cpp     2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -2104,7 +2104,7 @@
</span><span class="cx">     if (Element* element = m_document->focusedElement()) {
</span><span class="cx">         element->invalidateStyleForSubtree();
</span><span class="cx">         if (RenderObject* renderer = element->renderer())
</span><del>-            if (renderer && renderer->style().hasAppearance())
</del><ins>+            if (renderer && renderer->style().hasEffectiveAppearance())
</ins><span class="cx">                 renderer->theme().stateChanged(*renderer, ControlStates::States::Focused);
</span><span class="cx">     }
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLFormControlElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLFormControlElement.cpp (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLFormControlElement.cpp     2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/html/HTMLFormControlElement.cpp        2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -183,7 +183,7 @@
</span><span class="cx"> {
</span><span class="cx">     updateWillValidateAndValidity();
</span><span class="cx">     invalidateStyleForSubtree();
</span><del>-    if (renderer() && renderer()->style().hasAppearance())
</del><ins>+    if (renderer() && renderer()->style().hasEffectiveAppearance())
</ins><span class="cx">         renderer()->theme().stateChanged(*renderer(), ControlStates::States::Enabled);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLInputElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLInputElement.cpp (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLInputElement.cpp   2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/html/HTMLInputElement.cpp      2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -985,7 +985,7 @@
</span><span class="cx"> 
</span><span class="cx">     if (RadioButtonGroups* buttons = radioButtonGroups())
</span><span class="cx">         buttons->updateCheckedState(*this);
</span><del>-    if (renderer() && renderer()->style().hasAppearance())
</del><ins>+    if (renderer() && renderer()->style().hasEffectiveAppearance())
</ins><span class="cx">         renderer()->theme().stateChanged(*renderer(), ControlStates::States::Checked);
</span><span class="cx">     updateValidity();
</span><span class="cx"> 
</span><span class="lines">@@ -1009,7 +1009,7 @@
</span><span class="cx"> 
</span><span class="cx">     invalidateStyleForSubtree();
</span><span class="cx"> 
</span><del>-    if (renderer() && renderer()->style().hasAppearance())
</del><ins>+    if (renderer() && renderer()->style().hasEffectiveAppearance())
</ins><span class="cx">         renderer()->theme().stateChanged(*renderer(), ControlStates::States::Checked);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMeterElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMeterElement.cpp (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMeterElement.cpp   2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/html/HTMLMeterElement.cpp      2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -58,7 +58,7 @@
</span><span class="cx"> 
</span><span class="cx"> RenderPtr<RenderElement> HTMLMeterElement::createElementRenderer(RenderStyle&& style, const RenderTreePosition&)
</span><span class="cx"> {
</span><del>-    if (!RenderTheme::singleton().supportsMeter(style.appearance(), *this))
</del><ins>+    if (!RenderTheme::singleton().supportsMeter(style.effectiveAppearance(), *this))
</ins><span class="cx">         return RenderElement::createFor(*this, WTFMove(style));
</span><span class="cx"> 
</span><span class="cx">     return createRenderer<RenderMeter>(*this, WTFMove(style));
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLOptionElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLOptionElement.cpp (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLOptionElement.cpp  2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/html/HTMLOptionElement.cpp     2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -179,7 +179,7 @@
</span><span class="cx">         m_disabled = !value.isNull();
</span><span class="cx">         if (oldDisabled != m_disabled) {
</span><span class="cx">             invalidateStyleForSubtree();
</span><del>-            if (renderer() && renderer()->style().hasAppearance())
</del><ins>+            if (renderer() && renderer()->style().hasEffectiveAppearance())
</ins><span class="cx">                 renderer()->theme().stateChanged(*renderer(), ControlStates::States::Enabled);
</span><span class="cx">         }
</span><span class="cx">     } else if (name == selectedAttr) {
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLProgressElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLProgressElement.cpp (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLProgressElement.cpp        2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/html/HTMLProgressElement.cpp   2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -57,7 +57,7 @@
</span><span class="cx"> 
</span><span class="cx"> RenderPtr<RenderElement> HTMLProgressElement::createElementRenderer(RenderStyle&& style, const RenderTreePosition&)
</span><span class="cx"> {
</span><del>-    if (!style.hasAppearance())
</del><ins>+    if (!style.hasEffectiveAppearance())
</ins><span class="cx">         return RenderElement::createFor(*this, WTFMove(style));
</span><span class="cx"> 
</span><span class="cx">     return createRenderer<RenderProgress>(*this, WTFMove(style));
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlRangeInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/RangeInputType.cpp (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/RangeInputType.cpp     2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/html/RangeInputType.cpp        2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -205,7 +205,7 @@
</span><span class="cx"> 
</span><span class="cx">     bool isVertical = false;
</span><span class="cx">     if (auto* renderer = element()->renderer()) {
</span><del>-        ControlPart part = renderer->style().appearance();
</del><ins>+        ControlPart part = renderer->style().effectiveAppearance();
</ins><span class="cx">         isVertical = part == SliderVerticalPart || part == MediaVolumeSliderPart;
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlshadowProgressShadowElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/shadow/ProgressShadowElement.cpp (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/shadow/ProgressShadowElement.cpp       2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/html/shadow/ProgressShadowElement.cpp  2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -55,7 +55,7 @@
</span><span class="cx"> bool ProgressShadowElement::rendererIsNeeded(const RenderStyle& style)
</span><span class="cx"> {
</span><span class="cx">     RenderObject* progressRenderer = progressElement()->renderer();
</span><del>-    return progressRenderer && !progressRenderer->style().hasAppearance() && HTMLDivElement::rendererIsNeeded(style);
</del><ins>+    return progressRenderer && !progressRenderer->style().hasEffectiveAppearance() && HTMLDivElement::rendererIsNeeded(style);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ProgressInnerElement::ProgressInnerElement(Document& document)
</span><span class="lines">@@ -71,7 +71,7 @@
</span><span class="cx"> bool ProgressInnerElement::rendererIsNeeded(const RenderStyle& style)
</span><span class="cx"> {
</span><span class="cx">     RenderObject* progressRenderer = progressElement()->renderer();
</span><del>-    return progressRenderer && !progressRenderer->style().hasAppearance() && HTMLDivElement::rendererIsNeeded(style);    
</del><ins>+    return progressRenderer && !progressRenderer->style().hasEffectiveAppearance() && HTMLDivElement::rendererIsNeeded(style);    
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ProgressBarElement::ProgressBarElement(Document& document)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlshadowSliderThumbElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/shadow/SliderThumbElement.cpp (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/shadow/SliderThumbElement.cpp  2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/html/shadow/SliderThumbElement.cpp     2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -77,11 +77,11 @@
</span><span class="cx">     const RenderStyle& sliderStyle = input.renderer()->style();
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(VIDEO)
</span><del>-    if (sliderStyle.appearance() == MediaVolumeSliderPart && input.renderer()->theme().usesVerticalVolumeSlider())
</del><ins>+    if (sliderStyle.effectiveAppearance() == MediaVolumeSliderPart && input.renderer()->theme().usesVerticalVolumeSlider())
</ins><span class="cx">         return true;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    return sliderStyle.appearance() == SliderVerticalPart;
</del><ins>+    return sliderStyle.effectiveAppearance() == SliderVerticalPart;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // --------------------------------
</span><span class="lines">@@ -93,17 +93,17 @@
</span><span class="cx"> 
</span><span class="cx"> void RenderSliderThumb::updateAppearance(const RenderStyle* parentStyle)
</span><span class="cx"> {
</span><del>-    if (parentStyle->appearance() == SliderVerticalPart)
-        mutableStyle().setAppearance(SliderThumbVerticalPart);
-    else if (parentStyle->appearance() == SliderHorizontalPart)
-        mutableStyle().setAppearance(SliderThumbHorizontalPart);
-    else if (parentStyle->appearance() == MediaSliderPart)
-        mutableStyle().setAppearance(MediaSliderThumbPart);
-    else if (parentStyle->appearance() == MediaVolumeSliderPart)
-        mutableStyle().setAppearance(MediaVolumeSliderThumbPart);
-    else if (parentStyle->appearance() == MediaFullScreenVolumeSliderPart)
-        mutableStyle().setAppearance(MediaFullScreenVolumeSliderThumbPart);
-    if (style().hasAppearance()) {
</del><ins>+    if (parentStyle->effectiveAppearance() == SliderVerticalPart)
+        mutableStyle().setEffectiveAppearance(SliderThumbVerticalPart);
+    else if (parentStyle->effectiveAppearance() == SliderHorizontalPart)
+        mutableStyle().setEffectiveAppearance(SliderThumbHorizontalPart);
+    else if (parentStyle->effectiveAppearance() == MediaSliderPart)
+        mutableStyle().setEffectiveAppearance(MediaSliderThumbPart);
+    else if (parentStyle->effectiveAppearance() == MediaVolumeSliderPart)
+        mutableStyle().setEffectiveAppearance(MediaVolumeSliderThumbPart);
+    else if (parentStyle->effectiveAppearance() == MediaFullScreenVolumeSliderPart)
+        mutableStyle().setEffectiveAppearance(MediaFullScreenVolumeSliderThumbPart);
+    if (style().hasEffectiveAppearance()) {
</ins><span class="cx">         ASSERT(element());
</span><span class="cx">         theme().adjustSliderThumbSize(mutableStyle(), element());
</span><span class="cx">     }
</span><span class="lines">@@ -595,7 +595,7 @@
</span><span class="cx">     if (!hostStyle)
</span><span class="cx">         return std::nullopt;
</span><span class="cx"> 
</span><del>-    switch (hostStyle->appearance()) {
</del><ins>+    switch (hostStyle->effectiveAppearance()) {
</ins><span class="cx">     case MediaSliderPart:
</span><span class="cx">     case MediaSliderThumbPart:
</span><span class="cx">     case MediaVolumeSliderPart:
</span><span class="lines">@@ -649,7 +649,7 @@
</span><span class="cx">     if (!hostStyle)
</span><span class="cx">         return std::nullopt;
</span><span class="cx"> 
</span><del>-    switch (hostStyle->appearance()) {
</del><ins>+    switch (hostStyle->effectiveAppearance()) {
</ins><span class="cx">     case MediaSliderPart:
</span><span class="cx">     case MediaSliderThumbPart:
</span><span class="cx">     case MediaVolumeSliderPart:
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlshadowTextControlInnerElementscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/shadow/TextControlInnerElements.cpp (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/shadow/TextControlInnerElements.cpp    2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/html/shadow/TextControlInnerElements.cpp       2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -245,7 +245,7 @@
</span><span class="cx">     if (input && input->maxResults() >= 0)
</span><span class="cx">         return std::nullopt;
</span><span class="cx"> 
</span><del>-    if (shadowHostStyle && shadowHostStyle->appearance() != SearchFieldPart) {
</del><ins>+    if (shadowHostStyle && shadowHostStyle->effectiveAppearance() != SearchFieldPart) {
</ins><span class="cx">         SetForScope<bool> canAdjustStyleForAppearance(m_canAdjustStyleForAppearance, false);
</span><span class="cx">         return resolveStyle(&parentStyle);
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderAttachmentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderAttachment.cpp (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderAttachment.cpp      2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/rendering/RenderAttachment.cpp 2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -79,7 +79,7 @@
</span><span class="cx"> 
</span><span class="cx"> bool RenderAttachment::shouldDrawBorder() const
</span><span class="cx"> {
</span><del>-    if (style().appearance() == BorderlessAttachmentPart)
</del><ins>+    if (style().effectiveAppearance() == BorderlessAttachmentPart)
</ins><span class="cx">         return false;
</span><span class="cx">     return m_shouldDrawBorder;
</span><span class="cx"> }
</span><span class="lines">@@ -86,7 +86,7 @@
</span><span class="cx"> 
</span><span class="cx"> void RenderAttachment::paintReplaced(PaintInfo& paintInfo, const LayoutPoint& offset)
</span><span class="cx"> {
</span><del>-    if (paintInfo.phase != PaintPhase::Selection || !hasVisibleBoxDecorations() || !style().hasAppearance())
</del><ins>+    if (paintInfo.phase != PaintPhase::Selection || !hasVisibleBoxDecorations() || !style().hasEffectiveAppearance())
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     auto paintRect = borderBoxRect();
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBlockcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBlock.cpp (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBlock.cpp   2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/rendering/RenderBlock.cpp      2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -754,7 +754,7 @@
</span><span class="cx"> 
</span><span class="cx"> void RenderBlock::addVisualOverflowFromTheme()
</span><span class="cx"> {
</span><del>-    if (!style().hasAppearance())
</del><ins>+    if (!style().hasEffectiveAppearance())
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     FloatRect inflatedRect = borderBoxRect();
</span><span class="lines">@@ -2451,7 +2451,7 @@
</span><span class="cx">         // FIXME: Might be better to have a custom CSS property instead, so that if the theme
</span><span class="cx">         // is turned off, checkboxes/radios will still have decent baselines.
</span><span class="cx">         // FIXME: Need to patch form controls to deal with vertical lines.
</span><del>-        if (style().hasAppearance() && !theme().isControlContainer(style().appearance()))
</del><ins>+        if (style().hasEffectiveAppearance() && !theme().isControlContainer(style().effectiveAppearance()))
</ins><span class="cx">             return theme().baselinePosition(*this);
</span><span class="cx">             
</span><span class="cx">         // CSS2.1 states that the baseline of an inline block is the baseline of the last line box in
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBoxcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBox.cpp (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBox.cpp     2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/rendering/RenderBox.cpp        2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -1503,7 +1503,7 @@
</span><span class="cx"> 
</span><span class="cx">     if (borderObscuresBackgroundEdge(contextScaling))
</span><span class="cx">         return BackgroundBleedShrinkBackground;
</span><del>-    if (!style.hasAppearance() && borderObscuresBackground() && backgroundHasOpaqueTopLayer())
</del><ins>+    if (!style.hasEffectiveAppearance() && borderObscuresBackground() && backgroundHasOpaqueTopLayer())
</ins><span class="cx">         return BackgroundBleedBackgroundOverBorder;
</span><span class="cx"> 
</span><span class="cx">     return BackgroundBleedUseTransparencyLayer;
</span><span class="lines">@@ -1539,7 +1539,7 @@
</span><span class="cx">     // If we have a native theme appearance, paint that before painting our background.
</span><span class="cx">     // The theme will tell us whether or not we should also paint the CSS background.
</span><span class="cx">     bool borderOrBackgroundPaintingIsNeeded = true;
</span><del>-    if (style().hasAppearance()) {
</del><ins>+    if (style().hasEffectiveAppearance()) {
</ins><span class="cx">         ControlStates* controlStates = controlStatesForRenderer(*this);
</span><span class="cx">         borderOrBackgroundPaintingIsNeeded = theme().paint(*this, *controlStates, paintInfo, paintRect);
</span><span class="cx">         if (controlStates->needsRepaint())
</span><span class="lines">@@ -1552,13 +1552,13 @@
</span><span class="cx"> 
</span><span class="cx">         paintBackground(paintInfo, paintRect, bleedAvoidance);
</span><span class="cx"> 
</span><del>-        if (style().hasAppearance())
</del><ins>+        if (style().hasEffectiveAppearance())
</ins><span class="cx">             theme().paintDecorations(*this, paintInfo, paintRect);
</span><span class="cx">     }
</span><span class="cx">     paintBoxShadow(paintInfo, paintRect, style(), ShadowStyle::Inset);
</span><span class="cx"> 
</span><span class="cx">     // The theme will tell us whether or not we should also paint the CSS border.
</span><del>-    if (bleedAvoidance != BackgroundBleedBackgroundOverBorder && (!style().hasAppearance() || (borderOrBackgroundPaintingIsNeeded && theme().paintBorderOnly(*this, paintInfo, paintRect))) && style().hasVisibleBorderDecoration())
</del><ins>+    if (bleedAvoidance != BackgroundBleedBackgroundOverBorder && (!style().hasEffectiveAppearance() || (borderOrBackgroundPaintingIsNeeded && theme().paintBorderOnly(*this, paintInfo, paintRect))) && style().hasVisibleBorderDecoration())
</ins><span class="cx">         paintBorder(paintInfo, paintRect, style(), bleedAvoidance);
</span><span class="cx"> 
</span><span class="cx">     if (bleedAvoidance == BackgroundBleedUseTransparencyLayer)
</span><span class="lines">@@ -1633,7 +1633,7 @@
</span><span class="cx">     // We cannot be sure if theme paints the background opaque.
</span><span class="cx">     // In this case it is safe to not assume opaqueness.
</span><span class="cx">     // FIXME: May be ask theme if it paints opaque.
</span><del>-    if (style().hasAppearance())
</del><ins>+    if (style().hasEffectiveAppearance())
</ins><span class="cx">         return false;
</span><span class="cx">     // FIXME: Check the opaqueness of background images.
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBoxModelObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp  2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp     2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -193,7 +193,7 @@
</span><span class="cx"> 
</span><span class="cx"> bool RenderBoxModelObject::hasVisibleBoxDecorationStyle() const
</span><span class="cx"> {
</span><del>-    return hasBackground() || style().hasVisibleBorderDecoration() || style().hasAppearance() || style().boxShadow();
</del><ins>+    return hasBackground() || style().hasVisibleBorderDecoration() || style().hasEffectiveAppearance() || style().boxShadow();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderBoxModelObject::updateFromStyle()
</span><span class="lines">@@ -2331,7 +2331,7 @@
</span><span class="cx">     if (bleedAvoidance != BackgroundBleedNone)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    if (style().hasAppearance())
</del><ins>+    if (style().hasEffectiveAppearance())
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     bool hasOneNormalBoxShadow = false;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderLayerBackingcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderLayerBacking.cpp (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderLayerBacking.cpp    2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/rendering/RenderLayerBacking.cpp       2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -771,7 +771,7 @@
</span><span class="cx"> 
</span><span class="cx"> void RenderLayerBacking::updateCustomAppearance(const RenderStyle& style)
</span><span class="cx"> {
</span><del>-    ControlPart appearance = style.appearance();
</del><ins>+    ControlPart appearance = style.effectiveAppearance();
</ins><span class="cx">     if (appearance == MediaControlsLightBarBackgroundPart)
</span><span class="cx">         m_graphicsLayer->setCustomAppearance(GraphicsLayer::CustomAppearance::LightBackdrop);
</span><span class="cx">     else if (appearance == MediaControlsDarkBarBackgroundPart)
</span><span class="lines">@@ -2468,7 +2468,7 @@
</span><span class="cx"> // FIXME: Code is duplicated in RenderLayer. Also, we should probably not consider filters a box decoration here.
</span><span class="cx"> static inline bool hasVisibleBoxDecorations(const RenderStyle& style)
</span><span class="cx"> {
</span><del>-    return style.hasVisibleBorder() || style.hasBorderRadius() || style.hasOutline() || style.hasAppearance() || style.boxShadow() || style.hasFilter();
</del><ins>+    return style.hasVisibleBorder() || style.hasBorderRadius() || style.hasOutline() || style.hasEffectiveAppearance() || style.boxShadow() || style.hasFilter();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static bool canDirectlyCompositeBackgroundBackgroundImage(const RenderStyle& style)
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderLayerScrollableAreacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderLayerScrollableArea.cpp (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderLayerScrollableArea.cpp     2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/rendering/RenderLayerScrollableArea.cpp        2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -1118,7 +1118,7 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     // List box parts handle the scrollbars by themselves so we have nothing to do.
</span><del>-    if (box->style().appearance() == ListboxPart)
</del><ins>+    if (box->style().effectiveAppearance() == ListboxPart)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     bool hadVerticalScrollbar = hasVerticalScrollbar();
</span><span class="lines">@@ -1138,7 +1138,7 @@
</span><span class="cx">     ASSERT(box);
</span><span class="cx"> 
</span><span class="cx">     // List box parts handle the scrollbars by themselves so we have nothing to do.
</span><del>-    if (box->style().appearance() == ListboxPart)
</del><ins>+    if (box->style().effectiveAppearance() == ListboxPart)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     bool hadHorizontalScrollbar = hasHorizontalScrollbar();
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderMenuListcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderMenuList.cpp (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderMenuList.cpp        2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/rendering/RenderMenuList.cpp   2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -540,7 +540,7 @@
</span><span class="cx">     IntRect absBounds = absoluteBoundingBoxRectIgnoringTransforms();
</span><span class="cx">     return PopupMenuStyle(styleToUse.visitedDependentColorWithColorFilter(CSSPropertyColor), styleToUse.visitedDependentColorWithColorFilter(CSSPropertyBackgroundColor),
</span><span class="cx">         styleToUse.fontCascade(), styleToUse.visibility() == Visibility::Visible, styleToUse.display() == DisplayType::None,
</span><del>-        style().hasAppearance() && style().appearance() == MenulistPart, styleToUse.textIndent(),
</del><ins>+        style().hasEffectiveAppearance() && style().effectiveAppearance() == MenulistPart, styleToUse.textIndent(),
</ins><span class="cx">         style().direction(), isOverride(style().unicodeBidi()), PopupMenuStyle::DefaultBackgroundColor,
</span><span class="cx">         PopupMenuStyle::SelectPopup, theme().popupMenuSize(styleToUse, absBounds));
</span><span class="cx"> }
</span><span class="lines">@@ -572,7 +572,7 @@
</span><span class="cx"> 
</span><span class="cx"> LayoutUnit RenderMenuList::clientPaddingLeft() const
</span><span class="cx"> {
</span><del>-    if ((style().appearance() == MenulistPart || style().appearance() == MenulistButtonPart) && style().direction() == TextDirection::RTL) {
</del><ins>+    if ((style().effectiveAppearance() == MenulistPart || style().effectiveAppearance() == MenulistButtonPart) && style().direction() == TextDirection::RTL) {
</ins><span class="cx">         // For these appearance values, the theme applies padding to leave room for the
</span><span class="cx">         // drop-down button. But leaving room for the button inside the popup menu itself
</span><span class="cx">         // looks strange, so we return a small default padding to avoid having a large empty
</span><span class="lines">@@ -586,7 +586,7 @@
</span><span class="cx"> 
</span><span class="cx"> LayoutUnit RenderMenuList::clientPaddingRight() const
</span><span class="cx"> {
</span><del>-    if ((style().appearance() == MenulistPart || style().appearance() == MenulistButtonPart) && style().direction() == TextDirection::LTR)
</del><ins>+    if ((style().effectiveAppearance() == MenulistPart || style().effectiveAppearance() == MenulistButtonPart) && style().direction() == TextDirection::LTR)
</ins><span class="cx">         return endOfLinePadding;
</span><span class="cx"> 
</span><span class="cx">     return paddingRight() + m_innerBlock->paddingRight();
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderProgresscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderProgress.cpp (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderProgress.cpp        2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/rendering/RenderProgress.cpp   2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -91,7 +91,7 @@
</span><span class="cx">     m_animationDuration = theme().animationDurationForProgressBar(*this);
</span><span class="cx">     m_animationRepeatInterval = theme().animationRepeatIntervalForProgressBar(*this);
</span><span class="cx"> 
</span><del>-    bool animating = style().hasAppearance() && m_animationRepeatInterval > 0_s && !isDeterminate();
</del><ins>+    bool animating = style().hasEffectiveAppearance() && m_animationRepeatInterval > 0_s && !isDeterminate();
</ins><span class="cx">     if (animating == m_animating)
</span><span class="cx">         return;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderThemecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderTheme.cpp (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderTheme.cpp   2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/rendering/RenderTheme.cpp      2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -90,16 +90,16 @@
</span><span class="cx">     if (userAgentAppearanceStyle && isControlStyled(style, *userAgentAppearanceStyle)) {
</span><span class="cx">         switch (part) {
</span><span class="cx">         case MenulistPart:
</span><del>-            style.setAppearance(MenulistButtonPart);
</del><ins>+            style.setEffectiveAppearance(MenulistButtonPart);
</ins><span class="cx">             part = MenulistButtonPart;
</span><span class="cx">             break;
</span><span class="cx">         default:
</span><del>-            style.setAppearance(NoControlPart);
</del><ins>+            style.setEffectiveAppearance(NoControlPart);
</ins><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (!style.hasAppearance())
</del><ins>+    if (!style.hasEffectiveAppearance())
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     if (!supportsBoxShadow(style))
</span><span class="lines">@@ -191,7 +191,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     // Call the appropriate style adjustment method based off the appearance value.
</span><del>-    switch (style.appearance()) {
</del><ins>+    switch (style.effectiveAppearance()) {
</ins><span class="cx"> #if !USE(NEW_THEME)
</span><span class="cx">     case CheckboxPart:
</span><span class="cx">         return adjustCheckboxStyle(style, element);
</span><span class="lines">@@ -273,11 +273,11 @@
</span><span class="cx"> void RenderTheme::adjustSearchFieldDecorationStyle(RenderStyle& style, const Element* element) const
</span><span class="cx"> {
</span><span class="cx">     if (is<SearchFieldResultsButtonElement>(element) && !downcast<SearchFieldResultsButtonElement>(*element).canAdjustStyleForAppearance()) {
</span><del>-        style.setAppearance(NoControlPart);
</del><ins>+        style.setEffectiveAppearance(NoControlPart);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    switch (style.appearance()) {
</del><ins>+    switch (style.effectiveAppearance()) {
</ins><span class="cx">     case SearchFieldDecorationPart:
</span><span class="cx">         return adjustSearchFieldDecorationPartStyle(style, element);
</span><span class="cx">     case SearchFieldResultsDecorationPart:
</span><span class="lines">@@ -305,7 +305,7 @@
</span><span class="cx">     if (UNLIKELY(!canPaint(paintInfo, box.settings())))
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    ControlPart part = box.style().appearance();
</del><ins>+    ControlPart part = box.style().effectiveAppearance();
</ins><span class="cx">     IntRect integralSnappedRect = snappedIntRect(rect);
</span><span class="cx">     float deviceScaleFactor = box.document().deviceScaleFactor();
</span><span class="cx">     FloatRect devicePixelSnappedRect = snapRectToDevicePixels(rect, deviceScaleFactor);
</span><span class="lines">@@ -450,11 +450,11 @@
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS_FAMILY)
</span><span class="cx">     UNUSED_PARAM(rect);
</span><del>-    return box.style().appearance() != NoControlPart;
</del><ins>+    return box.style().effectiveAppearance() != NoControlPart;
</ins><span class="cx"> #else
</span><span class="cx">     FloatRect devicePixelSnappedRect = snapRectToDevicePixels(rect, box.document().deviceScaleFactor());
</span><span class="cx">     // Call the appropriate paint method based off the appearance value.
</span><del>-    switch (box.style().appearance()) {
</del><ins>+    switch (box.style().effectiveAppearance()) {
</ins><span class="cx">     case TextFieldPart:
</span><span class="cx">         return paintTextField(box, paintInfo, devicePixelSnappedRect);
</span><span class="cx">     case ListboxPart:
</span><span class="lines">@@ -507,7 +507,7 @@
</span><span class="cx">     FloatRect devicePixelSnappedRect = snapRectToDevicePixels(rect, box.document().deviceScaleFactor());
</span><span class="cx"> 
</span><span class="cx">     // Call the appropriate paint method based off the appearance value.
</span><del>-    switch (box.style().appearance()) {
</del><ins>+    switch (box.style().effectiveAppearance()) {
</ins><span class="cx">     case MenulistButtonPart:
</span><span class="cx">         paintMenuListButtonDecorations(box, paintInfo, devicePixelSnappedRect);
</span><span class="cx">         break;
</span><span class="lines">@@ -720,7 +720,7 @@
</span><span class="cx"> int RenderTheme::baselinePosition(const RenderBox& box) const
</span><span class="cx"> {
</span><span class="cx"> #if USE(NEW_THEME)
</span><del>-    return box.height() + box.marginTop() + Theme::singleton().baselinePositionAdjustment(box.style().appearance()) * box.style().effectiveZoom();
</del><ins>+    return box.height() + box.marginTop() + Theme::singleton().baselinePositionAdjustment(box.style().effectiveAppearance()) * box.style().effectiveZoom();
</ins><span class="cx"> #else
</span><span class="cx">     return box.height() + box.marginTop();
</span><span class="cx"> #endif
</span><span class="lines">@@ -735,7 +735,7 @@
</span><span class="cx"> 
</span><span class="cx"> bool RenderTheme::isControlStyled(const RenderStyle& style, const RenderStyle& userAgentStyle) const
</span><span class="cx"> {
</span><del>-    switch (style.appearance()) {
</del><ins>+    switch (style.effectiveAppearance()) {
</ins><span class="cx">     case PushButtonPart:
</span><span class="cx">     case SquareButtonPart:
</span><span class="cx"> #if ENABLE(INPUT_TYPE_COLOR)
</span><span class="lines">@@ -767,7 +767,7 @@
</span><span class="cx"> {
</span><span class="cx"> #if USE(NEW_THEME)
</span><span class="cx">     ControlStates states(extractControlStatesForRenderer(renderer));
</span><del>-    Theme::singleton().inflateControlPaintRect(renderer.style().appearance(), states, rect, renderer.style().effectiveZoom());
</del><ins>+    Theme::singleton().inflateControlPaintRect(renderer.style().effectiveAppearance(), states, rect, renderer.style().effectiveZoom());
</ins><span class="cx"> #else
</span><span class="cx">     UNUSED_PARAM(renderer);
</span><span class="cx">     UNUSED_PARAM(rect);
</span><span class="lines">@@ -776,7 +776,7 @@
</span><span class="cx"> 
</span><span class="cx"> bool RenderTheme::supportsFocusRing(const RenderStyle& style) const
</span><span class="cx"> {
</span><del>-    return (style.hasAppearance() && style.appearance() != TextFieldPart && style.appearance() != TextAreaPart && style.appearance() != MenulistButtonPart && style.appearance() != ListboxPart);
</del><ins>+    return (style.hasEffectiveAppearance() && style.effectiveAppearance() != TextFieldPart && style.effectiveAppearance() != TextAreaPart && style.effectiveAppearance() != MenulistButtonPart && style.effectiveAppearance() != ListboxPart);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool RenderTheme::stateChanged(const RenderObject& o, ControlStates::States state) const
</span><span class="lines">@@ -924,7 +924,7 @@
</span><span class="cx">     if (!isActive(o))
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    return o.style().appearance() == DefaultButtonPart;
</del><ins>+    return o.style().effectiveAppearance() == DefaultButtonPart;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if !USE(NEW_THEME)
</span><span class="lines">@@ -1089,7 +1089,7 @@
</span><span class="cx"> 
</span><span class="cx">     double min = input.minimum();
</span><span class="cx">     double max = input.maximum();
</span><del>-    ControlPart part = o.style().appearance();
</del><ins>+    ControlPart part = o.style().effectiveAppearance();
</ins><span class="cx">     // We don't support ticks on alternate sliders like MediaVolumeSliders.
</span><span class="cx">     if (part !=  SliderHorizontalPart && part != SliderVerticalPart)
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderThemeAdwaitacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderThemeAdwaita.cpp (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderThemeAdwaita.cpp    2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/rendering/RenderThemeAdwaita.cpp       2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -111,7 +111,7 @@
</span><span class="cx"> 
</span><span class="cx"> bool RenderThemeAdwaita::supportsFocusRing(const RenderStyle& style) const
</span><span class="cx"> {
</span><del>-    switch (style.appearance()) {
</del><ins>+    switch (style.effectiveAppearance()) {
</ins><span class="cx">     case PushButtonPart:
</span><span class="cx">     case ButtonPart:
</span><span class="cx">     case TextFieldPart:
</span><span class="lines">@@ -360,7 +360,7 @@
</span><span class="cx"> 
</span><span class="cx"> LengthBox RenderThemeAdwaita::popupInternalPaddingBox(const RenderStyle& style, const Settings&) const
</span><span class="cx"> {
</span><del>-    if (style.appearance() == NoControlPart)
</del><ins>+    if (style.effectiveAppearance() == NoControlPart)
</ins><span class="cx">         return { };
</span><span class="cx"> 
</span><span class="cx">     int leftPadding = menuListButtonPadding + (style.direction() == TextDirection::RTL ? menuListButtonArrowSize : 0);
</span><span class="lines">@@ -498,7 +498,7 @@
</span><span class="cx">     auto& graphicsContext = paintInfo.context();
</span><span class="cx">     GraphicsContextStateSaver stateSaver(graphicsContext);
</span><span class="cx"> 
</span><del>-    ControlPart part = renderObject.style().appearance();
</del><ins>+    ControlPart part = renderObject.style().effectiveAppearance();
</ins><span class="cx">     ASSERT(part == SliderHorizontalPart || part == SliderVerticalPart);
</span><span class="cx"> 
</span><span class="cx">     FloatRect fieldRect = rect;
</span><span class="lines">@@ -581,7 +581,7 @@
</span><span class="cx"> 
</span><span class="cx"> void RenderThemeAdwaita::adjustSliderThumbSize(RenderStyle& style, const Element*) const
</span><span class="cx"> {
</span><del>-    ControlPart part = style.appearance();
</del><ins>+    ControlPart part = style.effectiveAppearance();
</ins><span class="cx">     if (part != SliderThumbHorizontalPart && part != SliderThumbVerticalPart)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="lines">@@ -594,7 +594,7 @@
</span><span class="cx">     auto& graphicsContext = paintInfo.context();
</span><span class="cx">     GraphicsContextStateSaver stateSaver(graphicsContext);
</span><span class="cx"> 
</span><del>-    ASSERT(renderObject.style().appearance() == SliderThumbHorizontalPart || renderObject.style().appearance() == SliderThumbVerticalPart);
</del><ins>+    ASSERT(renderObject.style().effectiveAppearance() == SliderThumbHorizontalPart || renderObject.style().effectiveAppearance() == SliderThumbVerticalPart);
</ins><span class="cx"> 
</span><span class="cx">     SRGBA<uint8_t> sliderThumbBackgroundColor;
</span><span class="cx">     SRGBA<uint8_t> sliderThumbBackgroundHoveredColor;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderThemeIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderThemeIOS.mm (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderThemeIOS.mm 2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/rendering/RenderThemeIOS.mm    2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -446,7 +446,7 @@
</span><span class="cx"> LayoutRect RenderThemeIOS::adjustedPaintRect(const RenderBox& box, const LayoutRect& paintRect) const
</span><span class="cx"> {
</span><span class="cx">     // Workaround for <rdar://problem/6209763>. Force the painting bounds of checkboxes and radio controls to be square.
</span><del>-    if (box.style().appearance() == CheckboxPart || box.style().appearance() == RadioPart) {
</del><ins>+    if (box.style().effectiveAppearance() == CheckboxPart || box.style().effectiveAppearance() == RadioPart) {
</ins><span class="cx">         float width = std::min(paintRect.width(), paintRect.height());
</span><span class="cx">         float height = width;
</span><span class="cx">         return enclosingLayoutRect(FloatRect(paintRect.x(), paintRect.y() + (box.height() - height) / 2, width, height)); // Vertically center the checkbox, like on desktop
</span><span class="lines">@@ -457,9 +457,9 @@
</span><span class="cx"> 
</span><span class="cx"> int RenderThemeIOS::baselinePosition(const RenderBox& box) const
</span><span class="cx"> {
</span><del>-    if (box.style().appearance() == CheckboxPart || box.style().appearance() == RadioPart)
</del><ins>+    if (box.style().effectiveAppearance() == CheckboxPart || box.style().effectiveAppearance() == RadioPart)
</ins><span class="cx">         return box.marginTop() + box.height() - 2; // The baseline is 2px up from the bottom of the checkbox/radio in AppKit.
</span><del>-    if (box.style().appearance() == MenulistPart)
</del><ins>+    if (box.style().effectiveAppearance() == MenulistPart)
</ins><span class="cx">         return box.marginTop() + box.height() - 5; // This is to match AppKit. There might be a better way to calculate this though.
</span><span class="cx">     return RenderTheme::baselinePosition(box);
</span><span class="cx"> }
</span><span class="lines">@@ -467,10 +467,10 @@
</span><span class="cx"> bool RenderThemeIOS::isControlStyled(const RenderStyle& style, const RenderStyle& userAgentStyle) const
</span><span class="cx"> {
</span><span class="cx">     // Buttons and MenulistButtons are styled if they contain a background image.
</span><del>-    if (style.appearance() == PushButtonPart || style.appearance() == MenulistButtonPart)
</del><ins>+    if (style.effectiveAppearance() == PushButtonPart || style.effectiveAppearance() == MenulistButtonPart)
</ins><span class="cx">         return !style.visitedDependentColor(CSSPropertyBackgroundColor).isVisible() || style.backgroundLayers().hasImage();
</span><span class="cx"> 
</span><del>-    if (style.appearance() == TextFieldPart || style.appearance() == TextAreaPart)
</del><ins>+    if (style.effectiveAppearance() == TextFieldPart || style.effectiveAppearance() == TextAreaPart)
</ins><span class="cx">         return style.backgroundLayers() != userAgentStyle.backgroundLayers();
</span><span class="cx"> 
</span><span class="cx">     return RenderTheme::isControlStyled(style, userAgentStyle);
</span><span class="lines">@@ -595,7 +595,7 @@
</span><span class="cx">         padding = emSize->computeLength<float>(CSSToLengthConversionData(&style, nullptr, nullptr, nullptr, 1.0, std::nullopt));
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (style.appearance() == MenulistButtonPart) {
</del><ins>+    if (style.effectiveAppearance() == MenulistButtonPart) {
</ins><span class="cx">         if (style.direction() == TextDirection::RTL)
</span><span class="cx">             return { 0, 0, 0, static_cast<int>(padding + style.borderTopWidth()) };
</span><span class="cx">         return { 0, static_cast<int>(padding + style.borderTopWidth()), 0, 0 };
</span><span class="lines">@@ -624,7 +624,7 @@
</span><span class="cx"> 
</span><span class="cx"> void RenderThemeIOS::adjustRoundBorderRadius(RenderStyle& style, RenderBox& box)
</span><span class="cx"> {
</span><del>-    if (!canAdjustBorderRadiusForAppearance(style.appearance(), box) || style.backgroundLayers().hasImage())
</del><ins>+    if (!canAdjustBorderRadiusForAppearance(style.effectiveAppearance(), box) || style.backgroundLayers().hasImage())
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     if ((is<RenderButton>(box) || is<RenderMenuList>(box)) && box.height() >= largeButtonSize) {
</span><span class="lines">@@ -876,7 +876,7 @@
</span><span class="cx">     auto& style = box.style();
</span><span class="cx"> 
</span><span class="cx">     bool isHorizontal = true;
</span><del>-    switch (style.appearance()) {
</del><ins>+    switch (style.effectiveAppearance()) {
</ins><span class="cx">     case SliderHorizontalPart:
</span><span class="cx">         isHorizontal = true;
</span><span class="cx">         // Inset slightly so the thumb covers the edge.
</span><span class="lines">@@ -950,7 +950,7 @@
</span><span class="cx"> 
</span><span class="cx"> void RenderThemeIOS::adjustSliderThumbSize(RenderStyle& style, const Element*) const
</span><span class="cx"> {
</span><del>-    if (style.appearance() != SliderThumbHorizontalPart && style.appearance() != SliderThumbVerticalPart)
</del><ins>+    if (style.effectiveAppearance() != SliderThumbHorizontalPart && style.effectiveAppearance() != SliderThumbVerticalPart)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     // Enforce "border-radius: 50%".
</span><span class="lines">@@ -1132,7 +1132,7 @@
</span><span class="cx">         style.setMinHeight(Length(ControlBaseHeight / ControlBaseFontSize * style.fontDescription().computedSize(), LengthType::Fixed));
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INPUT_TYPE_COLOR)
</span><del>-    if (style.appearance() == ColorWellPart)
</del><ins>+    if (style.effectiveAppearance() == ColorWellPart)
</ins><span class="cx">         return;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -1288,7 +1288,7 @@
</span><span class="cx"> bool RenderThemeIOS::supportsBoxShadow(const RenderStyle& style) const
</span><span class="cx"> {
</span><span class="cx">     // FIXME: See if additional native controls can support box shadows.
</span><del>-    switch (style.appearance()) {
</del><ins>+    switch (style.effectiveAppearance()) {
</ins><span class="cx">     case SliderThumbHorizontalPart:
</span><span class="cx">     case SliderThumbVerticalPart:
</span><span class="cx">         return true;
</span><span class="lines">@@ -2370,7 +2370,7 @@
</span><span class="cx">     FloatRect tickRect;
</span><span class="cx">     FloatRoundedRect::Radii tickCornerRadii(tickCornerRadius);
</span><span class="cx"> 
</span><del>-    bool isHorizontal = box.style().appearance() == SliderHorizontalPart;
</del><ins>+    bool isHorizontal = box.style().effectiveAppearance() == SliderHorizontalPart;
</ins><span class="cx">     if (isHorizontal) {
</span><span class="cx">         tickRect.setWidth(tickWidth);
</span><span class="cx">         tickRect.setHeight(tickHeight);
</span><span class="lines">@@ -2417,7 +2417,7 @@
</span><span class="cx">     bool isHorizontal = true;
</span><span class="cx">     FloatRect trackClip = rect;
</span><span class="cx"> 
</span><del>-    switch (box.style().appearance()) {
</del><ins>+    switch (box.style().effectiveAppearance()) {
</ins><span class="cx">     case SliderHorizontalPart:
</span><span class="cx">         // Inset slightly so the thumb covers the edge.
</span><span class="cx">         if (trackClip.width() > 2) {
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderThemeMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderThemeMac.mm (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderThemeMac.mm 2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/rendering/RenderThemeMac.mm    2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -749,7 +749,7 @@
</span><span class="cx"> 
</span><span class="cx"> bool RenderThemeMac::isControlStyled(const RenderStyle& style, const RenderStyle& userAgentStyle) const
</span><span class="cx"> {
</span><del>-    auto appearance = style.appearance();
</del><ins>+    auto appearance = style.effectiveAppearance();
</ins><span class="cx">     if (appearance == TextFieldPart || appearance == TextAreaPart || appearance == SearchFieldPart || appearance == ListboxPart)
</span><span class="cx">         return style.border() != userAgentStyle.border();
</span><span class="cx"> 
</span><span class="lines">@@ -783,7 +783,7 @@
</span><span class="cx"> 
</span><span class="cx"> void RenderThemeMac::adjustRepaintRect(const RenderObject& renderer, FloatRect& rect)
</span><span class="cx"> {
</span><del>-    ControlPart part = renderer.style().appearance();
</del><ins>+    ControlPart part = renderer.style().effectiveAppearance();
</ins><span class="cx"> 
</span><span class="cx"> #if USE(NEW_THEME)
</span><span class="cx">     switch (part) {
</span><span class="lines">@@ -875,7 +875,7 @@
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     // Checkboxes only have tint when checked.
</span><del>-    if (o.style().appearance() == CheckboxPart)
</del><ins>+    if (o.style().effectiveAppearance() == CheckboxPart)
</ins><span class="cx">         return isChecked(o);
</span><span class="cx"> 
</span><span class="cx">     // For now assume other controls have tint if enabled.
</span><span class="lines">@@ -1154,7 +1154,7 @@
</span><span class="cx"> 
</span><span class="cx"> IntSize RenderThemeMac::meterSizeForBounds(const RenderMeter& renderMeter, const IntRect& bounds) const
</span><span class="cx"> {
</span><del>-    if (NoControlPart == renderMeter.style().appearance())
</del><ins>+    if (NoControlPart == renderMeter.style().effectiveAppearance())
</ins><span class="cx">         return bounds.size();
</span><span class="cx"> 
</span><span class="cx">     NSLevelIndicatorCell* cell = levelIndicatorFor(renderMeter);
</span><span class="lines">@@ -1213,7 +1213,7 @@
</span><span class="cx"> NSLevelIndicatorCell* RenderThemeMac::levelIndicatorFor(const RenderMeter& renderMeter) const
</span><span class="cx"> {
</span><span class="cx">     const RenderStyle& style = renderMeter.style();
</span><del>-    ASSERT(style.appearance() != NoControlPart);
</del><ins>+    ASSERT(style.effectiveAppearance() != NoControlPart);
</ins><span class="cx"> 
</span><span class="cx">     if (!m_levelIndicator)
</span><span class="cx">         m_levelIndicator = adoptNS([[NSLevelIndicatorCell alloc] initWithLevelIndicatorStyle:NSLevelIndicatorStyleContinuousCapacity]);
</span><span class="lines">@@ -1242,7 +1242,7 @@
</span><span class="cx">         break;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    [cell setLevelIndicatorStyle:levelIndicatorStyleFor(style.appearance())];
</del><ins>+    [cell setLevelIndicatorStyle:levelIndicatorStyleFor(style.effectiveAppearance())];
</ins><span class="cx">     [cell setUserInterfaceLayoutDirection:style.isLeftToRightDirection() ? NSUserInterfaceLayoutDirectionLeftToRight : NSUserInterfaceLayoutDirectionRightToLeft];
</span><span class="cx">     [cell setMinValue:element->min()];
</span><span class="cx">     [cell setMaxValue:element->max()];
</span><span class="lines">@@ -1274,7 +1274,7 @@
</span><span class="cx">     // Workaround until <rdar://problem/15855086> is fixed.
</span><span class="cx">     int maxDimension = static_cast<int>(std::numeric_limits<ushort>::max());
</span><span class="cx">     IntRect progressBarBounds(bounds.x(), bounds.y(), std::min(bounds.width(), maxDimension), std::min(bounds.height(), maxDimension));
</span><del>-    if (NoControlPart == renderObject.style().appearance())
</del><ins>+    if (NoControlPart == renderObject.style().effectiveAppearance())
</ins><span class="cx">         return progressBarBounds;
</span><span class="cx"> 
</span><span class="cx">     float zoomLevel = renderObject.style().effectiveZoom();
</span><span class="lines">@@ -1589,7 +1589,7 @@
</span><span class="cx"> 
</span><span class="cx"> LengthBox RenderThemeMac::popupInternalPaddingBox(const RenderStyle& style, const Settings&) const
</span><span class="cx"> {
</span><del>-    if (style.appearance() == MenulistPart) {
</del><ins>+    if (style.effectiveAppearance() == MenulistPart) {
</ins><span class="cx">         const int* padding = popupButtonPadding(controlSizeForFont(style), style.direction() == TextDirection::RTL);
</span><span class="cx">         return { static_cast<int>(padding[topPadding] * style.effectiveZoom()),
</span><span class="cx">             static_cast<int>(padding[rightPadding] * style.effectiveZoom()),
</span><span class="lines">@@ -1597,7 +1597,7 @@
</span><span class="cx">             static_cast<int>(padding[leftPadding] * style.effectiveZoom()) };
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (style.appearance() == MenulistButtonPart) {
</del><ins>+    if (style.effectiveAppearance() == MenulistButtonPart) {
</ins><span class="cx">         float arrowWidth = baseArrowWidth * (style.computedFontPixelSize() / baseFontSize);
</span><span class="cx">         float rightPadding = ceilf(arrowWidth + (arrowPaddingBefore + arrowPaddingAfter + paddingBeforeSeparator) * style.effectiveZoom());
</span><span class="cx">         float leftPadding = styledPopupPaddingLeft * style.effectiveZoom();
</span><span class="lines">@@ -1694,10 +1694,10 @@
</span><span class="cx">     float zoomLevel = o.style().effectiveZoom();
</span><span class="cx">     float zoomedTrackWidth = trackWidth * zoomLevel;
</span><span class="cx"> 
</span><del>-    if (o.style().appearance() ==  SliderHorizontalPart || o.style().appearance() ==  MediaSliderPart) {
</del><ins>+    if (o.style().effectiveAppearance() ==  SliderHorizontalPart || o.style().effectiveAppearance() ==  MediaSliderPart) {
</ins><span class="cx">         bounds.setHeight(zoomedTrackWidth);
</span><span class="cx">         bounds.setY(r.y() + r.height() / 2 - zoomedTrackWidth / 2);
</span><del>-    } else if (o.style().appearance() == SliderVerticalPart) {
</del><ins>+    } else if (o.style().effectiveAppearance() == SliderVerticalPart) {
</ins><span class="cx">         bounds.setWidth(zoomedTrackWidth);
</span><span class="cx">         bounds.setX(r.x() + r.width() / 2 - zoomedTrackWidth / 2);
</span><span class="cx">     }
</span><span class="lines">@@ -1716,7 +1716,7 @@
</span><span class="cx">     struct CGFunctionCallbacks mainCallbacks = { 0, TrackGradientInterpolate, NULL };
</span><span class="cx">     RetainPtr<CGFunctionRef> mainFunction = adoptCF(CGFunctionCreate(NULL, 1, NULL, 4, NULL, &mainCallbacks));
</span><span class="cx">     RetainPtr<CGShadingRef> mainShading;
</span><del>-    if (o.style().appearance() == SliderVerticalPart)
</del><ins>+    if (o.style().effectiveAppearance() == SliderVerticalPart)
</ins><span class="cx">         mainShading = adoptCF(CGShadingCreateAxial(cspace, CGPointMake(bounds.x(),  bounds.maxY()), CGPointMake(bounds.maxX(), bounds.maxY()), mainFunction.get(), false, false));
</span><span class="cx">     else
</span><span class="cx">         mainShading = adoptCF(CGShadingCreateAxial(cspace, CGPointMake(bounds.x(),  bounds.y()), CGPointMake(bounds.x(), bounds.maxY()), mainFunction.get(), false, false));
</span><span class="lines">@@ -1739,7 +1739,7 @@
</span><span class="cx"> 
</span><span class="cx"> bool RenderThemeMac::paintSliderThumb(const RenderObject& o, const PaintInfo& paintInfo, const IntRect& r)
</span><span class="cx"> {
</span><del>-    NSSliderCell* sliderThumbCell = o.style().appearance() == SliderThumbVerticalPart
</del><ins>+    NSSliderCell* sliderThumbCell = o.style().effectiveAppearance() == SliderThumbVerticalPart
</ins><span class="cx">         ? sliderThumbVertical()
</span><span class="cx">         : sliderThumbHorizontal();
</span><span class="cx"> 
</span><span class="lines">@@ -1754,7 +1754,7 @@
</span><span class="cx"> 
</span><span class="cx">     // Update the pressed state using the NSCell tracking methods, since that's how NSSliderCell keeps track of it.
</span><span class="cx">     bool oldPressed;
</span><del>-    if (o.style().appearance() == SliderThumbVerticalPart)
</del><ins>+    if (o.style().effectiveAppearance() == SliderThumbVerticalPart)
</ins><span class="cx">         oldPressed = m_isSliderThumbVerticalPressed;
</span><span class="cx">     else
</span><span class="cx">         oldPressed = m_isSliderThumbHorizontalPressed;
</span><span class="lines">@@ -1761,7 +1761,7 @@
</span><span class="cx"> 
</span><span class="cx">     bool pressed = isPressed(o);
</span><span class="cx"> 
</span><del>-    if (o.style().appearance() == SliderThumbVerticalPart)
</del><ins>+    if (o.style().effectiveAppearance() == SliderThumbVerticalPart)
</ins><span class="cx">         m_isSliderThumbVerticalPressed = pressed;
</span><span class="cx">     else
</span><span class="cx">         m_isSliderThumbHorizontalPressed = pressed;
</span><span class="lines">@@ -1777,7 +1777,7 @@
</span><span class="cx"> 
</span><span class="cx">     FloatRect bounds = r;
</span><span class="cx">     // Make the height of the vertical slider slightly larger so NSSliderCell will draw a vertical slider.
</span><del>-    if (o.style().appearance() == SliderThumbVerticalPart)
</del><ins>+    if (o.style().effectiveAppearance() == SliderThumbVerticalPart)
</ins><span class="cx">         bounds.setHeight(bounds.height() + verticalSliderHeightPadding * o.style().effectiveZoom());
</span><span class="cx"> 
</span><span class="cx">     GraphicsContextStateSaver stateSaver(paintInfo.context());
</span><span class="lines">@@ -2114,7 +2114,7 @@
</span><span class="cx"> void RenderThemeMac::adjustSliderThumbSize(RenderStyle& style, const Element*) const
</span><span class="cx"> {
</span><span class="cx">     float zoomLevel = style.effectiveZoom();
</span><del>-    if (style.appearance() == SliderThumbHorizontalPart || style.appearance() == SliderThumbVerticalPart) {
</del><ins>+    if (style.effectiveAppearance() == SliderThumbHorizontalPart || style.effectiveAppearance() == SliderThumbVerticalPart) {
</ins><span class="cx">         style.setWidth(Length(static_cast<int>(sliderThumbThickness * zoomLevel), LengthType::Fixed));
</span><span class="cx">         style.setHeight(Length(static_cast<int>(sliderThumbThickness * zoomLevel), LengthType::Fixed));
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderThemeWincpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderThemeWin.cpp (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderThemeWin.cpp        2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/rendering/RenderThemeWin.cpp   2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -379,13 +379,13 @@
</span><span class="cx"> 
</span><span class="cx"> bool RenderThemeWin::supportsFocusRing(const RenderStyle& style) const
</span><span class="cx"> {
</span><del>-    return supportsFocus(style.appearance());
</del><ins>+    return supportsFocus(style.effectiveAppearance());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> unsigned RenderThemeWin::determineClassicState(const RenderObject& o, ControlSubPart subPart)
</span><span class="cx"> {
</span><span class="cx">     unsigned state = 0;
</span><del>-    switch (o.style().appearance()) {
</del><ins>+    switch (o.style().effectiveAppearance()) {
</ins><span class="cx">         case PushButtonPart:
</span><span class="cx">         case ButtonPart:
</span><span class="cx">         case DefaultButtonPart:
</span><span class="lines">@@ -397,7 +397,7 @@
</span><span class="cx">             break;
</span><span class="cx">         case RadioPart:
</span><span class="cx">         case CheckboxPart:
</span><del>-            state = (o.style().appearance() == RadioPart) ? DFCS_BUTTONRADIO : DFCS_BUTTONCHECK;
</del><ins>+            state = (o.style().effectiveAppearance() == RadioPart) ? DFCS_BUTTONRADIO : DFCS_BUTTONCHECK;
</ins><span class="cx">             if (isChecked(o))
</span><span class="cx">                 state |= DFCS_CHECKED;
</span><span class="cx">             if (!isEnabled(o))
</span><span class="lines">@@ -432,7 +432,7 @@
</span><span class="cx"> unsigned RenderThemeWin::determineState(const RenderObject& o)
</span><span class="cx"> {
</span><span class="cx">     unsigned result = TS_NORMAL;
</span><del>-    ControlPart appearance = o.style().appearance();
</del><ins>+    ControlPart appearance = o.style().effectiveAppearance();
</ins><span class="cx">     if (!isEnabled(o))
</span><span class="cx">         result = TS_DISABLED;
</span><span class="cx">     else if (isReadOnlyControl(o) && (TextFieldPart == appearance || TextAreaPart == appearance || SearchFieldPart == appearance))
</span><span class="lines">@@ -455,7 +455,7 @@
</span><span class="cx">     unsigned result = TUS_NORMAL;
</span><span class="cx">     if (!isEnabled(o))
</span><span class="cx">         result = TUS_DISABLED;
</span><del>-    else if (supportsFocus(o.style().appearance()) && isFocused(o))
</del><ins>+    else if (supportsFocus(o.style().effectiveAppearance()) && isFocused(o))
</ins><span class="cx">         result = TUS_FOCUSED;
</span><span class="cx">     else if (isPressed(o))
</span><span class="cx">         result = TUS_PRESSED;
</span><span class="lines">@@ -471,7 +471,7 @@
</span><span class="cx">         result = PBS_DISABLED;
</span><span class="cx">     else if (isPressed(o))
</span><span class="cx">         result = PBS_PRESSED;
</span><del>-    else if (supportsFocus(o.style().appearance()) && isFocused(o))
</del><ins>+    else if (supportsFocus(o.style().effectiveAppearance()) && isFocused(o))
</ins><span class="cx">         result = PBS_DEFAULTED;
</span><span class="cx">     else if (isHovered(o))
</span><span class="cx">         result = PBS_HOT;
</span><span class="lines">@@ -496,7 +496,7 @@
</span><span class="cx"> ThemeData RenderThemeWin::getClassicThemeData(const RenderObject& o, ControlSubPart subPart)
</span><span class="cx"> {
</span><span class="cx">     ThemeData result;
</span><del>-    switch (o.style().appearance()) {
</del><ins>+    switch (o.style().effectiveAppearance()) {
</ins><span class="cx">         case PushButtonPart:
</span><span class="cx">         case ButtonPart:
</span><span class="cx">         case DefaultButtonPart:
</span><span class="lines">@@ -551,7 +551,7 @@
</span><span class="cx">         return getClassicThemeData(o, subPart);
</span><span class="cx"> 
</span><span class="cx">     ThemeData result;
</span><del>-    switch (o.style().appearance()) {
</del><ins>+    switch (o.style().effectiveAppearance()) {
</ins><span class="cx">         case PushButtonPart:
</span><span class="cx">         case ButtonPart:
</span><span class="cx">         case DefaultButtonPart:
</span><span class="lines">@@ -633,8 +633,8 @@
</span><span class="cx">         } else if (themeData.m_part == TKP_TRACK || themeData.m_part == TKP_TRACKVERT) {
</span><span class="cx">             ::DrawEdge(hdc, &widgetRect, EDGE_SUNKEN, BF_RECT | BF_ADJUST);
</span><span class="cx">             ::FillRect(hdc, &widgetRect, (HBRUSH)GetStockObject(GRAY_BRUSH));
</span><del>-        } else if ((o.style().appearance() == SliderThumbHorizontalPart
-        || o.style().appearance() == SliderThumbVerticalPart)
</del><ins>+        } else if ((o.style().effectiveAppearance() == SliderThumbHorizontalPart
+        || o.style().effectiveAppearance() == SliderThumbVerticalPart)
</ins><span class="cx">         && (themeData.m_part == TKP_THUMBBOTTOM || themeData.m_part == TKP_THUMBTOP
</span><span class="cx">         || themeData.m_part == TKP_THUMBLEFT || themeData.m_part == TKP_THUMBRIGHT)) {
</span><span class="cx">             ::DrawEdge(hdc, &widgetRect, EDGE_RAISED, BF_RECT | BF_SOFT | BF_MIDDLE | BF_ADJUST);
</span><span class="lines">@@ -658,7 +658,7 @@
</span><span class="cx">             }
</span><span class="cx">         } else {
</span><span class="cx">             // Push buttons, buttons, checkboxes and radios, and the dropdown arrow in menulists.
</span><del>-            if (o.style().appearance() == DefaultButtonPart) {
</del><ins>+            if (o.style().effectiveAppearance() == DefaultButtonPart) {
</ins><span class="cx">                 HBRUSH brush = ::GetSysColorBrush(COLOR_3DDKSHADOW);
</span><span class="cx">                 ::FrameRect(hdc, &widgetRect, brush);
</span><span class="cx">                 ::InflateRect(&widgetRect, -1, -1);
</span><span class="lines">@@ -810,10 +810,10 @@
</span><span class="cx"> {
</span><span class="cx">     IntRect bounds = r;
</span><span class="cx">     
</span><del>-    if (o.style().appearance() ==  SliderHorizontalPart) {
</del><ins>+    if (o.style().effectiveAppearance() ==  SliderHorizontalPart) {
</ins><span class="cx">         bounds.setHeight(trackWidth);
</span><span class="cx">         bounds.setY(r.y() + r.height() / 2 - trackWidth / 2);
</span><del>-    } else if (o.style().appearance() == SliderVerticalPart) {
</del><ins>+    } else if (o.style().effectiveAppearance() == SliderVerticalPart) {
</ins><span class="cx">         bounds.setWidth(trackWidth);
</span><span class="cx">         bounds.setX(r.x() + r.width() / 2 - trackWidth / 2);
</span><span class="cx">     }
</span><span class="lines">@@ -833,7 +833,7 @@
</span><span class="cx"> 
</span><span class="cx"> void RenderThemeWin::adjustSliderThumbSize(RenderStyle& style, const Element*) const
</span><span class="cx"> {
</span><del>-    ControlPart part = style.appearance();
</del><ins>+    ControlPart part = style.effectiveAppearance();
</ins><span class="cx">     if (part == SliderThumbVerticalPart) {
</span><span class="cx">         style.setWidth(Length(sliderThumbHeight, LengthType::Fixed));
</span><span class="cx">         style.setHeight(Length(sliderThumbWidth, LengthType::Fixed));
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleRenderStylecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/style/RenderStyle.cpp (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/RenderStyle.cpp     2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/rendering/style/RenderStyle.cpp        2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -457,7 +457,7 @@
</span><span class="cx"> unsigned RenderStyle::hashForTextAutosizing() const
</span><span class="cx"> {
</span><span class="cx">     // FIXME: Not a very smart hash. Could be improved upon. See <https://bugs.webkit.org/show_bug.cgi?id=121131>.
</span><del>-    unsigned hash = m_rareNonInheritedData->appearance;
</del><ins>+    unsigned hash = m_rareNonInheritedData->effectiveAppearance;
</ins><span class="cx">     hash ^= m_rareNonInheritedData->marginBeforeCollapse;
</span><span class="cx">     hash ^= m_rareNonInheritedData->marginAfterCollapse;
</span><span class="cx">     hash ^= m_rareNonInheritedData->lineClamp.value();
</span><span class="lines">@@ -479,7 +479,7 @@
</span><span class="cx"> 
</span><span class="cx"> bool RenderStyle::equalForTextAutosizing(const RenderStyle& other) const
</span><span class="cx"> {
</span><del>-    return m_rareNonInheritedData->appearance == other.m_rareNonInheritedData->appearance
</del><ins>+    return m_rareNonInheritedData->effectiveAppearance == other.m_rareNonInheritedData->effectiveAppearance
</ins><span class="cx">         && m_rareNonInheritedData->marginBeforeCollapse == other.m_rareNonInheritedData->marginBeforeCollapse
</span><span class="cx">         && m_rareNonInheritedData->marginAfterCollapse == other.m_rareNonInheritedData->marginAfterCollapse
</span><span class="cx">         && m_rareNonInheritedData->lineClamp == other.m_rareNonInheritedData->lineClamp
</span><span class="lines">@@ -650,7 +650,7 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(&first != &second);
</span><span class="cx"> 
</span><del>-    if (first.appearance != second.appearance
</del><ins>+    if (first.effectiveAppearance != second.effectiveAppearance
</ins><span class="cx">         || first.marginBeforeCollapse != second.marginBeforeCollapse
</span><span class="cx">         || first.marginAfterCollapse != second.marginAfterCollapse
</span><span class="cx">         || first.lineClamp != second.lineClamp
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleRenderStyleh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/style/RenderStyle.h (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/RenderStyle.h       2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/rendering/style/RenderStyle.h  2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -215,6 +215,7 @@
</span><span class="cx">     bool hasEntirelyFixedBackground() const;
</span><span class="cx"> 
</span><span class="cx">     bool hasAppearance() const { return appearance() != NoControlPart; }
</span><ins>+    bool hasEffectiveAppearance() const { return effectiveAppearance() != NoControlPart; }
</ins><span class="cx"> 
</span><span class="cx">     bool hasBackground() const;
</span><span class="cx">     
</span><span class="lines">@@ -509,6 +510,7 @@
</span><span class="cx">     float opacity() const { return m_rareNonInheritedData->opacity; }
</span><span class="cx">     bool hasOpacity() const { return m_rareNonInheritedData->opacity < 1; }
</span><span class="cx">     ControlPart appearance() const { return static_cast<ControlPart>(m_rareNonInheritedData->appearance); }
</span><ins>+    ControlPart effectiveAppearance() const { return static_cast<ControlPart>(m_rareNonInheritedData->effectiveAppearance); }
</ins><span class="cx">     AspectRatioType aspectRatioType() const { return static_cast<AspectRatioType>(m_rareNonInheritedData->aspectRatioType); }
</span><span class="cx">     double aspectRatioWidth() const { return m_rareNonInheritedData->aspectRatioWidth; }
</span><span class="cx">     double aspectRatioHeight() const { return m_rareNonInheritedData->aspectRatioHeight; }
</span><span class="lines">@@ -1131,7 +1133,8 @@
</span><span class="cx">     void setCaretColor(const Color& c) { SET_VAR(m_rareInheritedData, caretColor, c); SET_VAR(m_rareInheritedData, hasAutoCaretColor, false);  }
</span><span class="cx">     void setHasAutoCaretColor() { SET_VAR(m_rareInheritedData, hasAutoCaretColor, true); SET_VAR(m_rareInheritedData, caretColor, currentColor()); }
</span><span class="cx">     void setOpacity(float f) { float v = clampTo<float>(f, 0.f, 1.f); SET_VAR(m_rareNonInheritedData, opacity, v); }
</span><del>-    void setAppearance(ControlPart a) { SET_VAR(m_rareNonInheritedData, appearance, a); }
</del><ins>+    void setAppearance(ControlPart a) { SET_VAR(m_rareNonInheritedData, appearance, a); SET_VAR(m_rareNonInheritedData, effectiveAppearance, a); }
+    void setEffectiveAppearance(ControlPart a) { SET_VAR(m_rareNonInheritedData, effectiveAppearance, a); }
</ins><span class="cx">     // For valid values of box-align see http://www.w3.org/TR/2009/WD-css3-flexbox-20090723/#alignment
</span><span class="cx">     void setBoxAlign(BoxAlignment a) { SET_NESTED_VAR(m_rareNonInheritedData, deprecatedFlexibleBox, align, static_cast<unsigned>(a)); }
</span><span class="cx">     void setBoxDirection(BoxDirection d) { m_inheritedFlags.boxDirection = static_cast<unsigned>(d); }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleStyleRareNonInheritedDatacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp       2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp  2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -92,6 +92,7 @@
</span><span class="cx">     , marginBeforeCollapse(static_cast<unsigned>(MarginCollapse::Collapse))
</span><span class="cx">     , marginAfterCollapse(static_cast<unsigned>(MarginCollapse::Collapse))
</span><span class="cx">     , appearance(static_cast<unsigned>(RenderStyle::initialAppearance()))
</span><ins>+    , effectiveAppearance(static_cast<unsigned>(RenderStyle::initialAppearance()))
</ins><span class="cx">     , borderFit(static_cast<unsigned>(RenderStyle::initialBorderFit()))
</span><span class="cx">     , textCombine(static_cast<unsigned>(RenderStyle::initialTextCombine()))
</span><span class="cx">     , textDecorationStyle(static_cast<unsigned>(RenderStyle::initialTextDecorationStyle()))
</span><span class="lines">@@ -192,6 +193,7 @@
</span><span class="cx">     , marginBeforeCollapse(o.marginBeforeCollapse)
</span><span class="cx">     , marginAfterCollapse(o.marginAfterCollapse)
</span><span class="cx">     , appearance(o.appearance)
</span><ins>+    , effectiveAppearance(o.effectiveAppearance)
</ins><span class="cx">     , borderFit(o.borderFit)
</span><span class="cx">     , textCombine(o.textCombine)
</span><span class="cx">     , textDecorationStyle(o.textDecorationStyle)
</span><span class="lines">@@ -296,6 +298,7 @@
</span><span class="cx">         && marginBeforeCollapse == o.marginBeforeCollapse
</span><span class="cx">         && marginAfterCollapse == o.marginAfterCollapse
</span><span class="cx">         && appearance == o.appearance
</span><ins>+        && effectiveAppearance == o.effectiveAppearance
</ins><span class="cx">         && borderFit == o.borderFit
</span><span class="cx">         && textCombine == o.textCombine
</span><span class="cx">         && textDecorationStyle == o.textDecorationStyle
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleStyleRareNonInheritedDatah"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.h (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.h 2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.h    2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -201,6 +201,7 @@
</span><span class="cx">     unsigned marginBeforeCollapse : 2; // MarginCollapse
</span><span class="cx">     unsigned marginAfterCollapse : 2; // MarginCollapse
</span><span class="cx">     unsigned appearance : 6; // EAppearance
</span><ins>+    unsigned effectiveAppearance : 6; // EAppearance
</ins><span class="cx">     unsigned borderFit : 1; // BorderFit
</span><span class="cx">     unsigned textCombine : 1; // CSS3 text-combine properties
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorestyleMatchedDeclarationsCachecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/style/MatchedDeclarationsCache.cpp (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/style/MatchedDeclarationsCache.cpp  2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/style/MatchedDeclarationsCache.cpp     2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -53,7 +53,7 @@
</span><span class="cx">     // content:attr() value depends on the element it is being applied to.
</span><span class="cx">     if (style.hasAttrContent() || (style.styleType() != PseudoId::None && parentStyle.hasAttrContent()))
</span><span class="cx">         return false;
</span><del>-    if (style.hasAppearance())
</del><ins>+    if (style.hasEffectiveAppearance())
</ins><span class="cx">         return false;
</span><span class="cx">     if (style.zoom() != RenderStyle::initialZoom())
</span><span class="cx">         return false;
</span></span></pre></div>
<a id="trunkSourceWebCorestyleStyleAdjustercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/style/StyleAdjuster.cpp (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/style/StyleAdjuster.cpp     2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/style/StyleAdjuster.cpp        2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -459,7 +459,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // Menulists should have visible overflow
</span><del>-    if (style.appearance() == MenulistPart) {
</del><ins>+    if (style.effectiveAppearance() == MenulistPart) {
</ins><span class="cx">         style.setOverflowX(Overflow::Visible);
</span><span class="cx">         style.setOverflowY(Overflow::Visible);
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCorestyleStyleTreeResolvercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/style/StyleTreeResolver.cpp (283268 => 283269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/style/StyleTreeResolver.cpp 2021-09-29 22:22:43 UTC (rev 283268)
+++ trunk/Source/WebCore/style/StyleTreeResolver.cpp    2021-09-29 22:25:07 UTC (rev 283269)
</span><span class="lines">@@ -246,7 +246,7 @@
</span><span class="cx">     if (element.hasTagName(HTMLNames::meterTag)
</span><span class="cx">         || is<HTMLProgressElement>(element)
</span><span class="cx">         || (is<HTMLInputElement>(element) && downcast<HTMLInputElement>(element).isSearchField())) {
</span><del>-        if (existingStyle && update.style->appearance() != existingStyle->appearance()) {
</del><ins>+        if (existingStyle && update.style->effectiveAppearance() != existingStyle->effectiveAppearance()) {
</ins><span class="cx">             update.change = Change::Renderer;
</span><span class="cx">             descendantsToResolve = DescendantsToResolve::All;
</span><span class="cx">         }
</span></span></pre>
</div>
</div>

</body>
</html>