| Index: Source/bindings/scripts/generate_global_constructors.py
|
| diff --git a/Source/bindings/scripts/generate_global_constructors.py b/Source/bindings/scripts/generate_global_constructors.py
|
| index a6c8598a0f050652113da52d6bda2dec86a22c16..06b90f26ce1c48ae2ae547ffdf66015426604310 100755
|
| --- a/Source/bindings/scripts/generate_global_constructors.py
|
| +++ b/Source/bindings/scripts/generate_global_constructors.py
|
| @@ -25,7 +25,7 @@ import re
|
| import sys
|
|
|
| from collections import defaultdict
|
| -from utilities import get_file_contents, idl_filename_to_interface_name, read_file_to_list, write_file, get_interface_extended_attributes_from_idl, is_callback_interface_from_idl
|
| +from utilities import get_file_contents, idl_filename_to_interface_name, read_file_to_list, write_file, get_interface_extended_attributes_from_idl, get_interface_exposed_arguments, is_callback_interface_from_idl
|
|
|
| interface_name_to_global_names = {}
|
| global_name_to_constructors = defaultdict(list)
|
| @@ -87,13 +87,20 @@ def record_global_constructors(idl_filename):
|
| # associated with ECMAScript global environments whose global object
|
| # implements an interface that has a matching global name.
|
| exposed_global_names = extended_attributes.get('Exposed', 'Window').strip('()').split(',')
|
| - # Blink has Exposed(Arguments) form. In the form, each argument type
|
| - # represents the global context.
|
| - exposed_global_names = [name.split(' ')[0] for name in exposed_global_names]
|
|
|
| - new_constructors_list = generate_global_constructors_list(interface_name, extended_attributes)
|
| - for exposed_global_name in exposed_global_names:
|
| - global_name_to_constructors[exposed_global_name].extend(new_constructors_list)
|
| + exposed_arguments = get_interface_exposed_arguments(idl_file_contents)
|
| + if exposed_global_names == ['Window'] and exposed_arguments is not None:
|
| + for argument in exposed_arguments:
|
| + if 'RuntimeEnabled' in extended_attributes:
|
| + raise ValueError('RuntimeEnabled should not be used with Exposed(Arguments)')
|
| + attributes = extended_attributes.copy()
|
| + attributes['RuntimeEnabled'] = argument['runtime_enabled']
|
| + new_constructors_list = generate_global_constructors_list(interface_name, attributes)
|
| + global_name_to_constructors[argument['exposed']].extend(new_constructors_list)
|
| + else:
|
| + new_constructors_list = generate_global_constructors_list(interface_name, extended_attributes)
|
| + for name in exposed_global_names:
|
| + global_name_to_constructors[name].extend(new_constructors_list)
|
|
|
|
|
| def generate_global_constructors_list(interface_name, extended_attributes):
|
|
|