[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

tony at chromium.org tony at chromium.org
Wed Dec 22 14:31:48 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 96e46972c8689804549438440e1fff7fe8bd0895
Author: tony at chromium.org <tony at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Oct 12 17:10:33 2010 +0000

    2010-10-12  Dave Moore  <davemoore at chromium.org>
    
            Reviewed by Tony Chang.
    
            Use new WebThemeEngine api on chromium / linux to draw scrollbars.
            https://bugs.webkit.org/show_bug.cgi?id=47473
    
            * platform/chromium/ChromiumBridge.h:
            * platform/chromium/ScrollbarThemeChromiumLinux.cpp:
    2010-10-12  Dave Moore  <davemoore at chromium.org>
    
            Reviewed by Tony Chang.
    
            Use new WebThemeEngine api on chromium / linux to draw scrollbars.
            https://bugs.webkit.org/show_bug.cgi?id=47473
    
            * public/WebThemeEngine.h: Removed.
            * chromium/src/ChromiumBridge.cpp:
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@69586 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 9cd6e73..e759126 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,13 @@
+2010-10-12  Dave Moore  <davemoore at chromium.org>
+
+        Reviewed by Tony Chang.
+
+        Use new WebThemeEngine api on chromium / linux to draw scrollbars.
+        https://bugs.webkit.org/show_bug.cgi?id=47473
+
+        * platform/chromium/ChromiumBridge.h:
+        * platform/chromium/ScrollbarThemeChromiumLinux.cpp:
+
 2010-10-12  Andreas Kling  <kling at webkit.org>
 
         Reviewed by Antonio Gomes.
diff --git a/WebCore/platform/chromium/ChromiumBridge.h b/WebCore/platform/chromium/ChromiumBridge.h
index 121ec4b..1c819e5 100644
--- a/WebCore/platform/chromium/ChromiumBridge.h
+++ b/WebCore/platform/chromium/ChromiumBridge.h
@@ -254,6 +254,45 @@ namespace WebCore {
             GraphicsContext*, int part, int state, int classicState, const IntRect&);
         static void paintProgressBar(
             GraphicsContext*, const IntRect& barRect, const IntRect& valueRect, bool determinate, double animatedSeconds);
+#elif OS(LINUX)
+        // The UI part which is being accessed.
+        enum ThemePart {
+            PartScrollbarDownArrow,
+            PartScrollbarLeftArrow,
+            PartScrollbarRightArrow,
+            PartScrollbarUpArrow,
+            PartScrollbarHorizontalThumb,
+            PartScrollbarVerticalThumb,
+            PartScrollbarHoriztonalTrack,
+            PartScrollbarVerticalTrack,
+        };
+
+        // 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;
+        };
+
+        union ThemePaintExtraParams {
+            ScrollbarTrackExtraParams scrollbarTrack;
+        };
+
+        // 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
 
         // Trace Event --------------------------------------------------------
diff --git a/WebCore/platform/chromium/ScrollbarThemeChromiumLinux.cpp b/WebCore/platform/chromium/ScrollbarThemeChromiumLinux.cpp
index d9434c7..46e6993 100644
--- a/WebCore/platform/chromium/ScrollbarThemeChromiumLinux.cpp
+++ b/WebCore/platform/chromium/ScrollbarThemeChromiumLinux.cpp
@@ -31,17 +31,12 @@
 #include "config.h"
 #include "ScrollbarThemeChromiumLinux.h"
 
-#include "PlatformContextSkia.h"
+#include "ChromiumBridge.h"
 #include "PlatformMouseEvent.h"
-#include "PlatformThemeChromiumGtk.h"
 #include "Scrollbar.h"
