Commit e7497abb authored by tkent@chromium.org's avatar tkent@chromium.org

Oilpan: Prepare to move EventHandler to Oilpan heap.

BUG=

Review URL: https://codereview.chromium.org/317073007

git-svn-id: svn://svn.chromium.org/blink/trunk@175537 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 968ecb13
......@@ -96,7 +96,7 @@ inline LocalFrame::LocalFrame(FrameLoaderClient* client, FrameHost* host, FrameO
, m_editor(Editor::create(*this))
, m_spellChecker(SpellChecker::create(*this))
, m_selection(FrameSelection::create(this))
, m_eventHandler(adoptPtr(new EventHandler(this)))
, m_eventHandler(adoptPtrWillBeNoop(new EventHandler(this)))
, m_console(FrameConsole::create(*this))
, m_inputMethodController(InputMethodController::create(*this))
, m_pageZoomFactor(parentPageZoomFactor(this))
......
......@@ -164,7 +164,7 @@ namespace WebCore {
const OwnPtrWillBePersistent<Editor> m_editor;
const OwnPtr<SpellChecker> m_spellChecker;
const OwnPtrWillBePersistent<FrameSelection> m_selection;
const OwnPtr<EventHandler> m_eventHandler;
const OwnPtrWillBePersistent<EventHandler> m_eventHandler;
const OwnPtr<FrameConsole> m_console;
OwnPtr<InputMethodController> m_inputMethodController;
......
......@@ -237,6 +237,24 @@ EventHandler::~EventHandler()
ASSERT(!m_fakeMouseMoveEventTimer.isActive());
}
void EventHandler::trace(Visitor* visitor)
{
visitor->trace(m_mousePressNode);
visitor->trace(m_capturingMouseEventsNode);
visitor->trace(m_nodeUnderMouse);
visitor->trace(m_lastNodeUnderMouse);
visitor->trace(m_clickNode);
visitor->trace(m_dragTarget);
visitor->trace(m_frameSetBeingResized);
visitor->trace(m_latchedWheelEventNode);
visitor->trace(m_previousWheelScrolledNode);
visitor->trace(m_targetForTouchID);
visitor->trace(m_touchSequenceDocument);
visitor->trace(m_scrollGestureHandlingNode);
visitor->trace(m_previousGestureScrolledNode);
visitor->trace(m_lastDeferredTapElement);
}
DragState& EventHandler::dragState()
{
#if ENABLE(OILPAN)
......
......@@ -84,11 +84,12 @@ class DragState;
enum AppendTrailingWhitespace { ShouldAppendTrailingWhitespace, DontAppendTrailingWhitespace };
enum CheckDragHysteresis { ShouldCheckDragHysteresis, DontCheckDragHysteresis };
class EventHandler {
class EventHandler : public NoBaseWillBeGarbageCollectedFinalized<EventHandler> {
WTF_MAKE_NONCOPYABLE(EventHandler);
public:
explicit EventHandler(LocalFrame*);
~EventHandler();
void trace(Visitor*);
void clear();
void nodeWillBeRemoved(Node&);
......@@ -312,7 +313,7 @@ private:
bool m_mousePressed;
bool m_capturesDragging;
RefPtrWillBePersistent<Node> m_mousePressNode;
RefPtrWillBeMember<Node> m_mousePressNode;
bool m_mouseDownMayStartSelect;
bool m_mouseDownMayStartDrag;
......@@ -334,22 +335,22 @@ private:
RenderLayerScrollableArea* m_resizeScrollableArea;
RefPtrWillBePersistent<Node> m_capturingMouseEventsNode;
RefPtrWillBeMember<Node> m_capturingMouseEventsNode;
bool m_eventHandlerWillResetCapturingMouseEventsNode;
RefPtrWillBePersistent<Node> m_nodeUnderMouse;
RefPtrWillBePersistent<Node> m_lastNodeUnderMouse;
RefPtrWillBeMember<Node> m_nodeUnderMouse;
RefPtrWillBeMember<Node> m_lastNodeUnderMouse;
RefPtr<LocalFrame> m_lastMouseMoveEventSubframe;
RefPtr<Scrollbar> m_lastScrollbarUnderMouse;
Cursor m_currentMouseCursor;
int m_clickCount;
RefPtrWillBePersistent<Node> m_clickNode;
RefPtrWillBeMember<Node> m_clickNode;
RefPtrWillBePersistent<Node> m_dragTarget;
RefPtrWillBeMember<Node> m_dragTarget;
bool m_shouldOnlyFireDragOverEvent;
RefPtrWillBePersistent<HTMLFrameSetElement> m_frameSetBeingResized;
RefPtrWillBeMember<HTMLFrameSetElement> m_frameSetBeingResized;
LayoutSize m_offsetFromResizeCorner; // In the coords of m_resizeScrollableArea.
......@@ -361,24 +362,23 @@ private:
PlatformMouseEvent m_mouseDown;
RefPtr<UserGestureToken> m_lastMouseDownUserGestureToken;
RefPtrWillBePersistent<Node> m_latchedWheelEventNode;
RefPtrWillBeMember<Node> m_latchedWheelEventNode;
bool m_widgetIsLatched;
RefPtrWillBePersistent<Node> m_previousWheelScrolledNode;
RefPtrWillBeMember<Node> m_previousWheelScrolledNode;
// The target of each active touch point indexed by the touch ID.
typedef WillBeHeapHashMap<unsigned, RefPtrWillBeMember<EventTarget>, DefaultHash<unsigned>::Hash, WTF::UnsignedWithZeroKeyHashTraits<unsigned> > TouchTargetMap;
typedef WillBePersistentHeapHashMap<unsigned, RefPtrWillBeMember<EventTarget>, DefaultHash<unsigned>::Hash, WTF::UnsignedWithZeroKeyHashTraits<unsigned> > PersistentTouchTargetMap;
PersistentTouchTargetMap m_targetForTouchID;
TouchTargetMap m_targetForTouchID;
// If set, the document of the active touch sequence. Unset if no touch sequence active.
RefPtrWillBePersistent<Document> m_touchSequenceDocument;
RefPtrWillBeMember<Document> m_touchSequenceDocument;
bool m_touchPressed;
RefPtrWillBePersistent<Node> m_scrollGestureHandlingNode;
RefPtrWillBeMember<Node> m_scrollGestureHandlingNode;
bool m_lastHitTestResultOverWidget;
RefPtrWillBePersistent<Node> m_previousGestureScrolledNode;
RefPtrWillBeMember<Node> m_previousGestureScrolledNode;
RefPtr<Scrollbar> m_scrollbarHandlingScrollGesture;
double m_maxMouseMovedDuration;
......@@ -389,7 +389,7 @@ private:
Timer<EventHandler> m_activeIntervalTimer;
double m_lastShowPressTimestamp;
RefPtrWillBePersistent<Element> m_lastDeferredTapElement;
RefPtrWillBeMember<Element> m_lastDeferredTapElement;
};
} // namespace WebCore
......
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