Chromium Code Reviews| Index: lib/dom/scripts/systemhtml.py |
| diff --git a/lib/dom/scripts/systemhtml.py b/lib/dom/scripts/systemhtml.py |
| index 855b6b13d9b73edc1160e11d6c9d1dc387004e9e..6144cf08fe9a77041c1fca75c02b87647aa15286 100644 |
| --- a/lib/dom/scripts/systemhtml.py |
| +++ b/lib/dom/scripts/systemhtml.py |
| @@ -261,6 +261,11 @@ _html_library_custom = set([ |
| 'Window.get:top', |
| ]) |
| +_merged_html_interfaces = { |
|
sra1
2012/06/07 19:31:07
This needs an essay.
Add comment what this means
podivilov
2012/06/08 17:02:21
Done.
|
| + 'Document': 'HTMLDocument', |
| + 'Element': 'HTMLElement' |
| +} |
| + |
| # Events without onEventName attributes in the IDL we want to support. |
| # We can automatically extract most event event names by checking for |
| # onEventName methods in the IDL but some events aren't listed so we need |
| @@ -702,6 +707,9 @@ class HtmlInterfacesSystem(HtmlSystem): |
| super_interface_name, |
| source_filter): |
| """.""" |
| + if interface.id in _merged_html_interfaces.values(): |
| + return None |
| + |
| interface_name = interface.id |
| dart_interface_file_path = self._FilePathForDartInterface(interface_name) |
| @@ -837,6 +845,9 @@ class HtmlDartInterfaceGenerator(DartInterfaceGenerator): |
| else: |
| self._EmitEventGetter(self._shared.GetParentEventsClass(self._interface)) |
| + if self._interface.id in _merged_html_interfaces: |
| + merged_interface = _merged_html_interfaces[self._interface.id] |
| + self.AddMembers(self._database.GetInterface(merged_interface)) |
| def AddAttribute(self, getter, setter): |
| dom_name = DartDomNameOfAttribute(getter) |
| @@ -1002,6 +1013,10 @@ class HtmlFrogClassGenerator(FrogInterfaceGenerator): |
| parent_events_class = self._shared.GetParentEventsClass(self._interface) |
| self._EmitEventGetter('_' + parent_events_class + 'Impl') |
| + if self._interface.id in _merged_html_interfaces: |
| + merged_interface = _merged_html_interfaces[self._interface.id] |
| + self.AddMembers(self._database.GetInterface(merged_interface)) |
| + |
| def _EmitFactoryProvider(self, interface_name, constructor_info): |
| template_file = 'factoryprovider_%s.darttemplate' % interface_name |
| template = self._system._templates.TryLoad(template_file) |
| @@ -1106,8 +1121,8 @@ class HtmlFrogClassGenerator(FrogInterfaceGenerator): |
| # If the (getter, setter) pair is shadowing, we can't generate a shadowing |
| # field (Issue 1633). |
| - (super_getter, super_getter_interface) = self._FindShadowedAttribute(getter) |
| - (super_setter, super_setter_interface) = self._FindShadowedAttribute(setter) |
| + (super_getter, super_getter_interface) = self._FindShadowedAttribute(getter, _merged_html_interfaces) |
| + (super_setter, super_setter_interface) = self._FindShadowedAttribute(setter, _merged_html_interfaces) |
| if super_getter or super_setter: |
| if getter and not setter and super_getter and not super_setter: |
| if DartType(getter.type.id) == DartType(super_getter.type.id): |
| @@ -1258,6 +1273,9 @@ class HtmlFrogSystem(HtmlSystem): |
| super_interface_name, |
| source_filter): |
| """.""" |
| + if interface.id in _merged_html_interfaces.values(): |
| + return None |
| + |
| if IsPureInterface(interface.id): |
| return |
| template_file = 'impl_%s.darttemplate' % interface.id |