Diff
Modified: trunk/Source/WebCore/ChangeLog (129791 => 129792)
--- trunk/Source/WebCore/ChangeLog 2012-09-27 19:44:29 UTC (rev 129791)
+++ trunk/Source/WebCore/ChangeLog 2012-09-27 19:48:58 UTC (rev 129792)
@@ -1,3 +1,46 @@
+2012-09-27 Mark Pilgrim <pilg...@chromium.org>
+
+ [Chromium] Move UNIX-specific theme functions out of PlatformSupport
+ https://bugs.webkit.org/show_bug.cgi?id=96516
+
+ Reviewed by Adam Barth.
+
+ Call WebThemeEngine functions and use WebThemeEngine enums
+ directly from the new Platform/ directly; remove all
+ intermediate functions and enums and conversion functions from
+ PlatformSupport.
+ Part of a refactoring series; see tracking bug 82948.
+
+ * WebCore.gyp/WebCore.gyp:
+ * platform/chromium/PlatformSupport.h:
+ (PlatformSupport):
+ * platform/chromium/ScrollbarThemeChromiumLinux.cpp:
+ (WebCore::ScrollbarThemeChromiumLinux::scrollbarThickness):
+ (WebCore::ScrollbarThemeChromiumLinux::paintTrackPiece):
+ (WebCore::ScrollbarThemeChromiumLinux::paintButton):
+ (WebCore::ScrollbarThemeChromiumLinux::paintThumb):
+ (WebCore::ScrollbarThemeChromiumLinux::buttonSize):
+ (WebCore::ScrollbarThemeChromiumLinux::minimumThumbLength):
+ * rendering/RenderThemeChromiumAndroid.cpp:
+ (WebCore::RenderThemeChromiumAndroid::adjustInnerSpinButtonStyle):
+ (WebCore::RenderThemeChromiumAndroid::menuListArrowPadding):
+ * rendering/RenderThemeChromiumLinux.cpp:
+ (WebCore::getWebThemeState):
+ (WebCore):
+ (WebCore::RenderThemeChromiumLinux::adjustSliderThumbSize):
+ (WebCore::RenderThemeChromiumLinux::paintCheckbox):
+ (WebCore::RenderThemeChromiumLinux::setCheckboxSize):
+ (WebCore::RenderThemeChromiumLinux::paintRadio):
+ (WebCore::RenderThemeChromiumLinux::setRadioSize):
+ (WebCore::RenderThemeChromiumLinux::paintButton):
+ (WebCore::RenderThemeChromiumLinux::paintTextField):
+ (WebCore::RenderThemeChromiumLinux::paintMenuList):
+ (WebCore::RenderThemeChromiumLinux::paintSliderTrack):
+ (WebCore::RenderThemeChromiumLinux::paintSliderThumb):
+ (WebCore::RenderThemeChromiumLinux::adjustInnerSpinButtonStyle):
+ (WebCore::RenderThemeChromiumLinux::paintInnerSpinButton):
+ (WebCore::RenderThemeChromiumLinux::paintProgressBar):
+
2012-09-27 Bear Travis <betra...@adobe.com>
[CSS Exclusions] Rename RenderStyle::wrapShapeInside/Outside to shapeInside/Outside
Modified: trunk/Source/WebCore/WebCore.gyp/WebCore.gyp (129791 => 129792)
--- trunk/Source/WebCore/WebCore.gyp/WebCore.gyp 2012-09-27 19:44:29 UTC (rev 129791)
+++ trunk/Source/WebCore/WebCore.gyp/WebCore.gyp 2012-09-27 19:48:58 UTC (rev 129792)
@@ -1950,6 +1950,9 @@
'dependencies': [
'webcore_prerequisites',
],
+ 'defines': [
+ 'WEBKIT_IMPLEMENTATION=1',
+ ],
'sources': [
'<@(webcore_privateheader_files)',
'<@(webcore_files)',
Modified: trunk/Source/WebCore/platform/chromium/PlatformSupport.h (129791 => 129792)
--- trunk/Source/WebCore/platform/chromium/PlatformSupport.h 2012-09-27 19:44:29 UTC (rev 129791)
+++ trunk/Source/WebCore/platform/chromium/PlatformSupport.h 2012-09-27 19:48:58 UTC (rev 129792)
@@ -160,103 +160,6 @@
};
static void paintScrollbarThumb(GraphicsContext*, ThemePaintState, ThemePaintSize, const IntRect&, const ThemePaintScrollbarInfo&);
-#elif OS(UNIX)
- // The UI part which is being accessed.
- enum ThemePart {
- // ScrollbarTheme parts
- PartScrollbarDownArrow,
- PartScrollbarLeftArrow,
- PartScrollbarRightArrow,
- PartScrollbarUpArrow,
- PartScrollbarHorizontalThumb,
- PartScrollbarVerticalThumb,
- PartScrollbarHorizontalTrack,
- PartScrollbarVerticalTrack,
-
- // RenderTheme parts
- PartCheckbox,
- PartRadio,
- PartButton,
- PartTextField,
- PartMenuList,
- PartSliderTrack,
- PartSliderThumb,
- PartInnerSpinButton,
- PartProgressBar
- };
-
- // The current state of the associated Part.
- enum ThemePaintState {
- StateDisabled,
- StateHover,
- StateNormal,
- StatePressed
- };
-
- struct ScrollbarTrackExtraParams {
- // The bounds of the entire track, as opposed to the part being painted.
- int trackX;
- int trackY;
- int trackWidth;
- int trackHeight;
- };
-
- struct ButtonExtraParams {
- bool checked;
- bool indeterminate; // Whether the button state is indeterminate.
- bool isDefault; // Whether the button is default button.
- bool hasBorder;
- unsigned backgroundColor;
- };
-
- struct TextFieldExtraParams {
- bool isTextArea;
- bool isListbox;
- unsigned backgroundColor;
- };
-
- struct MenuListExtraParams {
- bool hasBorder;
- bool hasBorderRadius;
- int arrowX;
- int arrowY;
- unsigned backgroundColor;
- };
-
- struct SliderExtraParams {
- bool vertical;
- bool inDrag;
- };
-
- struct InnerSpinButtonExtraParams {
- bool spinUp;
- bool readOnly;
- };
-
- struct ProgressBarExtraParams {
- bool determinate;
- int valueRectX;
- int valueRectY;
- int valueRectWidth;
- int valueRectHeight;
- };
-
- union ThemePaintExtraParams {
- ScrollbarTrackExtraParams scrollbarTrack;
- ButtonExtraParams button;
- TextFieldExtraParams textField;
- MenuListExtraParams menuList;
- SliderExtraParams slider;
- InnerSpinButtonExtraParams innerSpin;
- ProgressBarExtraParams progressBar;
- };
-
- // Gets the size of the given theme part. For variable sized items
- // like vertical scrollbar thumbs, the width will be the required width of
- // the track while the height will be the minimum height.
- static IntSize getThemePartSize(ThemePart);
- // Paint the given the given theme part.
- static void paintThemePart(GraphicsContext*, ThemePart, ThemePaintState, const IntRect&, const ThemePaintExtraParams*);
#endif
};
Modified: trunk/Source/WebCore/platform/chromium/ScrollbarThemeChromiumLinux.cpp (129791 => 129792)
--- trunk/Source/WebCore/platform/chromium/ScrollbarThemeChromiumLinux.cpp 2012-09-27 19:44:29 UTC (rev 129791)
+++ trunk/Source/WebCore/platform/chromium/ScrollbarThemeChromiumLinux.cpp 2012-09-27 19:48:58 UTC (rev 129792)
@@ -31,9 +31,12 @@
#include "config.h"
#include "ScrollbarThemeChromiumLinux.h"
-#include "PlatformSupport.h"
+#include "PlatformContextSkia.h"
#include "PlatformMouseEvent.h"
#include "Scrollbar.h"
+#include <public/Platform.h>
+#include <public/WebRect.h>
+#include <public/linux/WebThemeEngine.h>
namespace WebCore {
@@ -46,78 +49,70 @@
int ScrollbarThemeChromiumLinux::scrollbarThickness(ScrollbarControlSize controlSize)
{
// Horiz and Vert scrollbars are the same thickness.
- IntSize scrollbarSize = PlatformSupport::getThemePartSize(PlatformSupport::PartScrollbarVerticalTrack);
+ IntSize scrollbarSize = WebKit::Platform::current()->themeEngine()->getSize(WebKit::WebThemeEngine::PartScrollbarVerticalTrack);
return scrollbarSize.width();
}
void ScrollbarThemeChromiumLinux::paintTrackPiece(GraphicsContext* gc, ScrollbarThemeClient* scrollbar, const IntRect& rect, ScrollbarPart partType)
{
- PlatformSupport::ThemePaintState state = scrollbar->hoveredPart() == partType ? PlatformSupport::StateHover : PlatformSupport::StateNormal;
+ WebKit::WebThemeEngine::State state = scrollbar->hoveredPart() == partType ? WebKit::WebThemeEngine::StateHover : WebKit::WebThemeEngine::StateNormal;
IntRect alignRect = trackRect(scrollbar, false);
- PlatformSupport::ThemePaintExtraParams extraParams;
+ WebKit::WebThemeEngine::ExtraParams extraParams;
+ WebKit::WebCanvas* canvas = gc->platformContext()->canvas();
extraParams.scrollbarTrack.trackX = alignRect.x();
extraParams.scrollbarTrack.trackY = alignRect.y();
extraParams.scrollbarTrack.trackWidth = alignRect.width();
extraParams.scrollbarTrack.trackHeight = alignRect.height();
- PlatformSupport::paintThemePart(
- gc,
- scrollbar->orientation() == HorizontalScrollbar ? PlatformSupport::PartScrollbarHorizontalTrack : PlatformSupport::PartScrollbarVerticalTrack,
- state,
- rect,
- &extraParams);
+ WebKit::Platform::current()->themeEngine()->paint(canvas, scrollbar->orientation() == HorizontalScrollbar ? WebKit::WebThemeEngine::PartScrollbarHorizontalTrack : WebKit::WebThemeEngine::PartScrollbarVerticalTrack, state, WebKit::WebRect(rect), &extraParams);
}
void ScrollbarThemeChromiumLinux::paintButton(GraphicsContext* gc, ScrollbarThemeClient* scrollbar, const IntRect& rect, ScrollbarPart part)
{
- PlatformSupport::ThemePart paintPart;
- PlatformSupport::ThemePaintState state = PlatformSupport::StateNormal;
+ WebKit::WebThemeEngine::Part paintPart;
+ WebKit::WebThemeEngine::State state = WebKit::WebThemeEngine::StateNormal;
+ WebKit::WebCanvas* canvas = gc->platformContext()->canvas();
bool checkMin = false;
bool checkMax = false;
if (scrollbar->orientation() == HorizontalScrollbar) {
if (part == BackButtonStartPart) {
- paintPart = PlatformSupport::PartScrollbarLeftArrow;
+ paintPart = WebKit::WebThemeEngine::PartScrollbarLeftArrow;
checkMin = true;
} else {
- paintPart = PlatformSupport::PartScrollbarRightArrow;
+ paintPart = WebKit::WebThemeEngine::PartScrollbarRightArrow;
checkMax = true;
}
} else {
if (part == BackButtonStartPart) {
- paintPart = PlatformSupport::PartScrollbarUpArrow;
+ paintPart = WebKit::WebThemeEngine::PartScrollbarUpArrow;
checkMin = true;
} else {
- paintPart = PlatformSupport::PartScrollbarDownArrow;
+ paintPart = WebKit::WebThemeEngine::PartScrollbarDownArrow;
checkMax = true;
}
}
if ((checkMin && (scrollbar->currentPos() <= 0))
|| (checkMax && scrollbar->currentPos() == scrollbar->maximum())) {
- state = PlatformSupport::StateDisabled;
+ state = WebKit::WebThemeEngine::StateDisabled;
} else {
if (part == scrollbar->pressedPart())
- state = PlatformSupport::StatePressed;
+ state = WebKit::WebThemeEngine::StatePressed;
else if (part == scrollbar->hoveredPart())
- state = PlatformSupport::StateHover;
+ state = WebKit::WebThemeEngine::StateHover;
}
- PlatformSupport::paintThemePart(gc, paintPart, state, rect, 0);
+ WebKit::Platform::current()->themeEngine()->paint(canvas, paintPart, state, WebKit::WebRect(rect), 0);
}
void ScrollbarThemeChromiumLinux::paintThumb(GraphicsContext* gc, ScrollbarThemeClient* scrollbar, const IntRect& rect)
{
- PlatformSupport::ThemePaintState state;
-
+ WebKit::WebThemeEngine::State state;
+ WebKit::WebCanvas* canvas = gc->platformContext()->canvas();
if (scrollbar->pressedPart() == ThumbPart)
- state = PlatformSupport::StatePressed;
+ state = WebKit::WebThemeEngine::StatePressed;
else if (scrollbar->hoveredPart() == ThumbPart)
- state = PlatformSupport::StateHover;
+ state = WebKit::WebThemeEngine::StateHover;
else
- state = PlatformSupport::StateNormal;
- PlatformSupport::paintThemePart(
- gc,
- scrollbar->orientation() == HorizontalScrollbar ? PlatformSupport::PartScrollbarHorizontalThumb : PlatformSupport::PartScrollbarVerticalThumb,
- state,
- rect,
- 0);
+ state = WebKit::WebThemeEngine::StateNormal;
+ WebKit::Platform::current()->themeEngine()->paint(canvas, scrollbar->orientation() == HorizontalScrollbar ? WebKit::WebThemeEngine::PartScrollbarHorizontalThumb : WebKit::WebThemeEngine::PartScrollbarVerticalThumb, state, WebKit::WebRect(rect), 0);
}
bool ScrollbarThemeChromiumLinux::shouldCenterOnThumb(ScrollbarThemeClient*, const PlatformMouseEvent& evt)
@@ -128,23 +123,23 @@
IntSize ScrollbarThemeChromiumLinux::buttonSize(ScrollbarThemeClient* scrollbar)
{
if (scrollbar->orientation() == VerticalScrollbar) {
- IntSize size = PlatformSupport::getThemePartSize(PlatformSupport::PartScrollbarUpArrow);
+ IntSize size = WebKit::Platform::current()->themeEngine()->getSize(WebKit::WebThemeEngine::PartScrollbarUpArrow);
return IntSize(size.width(), scrollbar->height() < 2 * size.height() ? scrollbar->height() / 2 : size.height());
}
// HorizontalScrollbar
- IntSize size = PlatformSupport::getThemePartSize(PlatformSupport::PartScrollbarLeftArrow);
+ IntSize size = WebKit::Platform::current()->themeEngine()->getSize(WebKit::WebThemeEngine::PartScrollbarLeftArrow);
return IntSize(scrollbar->width() < 2 * size.width() ? scrollbar->width() / 2 : size.width(), size.height());
}
int ScrollbarThemeChromiumLinux::minimumThumbLength(ScrollbarThemeClient* scrollbar)
{
if (scrollbar->orientation() == VerticalScrollbar) {
- IntSize size = PlatformSupport::getThemePartSize(PlatformSupport::PartScrollbarVerticalThumb);
+ IntSize size = WebKit::Platform::current()->themeEngine()->getSize(WebKit::WebThemeEngine::PartScrollbarVerticalThumb);
return size.height();
}
- IntSize size = PlatformSupport::getThemePartSize(PlatformSupport::PartScrollbarHorizontalThumb);
+ IntSize size = WebKit::Platform::current()->themeEngine()->getSize(WebKit::WebThemeEngine::PartScrollbarHorizontalThumb);
return size.width();
}
Modified: trunk/Source/WebCore/rendering/RenderThemeChromiumAndroid.cpp (129791 => 129792)
--- trunk/Source/WebCore/rendering/RenderThemeChromiumAndroid.cpp 2012-09-27 19:44:29 UTC (rev 129791)
+++ trunk/Source/WebCore/rendering/RenderThemeChromiumAndroid.cpp 2012-09-27 19:48:58 UTC (rev 129792)
@@ -30,7 +30,6 @@
#include "Color.h"
#include "LayoutTestSupport.h"
#include "PaintInfo.h"
-#include "PlatformSupport.h"
#include "RenderMediaControlsChromium.h"
#include "RenderObject.h"
#include "RenderProgress.h"
@@ -38,6 +37,9 @@
#include "ScrollbarTheme.h"
#include "UserAgentStyleSheets.h"
+#include <public/Platform.h>
+#include <public/android/WebThemeEngine.h>
+
namespace WebCore {
PassRefPtr<RenderTheme> RenderThemeChromiumAndroid::create()
@@ -81,7 +83,7 @@
if (isRunningLayoutTest()) {
// Match Chromium Linux spin button style in layout tests.
// FIXME: Consider removing the conditional if a future Android theme matches this.
- IntSize size = PlatformSupport::getThemePartSize(PlatformSupport::PartInnerSpinButton);
+ IntSize size = WebKit::Platform::current()->themeEngine()->getSize(WebKit::WebThemeEngine::PartInnerSpinButton);
style->setWidth(Length(size.width(), Fixed));
style->setMinWidth(Length(size.width(), Fixed));
@@ -104,7 +106,7 @@
{
// We cannot use the scrollbar thickness here, as it's width is 0 on Android.
// Instead, use the width of the scrollbar down arrow.
- IntSize scrollbarSize = PlatformSupport::getThemePartSize(PlatformSupport::PartScrollbarDownArrow);
+ IntSize scrollbarSize = WebKit::Platform::current()->themeEngine()->getSize(WebKit::WebThemeEngine::PartScrollbarDownArrow);
return scrollbarSize.width();
}
Modified: trunk/Source/WebCore/rendering/RenderThemeChromiumLinux.cpp (129791 => 129792)
--- trunk/Source/WebCore/rendering/RenderThemeChromiumLinux.cpp 2012-09-27 19:44:29 UTC (rev 129791)
+++ trunk/Source/WebCore/rendering/RenderThemeChromiumLinux.cpp 2012-09-27 19:48:58 UTC (rev 129792)
@@ -28,12 +28,15 @@
#include "CSSValueKeywords.h"
#include "Color.h"
#include "PaintInfo.h"
-#include "PlatformSupport.h"
+#include "PlatformContextSkia.h"
#include "RenderObject.h"
#include "RenderProgress.h"
#include "RenderSlider.h"
#include "ScrollbarTheme.h"
#include "UserAgentStyleSheets.h"
+#include <public/Platform.h>
+#include <public/WebRect.h>
+#include <public/linux/WebThemeEngine.h>
namespace WebCore {
@@ -50,19 +53,18 @@
static const unsigned defaultButtonBackgroundColor = 0xffdddddd;
-static PlatformSupport::ThemePaintState getWebThemeState(const RenderTheme* theme, const RenderObject* o)
+static WebKit::WebThemeEngine::State getWebThemeState(const RenderTheme* theme, const RenderObject* o)
{
if (!theme->isEnabled(o))
- return PlatformSupport::StateDisabled;
+ return WebKit::WebThemeEngine::StateDisabled;
if (theme->isPressed(o))
- return PlatformSupport::StatePressed;
+ return WebKit::WebThemeEngine::StatePressed;
if (theme->isHovered(o))
- return PlatformSupport::StateHover;
+ return WebKit::WebThemeEngine::StateHover;
- return PlatformSupport::StateNormal;
+ return WebKit::WebThemeEngine::StateNormal;
}
-
PassRefPtr<RenderTheme> RenderThemeChromiumLinux::create()
{
return adoptRef(new RenderThemeChromiumLinux());
@@ -160,7 +162,7 @@
void RenderThemeChromiumLinux::adjustSliderThumbSize(RenderStyle* style, Element* element) const
{
- IntSize size = PlatformSupport::getThemePartSize(PlatformSupport::PartSliderThumb);
+ IntSize size = WebKit::Platform::current()->themeEngine()->getSize(WebKit::WebThemeEngine::PartSliderThumb);
if (style->appearance() == SliderThumbHorizontalPart) {
style->setWidth(Length(size.width(), Fixed));
@@ -201,11 +203,12 @@
bool RenderThemeChromiumLinux::paintCheckbox(RenderObject* o, const PaintInfo& i, const IntRect& rect)
{
- PlatformSupport::ThemePaintExtraParams extraParams;
+ WebKit::WebThemeEngine::ExtraParams extraParams;
+ WebKit::WebCanvas* canvas = i.context->platformContext()->canvas();
extraParams.button.checked = isChecked(o);
extraParams.button.indeterminate = isIndeterminate(o);
- PlatformSupport::paintThemePart(i.context, PlatformSupport::PartCheckbox, getWebThemeState(this, o), rect, &extraParams);
+ WebKit::Platform::current()->themeEngine()->paint(canvas, WebKit::WebThemeEngine::PartCheckbox, getWebThemeState(this, o), WebKit::WebRect(rect), &extraParams);
return false;
}
@@ -215,16 +218,17 @@
if (!style->width().isIntrinsicOrAuto() && !style->height().isAuto())
return;
- IntSize size = PlatformSupport::getThemePartSize(PlatformSupport::PartCheckbox);
+ IntSize size = WebKit::Platform::current()->themeEngine()->getSize(WebKit::WebThemeEngine::PartCheckbox);
setSizeIfAuto(style, size);
}
bool RenderThemeChromiumLinux::paintRadio(RenderObject* o, const PaintInfo& i, const IntRect& rect)
{
- PlatformSupport::ThemePaintExtraParams extraParams;
+ WebKit::WebThemeEngine::ExtraParams extraParams;
+ WebKit::WebCanvas* canvas = i.context->platformContext()->canvas();
extraParams.button.checked = isChecked(o);
- PlatformSupport::paintThemePart(i.context, PlatformSupport::PartRadio, getWebThemeState(this, o), rect, &extraParams);
+ WebKit::Platform::current()->themeEngine()->paint(canvas, WebKit::WebThemeEngine::PartRadio, getWebThemeState(this, o), WebKit::WebRect(rect), &extraParams);
return false;
}
@@ -234,20 +238,21 @@
if (!style->width().isIntrinsicOrAuto() && !style->height().isAuto())
return;
- IntSize size = PlatformSupport::getThemePartSize(PlatformSupport::PartRadio);
+ IntSize size = WebKit::Platform::current()->themeEngine()->getSize(WebKit::WebThemeEngine::PartRadio);
setSizeIfAuto(style, size);
}
bool RenderThemeChromiumLinux::paintButton(RenderObject* o, const PaintInfo& i, const IntRect& rect)
{
- PlatformSupport::ThemePaintExtraParams extraParams;
+ WebKit::WebThemeEngine::ExtraParams extraParams;
+ WebKit::WebCanvas* canvas = i.context->platformContext()->canvas();
extraParams.button.isDefault = isDefault(o);
extraParams.button.hasBorder = true;
extraParams.button.backgroundColor = defaultButtonBackgroundColor;
if (o->hasBackground())
extraParams.button.backgroundColor = o->style()->visitedDependentColor(CSSPropertyBackgroundColor).rgb();
- PlatformSupport::paintThemePart(i.context, PlatformSupport::PartButton, getWebThemeState(this, o), rect, &extraParams);
+ WebKit::Platform::current()->themeEngine()->paint(canvas, WebKit::WebThemeEngine::PartButton, getWebThemeState(this, o), WebKit::WebRect(rect), &extraParams);
return false;
}
@@ -260,17 +265,19 @@
ControlPart part = o->style()->appearance();
- PlatformSupport::ThemePaintExtraParams extraParams;
+ WebKit::WebThemeEngine::ExtraParams extraParams;
extraParams.textField.isTextArea = part == TextAreaPart;
extraParams.textField.isListbox = part == ListboxPart;
+ WebKit::WebCanvas* canvas = i.context->platformContext()->canvas();
+
// Fallback to white if the specified color object is invalid.
Color backgroundColor(Color::white);
if (o->style()->visitedDependentColor(CSSPropertyBackgroundColor).isValid())
backgroundColor = o->style()->visitedDependentColor(CSSPropertyBackgroundColor);
extraParams.textField.backgroundColor = backgroundColor.rgb();
- PlatformSupport::paintThemePart(i.context, PlatformSupport::PartTextField, getWebThemeState(this, o), rect, &extraParams);
+ WebKit::Platform::current()->themeEngine()->paint(canvas, WebKit::WebThemeEngine::PartTextField, getWebThemeState(this, o), WebKit::WebRect(rect), &extraParams);
return false;
}
@@ -282,7 +289,7 @@
const int right = rect.x() + rect.width();
const int middle = rect.y() + rect.height() / 2;
- PlatformSupport::ThemePaintExtraParams extraParams;
+ WebKit::WebThemeEngine::ExtraParams extraParams;
extraParams.menuList.arrowX = (o->style()->direction() == RTL) ? rect.x() + 7 : right - 13;
extraParams.menuList.arrowY = middle;
const RenderBox* box = toRenderBox(o);
@@ -294,16 +301,19 @@
if (o->hasBackground())
extraParams.menuList.backgroundColor = o->style()->visitedDependentColor(CSSPropertyBackgroundColor).rgb();
- PlatformSupport::paintThemePart(i.context, PlatformSupport::PartMenuList, getWebThemeState(this, o), rect, &extraParams);
+ WebKit::WebCanvas* canvas = i.context->platformContext()->canvas();
+
+ WebKit::Platform::current()->themeEngine()->paint(canvas, WebKit::WebThemeEngine::PartMenuList, getWebThemeState(this, o), WebKit::WebRect(rect), &extraParams);
return false;
}
bool RenderThemeChromiumLinux::paintSliderTrack(RenderObject* o, const PaintInfo& i, const IntRect& rect)
{
- PlatformSupport::ThemePaintExtraParams extraParams;
+ WebKit::WebThemeEngine::ExtraParams extraParams;
+ WebKit::WebCanvas* canvas = i.context->platformContext()->canvas();
extraParams.slider.vertical = o->style()->appearance() == SliderVerticalPart;
- PlatformSupport::paintThemePart(i.context, PlatformSupport::PartSliderTrack, getWebThemeState(this, o), rect, &extraParams);
+ WebKit::Platform::current()->themeEngine()->paint(canvas, WebKit::WebThemeEngine::PartSliderTrack, getWebThemeState(this, o), WebKit::WebRect(rect), &extraParams);
#if ENABLE(DATALIST_ELEMENT)
paintSliderTicks(o, i, rect);
@@ -314,17 +324,18 @@
bool RenderThemeChromiumLinux::paintSliderThumb(RenderObject* o, const PaintInfo& i, const IntRect& rect)
{
- PlatformSupport::ThemePaintExtraParams extraParams;
+ WebKit::WebThemeEngine::ExtraParams extraParams;
+ WebKit::WebCanvas* canvas = i.context->platformContext()->canvas();
extraParams.slider.vertical = o->style()->appearance() == SliderThumbVerticalPart;
extraParams.slider.inDrag = isPressed(o);
- PlatformSupport::paintThemePart(i.context, PlatformSupport::PartSliderThumb, getWebThemeState(this, o), rect, &extraParams);
+ WebKit::Platform::current()->themeEngine()->paint(canvas, WebKit::WebThemeEngine::PartSliderThumb, getWebThemeState(this, o), WebKit::WebRect(rect), &extraParams);
return false;
}
void RenderThemeChromiumLinux::adjustInnerSpinButtonStyle(StyleResolver*, RenderStyle* style, Element*) const
{
- IntSize size = PlatformSupport::getThemePartSize(PlatformSupport::PartInnerSpinButton);
+ IntSize size = WebKit::Platform::current()->themeEngine()->getSize(WebKit::WebThemeEngine::PartInnerSpinButton);
style->setWidth(Length(size.width(), Fixed));
style->setMinWidth(Length(size.width(), Fixed));
@@ -332,11 +343,12 @@
bool RenderThemeChromiumLinux::paintInnerSpinButton(RenderObject* o, const PaintInfo& i, const IntRect& rect)
{
- PlatformSupport::ThemePaintExtraParams extraParams;
+ WebKit::WebThemeEngine::ExtraParams extraParams;
+ WebKit::WebCanvas* canvas = i.context->platformContext()->canvas();
extraParams.innerSpin.spinUp = (controlStatesForRenderer(o) & SpinUpState);
extraParams.innerSpin.readOnly = isReadOnlyControl(o);
- PlatformSupport::paintThemePart(i.context, PlatformSupport::PartInnerSpinButton, getWebThemeState(this, o), rect, &extraParams);
+ WebKit::Platform::current()->themeEngine()->paint(canvas, WebKit::WebThemeEngine::PartInnerSpinButton, getWebThemeState(this, o), WebKit::WebRect(rect), &extraParams);
return false;
}
@@ -350,7 +362,7 @@
RenderProgress* renderProgress = toRenderProgress(o);
IntRect valueRect = progressValueRectFor(renderProgress, rect);
- PlatformSupport::ThemePaintExtraParams extraParams;
+ WebKit::WebThemeEngine::ExtraParams extraParams;
extraParams.progressBar.determinate = renderProgress->isDeterminate();
extraParams.progressBar.valueRectX = valueRect.x();
extraParams.progressBar.valueRectY = valueRect.y();
@@ -358,7 +370,8 @@
extraParams.progressBar.valueRectHeight = valueRect.height();
DirectionFlippingScope scope(o, i, rect);
- PlatformSupport::paintThemePart(i.context, PlatformSupport::PartProgressBar, getWebThemeState(this, o), rect, &extraParams);
+ WebKit::WebCanvas* canvas = i.context->platformContext()->canvas();
+ WebKit::Platform::current()->themeEngine()->paint(canvas, WebKit::WebThemeEngine::PartProgressBar, getWebThemeState(this, o), WebKit::WebRect(rect), &extraParams);
return false;
}
Modified: trunk/Source/WebKit/chromium/ChangeLog (129791 => 129792)
--- trunk/Source/WebKit/chromium/ChangeLog 2012-09-27 19:44:29 UTC (rev 129791)
+++ trunk/Source/WebKit/chromium/ChangeLog 2012-09-27 19:48:58 UTC (rev 129792)
@@ -1,3 +1,19 @@
+2012-09-27 Mark Pilgrim <pilg...@chromium.org>
+
+ [Chromium] Move UNIX-specific theme functions out of PlatformSupport
+ https://bugs.webkit.org/show_bug.cgi?id=96516
+
+ Reviewed by Adam Barth.
+
+ Call WebThemeEngine functions and use WebThemeEngine enums
+ directly from the new Platform/ directly; remove all
+ intermediate functions and enums and conversion functions from
+ PlatformSupport.
+ Part of a refactoring series; see tracking bug 82948.
+
+ * src/PlatformSupport.cpp:
+ (WebCore):
+
2012-09-27 Andrey Kosyakov <ca...@chromium.org>
Page overlays are not updated when WebView is resized
Modified: trunk/Source/WebKit/chromium/src/PlatformSupport.cpp (129791 => 129792)
--- trunk/Source/WebKit/chromium/src/PlatformSupport.cpp 2012-09-27 19:44:29 UTC (rev 129791)
+++ trunk/Source/WebKit/chromium/src/PlatformSupport.cpp 2012-09-27 19:48:58 UTC (rev 129792)
@@ -347,114 +347,6 @@
webThemeScrollbarInfo);
}
-#elif OS(UNIX)
-
-static WebThemeEngine::Part WebThemePart(PlatformSupport::ThemePart part)
-{
- switch (part) {
- case PlatformSupport::PartScrollbarDownArrow: return WebThemeEngine::PartScrollbarDownArrow;
- case PlatformSupport::PartScrollbarLeftArrow: return WebThemeEngine::PartScrollbarLeftArrow;
- case PlatformSupport::PartScrollbarRightArrow: return WebThemeEngine::PartScrollbarRightArrow;
- case PlatformSupport::PartScrollbarUpArrow: return WebThemeEngine::PartScrollbarUpArrow;
- case PlatformSupport::PartScrollbarHorizontalThumb: return WebThemeEngine::PartScrollbarHorizontalThumb;
- case PlatformSupport::PartScrollbarVerticalThumb: return WebThemeEngine::PartScrollbarVerticalThumb;
- case PlatformSupport::PartScrollbarHorizontalTrack: return WebThemeEngine::PartScrollbarHorizontalTrack;
- case PlatformSupport::PartScrollbarVerticalTrack: return WebThemeEngine::PartScrollbarVerticalTrack;
- case PlatformSupport::PartCheckbox: return WebThemeEngine::PartCheckbox;
- case PlatformSupport::PartRadio: return WebThemeEngine::PartRadio;
- case PlatformSupport::PartButton: return WebThemeEngine::PartButton;
- case PlatformSupport::PartTextField: return WebThemeEngine::PartTextField;
- case PlatformSupport::PartMenuList: return WebThemeEngine::PartMenuList;
- case PlatformSupport::PartSliderTrack: return WebThemeEngine::PartSliderTrack;
- case PlatformSupport::PartSliderThumb: return WebThemeEngine::PartSliderThumb;
- case PlatformSupport::PartInnerSpinButton: return WebThemeEngine::PartInnerSpinButton;
- case PlatformSupport::PartProgressBar: return WebThemeEngine::PartProgressBar;
- }
- ASSERT_NOT_REACHED();
- return WebThemeEngine::PartScrollbarDownArrow;
-}
-
-static WebThemeEngine::State WebThemeState(PlatformSupport::ThemePaintState state)
-{
- switch (state) {
- case PlatformSupport::StateDisabled: return WebThemeEngine::StateDisabled;
- case PlatformSupport::StateHover: return WebThemeEngine::StateHover;
- case PlatformSupport::StateNormal: return WebThemeEngine::StateNormal;
- case PlatformSupport::StatePressed: return WebThemeEngine::StatePressed;
- }
- ASSERT_NOT_REACHED();
- return WebThemeEngine::StateDisabled;
-}
-
-static void GetWebThemeExtraParams(PlatformSupport::ThemePart part, PlatformSupport::ThemePaintState state, const PlatformSupport::ThemePaintExtraParams* extraParams, WebThemeEngine::ExtraParams* webThemeExtraParams)
-{
- switch (part) {
- case PlatformSupport::PartScrollbarHorizontalTrack:
- case PlatformSupport::PartScrollbarVerticalTrack:
- webThemeExtraParams->scrollbarTrack.trackX = extraParams->scrollbarTrack.trackX;
- webThemeExtraParams->scrollbarTrack.trackY = extraParams->scrollbarTrack.trackY;
- webThemeExtraParams->scrollbarTrack.trackWidth = extraParams->scrollbarTrack.trackWidth;
- webThemeExtraParams->scrollbarTrack.trackHeight = extraParams->scrollbarTrack.trackHeight;
- break;
- case PlatformSupport::PartCheckbox:
- webThemeExtraParams->button.checked = extraParams->button.checked;
- webThemeExtraParams->button.indeterminate = extraParams->button.indeterminate;
- break;
- case PlatformSupport::PartRadio:
- webThemeExtraParams->button.checked = extraParams->button.checked;
- break;
- case PlatformSupport::PartButton:
- webThemeExtraParams->button.isDefault = extraParams->button.isDefault;
- webThemeExtraParams->button.hasBorder = extraParams->button.hasBorder;
- webThemeExtraParams->button.backgroundColor = extraParams->button.backgroundColor;
- break;
- case PlatformSupport::PartTextField:
- webThemeExtraParams->textField.isTextArea = extraParams->textField.isTextArea;
- webThemeExtraParams->textField.isListbox = extraParams->textField.isListbox;
- webThemeExtraParams->textField.backgroundColor = extraParams->textField.backgroundColor;
- break;
- case PlatformSupport::PartMenuList:
- webThemeExtraParams->menuList.hasBorder = extraParams->menuList.hasBorder;
- webThemeExtraParams->menuList.hasBorderRadius = extraParams->menuList.hasBorderRadius;
- webThemeExtraParams->menuList.arrowX = extraParams->menuList.arrowX;
- webThemeExtraParams->menuList.arrowY = extraParams->menuList.arrowY;
- webThemeExtraParams->menuList.backgroundColor = extraParams->menuList.backgroundColor;
- break;
- case PlatformSupport::PartSliderTrack:
- case PlatformSupport::PartSliderThumb:
- webThemeExtraParams->slider.vertical = extraParams->slider.vertical;
- webThemeExtraParams->slider.inDrag = extraParams->slider.inDrag;
- break;
- case PlatformSupport::PartInnerSpinButton:
- webThemeExtraParams->innerSpin.spinUp = extraParams->innerSpin.spinUp;
- webThemeExtraParams->innerSpin.readOnly = extraParams->innerSpin.readOnly;
- break;
- case PlatformSupport::PartProgressBar:
- webThemeExtraParams->progressBar.determinate = extraParams->progressBar.determinate;
- webThemeExtraParams->progressBar.valueRectX = extraParams->progressBar.valueRectX;
- webThemeExtraParams->progressBar.valueRectY = extraParams->progressBar.valueRectY;
- webThemeExtraParams->progressBar.valueRectWidth = extraParams->progressBar.valueRectWidth;
- webThemeExtraParams->progressBar.valueRectHeight = extraParams->progressBar.valueRectHeight;
- break;
- default:
- break; // Parts that have no extra params get here.
- }
-}
-
-IntSize PlatformSupport::getThemePartSize(ThemePart part)
-{
- return WebKit::Platform::current()->themeEngine()->getSize(WebThemePart(part));
-}
-
-void PlatformSupport::paintThemePart(
- GraphicsContext* gc, ThemePart part, ThemePaintState state, const IntRect& rect, const ThemePaintExtraParams* extraParams)
-{
- WebThemeEngine::ExtraParams webThemeExtraParams;
- GetWebThemeExtraParams(part, state, extraParams, &webThemeExtraParams);
- WebKit::Platform::current()->themeEngine()->paint(
- gc->platformContext()->canvas(), WebThemePart(part), WebThemeState(state), rect, &webThemeExtraParams);
-}
-
#endif
// These are temporary methods that the WebKit layer can use to call to the