Index: cc/scrollbar_layer.cc |
diff --git a/cc/scrollbar_layer.cc b/cc/scrollbar_layer.cc |
index 6fad23cb11481dd7b64811a269b10d5fe873779f..d4479061f7525f5a9eece799ee6855e6995a8a39 100644 |
--- a/cc/scrollbar_layer.cc |
+++ b/cc/scrollbar_layer.cc |
@@ -17,6 +17,9 @@ |
namespace cc { |
+scoped_ptr<WebKit::WebScrollbarThemeGeometry> ScrollbarLayer::s_defaultGeometry; |
+bool ScrollbarLayer::s_usesOverlayScrollbars = false; |
+ |
scoped_ptr<LayerImpl> ScrollbarLayer::createLayerImpl(LayerTreeImpl* treeImpl) |
{ |
return ScrollbarLayerImpl::create(treeImpl, id(), ScrollbarGeometryFixedThumb::create(make_scoped_ptr(m_geometry->clone()))).PassAs<LayerImpl>(); |
@@ -26,21 +29,54 @@ scoped_refptr<ScrollbarLayer> ScrollbarLayer::create( |
scoped_ptr<WebKit::WebScrollbar> scrollbar, |
scoped_ptr<ScrollbarThemePainter> painter, |
scoped_ptr<WebKit::WebScrollbarThemeGeometry> geometry, |
+ int scrollLayerId, bool isPinchZoomScrollbar) |
+{ |
+ return make_scoped_refptr(new ScrollbarLayer(scrollbar.Pass(), painter.Pass(), geometry.Pass(), scrollLayerId, isPinchZoomScrollbar)); |
+} |
+ |
+scoped_refptr<ScrollbarLayer> ScrollbarLayer::create( |
+ scoped_ptr<WebKit::WebScrollbar> scrollbar, |
+ scoped_ptr<ScrollbarThemePainter> painter, |
int scrollLayerId) |
{ |
- return make_scoped_refptr(new ScrollbarLayer(scrollbar.Pass(), painter.Pass(), geometry.Pass(), scrollLayerId)); |
+ if (!s_defaultGeometry) |
+ return make_scoped_refptr(static_cast<ScrollbarLayer*>(0)); |
+ return create(scrollbar.Pass(), painter.Pass(), |
+ make_scoped_ptr(s_defaultGeometry->clone()).Pass(), |
+ scrollLayerId, true); |
+} |
+ |
+void ScrollbarLayer::setDefaultGeometry( |
+ WebKit::WebScrollbarThemeGeometry* themeGeometry) |
+{ |
+ // We assume themeGeometry is ours to own. |
+ if (themeGeometry) |
+ s_defaultGeometry = make_scoped_ptr(themeGeometry); |
+} |
+ |
+WebKit::WebScrollbarThemeGeometry* ScrollbarLayer::cloneDefaultGeometry() |
+{ |
+ if (s_defaultGeometry) |
+ return s_defaultGeometry->clone(); |
+ return 0; |
+} |
+ |
+void ScrollbarLayer::setDefaultUsesOverlayScrollbars(bool usesOverlayScrollbars) |
+{ |
+ s_usesOverlayScrollbars = usesOverlayScrollbars; |
} |
ScrollbarLayer::ScrollbarLayer( |
scoped_ptr<WebKit::WebScrollbar> scrollbar, |
scoped_ptr<ScrollbarThemePainter> painter, |
scoped_ptr<WebKit::WebScrollbarThemeGeometry> geometry, |
- int scrollLayerId) |
+ int scrollLayerId, bool isPinchZoomScrollbar) |
: m_scrollbar(scrollbar.Pass()) |
, m_painter(painter.Pass()) |
, m_geometry(geometry.Pass()) |
, m_scrollLayerId(scrollLayerId) |
, m_textureFormat(GL_INVALID_ENUM) |
+ , m_isPinchZoomScrollbar(isPinchZoomScrollbar) |
{ |
if (!m_scrollbar->isOverlay()) |
setShouldScrollOnMainThread(true); |
@@ -123,6 +159,8 @@ void ScrollbarLayer::pushPropertiesTo(LayerImpl* layer) |
scrollbarLayer->setThumbResourceId(m_thumb->texture()->resourceId()); |
else |
scrollbarLayer->setThumbResourceId(0); |
+ |
+ scrollbarLayer->setIsPinchZoomScrollbar(m_isPinchZoomScrollbar); |
} |
ScrollbarLayer* ScrollbarLayer::toScrollbarLayer() |