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

Unified Diff: sdk/lib/html/scripts/htmleventgenerator.py

Issue 11414096: Removing duplicated events. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 1 month 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 | « sdk/lib/html/dartium/html_dartium.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sdk/lib/html/scripts/htmleventgenerator.py
diff --git a/sdk/lib/html/scripts/htmleventgenerator.py b/sdk/lib/html/scripts/htmleventgenerator.py
index c36a8920c65a9fef9b60cff644d1d772ddfd4829..4bedc32b8f3775f18ad73dbd21aa30b70954c2c1 100644
--- a/sdk/lib/html/scripts/htmleventgenerator.py
+++ b/sdk/lib/html/scripts/htmleventgenerator.py
@@ -196,16 +196,25 @@ class HtmlEventGenerator(object):
def ProcessInterface(self, interface, html_interface_name, custom_events,
events_implementation_emitter):
- events = set([attr for attr in interface.attributes
+ event_names = set([attr.id[2:] for attr in interface.attributes
if attr.type.id == 'EventListener'])
- if not events and interface.id not in _html_explicit_event_classes:
+
+ # Document and DocumentFragment actually derive from Element, so omit
sra1 2012/11/21 05:35:09 I think it would be better to walk the parent inte
blois 2012/11/26 17:23:19 Yeah, I tried that approach first- they are actual
+ # any events which are duplicated with that.
+ if interface.id == 'Document' or interface.id == 'DocumentFragment':
+ element_interface = self._database.GetInterface('Element')
+ for attr in element_interface.attributes:
+ if attr.type.id == 'EventListener' and attr.id[2:] in event_names:
+ event_names.remove(attr.id[2:])
+
+ if not event_names and interface.id not in _html_explicit_event_classes:
return None
self._event_classes.add(interface.id)
events_class_name = html_interface_name + 'Events'
parent_events_class_name = self._GetParentEventsClassName(interface)
- if not events:
+ if not event_names:
return parent_events_class_name
template_file = 'impl_%s.darttemplate' % events_class_name
@@ -222,8 +231,8 @@ class HtmlEventGenerator(object):
SUPER='%s' % parent_events_class_name)
dom_event_names = set()
- for event in events:
- dom_name = event.id[2:]
+ for event in event_names:
+ dom_name = event
dom_name = _on_attribute_to_event_name_mapping.get(dom_name, dom_name)
dom_event_names.add(dom_name)
if html_interface_name in _html_manual_events:
@@ -239,7 +248,7 @@ class HtmlEventGenerator(object):
implementation_events_members.Emit(
"\n"
" EventListenerList get $NAME => this['$DOM_NAME'];\n",
- NAME=html_name,
+ NAME=html_name,
DOM_NAME=dom_name)
return events_class_name
« no previous file with comments | « sdk/lib/html/dartium/html_dartium.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698