Title: [129792] trunk/Source
Revision
129792
Author
pilg...@chromium.org
Date
2012-09-27 12:48:58 -0700 (Thu, 27 Sep 2012)

Log Message

[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.

Source/WebCore:

* 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):

Source/WebKit/chromium:

* src/PlatformSupport.cpp:
(WebCore):

Modified Paths

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
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to