Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(495)

Side by Side Diff: sky/viewer/platform/webthemeengine_impl.cc

Issue 753443002: Remove WebThemeEngine (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « sky/viewer/platform/webthemeengine_impl.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "sky/viewer/platform/webthemeengine_impl.h"
6
7 #include "skia/ext/platform_canvas.h"
8 #include "sky/engine/public/platform/WebRect.h"
9 #include "sky/engine/public/platform/WebSize.h"
10 #include "ui/native_theme/native_theme.h"
11
12 using blink::WebCanvas;
13 using blink::WebColor;
14 using blink::WebRect;
15 using blink::WebThemeEngine;
16
17 namespace sky {
18
19 #if !defined(OS_ANDROID)
20 static ui::NativeTheme::Part NativeThemePart(
21 WebThemeEngine::Part part) {
22 switch (part) {
23 case WebThemeEngine::PartScrollbarDownArrow:
24 return ui::NativeTheme::kScrollbarDownArrow;
25 case WebThemeEngine::PartScrollbarLeftArrow:
26 return ui::NativeTheme::kScrollbarLeftArrow;
27 case WebThemeEngine::PartScrollbarRightArrow:
28 return ui::NativeTheme::kScrollbarRightArrow;
29 case WebThemeEngine::PartScrollbarUpArrow:
30 return ui::NativeTheme::kScrollbarUpArrow;
31 case WebThemeEngine::PartScrollbarHorizontalThumb:
32 return ui::NativeTheme::kScrollbarHorizontalThumb;
33 case WebThemeEngine::PartScrollbarVerticalThumb:
34 return ui::NativeTheme::kScrollbarVerticalThumb;
35 case WebThemeEngine::PartScrollbarHorizontalTrack:
36 return ui::NativeTheme::kScrollbarHorizontalTrack;
37 case WebThemeEngine::PartScrollbarVerticalTrack:
38 return ui::NativeTheme::kScrollbarVerticalTrack;
39 case WebThemeEngine::PartCheckbox:
40 return ui::NativeTheme::kCheckbox;
41 case WebThemeEngine::PartRadio:
42 return ui::NativeTheme::kRadio;
43 case WebThemeEngine::PartButton:
44 return ui::NativeTheme::kPushButton;
45 case WebThemeEngine::PartMenuList:
46 return ui::NativeTheme::kMenuList;
47 case WebThemeEngine::PartSliderTrack:
48 return ui::NativeTheme::kSliderTrack;
49 case WebThemeEngine::PartSliderThumb:
50 return ui::NativeTheme::kSliderThumb;
51 case WebThemeEngine::PartInnerSpinButton:
52 return ui::NativeTheme::kInnerSpinButton;
53 case WebThemeEngine::PartProgressBar:
54 return ui::NativeTheme::kProgressBar;
55 default:
56 return ui::NativeTheme::kScrollbarDownArrow;
57 }
58 }
59
60 static ui::NativeTheme::State NativeThemeState(
61 WebThemeEngine::State state) {
62 switch (state) {
63 case WebThemeEngine::StateDisabled:
64 return ui::NativeTheme::kDisabled;
65 case WebThemeEngine::StateHover:
66 return ui::NativeTheme::kHovered;
67 case WebThemeEngine::StateNormal:
68 return ui::NativeTheme::kNormal;
69 case WebThemeEngine::StatePressed:
70 return ui::NativeTheme::kPressed;
71 default:
72 return ui::NativeTheme::kDisabled;
73 }
74 }
75 #endif
76
77 static void GetNativeThemeExtraParams(
78 WebThemeEngine::Part part,
79 WebThemeEngine::State state,
80 const WebThemeEngine::ExtraParams* extra_params,
81 ui::NativeTheme::ExtraParams* native_theme_extra_params) {
82 switch (part) {
83 case WebThemeEngine::PartScrollbarHorizontalTrack:
84 case WebThemeEngine::PartScrollbarVerticalTrack:
85 native_theme_extra_params->scrollbar_track.track_x =
86 extra_params->scrollbarTrack.trackX;
87 native_theme_extra_params->scrollbar_track.track_y =
88 extra_params->scrollbarTrack.trackY;
89 native_theme_extra_params->scrollbar_track.track_width =
90 extra_params->scrollbarTrack.trackWidth;
91 native_theme_extra_params->scrollbar_track.track_height =
92 extra_params->scrollbarTrack.trackHeight;
93 break;
94 case WebThemeEngine::PartCheckbox:
95 native_theme_extra_params->button.checked = extra_params->button.checked;
96 native_theme_extra_params->button.indeterminate =
97 extra_params->button.indeterminate;
98 break;
99 case WebThemeEngine::PartRadio:
100 native_theme_extra_params->button.checked = extra_params->button.checked;
101 break;
102 case WebThemeEngine::PartButton:
103 native_theme_extra_params->button.is_default =
104 extra_params->button.isDefault;
105 native_theme_extra_params->button.has_border =
106 extra_params->button.hasBorder;
107 // Native buttons have a different focus style.
108 native_theme_extra_params->button.is_focused = false;
109 native_theme_extra_params->button.background_color =
110 extra_params->button.backgroundColor;
111 break;
112 case WebThemeEngine::PartMenuList:
113 native_theme_extra_params->menu_list.has_border =
114 extra_params->menuList.hasBorder;
115 native_theme_extra_params->menu_list.has_border_radius =
116 extra_params->menuList.hasBorderRadius;
117 native_theme_extra_params->menu_list.arrow_x =
118 extra_params->menuList.arrowX;
119 native_theme_extra_params->menu_list.arrow_y =
120 extra_params->menuList.arrowY;
121 native_theme_extra_params->menu_list.background_color =
122 extra_params->menuList.backgroundColor;
123 break;
124 case WebThemeEngine::PartSliderTrack:
125 case WebThemeEngine::PartSliderThumb:
126 native_theme_extra_params->slider.vertical =
127 extra_params->slider.vertical;
128 native_theme_extra_params->slider.in_drag = extra_params->slider.inDrag;
129 break;
130 case WebThemeEngine::PartInnerSpinButton:
131 native_theme_extra_params->inner_spin.spin_up =
132 extra_params->innerSpin.spinUp;
133 native_theme_extra_params->inner_spin.read_only =
134 extra_params->innerSpin.readOnly;
135 break;
136 case WebThemeEngine::PartProgressBar:
137 native_theme_extra_params->progress_bar.determinate =
138 extra_params->progressBar.determinate;
139 native_theme_extra_params->progress_bar.value_rect_x =
140 extra_params->progressBar.valueRectX;
141 native_theme_extra_params->progress_bar.value_rect_y =
142 extra_params->progressBar.valueRectY;
143 native_theme_extra_params->progress_bar.value_rect_width =
144 extra_params->progressBar.valueRectWidth;
145 native_theme_extra_params->progress_bar.value_rect_height =
146 extra_params->progressBar.valueRectHeight;
147 break;
148 default:
149 break; // Parts that have no extra params get here.
150 }
151 }
152
153 blink::WebSize WebThemeEngineImpl::getSize(WebThemeEngine::Part part) {
154 #if defined(OS_ANDROID)
155 return blink::WebSize();
156 #else
157 ui::NativeTheme::ExtraParams extra;
158 return ui::NativeTheme::instance()->GetPartSize(NativeThemePart(part),
159 ui::NativeTheme::kNormal,
160 extra);
161 #endif
162 }
163
164 void WebThemeEngineImpl::paint(
165 blink::WebCanvas* canvas,
166 WebThemeEngine::Part part,
167 WebThemeEngine::State state,
168 const blink::WebRect& rect,
169 const WebThemeEngine::ExtraParams* extra_params) {
170 ui::NativeTheme::ExtraParams native_theme_extra_params;
171 GetNativeThemeExtraParams(
172 part, state, extra_params, &native_theme_extra_params);
173 #if !defined(OS_ANDROID)
174 ui::NativeTheme::instance()->Paint(
175 canvas,
176 NativeThemePart(part),
177 NativeThemeState(state),
178 gfx::Rect(rect),
179 native_theme_extra_params);
180 #endif
181 }
182
183 void WebThemeEngineImpl::paintStateTransition(blink::WebCanvas* canvas,
184 WebThemeEngine::Part part,
185 WebThemeEngine::State startState,
186 WebThemeEngine::State endState,
187 double progress,
188 const blink::WebRect& rect) {
189 #if !defined(OS_ANDROID)
190 ui::NativeTheme::instance()->PaintStateTransition(
191 canvas,
192 NativeThemePart(part),
193 NativeThemeState(startState),
194 NativeThemeState(endState),
195 progress,
196 gfx::Rect(rect));
197 #endif
198 }
199
200 } // namespace sky
OLDNEW
« no previous file with comments | « sky/viewer/platform/webthemeengine_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698