Purge PassRefPtr in WebCore/rendering
[WebKit-https.git] / Source / WebCore / rendering / RenderThemeIOS.h
1 /*
2  * Copyright (C) 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #ifndef RenderThemeIOS_h
27 #define RenderThemeIOS_h
28
29 #if PLATFORM(IOS)
30
31 #include "RenderTheme.h"
32
33 namespace WebCore {
34     
35 class RenderStyle;
36 class GraphicsContext;
37     
38 class RenderThemeIOS final : public RenderTheme {
39 public:
40     static Ref<RenderTheme> create();
41
42     virtual int popupInternalPaddingRight(RenderStyle&) const override;
43
44     static void adjustRoundBorderRadius(RenderStyle&, RenderBox&);
45
46     static CFStringRef contentSizeCategory();
47
48     WEBCORE_EXPORT static void setContentSizeCategory(const String&);
49
50 protected:
51     virtual FontDescription& cachedSystemFontDescription(CSSValueID systemFontID) const override;
52     virtual void updateCachedSystemFontDescription(CSSValueID, FontDescription&) const override;
53     virtual int baselinePosition(const RenderObject&) const override;
54
55     virtual bool isControlStyled(const RenderStyle&, const BorderData&, const FillLayer& background, const Color& backgroundColor) const override;
56
57     // Methods for each appearance value.
58     virtual void adjustCheckboxStyle(StyleResolver&, RenderStyle&, Element*) const override;
59     virtual bool paintCheckboxDecorations(const RenderObject&, const PaintInfo&, const IntRect&) override;
60
61     virtual void adjustRadioStyle(StyleResolver&, RenderStyle&, Element*) const override;
62     virtual bool paintRadioDecorations(const RenderObject&, const PaintInfo&, const IntRect&) override;
63
64     virtual void adjustButtonStyle(StyleResolver&, RenderStyle&, Element*) const override;
65     virtual bool paintButtonDecorations(const RenderObject&, const PaintInfo&, const IntRect&) override;
66     virtual bool paintPushButtonDecorations(const RenderObject&, const PaintInfo&, const IntRect&) override;
67     virtual void setButtonSize(RenderStyle&) const override;
68
69     virtual bool paintFileUploadIconDecorations(const RenderObject& inputRenderer, const RenderObject& buttonRenderer, const PaintInfo&, const IntRect&, Icon*, FileUploadDecorations) override;
70
71     virtual bool paintTextFieldDecorations(const RenderObject&, const PaintInfo&, const FloatRect&) override;
72     virtual bool paintTextAreaDecorations(const RenderObject&, const PaintInfo&, const FloatRect&) override;
73
74     virtual void adjustMenuListButtonStyle(StyleResolver&, RenderStyle&, Element*) const override;
75     virtual bool paintMenuListButtonDecorations(const RenderObject&, const PaintInfo&, const FloatRect&) override;
76
77     virtual void adjustSliderTrackStyle(StyleResolver&, RenderStyle&, Element*) const override;
78     virtual bool paintSliderTrack(const RenderObject&, const PaintInfo&, const IntRect&) override;
79
80     virtual void adjustSliderThumbSize(RenderStyle&, Element*) const override;
81     virtual bool paintSliderThumbDecorations(const RenderObject&, const PaintInfo&, const IntRect&) override;
82
83     // Returns the repeat interval of the animation for the progress bar.
84     virtual double animationRepeatIntervalForProgressBar(RenderProgress&) const override;
85     // Returns the duration of the animation for the progress bar.
86     virtual double animationDurationForProgressBar(RenderProgress&) const override;
87
88     virtual bool paintProgressBar(const RenderObject&, const PaintInfo&, const IntRect&) override;
89
90 #if ENABLE(DATALIST_ELEMENT)
91     virtual IntSize sliderTickSize() const override;
92     virtual int sliderTickOffsetFromTrackCenter() const override;
93 #endif
94
95     virtual void adjustSearchFieldStyle(StyleResolver&, RenderStyle&, Element*) const override;
96     virtual bool paintSearchFieldDecorations(const RenderObject&, const PaintInfo&, const IntRect&) override;
97
98     virtual Color platformActiveSelectionBackgroundColor() const override;
99     virtual Color platformInactiveSelectionBackgroundColor() const override;
100
101 #if ENABLE(TOUCH_EVENTS)
102     virtual Color platformTapHighlightColor() const override { return 0x4D1A1A1A; }
103 #endif
104
105     virtual bool shouldShowPlaceholderWhenFocused() const override;
106     virtual bool shouldHaveSpinButton(HTMLInputElement&) const override;
107     virtual bool shouldHaveCapsLockIndicator(HTMLInputElement&) const override;
108
109 #if ENABLE(VIDEO)
110     virtual String mediaControlsStyleSheet() override;
111     virtual String mediaControlsScript() override;
112 #endif
113
114 private:
115     RenderThemeIOS();
116     virtual ~RenderThemeIOS() { }
117
118     const Color& shadowColor() const;
119     FloatRect addRoundedBorderClip(const RenderObject& box, GraphicsContext*, const IntRect&);
120
121     virtual Color systemColor(CSSValueID) const override;
122
123     String m_mediaControlsScript;
124     String m_mediaControlsStyleSheet;
125
126     mutable HashMap<int, Color> m_systemColorCache;
127 };
128
129 }
130
131 #endif // PLATFORM(IOS)
132 #endif // RenderThemeIOS_h