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; } };