// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "cc/blink/web_scrollbar_layer_impl.h" #include "cc/blink/scrollbar_impl.h" #include "cc/blink/web_layer_impl.h" #include "cc/layers/layer.h" #include "cc/layers/painted_scrollbar_layer.h" #include "cc/layers/scrollbar_layer_interface.h" #include "cc/layers/solid_color_scrollbar_layer.h" using cc::PaintedScrollbarLayer; using cc::SolidColorScrollbarLayer; namespace { cc::ScrollbarOrientation ConvertOrientation( blink::WebScrollbar::Orientation orientation) { return orientation == blink::WebScrollbar::Horizontal ? cc::HORIZONTAL : cc::VERTICAL; } } // namespace namespace cc_blink { WebScrollbarLayerImpl::WebScrollbarLayerImpl( blink::WebScrollbar* scrollbar, blink::WebScrollbarThemePainter painter, blink::WebScrollbarThemeGeometry* geometry) : layer_(new WebLayerImpl(PaintedScrollbarLayer::Create( scoped_ptr( new ScrollbarImpl(make_scoped_ptr(scrollbar), painter, make_scoped_ptr(geometry))).Pass(), 0))) { } WebScrollbarLayerImpl::WebScrollbarLayerImpl( blink::WebScrollbar::Orientation orientation, int thumb_thickness, int track_start, bool is_left_side_vertical_scrollbar) : layer_(new WebLayerImpl( SolidColorScrollbarLayer::Create(ConvertOrientation(orientation), thumb_thickness, track_start, is_left_side_vertical_scrollbar, 0))) { } WebScrollbarLayerImpl::~WebScrollbarLayerImpl() { } blink::WebLayer* WebScrollbarLayerImpl::layer() { return layer_.get(); } void WebScrollbarLayerImpl::setScrollLayer(blink::WebLayer* layer) { cc::Layer* scroll_layer = layer ? static_cast(layer)->layer() : 0; layer_->layer()->ToScrollbarLayer()->SetScrollLayer(scroll_layer->id()); } void WebScrollbarLayerImpl::setClipLayer(blink::WebLayer* layer) { cc::Layer* clip_layer = layer ? static_cast(layer)->layer() : 0; layer_->layer()->ToScrollbarLayer()->SetClipLayer(clip_layer->id()); } } // namespace cc_blink