| Index: tools/dom/scripts/dartdomgenerator.py | 
| diff --git a/tools/dom/scripts/dartdomgenerator.py b/tools/dom/scripts/dartdomgenerator.py | 
| index 89b5fe2331de9ea9d398d48dd7ede5137105b877..53b2132b77d034ff3866f3bb5f3062d3e8540019 100755 | 
| --- a/tools/dom/scripts/dartdomgenerator.py | 
| +++ b/tools/dom/scripts/dartdomgenerator.py | 
| @@ -6,6 +6,16 @@ | 
| """This is the entry point to create Dart APIs from the IDL database.""" | 
|  | 
| import css_code_generator | 
| +import os | 
| +import sys | 
| + | 
| +# Setup all paths to find our PYTHON code | 
| +dart_dir = os.path.abspath(os.path.normpath(os.path.join(os.path.dirname(__file__), '..', '..', '..'))) | 
| +sys.path.insert(1, os.path.join(dart_dir, 'tools/dom/new_scripts')) | 
| +sys.path.insert(1, os.path.join(dart_dir, 'third_party/WebCore/bindings/scripts')) | 
| +sys.path.insert(1, os.path.join(dart_dir, 'third_party')) | 
| +sys.path.insert(1, os.path.join(dart_dir, 'tools/dom/scripts')) | 
| + | 
| import dartgenerator | 
| import database | 
| import fremontcutbuilder | 
| @@ -13,10 +23,9 @@ import logging | 
| import monitored | 
| import multiemitter | 
| import optparse | 
| -import os | 
| import shutil | 
| import subprocess | 
| -import sys | 
| +import time | 
| from dartmetadata import DartMetadata | 
| from generator import TypeRegistry | 
| from htmleventgenerator import HtmlEventGenerator | 
| @@ -29,8 +38,10 @@ from systemnative import CPPLibraryEmitter, DartiumBackend, \ | 
| from templateloader import TemplateLoader | 
|  | 
| sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..')) | 
| + | 
| import utils | 
|  | 
| + | 
| _logger = logging.getLogger('dartdomgenerator') | 
|  | 
| class GeneratorOptions(object): | 
| @@ -51,12 +62,17 @@ def LoadDatabase(database_dir, use_database_cache): | 
| return common_database | 
|  | 
| def GenerateFromDatabase(common_database, dart2js_output_dir, | 
| -                         dartium_output_dir, update_dom_metadata=False): | 
| +                         dartium_output_dir, update_dom_metadata=False, | 
| +                         logging_level=logging.WARNING): | 
| +  start_time = time.time() | 
| + | 
| current_dir = os.path.dirname(__file__) | 
| auxiliary_dir = os.path.join(current_dir, '..', 'src') | 
| template_dir = os.path.join(current_dir, '..', 'templates') | 
|  | 
| -  generator = dartgenerator.DartGenerator() | 
| +  _logger.setLevel(logging_level) | 
| + | 
| +  generator = dartgenerator.DartGenerator(logging_level) | 
| generator.LoadAuxiliary(auxiliary_dir) | 
|  | 
| generator.FilterMembersWithUnidentifiedTypes(common_database) | 
| @@ -70,13 +86,16 @@ def GenerateFromDatabase(common_database, dart2js_output_dir, | 
| generator.FixEventTargets(webkit_database) | 
| generator.AddMissingArguments(webkit_database) | 
|  | 
| -  emitters = multiemitter.MultiEmitter() | 
| +  emitters = multiemitter.MultiEmitter(logging_level) | 
| metadata = DartMetadata( | 
| os.path.join(current_dir, '..', 'dom.json'), | 
| -      os.path.join(current_dir, '..', 'docs', 'docs.json')) | 
| +      os.path.join(current_dir, '..', 'docs', 'docs.json'), | 
| +      logging_level) | 
| renamer = HtmlRenamer(webkit_database, metadata) | 
| type_registry = TypeRegistry(webkit_database, renamer) | 
|  | 
| +  print 'GenerateFromDatabase %s seconds' % round((time.time() - start_time), 2) | 
| + | 
| def RunGenerator(dart_libraries, dart_output_dir, | 
| template_loader, backend_factory): | 
| options = GeneratorOptions( | 
| @@ -106,14 +125,19 @@ def GenerateFromDatabase(common_database, dart2js_output_dir, | 
| template_loader, webkit_database, type_registry, renamer, | 
| metadata) | 
| backend_factory = lambda interface:\ | 
| -        Dart2JSBackend(interface, backend_options) | 
| +        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) | 
|  | 
| -    RunGenerator(dart_libraries, dart_output_dir, | 
| -        template_loader, backend_factory) | 
| +    print '\nGenerating dart2js:\n' | 
| +    start_time = time.time() | 
| + | 
| +    RunGenerator(dart_libraries, dart_output_dir, template_loader, | 
| +                 backend_factory) | 
| + | 
| +    print 'Generated dart2js in %s seconds' % round(time.time() - start_time, 2) | 
|  | 
| if dartium_output_dir: | 
| template_paths = ['html/dartium', 'html/impl', 'html/interface', ''] | 
| @@ -135,8 +159,14 @@ def GenerateFromDatabase(common_database, dart2js_output_dir, | 
| cpp_library_emitter, backend_options) | 
| dart_libraries = DartLibraries( | 
| HTML_LIBRARY_NAMES, template_loader, 'dartium', dartium_output_dir) | 
| + | 
| +    print '\nGenerating dartium:\n' | 
| +    start_time = time.time() | 
| + | 
| RunGenerator(dart_libraries, dart_output_dir, | 
| template_loader, backend_factory) | 
| +    print 'Generated dartium in %s seconds' % round(time.time() - start_time, 2) | 
| + | 
| cpp_library_emitter.EmitDerivedSources( | 
| template_loader.Load('cpp_derived_sources.template'), | 
| dartium_output_dir) | 
| @@ -149,7 +179,7 @@ def GenerateFromDatabase(common_database, dart2js_output_dir, | 
| if update_dom_metadata: | 
| metadata.Flush() | 
|  | 
| -  monitored.FinishMonitoring(dart2js_output_dir) | 
| +  monitored.FinishMonitoring(dart2js_output_dir, _logger) | 
|  | 
| def GenerateSingleFile(library_path, output_dir, generated_output_dir=None): | 
| library_dir = os.path.dirname(library_path) | 
| @@ -192,6 +222,16 @@ def main(): | 
| action='store_true', | 
| default=False, | 
| help='''Update the metadata list of DOM APIs''') | 
| +  parser.add_option('--blink-parser', dest='blink_parser', | 
| +                    action='store_true', default=False, | 
| +                    help='Use New Blink IDL parser.') | 
| +  parser.add_option('--verbose', dest='logging_level', | 
| +                    action='store_false', default=logging.WARNING, | 
| +                    help='Output all informational messages') | 
| +  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') | 
| + | 
| (options, args) = parser.parse_args() | 
|  | 
| current_dir = os.path.dirname(__file__) | 
| @@ -210,24 +250,40 @@ def main(): | 
| if 'htmldartium' in systems: | 
| dartium_output_dir = os.path.join(output_dir, 'dartium') | 
|  | 
| +  logging_level = options.logging_level \ | 
| +    if options.logging == logging.NOTSET else options.logging | 
| + | 
| +  start_time = time.time() | 
| + | 
| UpdateCssProperties() | 
| + | 
| if options.rebuild: | 
| # Parse the IDL and create the database. | 
| -    database = fremontcutbuilder.main(options.parallel) | 
| +    database = fremontcutbuilder.main(options.parallel, options.blink_parser, | 
| +                                      logging_level=logging_level) | 
| else: | 
| +    # TODO(terry): Should be able to remove this... | 
| # Load the previously generated database. | 
| -    database = LoadDatabase(database_dir, options.use_database_cache) | 
| +    if not options.blink_parser: | 
| +      database = LoadDatabase(database_dir, options.use_database_cache) | 
| + | 
| GenerateFromDatabase(database, dart2js_output_dir, dartium_output_dir, | 
| -      options.update_dom_metadata) | 
| +      options.update_dom_metadata, logging_level) | 
| + | 
| +  file_generation_start_time = time.time() | 
|  | 
| if 'htmldart2js' in systems: | 
| _logger.info('Generating dart2js single files.') | 
| + | 
| for library_name in HTML_LIBRARY_NAMES: | 
| GenerateSingleFile( | 
| os.path.join(dart2js_output_dir, '%s_dart2js.dart' % library_name), | 
| os.path.join('..', '..', '..', 'sdk', 'lib', library_name, 'dart2js')) | 
| + | 
| if 'htmldartium' in systems: | 
| _logger.info('Generating dartium single files.') | 
| +    file_generation_start_time = time.time() | 
| + | 
| for library_name in HTML_LIBRARY_NAMES: | 
| GenerateSingleFile( | 
| os.path.join(dartium_output_dir, '%s_dartium.dart' % library_name), | 
| @@ -236,5 +292,11 @@ def main(): | 
| os.path.join(dartium_output_dir, '_blink_dartium.dart'), | 
| os.path.join('..', '..', '..', 'sdk', 'lib', '_blink', 'dartium')) | 
|  | 
| +  print '\nGenerating single file %s seconds' % round(time.time() - file_generation_start_time, 2) | 
| + | 
| +  end_time = time.time() | 
| + | 
| +  print '\nDone (dartdomgenerator) %s seconds' % round(end_time - start_time, 2) | 
| + | 
| if __name__ == '__main__': | 
| sys.exit(main()) | 
|  |