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

Side by Side Diff: Source/core/events/EventPath.h

Issue 108723007: Introduce TreeScopeEventContext (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rename SharedEventContext to TreeScopeEventContext Created 6 years, 11 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/events/EventDispatcher.cpp ('k') | Source/core/events/EventPath.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Neither the name of Google Inc. nor the names of its 10 * * Neither the name of Google Inc. nor the names of its
(...skipping 11 matching lines...) Expand all
22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */ 25 */
26 26
27 #ifndef EventPath_h 27 #ifndef EventPath_h
28 #define EventPath_h 28 #define EventPath_h
29 29
30 #include "core/events/EventContext.h" 30 #include "core/events/EventContext.h"
31 31
32 #include "wtf/OwnPtr.h" 32 #include "wtf/HashMap.h"
33 #include "wtf/Vector.h" 33 #include "wtf/Vector.h"
34 34
35 namespace WebCore { 35 namespace WebCore {
36 36
37 class Event; 37 class Event;
38 class EventTarget; 38 class EventTarget;
39 class Node; 39 class Node;
40 class TouchEvent;
41 class TouchList;
42 class TreeScope;
40 43
41 enum EventDispatchBehavior { 44 enum EventDispatchBehavior {
42 RetargetEvent, 45 RetargetEvent,
43 StayInsideShadowDOM 46 StayInsideShadowDOM
44 }; 47 };
45 48
46 class EventPath { 49 class EventPath {
47 public: 50 public:
48 explicit EventPath(Event*); 51 explicit EventPath(Event*);
49 explicit EventPath(Node*); 52 explicit EventPath(Node*);
50 void resetWith(Node*); 53 void resetWith(Node*);
51 54
52 EventContext& operator[](size_t index) { return m_eventContexts[index]; } 55 EventContext& operator[](size_t index) { return m_eventContexts[index]; }
53 const EventContext& operator[](size_t index) const { return m_eventContexts[ index]; } 56 const EventContext& operator[](size_t index) const { return m_eventContexts[ index]; }
54 const EventContext& last() const { return m_eventContexts[size() - 1]; } 57 const EventContext& last() const { return m_eventContexts[size() - 1]; }
55 58
56 bool isEmpty() const { return m_eventContexts.isEmpty(); } 59 bool isEmpty() const { return m_eventContexts.isEmpty(); }
57 size_t size() const { return m_eventContexts.size(); } 60 size_t size() const { return m_eventContexts.size(); }
58 61
59 void shrink(size_t newSize) { m_eventContexts.shrink(newSize); } 62 void adjustForRelatedTarget(Node*, EventTarget* relatedTarget);
63 void adjustForTouchEvent(Node*, TouchEvent&);
60 64
61 static Node* parent(Node*); 65 static Node* parent(Node*);
62 static EventTarget* eventTargetRespectingTargetRules(Node*); 66 static EventTarget* eventTargetRespectingTargetRules(Node*);
63 67
64 private: 68 private:
65 EventPath(); 69 EventPath();
66 70
67 EventContext& at(size_t index) { return m_eventContexts[index]; } 71 EventContext& at(size_t index) { return m_eventContexts[index]; }
68 72
69 void addEventContext(Node*); 73 void addEventContext(Node*);
70 74
71 void calculatePath(); 75 void calculatePath();
72 void calculateAdjustedTargets(); 76 void calculateAdjustedTargets();
73 void calculateAdjustedEventPathForEachNode(); 77 void calculateAdjustedEventPath();
78
79 void shrink(size_t newSize) { m_eventContexts.shrink(newSize); }
80 void shrinkIfNeeded(const Node* target, const EventTarget* relatedTarget);
81
82 void adjustTouchList(const Node*, const TouchList*, Vector<TouchList*> adjus tedTouchList, const Vector<TreeScope*>& treeScopes);
83
84 typedef HashMap<TreeScope*, EventTarget*> RelatedTargetMap;
85
86 static void buildRelatedNodeMap(const Node*, RelatedTargetMap&);
87 static EventTarget* findRelatedNode(TreeScope*, RelatedTargetMap&);
88
89 #ifndef NDEBUG
90 static void checkReachability(TreeScope&, TouchList&);
91 #endif
74 92
75 Vector<EventContext, 64> m_eventContexts; 93 Vector<EventContext, 64> m_eventContexts;
76 Node* m_node; 94 Node* m_node;
77 Event* m_event; 95 Event* m_event;
96 Vector<RefPtr<TreeScopeEventContext> > m_sharedEventContexts;
78 }; 97 };
79 98
80 } // namespace 99 } // namespace
81 100
82 #endif 101 #endif
OLDNEW
« no previous file with comments | « Source/core/events/EventDispatcher.cpp ('k') | Source/core/events/EventPath.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698