Chromium Code Reviews| 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 |