1// Copyright (c) 2011 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. 4 5#ifndef UI_VIEWS_CONTROLS_SCROLLBAR_NATIVE_SCROLL_BAR_WRAPPER_H_ 6#define UI_VIEWS_CONTROLS_SCROLLBAR_NATIVE_SCROLL_BAR_WRAPPER_H_ 7 8#include "ui/views/views_export.h" 9 10namespace ui { 11class NativeTheme; 12} 13 14namespace views { 15 16class NativeScrollBar; 17class View; 18 19// A specialization of NativeControlWrapper that hosts a platform-native 20// scroll bar. 21class VIEWS_EXPORT NativeScrollBarWrapper { 22 public: 23 virtual ~NativeScrollBarWrapper() {} 24 25 // Updates the scroll bar appearance given a viewport size, content size and 26 // current position. 27 virtual void Update(int viewport_size, int content_size, int current_pos) = 0; 28 29 // Retrieves the views::View that hosts the native control. 30 virtual View* GetView() = 0; 31 32 // Returns the position of the scrollbar. 33 virtual int GetPosition() const = 0; 34 35 // Creates an appropriate NativeScrollBarWrapper for the platform. 36 static NativeScrollBarWrapper* CreateWrapper(NativeScrollBar* button); 37 38 // Returns the system sizes of vertical/horizontal scroll bars. 39 static int GetVerticalScrollBarWidth(const ui::NativeTheme* theme); 40 static int GetHorizontalScrollBarHeight(const ui::NativeTheme* theme); 41}; 42 43} // namespace views 44 45#endif // UI_VIEWS_CONTROLS_SCROLLBAR_NATIVE_SCROLL_BAR_WRAPPER_H_ 46