Improve use of NeverDestroyed
[WebKit-https.git] / Source / WebCore / rendering / RenderThemeMac.h
index 1d4532d..a4874a0 100644 (file)
@@ -1,7 +1,5 @@
 /*
- * This file is part of the theme implementation for form controls in WebCore.
- *
- * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc.
+ * Copyright (C) 2005-2017 Apple Inc. All rights reserved.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -38,142 +36,142 @@ namespace WebCore {
 
 class RenderProgress;
 class RenderStyle;
+
 struct AttachmentLayout;
 
 class RenderThemeMac final : public RenderThemeCocoa {
 public:
-    static Ref<RenderTheme> create();
+    friend NeverDestroyed<RenderThemeMac>;
 
     // A method asking if the control changes its tint when the window has focus or not.
-    bool controlSupportsTints(const RenderObject&) const override;
+    bool controlSupportsTints(const RenderObject&) const final;
 
     // A general method asking if any control tinting is supported at all.
-    bool supportsControlTints() const override { return true; }
+    bool supportsControlTints() const final { return true; }
 
-    void adjustRepaintRect(const RenderObject&, FloatRect&) override;
+    void adjustRepaintRect(const RenderObject&, FloatRect&) final;
 
-    bool isControlStyled(const RenderStyle&, const BorderData&, const FillLayer&, const Color& backgroundColor) const override;
+    bool isControlStyled(const RenderStyle&, const BorderData&, const FillLayer&, const Color& backgroundColor) const final;
 
-    Color platformActiveSelectionBackgroundColor() const override;
-    Color platformInactiveSelectionBackgroundColor() const override;
-    Color platformActiveListBoxSelectionBackgroundColor() const override;
-    Color platformActiveListBoxSelectionForegroundColor() const override;
-    Color platformInactiveListBoxSelectionBackgroundColor() const override;
-    Color platformInactiveListBoxSelectionForegroundColor() const override;
-    Color platformFocusRingColor() const override;
+    Color platformActiveSelectionBackgroundColor() const final;
+    Color platformInactiveSelectionBackgroundColor() const final;
+    Color platformActiveListBoxSelectionBackgroundColor() const final;
+    Color platformActiveListBoxSelectionForegroundColor() const final;
+    Color platformInactiveListBoxSelectionBackgroundColor() const final;
+    Color platformInactiveListBoxSelectionForegroundColor() const final;
+    Color platformFocusRingColor() const final;
 
-    ScrollbarControlSize scrollbarControlSizeForPart(ControlPart) override { return SmallScrollbar; }
+    ScrollbarControlSize scrollbarControlSizeForPart(ControlPart) final { return SmallScrollbar; }
 
-    void platformColorsDidChange() override;
+    void platformColorsDidChange() final;
 
-    int minimumMenuListSize(const RenderStyle&) const override;
+    int minimumMenuListSize(const RenderStyle&) const final;
 
-    void adjustSliderThumbSize(RenderStyle&, const Element*) const override;
+    void adjustSliderThumbSize(RenderStyle&, const Element*) const final;
 
 #if ENABLE(DATALIST_ELEMENT)
-    IntSize sliderTickSize() const override;
-    int sliderTickOffsetFromTrackCenter() const override;
+    IntSize sliderTickSize() const final;
+    int sliderTickOffsetFromTrackCenter() const final;
 #endif
 
-    LengthBox popupInternalPaddingBox(const RenderStyle&) const override;
-    PopupMenuStyle::PopupMenuSize popupMenuSize(const RenderStyle&, IntRect&) const override;
+    LengthBox popupInternalPaddingBox(const RenderStyle&) const final;
+    PopupMenuStyle::PopupMenuSize popupMenuSize(const RenderStyle&, IntRect&) const final;
 
-    bool popsMenuByArrowKeys() const override { return true; }
+    bool popsMenuByArrowKeys() const final { return true; }
 
 #if ENABLE(METER_ELEMENT)
-    IntSize meterSizeForBounds(const RenderMeter&, const IntRect&) const override;
-    bool paintMeter(const RenderObject&, const PaintInfo&, const IntRect&) override;
-    bool supportsMeter(ControlPart) const override;
+    IntSize meterSizeForBounds(const RenderMeter&, const IntRect&) const final;
+    bool paintMeter(const RenderObject&, const PaintInfo&, const IntRect&) final;
+    bool supportsMeter(ControlPart) const final;
 #endif
 
     // Returns the repeat interval of the animation for the progress bar.
-    Seconds animationRepeatIntervalForProgressBar(RenderProgress&) const override;
+    Seconds animationRepeatIntervalForProgressBar(RenderProgress&) const final;
     // Returns the duration of the animation for the progress bar.
-    double animationDurationForProgressBar(RenderProgress&) const override;
-    IntRect progressBarRectForBounds(const RenderObject&, const IntRect&) const override;
+    double animationDurationForProgressBar(RenderProgress&) const final;
+    IntRect progressBarRectForBounds(const RenderObject&, const IntRect&) const final;
 
     // Controls color values returned from platformFocusRingColor(). systemColor() will be used when false.
     bool usesTestModeFocusRingColor() const;
     // A view associated to the contained document.
     NSView* documentViewFor(const RenderObject&) const;
 
-protected:
+private:
     RenderThemeMac();
-    virtual ~RenderThemeMac();
 
     // System fonts.
-    void updateCachedSystemFontDescription(CSSValueID, FontCascadeDescription&) const override;
+    void updateCachedSystemFontDescription(CSSValueID, FontCascadeDescription&) const final;
 
 #if ENABLE(VIDEO)
     // Media controls
-    String mediaControlsStyleSheet() override;
-    String modernMediaControlsStyleSheet() override;
-    String mediaControlsScript() override;
-    String mediaControlsBase64StringForIconNameAndType(const String&, const String&) override;
+    String mediaControlsStyleSheet() final;
+    String modernMediaControlsStyleSheet() final;
+    String mediaControlsScript() final;
+    String mediaControlsBase64StringForIconNameAndType(const String&, const String&) final;
 #endif
 
 #if ENABLE(SERVICE_CONTROLS)
-    String imageControlsStyleSheet() const override;
+    String imageControlsStyleSheet() const final;
 #endif
 
-    bool supportsSelectionForegroundColors() const override { return false; }
+    bool supportsSelectionForegroundColors() const final { return false; }
 
-    bool paintTextField(const RenderObject&, const PaintInfo&, const FloatRect&) override;
-    void adjustTextFieldStyle(StyleResolver&, RenderStyle&, const Element*) const override;
+    bool paintTextField(const RenderObject&, const PaintInfo&, const FloatRect&) final;
+    void adjustTextFieldStyle(StyleResolver&, RenderStyle&, const Element*) const final;
 
-    bool paintTextArea(const RenderObject&, const PaintInfo&, const FloatRect&) override;
-    void adjustTextAreaStyle(StyleResolver&, RenderStyle&, const Element*) const override;
+    bool paintTextArea(const RenderObject&, const PaintInfo&, const FloatRect&) final;
+    void adjustTextAreaStyle(StyleResolver&, RenderStyle&, const Element*) const final;
 
-    bool paintMenuList(const RenderObject&, const PaintInfo&, const FloatRect&) override;
-    void adjustMenuListStyle(StyleResolver&, RenderStyle&, const Element*) const override;
+    bool paintMenuList(const RenderObject&, const PaintInfo&, const FloatRect&) final;
+    void adjustMenuListStyle(StyleResolver&, RenderStyle&, const Element*) const final;
 
-    bool paintMenuListButtonDecorations(const RenderBox&, const PaintInfo&, const FloatRect&) override;
-    void adjustMenuListButtonStyle(StyleResolver&, RenderStyle&, const Element*) const override;
+    bool paintMenuListButtonDecorations(const RenderBox&, const PaintInfo&, const FloatRect&) final;
+    void adjustMenuListButtonStyle(StyleResolver&, RenderStyle&, const Element*) const final;
 
-    void adjustProgressBarStyle(StyleResolver&, RenderStyle&, const Element*) const override;
-    bool paintProgressBar(const RenderObject&, const PaintInfo&, const IntRect&) override;
+    void adjustProgressBarStyle(StyleResolver&, RenderStyle&, const Element*) const final;
+    bool paintProgressBar(const RenderObject&, const PaintInfo&, const IntRect&) final;
 
-    bool paintSliderTrack(const RenderObject&, const PaintInfo&, const IntRect&) override;
-    void adjustSliderTrackStyle(StyleResolver&, RenderStyle&, const Element*) const override;
+    bool paintSliderTrack(const RenderObject&, const PaintInfo&, const IntRect&) final;
+    void adjustSliderTrackStyle(StyleResolver&, RenderStyle&, const Element*) const final;
 
-    bool paintSliderThumb(const RenderObject&, const PaintInfo&, const IntRect&) override;
-    void adjustSliderThumbStyle(StyleResolver&, RenderStyle&, const Element*) const override;
+    bool paintSliderThumb(const RenderObject&, const PaintInfo&, const IntRect&) final;
+    void adjustSliderThumbStyle(StyleResolver&, RenderStyle&, const Element*) const final;
 
-    bool paintSearchField(const RenderObject&, const PaintInfo&, const IntRect&) override;
-    void adjustSearchFieldStyle(StyleResolver&, RenderStyle&, const Element*) const override;
+    bool paintSearchField(const RenderObject&, const PaintInfo&, const IntRect&) final;
+    void adjustSearchFieldStyle(StyleResolver&, RenderStyle&, const Element*) const final;
 
-    void adjustSearchFieldCancelButtonStyle(StyleResolver&, RenderStyle&, const Element*) const override;
-    bool paintSearchFieldCancelButton(const RenderBox&, const PaintInfo&, const IntRect&) override;
+    void adjustSearchFieldCancelButtonStyle(StyleResolver&, RenderStyle&, const Element*) const final;
+    bool paintSearchFieldCancelButton(const RenderBox&, const PaintInfo&, const IntRect&) final;
 
-    void adjustSearchFieldDecorationPartStyle(StyleResolver&, RenderStyle&, const Element*) const override;
-    bool paintSearchFieldDecorationPart(const RenderObject&, const PaintInfo&, const IntRect&) override;
+    void adjustSearchFieldDecorationPartStyle(StyleResolver&, RenderStyle&, const Element*) const final;
+    bool paintSearchFieldDecorationPart(const RenderObject&, const PaintInfo&, const IntRect&) final;
 
-    void adjustSearchFieldResultsDecorationPartStyle(StyleResolver&, RenderStyle&, const Element*) const override;
-    bool paintSearchFieldResultsDecorationPart(const RenderBox&, const PaintInfo&, const IntRect&) override;
+    void adjustSearchFieldResultsDecorationPartStyle(StyleResolver&, RenderStyle&, const Element*) const final;
+    bool paintSearchFieldResultsDecorationPart(const RenderBox&, const PaintInfo&, const IntRect&) final;
 
-    void adjustSearchFieldResultsButtonStyle(StyleResolver&, RenderStyle&, const Element*) const override;
-    bool paintSearchFieldResultsButton(const RenderBox&, const PaintInfo&, const IntRect&) override;
+    void adjustSearchFieldResultsButtonStyle(StyleResolver&, RenderStyle&, const Element*) const final;
+    bool paintSearchFieldResultsButton(const RenderBox&, const PaintInfo&, const IntRect&) final;
 
 #if ENABLE(VIDEO)
-    bool supportsClosedCaptioning() const override { return true; }
+    bool supportsClosedCaptioning() const final { return true; }
 #endif
 
-    bool shouldHaveCapsLockIndicator(const HTMLInputElement&) const override;
+    bool shouldHaveCapsLockIndicator(const HTMLInputElement&) const final;
 
-    bool paintSnapshottedPluginOverlay(const RenderObject&, const PaintInfo&, const IntRect&) override;
+    bool paintSnapshottedPluginOverlay(const RenderObject&, const PaintInfo&, const IntRect&) final;
 
 #if ENABLE(ATTACHMENT_ELEMENT)
-    LayoutSize attachmentIntrinsicSize(const RenderAttachment&) const override;
-    int attachmentBaseline(const RenderAttachment&) const override;
-    bool paintAttachment(const RenderObject&, const PaintInfo&, const IntRect&) override;
+    LayoutSize attachmentIntrinsicSize(const RenderAttachment&) const final;
+    int attachmentBaseline(const RenderAttachment&) const final;
+    bool paintAttachment(const RenderObject&, const PaintInfo&, const IntRect&) final;
 #endif
 
 private:
-    String fileListNameForWidth(const FileList*, const FontCascade&, int width, bool multipleFilesAllowed) const override;
+    String fileListNameForWidth(const FileList*, const FontCascade&, int width, bool multipleFilesAllowed) const final;
 
-    Color systemColor(CSSValueID) const override;
+    Color systemColor(CSSValueID) const final;
 
-    void purgeCaches() override;
+    void purgeCaches() final;
 
     // Get the control size based off the font. Used by some of the controls (like buttons).
     NSControlSize controlSizeForFont(const RenderStyle&) const;
@@ -223,9 +221,9 @@ private:
     const int* progressBarMargins(NSControlSize) const;
 
 #if ENABLE(SERVICE_CONTROLS)
-    bool paintImageControlsButton(const RenderObject&, const PaintInfo&, const IntRect&) override;
-    IntSize imageControlsButtonSize(const RenderObject&) const override;
-    IntSize imageControlsButtonPositionOffset() const override;
+    bool paintImageControlsButton(const RenderObject&, const PaintInfo&, const IntRect&) final;
+    IntSize imageControlsButtonSize(const RenderObject&) const final;
+    IntSize imageControlsButtonPositionOffset() const final;
 
     NSServicesRolloverButtonCell *servicesRolloverButtonCell() const;
 #endif
@@ -241,8 +239,8 @@ private:
     mutable RetainPtr<NSServicesRolloverButtonCell> m_servicesRolloverButton;
 #endif
 
-    bool m_isSliderThumbHorizontalPressed;
-    bool m_isSliderThumbVerticalPressed;
+    bool m_isSliderThumbHorizontalPressed { false };
+    bool m_isSliderThumbVerticalPressed { false };
 
     mutable HashMap<int, Color> m_systemColorCache;