summaryrefslogtreecommitdiff
path: root/Source/WebCore/rendering/RenderTheme.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/rendering/RenderTheme.cpp')
-rw-r--r--Source/WebCore/rendering/RenderTheme.cpp115
1 files changed, 59 insertions, 56 deletions
diff --git a/Source/WebCore/rendering/RenderTheme.cpp b/Source/WebCore/rendering/RenderTheme.cpp
index 8fd2d6c8b..585385f1b 100644
--- a/Source/WebCore/rendering/RenderTheme.cpp
+++ b/Source/WebCore/rendering/RenderTheme.cpp
@@ -24,6 +24,7 @@
#include "CSSValueKeywords.h"
#include "Document.h"
+#include "FileList.h"
#include "FileSystem.h"
#include "FloatConversion.h"
#include "FocusController.h"
@@ -71,7 +72,7 @@ RenderTheme::RenderTheme()
{
}
-void RenderTheme::adjustStyle(CSSStyleSelector* selector, RenderStyle* style, Element* e,
+void RenderTheme::adjustStyle(StyleResolver* styleResolver, RenderStyle* style, Element* e,
bool UAHasAppearance, const BorderData& border, const FillLayer& background, const Color& backgroundColor)
{
// Force inline and table display styles to be inline-block (except for table- which is block)
@@ -100,7 +101,6 @@ void RenderTheme::adjustStyle(CSSStyleSelector* selector, RenderStyle* style, El
#if USE(NEW_THEME)
switch (part) {
- case ListButtonPart:
case CheckboxPart:
case InnerSpinButtonPart:
case RadioPart:
@@ -183,48 +183,47 @@ void RenderTheme::adjustStyle(CSSStyleSelector* selector, RenderStyle* style, El
switch (style->appearance()) {
#if !USE(NEW_THEME)
case CheckboxPart:
- return adjustCheckboxStyle(selector, style, e);
+ return adjustCheckboxStyle(styleResolver, style, e);
case RadioPart:
- return adjustRadioStyle(selector, style, e);
+ return adjustRadioStyle(styleResolver, style, e);
case PushButtonPart:
case SquareButtonPart:
- case ListButtonPart:
case DefaultButtonPart:
case ButtonPart:
- return adjustButtonStyle(selector, style, e);
+ return adjustButtonStyle(styleResolver, style, e);
case InnerSpinButtonPart:
- return adjustInnerSpinButtonStyle(selector, style, e);
+ return adjustInnerSpinButtonStyle(styleResolver, style, e);
#endif
case TextFieldPart:
- return adjustTextFieldStyle(selector, style, e);
+ return adjustTextFieldStyle(styleResolver, style, e);
case TextAreaPart:
- return adjustTextAreaStyle(selector, style, e);
+ return adjustTextAreaStyle(styleResolver, style, e);
case MenulistPart:
- return adjustMenuListStyle(selector, style, e);
+ return adjustMenuListStyle(styleResolver, style, e);
case MenulistButtonPart:
- return adjustMenuListButtonStyle(selector, style, e);
+ return adjustMenuListButtonStyle(styleResolver, style, e);
case MediaSliderPart:
case MediaVolumeSliderPart:
case MediaFullScreenVolumeSliderPart:
case SliderHorizontalPart:
case SliderVerticalPart:
- return adjustSliderTrackStyle(selector, style, e);
+ return adjustSliderTrackStyle(styleResolver, style, e);
case SliderThumbHorizontalPart:
case SliderThumbVerticalPart:
- return adjustSliderThumbStyle(selector, style, e);
+ return adjustSliderThumbStyle(styleResolver, style, e);
case SearchFieldPart:
- return adjustSearchFieldStyle(selector, style, e);
+ return adjustSearchFieldStyle(styleResolver, style, e);
case SearchFieldCancelButtonPart:
- return adjustSearchFieldCancelButtonStyle(selector, style, e);
+ return adjustSearchFieldCancelButtonStyle(styleResolver, style, e);
case SearchFieldDecorationPart:
- return adjustSearchFieldDecorationStyle(selector, style, e);
+ return adjustSearchFieldDecorationStyle(styleResolver, style, e);
case SearchFieldResultsDecorationPart:
- return adjustSearchFieldResultsDecorationStyle(selector, style, e);
+ return adjustSearchFieldResultsDecorationStyle(styleResolver, style, e);
case SearchFieldResultsButtonPart:
- return adjustSearchFieldResultsButtonStyle(selector, style, e);
+ return adjustSearchFieldResultsButtonStyle(styleResolver, style, e);
#if ENABLE(PROGRESS_TAG)
case ProgressBarPart:
- return adjustProgressBarStyle(selector, style, e);
+ return adjustProgressBarStyle(styleResolver, style, e);
#endif
#if ENABLE(METER_TAG)
case MeterPart:
@@ -232,18 +231,18 @@ void RenderTheme::adjustStyle(CSSStyleSelector* selector, RenderStyle* style, El
case ContinuousCapacityLevelIndicatorPart:
case DiscreteCapacityLevelIndicatorPart:
case RatingLevelIndicatorPart:
- return adjustMeterStyle(selector, style, e);
+ return adjustMeterStyle(styleResolver, style, e);
#endif
#if ENABLE(INPUT_SPEECH)
case InputSpeechButtonPart:
- return adjustInputFieldSpeechButtonStyle(selector, style, e);
+ return adjustInputFieldSpeechButtonStyle(styleResolver, style, e);
#endif
default:
break;
}
}
-bool RenderTheme::paint(RenderObject* o, const PaintInfo& paintInfo, const LayoutRect& r)
+bool RenderTheme::paint(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r)
{
// If painting is disabled, but we aren't updating control tints, then just bail.
// If we are updating control tints, just schedule a repaint if the theme supports tinting
@@ -264,7 +263,6 @@ bool RenderTheme::paint(RenderObject* o, const PaintInfo& paintInfo, const Layou
case RadioPart:
case PushButtonPart:
case SquareButtonPart:
- case ListButtonPart:
case DefaultButtonPart:
case ButtonPart:
case InnerSpinButtonPart:
@@ -284,7 +282,6 @@ bool RenderTheme::paint(RenderObject* o, const PaintInfo& paintInfo, const Layou
return paintRadio(o, paintInfo, r);
case PushButtonPart:
case SquareButtonPart:
- case ListButtonPart:
case DefaultButtonPart:
case ButtonPart:
return paintButton(o, paintInfo, r);
@@ -311,7 +308,8 @@ bool RenderTheme::paint(RenderObject* o, const PaintInfo& paintInfo, const Layou
case SliderThumbHorizontalPart:
case SliderThumbVerticalPart:
return paintSliderThumb(o, paintInfo, r);
- case MediaFullscreenButtonPart:
+ case MediaEnterFullscreenButtonPart:
+ case MediaExitFullscreenButtonPart:
return paintMediaFullscreenButton(o, paintInfo, r);
case MediaPlayButtonPart:
return paintMediaPlayButton(o, paintInfo, r);
@@ -394,7 +392,6 @@ bool RenderTheme::paintBorderOnly(RenderObject* o, const PaintInfo& paintInfo, c
case RadioPart:
case PushButtonPart:
case SquareButtonPart:
- case ListButtonPart:
case DefaultButtonPart:
case ButtonPart:
case MenulistPart:
@@ -442,7 +439,6 @@ bool RenderTheme::paintDecorations(RenderObject* o, const PaintInfo& paintInfo,
case RadioPart:
case PushButtonPart:
case SquareButtonPart:
- case ListButtonPart:
case DefaultButtonPart:
case ButtonPart:
case MenulistPart:
@@ -505,13 +501,13 @@ String RenderTheme::formatMediaControlsRemainingTime(float currentTime, float du
return formatMediaControlsTime(currentTime - duration);
}
-LayoutPoint RenderTheme::volumeSliderOffsetFromMuteButton(RenderBox* muteButtonBox, const LayoutSize& size) const
+IntPoint RenderTheme::volumeSliderOffsetFromMuteButton(RenderBox* muteButtonBox, const IntSize& size) const
{
- LayoutUnit y = -size.height();
+ int y = -size.height();
FloatPoint absPoint = muteButtonBox->localToAbsolute(FloatPoint(muteButtonBox->pixelSnappedOffsetLeft(), y), true, true);
if (absPoint.y() < 0)
y = muteButtonBox->height();
- return LayoutPoint(0, y);
+ return IntPoint(0, y);
}
#endif
@@ -617,6 +613,13 @@ Color RenderTheme::platformInactiveListBoxSelectionForegroundColor() const
return platformInactiveSelectionForegroundColor();
}
+#if ENABLE(CALENDAR_PICKER)
+CString RenderTheme::extraCalendarPickerStyleSheet()
+{
+ return CString();
+}
+#endif
+
LayoutUnit RenderTheme::baselinePosition(const RenderObject* o) const
{
if (!o->isBox())
@@ -667,7 +670,7 @@ bool RenderTheme::isControlStyled(const RenderStyle* style, const BorderData& bo
}
}
-void RenderTheme::adjustRepaintRect(const RenderObject* o, LayoutRect& r)
+void RenderTheme::adjustRepaintRect(const RenderObject* o, IntRect& r)
{
#if USE(NEW_THEME)
m_theme->inflateControlPaintRect(o->style()->appearance(), controlStatesForRenderer(o), r, o->style()->effectiveZoom());
@@ -848,7 +851,7 @@ bool RenderTheme::isDefault(const RenderObject* o) const
#if !USE(NEW_THEME)
-void RenderTheme::adjustCheckboxStyle(CSSStyleSelector*, RenderStyle* style, Element*) const
+void RenderTheme::adjustCheckboxStyle(StyleResolver*, RenderStyle* style, Element*) const
{
// A summary of the rules for checkbox designed to match WinIE:
// width/height - honored (WinIE actually scales its control for small widths, but lets it overflow for small heights.)
@@ -865,7 +868,7 @@ void RenderTheme::adjustCheckboxStyle(CSSStyleSelector*, RenderStyle* style, Ele
style->setBoxShadow(nullptr);
}
-void RenderTheme::adjustRadioStyle(CSSStyleSelector*, RenderStyle* style, Element*) const
+void RenderTheme::adjustRadioStyle(StyleResolver*, RenderStyle* style, Element*) const
{
// A summary of the rules for checkbox designed to match WinIE:
// width/height - honored (WinIE actually scales its control for small widths, but lets it overflow for small heights.)
@@ -882,34 +885,34 @@ void RenderTheme::adjustRadioStyle(CSSStyleSelector*, RenderStyle* style, Elemen
style->setBoxShadow(nullptr);
}
-void RenderTheme::adjustButtonStyle(CSSStyleSelector*, RenderStyle* style, Element*) const
+void RenderTheme::adjustButtonStyle(StyleResolver*, RenderStyle* style, Element*) const
{
// Most platforms will completely honor all CSS, and so we have no need to adjust the style
// at all by default. We will still allow the theme a crack at setting up a desired vertical size.
setButtonSize(style);
}
-void RenderTheme::adjustInnerSpinButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const
+void RenderTheme::adjustInnerSpinButtonStyle(StyleResolver*, RenderStyle*, Element*) const
{
}
#endif
-void RenderTheme::adjustTextFieldStyle(CSSStyleSelector*, RenderStyle*, Element*) const
+void RenderTheme::adjustTextFieldStyle(StyleResolver*, RenderStyle*, Element*) const
{
}
-void RenderTheme::adjustTextAreaStyle(CSSStyleSelector*, RenderStyle*, Element*) const
+void RenderTheme::adjustTextAreaStyle(StyleResolver*, RenderStyle*, Element*) const
{
}
-void RenderTheme::adjustMenuListStyle(CSSStyleSelector*, RenderStyle*, Element*) const
+void RenderTheme::adjustMenuListStyle(StyleResolver*, RenderStyle*, Element*) const
{
}
#if ENABLE(INPUT_SPEECH)
-void RenderTheme::adjustInputFieldSpeechButtonStyle(CSSStyleSelector* selector, RenderStyle* style, Element* element) const
+void RenderTheme::adjustInputFieldSpeechButtonStyle(StyleResolver* styleResolver, RenderStyle* style, Element* element) const
{
- RenderInputSpeech::adjustInputFieldSpeechButtonStyle(selector, style, element);
+ RenderInputSpeech::adjustInputFieldSpeechButtonStyle(styleResolver, style, element);
}
bool RenderTheme::paintInputFieldSpeechButton(RenderObject* object, const PaintInfo& paintInfo, const IntRect& rect)
@@ -919,12 +922,12 @@ bool RenderTheme::paintInputFieldSpeechButton(RenderObject* object, const PaintI
#endif
#if ENABLE(METER_TAG)
-void RenderTheme::adjustMeterStyle(CSSStyleSelector*, RenderStyle* style, Element*) const
+void RenderTheme::adjustMeterStyle(StyleResolver*, RenderStyle* style, Element*) const
{
style->setBoxShadow(nullptr);
}
-LayoutSize RenderTheme::meterSizeForBounds(const RenderMeter*, const LayoutRect& bounds) const
+IntSize RenderTheme::meterSizeForBounds(const RenderMeter*, const IntRect& bounds) const
{
return bounds.size();
}
@@ -952,7 +955,7 @@ double RenderTheme::animationDurationForProgressBar(RenderProgress*) const
return 0;
}
-void RenderTheme::adjustProgressBarStyle(CSSStyleSelector*, RenderStyle*, Element*) const
+void RenderTheme::adjustProgressBarStyle(StyleResolver*, RenderStyle*, Element*) const
{
}
#endif
@@ -962,15 +965,15 @@ bool RenderTheme::shouldHaveSpinButton(HTMLInputElement* inputElement) const
return inputElement->isSteppable() && !inputElement->isRangeControl();
}
-void RenderTheme::adjustMenuListButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const
+void RenderTheme::adjustMenuListButtonStyle(StyleResolver*, RenderStyle*, Element*) const
{
}
-void RenderTheme::adjustSliderTrackStyle(CSSStyleSelector*, RenderStyle*, Element*) const
+void RenderTheme::adjustSliderTrackStyle(StyleResolver*, RenderStyle*, Element*) const
{
}
-void RenderTheme::adjustSliderThumbStyle(CSSStyleSelector*, RenderStyle* style, Element*) const
+void RenderTheme::adjustSliderThumbStyle(StyleResolver*, RenderStyle* style, Element*) const
{
adjustSliderThumbSize(style);
}
@@ -979,23 +982,23 @@ void RenderTheme::adjustSliderThumbSize(RenderStyle*) const
{
}
-void RenderTheme::adjustSearchFieldStyle(CSSStyleSelector*, RenderStyle*, Element*) const
+void RenderTheme::adjustSearchFieldStyle(StyleResolver*, RenderStyle*, Element*) const
{
}
-void RenderTheme::adjustSearchFieldCancelButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const
+void RenderTheme::adjustSearchFieldCancelButtonStyle(StyleResolver*, RenderStyle*, Element*) const
{
}
-void RenderTheme::adjustSearchFieldDecorationStyle(CSSStyleSelector*, RenderStyle*, Element*) const
+void RenderTheme::adjustSearchFieldDecorationStyle(StyleResolver*, RenderStyle*, Element*) const
{
}
-void RenderTheme::adjustSearchFieldResultsDecorationStyle(CSSStyleSelector*, RenderStyle*, Element*) const
+void RenderTheme::adjustSearchFieldResultsDecorationStyle(StyleResolver*, RenderStyle*, Element*) const
{
}
-void RenderTheme::adjustSearchFieldResultsButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const
+void RenderTheme::adjustSearchFieldResultsButtonStyle(StyleResolver*, RenderStyle*, Element*) const
{
}
@@ -1137,18 +1140,18 @@ String RenderTheme::fileListDefaultLabel(bool multipleFilesAllowed) const
return fileButtonNoFileSelectedLabel();
}
-String RenderTheme::fileListNameForWidth(const Vector<String>& filenames, const Font& font, int width, bool multipleFilesAllowed) const
+String RenderTheme::fileListNameForWidth(const FileList* fileList, const Font& font, int width, bool multipleFilesAllowed) const
{
if (width <= 0)
return String();
String string;
- if (filenames.isEmpty())
+ if (fileList->isEmpty())
string = fileListDefaultLabel(multipleFilesAllowed);
- else if (filenames.size() == 1)
- string = pathGetFileName(filenames[0]);
+ else if (fileList->length() == 1)
+ string = fileList->item(0)->name();
else
- return StringTruncator::rightTruncate(multipleFileUploadText(filenames.size()), width, font, StringTruncator::EnableRoundingHacks);
+ return StringTruncator::rightTruncate(multipleFileUploadText(fileList->length()), width, font, StringTruncator::EnableRoundingHacks);
return StringTruncator::centerTruncate(string, width, font, StringTruncator::EnableRoundingHacks);
}