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 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 62 #include "core/inspector/InspectorController.h" | 62 #include "core/inspector/InspectorController.h" |
| 63 #include "core/loader/FrameLoader.h" | 63 #include "core/loader/FrameLoader.h" |
| 64 #include "core/loader/FrameLoaderClient.h" | 64 #include "core/loader/FrameLoaderClient.h" |
| 65 #include "core/page/AutoscrollController.h" | 65 #include "core/page/AutoscrollController.h" |
| 66 #include "core/page/BackForwardClient.h" | 66 #include "core/page/BackForwardClient.h" |
| 67 #include "core/page/Chrome.h" | 67 #include "core/page/Chrome.h" |
| 68 #include "core/page/ChromeClient.h" | 68 #include "core/page/ChromeClient.h" |
| 69 #include "core/page/DragController.h" | 69 #include "core/page/DragController.h" |
| 70 #include "core/page/DragState.h" | 70 #include "core/page/DragState.h" |
| 71 #include "core/page/EditorClient.h" | 71 #include "core/page/EditorClient.h" |
| 72 #include "core/page/EventWithHitTestResults.h" | |
| 73 #include "core/page/FocusController.h" | 72 #include "core/page/FocusController.h" |
| 74 #include "core/page/FrameTree.h" | 73 #include "core/page/FrameTree.h" |
| 75 #include "core/page/Page.h" | 74 #include "core/page/Page.h" |
| 76 #include "core/page/SpatialNavigation.h" | 75 #include "core/page/SpatialNavigation.h" |
| 77 #include "core/page/TouchAdjustment.h" | 76 #include "core/page/TouchAdjustment.h" |
| 78 #include "core/rendering/HitTestRequest.h" | 77 #include "core/rendering/HitTestRequest.h" |
| 79 #include "core/rendering/HitTestResult.h" | 78 #include "core/rendering/HitTestResult.h" |
| 80 #include "core/rendering/RenderFlowThread.h" | 79 #include "core/rendering/RenderFlowThread.h" |
| 81 #include "core/rendering/RenderLayer.h" | 80 #include "core/rendering/RenderLayer.h" |
| 82 #include "core/rendering/RenderTextControlSingleLine.h" | 81 #include "core/rendering/RenderTextControlSingleLine.h" |
| (...skipping 1973 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2056 ScrollableArea* sa = *it; | 2055 ScrollableArea* sa = *it; |
| 2057 ScrollAnimator* animator = sa->existingScrollAnimator(); | 2056 ScrollAnimator* animator = sa->existingScrollAnimator(); |
| 2058 if (animator) | 2057 if (animator) |
| 2059 animator->cancelAnimations(); | 2058 animator->cancelAnimations(); |
| 2060 } | 2059 } |
| 2061 return false; | 2060 return false; |
| 2062 } | 2061 } |
| 2063 | 2062 |
| 2064 bool EventHandler::handleGestureEvent(const PlatformGestureEvent& gestureEvent) | 2063 bool EventHandler::handleGestureEvent(const PlatformGestureEvent& gestureEvent) |
| 2065 { | 2064 { |
| 2066 TRACE_EVENT0("input", "EventHandler::handleGestureEvent"); | 2065 TRACE_EVENT0("input", "EventHandler::handleGestureEvent"); |
|
Rick Byers
2014/08/22 14:49:57
How about we remove this trace (since it's normall
Zeeshan Qureshi
2014/08/22 15:30:50
Agreed, I only added here because I was thinking a
| |
| 2067 | 2066 |
| 2068 // Propagation to inner frames is handled below this function. | 2067 // Propagation to inner frames is handled below this function. |
| 2069 ASSERT(m_frame == m_frame->localFrameRoot()); | 2068 ASSERT(m_frame == m_frame->localFrameRoot()); |
| 2070 | 2069 |
| 2071 // Scrolling-related gesture events invoke EventHandler recursively for each frame down | 2070 // Scrolling-related gesture events invoke EventHandler recursively for each frame down |
| 2072 // the chain, doing a single-frame hit-test per frame. This matches handleWh eelEvent. | 2071 // the chain, doing a single-frame hit-test per frame. This matches handleWh eelEvent. |
| 2073 // Perhaps we could simplify things by rewriting scroll handling to work inn er frame | |
| 2074 // out, and then unify with other gesture events. | |
| 2075 if (gestureEvent.isScrollEvent()) | 2072 if (gestureEvent.isScrollEvent()) |
| 2076 return handleGestureScrollEvent(gestureEvent); | 2073 handleGestureScrollEvent(gestureEvent); |
|
Rick Byers
2014/08/22 14:49:57
you still need the return here, right?
Zeeshan Qureshi
2014/08/22 15:30:50
Oh yes, and all the tests passed!
| |
| 2077 | |
| 2078 // Non-scrolling related gesture events instead do a single cross-frame hit- test and | |
| 2079 // jump directly to the inner most frame. This matches handleMousePressEvent etc. | |
| 2080 | 2074 |
| 2081 // Hit test across all frames and do touch adjustment as necessary for the e vent type. | 2075 // Hit test across all frames and do touch adjustment as necessary for the e vent type. |
| 2082 GestureEventWithHitTestResults targetedEvent = targetGestureEvent(gestureEve nt); | 2076 GestureEventWithHitTestResults targetedEvent = targetGestureEvent(gestureEve nt); |
| 2083 | 2077 |
| 2078 return handleGestureEvent(targetedEvent); | |
| 2079 } | |
| 2080 | |
| 2081 bool EventHandler::handleGestureEvent(const GestureEventWithHitTestResults& targ etedEvent) | |
| 2082 { | |
| 2083 TRACE_EVENT0("input", "EventHandler::handleGestureEvent"); | |
| 2084 | |
| 2085 // Propagation to inner frames is handled below this function. | |
| 2086 ASSERT(m_frame == m_frame->localFrameRoot()); | |
| 2087 | |
| 2088 // Non-scrolling related gesture events do a single cross-frame hit-test and jump | |
| 2089 // directly to the inner most frame. This matches handleMousePressEvent etc. | |
| 2090 ASSERT(!targetedEvent.event().isScrollEvent()); | |
| 2091 | |
| 2084 // Route to the correct frame. | 2092 // Route to the correct frame. |
| 2085 if (LocalFrame* innerFrame = targetedEvent.hitTestResult().innerNodeFrame()) | 2093 if (LocalFrame* innerFrame = targetedEvent.hitTestResult().innerNodeFrame()) |
| 2086 return innerFrame->eventHandler().handleGestureEventInFrame(targetedEven t); | 2094 return innerFrame->eventHandler().handleGestureEventInFrame(targetedEven t); |
| 2087 | 2095 |
| 2088 // No hit test result, handle in root instance. Perhaps we should just retur n false instead? | 2096 // No hit test result, handle in root instance. Perhaps we should just retur n false instead? |
| 2089 return handleGestureEventInFrame(targetedEvent); | 2097 return handleGestureEventInFrame(targetedEvent); |
| 2090 } | 2098 } |
| 2091 | 2099 |
| 2092 bool EventHandler::handleGestureEventInFrame(const GestureEventWithHitTestResult s& targetedEvent) | 2100 bool EventHandler::handleGestureEventInFrame(const GestureEventWithHitTestResult s& targetedEvent) |
| 2093 { | 2101 { |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2133 break; | 2141 break; |
| 2134 default: | 2142 default: |
| 2135 ASSERT_NOT_REACHED(); | 2143 ASSERT_NOT_REACHED(); |
| 2136 } | 2144 } |
| 2137 | 2145 |
| 2138 return false; | 2146 return false; |
| 2139 } | 2147 } |
| 2140 | 2148 |
| 2141 bool EventHandler::handleGestureScrollEvent(const PlatformGestureEvent& gestureE vent) | 2149 bool EventHandler::handleGestureScrollEvent(const PlatformGestureEvent& gestureE vent) |
| 2142 { | 2150 { |
| 2151 TRACE_EVENT0("input", "EventHandler::handleGestureScrollEvent"); | |
| 2152 | |
| 2143 RefPtrWillBeRawPtr<Node> eventTarget = nullptr; | 2153 RefPtrWillBeRawPtr<Node> eventTarget = nullptr; |
| 2144 RefPtr<Scrollbar> scrollbar; | 2154 RefPtr<Scrollbar> scrollbar; |
| 2145 if (gestureEvent.type() != PlatformEvent::GestureScrollBegin) { | 2155 if (gestureEvent.type() != PlatformEvent::GestureScrollBegin) { |
| 2146 scrollbar = m_scrollbarHandlingScrollGesture.get(); | 2156 scrollbar = m_scrollbarHandlingScrollGesture.get(); |
| 2147 eventTarget = m_scrollGestureHandlingNode.get(); | 2157 eventTarget = m_scrollGestureHandlingNode.get(); |
| 2148 } | 2158 } |
| 2149 | 2159 |
| 2150 if (!eventTarget) { | 2160 if (!eventTarget) { |
| 2151 Document* document = m_frame->document(); | 2161 Document* document = m_frame->document(); |
| 2152 if (!document->renderView()) | 2162 if (!document->renderView()) |
| (...skipping 1707 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3860 unsigned EventHandler::accessKeyModifiers() | 3870 unsigned EventHandler::accessKeyModifiers() |
| 3861 { | 3871 { |
| 3862 #if OS(MACOSX) | 3872 #if OS(MACOSX) |
| 3863 return PlatformEvent::CtrlKey | PlatformEvent::AltKey; | 3873 return PlatformEvent::CtrlKey | PlatformEvent::AltKey; |
| 3864 #else | 3874 #else |
| 3865 return PlatformEvent::AltKey; | 3875 return PlatformEvent::AltKey; |
| 3866 #endif | 3876 #endif |
| 3867 } | 3877 } |
| 3868 | 3878 |
| 3869 } // namespace blink | 3879 } // namespace blink |
| OLD | NEW |