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

Changeset 294728 in webkit


Ignore:
Timestamp:
May 23, 2022, 10:09:52 PM (4 years ago)
Author:
ntim@apple.com
Message:

Remove RenderSliderThumb
https://bugs.webkit.org/show_bug.cgi?id=240794

Reviewed by Antti Koivisto.

Test: imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001.html

  • Source/WebCore/html/shadow/SliderThumbElement.cpp:

(WebCore::SliderThumbElement::resolveCustomStyle):
(WebCore::SliderContainerElement::resolveCustomStyle):
(WebCore::RenderSliderThumb::RenderSliderThumb): Deleted.
(WebCore::RenderSliderThumb::updateAppearance): Deleted.
(WebCore::RenderSliderThumb::isSliderThumb const): Deleted.
(WebCore::SliderThumbElement::createElementRenderer): Deleted.

  • Source/WebCore/html/shadow/SliderThumbElement.h:
  • Source/WebCore/rendering/RenderObject.h:

(WebCore::RenderObject::isSlider const):
(WebCore::RenderObject::isSliderThumb const): Deleted.

  • Source/WebCore/rendering/RenderSlider.cpp:

(WebCore::RenderSlider::layout): Deleted.

  • Source/WebCore/rendering/RenderSlider.h:

Canonical link: https://commits.webkit.org/250906@main

