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