[BlackBerry] Make WebOverlayPrivate::scheduleCompositingRun a WebPagePrivate method.
[WebKit-https.git] / Source / WebKit / blackberry / WebKitSupport / InRegionScroller.h
1 /*
2  * Copyright (C) 2011, 2012 Research In Motion Limited. All rights reserved.
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
17  */
18
19 #ifndef InRegionScroller_h
20 #define InRegionScroller_h
21
22 #include "IntRect.h"
23
24 #include <interaction/ScrollViewBase.h>
25 #include <vector>
26
27 namespace WebCore {
28 class Frame;
29 class Node;
30 class RenderObject;
31 }
32
33 namespace BlackBerry {
34 namespace WebKit {
35
36 class WebPagePrivate;
37
38 class InRegionScroller {
39
40 public:
41     InRegionScroller(WebPagePrivate*);
42
43     void setNode(WebCore::Node*);
44     WebCore::Node* node() const;
45     void reset();
46
47     bool canScroll() const;
48     bool hasNode() const;
49
50     bool scrollBy(const Platform::IntSize& delta);
51
52     std::vector<Platform::ScrollViewBase*> inRegionScrollableAreasForPoint(const WebCore::IntPoint&);
53 private:
54
55     bool scrollNodeRecursively(WebCore::Node*, const WebCore::IntSize& delta);
56     bool scrollRenderer(WebCore::RenderObject*, const WebCore::IntSize& delta);
57
58     void adjustScrollDelta(const WebCore::IntPoint& maxOffset, const WebCore::IntPoint& currentOffset, WebCore::IntSize& delta) const;
59
60     RefPtr<WebCore::Node> m_inRegionScrollStartingNode;
61     WebPagePrivate* m_webPage;
62 };
63
64 }
65 }
66
67 #endif