1// Copyright 2014 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 CC_BLINK_SCROLLBAR_IMPL_H_
6#define CC_BLINK_SCROLLBAR_IMPL_H_
7
8#include "base/basictypes.h"
9#include "base/memory/scoped_ptr.h"
10#include "cc/input/scrollbar.h"
11#include "third_party/WebKit/public/platform/WebScrollbarThemePainter.h"
12
13namespace blink {
14class WebScrollbar;
15class WebScrollbarThemeGeometry;
16}
17
18namespace cc_blink {
19
20class ScrollbarImpl : public cc::Scrollbar {
21 public:
22  ScrollbarImpl(scoped_ptr<blink::WebScrollbar> scrollbar,
23                blink::WebScrollbarThemePainter painter,
24                scoped_ptr<blink::WebScrollbarThemeGeometry> geometry);
25  virtual ~ScrollbarImpl();
26
27  // cc::Scrollbar implementation.
28  virtual cc::ScrollbarOrientation Orientation() const OVERRIDE;
29  virtual bool IsLeftSideVerticalScrollbar() const OVERRIDE;
30  virtual bool HasThumb() const OVERRIDE;
31  virtual bool IsOverlay() const OVERRIDE;
32  virtual gfx::Point Location() const OVERRIDE;
33  virtual int ThumbThickness() const OVERRIDE;
34  virtual int ThumbLength() const OVERRIDE;
35  virtual gfx::Rect TrackRect() const OVERRIDE;
36  virtual void PaintPart(SkCanvas* canvas,
37                         cc::ScrollbarPart part,
38                         const gfx::Rect& content_rect) OVERRIDE;
39
40 private:
41  scoped_ptr<blink::WebScrollbar> scrollbar_;
42  blink::WebScrollbarThemePainter painter_;
43  scoped_ptr<blink::WebScrollbarThemeGeometry> geometry_;
44
45  DISALLOW_COPY_AND_ASSIGN(ScrollbarImpl);
46};
47
48}  // namespace cc_blink
49
50#endif  // CC_BLINK_SCROLLBAR_IMPL_H_
51