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

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

Issue 10698108: Stop passing HtmlSystemShared around and move html renaming to IDLTypeInfo. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 5 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 f3aec0ced4d1b4ed2306b31b2109d79337d3a1c1..61513358fac63fc8172a98336f919cba0be8b85b 100644
--- a/lib/dom/scripts/systemhtml.py
+++ b/lib/dom/scripts/systemhtml.py
@@ -618,7 +618,6 @@ class HtmlSystemShared(object):
self._seen_event_names = {}
self._database = database
self._inheritance_closure = _ComputeInheritanceClosure(database)
- self._html_renames = self._MakeHtmlRenames()
def _HasAncestor(self, interface, names_to_match):
for parent in interface.parents:
@@ -631,7 +630,7 @@ class HtmlSystemShared(object):
return True
return False
- def _MakeHtmlRenames(self):
+ def MakeHtmlRenames(self):
html_renames = {}
for interface in self._database.GetInterfaces():
@@ -650,15 +649,12 @@ class HtmlSystemShared(object):
return html_renames
- def _HTMLInterfaceName(self, interface_name):
- return self._html_renames.get(interface_name, interface_name)
-
def _FindMatch(self, interface_name, member, member_prefix, candidates):
for ancestor_name in self._AllAncestorInterfaces(interface_name):
- name = self._HTMLInterfaceName(ancestor_name) + '.' + member
+ name = DartType(ancestor_name) + '.' + member
if name in candidates:
return name
- name = (self._HTMLInterfaceName(interface_name) + '.' + member_prefix +
+ name = (DartType(interface_name) + '.' + member_prefix +
member)
if name in candidates:
return name
@@ -729,9 +725,6 @@ class HtmlSystemShared(object):
raise Exception('Only one parent event class allowed ' + interface.id)
return parent_event_classes[0]
- def _ImplClassName(self, type_name):
- return '_' + type_name + 'Impl'
-
# This returns two values: the first is whether or not an "on" property should
# be generated for the interface, and the second is the event attributes to
# generate if it should.
@@ -747,22 +740,13 @@ class HtmlSystemShared(object):
def IsPrivate(self, name):
return name.startswith('_')
- def DartType(self, idl_type):
- type_info = GetIDLTypeInfo(idl_type)
- return self._HTMLInterfaceName(type_info.dart_type())
-class HtmlSystem(System):
-
- def __init__(self, templates, database, emitters, output_dir):
- super(HtmlSystem, self).__init__(
- templates, database, emitters, output_dir)
- self._shared = HtmlSystemShared(database)
-
-class HtmlInterfacesSystem(HtmlSystem):
+class HtmlInterfacesSystem(System):
def __init__(self, templates, database, emitters, output_dir, backend):
super(HtmlInterfacesSystem, self).__init__(
templates, database, emitters, output_dir)
+ self._shared = HtmlSystemShared(database)
self._backend = backend
self._dart_interface_file_paths = []
self._elements_factory_emitter = None
@@ -796,8 +780,7 @@ class HtmlDartInterfaceGenerator(BaseGenerator):
system._database, interface)
self._system = system
self._shared = system._shared
- self._html_interface_name = self._shared._HTMLInterfaceName(
- self._interface.id)
+ self._html_interface_name = DartInterfaceName(self._interface)
self._backend = system._backend.ImplementationGenerator(self._interface)
def StartInterface(self):
@@ -821,14 +804,14 @@ class HtmlDartInterfaceGenerator(BaseGenerator):
# TODO(vsm): Remove source_filter.
if MatchSourceFilter(parent):
# Parent is a DOM type.
- extends.append(self._shared.DartType(parent.type.id))
+ extends.append(DartType(parent.type.id))
elif '<' in parent.type.id:
# Parent is a Dart collection type.
# TODO(vsm): Make this check more robust.
- extends.append(self._shared.DartType(parent.type.id))
+ extends.append(DartType(parent.type.id))
else:
suppressed_extends.append('%s.%s' %
- (self._common_prefix, self._shared.DartType(parent.type.id)))
+ (self._common_prefix, DartType(parent.type.id)))
comment = ' extends'
extends_str = ''
@@ -902,9 +885,8 @@ class HtmlDartInterfaceGenerator(BaseGenerator):
self._members_emitter.Emit(
'\n'
' $CTOR($PARAMS);\n',
- CTOR=self._shared.DartType(constructor_info.ConstructorFullName()),
- PARAMS=constructor_info.ParametersInterfaceDeclaration(
- self._shared.DartType))
+ CTOR=DartType(constructor_info.ConstructorFullName()),
+ PARAMS=constructor_info.ParametersInterfaceDeclaration())
element_type = MaybeTypedArrayElementTypeInHierarchy(
self._interface, self._system._database)
@@ -918,7 +900,7 @@ class HtmlDartInterfaceGenerator(BaseGenerator):
' $CTOR.fromBuffer(ArrayBuffer buffer,'
' [int byteOffset, int length]);\n',
CTOR=self._interface.id,
- TYPE=self._shared.DartType(element_type))
+ TYPE=DartType(element_type))
self._GenerateEvents()
@@ -960,36 +942,40 @@ class HtmlDartInterfaceGenerator(BaseGenerator):
self._members_emitter.Emit('\n $MODIFIER$TYPE $NAME;\n',
MODIFIER=modifier,
NAME=html_name,
- TYPE=self._shared.DartType(attribute.type.id))
+ TYPE=DartType(attribute.type.id))
self._backend.AddAttribute(attribute, html_name, read_only)
def AddSecondaryAttribute(self, interface, attribute):
self._backend.SecondaryContext(interface)
self.AddAttribute(attribute, True)
- def AddOperation(self, info, is_secondary=False):
+ def AddOperation(self, info, skip_declaration=False):
"""
Arguments:
operations - contains the overloads, one or more operations with the same
name.
"""
- html_name = self._shared.RenameInHtmlLibrary(
- self._interface.id, info.name)
- if html_name and not self._shared.IsPrivate(html_name) and not is_secondary:
+ html_name = self._shared.RenameInHtmlLibrary(self._interface.id, info.name)
+ if not html_name:
+ if info.name == 'item':
+ # FIXME: item should be renamed to operator[], not removed.
+ self._backend.AddOperation(info, '_item')
+ return
+
+ if not self._shared.IsPrivate(html_name) and not skip_declaration:
self._members_emitter.Emit('\n /** @domName $DOMINTERFACE.$DOMNAME */',
DOMINTERFACE=info.overloads[0].doc_js_interface_name,
DOMNAME=info.name)
self._members_emitter.Emit('\n'
' $TYPE $NAME($PARAMS);\n',
- TYPE=self._shared.DartType(info.type_name),
+ TYPE=DartType(info.type_name),
NAME=html_name,
- PARAMS=info.ParametersInterfaceDeclaration(
- self._shared.DartType))
- self._backend.AddOperation(info)
+ PARAMS=info.ParametersInterfaceDeclaration())
+ self._backend.AddOperation(info, html_name)
def AddStaticOperation(self, info):
- self._backend.AddStaticOperation(info)
+ self.AddOperation(info, True)
def AddSecondaryOperation(self, interface, info):
self._backend.SecondaryContext(interface)
@@ -1070,7 +1056,7 @@ class HtmlGeneratorDummyBackend(object):
def AddAttribute(self, attribute, html_name, read_only):
pass
- def AddOperation(self, info):
+ def AddOperation(self, info, html_name):
pass
@@ -1086,9 +1072,7 @@ class HtmlFrogClassGenerator(FrogInterfaceGenerator):
def __init__(self, system, interface):
super(HtmlFrogClassGenerator, self).__init__(
system, interface, None, None)
- self._shared = self._system._shared
- self._html_interface_name = self._shared._HTMLInterfaceName(
- self._interface.id)
+ self._html_interface_name = DartInterfaceName(self._interface)
def HasImplementation(self):
return not (IsPureInterface(self._interface.id) or
@@ -1116,12 +1100,7 @@ class HtmlFrogClassGenerator(FrogInterfaceGenerator):
return True
def _ImplClassName(self, type_name):
- return self._shared._ImplClassName(type_name)
-
- def _NarrowToImplementationType(self, type_name):
- if self._ShouldNarrowToImplementationType(type_name):
- return self._ImplClassName(self._shared.DartType(type_name))
- return self._shared.DartType(type_name)
+ return '_%sImpl' % type_name
def StartInterface(self):
interface = self._interface
@@ -1138,7 +1117,7 @@ class HtmlFrogClassGenerator(FrogInterfaceGenerator):
elif IsPureInterface(supertype):
pass
else:
- base = self._ImplClassName(self._shared._HTMLInterfaceName(supertype))
+ base = self._ImplClassName(DartType(supertype))
native_spec = MakeNativeSpec(interface.javascript_binding_name)
@@ -1148,7 +1127,7 @@ class HtmlFrogClassGenerator(FrogInterfaceGenerator):
implements = [self._html_interface_name]
element_type = MaybeTypedArrayElementType(self._interface)
if element_type:
- implements.append('List<%s>' % self._shared.DartType(element_type))
+ implements.append('List<%s>' % DartType(element_type))
implements.append('JavaScriptIndexingBehavior')
template_file = 'impl_%s.darttemplate' % self._html_interface_name
@@ -1230,7 +1209,7 @@ class HtmlFrogClassGenerator(FrogInterfaceGenerator):
if self._interface.id != 'NodeList':
template_file = 'immutable_list_mixin.darttemplate'
template = self._system._templates.Load(template_file)
- self._members_emitter.Emit(template, E=self._shared.DartType(element_type))
+ self._members_emitter.Emit(template, E=DartType(element_type))
def AddAttribute(self, attribute, html_name, read_only):
if self._HasCustomImplementation(attribute.id):
@@ -1303,7 +1282,7 @@ class HtmlFrogClassGenerator(FrogInterfaceGenerator):
NAME=attr.id,
TYPE=self._NarrowInputType(attr.type.id))
- def AddOperation(self, info):
+ def AddOperation(self, info, html_name):
"""
Arguments:
info: An OperationInfo object.
@@ -1311,9 +1290,8 @@ class HtmlFrogClassGenerator(FrogInterfaceGenerator):
if self._HasCustomImplementation(info.name):
return
- html_name = self._shared.RenameInHtmlLibrary(
- self._interface.id, info.name, implementation_class=True)
- if not html_name:
+ # FIXME: support static operations.
+ if info.IsStatic():
return
# Do we need a native body?
@@ -1353,7 +1331,7 @@ class HtmlFrogClassGenerator(FrogInterfaceGenerator):
# ------------------------------------------------------------------------------
-class HtmlFrogSystem(HtmlSystem):
+class HtmlFrogSystem(System):
def __init__(self, templates, database, emitters, output_dir):
super(HtmlFrogSystem, self).__init__(

Powered by Google App Engine
This is Rietveld 408576698