Location:
trunk/Source/WebCore
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/html/shadow/SliderThumbElement.cpp

    r294677 r294728  
    6464WTF_MAKE_ISO_ALLOCATED_IMPL(SliderThumbElement);
    6565WTF_MAKE_ISO_ALLOCATED_IMPL(SliderContainerElement);
    66 WTF_MAKE_ISO_ALLOCATED_IMPL(RenderSliderThumb);
    6766
    6867inline static Decimal sliderPosition(HTMLInputElement& element)
     
    8483
    8584    return sliderStyle.effectiveAppearance() == SliderVerticalPart;
    86 }
    87 
    88 // --------------------------------
    89 
    90 RenderSliderThumb::RenderSliderThumb(SliderThumbElement& element, RenderStyle&& style)
    91     : RenderBlockFlow(element, WTFMove(style))
    92 {
    93 }
    94 
    95 void RenderSliderThumb::updateAppearance(const RenderStyle* parentStyle)
    96 {
    97     if (parentStyle->effectiveAppearance() == SliderVerticalPart)
    98         mutableStyle().setEffectiveAppearance(SliderThumbVerticalPart);
    99     else if (parentStyle->effectiveAppearance() == SliderHorizontalPart)
    100         mutableStyle().setEffectiveAppearance(SliderThumbHorizontalPart);
    101     else if (parentStyle->effectiveAppearance() == MediaSliderPart)
    102         mutableStyle().setEffectiveAppearance(MediaSliderThumbPart);
    103     else if (parentStyle->effectiveAppearance() == MediaVolumeSliderPart)
    104         mutableStyle().setEffectiveAppearance(MediaVolumeSliderThumbPart);
    105     else if (parentStyle->effectiveAppearance() == MediaFullScreenVolumeSliderPart)
    106         mutableStyle().setEffectiveAppearance(MediaFullScreenVolumeSliderThumbPart);
    107     if (style().hasEffectiveAppearance()) {
    108         ASSERT(element());
    109         theme().adjustSliderThumbSize(mutableStyle(), element());
    110     }
    111 }
    112 
    113 bool RenderSliderThumb::isSliderThumb() const
    114 {
    115     return true;
    11685}
    11786
     
    224193}
    225194
    226 RenderPtr<RenderElement> SliderThumbElement::createElementRenderer(RenderStyle&& style, const RenderTreePosition&)
    227 {
    228     return createRenderer<RenderSliderThumb>(*this, WTFMove(style));
    229 }
    230 
    231195bool SliderThumbElement::isDisabledFormControl() const
    232196{
     
    587551}
    588552
    589 std::optional<Style::ElementStyle> SliderThumbElement::resolveCustomStyle(const Style::ResolutionContext&, const RenderStyle* hostStyle)
    590 {
    591     // This doesn't actually compute style. This is just a hack to pick shadow pseudo id when host style is known.
    592 
     553std::optional<Style::ElementStyle> SliderThumbElement::resolveCustomStyle(const Style::ResolutionContext& resolutionContext, const RenderStyle* hostStyle)
     554{
    593555    if (!hostStyle)
    594556        return std::nullopt;
     
    602564    default:
    603565        m_shadowPseudoId = ShadowPseudoIds::webkitSliderThumb();
    604     }
    605 
    606     return std::nullopt;
     566        break;
     567    }
     568
     569    auto elementStyle = resolveStyle(resolutionContext);
     570    switch (hostStyle->effectiveAppearance()) {
     571    case MediaSliderPart:
     572        elementStyle.renderStyle->setEffectiveAppearance(MediaSliderThumbPart);
     573        break;
     574    case MediaVolumeSliderPart:
     575        elementStyle.renderStyle->setEffectiveAppearance(MediaVolumeSliderThumbPart);
     576        break;
     577    case MediaFullScreenVolumeSliderPart:
     578        elementStyle.renderStyle->setEffectiveAppearance(MediaFullScreenVolumeSliderThumbPart);
     579        break;
     580    case SliderVerticalPart:
     581        elementStyle.renderStyle->setEffectiveAppearance(SliderThumbVerticalPart);
     582        break;
     583    case SliderHorizontalPart:
     584        elementStyle.renderStyle->setEffectiveAppearance(SliderThumbHorizontalPart);
     585        break;
     586    default:
     587        break;
     588    }
     589
     590    return elementStyle;
    607591}
    608592
  • trunk/Source/WebCore/html/shadow/SliderThumbElement.h

    r293993 r294728  
    6060    SliderThumbElement(Document&);
    6161
    62     RenderPtr<RenderElement> createElementRenderer(RenderStyle&&, const RenderTreePosition&) final;
    63 
    6462    Ref<Element> cloneElementWithoutAttributesAndChildren(Document&) final;
    6563    bool isDisabledFormControl() const final;
     
    115113// --------------------------------
    116114
    117 class RenderSliderThumb final : public RenderBlockFlow {
    118     WTF_MAKE_ISO_ALLOCATED(RenderSliderThumb);
    119 public:
    120     RenderSliderThumb(SliderThumbElement&, RenderStyle&&);
    121     void updateAppearance(const RenderStyle* parentStyle);
    122 
    123 private:
    124     bool isSliderThumb() const final;
    125 };
    126 
    127 // --------------------------------
    128 
    129115class SliderContainerElement final : public HTMLDivElement {
    130116    WTF_MAKE_ISO_ALLOCATED(SliderContainerElement);
  • trunk/Source/WebCore/rendering/RenderObject.h

    r294699 r294728  
    241241
    242242    virtual bool isSlider() const { return false; }
    243     virtual bool isSliderThumb() const { return false; }
    244243    virtual bool isTable() const { return false; }
    245244    virtual bool isTableCell() const { return false; }
  • trunk/Source/WebCore/rendering/RenderSlider.cpp

    r293900 r294728  
    9292}
    9393
    94 void RenderSlider::layout()
    95 {
    96     StackStats::LayoutCheckPoint layoutCheckPoint;
    97 
    98     // FIXME: Find a way to cascade appearance. http://webkit.org/b/62535
    99     RenderBox* thumbBox = element().sliderThumbElement()->renderBox();
    100     if (thumbBox && thumbBox->isSliderThumb())
    101         static_cast<RenderSliderThumb*>(thumbBox)->updateAppearance(&style());
    102 
    103     RenderFlexibleBox::layout();
    104 }
    105 
    10694bool RenderSlider::inDragMode() const
    10795{
  • trunk/Source/WebCore/rendering/RenderSlider.h

    r291992 r294728  
    4949    void computeIntrinsicLogicalWidths(LayoutUnit& minLogicalWidth, LayoutUnit& maxLogicalWidth) const override;
    5050    void computePreferredLogicalWidths() override;
    51     void layout() override;
    5251
    5352    bool isFlexibleBoxImpl() const override { return true; }
Note: See TracChangeset for help on using the changeset viewer.