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

Side by Side Diff: Source/core/svg/SVGElementInstance.h

Issue 18301003: Introduce DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER() macro (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fix nits Created 7 years, 5 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/dom/EventTarget.h ('k') | Source/core/svg/SVGElementInstance.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) 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org> 2 * Copyright (C) 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org>
3 * Copyright (C) 2011 Torch Mobile (Beijing) Co. Ltd. All rights reserved. 3 * Copyright (C) 2011 Torch Mobile (Beijing) Co. Ltd. All rights reserved.
4 * 4 *
5 * This library is free software; you can redistribute it and/or 5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public 6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either 7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version. 8 * version 2 of the License, or (at your option) any later version.
9 * 9 *
10 * This library is distributed in the hope that it will be useful, 10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Library General Public License for more details. 13 * Library General Public License for more details.
14 * 14 *
15 * You should have received a copy of the GNU Library General Public License 15 * You should have received a copy of the GNU Library General Public License
16 * along with this library; see the file COPYING.LIB. If not, write to 16 * along with this library; see the file COPYING.LIB. If not, write to
17 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 17 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 * Boston, MA 02110-1301, USA. 18 * Boston, MA 02110-1301, USA.
19 */ 19 */
20 20
21 #ifndef SVGElementInstance_h 21 #ifndef SVGElementInstance_h
22 #define SVGElementInstance_h 22 #define SVGElementInstance_h
23 23
24 #include "bindings/v8/ScriptWrappable.h" 24 #include "bindings/v8/ScriptWrappable.h"
25 #include "core/dom/EventTarget.h" 25 #include "core/dom/EventTarget.h"
26 #include "core/platform/TreeShared.h" 26 #include "core/platform/TreeShared.h"
27 #include "core/svg/SVGElement.h"
28 27
29 namespace WebCore { 28 namespace WebCore {
30 29
31 namespace Private { 30 namespace Private {
32 template<class GenericNode, class GenericNodeContainer> 31 template<class GenericNode, class GenericNodeContainer>
33 void addChildNodesToDeletionQueue(GenericNode*& head, GenericNode*& tail, Generi cNodeContainer* container); 32 void addChildNodesToDeletionQueue(GenericNode*& head, GenericNode*& tail, Generi cNodeContainer* container);
34 }; 33 };
35 34
36 class SVGUseElement; 35 class Document;
36 class SVGElement;
37 class SVGElementInstanceList; 37 class SVGElementInstanceList;
38 class SVGStyledElement; 38 class SVGStyledElement;
39 class SVGUseElement;
39 40
40 // SVGElementInstance mimics Node, but without providing all its functionality 41 // SVGElementInstance mimics Node, but without providing all its functionality
41 class SVGElementInstance : public EventTarget, public ScriptWrappable, public Tr eeShared<SVGElementInstance> { 42 class SVGElementInstance : public EventTarget, public ScriptWrappable, public Tr eeShared<SVGElementInstance> {
42 public: 43 public:
43 static PassRefPtr<SVGElementInstance> create(SVGUseElement* correspondingUse Element, SVGUseElement* directUseElement, PassRefPtr<SVGElement> originalElement ) 44 static PassRefPtr<SVGElementInstance> create(SVGUseElement* correspondingUse Element, SVGUseElement* directUseElement, PassRefPtr<SVGElement> originalElement );
44 {
45 return adoptRef(new SVGElementInstance(correspondingUseElement, directUs eElement, originalElement));
46 }
47 45
48 virtual ~SVGElementInstance(); 46 virtual ~SVGElementInstance();
49 47
50 void setParentOrShadowHostNode(SVGElementInstance* instance) { m_parentInsta nce = instance; } 48 void setParentOrShadowHostNode(SVGElementInstance* instance) { m_parentInsta nce = instance; }
51 49
52 virtual const AtomicString& interfaceName() const; 50 virtual const AtomicString& interfaceName() const;
53 virtual ScriptExecutionContext* scriptExecutionContext() const; 51 virtual ScriptExecutionContext* scriptExecutionContext() const;
54 52
55 virtual bool addEventListener(const AtomicString& eventType, PassRefPtr<Even tListener>, bool useCapture); 53 virtual bool addEventListener(const AtomicString& eventType, PassRefPtr<Even tListener>, bool useCapture);
56 virtual bool removeEventListener(const AtomicString& eventType, EventListene r*, bool useCapture); 54 virtual bool removeEventListener(const AtomicString& eventType, EventListene r*, bool useCapture);
(...skipping 11 matching lines...) Expand all
68 66
69 SVGElementInstance* parentNode() const { return m_parentInstance; } 67 SVGElementInstance* parentNode() const { return m_parentInstance; }
70 PassRefPtr<SVGElementInstanceList> childNodes(); 68 PassRefPtr<SVGElementInstanceList> childNodes();
71 69
72 SVGElementInstance* previousSibling() const { return m_previousSibling; } 70 SVGElementInstance* previousSibling() const { return m_previousSibling; }
73 SVGElementInstance* nextSibling() const { return m_nextSibling; } 71 SVGElementInstance* nextSibling() const { return m_nextSibling; }
74 72
75 SVGElementInstance* firstChild() const { return m_firstChild; } 73 SVGElementInstance* firstChild() const { return m_firstChild; }
76 SVGElementInstance* lastChild() const { return m_lastChild; } 74 SVGElementInstance* lastChild() const { return m_lastChild; }
77 75
78 Document* ownerDocument() const { return m_element ? m_element->ownerDocumen t() : 0; } 76 inline Document* ownerDocument() const;
79 77
80 class InvalidationGuard { 78 class InvalidationGuard {
81 WTF_MAKE_NONCOPYABLE(InvalidationGuard); 79 WTF_MAKE_NONCOPYABLE(InvalidationGuard);
82 public: 80 public:
83 InvalidationGuard(SVGElement* element) : m_element(element) { } 81 InvalidationGuard(SVGElement* element) : m_element(element) { }
84 ~InvalidationGuard() { SVGElementInstance::invalidateAllInstancesOfEleme nt(m_element); } 82 ~InvalidationGuard() { SVGElementInstance::invalidateAllInstancesOfEleme nt(m_element); }
85 private: 83 private:
86 SVGElement* m_element; 84 SVGElement* m_element;
87 }; 85 };
88 86
89 class InstanceUpdateBlocker { 87 class InstanceUpdateBlocker {
90 WTF_MAKE_NONCOPYABLE(InstanceUpdateBlocker); 88 WTF_MAKE_NONCOPYABLE(InstanceUpdateBlocker);
91 public: 89 public:
92 InstanceUpdateBlocker(SVGElement* targetElement); 90 InstanceUpdateBlocker(SVGElement* targetElement);
93 ~InstanceUpdateBlocker(); 91 ~InstanceUpdateBlocker();
94 92
95 private: 93 private:
96 SVGStyledElement* m_targetElement; 94 SVGStyledElement* m_targetElement;
97 }; 95 };
98 96
99 static void invalidateAllInstancesOfElement(SVGElement*); 97 static void invalidateAllInstancesOfElement(SVGElement*);
100 98
101 using TreeShared<SVGElementInstance>::ref; 99 using TreeShared<SVGElementInstance>::ref;
102 using TreeShared<SVGElementInstance>::deref; 100 using TreeShared<SVGElementInstance>::deref;
103 101
104 // EventTarget API 102 // EventTarget API
105 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), abort); 103 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), abort);
106 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), blur); 104 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), blur);
107 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), change); 105 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), change);
108 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), click); 106 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), click);
109 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), contextme nu); 107 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), contextm enu);
110 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), dblclick) ; 108 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), dblclick );
111 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), error); 109 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), error);
112 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), focus); 110 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), focus);
113 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), input); 111 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), input);
114 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), keydown); 112 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), keydown) ;
115 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), keypress) ; 113 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), keypress );
116 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), keyup); 114 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), keyup);
117 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), load); 115 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), load);
118 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), mousedown ); 116 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), mousedow n);
119 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), mousemove ); 117 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), mousemov e);
120 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), mouseout) ; 118 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), mouseout );
121 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), mouseover ); 119 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), mouseove r);
122 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), mouseup); 120 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), mouseup) ;
123 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), mousewhee l); 121 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), mousewhe el);
124 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), beforecut ); 122 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), beforecu t);
125 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), cut); 123 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), cut);
126 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), beforecop y); 124 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), beforeco py);
127 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), copy); 125 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), copy);
128 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), beforepas te); 126 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), beforepa ste);
129 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), paste); 127 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), paste);
130 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), dragenter ); 128 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), dragente r);
131 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), dragover) ; 129 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), dragover );
132 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), dragleave ); 130 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), dragleav e);
133 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), drop); 131 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), drop);
134 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), dragstart ); 132 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), dragstar t);
135 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), drag); 133 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), drag);
136 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), dragend); 134 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), dragend) ;
137 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), reset); 135 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), reset);
138 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), resize); 136 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), resize);
139 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), scroll); 137 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), scroll);
140 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), search); 138 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), search);
141 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), select); 139 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), select);
142 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), selectsta rt); 140 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), selectst art);
143 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), submit); 141 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), submit);
144 DEFINE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), unload); 142 DECLARE_FORWARDING_ATTRIBUTE_EVENT_LISTENER(correspondingElement(), unload);
145 143
146 private: 144 private:
147 friend class SVGUseElement; 145 friend class SVGUseElement;
148 friend class TreeShared<SVGElementInstance>; 146 friend class TreeShared<SVGElementInstance>;
149 147
150 SVGElementInstance(SVGUseElement*, SVGUseElement*, PassRefPtr<SVGElement> or iginalElement); 148 SVGElementInstance(SVGUseElement*, SVGUseElement*, PassRefPtr<SVGElement> or iginalElement);
151 149
152 void removedLastRef(); 150 void removedLastRef();
153 bool hasTreeSharedParent() const { return !!m_parentInstance; } 151 bool hasTreeSharedParent() const { return !!m_parentInstance; }
154 152
155 virtual Node* toNode() { return shadowTreeElement(); } 153 virtual Node* toNode();
156 154
157 void appendChild(PassRefPtr<SVGElementInstance> child); 155 void appendChild(PassRefPtr<SVGElementInstance> child);
158 void setShadowTreeElement(SVGElement*); 156 void setShadowTreeElement(SVGElement*);
159 157
160 template<class GenericNode, class GenericNodeContainer> 158 template<class GenericNode, class GenericNodeContainer>
161 friend void appendChildToContainer(GenericNode* child, GenericNodeContainer* container); 159 friend void appendChildToContainer(GenericNode* child, GenericNodeContainer* container);
162 160
163 template<class GenericNode, class GenericNodeContainer> 161 template<class GenericNode, class GenericNodeContainer>
164 friend void removeDetachedChildrenInContainer(GenericNodeContainer*); 162 friend void removeDetachedChildrenInContainer(GenericNodeContainer*);
165 163
(...skipping 23 matching lines...) Expand all
189 SVGElementInstance* m_previousSibling; 187 SVGElementInstance* m_previousSibling;
190 SVGElementInstance* m_nextSibling; 188 SVGElementInstance* m_nextSibling;
191 189
192 SVGElementInstance* m_firstChild; 190 SVGElementInstance* m_firstChild;
193 SVGElementInstance* m_lastChild; 191 SVGElementInstance* m_lastChild;
194 }; 192 };
195 193
196 } // namespace WebCore 194 } // namespace WebCore
197 195
198 #endif 196 #endif
OLDNEW
« no previous file with comments | « Source/core/dom/EventTarget.h ('k') | Source/core/svg/SVGElementInstance.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698