Chromium Code Reviews| Index: third_party/WebKit/Source/bindings/scripts/v8_interface.py |
| diff --git a/third_party/WebKit/Source/bindings/scripts/v8_interface.py b/third_party/WebKit/Source/bindings/scripts/v8_interface.py |
| index 6c143aaf97f8cbe9c90949cccfa48682fca80980..81057764a061b5ea2884a72b94d4a2328f4a5c08 100644 |
| --- a/third_party/WebKit/Source/bindings/scripts/v8_interface.py |
| +++ b/third_party/WebKit/Source/bindings/scripts/v8_interface.py |
| @@ -348,13 +348,15 @@ def interface_context(interface): |
| # [Iterable], iterable<>, maplike<> and setlike<> |
| iterator_method = None |
| + has_array_iterator = False |
| + |
| # FIXME: support Iterable in partial interfaces. However, we don't |
| # need to support iterator overloads between interface and |
| # partial interface definitions. |
| # http://heycam.github.io/webidl/#idl-overloading |
| if (not interface.is_partial |
| and (interface.iterable or interface.maplike or interface.setlike |
| - or 'Iterable' in extended_attributes)): |
| + or interface.has_indexed_elements or 'Iterable' in extended_attributes)): |
| used_extended_attributes = {} |
| @@ -387,7 +389,10 @@ def interface_context(interface): |
| extended_attributes=used_extended_attributes, |
| implemented_as=implemented_as) |
| - iterator_method = generated_iterator_method('iterator', implemented_as='iterator') |
| + if (interface.iterable or interface.maplike or interface.setlike or 'Iterable' in extended_attributes): |
|
Jens Widell
2015/10/05 05:57:11
Minor nit: in Python you typically don't have pare
|
| + iterator_method = generated_iterator_method('iterator', implemented_as='iterator') |
| + elif interface.has_indexed_elements: |
| + has_array_iterator = True |
| if interface.iterable or interface.maplike or interface.setlike: |
| implicit_methods = [ |
| @@ -560,6 +565,7 @@ def interface_context(interface): |
| 'has_private_script': any(attribute['is_implemented_in_private_script'] for attribute in attributes) or |
| any(method['is_implemented_in_private_script'] for method in methods), |
| 'iterator_method': iterator_method, |
| + 'has_array_iterator': has_array_iterator, |
| 'method_configuration_methods': method_configuration_methods, |
| 'methods': methods, |
| }) |