Chromium Code Reviews| Index: lib/html/scripts/systemhtml.py |
| diff --git a/lib/html/scripts/systemhtml.py b/lib/html/scripts/systemhtml.py |
| index 10f74623ac14e00be4fca5f6b7e28e91ee023a46..0648276e6908d7f0c830a69d07d7ab64b47a4bf8 100644 |
| --- a/lib/html/scripts/systemhtml.py |
| +++ b/lib/html/scripts/systemhtml.py |
| @@ -438,26 +438,16 @@ class HtmlSystemShared(object): |
| class HtmlInterfacesSystem(System): |
| - def __init__(self, options, dart_library_generator, backend): |
| + def __init__(self, options, dart_library_generator, create_generator_backend): |
| super(HtmlInterfacesSystem, self).__init__(options) |
| self._dart_library_generator = dart_library_generator |
| - self._backend = backend |
| + self._create_generator_backend = create_generator_backend |
| self._shared = HtmlSystemShared(options) |
| - self._dart_file_paths = [] |
| self._elements_factory_emitter = None |
| def ProcessInterface(self, interface): |
| - HtmlDartInterfaceGenerator(self, interface).Generate() |
| - |
| - def ProcessCallback(self, interface, info): |
| - """Generates a typedef for the callback interface.""" |
| - code = self._CreateEmitter('%s.dart' % interface.id) |
| - code.Emit(self._templates.Load('callback.darttemplate')) |
| - code.Emit('typedef $TYPE $NAME($PARAMS);\n', |
| - NAME=interface.id, |
| - TYPE=DartType(info.type_name), |
| - PARAMS=info.ParametersImplementationDeclaration(DartType)) |
| - self._backend.ProcessCallback(interface, info) |
| + backend = self._create_generator_backend(interface) |
| + HtmlDartInterfaceGenerator(self, interface, backend).Generate() |
| def _CreateEmitter(self, filename): |
| return self._dart_library_generator.CreateFileEmitter(filename) |
| @@ -467,13 +457,23 @@ class HtmlInterfacesSystem(System): |
| class HtmlDartInterfaceGenerator(BaseGenerator): |
| """Generates dart interface and implementation for the DOM IDL interface.""" |
| - def __init__(self, system, interface): |
| + def __init__(self, system, interface, backend): |
| super(HtmlDartInterfaceGenerator, self).__init__( |
| - system._database, interface) |
| + system._database, system._type_registry, interface) |
| self._system = system |
| + self._backend = backend |
| self._shared = system._shared |
| self._html_interface_name = system._renamer.RenameInterface(self._interface) |
| - self._backend = system._backend.ImplementationGenerator(self._interface) |
| + |
| + def GenerateCallback(self, info): |
| + """Generates a typedef for the callback interface.""" |
| + code = self._system._CreateEmitter('%s.dart' % self._interface.id) |
| + code.Emit(self._system._templates.Load('callback.darttemplate')) |
| + code.Emit('typedef $TYPE $NAME($PARAMS);\n', |
| + NAME=self._interface.id, |
| + TYPE=DartType(info.type_name), |
| + PARAMS=info.ParametersImplementationDeclaration(DartType)) |
| + self._backend.GenerateCallback(info) |
| def StartInterface(self): |
| if not self._interface.id in _merged_html_interfaces: |
| @@ -760,15 +760,15 @@ class HtmlGeneratorDummyBackend(object): |
| # TODO(jmesserly): inheritance is probably not the right way to factor this long |
| # term, but it makes merging better for now. |
| -class HtmlDart2JSClassGenerator(Dart2JSInterfaceGenerator): |
| +class Dart2JSGeneratorBackend(Dart2JSInterfaceGenerator): |
|
Anton Muhin
2012/09/26 14:20:36
if you want to keep both generator and backend, I
podivilov
2012/09/26 15:02:04
Renamed to Dart2JSBackend. Interface vs. Implement
|
| """Generates a dart2js class for the dart:html library from a DOM IDL |
| interface. |
| """ |
| - def __init__(self, system, interface): |
| - super(HtmlDart2JSClassGenerator, self).__init__( |
| - system, interface, None, None) |
| - self._html_interface_name = system._renamer.RenameInterface(self._interface) |
| + def __init__(self, interface, options): |
| + super(Dart2JSGeneratorBackend, self).__init__( |
| + options, interface, None, None) |
| + self._html_interface_name = options.renamer.RenameInterface(self._interface) |
| def HasImplementation(self): |
| return not (IsPureInterface(self._interface.id) or |
| @@ -817,8 +817,8 @@ class HtmlDart2JSClassGenerator(Dart2JSInterfaceGenerator): |
| implements.append('JavaScriptIndexingBehavior') |
| template_file = 'impl_%s.darttemplate' % self._html_interface_name |
| - template = (self._system._templates.TryLoad(template_file) or |
| - self._system._templates.Load('dart2js_impl.darttemplate')) |
| + template = (self._template_loader.TryLoad(template_file) or |
| + self._template_loader.Load('dart2js_impl.darttemplate')) |
| self._members_emitter = self._dart_code.Emit( |
| template, |
| #class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC { |
| @@ -837,9 +837,9 @@ class HtmlDart2JSClassGenerator(Dart2JSInterfaceGenerator): |
| def EmitFactoryProvider(self, constructor_info, factory_provider, emitter): |
| template_file = ('factoryprovider_%s.darttemplate' % |
| self._html_interface_name) |
| - template = self._system._templates.TryLoad(template_file) |
| + template = self._template_loader.TryLoad(template_file) |
| if not template: |
| - template = self._system._templates.Load('factoryprovider.darttemplate') |
| + template = self._template_loader.Load('factoryprovider.darttemplate') |
| emitter.Emit( |
| template, |
| @@ -894,7 +894,7 @@ class HtmlDart2JSClassGenerator(Dart2JSInterfaceGenerator): |
| # TODO(sra): Use separate mixins for typed array implementations of List<T>. |
| if self._interface.id != 'NodeList': |
| template_file = 'immutable_list_mixin.darttemplate' |
| - template = self._system._templates.Load(template_file) |
| + template = self._template_loader.Load(template_file) |
| self._members_emitter.Emit(template, E=self._DartType(element_type)) |
| def AddAttribute(self, attribute, html_name, read_only): |
| @@ -1217,16 +1217,8 @@ class HtmlDart2JSClassGenerator(Dart2JSInterfaceGenerator): |
| if element_type and requires_indexer: return True |
| return False |
| -# ------------------------------------------------------------------------------ |
| - |
| -class HtmlDart2JSSystem(System): |
| - |
| - def __init__(self, options): |
| - super(HtmlDart2JSSystem, self).__init__(options) |
| - |
| - def ImplementationGenerator(self, interface): |
| - return HtmlDart2JSClassGenerator(self, interface) |
| +# ------------------------------------------------------------------------------ |
| class DartLibraryEmitter(): |
| def __init__(self, emitters, template, dart_sources_dir): |