| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 952 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 963 // - magnitude roughly matches wheels: f(2) > 25 && f(2) < 100 | 963 // - magnitude roughly matches wheels: f(2) > 25 && f(2) < 100 |
| 964 // - a formula that's relatively easy to use from JavaScript | 964 // - a formula that's relatively easy to use from JavaScript |
| 965 // Note that 'wheel' event deltaY values have their sign inverted. So to | 965 // Note that 'wheel' event deltaY values have their sign inverted. So to |
| 966 // convert a wheel deltaY back to a scale use Math.exp(-deltaY/100). | 966 // convert a wheel deltaY back to a scale use Math.exp(-deltaY/100). |
| 967 DCHECK_GT(pinchEvent.data.pinchUpdate.scale, 0); | 967 DCHECK_GT(pinchEvent.data.pinchUpdate.scale, 0); |
| 968 wheelEvent.deltaY = 100.0f * log(pinchEvent.data.pinchUpdate.scale); | 968 wheelEvent.deltaY = 100.0f * log(pinchEvent.data.pinchUpdate.scale); |
| 969 wheelEvent.hasPreciseScrollingDeltas = true; | 969 wheelEvent.hasPreciseScrollingDeltas = true; |
| 970 wheelEvent.wheelTicksX = 0; | 970 wheelEvent.wheelTicksX = 0; |
| 971 wheelEvent.wheelTicksY = pinchEvent.data.pinchUpdate.scale > 1 ? 1 : -1; | 971 wheelEvent.wheelTicksY = pinchEvent.data.pinchUpdate.scale > 1 ? 1 : -1; |
| 972 | 972 |
| 973 return handleInputEvent(wheelEvent); | 973 return handleInputEvent(CoalescedWebInputEvent(wheelEvent)); |
| 974 } | 974 } |
| 975 | 975 |
| 976 void WebViewImpl::transferActiveWheelFlingAnimation( | 976 void WebViewImpl::transferActiveWheelFlingAnimation( |
| 977 const WebActiveWheelFlingParameters& parameters) { | 977 const WebActiveWheelFlingParameters& parameters) { |
| 978 TRACE_EVENT0("blink", "WebViewImpl::transferActiveWheelFlingAnimation"); | 978 TRACE_EVENT0("blink", "WebViewImpl::transferActiveWheelFlingAnimation"); |
| 979 DCHECK(!m_gestureAnimation); | 979 DCHECK(!m_gestureAnimation); |
| 980 m_positionOnFlingStart = parameters.point; | 980 m_positionOnFlingStart = parameters.point; |
| 981 m_globalPositionOnFlingStart = parameters.globalPoint; | 981 m_globalPositionOnFlingStart = parameters.globalPoint; |
| 982 m_flingModifier = parameters.modifiers; | 982 m_flingModifier = parameters.modifiers; |
| 983 std::unique_ptr<WebGestureCurve> curve = | 983 std::unique_ptr<WebGestureCurve> curve = |
| (...skipping 1126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2110 bool WebViewImpl::hasVerticalScrollbar() { | 2110 bool WebViewImpl::hasVerticalScrollbar() { |
| 2111 return mainFrameImpl() | 2111 return mainFrameImpl() |
| 2112 ->frameView() | 2112 ->frameView() |
| 2113 ->layoutViewportScrollableArea() | 2113 ->layoutViewportScrollableArea() |
| 2114 ->verticalScrollbar(); | 2114 ->verticalScrollbar(); |
| 2115 } | 2115 } |
| 2116 | 2116 |
| 2117 const WebInputEvent* WebViewImpl::m_currentInputEvent = nullptr; | 2117 const WebInputEvent* WebViewImpl::m_currentInputEvent = nullptr; |
| 2118 | 2118 |
| 2119 WebInputEventResult WebViewImpl::handleInputEvent( | 2119 WebInputEventResult WebViewImpl::handleInputEvent( |
| 2120 const WebInputEvent& inputEvent) { | 2120 const CoalescedWebInputEvent& coalescedEvent) { |
| 2121 const WebInputEvent& inputEvent = coalescedEvent.event(); |
| 2121 // TODO(dcheng): The fact that this is getting called when there is no local | 2122 // TODO(dcheng): The fact that this is getting called when there is no local |
| 2122 // main frame is problematic and probably indicates a bug in the input event | 2123 // main frame is problematic and probably indicates a bug in the input event |
| 2123 // routing code. | 2124 // routing code. |
| 2124 if (!mainFrameImpl()) | 2125 if (!mainFrameImpl()) |
| 2125 return WebInputEventResult::NotHandled; | 2126 return WebInputEventResult::NotHandled; |
| 2126 | 2127 |
| 2127 WebAutofillClient* autofillClient = mainFrameImpl()->autofillClient(); | 2128 WebAutofillClient* autofillClient = mainFrameImpl()->autofillClient(); |
| 2128 UserGestureNotifier notifier(this); | 2129 UserGestureNotifier notifier(this); |
| 2129 // On the first input event since page load, |notifier| instructs the | 2130 // On the first input event since page load, |notifier| instructs the |
| 2130 // autofill client to unblock values of password input fields of any forms | 2131 // autofill client to unblock values of password input fields of any forms |
| (...skipping 13 matching lines...) Expand all Loading... |
| 2144 WebInputEvent::GetName(inputEvent.type)); | 2145 WebInputEvent::GetName(inputEvent.type)); |
| 2145 // If we've started a drag and drop operation, ignore input events until | 2146 // If we've started a drag and drop operation, ignore input events until |
| 2146 // we're done. | 2147 // we're done. |
| 2147 if (m_doingDragAndDrop) | 2148 if (m_doingDragAndDrop) |
| 2148 return WebInputEventResult::HandledSuppressed; | 2149 return WebInputEventResult::HandledSuppressed; |
| 2149 | 2150 |
| 2150 if (m_devToolsEmulator->handleInputEvent(inputEvent)) | 2151 if (m_devToolsEmulator->handleInputEvent(inputEvent)) |
| 2151 return WebInputEventResult::HandledSuppressed; | 2152 return WebInputEventResult::HandledSuppressed; |
| 2152 | 2153 |
| 2153 if (InspectorOverlay* overlay = inspectorOverlay()) { | 2154 if (InspectorOverlay* overlay = inspectorOverlay()) { |
| 2154 if (overlay->handleInputEvent(inputEvent)) | 2155 if (overlay->handleInputEvent(coalescedEvent)) |
| 2155 return WebInputEventResult::HandledSuppressed; | 2156 return WebInputEventResult::HandledSuppressed; |
| 2156 } | 2157 } |
| 2157 | 2158 |
| 2158 // Report the event to be NOT processed by WebKit, so that the browser can | 2159 // Report the event to be NOT processed by WebKit, so that the browser can |
| 2159 // handle it appropriately. | 2160 // handle it appropriately. |
| 2160 if (m_ignoreInputEvents) | 2161 if (m_ignoreInputEvents) |
| 2161 return WebInputEventResult::NotHandled; | 2162 return WebInputEventResult::NotHandled; |
| 2162 | 2163 |
| 2163 AutoReset<const WebInputEvent*> currentEventChange(&m_currentInputEvent, | 2164 AutoReset<const WebInputEvent*> currentEventChange(&m_currentInputEvent, |
| 2164 &inputEvent); | 2165 &inputEvent); |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2213 node->dispatchMouseEvent( | 2214 node->dispatchMouseEvent( |
| 2214 PlatformMouseEventBuilder( | 2215 PlatformMouseEventBuilder( |
| 2215 mainFrameImpl()->frameView(), | 2216 mainFrameImpl()->frameView(), |
| 2216 static_cast<const WebMouseEvent&>(inputEvent)), | 2217 static_cast<const WebMouseEvent&>(inputEvent)), |
| 2217 eventType, static_cast<const WebMouseEvent&>(inputEvent).clickCount); | 2218 eventType, static_cast<const WebMouseEvent&>(inputEvent).clickCount); |
| 2218 return WebInputEventResult::HandledSystem; | 2219 return WebInputEventResult::HandledSystem; |
| 2219 } | 2220 } |
| 2220 | 2221 |
| 2221 // FIXME: This should take in the intended frame, not the local frame root. | 2222 // FIXME: This should take in the intended frame, not the local frame root. |
| 2222 WebInputEventResult result = PageWidgetDelegate::handleInputEvent( | 2223 WebInputEventResult result = PageWidgetDelegate::handleInputEvent( |
| 2223 *this, inputEvent, mainFrameImpl()->frame()); | 2224 *this, coalescedEvents, mainFrameImpl()->frame()); |
| 2224 if (result != WebInputEventResult::NotHandled) | 2225 if (result != WebInputEventResult::NotHandled) |
| 2225 return result; | 2226 return result; |
| 2226 | 2227 |
| 2227 // Unhandled pinch events should adjust the scale. | 2228 // Unhandled pinch events should adjust the scale. |
| 2228 if (inputEvent.type == WebInputEvent::GesturePinchUpdate) { | 2229 if (inputEvent.type == WebInputEvent::GesturePinchUpdate) { |
| 2229 const WebGestureEvent& pinchEvent = | 2230 const WebGestureEvent& pinchEvent = |
| 2230 static_cast<const WebGestureEvent&>(inputEvent); | 2231 static_cast<const WebGestureEvent&>(inputEvent); |
| 2231 | 2232 |
| 2232 // For touchpad gestures synthesize a Windows-like wheel event | 2233 // For touchpad gestures synthesize a Windows-like wheel event |
| 2233 // to send to any handlers that may exist. Not necessary for touchscreen | 2234 // to send to any handlers that may exist. Not necessary for touchscreen |
| (...skipping 1990 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4224 if (focusedFrame->localFrameRoot() != mainFrameImpl()->frame()) | 4225 if (focusedFrame->localFrameRoot() != mainFrameImpl()->frame()) |
| 4225 return nullptr; | 4226 return nullptr; |
| 4226 return focusedFrame; | 4227 return focusedFrame; |
| 4227 } | 4228 } |
| 4228 | 4229 |
| 4229 LocalFrame* WebViewImpl::focusedLocalFrameAvailableForIme() const { | 4230 LocalFrame* WebViewImpl::focusedLocalFrameAvailableForIme() const { |
| 4230 return m_imeAcceptEvents ? focusedLocalFrameInWidget() : nullptr; | 4231 return m_imeAcceptEvents ? focusedLocalFrameInWidget() : nullptr; |
| 4231 } | 4232 } |
| 4232 | 4233 |
| 4233 } // namespace blink | 4234 } // namespace blink |
| OLD | NEW |