| 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 os | 10 import os |
| (...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 394 implements.append(parent_type_info.interface_name()) | 394 implements.append(parent_type_info.interface_name()) |
| 395 | 395 |
| 396 secure_base_name = self._backend.SecureBaseName(interface_name) | 396 secure_base_name = self._backend.SecureBaseName(interface_name) |
| 397 if secure_base_name: | 397 if secure_base_name: |
| 398 implements.append(secure_base_name) | 398 implements.append(secure_base_name) |
| 399 | 399 |
| 400 implements_str = '' | 400 implements_str = '' |
| 401 if implements: | 401 if implements: |
| 402 implements_str = ' implements ' + ', '.join(set(implements)) | 402 implements_str = ' implements ' + ', '.join(set(implements)) |
| 403 | 403 |
| 404 annotations = FormatAnnotations( | 404 annotations = FormatAnnotationsAndComments( |
| 405 FindCommonAnnotations(self._interface.doc_js_name), '') | 405 GetAnnotationsAndComments(self._interface.doc_js_name, |
| 406 library_name=self._library_name), '') |
| 406 | 407 |
| 407 self._implementation_members_emitter = implementation_emitter.Emit( | 408 self._implementation_members_emitter = implementation_emitter.Emit( |
| 408 self._backend.ImplementationTemplate(), | 409 self._backend.ImplementationTemplate(), |
| 409 LIBRARYNAME=self._library_name, | 410 LIBRARYNAME=self._library_name, |
| 410 ANNOTATIONS=annotations, | 411 ANNOTATIONS=annotations, |
| 411 CLASSNAME=self._interface_type_info.implementation_name(), | 412 CLASSNAME=self._interface_type_info.implementation_name(), |
| 412 EXTENDS=' extends %s' % base_class if base_class else '', | 413 EXTENDS=' extends %s' % base_class if base_class else '', |
| 413 IMPLEMENTS=implements_str, | 414 IMPLEMENTS=implements_str, |
| 414 DOMNAME=self._interface.doc_js_name, | 415 DOMNAME=self._interface.doc_js_name, |
| 415 NATIVESPEC=self._backend.NativeSpec()) | 416 NATIVESPEC=self._backend.NativeSpec()) |
| 416 self._backend.StartInterface(self._implementation_members_emitter) | 417 self._backend.StartInterface(self._implementation_members_emitter) |
| 417 | 418 |
| 418 self._backend.EmitHelpers(base_class) | 419 self._backend.EmitHelpers(base_class) |
| 419 self._event_generator.EmitStreamProviders( | 420 self._event_generator.EmitStreamProviders( |
| 420 self._interface, | 421 self._interface, |
| 421 self._backend.CustomJSMembers(), | 422 self._backend.CustomJSMembers(), |
| 422 self._implementation_members_emitter) | 423 self._implementation_members_emitter, |
| 424 self._library_name) |
| 423 self._backend.AddConstructors( | 425 self._backend.AddConstructors( |
| 424 constructors, factory_provider, factory_constructor_name) | 426 constructors, factory_provider, factory_constructor_name) |
| 425 | 427 |
| 426 self._backend.EmitSupportCheck() | 428 self._backend.EmitSupportCheck() |
| 427 | 429 |
| 428 events_class_name = self._event_generator.ProcessInterface( | 430 events_class_name = self._event_generator.ProcessInterface( |
| 429 self._interface, interface_name, | 431 self._interface, interface_name, |
| 430 self._backend.CustomJSMembers(), | 432 self._backend.CustomJSMembers(), |
| 431 implementation_emitter) | 433 implementation_emitter) |
| 432 if events_class_name: | 434 if events_class_name: |
| 433 self._backend.EmitEventGetter(events_class_name) | 435 self._backend.EmitEventGetter(events_class_name) |
| 434 | 436 |
| 435 merged_interface = self._interface_type_info.merged_interface() | 437 merged_interface = self._interface_type_info.merged_interface() |
| 436 if merged_interface: | 438 if merged_interface: |
| 437 self._backend.AddMembers(self._database.GetInterface(merged_interface), | 439 self._backend.AddMembers(self._database.GetInterface(merged_interface), |
| 438 not self._backend.ImplementsMergedMembers()) | 440 not self._backend.ImplementsMergedMembers()) |
| 439 | 441 |
| 440 self._backend.AddMembers(self._interface) | 442 self._backend.AddMembers(self._interface) |
| 441 self._backend.AddSecondaryMembers(self._interface) | 443 self._backend.AddSecondaryMembers(self._interface) |
| 442 self._event_generator.EmitStreamGetters( | 444 self._event_generator.EmitStreamGetters( |
| 443 self._interface, | 445 self._interface, |
| 444 [], | 446 [], |
| 445 self._implementation_members_emitter) | 447 self._implementation_members_emitter, |
| 448 self._library_name) |
| 446 self._backend.FinishInterface() | 449 self._backend.FinishInterface() |
| 447 | 450 |
| 448 def _ImplementationEmitter(self): | 451 def _ImplementationEmitter(self): |
| 449 basename = self._interface_type_info.implementation_name() | 452 basename = self._interface_type_info.implementation_name() |
| 450 if (self._interface_type_info.merged_into() and | 453 if (self._interface_type_info.merged_into() and |
| 451 self._backend.ImplementsMergedMembers()): | 454 self._backend.ImplementsMergedMembers()): |
| 452 # Merged members are implemented in target interface implementation. | 455 # Merged members are implemented in target interface implementation. |
| 453 return emitter.Emitter() | 456 return emitter.Emitter() |
| 454 return self._library_emitter.FileEmitter(basename, self._library_name) | 457 return self._library_emitter.FileEmitter(basename, self._library_name) |
| 455 | 458 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 466 | 469 |
| 467 def __init__(self, interface, options): | 470 def __init__(self, interface, options): |
| 468 super(Dart2JSBackend, self).__init__(interface, options) | 471 super(Dart2JSBackend, self).__init__(interface, options) |
| 469 | 472 |
| 470 self._database = options.database | 473 self._database = options.database |
| 471 self._template_loader = options.templates | 474 self._template_loader = options.templates |
| 472 self._type_registry = options.type_registry | 475 self._type_registry = options.type_registry |
| 473 self._renamer = options.renamer | 476 self._renamer = options.renamer |
| 474 self._interface_type_info = self._type_registry.TypeInfo(self._interface.id) | 477 self._interface_type_info = self._type_registry.TypeInfo(self._interface.id) |
| 475 self._current_secondary_parent = None | 478 self._current_secondary_parent = None |
| 479 self._library_name = self._renamer.GetLibraryName(self._interface) |
| 476 | 480 |
| 477 def ImplementsMergedMembers(self): | 481 def ImplementsMergedMembers(self): |
| 478 return True | 482 return True |
| 479 | 483 |
| 480 def GenerateCallback(self, info): | 484 def GenerateCallback(self, info): |
| 481 pass | 485 pass |
| 482 | 486 |
| 483 def RootClassName(self): | 487 def RootClassName(self): |
| 484 return None | 488 return None |
| 485 | 489 |
| (...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 905 def _HasCustomImplementation(self, member_name): | 909 def _HasCustomImplementation(self, member_name): |
| 906 member_name = '%s.%s' % (self._interface.doc_js_name, member_name) | 910 member_name = '%s.%s' % (self._interface.doc_js_name, member_name) |
| 907 return member_name in _js_custom_members | 911 return member_name in _js_custom_members |
| 908 | 912 |
| 909 def _RenamingAnnotation(self, idl_name, member_name): | 913 def _RenamingAnnotation(self, idl_name, member_name): |
| 910 if member_name != idl_name: | 914 if member_name != idl_name: |
| 911 return "@JSName('%s')\n " % idl_name | 915 return "@JSName('%s')\n " % idl_name |
| 912 return '' | 916 return '' |
| 913 | 917 |
| 914 def _Annotations(self, idl_type, idl_member_name, indent=' '): | 918 def _Annotations(self, idl_type, idl_member_name, indent=' '): |
| 915 anns = FindDart2JSAnnotations(idl_type, self._interface.id, | 919 anns = FindDart2JSAnnotationsAndComments(idl_type, self._interface.id, |
| 916 idl_member_name) | 920 idl_member_name, self._library_name) |
| 917 | 921 |
| 918 if not AnyConversionAnnotations(idl_type, self._interface.id, | 922 if not AnyConversionAnnotations(idl_type, self._interface.id, |
| 919 idl_member_name): | 923 idl_member_name): |
| 920 return_type = self.SecureOutputType(idl_type) | 924 return_type = self.SecureOutputType(idl_type) |
| 921 native_type = self._NarrowToImplementationType(idl_type) | 925 native_type = self._NarrowToImplementationType(idl_type) |
| 922 if native_type != return_type: | 926 if native_type != return_type: |
| 923 anns = anns + [ | 927 anns = anns + [ |
| 924 "@Returns('%s')" % native_type, | 928 "@Returns('%s')" % native_type, |
| 925 "@Creates('%s')" % native_type, | 929 "@Creates('%s')" % native_type, |
| 926 ] | 930 ] |
| 927 return FormatAnnotations(anns, indent); | 931 return FormatAnnotationsAndComments(anns, indent); |
| 928 | 932 |
| 929 def CustomJSMembers(self): | 933 def CustomJSMembers(self): |
| 930 return _js_custom_members | 934 return _js_custom_members |
| 931 | 935 |
| 932 def _NarrowToImplementationType(self, type_name): | 936 def _NarrowToImplementationType(self, type_name): |
| 933 return self._type_registry.TypeInfo(type_name).narrow_dart_type() | 937 return self._type_registry.TypeInfo(type_name).narrow_dart_type() |
| 934 | 938 |
| 935 def _NarrowInputType(self, type_name): | 939 def _NarrowInputType(self, type_name): |
| 936 return self._NarrowToImplementationType(type_name) | 940 return self._NarrowToImplementationType(type_name) |
| 937 | 941 |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1034 for library_name in libraries: | 1038 for library_name in libraries: |
| 1035 self._libraries[library_name] = DartLibrary( | 1039 self._libraries[library_name] = DartLibrary( |
| 1036 library_name, template_loader, library_type, output_dir) | 1040 library_name, template_loader, library_type, output_dir) |
| 1037 | 1041 |
| 1038 def AddFile(self, basename, library_name, path): | 1042 def AddFile(self, basename, library_name, path): |
| 1039 self._libraries[library_name].AddFile(path) | 1043 self._libraries[library_name].AddFile(path) |
| 1040 | 1044 |
| 1041 def Emit(self, emitter, auxiliary_dir): | 1045 def Emit(self, emitter, auxiliary_dir): |
| 1042 for lib in self._libraries.values(): | 1046 for lib in self._libraries.values(): |
| 1043 lib.Emit(emitter, auxiliary_dir) | 1047 lib.Emit(emitter, auxiliary_dir) |
| OLD | NEW |