Index: webkit/renderer/compositor_bindings/web_scrollbar_layer_impl.cc |
diff --git a/webkit/renderer/compositor_bindings/web_scrollbar_layer_impl.cc b/webkit/renderer/compositor_bindings/web_scrollbar_layer_impl.cc |
index a8080212beb7ba55e548044a884ba70ec6fa86ad..fa80e121cd65823e23e42b0a4acd094198e77a92 100644 |
--- a/webkit/renderer/compositor_bindings/web_scrollbar_layer_impl.cc |
+++ b/webkit/renderer/compositor_bindings/web_scrollbar_layer_impl.cc |
@@ -4,12 +4,47 @@ |
#include "webkit/renderer/compositor_bindings/web_scrollbar_layer_impl.h" |
+#include "cc/base/switches.h" |
#include "cc/layers/scrollbar_layer.h" |
+#include "cc/layers/scrollbar_layer_interface.h" |
+#include "cc/layers/solid_color_scrollbar_layer.h" |
#include "third_party/WebKit/public/platform/WebScrollbar.h" |
#include "webkit/renderer/compositor_bindings/scrollbar_impl.h" |
#include "webkit/renderer/compositor_bindings/web_layer_impl.h" |
using cc::ScrollbarLayer; |
+using cc::SolidColorScrollbarLayer; |
+ |
+namespace { |
+ |
+cc::ScrollbarOrientation ConvertOrientation( |
+ WebKit::WebScrollbar::Orientation orientation) { |
+ return orientation == WebKit::WebScrollbar::Horizontal ? cc::HORIZONTAL |
+ : cc::VERTICAL; |
+} |
+ |
+const int kSolidColorScrollbarThumbThickness = 3; |
+const SkColor kSolidColorScrollbarColor = SkColorSetARGB(128, 128, 128, 128); |
+ |
+scoped_refptr<cc::Layer> CreateScrollbarLayer( |
+ WebKit::WebScrollbar* scrollbar, |
+ WebKit::WebScrollbarThemePainter painter, |
+ WebKit::WebScrollbarThemeGeometry* geometry) { |
+ if (cc::switches::AreOverlayScrollbarsEnabled()) { |
+ return SolidColorScrollbarLayer::Create( |
+ ConvertOrientation(scrollbar->orientation()), |
+ kSolidColorScrollbarThumbThickness, |
+ kSolidColorScrollbarColor, |
+ 0); |
+ } else { |
+ return ScrollbarLayer::Create( |
+ scoped_ptr<cc::Scrollbar>(new webkit::ScrollbarImpl( |
+ make_scoped_ptr(scrollbar), painter, make_scoped_ptr(geometry))), |
+ 0); |
+ } |
+} |
+ |
+} // namespace |
namespace webkit { |
@@ -17,11 +52,8 @@ WebScrollbarLayerImpl::WebScrollbarLayerImpl( |
WebKit::WebScrollbar* scrollbar, |
WebKit::WebScrollbarThemePainter painter, |
WebKit::WebScrollbarThemeGeometry* geometry) |
- : layer_(new WebLayerImpl(ScrollbarLayer::Create( |
- scoped_ptr<cc::Scrollbar>(new ScrollbarImpl( |
- make_scoped_ptr(scrollbar), |
- painter, |
- make_scoped_ptr(geometry))).Pass(), 0))) {} |
+ : layer_(new WebLayerImpl( |
+ CreateScrollbarLayer(scrollbar, painter, geometry))) {} |
WebScrollbarLayerImpl::~WebScrollbarLayerImpl() {} |
@@ -29,7 +61,7 @@ WebKit::WebLayer* WebScrollbarLayerImpl::layer() { return layer_.get(); } |
void WebScrollbarLayerImpl::setScrollLayer(WebKit::WebLayer* layer) { |
int id = layer ? static_cast<WebLayerImpl*>(layer)->layer()->id() : 0; |
- static_cast<ScrollbarLayer*>(layer_->layer())->SetScrollLayerId(id); |
+ layer_->layer()->ToScrollbarLayer()->SetScrollLayerId(id); |
} |
} // namespace webkit |