-#include "TransformationMatrix.h"
 
 namespace WebCore {
 
-static const int scrollbarThicknessValue = 15;
-static const int buttonLength = 14;
-
 ScrollbarTheme* ScrollbarTheme::nativeTheme()
 {
     static ScrollbarThemeChromiumLinux theme;
@@ -50,136 +45,79 @@ ScrollbarTheme* ScrollbarTheme::nativeTheme()
 
 int ScrollbarThemeChromiumLinux::scrollbarThickness(ScrollbarControlSize controlSize)
 {
-    return scrollbarThicknessValue;
-}
-
-static void drawVertLine(SkCanvas* canvas, int x, int y1, int y2, const SkPaint& paint)
-{
-    SkIRect skrect;
-    skrect.set(x, y1, x + 1, y2 + 1);
-    canvas->drawIRect(skrect, paint);
-}
-
-static void drawHorizLine(SkCanvas* canvas, int x1, int x2, int y, const SkPaint& paint)
-{
-    SkIRect skrect;
-    skrect.set(x1, y, x2 + 1, y + 1);
-    canvas->drawIRect(skrect, paint);
-}
-
-static void drawBox(SkCanvas* canvas, const IntRect& rect, const SkPaint& paint)
-{
-    const int right = rect.x() + rect.width() - 1;
-    const int bottom = rect.y() + rect.height() - 1;
-    drawHorizLine(canvas, rect.x(), right, rect.y(), paint);
-    drawVertLine(canvas, right, rect.y(), bottom, paint);
-    drawHorizLine(canvas, rect.x(), right, bottom, paint);
-    drawVertLine(canvas, rect.x(), rect.y(), bottom, paint);
+    // Horiz and Vert scrollbars are the same thickness.
+    IntSize scrollbarSize = ChromiumBridge::getThemePartSize(ChromiumBridge::PartScrollbarVerticalTrack);
+    return scrollbarSize.width();
 }
 
 void ScrollbarThemeChromiumLinux::paintTrackPiece(GraphicsContext* gc, Scrollbar* scrollbar, const IntRect& rect, ScrollbarPart partType)
 {
-    SkCanvas* const canvas = gc->platformContext()->canvas();
-    SkPaint paint;
-    SkIRect skrect;
-
-    skrect.set(rect.x(), rect.y(), rect.x() + rect.width(), rect.y() + rect.height());
-    SkScalar trackHSV[3];
-    SkColorToHSV(PlatformThemeChromiumGtk::trackColor(), trackHSV);
-    paint.setColor(PlatformThemeChromiumGtk::saturateAndBrighten(trackHSV, 0, 0));
-    canvas->drawIRect(skrect, paint);
-
-    SkScalar thumbHSV[3];
-    SkColorToHSV(PlatformThemeChromiumGtk::thumbInactiveColor(),
-                 thumbHSV);
-
-    paint.setColor(PlatformThemeChromiumGtk::outlineColor(trackHSV, thumbHSV));
-    drawBox(canvas, rect, paint);
+    ChromiumBridge::ThemePaintState state = scrollbar->hoveredPart() == partType ? ChromiumBridge::StateHover : ChromiumBridge::StateNormal;
+    IntRect alignRect = trackRect(scrollbar, false);
+    ChromiumBridge::ThemePaintExtraParams extraParams;
+    extraParams.scrollbarTrack.trackX = alignRect.x();
+    extraParams.scrollbarTrack.trackY = alignRect.y();
+    extraParams.scrollbarTrack.trackWidth = alignRect.width();
+    extraParams.scrollbarTrack.trackHeight = alignRect.height();
+    ChromiumBridge::paintThemePart(
+        gc,
+        scrollbar->orientation() == HorizontalScrollbar ? ChromiumBridge::PartScrollbarHoriztonalTrack : ChromiumBridge::PartScrollbarVerticalTrack,
+        state,
+        rect,
+        &extraParams);
 }
 
 void ScrollbarThemeChromiumLinux::paintButton(GraphicsContext* gc, Scrollbar* scrollbar, const IntRect& rect, ScrollbarPart part)
 {
-    PlatformThemeChromiumGtk::ArrowDirection direction;
+    ChromiumBridge::ThemePart paintPart;
+    ChromiumBridge::ThemePaintState state = ChromiumBridge::StateNormal;
+    bool checkMin = false;
+    bool checkMax = false;
     if (scrollbar->orientation() == HorizontalScrollbar) {
-        if (part == BackButtonStartPart)
-            direction = PlatformThemeChromiumGtk::West;
-        else
-            direction = PlatformThemeChromiumGtk::East;
+        if (part == BackButtonStartPart) {
+            paintPart = ChromiumBridge::PartScrollbarLeftArrow;
+            checkMin = true;
+        } else {
+            paintPart = ChromiumBridge::PartScrollbarRightArrow;
+            checkMax = true;
+        }
     } else {
-        if (part == BackButtonStartPart)
-            direction = PlatformThemeChromiumGtk::North;
-        else
-            direction = PlatformThemeChromiumGtk::South;
+        if (part == BackButtonStartPart) {
+            paintPart = ChromiumBridge::PartScrollbarUpArrow;
+            checkMin = true;
+        } else {
+            paintPart = ChromiumBridge::PartScrollbarDownArrow;
+            checkMax = true;
+        }
     }
-
-    ControlStates states = 0;
-    // Determine if the button can be pressed.
-    if (((direction == PlatformThemeChromiumGtk::West || direction == PlatformThemeChromiumGtk::North) && scrollbar->currentPos())
-        || ((direction == PlatformThemeChromiumGtk::East || direction == PlatformThemeChromiumGtk::South) && scrollbar->currentPos() != scrollbar->maximum()))
-        states |= EnabledState;
-
-    if (states & EnabledState) {
+    if ((checkMin && (scrollbar->currentPos() <= 0))
+        || (checkMax && scrollbar->currentPos() == scrollbar->maximum())) {
+        state = ChromiumBridge::StateDisabled;
+    } else {
         if (part == scrollbar->pressedPart())
-            states |= PressedState;
+            state = ChromiumBridge::StatePressed;
         else if (part == scrollbar->hoveredPart())
-            states |= HoverState;
+            state = ChromiumBridge::StateHover;
     }
-
-    PlatformThemeChromiumGtk::paintArrowButton(gc, rect, direction, states);
+    ChromiumBridge::paintThemePart(gc, paintPart, state, rect, 0);
 }
 
 void ScrollbarThemeChromiumLinux::paintThumb(GraphicsContext* gc, Scrollbar* scrollbar, const IntRect& rect)
 {
-    const bool hovered = scrollbar->hoveredPart() == ThumbPart;
-    const int midx = rect.x() + rect.width() / 2;
-    const int midy = rect.y() + rect.height() / 2;
-    const bool vertical = scrollbar->orientation() == VerticalScrollbar;
-    SkCanvas* const canvas = gc->platformContext()->canvas();
-
-    SkScalar thumb[3];
-    SkColorToHSV(hovered
-                 ? PlatformThemeChromiumGtk::thumbActiveColor()
-                 : PlatformThemeChromiumGtk::thumbInactiveColor(),
-                 thumb);
-
-    SkPaint paint;
-    paint.setColor(PlatformThemeChromiumGtk::saturateAndBrighten(thumb, 0, 0.02));
-
-    SkIRect skrect;
-    if (vertical)
-        skrect.set(rect.x(), rect.y(), midx + 1, rect.y() + rect.height());
-    else
-        skrect.set(rect.x(), rect.y(), rect.x() + rect.width(), midy + 1);
-
-    canvas->drawIRect(skrect, paint);
-
-    paint.setColor(PlatformThemeChromiumGtk::saturateAndBrighten(thumb, 0, -0.02));
+    ChromiumBridge::ThemePaintState state;
 
-    if (vertical)
-        skrect.set(midx + 1, rect.y(), rect.x() + rect.width(), rect.y() + rect.height());
+    if (scrollbar->pressedPart() == ThumbPart)
+        state = ChromiumBridge::StatePressed;
+    else if (scrollbar->hoveredPart() == ThumbPart)
+        state = ChromiumBridge::StateHover;
     else
-        skrect.set(rect.x(), midy + 1, rect.x() + rect.width(), rect.y() + rect.height());
-
-    canvas->drawIRect(skrect, paint);
-
-    SkScalar track[3];
-    SkColorToHSV(PlatformThemeChromiumGtk::trackColor(), track);
-    paint.setColor(PlatformThemeChromiumGtk::outlineColor(track, thumb));
-    drawBox(canvas, rect, paint);
-
-    if (rect.height() > 10 && rect.width() > 10) {
-        const int grippyHalfWidth = 2;
-        const int interGrippyOffset = 3;
-        if (vertical) {
-            drawHorizLine(canvas, midx - grippyHalfWidth, midx + grippyHalfWidth, midy - interGrippyOffset, paint);
-            drawHorizLine(canvas, midx - grippyHalfWidth, midx + grippyHalfWidth, midy,                     paint);
-            drawHorizLine(canvas, midx - grippyHalfWidth, midx + grippyHalfWidth, midy + interGrippyOffset, paint);
-        } else {
-            drawVertLine(canvas, midx - interGrippyOffset, midy - grippyHalfWidth, midy + grippyHalfWidth, paint);
-            drawVertLine(canvas, midx,                     midy - grippyHalfWidth, midy + grippyHalfWidth, paint);
-            drawVertLine(canvas, midx + interGrippyOffset, midy - grippyHalfWidth, midy + grippyHalfWidth, paint);
-        }
-    }
+        state = ChromiumBridge::StateNormal;
+    ChromiumBridge::paintThemePart(
+        gc,
+        scrollbar->orientation() == HorizontalScrollbar ? ChromiumBridge::PartScrollbarHorizontalThumb : ChromiumBridge::PartScrollbarVerticalThumb,
+        state,
+        rect,
+        0);
 }
 
 bool ScrollbarThemeChromiumLinux::shouldCenterOnThumb(Scrollbar*, const PlatformMouseEvent& evt)
@@ -189,17 +127,25 @@ bool ScrollbarThemeChromiumLinux::shouldCenterOnThumb(Scrollbar*, const Platform
 
 IntSize ScrollbarThemeChromiumLinux::buttonSize(Scrollbar* scrollbar)
 {
-    if (scrollbar->orientation() == VerticalScrollbar)
-        return IntSize(scrollbarThicknessValue, scrollbar->height() < 2 * buttonLength ? scrollbar->height() / 2 : buttonLength);
+    if (scrollbar->orientation() == VerticalScrollbar) {
+        IntSize size = ChromiumBridge::getThemePartSize(ChromiumBridge::PartScrollbarUpArrow);
+        return IntSize(size.width(), scrollbar->height() < 2 * size.height() ? scrollbar->height() / 2 : size.height());
+    }
 
     // HorizontalScrollbar
-    return IntSize(scrollbar->width() < 2 * buttonLength ? scrollbar->width() / 2 : buttonLength, scrollbarThicknessValue);
+    IntSize size = ChromiumBridge::getThemePartSize(ChromiumBridge::PartScrollbarLeftArrow);
+    return IntSize(scrollbar->width() < 2 * size.width() ? scrollbar->width() / 2 : size.width(), size.height());
 }
 
 int ScrollbarThemeChromiumLinux::minimumThumbLength(Scrollbar* scrollbar)
 {
-    // This matches Firefox on Linux.
-    return 2 * scrollbarThickness(scrollbar->controlSize());
+    if (scrollbar->orientation() == VerticalScrollbar) {
+        IntSize size = ChromiumBridge::getThemePartSize(ChromiumBridge::PartScrollbarVerticalThumb);
+        return size.height();
+    }
+
+    IntSize size = ChromiumBridge::getThemePartSize(ChromiumBridge::PartScrollbarHorizontalThumb);
+    return size.width();
 }
 
 } // namespace WebCore
diff --git a/WebKit/chromium/ChangeLog b/WebKit/chromium/ChangeLog
index 1168fe6..971b1c0 100644
--- a/WebKit/chromium/ChangeLog
+++ b/WebKit/chromium/ChangeLog
@@ -1,3 +1,13 @@
+2010-10-12  Dave Moore  <davemoore at chromium.org>
+
+        Reviewed by Tony Chang.
+
+        Use new WebThemeEngine api on chromium / linux to draw scrollbars.
+        https://bugs.webkit.org/show_bug.cgi?id=47473
+
+        * public/WebThemeEngine.h: Removed.
+        * chromium/src/ChromiumBridge.cpp:
+
 2010-10-11  Daniel Cheng  <dcheng at chromium.org>
 
         Reviewed by Tony Chang.
diff --git a/WebKit/chromium/public/WebThemeEngine.h b/WebKit/chromium/public/WebThemeEngine.h
deleted file mode 100644
index 0ebcf74..0000000
--- a/WebKit/chromium/public/WebThemeEngine.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (C) 2010 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef WebThemeEngine_h
-#define WebThemeEngine_h
-
-#include "WebCanvas.h"
-#include "WebColor.h"
-
-namespace WebKit {
-
-struct WebRect;
-struct WebSize;
-
-// FIXME: This file has been moved to the win subdirectory as it's entirely
-// windows dependent. Once chromium has been updated to access the file from
-// there this file should be deleted.
-class WebThemeEngine {
-public:
-#ifdef WIN32
-// The part and state parameters correspond to values defined by the
-// Windows Theme API (see
-// http://msdn.microsoft.com/en-us/library/bb773187(VS.85).aspx ).
-// The classicState parameter corresponds to the uState
-// parameter of the Windows DrawFrameControl() function.
-// See the definitions in <vsstyle.h> and <winuser.h>.
-    virtual void paintButton(
-        WebCanvas*, int part, int state, int classicState,
-        const WebRect&) = 0;
-
-    virtual void paintMenuList(
-        WebCanvas*, int part, int state, int classicState,
-        const WebRect&) = 0;
-
-    virtual void paintScrollbarArrow(
-        WebCanvas*, int state, int classicState,
-        const WebRect&) = 0;
-
-    virtual void paintScrollbarThumb(
-        WebCanvas*, int part, int state, int classicState,
-        const WebRect&) = 0;
-
-    virtual void paintScrollbarTrack(
-        WebCanvas*, int part, int state, int classicState,
-        const WebRect&, const WebRect& alignRect) = 0;
-
-    virtual void paintSpinButton(
-        WebCanvas*, int part, int state, int classicState,
-        const WebRect&) {}
-
-    virtual void paintTextField(
-        WebCanvas*, int part, int state, int classicState,
-        const WebRect&, WebColor, bool fillContentArea, bool drawEdges) = 0;
-
-    virtual void paintTrackbar(
-        WebCanvas*, int part, int state, int classicState,
-        const WebRect&) = 0;
-
-    virtual void paintProgressBar(
-        WebCanvas*, const WebRect& barRect, const WebRect& valueRect,
-        bool determinate, double animatedSeconds) {}
-
-#endif
-};
-
-} // namespace WebKit
-
-#endif
diff --git a/WebKit/chromium/src/ChromiumBridge.cpp b/WebKit/chromium/src/ChromiumBridge.cpp
index 5998cf5..03af7c5 100644
--- a/WebKit/chromium/src/ChromiumBridge.cpp
+++ b/WebKit/chromium/src/ChromiumBridge.cpp
@@ -67,6 +67,7 @@
 #endif
 
 #if OS(LINUX) || OS(FREEBSD)
+#include "linux/WebThemeEngine.h"
 #include "WebFontInfo.h"
 #include "WebFontRenderStyle.h"
 #endif
@@ -739,6 +740,60 @@ void ChromiumBridge::paintProgressBar(
         gc->platformContext()->canvas(), barRect, valueRect, determinate, animatedSeconds);
 }
 
+#elif OS(LINUX)
+
+static WebThemeEngine::Part WebThemePart(ChromiumBridge::ThemePart part)
+{
+    switch (part) {
+    case ChromiumBridge::PartScrollbarDownArrow: return WebThemeEngine::PartScrollbarDownArrow;
+    case ChromiumBridge::PartScrollbarLeftArrow: return WebThemeEngine::PartScrollbarLeftArrow;
+    case ChromiumBridge::PartScrollbarRightArrow: return WebThemeEngine::PartScrollbarRightArrow;
+    case ChromiumBridge::PartScrollbarUpArrow: return WebThemeEngine::PartScrollbarUpArrow;
+    case ChromiumBridge::PartScrollbarHorizontalThumb: return WebThemeEngine::PartScrollbarHorizontalThumb;
+    case ChromiumBridge::PartScrollbarVerticalThumb: return WebThemeEngine::PartScrollbarVerticalThumb;
+    case ChromiumBridge::PartScrollbarHoriztonalTrack: return WebThemeEngine::PartScrollbarHoriztonalTrack;
+    case ChromiumBridge::PartScrollbarVerticalTrack: return WebThemeEngine::PartScrollbarVerticalTrack;
+    }
+    ASSERT_NOT_REACHED();
+    return WebThemeEngine::PartScrollbarDownArrow;
+}
+
+static WebThemeEngine::State WebThemeState(ChromiumBridge::ThemePaintState state)
+{
+    switch (state) {
+    case ChromiumBridge::StateDisabled: return WebThemeEngine::StateDisabled;
+    case ChromiumBridge::StateHover: return WebThemeEngine::StateHover;
+    case ChromiumBridge::StateNormal: return WebThemeEngine::StateNormal;
+    case ChromiumBridge::StatePressed: return WebThemeEngine::StatePressed;
+    }
+    ASSERT_NOT_REACHED();
+    return WebThemeEngine::StateDisabled;
+}
+
+static void GetWebThemeExtraParams(ChromiumBridge::ThemePart part, ChromiumBridge::ThemePaintState state, const ChromiumBridge::ThemePaintExtraParams* extraParams, WebThemeEngine::ExtraParams* webThemeExtraParams)
+{
+    if (part == ChromiumBridge::PartScrollbarHoriztonalTrack || part == ChromiumBridge::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;
+    }
+}
+
+IntSize ChromiumBridge::getThemePartSize(ThemePart part)
+{
+     return webKitClient()->themeEngine()->getSize(WebThemePart(part));
+}
+
+void ChromiumBridge::paintThemePart(
+    GraphicsContext* gc, ThemePart part, ThemePaintState state, const IntRect& rect, const ThemePaintExtraParams* extraParams)
+{
+    WebThemeEngine::ExtraParams webThemeExtraParams;
+    GetWebThemeExtraParams(part, state, extraParams, &webThemeExtraParams);
+    webKitClient()->themeEngine()->paint(
+        gc->platformContext()->canvas(), WebThemePart(part), WebThemeState(state), rect, &webThemeExtraParams);
+}
+
 #endif
 
 // Trace Event ----------------------------------------------------------------

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list