267236a197270692072de38191c43ac3e31aed6b
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / platform / exported / WebScrollbarThemeClientImpl.cpp
1 /*
2  * Copyright (C) 2012 Google Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
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.
13  *
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.
24  */
25
26 #include "config.h"
27
28 #include "platform/exported/WebScrollbarThemeClientImpl.h"
29
30 #include "platform/scroll/ScrollbarTheme.h"
31
32 using blink::WebScrollbar;
33
34 namespace WebCore {
35
36 WebScrollbarThemeClientImpl::WebScrollbarThemeClientImpl(WebScrollbar* scrollbar)
37     : m_scrollbar(scrollbar)
38 {
39     ScrollbarTheme::theme()->registerScrollbar(this);
40 }
41
42 WebScrollbarThemeClientImpl::~WebScrollbarThemeClientImpl()
43 {
44     ScrollbarTheme::theme()->unregisterScrollbar(this);
45 }
46
47 int WebScrollbarThemeClientImpl::x() const
48 {
49     return location().x();
50 }
51
52 int WebScrollbarThemeClientImpl::y() const
53 {
54     return location().y();
55 }
56
57 int WebScrollbarThemeClientImpl::width() const
58 {
59     return size().width();
60 }
61
62 int WebScrollbarThemeClientImpl::height() const
63 {
64     return size().height();
65 }
66
67 IntSize WebScrollbarThemeClientImpl::size() const
68 {
69     return m_scrollbar->size();
70 }
71
72 IntPoint WebScrollbarThemeClientImpl::location() const
73 {
74     return m_scrollbar->location();
75 }
76
77 Widget* WebScrollbarThemeClientImpl::parent() const
78 {
79     // Unused by Chromium scrollbar themes.
80     ASSERT_NOT_REACHED();
81     return 0;
82 }
83
84 Widget* WebScrollbarThemeClientImpl::root() const
85 {
86     // Unused by Chromium scrollbar themes.
87     ASSERT_NOT_REACHED();
88     return 0;
89 }
90
91 void WebScrollbarThemeClientImpl::setFrameRect(const IntRect&)
92 {
93     // Unused by Chromium scrollbar themes.
94     ASSERT_NOT_REACHED();
95 }
96
97 IntRect WebScrollbarThemeClientImpl::frameRect() const
98 {
99     return IntRect(location(), size());
100 }
101
102 void WebScrollbarThemeClientImpl::invalidate()
103 {
104     // Unused by Chromium scrollbar themes.
105     ASSERT_NOT_REACHED();
106 }
107
108 void WebScrollbarThemeClientImpl::invalidateRect(const IntRect&)
109 {
110     // Unused by Chromium scrollbar themes.
111     ASSERT_NOT_REACHED();
112 }
113
114 WebCore::ScrollbarOverlayStyle WebScrollbarThemeClientImpl::scrollbarOverlayStyle() const
115 {
116     return static_cast<WebCore::ScrollbarOverlayStyle>(m_scrollbar->scrollbarOverlayStyle());
117 }
118
119 void WebScrollbarThemeClientImpl::getTickmarks(Vector<IntRect>& tickmarks) const
120 {
121     blink::WebVector<blink::WebRect> webTickmarks;
122     m_scrollbar->getTickmarks(webTickmarks);
123     tickmarks.resize(webTickmarks.size());
124     for (size_t i = 0; i < webTickmarks.size(); ++i)
125         tickmarks[i] = webTickmarks[i];
126 }
127
128 bool WebScrollbarThemeClientImpl::isScrollableAreaActive() const
129 {
130     return m_scrollbar->isScrollableAreaActive();
131 }
132
133 bool WebScrollbarThemeClientImpl::isScrollViewScrollbar() const
134 {
135     // Unused by Chromium scrollbar themes.
136     ASSERT_NOT_REACHED();
137     return false;
138 }
139
140 IntPoint WebScrollbarThemeClientImpl::convertFromContainingWindow(const IntPoint& windowPoint)
141 {
142     // Unused by Chromium scrollbar themes.
143     ASSERT_NOT_REACHED();
144     return windowPoint;
145 }
146
147 bool WebScrollbarThemeClientImpl::isCustomScrollbar() const
148 {
149     return m_scrollbar->isCustomScrollbar();
150 }
151
152 WebCore::ScrollbarOrientation WebScrollbarThemeClientImpl::orientation() const
153 {
154     return static_cast<WebCore::ScrollbarOrientation>(m_scrollbar->orientation());
155 }
156
157 bool WebScrollbarThemeClientImpl::isLeftSideVerticalScrollbar() const
158 {
159     return m_scrollbar->isLeftSideVerticalScrollbar();
160 }
161
162 int WebScrollbarThemeClientImpl::value() const
163 {
164     return m_scrollbar->value();
165 }
166
167 float WebScrollbarThemeClientImpl::currentPos() const
168 {
169     return value();
170 }
171
172 int WebScrollbarThemeClientImpl::visibleSize() const
173 {
174     return totalSize() - maximum();
175 }
176
177 int WebScrollbarThemeClientImpl::totalSize() const
178 {
179     return m_scrollbar->totalSize();
180 }
181
182 int WebScrollbarThemeClientImpl::maximum() const
183 {
184     return m_scrollbar->maximum();
185 }
186
187 WebCore::ScrollbarControlSize WebScrollbarThemeClientImpl::controlSize() const
188 {
189     return static_cast<WebCore::ScrollbarControlSize>(m_scrollbar->controlSize());
190 }
191
192 WebCore::ScrollbarPart WebScrollbarThemeClientImpl::pressedPart() const
193 {
194     return static_cast<WebCore::ScrollbarPart>(m_scrollbar->pressedPart());
195 }
196
197 WebCore::ScrollbarPart WebScrollbarThemeClientImpl::hoveredPart() const
198 {
199     return static_cast<WebCore::ScrollbarPart>(m_scrollbar->hoveredPart());
200 }
201
202 void WebScrollbarThemeClientImpl::styleChanged()
203 {
204     ASSERT_NOT_REACHED();
205 }
206
207 bool WebScrollbarThemeClientImpl::enabled() const
208 {
209     return m_scrollbar->enabled();
210 }
211
212 void WebScrollbarThemeClientImpl::setEnabled(bool)
213 {
214     ASSERT_NOT_REACHED();
215 }
216
217 bool WebScrollbarThemeClientImpl::isOverlayScrollbar() const
218 {
219     return m_scrollbar->isOverlay();
220 }
221
222 bool WebScrollbarThemeClientImpl::isAlphaLocked() const
223 {
224     return m_scrollbar->isAlphaLocked();
225 }
226
227 void WebScrollbarThemeClientImpl::setIsAlphaLocked(bool flag)
228 {
229     m_scrollbar->setIsAlphaLocked(flag);
230 }
231
232 } // namespace blink