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

Unified Diff: Source/core/events/EventRetargeter.h

Issue 26558004: Revert 158219 "Move dom/*Event* to events to match the DOM vs. E..." (Closed) Base URL: svn://svn.chromium.org/blink/branches/chromium/1651/
Patch Set: Created 7 years, 2 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/events/EventQueue.h ('k') | Source/core/events/EventRetargeter.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/events/EventRetargeter.h
===================================================================
--- Source/core/events/EventRetargeter.h (revision 159156)
+++ Source/core/events/EventRetargeter.h (working copy)
@@ -1,98 +0,0 @@
-/*
- * Copyright (C) 2013 Google Inc. All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef EventRetargeter_h
-#define EventRetargeter_h
-
-#include "SVGNames.h"
-#include "core/dom/ContainerNode.h"
-#include "core/events/EventContext.h"
-#include "core/dom/shadow/ShadowRoot.h"
-#include "core/svg/SVGElementInstance.h"
-#include "core/svg/SVGUseElement.h"
-#include "wtf/HashMap.h"
-#include "wtf/RefPtr.h"
-
-namespace WebCore {
-
-class EventTarget;
-class FocusEvent;
-class MouseEvent;
-class Node;
-class TouchEvent;
-class TreeScope;
-
-enum EventDispatchBehavior {
- RetargetEvent,
- StayInsideShadowDOM
-};
-
-class EventRetargeter {
-public:
- static void ensureEventPath(Node*, Event*);
- static void adjustForMouseEvent(Node*, MouseEvent&);
- static void adjustForFocusEvent(Node*, FocusEvent&);
- typedef Vector<RefPtr<TouchList> > EventPathTouchLists;
- static void adjustForTouchEvent(Node*, TouchEvent&);
- static EventTarget* eventTargetRespectingTargetRules(Node* referenceNode);
-
-private:
- typedef Vector<RefPtr<Node> > AdjustedNodes;
- typedef HashMap<TreeScope*, Node*> RelatedNodeMap;
- enum EventWithRelatedTargetDispatchBehavior {
- StopAtBoundaryIfNeeded,
- DoesNotStopAtBoundary
- };
- static void calculateEventPath(Node*, Event*);
- static void calculateAdjustedEventPathForEachNode(EventPath&);
-
- static void adjustForRelatedTarget(const Node*, EventTarget* relatedTarget, EventPath&);
- static void calculateAdjustedNodes(const Node*, const Node* relatedNode, EventWithRelatedTargetDispatchBehavior, EventPath&, AdjustedNodes&);
- static void buildRelatedNodeMap(const Node*, RelatedNodeMap&);
- static Node* findRelatedNode(TreeScope*, RelatedNodeMap&);
- static void adjustTouchList(const Node*, const TouchList*, const EventPath&, EventPathTouchLists&);
-};
-
-inline EventTarget* EventRetargeter::eventTargetRespectingTargetRules(Node* referenceNode)
-{
- ASSERT(referenceNode);
-
- if (referenceNode->isPseudoElement())
- return referenceNode->parentNode();
-
- if (!referenceNode->isSVGElement() || !referenceNode->isInShadowTree())
- return referenceNode;
-
- // Spec: The event handling for the non-exposed tree works as if the referenced element had been textually included
- // as a deeply cloned child of the 'use' element, except that events are dispatched to the SVGElementInstance objects.
- Node* rootNode = referenceNode->treeScope().rootNode();
- Element* shadowHostElement = rootNode->isShadowRoot() ? toShadowRoot(rootNode)->host() : 0;
- // At this time, SVG nodes are not supported in non-<use> shadow trees.
- if (!shadowHostElement || !shadowHostElement->hasTagName(SVGNames::useTag))
- return referenceNode;
- SVGUseElement* useElement = toSVGUseElement(shadowHostElement);
- if (SVGElementInstance* instance = useElement->instanceForShadowTreeElement(referenceNode))
- return instance;
-
- return referenceNode;
-}
-
-}
-
-#endif // EventRetargeter_h
« no previous file with comments | « Source/core/events/EventQueue.h ('k') | Source/core/events/EventRetargeter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698