Index: content/child/webthemeengine_impl_default.cc |
diff --git a/content/child/webthemeengine_impl_default.cc b/content/child/webthemeengine_impl_default.cc |
index 4f78f1c9da21206899fe0e4d18a6d3d087657279..e510e5f93dac47c6eccb753002748434261d11f1 100644 |
--- a/content/child/webthemeengine_impl_default.cc |
+++ b/content/child/webthemeengine_impl_default.cc |
@@ -3,6 +3,7 @@ |
// found in the LICENSE file. |
#include "content/child/webthemeengine_impl_default.h" |
+#include "content/public/common/renderer_preferences.h" |
#include "skia/ext/platform_canvas.h" |
#include "third_party/WebKit/public/platform/WebRect.h" |
@@ -160,11 +161,39 @@ static void GetNativeThemeExtraParams( |
} |
} |
+int32 WebThemeEngineImpl::vertical_scroll_bar_width_ = 0; |
+int32 WebThemeEngineImpl::horizontal_scroll_bar_height_ = 0; |
brucedawson
2015/04/03 17:00:24
I can't see anywhere where this variable (or the t
ananta
2015/04/03 19:17:03
Caching them on an if needed basis.
|
+int32 WebThemeEngineImpl::vertical_arrow_bitmap_height_ = 0; |
+int32 WebThemeEngineImpl::horizontal_arrow_bitmap_width_ = 0; |
+ |
blink::WebSize WebThemeEngineImpl::getSize(WebThemeEngine::Part part) { |
ui::NativeTheme::ExtraParams extra; |
- return ui::NativeTheme::instance()->GetPartSize(NativeThemePart(part), |
- ui::NativeTheme::kNormal, |
- extra); |
+ ui::NativeTheme::Part native_theme_part = NativeThemePart(part); |
+#if defined(OS_WIN) |
+ switch (native_theme_part) { |
+ case ui::NativeTheme::kScrollbarDownArrow: |
+ case ui::NativeTheme::kScrollbarLeftArrow: |
+ case ui::NativeTheme::kScrollbarRightArrow: |
+ case ui::NativeTheme::kScrollbarUpArrow: |
+ case ui::NativeTheme::kScrollbarHorizontalThumb: |
+ case ui::NativeTheme::kScrollbarVerticalThumb: |
+ case ui::NativeTheme::kScrollbarHorizontalTrack: |
+ case ui::NativeTheme::kScrollbarVerticalTrack: { |
+ // If we have the scrollbar width cached return it. |
+ if (WebThemeEngineImpl::vertical_scroll_bar_width_) { |
brucedawson
2015/04/03 17:00:24
When would we not have the scrollbar width cached?
ananta
2015/04/03 19:17:04
Removed the check. The metrics default to 17
|
+ return gfx::Size(WebThemeEngineImpl::vertical_scroll_bar_width_, |
+ WebThemeEngineImpl::vertical_scroll_bar_width_); |
+ } |
+ break; |
+ } |
+ |
+ default: |
+ break; |
+ } |
+#endif |
+ return ui::NativeTheme::instance()->GetPartSize(native_theme_part, |
+ ui::NativeTheme::kNormal, |
+ extra); |
} |
void WebThemeEngineImpl::paint( |
@@ -199,4 +228,28 @@ void WebThemeEngineImpl::paintStateTransition(blink::WebCanvas* canvas, |
gfx::Rect(rect)); |
} |
+// static |
+void WebThemeEngineImpl::SetVerticalScrollbarWidth( |
+ int32 vertical_scroll_bar_width) { |
+ vertical_scroll_bar_width_ = vertical_scroll_bar_width; |
+} |
+ |
+// static |
+void WebThemeEngineImpl::SetHorizontalScrollbarHeight( |
+ int32 horizontal_scroll_bar_height) { |
+ horizontal_scroll_bar_height_ = horizontal_scroll_bar_height; |
+} |
+ |
+// static |
+void WebThemeEngineImpl::SetVerticalArrowBitmapHeight( |
+ int32 vertical_arrow_bitmap_height) { |
+ vertical_arrow_bitmap_height_ = vertical_arrow_bitmap_height; |
+} |
+ |
+// static |
+void WebThemeEngineImpl::SetHorizontalArrowBitmapWidth( |
+ int32 horizontal_arrow_bitmap_width) { |
+ horizontal_arrow_bitmap_width_ = horizontal_arrow_bitmap_width; |
+} |
+ |
} // namespace content |