Index: Source/web/WebPluginScrollbarImpl.cpp |
diff --git a/Source/web/WebPluginScrollbarImpl.cpp b/Source/web/WebPluginScrollbarImpl.cpp |
deleted file mode 100644 |
index 5da18b4ebeee3a4b99746ffdd9e1761b95cfdf6e..0000000000000000000000000000000000000000 |
--- a/Source/web/WebPluginScrollbarImpl.cpp |
+++ /dev/null |
@@ -1,376 +0,0 @@ |
-/* |
- * Copyright (C) 2012 Google Inc. All rights reserved. |
- * |
- * Redistribution and use in source and binary forms, with or without |
- * modification, are permitted provided that the following conditions |
- * are met: |
- * 1. Redistributions of source code must retain the above copyright |
- * notice, this list of conditions and the following disclaimer. |
- * 2. Redistributions in binary form must reproduce the above copyright |
- * notice, this list of conditions and the following disclaimer in the |
- * documentation and/or other materials provided with the distribution. |
- * |
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY |
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
- * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY |
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON |
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
- */ |
- |
-#include "config.h" |
-#include "web/WebPluginScrollbarImpl.h" |
- |
-#include "platform/KeyboardCodes.h" |
-#include "platform/graphics/GraphicsContext.h" |
-#include "platform/scroll/ScrollAnimator.h" |
-#include "platform/scroll/ScrollTypes.h" |
-#include "platform/scroll/Scrollbar.h" |
-#include "platform/scroll/ScrollbarTheme.h" |
-#include "public/platform/WebCanvas.h" |
-#include "public/platform/WebRect.h" |
-#include "public/platform/WebVector.h" |
-#include "public/web/WebInputEvent.h" |
-#include "public/web/WebPluginScrollbarClient.h" |
-#include "web/ScrollbarGroup.h" |
-#include "web/WebInputEventConversion.h" |
-#include "web/WebPluginContainerImpl.h" |
-#include "web/WebViewImpl.h" |
- |
-namespace blink { |
- |
-WebPluginScrollbar* WebPluginScrollbar::createForPlugin(Orientation orientation, |
- WebPluginContainer* pluginContainer, |
- WebPluginScrollbarClient* client) |
-{ |
- WebPluginContainerImpl* plugin = toWebPluginContainerImpl(pluginContainer); |
- return new WebPluginScrollbarImpl(orientation, plugin->scrollbarGroup(), client); |
-} |
- |
-int WebPluginScrollbar::defaultThickness() |
-{ |
- return ScrollbarTheme::theme()->scrollbarThickness(); |
-} |
- |
-WebPluginScrollbarImpl::WebPluginScrollbarImpl(Orientation orientation, |
- ScrollbarGroup* group, |
- WebPluginScrollbarClient* client) |
- : m_group(group) |
- , m_client(client) |
- , m_scrollOffset(0) |
-{ |
- m_scrollbar = Scrollbar::create( |
- static_cast<ScrollableArea*>(m_group), |
- static_cast<ScrollbarOrientation>(orientation), |
- blink::RegularScrollbar); |
- m_group->scrollbarCreated(this); |
-} |
- |
-WebPluginScrollbarImpl::~WebPluginScrollbarImpl() |
-{ |
- m_group->scrollbarDestroyed(this); |
-} |
- |
-void WebPluginScrollbarImpl::setScrollOffset(int scrollOffset) |
-{ |
- m_scrollOffset = scrollOffset; |
- m_client->valueChanged(this); |
-} |
- |
-void WebPluginScrollbarImpl::invalidateScrollbarRect(const IntRect& rect) |
-{ |
- WebRect webrect(rect); |
- webrect.x += m_scrollbar->x(); |
- webrect.y += m_scrollbar->y(); |
- m_client->invalidateScrollbarRect(this, webrect); |
-} |
- |
-void WebPluginScrollbarImpl::getTickmarks(Vector<IntRect>& tickmarks) const |
-{ |
- WebVector<WebRect> ticks; |
- m_client->getTickmarks(const_cast<WebPluginScrollbarImpl*>(this), &ticks); |
- tickmarks.resize(ticks.size()); |
- for (size_t i = 0; i < ticks.size(); ++i) |
- tickmarks[i] = ticks[i]; |
-} |
- |
-IntPoint WebPluginScrollbarImpl::convertFromContainingViewToScrollbar(const IntPoint& parentPoint) const |
-{ |
- IntPoint offset(parentPoint.x() - m_scrollbar->x(), parentPoint.y() - m_scrollbar->y()); |
- return m_scrollbar->Widget::convertFromContainingView(offset); |
-} |
- |
-void WebPluginScrollbarImpl::scrollbarStyleChanged() |
-{ |
- m_client->overlayChanged(this); |
-} |
- |
-bool WebPluginScrollbarImpl::isOverlay() const |
-{ |
- return m_scrollbar->isOverlayScrollbar(); |
-} |
- |
-int WebPluginScrollbarImpl::value() const |
-{ |
- return m_scrollOffset; |
-} |
- |
-WebPoint WebPluginScrollbarImpl::location() const |
-{ |
- return m_scrollbar->frameRect().location(); |
-} |
- |
-WebSize WebPluginScrollbarImpl::size() const |
-{ |
- return m_scrollbar->frameRect().size(); |
-} |
- |
-bool WebPluginScrollbarImpl::enabled() const |
-{ |
- return m_scrollbar->enabled(); |
-} |
- |
-int WebPluginScrollbarImpl::maximum() const |
-{ |
- return m_scrollbar->maximum(); |
-} |
- |
-int WebPluginScrollbarImpl::totalSize() const |
-{ |
- return m_scrollbar->totalSize(); |
-} |
- |
-bool WebPluginScrollbarImpl::isScrollableAreaActive() const |
-{ |
- return m_scrollbar->isScrollableAreaActive(); |
-} |
- |
-void WebPluginScrollbarImpl::getTickmarks(WebVector<WebRect>& tickmarks) const |
-{ |
- m_client->getTickmarks(const_cast<WebPluginScrollbarImpl*>(this), &tickmarks); |
-} |
- |
-WebScrollbar::ScrollbarControlSize WebPluginScrollbarImpl::controlSize() const |
-{ |
- return static_cast<WebScrollbar::ScrollbarControlSize>(m_scrollbar->controlSize()); |
-} |
- |
-WebScrollbar::ScrollbarPart WebPluginScrollbarImpl::pressedPart() const |
-{ |
- return static_cast<WebScrollbar::ScrollbarPart>(m_scrollbar->pressedPart()); |
-} |
- |
-WebScrollbar::ScrollbarPart WebPluginScrollbarImpl::hoveredPart() const |
-{ |
- return static_cast<WebScrollbar::ScrollbarPart>(m_scrollbar->hoveredPart()); |
-} |
- |
-WebScrollbar::ScrollbarOverlayStyle WebPluginScrollbarImpl::scrollbarOverlayStyle() const |
-{ |
- return static_cast<WebScrollbar::ScrollbarOverlayStyle>(m_scrollbar->scrollbarOverlayStyle()); |
-} |
- |
-WebScrollbar::Orientation WebPluginScrollbarImpl::orientation() const |
-{ |
- if (m_scrollbar->orientation() == HorizontalScrollbar) |
- return WebScrollbar::Horizontal; |
- return WebScrollbar::Vertical; |
-} |
- |
-bool WebPluginScrollbarImpl::isLeftSideVerticalScrollbar() const |
-{ |
- return false; |
-} |
- |
-bool WebPluginScrollbarImpl::isCustomScrollbar() const |
-{ |
- return m_scrollbar->isCustomScrollbar(); |
-} |
- |
-void WebPluginScrollbarImpl::setLocation(const WebRect& rect) |
-{ |
- IntRect oldRect = m_scrollbar->frameRect(); |
- m_scrollbar->setFrameRect(rect); |
- if (WebRect(oldRect) != rect) |
- m_scrollbar->invalidate(); |
- |
- int length = m_scrollbar->orientation() == HorizontalScrollbar ? m_scrollbar->width() : m_scrollbar->height(); |
- m_scrollbar->setEnabled(m_scrollbar->totalSize() > length); |
- m_scrollbar->setProportion(length, m_scrollbar->totalSize()); |
-} |
- |
-void WebPluginScrollbarImpl::setValue(int position) |
-{ |
- m_group->scrollToOffsetWithoutAnimation(m_scrollbar->orientation(), static_cast<float>(position)); |
-} |
- |
-void WebPluginScrollbarImpl::setDocumentSize(int size) |
-{ |
- int length = m_scrollbar->orientation() == HorizontalScrollbar ? m_scrollbar->width() : m_scrollbar->height(); |
- m_scrollbar->setEnabled(size > length); |
- m_scrollbar->setProportion(length, size); |
-} |
- |
-void WebPluginScrollbarImpl::scroll(ScrollDirection direction, ScrollGranularity granularity, float multiplier) |
-{ |
- blink::ScrollDirectionPhysical dir; |
- bool horizontal = m_scrollbar->orientation() == HorizontalScrollbar; |
- if (direction == ScrollForward) |
- dir = horizontal ? ScrollRight : ScrollDown; |
- else |
- dir = horizontal ? ScrollLeft : ScrollUp; |
- |
- m_group->scroll(dir, static_cast<blink::ScrollGranularity>(granularity), multiplier); |
-} |
- |
-void WebPluginScrollbarImpl::paint(WebCanvas* canvas, const WebRect& rect) |
-{ |
- OwnPtr<GraphicsContext> context = GraphicsContext::deprecatedCreateWithCanvas(canvas); |
- m_scrollbar->paint(context.get(), rect); |
-} |
- |
-bool WebPluginScrollbarImpl::handleInputEvent(const WebInputEvent& event) |
-{ |
- switch (event.type) { |
- case WebInputEvent::MouseDown: |
- return onMouseDown(event); |
- case WebInputEvent::MouseUp: |
- return onMouseUp(event); |
- case WebInputEvent::MouseMove: |
- return onMouseMove(event); |
- case WebInputEvent::MouseLeave: |
- return onMouseLeave(event); |
- case WebInputEvent::MouseWheel: |
- return onMouseWheel(event); |
- case WebInputEvent::KeyDown: |
- return onKeyDown(event); |
- case WebInputEvent::Undefined: |
- case WebInputEvent::MouseEnter: |
- case WebInputEvent::RawKeyDown: |
- case WebInputEvent::KeyUp: |
- case WebInputEvent::Char: |
- case WebInputEvent::TouchStart: |
- case WebInputEvent::TouchMove: |
- case WebInputEvent::TouchEnd: |
- case WebInputEvent::TouchCancel: |
- default: |
- break; |
- } |
- return false; |
-} |
- |
-bool WebPluginScrollbarImpl::isAlphaLocked() const |
-{ |
- return m_scrollbar->isAlphaLocked(); |
-} |
- |
-void WebPluginScrollbarImpl::setIsAlphaLocked(bool flag) |
-{ |
- return m_scrollbar->setIsAlphaLocked(flag); |
-} |
- |
-bool WebPluginScrollbarImpl::onMouseDown(const WebInputEvent& event) |
-{ |
- WebMouseEvent mousedown = static_cast<const WebMouseEvent&>(event); |
- if (!m_scrollbar->frameRect().contains(mousedown.x, mousedown.y)) |
- return false; |
- |
- mousedown.x -= m_scrollbar->x(); |
- mousedown.y -= m_scrollbar->y(); |
- m_scrollbar->mouseDown(PlatformMouseEventBuilder(m_scrollbar.get(), mousedown)); |
- return true; |
-} |
- |
-bool WebPluginScrollbarImpl::onMouseUp(const WebInputEvent& event) |
-{ |
- WebMouseEvent mouseup = static_cast<const WebMouseEvent&>(event); |
- if (m_scrollbar->pressedPart() == blink::NoPart) |
- return false; |
- |
- m_scrollbar->mouseUp(PlatformMouseEventBuilder(m_scrollbar.get(), mouseup)); |
- return true; |
-} |
- |
-bool WebPluginScrollbarImpl::onMouseMove(const WebInputEvent& event) |
-{ |
- WebMouseEvent mousemove = static_cast<const WebMouseEvent&>(event); |
- if (m_scrollbar->frameRect().contains(mousemove.x, mousemove.y) |
- || m_scrollbar->pressedPart() != blink::NoPart) { |
- mousemove.x -= m_scrollbar->x(); |
- mousemove.y -= m_scrollbar->y(); |
- m_scrollbar->mouseMoved(PlatformMouseEventBuilder(m_scrollbar.get(), mousemove)); |
- return true; |
- } |
- |
- if (m_scrollbar->hoveredPart() != blink::NoPart && !m_scrollbar->isOverlayScrollbar()) |
- m_scrollbar->mouseExited(); |
- return false; |
-} |
- |
-bool WebPluginScrollbarImpl::onMouseLeave(const WebInputEvent& event) |
-{ |
- if (m_scrollbar->hoveredPart() != blink::NoPart) |
- m_scrollbar->mouseExited(); |
- |
- return false; |
-} |
- |
-bool WebPluginScrollbarImpl::onMouseWheel(const WebInputEvent& event) |
-{ |
- WebMouseWheelEvent mousewheel = static_cast<const WebMouseWheelEvent&>(event); |
- PlatformWheelEventBuilder platformEvent(m_scrollbar.get(), mousewheel); |
- return m_group->handleWheel(platformEvent).didScroll; |
-} |
- |
-bool WebPluginScrollbarImpl::onKeyDown(const WebInputEvent& event) |
-{ |
- WebKeyboardEvent keyboard = static_cast<const WebKeyboardEvent&>(event); |
- int keyCode; |
- // We have to duplicate this logic from WebViewImpl because there it uses |
- // Char and RawKeyDown events, which don't exist at this point. |
- if (keyboard.windowsKeyCode == VKEY_SPACE) |
- keyCode = ((keyboard.modifiers & WebInputEvent::ShiftKey) ? VKEY_PRIOR : VKEY_NEXT); |
- else { |
- if (keyboard.modifiers == WebInputEvent::ControlKey) { |
- // Match FF behavior in the sense that Ctrl+home/end are the only Ctrl |
- // key combinations which affect scrolling. Safari is buggy in the |
- // sense that it scrolls the page for all Ctrl+scrolling key |
- // combinations. For e.g. Ctrl+pgup/pgdn/up/down, etc. |
- switch (keyboard.windowsKeyCode) { |
- case VKEY_HOME: |
- case VKEY_END: |
- break; |
- default: |
- return false; |
- } |
- } |
- |
- if (keyboard.isSystemKey || (keyboard.modifiers & WebInputEvent::ShiftKey)) |
- return false; |
- |
- keyCode = keyboard.windowsKeyCode; |
- } |
- blink::ScrollDirectionPhysical scrollDirection; |
- blink::ScrollGranularity scrollGranularity; |
- if (WebViewImpl::mapKeyCodeForScroll(keyCode, &scrollDirection, &scrollGranularity)) { |
- // Will return false if scroll direction wasn't compatible with this scrollbar. |
- return m_group->scroll(scrollDirection, scrollGranularity); |
- } |
- return false; |
-} |
- |
-float WebPluginScrollbarImpl::elasticOverscroll() const |
-{ |
- return m_scrollbar->elasticOverscroll(); |
-} |
- |
-void WebPluginScrollbarImpl::setElasticOverscroll(float elasticOverscroll) |
-{ |
- m_scrollbar->setElasticOverscroll(elasticOverscroll); |
-} |
- |
-} // namespace blink |