| 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 cf501f3d44d7b6070e26ba8760981cf64e23969e..3889f132077826bf8919a616c33eef62c38aeb03 100755 | 
| --- a/Source/bindings/scripts/generate_global_constructors.py | 
| +++ b/Source/bindings/scripts/generate_global_constructors.py | 
| @@ -11,7 +11,8 @@ Concretely these are implemented as "constructor attributes", meaning | 
| hence "global constructors" for short. | 
|  | 
| For reference on global objects, see: | 
| -http://www.chromium.org/blink/webidl/blink-idl-extended-attributes#TOC-GlobalContext-i- | 
| +http://heycam.github.io/webidl/#Global | 
| +http://heycam.github.io/webidl/#Exposed | 
|  | 
| Design document: http://www.chromium.org/developers/design-documents/idl-build | 
| """ | 
| @@ -48,6 +49,15 @@ def parse_options(): | 
| return options, args | 
|  | 
|  | 
| +# Global name: http://heycam.github.io/webidl/#dfn-global-name | 
| +# FIXME: We should add support for [Global=xx] extended attribute instead of | 
| +# hard-coding this mapping. | 
| +def global_name_to_interface_name(global_name): | 
| +    if global_name.endswith('Worker'): | 
| +        return global_name + 'GlobalScope' | 
| +    return global_name | 
| + | 
| + | 
| def record_global_constructors(idl_filename): | 
| interface_name, _ = os.path.splitext(os.path.basename(idl_filename)) | 
| full_path = os.path.realpath(idl_filename) | 
| @@ -63,9 +73,12 @@ def record_global_constructors(idl_filename): | 
| 'NoInterfaceObject' in extended_attributes): | 
| return | 
|  | 
| -    global_contexts = extended_attributes.get('GlobalContext', 'Window').split('&') | 
| +    # FIXME: In spec names are comma-separated, but that makes parsing very | 
| +    # difficult (https://www.w3.org/Bugs/Public/show_bug.cgi?id=24959). | 
| +    global_names = extended_attributes.get('Exposed', 'Window').split('&') | 
| new_constructors_list = generate_global_constructors_list(interface_name, extended_attributes) | 
| -    for interface_name in global_contexts: | 
| +    for global_name in global_names: | 
| +        interface_name = global_name_to_interface_name(global_name) | 
| global_objects[interface_name]['constructors'].extend(new_constructors_list) | 
|  | 
|  | 
|  |