Chromium Code Reviews| Index: tools/dom/scripts/dartgenerator.py |
| diff --git a/tools/dom/scripts/dartgenerator.py b/tools/dom/scripts/dartgenerator.py |
| index 58ce4f61094bd1efcf1e1128a0d4ad112af07d11..439b3e65bc2b54c991aaa505d21d123ffcad95b3 100755 |
| --- a/tools/dom/scripts/dartgenerator.py |
| +++ b/tools/dom/scripts/dartgenerator.py |
| @@ -200,11 +200,26 @@ class DartGenerator(object): |
| visit(interface) |
| return ordered |
| + def IsEventTarget(self, database, interface): |
| + if interface.id == 'EventTarget': |
| + return True |
| + for parent in interface.parents: |
| + parent_name = parent.type.id |
| + if database.HasInterface(parent_name): |
| + parent_interface = database.GetInterface(parent.type.id) |
| + if self.IsEventTarget(database, parent_interface): |
| + return True |
| + return False |
| + |
| def FixEventTargets(self, database): |
| for interface in database.GetInterfaces(): |
| - # Create fake EventTarget parent interface for interfaces that have |
| - # 'EventTarget' extended attribute. |
| - if 'EventTarget' in interface.ext_attrs and interface.id != 'EventTarget': |
| + if self.IsEventTarget(database, interface): |
| + # Add as an attribute for easy querying in |
|
Jacob
2013/08/08 21:15:29
nit: make comment one line
|
| + # generation code. |
| + interface.ext_attrs['EventTarget'] = None |
| + elif 'EventTarget' in interface.ext_attrs: |
| + # Create fake EventTarget parent interface for interfaces that have |
| + # 'EventTarget' extended attribute. |
| ast = [('Annotation', [('Id', 'WebKit')]), |
| ('InterfaceType', ('ScopedName', 'EventTarget'))] |
| interface.parents.append(idlnode.IDLParentInterface(ast)) |