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 d6955486ad97a790f0ed2802ee6943baf71c6f97..70fd6e266f7ba8017bac9d2b3c37b32d8f298ca2 100644 |
--- a/third_party/WebKit/Source/bindings/scripts/v8_interface.py |
+++ b/third_party/WebKit/Source/bindings/scripts/v8_interface.py |
@@ -353,13 +353,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 = {} |
@@ -392,7 +394,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: |
+ 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 = [ |
@@ -565,6 +570,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, |
}) |