Commit bce7dcb7 authored by nzolghadr's avatar nzolghadr Committed by Commit bot

Create GestureManager class and move related logic

Extracting most of gesture logic from EventHandler
and move it to the GestureManager class.

BUG=616491

Review-Url: https://codereview.chromium.org/2137113002
Cr-Commit-Position: refs/heads/master@{#405563}
parent fd4f68a3
...@@ -2828,6 +2828,8 @@ ...@@ -2828,6 +2828,8 @@
'events/WindowEventContext.h', 'events/WindowEventContext.h',
'input/EventHandler.cpp', 'input/EventHandler.cpp',
'input/EventHandler.h', 'input/EventHandler.h',
'input/GestureManager.cpp',
'input/GestureManager.h',
'input/InputDeviceCapabilities.cpp', 'input/InputDeviceCapabilities.cpp',
'input/InputDeviceCapabilities.h', 'input/InputDeviceCapabilities.h',
'input/KeyboardEventManager.cpp', 'input/KeyboardEventManager.cpp',
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
#include "core/CoreExport.h" #include "core/CoreExport.h"
#include "core/events/TextEventInputType.h" #include "core/events/TextEventInputType.h"
#include "core/input/GestureManager.h"
#include "core/input/KeyboardEventManager.h" #include "core/input/KeyboardEventManager.h"
#include "core/input/PointerEventManager.h" #include "core/input/PointerEventManager.h"
#include "core/input/ScrollManager.h" #include "core/input/ScrollManager.h"
...@@ -325,6 +326,10 @@ private: ...@@ -325,6 +326,10 @@ private:
void setLastKnownMousePosition(const PlatformMouseEvent&); void setLastKnownMousePosition(const PlatformMouseEvent&);
void setClickNode(Node*);
bool handleDragDropIfPossible(const GestureEventWithHitTestResults&);
static ContainerNode* parentForClickEvent(const Node&);
bool shouldTopControlsConsumeScroll(FloatSize) const; bool shouldTopControlsConsumeScroll(FloatSize) const;
// If the given element is a shadow host and its root has delegatesFocus=false flag, // If the given element is a shadow host and its root has delegatesFocus=false flag,
...@@ -392,6 +397,7 @@ private: ...@@ -392,6 +397,7 @@ private:
PointerEventManager m_pointerEventManager; PointerEventManager m_pointerEventManager;
ScrollManager m_scrollManager; ScrollManager m_scrollManager;
KeyboardEventManager m_keyboardEventManager; KeyboardEventManager m_keyboardEventManager;
GestureManager m_gestureManager;
double m_maxMouseMovedDuration; double m_maxMouseMovedDuration;
...@@ -405,6 +411,9 @@ private: ...@@ -405,6 +411,9 @@ private:
// triggering |touchstart| event was canceled. This suppresses mouse event // triggering |touchstart| event was canceled. This suppresses mouse event
// firing for the current gesture sequence (i.e. until next GestureTapDown). // firing for the current gesture sequence (i.e. until next GestureTapDown).
bool m_suppressMouseEventsFromGestures; bool m_suppressMouseEventsFromGestures;
// TODO(nzolghadr): Temporary until further refactoring
friend GestureManager;
}; };
} // namespace blink } // namespace blink
......
This diff is collapsed.
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef GestureManager_h
#define GestureManager_h
#include "core/CoreExport.h"
#include "core/frame/LocalFrame.h"
#include "core/layout/HitTestRequest.h"
#include "core/page/EventWithHitTestResults.h"
#include "platform/PlatformEvent.h"
#include "public/platform/WebInputEventResult.h"
namespace blink {
class ScrollManager;
class SelectionController;
class PointerEventManager;
// This class takes care of gestures and delegating the action based on the
// gesture to the responsible class.
class CORE_EXPORT GestureManager {
WTF_MAKE_NONCOPYABLE(GestureManager);
DISALLOW_NEW();
public:
GestureManager(LocalFrame*, ScrollManager*, PointerEventManager*,
SelectionController*);
~GestureManager();
DECLARE_TRACE();
void clear();
HitTestRequest::HitTestRequestType getHitTypeForGestureType(PlatformEvent::EventType);
WebInputEventResult handleGestureEventInFrame(const GestureEventWithHitTestResults&);
// TODO(nzolghadr): This can probably be hidden and the related logic
// be moved to this class (see crrev.com/112023010). Since that might cause
// regression it's better to move that logic in another change.
double getLastShowPressTimestamp() const;
private:
WebInputEventResult handleGestureShowPress();
WebInputEventResult handleGestureTapDown(const GestureEventWithHitTestResults&);
WebInputEventResult handleGestureTap(const GestureEventWithHitTestResults&);
WebInputEventResult handleGestureLongPress(const GestureEventWithHitTestResults&);
WebInputEventResult handleGestureLongTap(const GestureEventWithHitTestResults&);
FrameHost* frameHost() const;
// NOTE: If adding a new field to this class please ensure that it is
// cleared if needed in |GestureManager::clear()|.
const Member<LocalFrame> m_frame;
ScrollManager* m_scrollManager;
PointerEventManager* m_pointerEventManager;
// Set on GestureTapDown if the |pointerdown| event corresponding to the
// triggering |touchstart| event was canceled. This suppresses mouse event
// firing for the current gesture sequence (i.e. until next GestureTapDown).
bool m_suppressMouseEventsFromGestures;
bool m_longTapShouldInvokeContextMenu;
const Member<SelectionController> m_selectionController;
double m_lastShowPressTimestamp;
};
} // namespace blink
#endif // GestureManager_h
...@@ -24,7 +24,7 @@ class CORE_EXPORT KeyboardEventManager { ...@@ -24,7 +24,7 @@ class CORE_EXPORT KeyboardEventManager {
WTF_MAKE_NONCOPYABLE(KeyboardEventManager); WTF_MAKE_NONCOPYABLE(KeyboardEventManager);
DISALLOW_NEW(); DISALLOW_NEW();
public: public:
explicit KeyboardEventManager(LocalFrame*, ScrollManager*); KeyboardEventManager(LocalFrame*, ScrollManager*);
~KeyboardEventManager(); ~KeyboardEventManager();
DECLARE_TRACE(); DECLARE_TRACE();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment