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

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

Issue 108723007: Introduce TreeScopeEventContext (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 12 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/core.gypi ('k') | Source/core/events/EventContext.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) 2010 Google Inc. All Rights Reserved. 2 * Copyright (C) 2010 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 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 25 matching lines...) Expand all
36 namespace WebCore { 36 namespace WebCore {
37 37
38 class Event; 38 class Event;
39 class TouchList; 39 class TouchList;
40 40
41 class TouchEventContext : public RefCounted<TouchEventContext> { 41 class TouchEventContext : public RefCounted<TouchEventContext> {
42 public: 42 public:
43 static PassRefPtr<TouchEventContext> create(); 43 static PassRefPtr<TouchEventContext> create();
44 ~TouchEventContext(); 44 ~TouchEventContext();
45 void handleLocalEvents(Event*) const; 45 void handleLocalEvents(Event*) const;
46 TouchList* touches() { return m_touches.get(); } 46 TouchList& touches() { return *m_touches; }
47 TouchList* targetTouches() { return m_targetTouches.get(); } 47 TouchList& targetTouches() { return *m_targetTouches; }
48 TouchList* changedTouches() { return m_changedTouches.get(); } 48 TouchList& changedTouches() { return *m_changedTouches; }
49 49
50 private: 50 private:
51 TouchEventContext(); 51 TouchEventContext();
52 52
53 RefPtr<TouchList> m_touches; 53 RefPtr<TouchList> m_touches;
54 RefPtr<TouchList> m_targetTouches; 54 RefPtr<TouchList> m_targetTouches;
55 RefPtr<TouchList> m_changedTouches; 55 RefPtr<TouchList> m_changedTouches;
56 }; 56 };
57 57
58 class EventContext { 58 class SharedEventContext : public RefCounted<SharedEventContext> {
dglazkov 2013/12/26 17:30:13 "Shared" is a bit too vague here. To be fair, "Eve
59 public: 59 public:
60 // FIXME: Use ContainerNode instead of Node. 60 static PassRefPtr<SharedEventContext> create(TreeScope&);
61 EventContext(PassRefPtr<Node>, PassRefPtr<EventTarget> currentTarget); 61 ~SharedEventContext();
62 ~EventContext();
63 62
64 Node* node() const { return m_node.get(); } 63 TreeScope& treeScope() const { return m_treeScope; }
65 EventTarget* currentTarget() const { return m_currentTarget.get(); }
66 64
67 EventTarget* target() const { return m_target.get(); } 65 EventTarget* target() const { return m_target.get(); }
68 void setTarget(PassRefPtr<EventTarget>); 66 void setTarget(PassRefPtr<EventTarget>);
69 67
70 EventTarget* relatedTarget() const { return m_relatedTarget.get(); } 68 EventTarget* relatedTarget() const { return m_relatedTarget.get(); }
71 void setRelatedTarget(PassRefPtr<EventTarget>); 69 void setRelatedTarget(PassRefPtr<EventTarget>);
72 70
73 TouchEventContext* touchEventContext() const { return m_touchEventContext.ge t(); } 71 TouchEventContext* touchEventContext() const { return m_touchEventContext.ge t(); }
74 TouchEventContext* ensureTouchEventContext(); 72 TouchEventContext* ensureTouchEventContext();
75 73
76 PassRefPtr<NodeList> eventPath() const { return m_eventPath; } 74 PassRefPtr<NodeList> eventPath() const { return m_eventPath; }
77 void adoptEventPath(Vector<RefPtr<Node> >&); 75 void adoptEventPath(Vector<RefPtr<Node> >&);
78 void setEventPath(PassRefPtr<NodeList> nodeList) { m_eventPath = nodeList; }
79 76
80 bool currentTargetSameAsTarget() const { return m_currentTarget.get() == m_t arget.get(); } 77 private:
81 void handleLocalEvents(Event*) const; 78 SharedEventContext(TreeScope&);
82 79
83 protected:
84 #ifndef NDEBUG 80 #ifndef NDEBUG
85 bool isUnreachableNode(EventTarget*); 81 bool isUnreachableNode(EventTarget*);
86 #endif 82 #endif
87 RefPtr<Node> m_node; 83
88 RefPtr<EventTarget> m_currentTarget; 84 TreeScope& m_treeScope;
89 RefPtr<EventTarget> m_target; 85 RefPtr<EventTarget> m_target;
90 RefPtr<EventTarget> m_relatedTarget; 86 RefPtr<EventTarget> m_relatedTarget;
91 RefPtr<NodeList> m_eventPath; 87 RefPtr<NodeList> m_eventPath;
92 RefPtr<TouchEventContext> m_touchEventContext; 88 RefPtr<TouchEventContext> m_touchEventContext;
93 }; 89 };
94 90
91 class EventContext {
92 public:
93 // FIXME: Use ContainerNode instead of Node.
94 EventContext(PassRefPtr<Node>, PassRefPtr<EventTarget> currentTarget);
95 ~EventContext();
96
97 Node* node() const { return m_node.get(); }
98 EventTarget* currentTarget() const { return m_currentTarget.get(); }
99
100 SharedEventContext* sharedEventContext() const { return m_sharedEventContext .get(); }
101 void setSharedEventContext(PassRefPtr<SharedEventContext> sharedEventContext ) { m_sharedEventContext = sharedEventContext; }
102
103 EventTarget* target() const { return m_sharedEventContext->target(); }
104 EventTarget* relatedTarget() const { return m_sharedEventContext->relatedTar get(); }
105 TouchEventContext* touchEventContext() const { return m_sharedEventContext-> touchEventContext(); }
106 PassRefPtr<NodeList> eventPath() const { return m_sharedEventContext->eventP ath(); }
107
108 bool currentTargetSameAsTarget() const { return m_currentTarget.get() == tar get(); }
109 void handleLocalEvents(Event*) const;
110
111 private:
112 RefPtr<Node> m_node;
113 RefPtr<EventTarget> m_currentTarget;
114 RefPtr<SharedEventContext> m_sharedEventContext;
115 };
116
95 #ifndef NDEBUG 117 #ifndef NDEBUG
96 inline bool EventContext::isUnreachableNode(EventTarget* target) 118 inline bool SharedEventContext::isUnreachableNode(EventTarget* target)
97 { 119 {
98 // FIXME: Checks also for SVG elements. 120 // FIXME: Checks also for SVG elements.
99 return target && target->toNode() && !target->toNode()->isSVGElement() && !t arget->toNode()->treeScope().isInclusiveAncestorOf(m_node->treeScope()); 121 return target && target->toNode() && !target->toNode()->isSVGElement() && !t arget->toNode()->treeScope().isInclusiveAncestorOf(m_treeScope);
100 } 122 }
101 #endif 123 #endif
102 124
103 inline void EventContext::setTarget(PassRefPtr<EventTarget> target) 125 inline void SharedEventContext::setTarget(PassRefPtr<EventTarget> target)
104 { 126 {
105 ASSERT(!isUnreachableNode(target.get())); 127 ASSERT(!isUnreachableNode(target.get()));
106 m_target = target; 128 m_target = target;
107 } 129 }
108 130
109 inline void EventContext::setRelatedTarget(PassRefPtr<EventTarget> relatedTarget ) 131 inline void SharedEventContext::setRelatedTarget(PassRefPtr<EventTarget> related Target)
110 { 132 {
111 ASSERT(!isUnreachableNode(relatedTarget.get())); 133 ASSERT(!isUnreachableNode(relatedTarget.get()));
112 m_relatedTarget = relatedTarget; 134 m_relatedTarget = relatedTarget;
113 } 135 }
114 136
115 } 137 }
116 138
117 #endif // EventContext_h 139 #endif // EventContext_h
OLDNEW
« no previous file with comments | « Source/core/core.gypi ('k') | Source/core/events/EventContext.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698