1 // Copyright 2012 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.
5 #include "webkit/renderer/compositor_bindings/web_scrollbar_layer_impl.h"
7 #include "cc/layers/layer.h"
8 #include "cc/layers/painted_scrollbar_layer.h"
9 #include "cc/layers/scrollbar_layer_interface.h"
10 #include "cc/layers/solid_color_scrollbar_layer.h"
11 #include "webkit/renderer/compositor_bindings/scrollbar_impl.h"
12 #include "webkit/renderer/compositor_bindings/web_layer_impl.h"
14 using cc::PaintedScrollbarLayer;
15 using cc::SolidColorScrollbarLayer;
19 cc::ScrollbarOrientation ConvertOrientation(
20 blink::WebScrollbar::Orientation orientation) {
21 return orientation == blink::WebScrollbar::Horizontal ? cc::HORIZONTAL
29 WebScrollbarLayerImpl::WebScrollbarLayerImpl(
30 blink::WebScrollbar* scrollbar,
31 blink::WebScrollbarThemePainter painter,
32 blink::WebScrollbarThemeGeometry* geometry)
33 : layer_(new WebLayerImpl(PaintedScrollbarLayer::Create(
34 scoped_ptr<cc::Scrollbar>(new ScrollbarImpl(
35 make_scoped_ptr(scrollbar),
37 make_scoped_ptr(geometry))).Pass(), 0))) {}
39 WebScrollbarLayerImpl::WebScrollbarLayerImpl(
40 blink::WebScrollbar::Orientation orientation,
43 bool is_left_side_vertical_scrollbar)
44 : layer_(new WebLayerImpl(
45 SolidColorScrollbarLayer::Create(ConvertOrientation(orientation),
48 is_left_side_vertical_scrollbar,
51 WebScrollbarLayerImpl::~WebScrollbarLayerImpl() {}
53 blink::WebLayer* WebScrollbarLayerImpl::layer() { return layer_.get(); }
55 void WebScrollbarLayerImpl::setScrollLayer(blink::WebLayer* layer) {
56 cc::Layer* scroll_layer =
57 layer ? static_cast<WebLayerImpl*>(layer)->layer() : 0;
58 layer_->layer()->ToScrollbarLayer()->SetScrollLayer(scroll_layer->id());
61 void WebScrollbarLayerImpl::setClipLayer(blink::WebLayer* layer) {
62 cc::Layer* clip_layer =
63 layer ? static_cast<WebLayerImpl*>(layer)->layer() : 0;
64 layer_->layer()->ToScrollbarLayer()->SetClipLayer(clip_layer->id());