Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(83)

Side by Side Diff: lib/dom/scripts/dartdomgenerator.py

Issue 10698108: Stop passing HtmlSystemShared around and move html renaming to IDLTypeInfo. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: . Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | lib/dom/scripts/dartgenerator.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 logging.config 10 import logging.config
11 import multiemitter 11 import multiemitter
12 import optparse 12 import optparse
13 import os 13 import os
14 import shutil 14 import shutil
15 import subprocess 15 import subprocess
16 import sys 16 import sys
17 from generator import TypeRegistry 17 from generator import TypeRegistry
18 from systembase import GeneratorContext 18 from systembase import GeneratorContext
19 from systemfrog import FrogSystem 19 from systemfrog import FrogSystem
20 from systemhtml import HtmlInterfacesSystem, HtmlFrogSystem 20 from systemhtml import HtmlInterfacesSystem, HtmlFrogSystem, HtmlSystemShared
21 from systeminterface import InterfacesSystem 21 from systeminterface import InterfacesSystem
22 from systemnative import NativeImplementationSystem 22 from systemnative import NativeImplementationSystem
23 from templateloader import TemplateLoader 23 from templateloader import TemplateLoader
24 24
25 _logger = logging.getLogger('dartdomgenerator') 25 _logger = logging.getLogger('dartdomgenerator')
26 26
27 _webkit_renames = { 27 _webkit_renames = {
28 # W3C -> WebKit name conversion 28 # W3C -> WebKit name conversion
29 # TODO(vsm): Maybe Store these renames in the IDLs. 29 # TODO(vsm): Maybe Store these renames in the IDLs.
30 'ApplicationCache': 'DOMApplicationCache', 30 'ApplicationCache': 'DOMApplicationCache',
(...skipping 24 matching lines...) Expand all
55 webkit_database = common_database.Clone() 55 webkit_database = common_database.Clone()
56 56
57 # Generate Dart interfaces for the WebKit DOM. 57 # Generate Dart interfaces for the WebKit DOM.
58 generator.FilterInterfaces(database = webkit_database, 58 generator.FilterInterfaces(database = webkit_database,
59 or_annotations = ['WebKit', 'Dart'], 59 or_annotations = ['WebKit', 'Dart'],
60 exclude_displaced = ['WebKit'], 60 exclude_displaced = ['WebKit'],
61 exclude_suppressed = ['WebKit', 'Dart']) 61 exclude_suppressed = ['WebKit', 'Dart'])
62 generator.RenameTypes(webkit_database, _webkit_renames, True) 62 generator.RenameTypes(webkit_database, _webkit_renames, True)
63 generator.FixEventTargets(webkit_database) 63 generator.FixEventTargets(webkit_database)
64 64
65 def CreateGeneratorContext(template_paths, conditions, output_dir): 65 def CreateGeneratorContext(template_paths, conditions, type_registry,
66 output_dir):
66 return GeneratorContext( 67 return GeneratorContext(
67 TemplateLoader(template_dir, template_paths, conditions), 68 TemplateLoader(template_dir, template_paths, conditions),
68 webkit_database, emitters, TypeRegistry(), output_dir) 69 webkit_database, emitters, type_registry, output_dir)
69 70
70 def Generate(system): 71 def Generate(system):
71 generator.Generate(webkit_database, system, 72 generator.Generate(webkit_database, system,
72 super_database=common_database, 73 super_database=common_database,
73 webkit_renames=_webkit_renames) 74 webkit_renames=_webkit_renames)
74 75
75 emitters = multiemitter.MultiEmitter() 76 emitters = multiemitter.MultiEmitter()
76 77
77 for system_name in system_names: 78 for system_name in system_names:
78 if system_name in ['htmlfrog', 'htmldartium']: 79 if system_name in ['htmlfrog', 'htmldartium']:
80 renames = HtmlSystemShared.MakeHtmlRenames(webkit_database)
81 type_registry = TypeRegistry(renames)
79 if system_name == 'htmlfrog': 82 if system_name == 'htmlfrog':
80 context = CreateGeneratorContext( 83 context = CreateGeneratorContext(
81 ['html/frog', 'html/impl', 'html', ''], 84 ['html/frog', 'html/impl', 'html', ''],
82 {'DARTIUM': False, 'FROG': True}, 85 {'DARTIUM': False, 'FROG': True},
86 type_registry,
83 html_output_dir) 87 html_output_dir)
84 backend = HtmlFrogSystem(context) 88 backend = HtmlFrogSystem(context)
85 else: 89 else:
86 context = CreateGeneratorContext( 90 context = CreateGeneratorContext(
87 ['dom/native', 'html/dartium', 'html/impl', ''], 91 ['dom/native', 'html/dartium', 'html/impl', ''],
88 {'DARTIUM': True, 'FROG': False}, 92 {'DARTIUM': True, 'FROG': False},
93 type_registry,
89 html_output_dir) 94 html_output_dir)
90 backend = NativeImplementationSystem(context, auxiliary_dir) 95 backend = NativeImplementationSystem(context, auxiliary_dir)
91 context = CreateGeneratorContext( 96 context = CreateGeneratorContext(
92 ['html/interface', 'html/impl', 'html', ''], {}, html_output_dir) 97 ['html/interface', 'html/impl', 'html', ''], {}, type_registry,
98 html_output_dir)
93 html_system = HtmlInterfacesSystem(context, backend) 99 html_system = HtmlInterfacesSystem(context, backend)
94 Generate(html_system) 100 Generate(html_system)
95 else: 101 else:
102 type_registry = TypeRegistry({})
96 context = CreateGeneratorContext( 103 context = CreateGeneratorContext(
97 ['dom/interface', 'dom', ''], {}, dom_output_dir) 104 ['dom/interface', 'dom', ''], {}, type_registry, dom_output_dir)
98 interface_system = InterfacesSystem(context) 105 interface_system = InterfacesSystem(context)
99 if system_name == 'dummy': 106 if system_name == 'dummy':
100 context = CreateGeneratorContext( 107 context = CreateGeneratorContext(
101 ['dom/dummy', 'dom', ''], {}, dom_output_dir) 108 ['dom/dummy', 'dom', ''], {}, type_registry, dom_output_dir)
102 implementation_system = dartgenerator.DummyImplementationSystem( 109 implementation_system = dartgenerator.DummyImplementationSystem(
103 context) 110 context)
104 elif system_name == 'frog': 111 elif system_name == 'frog':
105 context = CreateGeneratorContext( 112 context = CreateGeneratorContext(
106 ['dom/frog', 'dom', ''], {}, dom_output_dir) 113 ['dom/frog', 'dom', ''], {}, type_registry, dom_output_dir)
107 implementation_system = FrogSystem(context) 114 implementation_system = FrogSystem(context)
108 else: 115 else:
109 raise Exception('Unsupported system_name %s' % system_name) 116 raise Exception('Unsupported system_name %s' % system_name)
110 117
111 # Makes interface files available for listing in the library for the 118 # Makes interface files available for listing in the library for the
112 # implementation system. 119 # implementation system.
113 implementation_system._interface_system = interface_system 120 implementation_system._interface_system = interface_system
114 Generate(interface_system) 121 Generate(interface_system)
115 Generate(implementation_system) 122 Generate(implementation_system)
116 123
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 dom_output_dir = options.output_dir or os.path.join(current_dir, 177 dom_output_dir = options.output_dir or os.path.join(current_dir,
171 '../generated') 178 '../generated')
172 html_output_dir = options.output_dir or os.path.join(current_dir, 179 html_output_dir = options.output_dir or os.path.join(current_dir,
173 '../../html/generated') 180 '../../html/generated')
174 Generate(systems, database_dir, options.use_database_cache, 181 Generate(systems, database_dir, options.use_database_cache,
175 dom_output_dir, html_output_dir) 182 dom_output_dir, html_output_dir)
176 GenerateSingleFile(systems) 183 GenerateSingleFile(systems)
177 184
178 if __name__ == '__main__': 185 if __name__ == '__main__':
179 sys.exit(main()) 186 sys.exit(main())
OLDNEW
« no previous file with comments | « no previous file | lib/dom/scripts/dartgenerator.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698