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__( |