| OLD | NEW |
| 1 #!/usr/bin/python | 1 #!/usr/bin/python |
| 2 # Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 2 # Copyright (c) 2011, 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 is the entry point to create Dart APIs from the IDL database.""" | 6 """This is the entry point to create Dart APIs from the IDL database.""" |
| 7 | 7 |
| 8 import dartgenerator | 8 import dartgenerator |
| 9 import database | 9 import database |
| 10 import fremontcutbuilder | 10 import fremontcutbuilder |
| 11 import logging.config | 11 import logging.config |
| 12 import multiemitter | 12 import multiemitter |
| 13 import optparse | 13 import optparse |
| 14 import os | 14 import os |
| 15 import shutil | 15 import shutil |
| 16 import subprocess | 16 import subprocess |
| 17 import sys | 17 import sys |
| 18 from generator import TypeRegistry | 18 from generator import TypeRegistry |
| 19 from htmleventgenerator import HtmlEventGenerator | 19 from htmleventgenerator import HtmlEventGenerator |
| 20 from htmlrenamer import HtmlRenamer | 20 from htmlrenamer import HtmlRenamer |
| 21 from systemhtml import DartLibraryEmitter, Dart2JSBackend,\ | 21 from systemhtml import DartLibraryEmitter, Dart2JSBackend,\ |
| 22 HtmlDartInterfaceGenerator | 22 HtmlDartInterfaceGenerator |
| 23 from systemnative import CPPLibraryEmitter, DartiumBackend | 23 from systemnative import CPPLibraryEmitter, DartiumBackend |
| 24 from templateloader import TemplateLoader | 24 from templateloader import TemplateLoader |
| 25 | 25 |
| 26 _logger = logging.getLogger('dartdomgenerator') | 26 _logger = logging.getLogger('dartdomgenerator') |
| 27 | 27 |
| 28 _webkit_renames = { | |
| 29 # W3C -> WebKit name conversion | |
| 30 # TODO(vsm): Maybe Store these renames in the IDLs. | |
| 31 'ApplicationCache': 'DOMApplicationCache', | |
| 32 'BarProp': 'BarInfo', | |
| 33 'DedicatedWorkerGlobalScope': 'DedicatedWorkerContext', | |
| 34 'FormData': 'DOMFormData', | |
| 35 'Selection': 'DOMSelection', | |
| 36 'SharedWorkerGlobalScope': 'SharedWorkerContext', | |
| 37 'Window': 'DOMWindow', | |
| 38 'WorkerGlobalScope': 'WorkerContext'} | |
| 39 | |
| 40 class GeneratorOptions(object): | 28 class GeneratorOptions(object): |
| 41 def __init__(self, templates, database, type_registry, renamer): | 29 def __init__(self, templates, database, type_registry, renamer): |
| 42 self.templates = templates | 30 self.templates = templates |
| 43 self.database = database | 31 self.database = database |
| 44 self.type_registry = type_registry | 32 self.type_registry = type_registry |
| 45 self.renamer = renamer | 33 self.renamer = renamer |
| 46 | 34 |
| 47 # TODO(vsm): Remove once we fix Dartium to pass in the database directly. | 35 # TODO(vsm): Remove once we fix Dartium to pass in the database directly. |
| 48 def Generate(database_dir, use_database_cache, dart2js_output_dir=None, | 36 def Generate(database_dir, use_database_cache, dart2js_output_dir=None, |
| 49 dartium_output_dir=None): | 37 dartium_output_dir=None): |
| (...skipping 18 matching lines...) Expand all Loading... |
| 68 generator.LoadAuxiliary(auxiliary_dir) | 56 generator.LoadAuxiliary(auxiliary_dir) |
| 69 | 57 |
| 70 generator.FilterMembersWithUnidentifiedTypes(common_database) | 58 generator.FilterMembersWithUnidentifiedTypes(common_database) |
| 71 webkit_database = common_database.Clone() | 59 webkit_database = common_database.Clone() |
| 72 | 60 |
| 73 # Generate Dart interfaces for the WebKit DOM. | 61 # Generate Dart interfaces for the WebKit DOM. |
| 74 generator.FilterInterfaces(database = webkit_database, | 62 generator.FilterInterfaces(database = webkit_database, |
| 75 or_annotations = ['WebKit', 'Dart'], | 63 or_annotations = ['WebKit', 'Dart'], |
| 76 exclude_displaced = ['WebKit'], | 64 exclude_displaced = ['WebKit'], |
| 77 exclude_suppressed = ['WebKit', 'Dart']) | 65 exclude_suppressed = ['WebKit', 'Dart']) |
| 78 generator.RenameTypes(webkit_database, _webkit_renames, True) | |
| 79 generator.FixEventTargets(webkit_database) | 66 generator.FixEventTargets(webkit_database) |
| 80 generator.AddMissingArguments(webkit_database) | 67 generator.AddMissingArguments(webkit_database) |
| 81 | 68 |
| 82 emitters = multiemitter.MultiEmitter() | 69 emitters = multiemitter.MultiEmitter() |
| 83 renamer = HtmlRenamer(webkit_database) | 70 renamer = HtmlRenamer(webkit_database) |
| 84 type_registry = TypeRegistry(webkit_database, renamer) | 71 type_registry = TypeRegistry(webkit_database, renamer) |
| 85 | 72 |
| 86 def RunGenerator(dart_library_template, dart_output_dir, dart_library_path, | 73 def RunGenerator(dart_library_template, dart_output_dir, dart_library_path, |
| 87 template_loader, backend_factory): | 74 template_loader, backend_factory): |
| 88 options = GeneratorOptions( | 75 options = GeneratorOptions( |
| 89 template_loader, webkit_database, type_registry, renamer) | 76 template_loader, webkit_database, type_registry, renamer) |
| 90 dart_library_emitter = DartLibraryEmitter( | 77 dart_library_emitter = DartLibraryEmitter( |
| 91 emitters, dart_library_template, dart_output_dir) | 78 emitters, dart_library_template, dart_output_dir) |
| 92 event_generator = HtmlEventGenerator(webkit_database, template_loader) | 79 event_generator = HtmlEventGenerator(webkit_database, template_loader) |
| 93 | 80 |
| 94 def generate_interface(interface): | 81 def generate_interface(interface): |
| 95 backend = backend_factory(interface) | 82 backend = backend_factory(interface) |
| 96 interface_generator = HtmlDartInterfaceGenerator( | 83 interface_generator = HtmlDartInterfaceGenerator( |
| 97 options, dart_library_emitter, event_generator, interface, backend) | 84 options, dart_library_emitter, event_generator, interface, backend) |
| 98 interface_generator.Generate() | 85 interface_generator.Generate() |
| 99 | 86 |
| 100 generator.Generate( | 87 generator.Generate(webkit_database, common_database, generate_interface) |
| 101 webkit_database, common_database, _webkit_renames, generate_interface) | |
| 102 dart_library_emitter.EmitLibrary(dart_library_path, auxiliary_dir) | 88 dart_library_emitter.EmitLibrary(dart_library_path, auxiliary_dir) |
| 103 | 89 |
| 104 if dart2js_output_dir: | 90 if dart2js_output_dir: |
| 105 template_paths = ['html/dart2js', 'html/impl', 'html/interface', ''] | 91 template_paths = ['html/dart2js', 'html/impl', 'html/interface', ''] |
| 106 template_loader = TemplateLoader(template_dir, | 92 template_loader = TemplateLoader(template_dir, |
| 107 template_paths, | 93 template_paths, |
| 108 {'DARTIUM': False, 'DART2JS': True}) | 94 {'DARTIUM': False, 'DART2JS': True}) |
| 109 backend_options = GeneratorOptions( | 95 backend_options = GeneratorOptions( |
| 110 template_loader, webkit_database, type_registry, renamer) | 96 template_loader, webkit_database, type_registry, renamer) |
| 111 backend_factory = lambda interface:\ | 97 backend_factory = lambda interface:\ |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 202 _logger.info('Copy html_dart2js to dart2js/') | 188 _logger.info('Copy html_dart2js to dart2js/') |
| 203 GenerateSingleFile(os.path.join(dart2js_output_dir, 'html_dart2js.dart'), | 189 GenerateSingleFile(os.path.join(dart2js_output_dir, 'html_dart2js.dart'), |
| 204 '../dart2js') | 190 '../dart2js') |
| 205 if 'htmldartium' in systems: | 191 if 'htmldartium' in systems: |
| 206 _logger.info('Copy html_dartium to dartium/') | 192 _logger.info('Copy html_dartium to dartium/') |
| 207 GenerateSingleFile(os.path.join(dartium_output_dir, 'html_dartium.dart'), | 193 GenerateSingleFile(os.path.join(dartium_output_dir, 'html_dartium.dart'), |
| 208 '../dartium') | 194 '../dartium') |
| 209 | 195 |
| 210 if __name__ == '__main__': | 196 if __name__ == '__main__': |
| 211 sys.exit(main()) | 197 sys.exit(main()) |
| OLD | NEW |