Index: webkit/tools/test_shell/test_shell_webthemeengine.cc |
diff --git a/webkit/tools/test_shell/test_shell_webthemeengine.cc b/webkit/tools/test_shell/test_shell_webthemeengine.cc |
deleted file mode 100644 |
index c5ecdf026244f7948ea5a7985de31fbfc9b6f793..0000000000000000000000000000000000000000 |
--- a/webkit/tools/test_shell/test_shell_webthemeengine.cc |
+++ /dev/null |
@@ -1,576 +0,0 @@ |
-// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-// This file implements a simple generic version of the WebKitThemeEngine, |
-// Since WebThemeEngine is unfortunately defined in terms of the Windows |
-// Theme parameters and values, we need to translate all the values into |
-// generic equivalents that we can more easily understand. This file does |
-// that translation (acting as a Facade design pattern) and then uses |
-// TestShellWebTheme::Control for the actual rendering of the widgets. |
-// |
- |
-#include "webkit/tools/test_shell/test_shell_webthemeengine.h" |
- |
-// Although all this code is generic, we include these headers |
-// to pull in the Windows #defines for the parts and states of |
-// the controls. |
-#include <vsstyle.h> |
-#include <windows.h> |
- |
-#include "base/logging.h" |
-#include "third_party/WebKit/Source/Platform/chromium/public/WebCanvas.h" |
-#include "third_party/WebKit/Source/Platform/chromium/public/WebRect.h" |
-#include "third_party/skia/include/core/SkRect.h" |
-#include "webkit/tools/test_shell/test_shell_webthemecontrol.h" |
- |
-// We define this for clarity, although there really should be a DFCS_NORMAL |
-// in winuser.h. |
-namespace { |
- const int kDFCSNormal = 0x0000; |
-} |
- |
-using WebKit::WebCanvas; |
-using WebKit::WebColor; |
-using WebKit::WebRect; |
- |
-namespace TestShellWebTheme { |
- |
-SkIRect webRectToSkIRect(const WebRect& web_rect) { |
- SkIRect irect; |
- irect.set(web_rect.x, web_rect.y, web_rect.x + web_rect.width, |
- web_rect.y + web_rect.height); |
- return irect; |
-} |
- |
-void drawControl(WebCanvas* canvas, const WebRect& rect, Control::Type ctype, |
- Control::State cstate) { |
- Control control(canvas, webRectToSkIRect(rect), ctype, cstate); |
- control.draw(); |
-} |
- |
-void drawTextField(WebCanvas* canvas, const WebRect& rect, |
- Control::Type ctype, Control::State cstate, |
- bool draw_edges, bool fill_content_area, WebColor color) { |
- Control control(canvas, webRectToSkIRect(rect), ctype, cstate); |
- control.drawTextField(draw_edges, fill_content_area, color); |
-} |
- |
-void drawProgressBar(WebCanvas* canvas, |
- Control::Type ctype, Control::State cstate, |
- const WebRect& bar_rect, const WebRect& fill_rect) { |
- Control control(canvas, webRectToSkIRect(bar_rect), ctype, cstate); |
- control.drawProgressBar(webRectToSkIRect(fill_rect)); |
-} |
- |
-void Engine::paintButton(WebCanvas* canvas, int part, int state, |
- int classic_state, const WebRect& rect) { |
- Control::Type ctype = Control::kUnknown_Type; |
- Control::State cstate = Control::kUnknown_State; |
- |
- if (part == BP_CHECKBOX) { |
- switch (state) { |
- case CBS_UNCHECKEDNORMAL: |
- CHECK_EQ(classic_state, kDFCSNormal); |
- ctype = Control::kUncheckedBox_Type; |
- cstate = Control::kNormal_State; |
- break; |
- case CBS_UNCHECKEDHOT: |
- CHECK_EQ(classic_state, DFCS_BUTTONCHECK | DFCS_HOT); |
- ctype = Control::kUncheckedBox_Type; |
- cstate = Control::kHot_State; |
- break; |
- case CBS_UNCHECKEDPRESSED: |
- CHECK_EQ(classic_state, DFCS_BUTTONCHECK | DFCS_PUSHED); |
- ctype = Control::kUncheckedBox_Type; |
- cstate = Control::kPressed_State; |
- break; |
- case CBS_UNCHECKEDDISABLED: |
- CHECK_EQ(classic_state, DFCS_BUTTONCHECK | DFCS_INACTIVE); |
- ctype = Control::kUncheckedBox_Type; |
- cstate = Control::kDisabled_State; |
- break; |
- case CBS_CHECKEDNORMAL: |
- CHECK_EQ(classic_state, DFCS_BUTTONCHECK | DFCS_CHECKED); |
- ctype = Control::kCheckedBox_Type; |
- cstate = Control::kNormal_State; |
- break; |
- case CBS_CHECKEDHOT: |
- CHECK_EQ(classic_state, DFCS_BUTTONCHECK | DFCS_CHECKED | DFCS_HOT); |
- ctype = Control::kCheckedBox_Type; |
- cstate = Control::kHot_State; |
- break; |
- case CBS_CHECKEDPRESSED: |
- CHECK_EQ(classic_state, DFCS_BUTTONCHECK | DFCS_CHECKED | DFCS_PUSHED); |
- ctype = Control::kCheckedBox_Type; |
- cstate = Control::kPressed_State; |
- break; |
- case CBS_CHECKEDDISABLED: |
- CHECK_EQ(classic_state, |
- DFCS_BUTTONCHECK | DFCS_CHECKED | DFCS_INACTIVE); |
- ctype = Control::kCheckedBox_Type; |
- cstate = Control::kDisabled_State; |
- break; |
- case CBS_MIXEDNORMAL: |
- // Classic theme can't represent mixed state checkbox. We assume |
- // it's equivalent to unchecked. |
- CHECK_EQ(classic_state, DFCS_BUTTONCHECK); |
- ctype = Control::kIndeterminateCheckBox_Type; |
- cstate = Control::kNormal_State; |
- break; |
- case CBS_MIXEDHOT: |
- CHECK_EQ(classic_state, DFCS_BUTTONCHECK | DFCS_HOT); |
- ctype = Control::kIndeterminateCheckBox_Type; |
- cstate = Control::kHot_State; |
- break; |
- case CBS_MIXEDPRESSED: |
- CHECK_EQ(classic_state, DFCS_BUTTONCHECK | DFCS_PUSHED); |
- ctype = Control::kIndeterminateCheckBox_Type; |
- cstate = Control::kPressed_State; |
- break; |
- case CBS_MIXEDDISABLED: |
- CHECK_EQ(classic_state, DFCS_BUTTONCHECK | DFCS_INACTIVE); |
- ctype = Control::kIndeterminateCheckBox_Type; |
- cstate = Control::kDisabled_State; |
- break; |
- default: |
- NOTREACHED(); |
- break; |
- } |
- } else if (BP_RADIOBUTTON == part) { |
- switch (state) { |
- case RBS_UNCHECKEDNORMAL: |
- CHECK_EQ(classic_state, DFCS_BUTTONRADIO); |
- ctype = Control::kUncheckedRadio_Type; |
- cstate = Control::kNormal_State; |
- break; |
- case RBS_UNCHECKEDHOT: |
- CHECK_EQ(classic_state, DFCS_BUTTONRADIO | DFCS_HOT); |
- ctype = Control::kUncheckedRadio_Type; |
- cstate = Control::kHot_State; |
- break; |
- case RBS_UNCHECKEDPRESSED: |
- CHECK_EQ(classic_state, DFCS_BUTTONRADIO | DFCS_PUSHED); |
- ctype = Control::kUncheckedRadio_Type; |
- cstate = Control::kPressed_State; |
- break; |
- case RBS_UNCHECKEDDISABLED: |
- CHECK_EQ(classic_state, DFCS_BUTTONRADIO | DFCS_INACTIVE); |
- ctype = Control::kUncheckedRadio_Type; |
- cstate = Control::kDisabled_State; |
- break; |
- case RBS_CHECKEDNORMAL: |
- CHECK_EQ(classic_state, DFCS_BUTTONRADIO | DFCS_CHECKED); |
- ctype = Control::kCheckedRadio_Type; |
- cstate = Control::kNormal_State; |
- break; |
- case RBS_CHECKEDHOT: |
- CHECK_EQ(classic_state, DFCS_BUTTONRADIO | DFCS_CHECKED | DFCS_HOT); |
- ctype = Control::kCheckedRadio_Type; |
- cstate = Control::kHot_State; |
- break; |
- case RBS_CHECKEDPRESSED: |
- CHECK_EQ(classic_state, DFCS_BUTTONRADIO | DFCS_CHECKED | DFCS_PUSHED); |
- ctype = Control::kCheckedRadio_Type; |
- cstate = Control::kPressed_State; |
- break; |
- case RBS_CHECKEDDISABLED: |
- CHECK_EQ(classic_state, |
- DFCS_BUTTONRADIO | DFCS_CHECKED | DFCS_INACTIVE); |
- ctype = Control::kCheckedRadio_Type; |
- cstate = Control::kDisabled_State; |
- break; |
- default: |
- NOTREACHED(); |
- break; |
- } |
- } else if (BP_PUSHBUTTON == part) { |
- switch (state) { |
- case PBS_NORMAL: |
- CHECK_EQ(classic_state, DFCS_BUTTONPUSH); |
- ctype = Control::kPushButton_Type; |
- cstate = Control::kNormal_State; |
- break; |
- case PBS_HOT: |
- CHECK_EQ(classic_state, DFCS_BUTTONPUSH | DFCS_HOT); |
- ctype = Control::kPushButton_Type; |
- cstate = Control::kHot_State; |
- break; |
- case PBS_PRESSED: |
- CHECK_EQ(classic_state, DFCS_BUTTONPUSH | DFCS_PUSHED); |
- ctype = Control::kPushButton_Type; |
- cstate = Control::kPressed_State; |
- break; |
- case PBS_DISABLED: |
- CHECK_EQ(classic_state, DFCS_BUTTONPUSH | DFCS_INACTIVE); |
- ctype = Control::kPushButton_Type; |
- cstate = Control::kDisabled_State; |
- break; |
- case PBS_DEFAULTED: |
- CHECK_EQ(classic_state, DFCS_BUTTONPUSH); |
- ctype = Control::kPushButton_Type; |
- cstate = Control::kFocused_State; |
- break; |
- default: |
- NOTREACHED(); |
- break; |
- } |
- } else { |
- NOTREACHED(); |
- } |
- |
- drawControl(canvas, rect, ctype, cstate); |
-} |
- |
- |
-void Engine::paintMenuList(WebCanvas* canvas, int part, int state, |
- int classic_state, const WebRect& rect) { |
- Control::Type ctype = Control::kUnknown_Type; |
- Control::State cstate = Control::kUnknown_State; |
- |
- if (CP_DROPDOWNBUTTON == part) { |
- ctype = Control::kDropDownButton_Type; |
- switch (state) { |
- case CBXS_NORMAL: |
- CHECK_EQ(classic_state, DFCS_MENUARROW); |
- cstate = Control::kNormal_State; |
- break; |
- case CBXS_HOT: |
- CHECK_EQ(classic_state, DFCS_MENUARROW | DFCS_HOT); |
- cstate = Control::kHover_State; |
- break; |
- case CBXS_PRESSED: |
- CHECK_EQ(classic_state, DFCS_MENUARROW | DFCS_PUSHED); |
- cstate = Control::kPressed_State; |
- break; |
- case CBXS_DISABLED: |
- CHECK_EQ(classic_state, DFCS_MENUARROW | DFCS_INACTIVE); |
- cstate = Control::kDisabled_State; |
- break; |
- default: |
- CHECK(false); |
- break; |
- } |
- } else { |
- CHECK(false); |
- } |
- |
- drawControl(canvas, rect, ctype, cstate); |
-} |
- |
-void Engine::paintScrollbarArrow(WebCanvas* canvas, int state, |
- int classic_state, const WebRect& rect) { |
- Control::Type ctype = Control::kUnknown_Type; |
- Control::State cstate = Control::kUnknown_State; |
- |
- switch (state) { |
- case ABS_UPNORMAL: |
- CHECK_EQ(classic_state, DFCS_SCROLLUP); |
- ctype = Control::kUpArrow_Type; |
- cstate = Control::kNormal_State; |
- break; |
- case ABS_DOWNNORMAL: |
- CHECK_EQ(classic_state, DFCS_SCROLLDOWN); |
- ctype = Control::kDownArrow_Type; |
- cstate = Control::kNormal_State; |
- break; |
- case ABS_LEFTNORMAL: |
- CHECK_EQ(classic_state, DFCS_SCROLLLEFT); |
- ctype = Control::kLeftArrow_Type; |
- cstate = Control::kNormal_State; |
- break; |
- case ABS_RIGHTNORMAL: |
- CHECK_EQ(classic_state, DFCS_SCROLLRIGHT); |
- ctype = Control::kRightArrow_Type; |
- cstate = Control::kNormal_State; |
- break; |
- case ABS_UPHOT: |
- CHECK_EQ(classic_state, DFCS_SCROLLUP | DFCS_HOT); |
- ctype = Control::kUpArrow_Type; |
- cstate = Control::kHot_State; |
- break; |
- case ABS_DOWNHOT: |
- CHECK_EQ(classic_state, DFCS_SCROLLDOWN | DFCS_HOT); |
- ctype = Control::kDownArrow_Type; |
- cstate = Control::kHot_State; |
- break; |
- case ABS_LEFTHOT: |
- CHECK_EQ(classic_state, DFCS_SCROLLLEFT | DFCS_HOT); |
- ctype = Control::kLeftArrow_Type; |
- cstate = Control::kHot_State; |
- break; |
- case ABS_RIGHTHOT: |
- CHECK_EQ(classic_state, DFCS_SCROLLRIGHT | DFCS_HOT); |
- ctype = Control::kRightArrow_Type; |
- cstate = Control::kHot_State; |
- break; |
- case ABS_UPHOVER: |
- CHECK_EQ(classic_state, DFCS_SCROLLUP); |
- ctype = Control::kUpArrow_Type; |
- cstate = Control::kHover_State; |
- break; |
- case ABS_DOWNHOVER: |
- CHECK_EQ(classic_state, DFCS_SCROLLDOWN); |
- ctype = Control::kDownArrow_Type; |
- cstate = Control::kHover_State; |
- break; |
- case ABS_LEFTHOVER: |
- CHECK_EQ(classic_state, DFCS_SCROLLLEFT); |
- ctype = Control::kLeftArrow_Type; |
- cstate = Control::kHover_State; |
- break; |
- case ABS_RIGHTHOVER: |
- CHECK_EQ(classic_state, DFCS_SCROLLRIGHT); |
- ctype = Control::kRightArrow_Type; |
- cstate = Control::kHover_State; |
- break; |
- case ABS_UPPRESSED: |
- CHECK_EQ(classic_state, DFCS_SCROLLUP | DFCS_PUSHED | DFCS_FLAT); |
- ctype = Control::kUpArrow_Type; |
- cstate = Control::kPressed_State; |
- break; |
- case ABS_DOWNPRESSED: |
- CHECK_EQ(classic_state, DFCS_SCROLLDOWN | DFCS_PUSHED | DFCS_FLAT); |
- ctype = Control::kDownArrow_Type; |
- cstate = Control::kPressed_State; |
- break; |
- case ABS_LEFTPRESSED: |
- CHECK_EQ(classic_state, DFCS_SCROLLLEFT | DFCS_PUSHED | DFCS_FLAT); |
- ctype = Control::kLeftArrow_Type; |
- cstate = Control::kPressed_State; |
- break; |
- case ABS_RIGHTPRESSED: |
- CHECK_EQ(classic_state, DFCS_SCROLLRIGHT | DFCS_PUSHED | DFCS_FLAT); |
- ctype = Control::kRightArrow_Type; |
- cstate = Control::kPressed_State; |
- break; |
- case ABS_UPDISABLED: |
- CHECK_EQ(classic_state, DFCS_SCROLLUP | DFCS_INACTIVE); |
- ctype = Control::kUpArrow_Type; |
- cstate = Control::kDisabled_State; |
- break; |
- case ABS_DOWNDISABLED: |
- CHECK_EQ(classic_state, DFCS_SCROLLDOWN | DFCS_INACTIVE); |
- ctype = Control::kDownArrow_Type; |
- cstate = Control::kDisabled_State; |
- break; |
- case ABS_LEFTDISABLED: |
- CHECK_EQ(classic_state, DFCS_SCROLLLEFT | DFCS_INACTIVE); |
- ctype = Control::kLeftArrow_Type; |
- cstate = Control::kDisabled_State; |
- break; |
- case ABS_RIGHTDISABLED: |
- CHECK_EQ(classic_state, DFCS_SCROLLRIGHT | DFCS_INACTIVE); |
- ctype = Control::kRightArrow_Type; |
- cstate = Control::kDisabled_State; |
- break; |
- default: |
- NOTREACHED(); |
- break; |
- } |
- |
- drawControl(canvas, rect, ctype, cstate); |
-} |
- |
-void Engine::paintScrollbarThumb(WebCanvas* canvas, int part, int state, |
- int classic_state, const WebRect& rect) { |
- Control::Type ctype = Control::kUnknown_Type; |
- Control::State cstate = Control::kUnknown_State; |
- |
- switch (part) { |
- case SBP_THUMBBTNHORZ: |
- ctype = Control::kHorizontalScrollThumb_Type; |
- break; |
- case SBP_THUMBBTNVERT: |
- ctype = Control::kVerticalScrollThumb_Type; |
- break; |
- case SBP_GRIPPERHORZ: |
- ctype = Control::kHorizontalScrollGrip_Type; |
- break; |
- case SBP_GRIPPERVERT: |
- ctype = Control::kVerticalScrollGrip_Type; |
- break; |
- default: |
- NOTREACHED(); |
- break; |
- } |
- |
- switch (state) { |
- case SCRBS_NORMAL: |
- CHECK_EQ(classic_state, kDFCSNormal); |
- cstate = Control::kNormal_State; |
- break; |
- case SCRBS_HOT: |
- CHECK_EQ(classic_state, DFCS_HOT); |
- cstate = Control::kHot_State; |
- break; |
- case SCRBS_HOVER: |
- CHECK_EQ(classic_state, kDFCSNormal); |
- cstate = Control::kHover_State; |
- break; |
- case SCRBS_PRESSED: |
- CHECK_EQ(classic_state, kDFCSNormal); |
- cstate = Control::kPressed_State; |
- break; |
- case SCRBS_DISABLED: |
- NOTREACHED(); // This should never happen in practice. |
- break; |
- default: |
- NOTREACHED(); |
- break; |
- } |
- |
- drawControl(canvas, rect, ctype, cstate); |
-} |
- |
-void Engine::paintScrollbarTrack(WebCanvas* canvas, int part, int state, |
- int classic_state, const WebRect& rect, |
- const WebRect& align_rect) { |
- Control::Type ctype = Control::kUnknown_Type; |
- Control::State cstate = Control::kUnknown_State; |
- |
- switch (part) { |
- case SBP_UPPERTRACKHORZ: |
- ctype = Control::kHorizontalScrollTrackBack_Type; |
- break; |
- case SBP_LOWERTRACKHORZ: |
- ctype = Control::kHorizontalScrollTrackForward_Type; |
- break; |
- case SBP_UPPERTRACKVERT: |
- ctype = Control::kVerticalScrollTrackBack_Type; |
- break; |
- case SBP_LOWERTRACKVERT: |
- ctype = Control::kVerticalScrollTrackForward_Type; |
- break; |
- default: |
- NOTREACHED(); |
- break; |
- } |
- |
- switch (state) { |
- case SCRBS_NORMAL: |
- CHECK_EQ(classic_state, kDFCSNormal); |
- cstate = Control::kNormal_State; |
- break; |
- case SCRBS_HOT: |
- NOTREACHED(); // This should never happen in practice. |
- break; |
- case SCRBS_HOVER: |
- CHECK_EQ(classic_state, kDFCSNormal); |
- cstate = Control::kHover_State; |
- break; |
- case SCRBS_PRESSED: |
- NOTREACHED(); // This should never happen in practice. |
- break; |
- case SCRBS_DISABLED: |
- CHECK_EQ(classic_state, DFCS_INACTIVE); |
- cstate = Control::kDisabled_State; |
- break; |
- default: |
- CHECK(false); |
- break; |
- } |
- |
- drawControl(canvas, rect, ctype, cstate); |
-} |
- |
-void Engine::paintTextField(WebCanvas* canvas, int part, int state, |
- int classic_state, const WebRect& rect, |
- WebColor color, bool fill_content_area, |
- bool draw_edges) { |
- Control::Type ctype = Control::kUnknown_Type; |
- Control::State cstate = Control::kUnknown_State; |
- |
- CHECK_EQ(EP_EDITTEXT, part); |
- ctype = Control::kTextField_Type; |
- |
- switch (state) { |
- case ETS_NORMAL: |
- CHECK_EQ(classic_state, kDFCSNormal); |
- cstate = Control::kNormal_State; |
- break; |
- case ETS_HOT: |
- CHECK_EQ(classic_state, DFCS_HOT); |
- cstate = Control::kHot_State; |
- break; |
- case ETS_DISABLED: |
- CHECK_EQ(classic_state, DFCS_INACTIVE); |
- cstate = Control::kDisabled_State; |
- break; |
- case ETS_SELECTED: |
- CHECK_EQ(classic_state, DFCS_PUSHED); |
- cstate = Control::kPressed_State; |
- break; |
- case ETS_FOCUSED: |
- CHECK_EQ(classic_state, kDFCSNormal); |
- cstate = Control::kFocused_State; |
- break; |
- case ETS_READONLY: |
- CHECK_EQ(classic_state, kDFCSNormal); |
- cstate = Control::kReadOnly_State; |
- break; |
- default: |
- NOTREACHED(); |
- break; |
- } |
- |
- drawTextField(canvas, rect, ctype, cstate, draw_edges, fill_content_area, |
- color); |
-} |
- |
-void Engine::paintTrackbar(WebCanvas* canvas, int part, int state, |
- int classic_state, const WebRect& rect) { |
- Control::Type ctype = Control::kUnknown_Type; |
- Control::State cstate = Control::kUnknown_State; |
- |
- if (TKP_THUMBBOTTOM == part) { |
- ctype = Control::kHorizontalSliderThumb_Type; |
- switch (state) { |
- case TUS_NORMAL: |
- CHECK_EQ(classic_state, kDFCSNormal); |
- cstate = Control::kNormal_State; |
- break; |
- case TUS_HOT: |
- CHECK_EQ(classic_state, DFCS_HOT); |
- cstate = Control::kHot_State; |
- break; |
- case TUS_DISABLED: |
- CHECK_EQ(classic_state, DFCS_INACTIVE); |
- cstate = Control::kDisabled_State; |
- break; |
- case TUS_PRESSED: |
- CHECK_EQ(classic_state, DFCS_PUSHED); |
- cstate = Control::kPressed_State; |
- break; |
- default: |
- NOTREACHED(); |
- break; |
- } |
- } else if (TKP_TRACK == part) { |
- ctype = Control::kHorizontalSliderTrack_Type; |
- CHECK_EQ(part, TUS_NORMAL); |
- CHECK_EQ(classic_state, kDFCSNormal); |
- cstate = Control::kNormal_State; |
- } else { |
- NOTREACHED(); |
- } |
- |
- drawControl(canvas, rect, ctype, cstate); |
-} |
- |
- |
-void Engine::paintProgressBar(WebKit::WebCanvas* canvas, |
- const WebKit::WebRect& barRect, |
- const WebKit::WebRect& valueRect, |
- bool determinate, double) { |
- Control::Type ctype = Control::kProgressBar_Type; |
- Control::State cstate = |
- determinate ? Control::kNormal_State : Control::kIndeterminate_State; |
- drawProgressBar(canvas, ctype, cstate, barRect, valueRect); |
-} |
- |
-WebKit::WebSize Engine::getSize(int part) { |
- return WebKit::WebSize(); |
-} |
- |
-} // namespace TestShellWebTheme |