| OLD | NEW |
| 1 #!/usr/bin/python | 1 #!/usr/bin/python |
| 2 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 2 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 3 # for details. All rights reserved. Use of this source code is governed by a | 3 # for details. All rights reserved. Use of this source code is governed by a |
| 4 # BSD-style license that can be found in the LICENSE file. | 4 # BSD-style license that can be found in the LICENSE file. |
| 5 | 5 |
| 6 """This module provides shared functionality for the system to generate | 6 """This module provides shared functionality for the system to generate |
| 7 Dart:html APIs from the IDL database.""" | 7 Dart:html APIs from the IDL database.""" |
| 8 | 8 |
| 9 import emitter | 9 import emitter |
| 10 import logging | 10 import logging |
| (...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 533 mixins_str = '' | 533 mixins_str = '' |
| 534 if mixins: | 534 if mixins: |
| 535 mixins_str = ' with ' + ', '.join(mixins) | 535 mixins_str = ' with ' + ', '.join(mixins) |
| 536 if not base_class: | 536 if not base_class: |
| 537 base_class = 'Interceptor' | 537 base_class = 'Interceptor' |
| 538 | 538 |
| 539 annotations = self._metadata.GetFormattedMetadata( | 539 annotations = self._metadata.GetFormattedMetadata( |
| 540 self._library_name, self._interface, None, '') | 540 self._library_name, self._interface, None, '') |
| 541 | 541 |
| 542 class_modifiers = '' | 542 class_modifiers = '' |
| 543 if self._renamer.ShouldSuppressInterface(self._interface): | 543 if (self._renamer.ShouldSuppressInterface(self._interface) or |
| 544 IsPureInterface(self._interface.id)): |
| 544 class_modifiers = 'abstract ' | 545 class_modifiers = 'abstract ' |
| 545 | 546 |
| 547 native_spec = '' |
| 548 if not IsPureInterface(self._interface.id): |
| 549 native_spec = self._backend.NativeSpec() |
| 550 |
| 546 self._implementation_members_emitter = implementation_emitter.Emit( | 551 self._implementation_members_emitter = implementation_emitter.Emit( |
| 547 self._backend.ImplementationTemplate(), | 552 self._backend.ImplementationTemplate(), |
| 548 LIBRARYNAME='dart.dom.%s' % self._library_name, | 553 LIBRARYNAME='dart.dom.%s' % self._library_name, |
| 549 ANNOTATIONS=annotations, | 554 ANNOTATIONS=annotations, |
| 550 CLASS_MODIFIERS=class_modifiers, | 555 CLASS_MODIFIERS=class_modifiers, |
| 551 CLASSNAME=self._interface_type_info.implementation_name(), | 556 CLASSNAME=self._interface_type_info.implementation_name(), |
| 552 EXTENDS=' extends %s' % base_class if base_class else '', | 557 EXTENDS=' extends %s' % base_class if base_class else '', |
| 553 IMPLEMENTS=implements_str, | 558 IMPLEMENTS=implements_str, |
| 554 MIXINS=mixins_str, | 559 MIXINS=mixins_str, |
| 555 DOMNAME=self._interface.doc_js_name, | 560 DOMNAME=self._interface.doc_js_name, |
| 556 NATIVESPEC=self._backend.NativeSpec()) | 561 NATIVESPEC=native_spec) |
| 557 self._backend.StartInterface(self._implementation_members_emitter) | 562 self._backend.StartInterface(self._implementation_members_emitter) |
| 558 | 563 |
| 559 self._backend.EmitHelpers(base_class) | 564 self._backend.EmitHelpers(base_class) |
| 560 self._event_generator.EmitStreamProviders( | 565 self._event_generator.EmitStreamProviders( |
| 561 self._interface, | 566 self._interface, |
| 562 self._backend.CustomJSMembers(), | 567 self._backend.CustomJSMembers(), |
| 563 self._implementation_members_emitter, | 568 self._implementation_members_emitter, |
| 564 self._library_name) | 569 self._library_name) |
| 565 self._backend.AddConstructors( | 570 self._backend.AddConstructors( |
| 566 constructors, factory_provider, factory_constructor_name) | 571 constructors, factory_provider, factory_constructor_name) |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 625 implements = super(Dart2JSBackend, self).AdditionalImplementedInterfaces() | 630 implements = super(Dart2JSBackend, self).AdditionalImplementedInterfaces() |
| 626 if self._interface_type_info.list_item_type(): | 631 if self._interface_type_info.list_item_type(): |
| 627 implements.append('JavaScriptIndexingBehavior') | 632 implements.append('JavaScriptIndexingBehavior') |
| 628 return implements | 633 return implements |
| 629 | 634 |
| 630 def NativeSpec(self): | 635 def NativeSpec(self): |
| 631 native_spec = MakeNativeSpec(self._interface.javascript_binding_name) | 636 native_spec = MakeNativeSpec(self._interface.javascript_binding_name) |
| 632 return ' native "%s"' % native_spec | 637 return ' native "%s"' % native_spec |
| 633 | 638 |
| 634 def ImplementationTemplate(self): | 639 def ImplementationTemplate(self): |
| 635 if IsPureInterface(self._interface.id): | |
| 636 return self._template_loader.Load('pure_interface.darttemplate') | |
| 637 | |
| 638 template_file = ('impl_%s.darttemplate' % | 640 template_file = ('impl_%s.darttemplate' % |
| 639 self._interface.doc_js_name) | 641 self._interface.doc_js_name) |
| 640 return (self._template_loader.TryLoad(template_file) or | 642 return (self._template_loader.TryLoad(template_file) or |
| 641 self._template_loader.Load('dart2js_impl.darttemplate')) | 643 self._template_loader.Load('dart2js_impl.darttemplate')) |
| 642 | 644 |
| 643 def StartInterface(self, members_emitter): | 645 def StartInterface(self, members_emitter): |
| 644 self._members_emitter = members_emitter | 646 self._members_emitter = members_emitter |
| 645 | 647 |
| 646 def FinishInterface(self): | 648 def FinishInterface(self): |
| 647 pass | 649 pass |
| (...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 890 '\n', | 892 '\n', |
| 891 CONVERT=conversion.function_name, | 893 CONVERT=conversion.function_name, |
| 892 HTML_NAME=html_name, | 894 HTML_NAME=html_name, |
| 893 NAME=attr.id, | 895 NAME=attr.id, |
| 894 INPUT_TYPE=conversion.input_type, | 896 INPUT_TYPE=conversion.input_type, |
| 895 NATIVE_TYPE=conversion.output_type) | 897 NATIVE_TYPE=conversion.output_type) |
| 896 | 898 |
| 897 def AmendIndexer(self, element_type): | 899 def AmendIndexer(self, element_type): |
| 898 pass | 900 pass |
| 899 | 901 |
| 902 def RootClassName(self): |
| 903 return 'Interceptor' |
| 904 |
| 900 def EmitOperation(self, info, html_name): | 905 def EmitOperation(self, info, html_name): |
| 901 """ | 906 """ |
| 902 Arguments: | 907 Arguments: |
| 903 info: An OperationInfo object. | 908 info: An OperationInfo object. |
| 904 """ | 909 """ |
| 905 if self._HasCustomImplementation(info.name): | 910 if self._HasCustomImplementation(info.name): |
| 906 return | 911 return |
| 907 | 912 |
| 908 if IsPureInterface(self._interface.id): | 913 if IsPureInterface(self._interface.id): |
| 909 self._AddInterfaceOperation(info, html_name) | 914 self._AddInterfaceOperation(info, html_name) |
| (...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1188 for library_name in libraries: | 1193 for library_name in libraries: |
| 1189 self._libraries[library_name] = DartLibrary( | 1194 self._libraries[library_name] = DartLibrary( |
| 1190 library_name, template_loader, library_type, output_dir) | 1195 library_name, template_loader, library_type, output_dir) |
| 1191 | 1196 |
| 1192 def AddFile(self, basename, library_name, path): | 1197 def AddFile(self, basename, library_name, path): |
| 1193 self._libraries[library_name].AddFile(path) | 1198 self._libraries[library_name].AddFile(path) |
| 1194 | 1199 |
| 1195 def Emit(self, emitter, auxiliary_dir): | 1200 def Emit(self, emitter, auxiliary_dir): |
| 1196 for lib in self._libraries.values(): | 1201 for lib in self._libraries.values(): |
| 1197 lib.Emit(emitter, auxiliary_dir) | 1202 lib.Emit(emitter, auxiliary_dir) |
| OLD | NEW |