Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(124)

Side by Side Diff: third_party/WebKit/Source/core/input/EventHandler.cpp

Issue 2514733003: Move EventHandler timers to per-frame task queues. (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights
3 * reserved. 3 * reserved.
4 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) 4 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org)
5 * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies) 5 * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies)
6 * 6 *
7 * Redistribution and use in source and binary forms, with or without 7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions 8 * modification, are permitted provided that the following conditions
9 * are met: 9 * are met:
10 * 1. Redistributions of source code must retain the above copyright 10 * 1. Redistributions of source code must retain the above copyright
(...skipping 17 matching lines...) Expand all
28 28
29 #include "core/input/EventHandler.h" 29 #include "core/input/EventHandler.h"
30 30
31 #include "bindings/core/v8/ExceptionStatePlaceholder.h" 31 #include "bindings/core/v8/ExceptionStatePlaceholder.h"
32 #include "core/HTMLNames.h" 32 #include "core/HTMLNames.h"
33 #include "core/InputTypeNames.h" 33 #include "core/InputTypeNames.h"
34 #include "core/clipboard/DataTransfer.h" 34 #include "core/clipboard/DataTransfer.h"
35 #include "core/dom/DOMNodeIds.h" 35 #include "core/dom/DOMNodeIds.h"
36 #include "core/dom/Document.h" 36 #include "core/dom/Document.h"
37 #include "core/dom/DocumentUserGestureToken.h" 37 #include "core/dom/DocumentUserGestureToken.h"
38 #include "core/dom/TaskRunnerHelper.h"
38 #include "core/dom/TouchList.h" 39 #include "core/dom/TouchList.h"
39 #include "core/dom/shadow/FlatTreeTraversal.h" 40 #include "core/dom/shadow/FlatTreeTraversal.h"
40 #include "core/dom/shadow/ShadowRoot.h" 41 #include "core/dom/shadow/ShadowRoot.h"
41 #include "core/editing/EditingUtilities.h" 42 #include "core/editing/EditingUtilities.h"
42 #include "core/editing/Editor.h" 43 #include "core/editing/Editor.h"
43 #include "core/editing/FrameSelection.h" 44 #include "core/editing/FrameSelection.h"
44 #include "core/editing/SelectionController.h" 45 #include "core/editing/SelectionController.h"
45 #include "core/events/EventPath.h" 46 #include "core/events/EventPath.h"
46 #include "core/events/GestureEvent.h" 47 #include "core/events/GestureEvent.h"
47 #include "core/events/KeyboardEvent.h" 48 #include "core/events/KeyboardEvent.h"
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 const Cursor& cursor() const { 154 const Cursor& cursor() const {
154 ASSERT(m_isCursorChange); 155 ASSERT(m_isCursorChange);
155 return m_cursor; 156 return m_cursor;
156 } 157 }
157 158
158 private: 159 private:
159 bool m_isCursorChange; 160 bool m_isCursorChange;
160 Cursor m_cursor; 161 Cursor m_cursor;
161 }; 162 };
162 163
163 EventHandler::EventHandler(LocalFrame* frame) 164 EventHandler::EventHandler(LocalFrame& frame)
164 : m_frame(frame), 165 : m_frame(frame),
165 m_selectionController(SelectionController::create(*frame)), 166 m_selectionController(SelectionController::create(frame)),
166 m_hoverTimer(this, &EventHandler::hoverTimerFired), 167 m_hoverTimer(TaskRunnerHelper::get(TaskType::UserInteraction, &frame),
dcheng 2016/11/18 06:11:37 The spec doesn't say that this must happen on the
167 m_cursorUpdateTimer(this, &EventHandler::cursorUpdateTimerFired), 168 this,
169 &EventHandler::hoverTimerFired),
170 m_cursorUpdateTimer(TaskRunnerHelper::get(TaskType::Internal, &frame),
dcheng 2016/11/18 06:11:37 On the other hand, cursor updates aren't really in
171 this,
172 &EventHandler::cursorUpdateTimerFired),
168 m_eventHandlerWillResetCapturingMouseEventsNode(0), 173 m_eventHandlerWillResetCapturingMouseEventsNode(0),
169 m_shouldOnlyFireDragOverEvent(false), 174 m_shouldOnlyFireDragOverEvent(false),
170 m_scrollManager(new ScrollManager(frame)), 175 m_scrollManager(new ScrollManager(frame)),
171 m_mouseEventManager(new MouseEventManager(frame, m_scrollManager)), 176 m_mouseEventManager(new MouseEventManager(frame, *m_scrollManager)),
172 m_keyboardEventManager(new KeyboardEventManager(frame, m_scrollManager)), 177 m_keyboardEventManager(new KeyboardEventManager(frame, *m_scrollManager)),
173 m_pointerEventManager( 178 m_pointerEventManager(
174 new PointerEventManager(frame, m_mouseEventManager)), 179 new PointerEventManager(frame, *m_mouseEventManager)),
175 m_gestureManager(new GestureManager(frame, 180 m_gestureManager(new GestureManager(frame,
176 m_scrollManager, 181 *m_scrollManager,
177 m_mouseEventManager, 182 *m_mouseEventManager,
178 m_pointerEventManager, 183 *m_pointerEventManager,
179 m_selectionController)), 184 *m_selectionController)),
180 m_activeIntervalTimer(this, &EventHandler::activeIntervalTimerFired) {} 185 m_activeIntervalTimer(
186 TaskRunnerHelper::get(TaskType::UserInteraction, &frame),
dcheng 2016/11/18 06:11:37 This is used when handling gesture events, so for
187 this,
188 &EventHandler::activeIntervalTimerFired) {}
181 189
182 DEFINE_TRACE(EventHandler) { 190 DEFINE_TRACE(EventHandler) {
183 visitor->trace(m_frame); 191 visitor->trace(m_frame);
184 visitor->trace(m_selectionController); 192 visitor->trace(m_selectionController);
185 visitor->trace(m_capturingMouseEventsNode); 193 visitor->trace(m_capturingMouseEventsNode);
186 visitor->trace(m_lastMouseMoveEventSubframe); 194 visitor->trace(m_lastMouseMoveEventSubframe);
187 visitor->trace(m_lastScrollbarUnderMouse); 195 visitor->trace(m_lastScrollbarUnderMouse);
188 visitor->trace(m_dragTarget); 196 visitor->trace(m_dragTarget);
189 visitor->trace(m_frameSetBeingResized); 197 visitor->trace(m_frameSetBeingResized);
190 visitor->trace(m_scrollManager); 198 visitor->trace(m_scrollManager);
(...skipping 1715 matching lines...) Expand 10 before | Expand all | Expand 10 after
1906 void EventHandler::setResizingFrameSet(HTMLFrameSetElement* frameSet) { 1914 void EventHandler::setResizingFrameSet(HTMLFrameSetElement* frameSet) {
1907 m_frameSetBeingResized = frameSet; 1915 m_frameSetBeingResized = frameSet;
1908 } 1916 }
1909 1917
1910 void EventHandler::resizeScrollableAreaDestroyed() { 1918 void EventHandler::resizeScrollableAreaDestroyed() {
1911 m_scrollManager->clearResizeScrollableArea(true); 1919 m_scrollManager->clearResizeScrollableArea(true);
1912 } 1920 }
1913 1921
1914 void EventHandler::hoverTimerFired(TimerBase*) { 1922 void EventHandler::hoverTimerFired(TimerBase*) {
1915 TRACE_EVENT0("input", "EventHandler::hoverTimerFired"); 1923 TRACE_EVENT0("input", "EventHandler::hoverTimerFired");
1916 m_hoverTimer.stop();
1917 1924
1918 ASSERT(m_frame); 1925 ASSERT(m_frame);
1919 ASSERT(m_frame->document()); 1926 ASSERT(m_frame->document());
1920 1927
1921 if (LayoutViewItem layoutItem = m_frame->contentLayoutItem()) { 1928 if (LayoutViewItem layoutItem = m_frame->contentLayoutItem()) {
1922 if (FrameView* view = m_frame->view()) { 1929 if (FrameView* view = m_frame->view()) {
1923 HitTestRequest request(HitTestRequest::Move); 1930 HitTestRequest request(HitTestRequest::Move);
1924 HitTestResult result(request, 1931 HitTestResult result(request,
1925 view->rootFrameToContents( 1932 view->rootFrameToContents(
1926 m_mouseEventManager->lastKnownMousePosition())); 1933 m_mouseEventManager->lastKnownMousePosition()));
1927 layoutItem.hitTest(result); 1934 layoutItem.hitTest(result);
1928 m_frame->document()->updateHoverActiveState( 1935 m_frame->document()->updateHoverActiveState(
1929 request, result.innerElement(), result.scrollbar()); 1936 request, result.innerElement(), result.scrollbar());
1930 } 1937 }
1931 } 1938 }
1932 } 1939 }
1933 1940
1934 void EventHandler::activeIntervalTimerFired(TimerBase*) { 1941 void EventHandler::activeIntervalTimerFired(TimerBase*) {
1935 TRACE_EVENT0("input", "EventHandler::activeIntervalTimerFired"); 1942 TRACE_EVENT0("input", "EventHandler::activeIntervalTimerFired");
1936 m_activeIntervalTimer.stop();
1937 1943
1938 if (m_frame && m_frame->document() && m_lastDeferredTapElement) { 1944 if (m_frame && m_frame->document() && m_lastDeferredTapElement) {
1939 // FIXME: Enable condition when http://crbug.com/226842 lands 1945 // FIXME: Enable condition when http://crbug.com/226842 lands
1940 // m_lastDeferredTapElement.get() == m_frame->document()->activeElement() 1946 // m_lastDeferredTapElement.get() == m_frame->document()->activeElement()
1941 HitTestRequest request(HitTestRequest::TouchEvent | 1947 HitTestRequest request(HitTestRequest::TouchEvent |
1942 HitTestRequest::Release); 1948 HitTestRequest::Release);
1943 m_frame->document()->updateHoverActiveState( 1949 m_frame->document()->updateHoverActiveState(
1944 request, m_lastDeferredTapElement.get(), false); 1950 request, m_lastDeferredTapElement.get(), false);
1945 } 1951 }
1946 m_lastDeferredTapElement = nullptr; 1952 m_lastDeferredTapElement = nullptr;
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
2102 } 2108 }
2103 2109
2104 FrameHost* EventHandler::frameHost() const { 2110 FrameHost* EventHandler::frameHost() const {
2105 if (!m_frame->page()) 2111 if (!m_frame->page())
2106 return nullptr; 2112 return nullptr;
2107 2113
2108 return &m_frame->page()->frameHost(); 2114 return &m_frame->page()->frameHost();
2109 } 2115 }
2110 2116
2111 } // namespace blink 2117 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/input/EventHandler.h ('k') | third_party/WebKit/Source/core/input/GestureManager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698