import optparse
import sys
-from utilities import read_pickle_files, write_pickle_file
+from utilities import idl_filename_to_component, read_pickle_files, write_pickle_file
INHERITED_EXTENDED_ATTRIBUTES = set([
'ActiveDOMObject',
'DependentLifetime',
'GarbageCollected',
+ 'NotScriptWrappable',
'WillBeGarbageCollected',
])
})
+def compute_global_type_info():
+ ancestors = {}
+ dictionaries = {}
+ component_dirs = {}
+ implemented_as_interfaces = {}
+ will_be_garbage_collected_interfaces = set()
+ garbage_collected_interfaces = set()
+ callback_interfaces = set()
+
+ for interface_name, interface_info in interfaces_info.iteritems():
+ component_dirs[interface_name] = idl_filename_to_component(interface_info['full_path'])
+
+ if interface_info['ancestors']:
+ ancestors[interface_name] = interface_info['ancestors']
+ if interface_info['is_callback_interface']:
+ callback_interfaces.add(interface_name)
+ if interface_info['is_dictionary']:
+ dictionaries[interface_name] = interface_info['is_dictionary']
+ if interface_info['implemented_as']:
+ implemented_as_interfaces[interface_name] = interface_info['implemented_as']
+
+ inherited_extended_attributes = interface_info['inherited_extended_attributes']
+ if 'WillBeGarbageCollected' in inherited_extended_attributes:
+ will_be_garbage_collected_interfaces.add(interface_name)
+ if 'GarbageCollected' in inherited_extended_attributes:
+ garbage_collected_interfaces.add(interface_name)
+
+ interfaces_info['ancestors'] = ancestors
+ interfaces_info['callback_interfaces'] = callback_interfaces
+ interfaces_info['dictionaries'] = dictionaries
+ interfaces_info['implemented_as_interfaces'] = implemented_as_interfaces
+ interfaces_info['garbage_collected_interfaces'] = garbage_collected_interfaces
+ interfaces_info['will_be_garbage_collected_interfaces'] = will_be_garbage_collected_interfaces
+ interfaces_info['component_dirs'] = component_dirs
+
+
def compute_interfaces_info_overall(info_individuals):
"""Compute information about IDL files.
# However, they are needed for legacy implemented interfaces that
# are being treated as partial interfaces, until we remove these.
# http://crbug.com/360435
- implemented_interfaces_include_paths = [
- implemented_interface_info['include_path']
- for implemented_interface_info in implemented_interfaces_info
- if implemented_interface_info['is_legacy_treat_as_partial_interface']]
+ implemented_interfaces_include_paths = []
+ for implemented_interface_info in implemented_interfaces_info:
+ if (implemented_interface_info['is_legacy_treat_as_partial_interface'] and
+ implemented_interface_info['include_path']):
+ implemented_interfaces_include_paths.append(implemented_interface_info['include_path'])
interface_info.update({
'dependencies_full_paths': (partial_interfaces_full_paths +
del interface_info['is_legacy_treat_as_partial_interface']
del interface_info['parent']
+ # Compute global_type_info to interfaces_info so that idl_compiler does
+ # not need to always calculate the info in __init__.
+ compute_global_type_info()
+
################################################################################