Chromium Code Reviews| OLD | NEW | 
|---|---|
| 1 /* | 1 /* | 
| 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserv ed. | 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserv ed. | 
| 3 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) | 3 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) | 
| 4 * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies) | 4 * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies) | 
| 5 * | 5 * | 
| 6 * Redistribution and use in source and binary forms, with or without | 6 * Redistribution and use in source and binary forms, with or without | 
| 7 * modification, are permitted provided that the following conditions | 7 * modification, are permitted provided that the following conditions | 
| 8 * are met: | 8 * are met: | 
| 9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. 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 1764 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1775 if (node && !node->dispatchWheelEvent(event)) | 1775 if (node && !node->dispatchWheelEvent(event)) | 
| 1776 RETURN_WHEEL_EVENT_HANDLED(); | 1776 RETURN_WHEEL_EVENT_HANDLED(); | 
| 1777 } | 1777 } | 
| 1778 | 1778 | 
| 1779 // We do another check on the frame view because the event handler can run | 1779 // We do another check on the frame view because the event handler can run | 
| 1780 // JS which results in the frame getting destroyed. | 1780 // JS which results in the frame getting destroyed. | 
| 1781 view = m_frame->view(); | 1781 view = m_frame->view(); | 
| 1782 if (!view) | 1782 if (!view) | 
| 1783 return false; | 1783 return false; | 
| 1784 | 1784 | 
| 1785 if (view->scrollableArea()->handleWheel(event).didScroll()) | 1785 ScrollResult scrollResult = view->scrollableArea()->handleWheel(event); | 
| 1786 if (m_frame->settings() && m_frame->settings()->elasticOverscrollEnabled()) | |
| 1787 handleOverscroll(scrollResult); | |
| 1788 if (scrollResult.didScroll()) | |
| 1786 RETURN_WHEEL_EVENT_HANDLED(); | 1789 RETURN_WHEEL_EVENT_HANDLED(); | 
| 1787 | 1790 | 
| 1788 return false; | 1791 return false; | 
| 1789 #undef RETURN_WHEEL_EVENT_HANDLED | 1792 #undef RETURN_WHEEL_EVENT_HANDLED | 
| 1790 } | 1793 } | 
| 1791 | 1794 | 
| 1792 void EventHandler::defaultWheelEventHandler(Node* startNode, WheelEvent* wheelEv ent) | 1795 void EventHandler::defaultWheelEventHandler(Node* startNode, WheelEvent* wheelEv ent) | 
| 1793 { | 1796 { | 
| 1794 if (!startNode || !wheelEvent) | 1797 if (!startNode || !wheelEvent) | 
| 1795 return; | 1798 return; | 
| (...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2248 } | 2251 } | 
| 2249 | 2252 | 
| 2250 void EventHandler::resetOverscroll(bool didScrollX, bool didScrollY) | 2253 void EventHandler::resetOverscroll(bool didScrollX, bool didScrollY) | 
| 2251 { | 2254 { | 
| 2252 if (didScrollX) | 2255 if (didScrollX) | 
| 2253 m_accumulatedRootOverscroll.setWidth(0); | 2256 m_accumulatedRootOverscroll.setWidth(0); | 
| 2254 if (didScrollY) | 2257 if (didScrollY) | 
| 2255 m_accumulatedRootOverscroll.setHeight(0); | 2258 m_accumulatedRootOverscroll.setHeight(0); | 
| 2256 } | 2259 } | 
| 2257 | 2260 | 
| 2258 void EventHandler::handleOverscroll(const ScrollResult& scrollResult, const Plat formGestureEvent& gestureEvent) | 2261 void EventHandler::handleOverscroll(const ScrollResult& scrollResult, const Floa tPoint& position, const FloatSize& velocity) | 
| 2259 { | 2262 { | 
| 2260 if (m_frame->isMainFrame() && m_frame->view() && m_frame->view()->scrollable Area()) { | 2263 if (m_frame->isMainFrame() && m_frame->view() && m_frame->view()->scrollable Area()) { | 
| 2261 ScrollableArea* scrollablearea = m_frame->view()->scrollableArea(); | 2264 ScrollableArea* scrollablearea = m_frame->view()->scrollableArea(); | 
| 2262 // Set unusedDelta if axis is scrollable, else set 0 to ensure overflow is not reported on non-scrollable axes. | 2265 FloatSize unusedDelta; | 
| 2263 FloatSize unusedDelta(scrollablearea->scrollSize(HorizontalScrollbar) ? scrollResult.unusedScrollDeltaX : 0, scrollablearea->scrollSize(VerticalScrollba r) ? scrollResult.unusedScrollDeltaY : 0); | 2266 if (m_frame->settings() && m_frame->settings()->elasticOverscrollEnabled ()) { | 
| 2267 // ElasticOverscroll should be applied even on non-Scrollable axis. | |
| 
 
bokan
2015/06/25 17:50:31
This distinction seems strange to me, we shouldn't
 
MuVen
2015/06/26 09:55:44
Done.
 
 | |
| 2268 unusedDelta.setWidth(scrollResult.unusedScrollDeltaX); | |
| 2269 unusedDelta.setHeight(scrollResult.unusedScrollDeltaY); | |
| 2270 } else { | |
| 2271 // In Case of android set unusedDelta if axis is scrollable, else se t 0 to ensure overflow is not reported on non-scrollable axes. | |
| 2272 unusedDelta.setWidth(scrollablearea->scrollSize(HorizontalScrollbar) ? scrollResult.unusedScrollDeltaX : 0); | |
| 2273 unusedDelta.setHeight(scrollablearea->scrollSize(VerticalScrollbar) ? scrollResult.unusedScrollDeltaY : 0); | |
| 2274 } | |
| 2264 resetOverscroll(scrollResult.didScrollX, scrollResult.didScrollY); | 2275 resetOverscroll(scrollResult.didScrollX, scrollResult.didScrollY); | 
| 2265 if (unusedDelta != FloatSize()) { | 2276 if (unusedDelta != FloatSize()) { | 
| 2266 m_accumulatedRootOverscroll += unusedDelta; | 2277 m_accumulatedRootOverscroll += unusedDelta; | 
| 2267 FloatPoint position = FloatPoint(gestureEvent.position().x(), gestur eEvent.position().y()); | |
| 2268 FloatSize velocity = FloatSize(gestureEvent.velocityX(), gestureEven t.velocityY()); | |
| 2269 m_frame->chromeClient().didOverscroll(unusedDelta, m_accumulatedRoot Overscroll, position, velocity); | 2278 m_frame->chromeClient().didOverscroll(unusedDelta, m_accumulatedRoot Overscroll, position, velocity); | 
| 2270 } | 2279 } | 
| 2271 } | 2280 } | 
| 2272 } | 2281 } | 
| 2273 | 2282 | 
| 2274 bool EventHandler::handleGestureScrollUpdate(const PlatformGestureEvent& gesture Event) | 2283 bool EventHandler::handleGestureScrollUpdate(const PlatformGestureEvent& gesture Event) | 
| 2275 { | 2284 { | 
| 2276 ASSERT(gestureEvent.type() == PlatformEvent::GestureScrollUpdate); | 2285 ASSERT(gestureEvent.type() == PlatformEvent::GestureScrollUpdate); | 
| 2277 | 2286 | 
| 2278 FloatSize delta(gestureEvent.deltaX(), gestureEvent.deltaY()); | 2287 FloatSize delta(gestureEvent.deltaX(), gestureEvent.deltaY()); | 
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2347 setFrameWasScrolledByUser(); | 2356 setFrameWasScrolledByUser(); | 
| 2348 return true; | 2357 return true; | 
| 2349 } | 2358 } | 
| 2350 } | 2359 } | 
| 2351 | 2360 | 
| 2352 if (RuntimeEnabledFeatures::scrollCustomizationEnabled()) | 2361 if (RuntimeEnabledFeatures::scrollCustomizationEnabled()) | 
| 2353 return false; | 2362 return false; | 
| 2354 | 2363 | 
| 2355 // Try to scroll the frame view. | 2364 // Try to scroll the frame view. | 
| 2356 ScrollResult scrollResult = m_frame->applyScrollDelta(delta, false); | 2365 ScrollResult scrollResult = m_frame->applyScrollDelta(delta, false); | 
| 2357 handleOverscroll(scrollResult, gestureEvent); | 2366 FloatPoint position = FloatPoint(gestureEvent.position().x(), gestureEvent.p osition().y()); | 
| 2367 FloatSize velocity = FloatSize(gestureEvent.velocityX(), gestureEvent.veloci tyY()); | |
| 2368 handleOverscroll(scrollResult, position, velocity); | |
| 2358 if (scrollResult.didScroll()) { | 2369 if (scrollResult.didScroll()) { | 
| 2359 setFrameWasScrolledByUser(); | 2370 setFrameWasScrolledByUser(); | 
| 2360 return true; | 2371 return true; | 
| 2361 } | 2372 } | 
| 2362 | 2373 | 
| 2363 return false; | 2374 return false; | 
| 2364 } | 2375 } | 
| 2365 | 2376 | 
| 2366 void EventHandler::clearGestureScrollState() | 2377 void EventHandler::clearGestureScrollState() | 
| 2367 { | 2378 { | 
| (...skipping 1522 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3890 unsigned EventHandler::accessKeyModifiers() | 3901 unsigned EventHandler::accessKeyModifiers() | 
| 3891 { | 3902 { | 
| 3892 #if OS(MACOSX) | 3903 #if OS(MACOSX) | 
| 3893 return PlatformEvent::CtrlKey | PlatformEvent::AltKey; | 3904 return PlatformEvent::CtrlKey | PlatformEvent::AltKey; | 
| 3894 #else | 3905 #else | 
| 3895 return PlatformEvent::AltKey; | 3906 return PlatformEvent::AltKey; | 
| 3896 #endif | 3907 #endif | 
| 3897 } | 3908 } | 
| 3898 | 3909 | 
| 3899 } // namespace blink | 3910 } // namespace blink | 
| OLD | NEW |