| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2009 Google Inc. All rights reserved. |
| 3 * Copyright (C) 2014 Opera Software ASA. All rights reserved. | 3 * Copyright (C) 2014 Opera Software ASA. All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
| 7 * met: | 7 * met: |
| 8 * | 8 * |
| 9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 74 #include "platform/RuntimeEnabledFeatures.h" | 74 #include "platform/RuntimeEnabledFeatures.h" |
| 75 #include "platform/UserGestureIndicator.h" | 75 #include "platform/UserGestureIndicator.h" |
| 76 #include "platform/exported/WrappedResourceResponse.h" | 76 #include "platform/exported/WrappedResourceResponse.h" |
| 77 #include "platform/geometry/LayoutRect.h" | 77 #include "platform/geometry/LayoutRect.h" |
| 78 #include "platform/graphics/GraphicsContext.h" | 78 #include "platform/graphics/GraphicsContext.h" |
| 79 #include "platform/graphics/GraphicsLayer.h" | 79 #include "platform/graphics/GraphicsLayer.h" |
| 80 #include "platform/graphics/paint/CullRect.h" | 80 #include "platform/graphics/paint/CullRect.h" |
| 81 #include "platform/graphics/paint/ForeignLayerDisplayItem.h" | 81 #include "platform/graphics/paint/ForeignLayerDisplayItem.h" |
| 82 #include "platform/scroll/ScrollAnimatorBase.h" | 82 #include "platform/scroll/ScrollAnimatorBase.h" |
| 83 #include "platform/scroll/ScrollbarTheme.h" | 83 #include "platform/scroll/ScrollbarTheme.h" |
| 84 #include "public/platform/CoalescedWebInputEvent.h" |
| 84 #include "public/platform/Platform.h" | 85 #include "public/platform/Platform.h" |
| 85 #include "public/platform/WebClipboard.h" | 86 #include "public/platform/WebClipboard.h" |
| 86 #include "public/platform/WebCompositorSupport.h" | 87 #include "public/platform/WebCompositorSupport.h" |
| 87 #include "public/platform/WebCursorInfo.h" | 88 #include "public/platform/WebCursorInfo.h" |
| 88 #include "public/platform/WebDragData.h" | 89 #include "public/platform/WebDragData.h" |
| 89 #include "public/platform/WebExternalTextureLayer.h" | 90 #include "public/platform/WebExternalTextureLayer.h" |
| 90 #include "public/platform/WebInputEvent.h" | 91 #include "public/platform/WebInputEvent.h" |
| 91 #include "public/platform/WebRect.h" | 92 #include "public/platform/WebRect.h" |
| 92 #include "public/platform/WebString.h" | 93 #include "public/platform/WebString.h" |
| 93 #include "public/platform/WebURL.h" | 94 #include "public/platform/WebURL.h" |
| (...skipping 617 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 711 | 712 |
| 712 WebMouseEventBuilder webEvent(this, LayoutItem(m_element->layoutObject()), | 713 WebMouseEventBuilder webEvent(this, LayoutItem(m_element->layoutObject()), |
| 713 *event); | 714 *event); |
| 714 if (webEvent.type == WebInputEvent::Undefined) | 715 if (webEvent.type == WebInputEvent::Undefined) |
| 715 return; | 716 return; |
| 716 | 717 |
| 717 if (event->type() == EventTypeNames::mousedown) | 718 if (event->type() == EventTypeNames::mousedown) |
| 718 focusPlugin(); | 719 focusPlugin(); |
| 719 | 720 |
| 720 WebCursorInfo cursorInfo; | 721 WebCursorInfo cursorInfo; |
| 721 if (m_webPlugin->handleInputEvent(webEvent, cursorInfo) != | 722 // TODO(nzolghadr): We need to plumb the coalesced event here. |
| 723 if (m_webPlugin->handleInputEvent(CoalescedWebInputEvent(webEvent), |
| 724 cursorInfo) != |
| 722 WebInputEventResult::NotHandled) | 725 WebInputEventResult::NotHandled) |
| 723 event->setDefaultHandled(); | 726 event->setDefaultHandled(); |
| 724 | 727 |
| 725 // A windowless plugin can change the cursor in response to a mouse move | 728 // A windowless plugin can change the cursor in response to a mouse move |
| 726 // event. We need to reflect the changed cursor in the frame view as the | 729 // event. We need to reflect the changed cursor in the frame view as the |
| 727 // mouse is moved in the boundaries of the windowless plugin. | 730 // mouse is moved in the boundaries of the windowless plugin. |
| 728 Page* page = parentView->frame().page(); | 731 Page* page = parentView->frame().page(); |
| 729 if (!page) | 732 if (!page) |
| 730 return; | 733 return; |
| 731 toChromeClientImpl(page->chromeClient()) | 734 toChromeClientImpl(page->chromeClient()) |
| (...skipping 29 matching lines...) Expand all Loading... |
| 761 dragLocation, dragScreenLocation); | 764 dragLocation, dragScreenLocation); |
| 762 } | 765 } |
| 763 | 766 |
| 764 void WebPluginContainerImpl::handleWheelEvent(WheelEvent* event) { | 767 void WebPluginContainerImpl::handleWheelEvent(WheelEvent* event) { |
| 765 WebMouseWheelEventBuilder webEvent( | 768 WebMouseWheelEventBuilder webEvent( |
| 766 this, LayoutItem(m_element->layoutObject()), *event); | 769 this, LayoutItem(m_element->layoutObject()), *event); |
| 767 if (webEvent.type == WebInputEvent::Undefined) | 770 if (webEvent.type == WebInputEvent::Undefined) |
| 768 return; | 771 return; |
| 769 | 772 |
| 770 WebCursorInfo cursorInfo; | 773 WebCursorInfo cursorInfo; |
| 771 if (m_webPlugin->handleInputEvent(webEvent, cursorInfo) != | 774 if (m_webPlugin->handleInputEvent(CoalescedWebInputEvent(webEvent), |
| 775 cursorInfo) != |
| 772 WebInputEventResult::NotHandled) | 776 WebInputEventResult::NotHandled) |
| 773 event->setDefaultHandled(); | 777 event->setDefaultHandled(); |
| 774 } | 778 } |
| 775 | 779 |
| 776 void WebPluginContainerImpl::handleKeyboardEvent(KeyboardEvent* event) { | 780 void WebPluginContainerImpl::handleKeyboardEvent(KeyboardEvent* event) { |
| 777 WebKeyboardEventBuilder webEvent(*event); | 781 WebKeyboardEventBuilder webEvent(*event); |
| 778 if (webEvent.type == WebInputEvent::Undefined) | 782 if (webEvent.type == WebInputEvent::Undefined) |
| 779 return; | 783 return; |
| 780 | 784 |
| 781 if (webEvent.type == WebInputEvent::KeyDown) { | 785 if (webEvent.type == WebInputEvent::KeyDown) { |
| (...skipping 27 matching lines...) Expand all Loading... |
| 809 (WebInputEvent::CapsLockOn | WebInputEvent::NumLockOn); | 813 (WebInputEvent::CapsLockOn | WebInputEvent::NumLockOn); |
| 810 } | 814 } |
| 811 | 815 |
| 812 // Give the client a chance to issue edit comamnds. | 816 // Give the client a chance to issue edit comamnds. |
| 813 WebLocalFrameImpl* webFrame = | 817 WebLocalFrameImpl* webFrame = |
| 814 WebLocalFrameImpl::fromFrame(m_element->document().frame()); | 818 WebLocalFrameImpl::fromFrame(m_element->document().frame()); |
| 815 if (m_webPlugin->supportsEditCommands()) | 819 if (m_webPlugin->supportsEditCommands()) |
| 816 webFrame->client()->handleCurrentKeyboardEvent(); | 820 webFrame->client()->handleCurrentKeyboardEvent(); |
| 817 | 821 |
| 818 WebCursorInfo cursorInfo; | 822 WebCursorInfo cursorInfo; |
| 819 if (m_webPlugin->handleInputEvent(webEvent, cursorInfo) != | 823 if (m_webPlugin->handleInputEvent(CoalescedWebInputEvent(webEvent), |
| 824 cursorInfo) != |
| 820 WebInputEventResult::NotHandled) | 825 WebInputEventResult::NotHandled) |
| 821 event->setDefaultHandled(); | 826 event->setDefaultHandled(); |
| 822 } | 827 } |
| 823 | 828 |
| 824 void WebPluginContainerImpl::handleTouchEvent(TouchEvent* event) { | 829 void WebPluginContainerImpl::handleTouchEvent(TouchEvent* event) { |
| 825 switch (m_touchEventRequestType) { | 830 switch (m_touchEventRequestType) { |
| 826 case TouchEventRequestTypeNone: | 831 case TouchEventRequestTypeNone: |
| 827 return; | 832 return; |
| 828 case TouchEventRequestTypeRaw: { | 833 case TouchEventRequestTypeRaw: { |
| 829 WebTouchEventBuilder webEvent(LayoutItem(m_element->layoutObject()), | 834 WebTouchEventBuilder webEvent(LayoutItem(m_element->layoutObject()), |
| 830 *event); | 835 *event); |
| 831 if (webEvent.type == WebInputEvent::Undefined) | 836 if (webEvent.type == WebInputEvent::Undefined) |
| 832 return; | 837 return; |
| 833 | 838 |
| 834 if (event->type() == EventTypeNames::touchstart) | 839 if (event->type() == EventTypeNames::touchstart) |
| 835 focusPlugin(); | 840 focusPlugin(); |
| 836 | 841 |
| 837 WebCursorInfo cursorInfo; | 842 WebCursorInfo cursorInfo; |
| 838 if (m_webPlugin->handleInputEvent(webEvent, cursorInfo) != | 843 // TODO(nzolghadr): We need to plumb the coalesced event here. |
| 844 if (m_webPlugin->handleInputEvent(CoalescedWebInputEvent(webEvent), |
| 845 cursorInfo) != |
| 839 WebInputEventResult::NotHandled) | 846 WebInputEventResult::NotHandled) |
| 840 event->setDefaultHandled(); | 847 event->setDefaultHandled(); |
| 841 // FIXME: Can a plugin change the cursor from a touch-event callback? | 848 // FIXME: Can a plugin change the cursor from a touch-event callback? |
| 842 return; | 849 return; |
| 843 } | 850 } |
| 844 case TouchEventRequestTypeSynthesizedMouse: | 851 case TouchEventRequestTypeSynthesizedMouse: |
| 845 synthesizeMouseEventIfPossible(event); | 852 synthesizeMouseEventIfPossible(event); |
| 846 return; | 853 return; |
| 847 } | 854 } |
| 848 } | 855 } |
| 849 | 856 |
| 850 void WebPluginContainerImpl::handleGestureEvent(GestureEvent* event) { | 857 void WebPluginContainerImpl::handleGestureEvent(GestureEvent* event) { |
| 851 WebGestureEventBuilder webEvent(LayoutItem(m_element->layoutObject()), | 858 WebGestureEventBuilder webEvent(LayoutItem(m_element->layoutObject()), |
| 852 *event); | 859 *event); |
| 853 if (webEvent.type == WebInputEvent::Undefined) | 860 if (webEvent.type == WebInputEvent::Undefined) |
| 854 return; | 861 return; |
| 855 if (event->type() == EventTypeNames::gesturetapdown) | 862 if (event->type() == EventTypeNames::gesturetapdown) |
| 856 focusPlugin(); | 863 focusPlugin(); |
| 857 WebCursorInfo cursorInfo; | 864 WebCursorInfo cursorInfo; |
| 858 if (m_webPlugin->handleInputEvent(webEvent, cursorInfo) != | 865 if (m_webPlugin->handleInputEvent(CoalescedWebInputEvent(webEvent), |
| 866 cursorInfo) != |
| 859 WebInputEventResult::NotHandled) { | 867 WebInputEventResult::NotHandled) { |
| 860 event->setDefaultHandled(); | 868 event->setDefaultHandled(); |
| 861 return; | 869 return; |
| 862 } | 870 } |
| 863 | 871 |
| 864 // FIXME: Can a plugin change the cursor from a touch-event callback? | 872 // FIXME: Can a plugin change the cursor from a touch-event callback? |
| 865 } | 873 } |
| 866 | 874 |
| 867 void WebPluginContainerImpl::synthesizeMouseEventIfPossible(TouchEvent* event) { | 875 void WebPluginContainerImpl::synthesizeMouseEventIfPossible(TouchEvent* event) { |
| 868 WebMouseEventBuilder webEvent(this, LayoutItem(m_element->layoutObject()), | 876 WebMouseEventBuilder webEvent(this, LayoutItem(m_element->layoutObject()), |
| 869 *event); | 877 *event); |
| 870 if (webEvent.type == WebInputEvent::Undefined) | 878 if (webEvent.type == WebInputEvent::Undefined) |
| 871 return; | 879 return; |
| 872 | 880 |
| 873 WebCursorInfo cursorInfo; | 881 WebCursorInfo cursorInfo; |
| 874 if (m_webPlugin->handleInputEvent(webEvent, cursorInfo) != | 882 if (m_webPlugin->handleInputEvent(CoalescedWebInputEvent(webEvent), |
| 883 cursorInfo) != |
| 875 WebInputEventResult::NotHandled) | 884 WebInputEventResult::NotHandled) |
| 876 event->setDefaultHandled(); | 885 event->setDefaultHandled(); |
| 877 } | 886 } |
| 878 | 887 |
| 879 void WebPluginContainerImpl::focusPlugin() { | 888 void WebPluginContainerImpl::focusPlugin() { |
| 880 LocalFrame& containingFrame = toFrameView(parent())->frame(); | 889 LocalFrame& containingFrame = toFrameView(parent())->frame(); |
| 881 if (Page* currentPage = containingFrame.page()) | 890 if (Page* currentPage = containingFrame.page()) |
| 882 currentPage->focusController().setFocusedElement(m_element, | 891 currentPage->focusController().setFocusedElement(m_element, |
| 883 &containingFrame); | 892 &containingFrame); |
| 884 else | 893 else |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 973 // frame view. | 982 // frame view. |
| 974 computeClipRectsForPlugin(m_element, windowRect, clipRect, unobscuredRect); | 983 computeClipRectsForPlugin(m_element, windowRect, clipRect, unobscuredRect); |
| 975 } | 984 } |
| 976 getPluginOcclusions(m_element, this->parent(), frameRect(), cutOutRects); | 985 getPluginOcclusions(m_element, this->parent(), frameRect(), cutOutRects); |
| 977 // Convert to the plugin position. | 986 // Convert to the plugin position. |
| 978 for (size_t i = 0; i < cutOutRects.size(); i++) | 987 for (size_t i = 0; i < cutOutRects.size(); i++) |
| 979 cutOutRects[i].move(-frameRect().x(), -frameRect().y()); | 988 cutOutRects[i].move(-frameRect().x(), -frameRect().y()); |
| 980 } | 989 } |
| 981 | 990 |
| 982 } // namespace blink | 991 } // namespace blink |
| OLD | NEW |