| OLD | NEW |
| 1 #!/usr/bin/python | 1 #!/usr/bin/python |
| 2 # | 2 # |
| 3 # Copyright 2014 The Chromium Authors. All rights reserved. | 3 # Copyright 2014 The Chromium Authors. All rights reserved. |
| 4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
| 5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
| 6 | 6 |
| 7 """Generates interface properties on global objects. | 7 """Generates interface properties on global objects. |
| 8 | 8 |
| 9 Concretely these are implemented as "constructor attributes", meaning | 9 Concretely these are implemented as "constructor attributes", meaning |
| 10 "attributes whose name ends with Constructor" (special-cased by code generator), | 10 "attributes whose name ends with Constructor" (special-cased by code generator), |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 import optparse | 23 import optparse |
| 24 import os | 24 import os |
| 25 import re | 25 import re |
| 26 import sys | 26 import sys |
| 27 | 27 |
| 28 from collections import defaultdict | 28 from collections import defaultdict |
| 29 from utilities import get_file_contents | 29 from utilities import get_file_contents |
| 30 from utilities import get_interface_exposed_arguments | 30 from utilities import get_interface_exposed_arguments |
| 31 from utilities import get_interface_extended_attributes_from_idl | 31 from utilities import get_interface_extended_attributes_from_idl |
| 32 from utilities import idl_filename_to_interface_name | 32 from utilities import idl_filename_to_interface_name |
| 33 from utilities import is_callback_interface_from_idl | 33 from utilities import is_non_legacy_callback_interface_from_idl |
| 34 from utilities import read_file_to_list | 34 from utilities import read_file_to_list |
| 35 from utilities import read_pickle_file | 35 from utilities import read_pickle_file |
| 36 from utilities import should_generate_impl_file_from_idl | 36 from utilities import should_generate_impl_file_from_idl |
| 37 from utilities import write_file | 37 from utilities import write_file |
| 38 from v8_utilities import EXPOSED_EXECUTION_CONTEXT_METHOD | 38 from v8_utilities import EXPOSED_EXECUTION_CONTEXT_METHOD |
| 39 | 39 |
| 40 interface_name_to_global_names = {} | 40 interface_name_to_global_names = {} |
| 41 global_name_to_constructors = defaultdict(list) | 41 global_name_to_constructors = defaultdict(list) |
| 42 | 42 |
| 43 | 43 |
| (...skipping 28 matching lines...) Expand all Loading... |
| 72 | 72 |
| 73 | 73 |
| 74 def record_global_constructors(idl_filename): | 74 def record_global_constructors(idl_filename): |
| 75 interface_name = idl_filename_to_interface_name(idl_filename) | 75 interface_name = idl_filename_to_interface_name(idl_filename) |
| 76 full_path = os.path.realpath(idl_filename) | 76 full_path = os.path.realpath(idl_filename) |
| 77 idl_file_contents = get_file_contents(full_path) | 77 idl_file_contents = get_file_contents(full_path) |
| 78 extended_attributes = get_interface_extended_attributes_from_idl(idl_file_co
ntents) | 78 extended_attributes = get_interface_extended_attributes_from_idl(idl_file_co
ntents) |
| 79 | 79 |
| 80 # An interface property is produced for every non-callback interface | 80 # An interface property is produced for every non-callback interface |
| 81 # that does not have [NoInterfaceObject]. | 81 # that does not have [NoInterfaceObject]. |
| 82 # Callback interfaces with constants also have interface properties, | |
| 83 # but there are none of these in Blink. | |
| 84 # http://heycam.github.io/webidl/#es-interfaces | 82 # http://heycam.github.io/webidl/#es-interfaces |
| 85 if ((not should_generate_impl_file_from_idl(idl_file_contents)) or | 83 if ((not should_generate_impl_file_from_idl(idl_file_contents)) or |
| 86 is_callback_interface_from_idl(idl_file_contents) or | 84 is_non_legacy_callback_interface_from_idl(idl_file_contents) or |
| 87 'NoInterfaceObject' in extended_attributes): | 85 'NoInterfaceObject' in extended_attributes): |
| 88 return | 86 return |
| 89 | 87 |
| 90 exposed_arguments = get_interface_exposed_arguments(idl_file_contents) | 88 exposed_arguments = get_interface_exposed_arguments(idl_file_contents) |
| 91 if exposed_arguments: | 89 if exposed_arguments: |
| 92 # Exposed(Arguments) case | 90 # Exposed(Arguments) case |
| 93 for argument in exposed_arguments: | 91 for argument in exposed_arguments: |
| 94 if 'RuntimeEnabled' in extended_attributes: | 92 if 'RuntimeEnabled' in extended_attributes: |
| 95 raise ValueError('RuntimeEnabled should not be used with Exposed
(Arguments)') | 93 raise ValueError('RuntimeEnabled should not be used with Exposed
(Arguments)') |
| 96 attributes = extended_attributes.copy() | 94 attributes = extended_attributes.copy() |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 181 # Write partial interfaces containing constructor attributes for each | 179 # Write partial interfaces containing constructor attributes for each |
| 182 # global interface. | 180 # global interface. |
| 183 for interface_name, idl_filename in interface_name_idl_filename: | 181 for interface_name, idl_filename in interface_name_idl_filename: |
| 184 constructors = interface_name_to_constructors(interface_name) | 182 constructors = interface_name_to_constructors(interface_name) |
| 185 write_global_constructors_partial_interface( | 183 write_global_constructors_partial_interface( |
| 186 interface_name, idl_filename, constructors) | 184 interface_name, idl_filename, constructors) |
| 187 | 185 |
| 188 | 186 |
| 189 if __name__ == '__main__': | 187 if __name__ == '__main__': |
| 190 sys.exit(main()) | 188 sys.exit(main()) |
| OLD | NEW |