diff --git a/Source/WebCore/html/shadow/SliderThumbElement.cpp b/Source/WebCore/html/shadow/SliderThumbElement.cpp
index dd60d064ec04..32c3d2f9fb58 100644
--- a/Source/WebCore/html/shadow/SliderThumbElement.cpp
+++ b/Source/WebCore/html/shadow/SliderThumbElement.cpp
@@ -63,7 +63,6 @@ using namespace HTMLNames;
WTF_MAKE_ISO_ALLOCATED_IMPL(SliderThumbElement);
WTF_MAKE_ISO_ALLOCATED_IMPL(SliderContainerElement);
-WTF_MAKE_ISO_ALLOCATED_IMPL(RenderSliderThumb);
inline static Decimal sliderPosition(HTMLInputElement& element)
{
@@ -87,36 +86,6 @@ inline static bool hasVerticalAppearance(HTMLInputElement& input)
// --------------------------------
-RenderSliderThumb::RenderSliderThumb(SliderThumbElement& element, RenderStyle&& style)
- : RenderBlockFlow(element, WTFMove(style))
-{
-}
-
-void RenderSliderThumb::updateAppearance(const RenderStyle* parentStyle)
-{
- 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()) {
- ASSERT(element());
- theme().adjustSliderThumbSize(mutableStyle(), element());
- }
-}
-
-bool RenderSliderThumb::isSliderThumb() const
-{
- return true;
-}
-
-// --------------------------------
-
// FIXME: Find a way to cascade appearance and adjust heights, and get rid of this class.
// http://webkit.org/b/62535
class RenderSliderContainer final : public RenderFlexibleBox {
@@ -223,11 +192,6 @@ void SliderThumbElement::setPositionFromValue()
renderer()->setNeedsLayout();
}
-RenderPtr SliderThumbElement::createElementRenderer(RenderStyle&& style, const RenderTreePosition&)
-{
- return createRenderer(*this, WTFMove(style));
-}
-
bool SliderThumbElement::isDisabledFormControl() const
{
auto input = hostInput();
@@ -586,10 +550,8 @@ RefPtr SliderThumbElement::hostInput() const
return downcast(shadowHost());
}
-std::optional SliderThumbElement::resolveCustomStyle(const Style::ResolutionContext&, const RenderStyle* hostStyle)
+std::optional SliderThumbElement::resolveCustomStyle(const Style::ResolutionContext& resolutionContext, const RenderStyle* hostStyle)
{
- // This doesn't actually compute style. This is just a hack to pick shadow pseudo id when host style is known.
-
if (!hostStyle)
return std::nullopt;
@@ -601,9 +563,31 @@ std::optional SliderThumbElement::resolveCustomStyle(const
break;
default:
m_shadowPseudoId = ShadowPseudoIds::webkitSliderThumb();
+ break;
}
- return std::nullopt;
+ auto elementStyle = resolveStyle(resolutionContext);
+ switch (hostStyle->effectiveAppearance()) {
+ case MediaSliderPart:
+ elementStyle.renderStyle->setEffectiveAppearance(MediaSliderThumbPart);
+ break;
+ case MediaVolumeSliderPart:
+ elementStyle.renderStyle->setEffectiveAppearance(MediaVolumeSliderThumbPart);
+ break;
+ case MediaFullScreenVolumeSliderPart:
+ elementStyle.renderStyle->setEffectiveAppearance(MediaFullScreenVolumeSliderThumbPart);
+ break;
+ case SliderVerticalPart:
+ elementStyle.renderStyle->setEffectiveAppearance(SliderThumbVerticalPart);
+ break;
+ case SliderHorizontalPart:
+ elementStyle.renderStyle->setEffectiveAppearance(SliderThumbHorizontalPart);
+ break;
+ default:
+ break;
+ }
+
+ return elementStyle;
}
const AtomString& SliderThumbElement::shadowPseudoId() const
diff --git a/Source/WebCore/html/shadow/SliderThumbElement.h b/Source/WebCore/html/shadow/SliderThumbElement.h
index e9830f40c2f7..36d725123d7f 100644
--- a/Source/WebCore/html/shadow/SliderThumbElement.h
+++ b/Source/WebCore/html/shadow/SliderThumbElement.h
@@ -59,8 +59,6 @@ class SliderThumbElement final : public HTMLDivElement {
private:
SliderThumbElement(Document&);
- RenderPtr createElementRenderer(RenderStyle&&, const RenderTreePosition&) final;
-
Ref cloneElementWithoutAttributesAndChildren(Document&) final;
bool isDisabledFormControl() const final;
bool matchesReadWritePseudoClass() const final;
@@ -114,18 +112,6 @@ inline Ref SliderThumbElement::create(Document& document)
// --------------------------------
-class RenderSliderThumb final : public RenderBlockFlow {
- WTF_MAKE_ISO_ALLOCATED(RenderSliderThumb);
-public:
- RenderSliderThumb(SliderThumbElement&, RenderStyle&&);
- void updateAppearance(const RenderStyle* parentStyle);
-
-private:
- bool isSliderThumb() const final;
-};
-
-// --------------------------------
-
class SliderContainerElement final : public HTMLDivElement {
WTF_MAKE_ISO_ALLOCATED(SliderContainerElement);
public:
diff --git a/Source/WebCore/rendering/RenderObject.h b/Source/WebCore/rendering/RenderObject.h
index 1d72502d421a..98ef7eb3c049 100644
--- a/Source/WebCore/rendering/RenderObject.h
+++ b/Source/WebCore/rendering/RenderObject.h
@@ -240,7 +240,6 @@ class RenderObject : public CachedImageClient {
virtual bool isRubyText() const { return false; }
virtual bool isSlider() const { return false; }
- virtual bool isSliderThumb() const { return false; }
virtual bool isTable() const { return false; }
virtual bool isTableCell() const { return false; }
virtual bool isRenderTableCol() const { return false; }
diff --git a/Source/WebCore/rendering/RenderSlider.cpp b/Source/WebCore/rendering/RenderSlider.cpp
index 2165b29d998e..5cd099097ecf 100644
--- a/Source/WebCore/rendering/RenderSlider.cpp
+++ b/Source/WebCore/rendering/RenderSlider.cpp
@@ -91,18 +91,6 @@ void RenderSlider::computePreferredLogicalWidths()
setPreferredLogicalWidthsDirty(false);
}
-void RenderSlider::layout()
-{
- StackStats::LayoutCheckPoint layoutCheckPoint;
-
- // FIXME: Find a way to cascade appearance. http://webkit.org/b/62535
- RenderBox* thumbBox = element().sliderThumbElement()->renderBox();
- if (thumbBox && thumbBox->isSliderThumb())
- static_cast(thumbBox)->updateAppearance(&style());
-
- RenderFlexibleBox::layout();
-}
-
bool RenderSlider::inDragMode() const
{
return element().sliderThumbElement()->active();
diff --git a/Source/WebCore/rendering/RenderSlider.h b/Source/WebCore/rendering/RenderSlider.h
index 7bfba0fb6f78..0da4fdb97dc3 100644
--- a/Source/WebCore/rendering/RenderSlider.h
+++ b/Source/WebCore/rendering/RenderSlider.h
@@ -48,7 +48,6 @@ class RenderSlider final : public RenderFlexibleBox {
LayoutUnit baselinePosition(FontBaseline, bool firstLine, LineDirectionMode, LinePositionMode = PositionOnContainingLine) const override;
void computeIntrinsicLogicalWidths(LayoutUnit& minLogicalWidth, LayoutUnit& maxLogicalWidth) const override;
void computePreferredLogicalWidths() override;
- void layout() override;
bool isFlexibleBoxImpl() const override { return true; }
};