Index: Source/bindings/scripts/v8_interface.py |
diff --git a/Source/bindings/scripts/v8_interface.py b/Source/bindings/scripts/v8_interface.py |
index bcabae0c603b847ad2388216ded702052f809359..17691b0678c5f4b4c156f331ce83b395c5ccf2a0 100644 |
--- a/Source/bindings/scripts/v8_interface.py |
+++ b/Source/bindings/scripts/v8_interface.py |
@@ -463,13 +463,13 @@ def interface_context(interface): |
}) |
context.update({ |
- 'indexed_property_getter': indexed_property_getter(interface), |
- 'indexed_property_setter': indexed_property_setter(interface), |
- 'indexed_property_deleter': indexed_property_deleter(interface), |
+ 'indexed_property_getter': property_getter(interface.indexed_property_getter, ['index']), |
+ 'indexed_property_setter': property_setter(interface.indexed_property_setter, interface), |
+ 'indexed_property_deleter': property_deleter(interface.indexed_property_deleter), |
'is_override_builtins': 'OverrideBuiltins' in extended_attributes, |
- 'named_property_getter': named_property_getter(interface), |
- 'named_property_setter': named_property_setter(interface), |
- 'named_property_deleter': named_property_deleter(interface), |
+ 'named_property_getter': property_getter(interface.named_property_getter, ['propertyName']), |
+ 'named_property_setter': property_setter(interface.named_property_setter, interface), |
+ 'named_property_deleter': property_deleter(interface.named_property_deleter), |
}) |
return context |
@@ -1131,6 +1131,9 @@ def interface_length(interface, constructors): |
################################################################################ |
def property_getter(getter, cpp_arguments): |
+ if not getter: |
+ return None |
+ |
def is_null_expression(idl_type): |
if idl_type.use_output_parameter_for_result: |
return 'result.isNull()' |
@@ -1175,7 +1178,10 @@ def property_getter(getter, cpp_arguments): |
} |
-def property_setter(interface, setter): |
+def property_setter(setter, interface): |
+ if not setter: |
+ return None |
+ |
idl_type = setter.arguments[1].idl_type |
extended_attributes = setter.extended_attributes |
is_raises_exception = 'RaisesException' in extended_attributes |
@@ -1200,6 +1206,9 @@ def property_setter(interface, setter): |
def property_deleter(deleter): |
+ if not deleter: |
+ return None |
+ |
idl_type = deleter.idl_type |
if str(idl_type) != 'boolean': |
raise Exception( |
@@ -1211,110 +1220,3 @@ def property_deleter(deleter): |
'is_raises_exception': 'RaisesException' in extended_attributes, |
'name': cpp_name(deleter), |
} |
- |
- |
-################################################################################ |
-# Indexed properties |
-# http://heycam.github.io/webidl/#idl-indexed-properties |
-################################################################################ |
- |
-def indexed_property_getter(interface): |
- try: |
- # Find indexed property getter, if present; has form: |
- # getter TYPE [OPTIONAL_IDENTIFIER](unsigned long ARG1) |
- getter = next( |
- method |
- for method in interface.operations |
- if ('getter' in method.specials and |
- len(method.arguments) == 1 and |
- str(method.arguments[0].idl_type) == 'unsigned long')) |
- except StopIteration: |
- return None |
- |
- return property_getter(getter, ['index']) |
- |
- |
-def indexed_property_setter(interface): |
- try: |
- # Find indexed property setter, if present; has form: |
- # setter RETURN_TYPE [OPTIONAL_IDENTIFIER](unsigned long ARG1, ARG_TYPE ARG2) |
- setter = next( |
- method |
- for method in interface.operations |
- if ('setter' in method.specials and |
- len(method.arguments) == 2 and |
- str(method.arguments[0].idl_type) == 'unsigned long')) |
- except StopIteration: |
- return None |
- |
- return property_setter(interface, setter) |
- |
- |
-def indexed_property_deleter(interface): |
- try: |
- # Find indexed property deleter, if present; has form: |
- # deleter TYPE [OPTIONAL_IDENTIFIER](unsigned long ARG) |
- deleter = next( |
- method |
- for method in interface.operations |
- if ('deleter' in method.specials and |
- len(method.arguments) == 1 and |
- str(method.arguments[0].idl_type) == 'unsigned long')) |
- except StopIteration: |
- return None |
- |
- return property_deleter(deleter) |
- |
- |
-################################################################################ |
-# Named properties |
-# http://heycam.github.io/webidl/#idl-named-properties |
-################################################################################ |
- |
-def named_property_getter(interface): |
- try: |
- # Find named property getter, if present; has form: |
- # getter TYPE [OPTIONAL_IDENTIFIER](DOMString ARG1) |
- getter = next( |
- method |
- for method in interface.operations |
- if ('getter' in method.specials and |
- len(method.arguments) == 1 and |
- str(method.arguments[0].idl_type) == 'DOMString')) |
- except StopIteration: |
- return None |
- |
- getter.name = getter.name or 'anonymousNamedGetter' |
- return property_getter(getter, ['propertyName']) |
- |
- |
-def named_property_setter(interface): |
- try: |
- # Find named property setter, if present; has form: |
- # setter RETURN_TYPE [OPTIONAL_IDENTIFIER](DOMString ARG1, ARG_TYPE ARG2) |
- setter = next( |
- method |
- for method in interface.operations |
- if ('setter' in method.specials and |
- len(method.arguments) == 2 and |
- str(method.arguments[0].idl_type) == 'DOMString')) |
- except StopIteration: |
- return None |
- |
- return property_setter(interface, setter) |
- |
- |
-def named_property_deleter(interface): |
- try: |
- # Find named property deleter, if present; has form: |
- # deleter TYPE [OPTIONAL_IDENTIFIER](DOMString ARG) |
- deleter = next( |
- method |
- for method in interface.operations |
- if ('deleter' in method.specials and |
- len(method.arguments) == 1 and |
- str(method.arguments[0].idl_type) == 'DOMString')) |
- except StopIteration: |
- return None |
- |
- return property_deleter(deleter) |