2
* Copyright (C) 2011 Google Inc. All rights reserved.
4
* Redistribution and use in source and binary forms, with or without
5
* modification, are permitted provided that the following conditions
8
* 1. Redistributions of source code must retain the above copyright
9
* notice, this list of conditions and the following disclaimer.
10
* 2. Redistributions in binary form must reproduce the above copyright
11
* notice, this list of conditions and the following disclaimer in the
12
* documentation and/or other materials provided with the distribution.
14
* THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
15
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17
* DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
18
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
19
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
21
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
#ifndef ScrollbarGroup_h
27
#define ScrollbarGroup_h
29
#include "ScrollableArea.h"
31
#include <wtf/RefPtr.h>
39
class WebPluginScrollbarImpl;
41
class ScrollbarGroup : public WebCore::ScrollableArea {
43
ScrollbarGroup(WebCore::FrameView*, const WebCore::IntRect& frameRect);
46
void scrollbarCreated(WebPluginScrollbarImpl*);
47
void scrollbarDestroyed(WebPluginScrollbarImpl*);
48
void setLastMousePosition(const WebCore::IntPoint&);
49
void setFrameRect(const WebCore::IntRect&);
51
// WebCore::ScrollableArea methods
52
virtual int scrollSize(WebCore::ScrollbarOrientation) const OVERRIDE;
53
virtual int scrollPosition(WebCore::Scrollbar*) const OVERRIDE;
54
virtual void setScrollOffset(const WebCore::IntPoint&) OVERRIDE;
55
virtual void invalidateScrollbarRect(WebCore::Scrollbar*, const WebCore::IntRect&) OVERRIDE;
56
virtual void invalidateScrollCornerRect(const WebCore::IntRect&) OVERRIDE;
57
virtual bool isActive() const OVERRIDE;
58
virtual ScrollableArea* enclosingScrollableArea() const OVERRIDE;
59
virtual WebCore::IntRect scrollCornerRect() const OVERRIDE { return WebCore::IntRect(); }
60
virtual bool isScrollCornerVisible() const OVERRIDE;
61
virtual void getTickmarks(Vector<WebCore::IntRect>&) const OVERRIDE;
62
virtual WebCore::IntPoint convertFromContainingViewToScrollbar(const WebCore::Scrollbar*, const WebCore::IntPoint& parentPoint) const OVERRIDE;
63
virtual WebCore::Scrollbar* horizontalScrollbar() const OVERRIDE;
64
virtual WebCore::Scrollbar* verticalScrollbar() const OVERRIDE;
65
virtual WebCore::IntPoint scrollPosition() const OVERRIDE;
66
virtual WebCore::IntPoint minimumScrollPosition() const OVERRIDE;
67
virtual WebCore::IntPoint maximumScrollPosition() const OVERRIDE;
68
virtual int visibleHeight() const OVERRIDE;
69
virtual int visibleWidth() const OVERRIDE;
70
virtual WebCore::IntSize contentsSize() const OVERRIDE;
71
virtual WebCore::IntSize overhangAmount() const OVERRIDE;
72
virtual WebCore::IntPoint currentMousePosition() const OVERRIDE;
73
virtual bool shouldSuspendScrollAnimations() const OVERRIDE;
74
virtual void scrollbarStyleChanged(int newStyle, bool forceUpdate) OVERRIDE;
75
virtual bool scrollbarsCanBeActive() const OVERRIDE;
76
virtual WebCore::IntRect scrollableAreaBoundingBox() const OVERRIDE;
79
WebCore::FrameView* m_frameView;
80
WebCore::IntPoint m_lastMousePosition;
81
WebCore::IntRect m_frameRect;
82
WebPluginScrollbarImpl* m_horizontalScrollbar;
83
WebPluginScrollbarImpl* m_verticalScrollbar;