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

Side by Side Diff: tools/dom/scripts/fremontcutbuilder.py

Issue 1001983003: Added --examine to produce analysis of IDL files (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Changed is_dictionary to check_dictionaries Created 5 years, 9 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 | « tools/dom/scripts/databasebuilder.py ('k') | tools/dom/scripts/idlnode.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 import database 6 import database
7 import databasebuilder 7 import databasebuilder
8 import logging.config 8 import logging.config
9 import os.path 9 import os.path
10 import sys 10 import sys
(...skipping 18 matching lines...) Expand all
29 'ENABLE_ENCRYPTED_MEDIA_V2', 29 'ENABLE_ENCRYPTED_MEDIA_V2',
30 'ENABLE_INPUT_SPEECH', # Not on Android 30 'ENABLE_INPUT_SPEECH', # Not on Android
31 'ENABLE_LEGACY_NOTIFICATIONS', # Not on Android 31 'ENABLE_LEGACY_NOTIFICATIONS', # Not on Android
32 'ENABLE_NAVIGATOR_CONTENT_UTILS', # Not on Android 32 'ENABLE_NAVIGATOR_CONTENT_UTILS', # Not on Android
33 'ENABLE_NOTIFICATIONS', # Not on Android 33 'ENABLE_NOTIFICATIONS', # Not on Android
34 'ENABLE_SVG_FONTS', 34 'ENABLE_SVG_FONTS',
35 'ENABLE_WEB_AUDIO', # Not on Android 35 'ENABLE_WEB_AUDIO', # Not on Android
36 ] 36 ]
37 37
38 def build_database(idl_files, database_dir, feature_defines=None, 38 def build_database(idl_files, database_dir, feature_defines=None,
39 logging_level=logging.WARNING): 39 logging_level=logging.WARNING, examine_idls=False):
40 """This code reconstructs the FremontCut IDL database from W3C, 40 """This code reconstructs the FremontCut IDL database from W3C,
41 WebKit and Dart IDL files.""" 41 WebKit and Dart IDL files."""
42 current_dir = os.path.dirname(__file__) 42 current_dir = os.path.dirname(__file__)
43 logging.config.fileConfig(os.path.join(current_dir, "logging.conf")) 43 logging.config.fileConfig(os.path.join(current_dir, "logging.conf"))
44 44
45 _logger.setLevel(logging_level) 45 _logger.setLevel(logging_level)
46 46
47 db = database.Database(database_dir) 47 db = database.Database(database_dir)
48 48
49 # Delete all existing IDLs in the DB. 49 # Delete all existing IDLs in the DB.
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 91
92 builder.fetch_constructor_data(webkit_options) 92 builder.fetch_constructor_data(webkit_options)
93 builder.fix_displacements('WebKit') 93 builder.fix_displacements('WebKit')
94 94
95 # Cleanup: 95 # Cleanup:
96 builder.normalize_annotations(['WebKit', 'Dart']) 96 builder.normalize_annotations(['WebKit', 'Dart'])
97 97
98 # Map any IDL defined dictionaries to Dictionary. 98 # Map any IDL defined dictionaries to Dictionary.
99 builder.map_dictionaries() 99 builder.map_dictionaries()
100 100
101 # Examine all IDL and produce a diagnoses of areas (e.g., list dictionaries
102 # declared and usage, etc.)
103 if examine_idls:
104 builder.examine_database()
105
101 conditionals_met = set( 106 conditionals_met = set(
102 'ENABLE_' + conditional for conditional in builder.conditionals_met) 107 'ENABLE_' + conditional for conditional in builder.conditionals_met)
103 known_conditionals = set(FEATURE_DEFINES + FEATURE_DISABLED) 108 known_conditionals = set(FEATURE_DEFINES + FEATURE_DISABLED)
104 109
105 unused_conditionals = known_conditionals - conditionals_met 110 unused_conditionals = known_conditionals - conditionals_met
106 if unused_conditionals: 111 if unused_conditionals:
107 _logger.warning('There are some unused conditionals %s' % 112 _logger.warning('There are some unused conditionals %s' %
108 sorted(unused_conditionals)) 113 sorted(unused_conditionals))
109 _logger.warning('Please update fremontcutbuilder.py') 114 _logger.warning('Please update fremontcutbuilder.py')
110 115
111 unknown_conditionals = conditionals_met - known_conditionals 116 unknown_conditionals = conditionals_met - known_conditionals
112 if unknown_conditionals: 117 if unknown_conditionals:
113 _logger.warning('There are some unknown conditionals %s' % 118 _logger.warning('There are some unknown conditionals %s' %
114 sorted(unknown_conditionals)) 119 sorted(unknown_conditionals))
115 _logger.warning('Please update fremontcutbuilder.py') 120 _logger.warning('Please update fremontcutbuilder.py')
116 121
117 print 'Merging interfaces %s seconds' % round(time.time() - start_time, 2) 122 print 'Merging interfaces %s seconds' % round(time.time() - start_time, 2)
118 123
119 # TODO(terry): Don't generate the database cache.
120 # db.Save()
121
122 return db 124 return db
123 125
124 def main(parallel=False, logging_level=logging.WARNING): 126 def main(parallel=False, logging_level=logging.WARNING, examine_idls=False):
125 current_dir = os.path.dirname(__file__) 127 current_dir = os.path.dirname(__file__)
126 128
127 idl_files = [] 129 idl_files = []
128 130
129 # Check default location in a regular dart enlistment. 131 # Check default location in a regular dart enlistment.
130 webcore_dir = os.path.join(current_dir, '..', '..', '..', 'third_party', 132 webcore_dir = os.path.join(current_dir, '..', '..', '..', 'third_party',
131 'WebCore') 133 'WebCore')
132 134
133 if not os.path.exists(webcore_dir): 135 if not os.path.exists(webcore_dir):
134 # Check default location in a dartium enlistment. 136 # Check default location in a dartium enlistment.
(...skipping 25 matching lines...) Expand all
160 for name in names: 162 for name in names:
161 file_name = os.path.join(dir_name, name) 163 file_name = os.path.join(dir_name, name)
162 (interface, ext) = os.path.splitext(file_name) 164 (interface, ext) = os.path.splitext(file_name)
163 if ext == '.idl' and not(name in FILES_TO_IGNORE): 165 if ext == '.idl' and not(name in FILES_TO_IGNORE):
164 idl_files.append(file_name) 166 idl_files.append(file_name)
165 167
166 os.path.walk(webcore_dir, visitor, webcore_dir) 168 os.path.walk(webcore_dir, visitor, webcore_dir)
167 169
168 database_dir = os.path.join(current_dir, '..', 'database') 170 database_dir = os.path.join(current_dir, '..', 'database')
169 171
170 return build_database(idl_files, database_dir, logging_level=logging_level) 172 return build_database(idl_files, database_dir, logging_level=logging_level, ex amine_idls=examine_idls)
171 173
172 if __name__ == '__main__': 174 if __name__ == '__main__':
173 sys.exit(main()) 175 sys.exit(main())
OLDNEW
« no previous file with comments | « tools/dom/scripts/databasebuilder.py ('k') | tools/dom/scripts/idlnode.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698