WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
86426
Refactor SVG parts of Node::addEventListener/removeEventListener
https://bugs.webkit.org/show_bug.cgi?id=86426
Summary
Refactor SVG parts of Node::addEventListener/removeEventListener
Rob Buis
Reported
2012-05-14 18:59:32 PDT
The SVG code in Node::addEventListener/removeEventListener does not seem to have to be in Node.cpp
Attachments
Patch
(12.69 KB, patch)
2012-05-14 19:11 PDT
,
Rob Buis
no flags
Details
Formatted Diff
Diff
Patch
(13.46 KB, patch)
2012-05-15 05:54 PDT
,
Rob Buis
no flags
Details
Formatted Diff
Diff
Patch
(12.55 KB, patch)
2012-05-15 09:07 PDT
,
Rob Buis
zimmermann
: review+
Details
Formatted Diff
Diff
Show Obsolete
(2)
View All
Add attachment
proposed patch, testcase, etc.
Rob Buis
Comment 1
2012-05-14 19:02:43 PDT
Benefits of this approach: - code in Node::addEventListener/removeEventListener is easier to read - SVG parts can be hosted in svg/, much more intuitive - no SVG includes in Node.cpp - SVGElement() checks not needed anymore, since it is called from SVGElement. Drawback is losing the static on tryAddEventListener/tryRemoveEventListener, not sure that would lead to performance loss though.
Rob Buis
Comment 2
2012-05-14 19:11:17 PDT
Created
attachment 141842
[details]
Patch
Early Warning System Bot
Comment 3
2012-05-14 19:26:24 PDT
Comment on
attachment 141842
[details]
Patch
Attachment 141842
[details]
did not pass qt-wk2-ews (qt): Output:
http://queues.webkit.org/results/12701297
Early Warning System Bot
Comment 4
2012-05-14 19:33:49 PDT
Comment on
attachment 141842
[details]
Patch
Attachment 141842
[details]
did not pass qt-ews (qt): Output:
http://queues.webkit.org/results/12679764
Gyuyoung Kim
Comment 5
2012-05-14 20:25:36 PDT
Comment on
attachment 141842
[details]
Patch
Attachment 141842
[details]
did not pass efl-ews (efl): Output:
http://queues.webkit.org/results/12684662
Build Bot
Comment 6
2012-05-14 20:35:50 PDT
Comment on
attachment 141842
[details]
Patch
Attachment 141842
[details]
did not pass mac-ews (mac): Output:
http://queues.webkit.org/results/12680757
WebKit Review Bot
Comment 7
2012-05-14 22:37:03 PDT
Comment on
attachment 141842
[details]
Patch
Attachment 141842
[details]
did not pass chromium-ews (chromium-xvfb): Output:
http://queues.webkit.org/results/12705297
Nikolas Zimmermann
Comment 8
2012-05-15 00:11:09 PDT
Comment on
attachment 141842
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=141842&action=review
Great patch, long time nobody looked at this piece of code! You need to look into the build issues, reported by EWS, and I have some further suggestions:
> Source/WebCore/svg/SVGElement.cpp:351 > +static inline HashSet<SVGElementInstance*> instancesForSVGElement(Node* node)
While you're at it: stop copying the HashSet, instead pass it as reference. Also use SVGElement* as parameter, instead of Node*. static inline void collectInstancesForSVGElement(SVGElement* element, HashSet<SVGElementInstance*>& instances)
> Source/WebCore/svg/SVGElement.cpp:369 > +extern inline bool tryAddEventListener(Node* targetNode, const AtomicString& eventType, PassRefPtr<EventListener>, bool useCapture);
I'd rather expose tryAddEventListener as protected method in Node.h. But make sure its still inlined, so there's no performance regression for Node::addEventLIstener.
> Source/WebCore/svg/SVGElement.cpp:398 > +extern inline bool tryRemoveEventListener(Node* targetNode, const AtomicString& eventType, EventListener*, bool useCapture);
Ditto.
> Source/WebCore/svg/SVGElement.h:117 > + virtual bool addEventListener(const AtomicString& eventType, PassRefPtr<EventListener>, bool useCapture); > + virtual bool removeEventListener(const AtomicString& eventType, EventListener*, bool useCapture);
I think you should mark them as OVERRIDE, that seems to be new idiom when overriding parent classes virtual functions.
Rob Buis
Comment 9
2012-05-15 05:54:35 PDT
Created
attachment 141938
[details]
Patch
Rob Buis
Comment 10
2012-05-15 06:42:38 PDT
Hi Niko, (In reply to
comment #8
)
> (From update of
attachment 141842
[details]
) > View in context:
https://bugs.webkit.org/attachment.cgi?id=141842&action=review
> > Great patch, long time nobody looked at this piece of code! You need to look into the build issues, reported by EWS, and I have some further suggestions: > > > Source/WebCore/svg/SVGElement.cpp:351 > > +static inline HashSet<SVGElementInstance*> instancesForSVGElement(Node* node) > > While you're at it: stop copying the HashSet, instead pass it as reference. Also use SVGElement* as parameter, instead of Node*. > static inline void collectInstancesForSVGElement(SVGElement* element, HashSet<SVGElementInstance*>& instances) > > > Source/WebCore/svg/SVGElement.cpp:369 > > +extern inline bool tryAddEventListener(Node* targetNode, const AtomicString& eventType, PassRefPtr<EventListener>, bool useCapture); > > I'd rather expose tryAddEventListener as protected method in Node.h. But make sure its still inlined, so there's no performance regression for Node::addEventLIstener. > > > Source/WebCore/svg/SVGElement.cpp:398 > > +extern inline bool tryRemoveEventListener(Node* targetNode, const AtomicString& eventType, EventListener*, bool useCapture); > > Ditto. > > > Source/WebCore/svg/SVGElement.h:117 > > + virtual bool addEventListener(const AtomicString& eventType, PassRefPtr<EventListener>, bool useCapture); > > + virtual bool removeEventListener(const AtomicString& eventType, EventListener*, bool useCapture); > > I think you should mark them as OVERRIDE, that seems to be new idiom when overriding parent classes virtual functions.
Good points! I think all of the above is fixed now with my latest patch.
Early Warning System Bot
Comment 11
2012-05-15 06:46:42 PDT
Comment on
attachment 141938
[details]
Patch
Attachment 141938
[details]
did not pass qt-ews (qt): Output:
http://queues.webkit.org/results/12679933
Build Bot
Comment 12
2012-05-15 06:52:07 PDT
Comment on
attachment 141938
[details]
Patch
Attachment 141938
[details]
did not pass mac-ews (mac): Output:
http://queues.webkit.org/results/12704407
Early Warning System Bot
Comment 13
2012-05-15 06:57:29 PDT
Comment on
attachment 141938
[details]
Patch
Attachment 141938
[details]
did not pass qt-wk2-ews (qt): Output:
http://queues.webkit.org/results/12701485
WebKit Review Bot
Comment 14
2012-05-15 07:38:28 PDT
Comment on
attachment 141938
[details]
Patch
Attachment 141938
[details]
did not pass chromium-ews (chromium-xvfb): Output:
http://queues.webkit.org/results/12709079
Gyuyoung Kim
Comment 15
2012-05-15 07:48:04 PDT
Comment on
attachment 141938
[details]
Patch
Attachment 141938
[details]
did not pass efl-ews (efl): Output:
http://queues.webkit.org/results/12680885
Rob Buis
Comment 16
2012-05-15 09:07:14 PDT
Created
attachment 141985
[details]
Patch
Nikolas Zimmermann
Comment 17
2012-05-15 09:47:38 PDT
Comment on
attachment 141985
[details]
Patch r=me!
Rob Buis
Comment 18
2012-05-15 10:04:30 PDT
Committed
r117086
: <
http://trac.webkit.org/changeset/117086
>
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug