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

Unified Diff: tools/dom/scripts/databasebuilder.py

Issue 952133004: Changes to support roll 39 IDLs (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Cleanup Created 5 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/dom/scripts/database.py ('k') | tools/dom/scripts/fremontcutbuilder.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/dom/scripts/databasebuilder.py
diff --git a/tools/dom/scripts/databasebuilder.py b/tools/dom/scripts/databasebuilder.py
index ad126224b1d8cd86108342f470fe21d947507fa0..46c82a831bcd166a538adb9e845f44a1760b1a55 100755
--- a/tools/dom/scripts/databasebuilder.py
+++ b/tools/dom/scripts/databasebuilder.py
@@ -561,7 +561,7 @@ class DatabaseBuilder(object):
# 2-stage computation: individual, then overall
for file_path in file_paths:
- compute_info_individual(file_path, 'dart')
+ compute_info_individual(file_path)
info_individuals = [info_individual()]
compute_interfaces_info_overall(info_individuals)
@@ -589,6 +589,10 @@ class DatabaseBuilder(object):
round((end_time - start_time), 2))
def _process_ast(self, filename, ast):
+ if len(ast) == 1:
+ ast = ast.values()[0]
+ else:
+ print 'ERROR: Processing AST: ' + os.path.basename(file_name)
new_asts[filename] = ast
def import_idl_files(self, file_paths, import_options, is_dart_idl):
@@ -630,12 +634,17 @@ class DatabaseBuilder(object):
interface.operations = filter(enabled, interface.operations)
self._imported_interfaces.append((interface, import_options))
- for implStmt in idl_file.implementsStatements:
- self._impl_stmts.append((implStmt, import_options))
+ # If an IDL dictionary then there is no implementsStatements.
+ if hasattr(idl_file, 'implementsStatements'):
+ for implStmt in idl_file.implementsStatements:
+ self._impl_stmts.append((implStmt, import_options))
for enum in idl_file.enums:
self._database.AddEnum(enum)
+ for dictionary in idl_file.dictionaries:
+ self._database.AddDictionary(dictionary)
+
def _is_node_enabled(self, node, idl_defines):
if not 'Conditional' in node.ext_attrs:
@@ -730,6 +739,22 @@ class DatabaseBuilder(object):
map(normalize, interface.attributes)
map(normalize, interface.operations)
+ def map_dictionaries(self):
+ """Changes the type of operations/constructors arguments from an IDL
+ dictionary to a Dictionary. The IDL dictionary is just an enums of
+ strings which are checked at run-time."""
+ def dictionary_to_map(type_node):
+ if self._database.HasDictionary(type_node.id):
+ type_node.dictionary = type_node.id
+ type_node.id = 'Dictionary'
+
+ def all_types(node):
+ map(dictionary_to_map, node.all(IDLType))
+
+ for interface in self._database.GetInterfaces():
+ map(all_types, interface.all(IDLExtAttrFunctionValue))
+ map(all_types, interface.operations)
+
def fetch_constructor_data(self, options):
window_interface = self._database.GetInterface('Window')
for attr in window_interface.attributes:
« no previous file with comments | « tools/dom/scripts/database.py ('k') | tools/dom/scripts/fremontcutbuilder.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698