WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-96516-20120926174755.patch (text/plain), 33.89 KB, created by
Mark Pilgrim (Google)
on 2012-09-26 14:48:43 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Mark Pilgrim (Google)
Created:
2012-09-26 14:48:43 PDT
Size:
33.89 KB
patch
obsolete
>Index: Source/WebCore/ChangeLog >=================================================================== >--- Source/WebCore/ChangeLog (revision 129709) >+++ Source/WebCore/ChangeLog (working copy) >@@ -1,3 +1,46 @@ >+2012-09-26 Mark Pilgrim <pilgrim@chromium.org> >+ >+ [Chromium] Move UNIX-specific theme functions out of PlatformSupport >+ https://bugs.webkit.org/show_bug.cgi?id=96516 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ 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-26 Simon Fraser <simon.fraser@apple.com> > > Rename Page::frameCount() to subframeCount(), and related >Index: Source/WebCore/WebCore.gyp/WebCore.gyp >=================================================================== >--- Source/WebCore/WebCore.gyp/WebCore.gyp (revision 129708) >+++ Source/WebCore/WebCore.gyp/WebCore.gyp (working copy) >@@ -1950,6 +1950,9 @@ > 'dependencies': [ > 'webcore_prerequisites', > ], >+ 'defines': [ >+ 'WEBKIT_IMPLEMENTATION=1', >+ ], > 'sources': [ > '<@(webcore_privateheader_files)', > '<@(webcore_files)', >Index: Source/WebCore/platform/chromium/PlatformSupport.h >=================================================================== >--- Source/WebCore/platform/chromium/PlatformSupport.h (revision 129708) >+++ Source/WebCore/platform/chromium/PlatformSupport.h (working copy) >@@ -160,103 +160,6 @@ public: > }; > > 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 > }; > >Index: Source/WebCore/platform/chromium/ScrollbarThemeChromiumLinux.cpp >=================================================================== >--- Source/WebCore/platform/chromium/ScrollbarThemeChromiumLinux.cpp (revision 129708) >+++ Source/WebCore/platform/chromium/ScrollbarThemeChromiumLinux.cpp (working copy) >@@ -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,77 +49,84 @@ ScrollbarTheme* ScrollbarTheme::nativeTh > 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, >+ WebKit::Platform::current()->themeEngine()->paint( >+ canvas, >+ scrollbar->orientation() == HorizontalScrollbar ? WebKit::WebThemeEngine::PartScrollbarHorizontalTrack : WebKit::WebThemeEngine::PartScrollbarVerticalTrack, > state, >- rect, >+ 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 = WebKit::WebThemeEngine::StateNormal; >+ WebKit::Platform::current()->themeEngine()->paint( >+ canvas, >+ scrollbar->orientation() == HorizontalScrollbar ? WebKit::WebThemeEngine::PartScrollbarHorizontalThumb : WebKit::WebThemeEngine::PartScrollbarVerticalThumb, > state, >- rect, >+ WebKit::WebRect(rect), > 0); > } > >@@ -128,23 +138,23 @@ bool ScrollbarThemeChromiumLinux::should > 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(); > } > >Index: Source/WebCore/rendering/RenderThemeChromiumAndroid.cpp >=================================================================== >--- Source/WebCore/rendering/RenderThemeChromiumAndroid.cpp (revision 129708) >+++ Source/WebCore/rendering/RenderThemeChromiumAndroid.cpp (working copy) >@@ -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 @@ void RenderThemeChromiumAndroid::adjustI > 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 @@ int RenderThemeChromiumAndroid::menuList > { > // 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(); > } > >Index: Source/WebCore/rendering/RenderThemeChromiumLinux.cpp >=================================================================== >--- Source/WebCore/rendering/RenderThemeChromiumLinux.cpp (revision 129708) >+++ Source/WebCore/rendering/RenderThemeChromiumLinux.cpp (working copy) >@@ -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 @@ double RenderThemeChromiumLinux::m_caret > > static const unsigned defaultButtonBackgroundColor = 0xffdddddd; > >-static PlatformSupport::ThemePaintState getWebThemeState(const RenderTheme* theme, const RenderObject* o) >-{ >- if (!theme->isEnabled(o)) >- return PlatformSupport::StateDisabled; >- if (theme->isPressed(o)) >- return PlatformSupport::StatePressed; >+static WebKit::WebThemeEngine::State getWebThemeState(const RenderTheme* theme, const RenderObject* o) >+ { >+ if (!theme->isEnabled(o)) >+ return WebKit::WebThemeEngine::StateDisabled; >+ if (theme->isPressed(o)) >+ 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 @@ int RenderThemeChromiumLinux::sliderTick > > 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 @@ void RenderThemeChromiumLinux::setSelect > > 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 @@ void RenderThemeChromiumLinux::setCheckb > 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 @@ void RenderThemeChromiumLinux::setRadioS > 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 @@ bool RenderThemeChromiumLinux::paintText > > 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 @@ bool RenderThemeChromiumLinux::paintMenu > 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 @@ bool RenderThemeChromiumLinux::paintMenu > 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::paintSlid > > 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 @@ void RenderThemeChromiumLinux::adjustInn > > 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 @@ bool RenderThemeChromiumLinux::paintProg > 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 @@ bool RenderThemeChromiumLinux::paintProg > 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; > } > >Index: Source/WebKit/chromium/ChangeLog >=================================================================== >--- Source/WebKit/chromium/ChangeLog (revision 129709) >+++ Source/WebKit/chromium/ChangeLog (working copy) >@@ -1,3 +1,19 @@ >+2012-09-26 Mark Pilgrim <pilgrim@chromium.org> >+ >+ [Chromium] Move UNIX-specific theme functions out of PlatformSupport >+ https://bugs.webkit.org/show_bug.cgi?id=96516 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ 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-26 Sheriff Bot <webkit.review.bot@gmail.com> > > Unreviewed, rolling out r129673. >Index: Source/WebKit/chromium/src/PlatformSupport.cpp >=================================================================== >--- Source/WebKit/chromium/src/PlatformSupport.cpp (revision 129708) >+++ Source/WebKit/chromium/src/PlatformSupport.cpp (working copy) >@@ -347,114 +347,6 @@ void PlatformSupport::paintScrollbarThum > 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
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 96516
:
163627
|
164744
|
165848
|
165858
|
165883
|
166029