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

Unified Diff: lib/dom/scripts/systemhtml.py

Issue 10541029: Do not merge IDL interfaces in dartdomgenerator. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fixed shadowing. Created 8 years, 6 months 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
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

Powered by Google App Engine
This is Rietveld 408576698