Index: tools/dom/scripts/databasebuilder.py |
diff --git a/tools/dom/scripts/databasebuilder.py b/tools/dom/scripts/databasebuilder.py |
index 01e4bd6496f2e96f3e627e3934ae32873daa0d19..d0fe7b66d1e3e3b698b3c5f0ad790adb8dfc6914 100755 |
--- a/tools/dom/scripts/databasebuilder.py |
+++ b/tools/dom/scripts/databasebuilder.py |
@@ -7,6 +7,7 @@ import copy |
import database |
import idlparser |
import logging |
+import monitored |
import multiprocessing |
import os |
import os.path |
@@ -196,16 +197,23 @@ class DatabaseBuilder(object): |
# Spin up the new IDL parser. |
self.build = Build(None) |
+ # Global typedef to mapping. |
+ self.global_type_defs = monitored.Dict('databasebuilder.global_type_defs', { |
+ 'Transferable' : 'MessagePort', |
+ }) |
+ |
+ # TODO(terry): Consider keeping richer type information (e.g., |
+ # IdlArrayOrSequenceType from the Blink parser) instead of just |
+ # a type name. |
def _resolve_type_defs(self, idl_file): |
- type_def_map = {} |
- # build map |
- for type_def in idl_file.typeDefs: |
- if type_def.type.id != type_def.id: # sanity check |
- type_def_map[type_def.id] = type_def.type.id |
- # use the map |
for type_node in idl_file.all(IDLType): |
- while type_node.id in type_def_map: |
- type_node.id = type_def_map[type_node.id] |
+ type_name = type_node.id |
+ for typedef in self.global_type_defs: |
+ seq_name_typedef = 'sequence<%s>' % typedef |
+ if type_name == typedef: |
+ type_node.id = self.global_type_defs[typedef] |
+ elif type_name == seq_name_typedef: |
+ type_node.id = 'sequence<%s>' % self.global_type_defs[typedef] |
def _strip_ext_attributes(self, idl_file): |
"""Strips unuseful extended attributes.""" |