Index: tools/dom/scripts/dartdomgenerator.py |
diff --git a/tools/dom/scripts/dartdomgenerator.py b/tools/dom/scripts/dartdomgenerator.py |
index a2fef65c13d5242c15977e0b09e3bba09d7caccf..5a35903751facb2226ca784ab37b437d46eb6e52 100755 |
--- a/tools/dom/scripts/dartdomgenerator.py |
+++ b/tools/dom/scripts/dartdomgenerator.py |
@@ -62,12 +62,13 @@ _logger = logging.getLogger('dartdomgenerator') |
class GeneratorOptions(object): |
def __init__(self, templates, database, type_registry, renamer, |
- metadata): |
+ metadata, dart_js_interop): |
self.templates = templates |
self.database = database |
self.type_registry = type_registry |
self.renamer = renamer |
self.metadata = metadata; |
+ self.dart_js_interop = dart_js_interop |
def LoadDatabase(database_dir, use_database_cache): |
common_database = database.Database(database_dir) |
@@ -79,7 +80,9 @@ def LoadDatabase(database_dir, use_database_cache): |
def GenerateFromDatabase(common_database, dart2js_output_dir, |
dartium_output_dir, update_dom_metadata=False, |
- logging_level=logging.WARNING): |
+ logging_level=logging.WARNING, dart_js_interop=False): |
+ print '\n ----- Accessing DOM using %s -----\n' % ('dart:js' if dart_js_interop else 'C++') |
+ |
start_time = time.time() |
current_dir = os.path.dirname(__file__) |
@@ -113,10 +116,10 @@ def GenerateFromDatabase(common_database, dart2js_output_dir, |
print 'GenerateFromDatabase %s seconds' % round((time.time() - start_time), 2) |
def RunGenerator(dart_libraries, dart_output_dir, |
- template_loader, backend_factory): |
+ template_loader, backend_factory, dart_js_interop): |
options = GeneratorOptions( |
template_loader, webkit_database, type_registry, renamer, |
- metadata) |
+ metadata, dart_js_interop) |
dart_library_emitter = DartLibraryEmitter( |
emitters, dart_output_dir, dart_libraries) |
event_generator = HtmlEventGenerator(webkit_database, renamer, metadata, |
@@ -130,28 +133,30 @@ def GenerateFromDatabase(common_database, dart2js_output_dir, |
generator.Generate(webkit_database, common_database, generate_interface) |
- dart_library_emitter.EmitLibraries(auxiliary_dir) |
+ dart_library_emitter.EmitLibraries(auxiliary_dir, dart_js_interop) |
if dart2js_output_dir: |
template_paths = ['html/dart2js', 'html/impl', 'html/interface', ''] |
template_loader = TemplateLoader(template_dir, |
template_paths, |
- {'DARTIUM': False, 'DART2JS': True}) |
+ {'DARTIUM': False, |
+ 'DART2JS': True, |
+ 'JSINTEROP': False}) |
backend_options = GeneratorOptions( |
template_loader, webkit_database, type_registry, renamer, |
- metadata) |
+ metadata, dart_js_interop) |
backend_factory = lambda interface:\ |
Dart2JSBackend(interface, backend_options, logging_level) |
dart_output_dir = os.path.join(dart2js_output_dir, 'dart') |
dart_libraries = DartLibraries( |
- HTML_LIBRARY_NAMES, template_loader, 'dart2js', dart2js_output_dir) |
+ HTML_LIBRARY_NAMES, template_loader, 'dart2js', dart2js_output_dir, dart_js_interop) |
print '\nGenerating dart2js:\n' |
start_time = time.time() |
RunGenerator(dart_libraries, dart_output_dir, template_loader, |
- backend_factory) |
+ backend_factory, dart_js_interop) |
print 'Generated dart2js in %s seconds' % round(time.time() - start_time, 2) |
@@ -159,23 +164,25 @@ def GenerateFromDatabase(common_database, dart2js_output_dir, |
template_paths = ['html/dartium', 'html/impl', 'html/interface', ''] |
template_loader = TemplateLoader(template_dir, |
template_paths, |
- {'DARTIUM': True, 'DART2JS': False}) |
+ {'DARTIUM': True, |
+ 'DART2JS': False, |
+ 'JSINTEROP': dart_js_interop}) |
backend_options = GeneratorOptions( |
template_loader, webkit_database, type_registry, renamer, |
- metadata) |
+ metadata, dart_js_interop) |
cpp_output_dir = os.path.join(dartium_output_dir, 'cpp') |
cpp_library_emitter = CPPLibraryEmitter(emitters, cpp_output_dir) |
dart_output_dir = os.path.join(dartium_output_dir, 'dart') |
backend_factory = lambda interface:\ |
DartiumBackend(interface, cpp_library_emitter, backend_options) |
dart_libraries = DartLibraries( |
- HTML_LIBRARY_NAMES, template_loader, 'dartium', dartium_output_dir) |
+ HTML_LIBRARY_NAMES, template_loader, 'dartium', dartium_output_dir, dart_js_interop) |
print '\nGenerating dartium:\n' |
start_time = time.time() |
- RunGenerator(dart_libraries, dart_output_dir, |
- template_loader, backend_factory) |
+ RunGenerator(dart_libraries, dart_output_dir, template_loader, |
+ backend_factory, dart_js_interop) |
print 'Generated dartium in %s seconds' % round(time.time() - start_time, 2) |
cpp_library_emitter.EmitDerivedSources( |
@@ -239,6 +246,9 @@ def main(): |
parser.add_option('--logging', dest='logging', type='int', |
action='store', default=logging.NOTSET, |
help='Level of logging 20 is Info, 30 is Warnings, 40 is Errors') |
+ parser.add_option('--gen-interop', dest='dart_js_interop', |
+ action='store_true', default=False, |
+ help='Use Javascript objects (dart:js) accessing the DOM in _blink') |
(options, args) = parser.parse_args() |
@@ -269,7 +279,7 @@ def main(): |
database = fremontcutbuilder.main(options.parallel, logging_level=logging_level, examine_idls=options.examine_idls) |
GenerateFromDatabase(database, dart2js_output_dir, dartium_output_dir, |
- options.update_dom_metadata, logging_level) |
+ options.update_dom_metadata, logging_level, options.dart_js_interop) |
file_generation_start_time = time.time() |