Index: bindings/scripts/v8_dictionary.py |
diff --git a/bindings/scripts/v8_dictionary.py b/bindings/scripts/v8_dictionary.py |
index 36129b552e2688af954c900efa4b5596a7391b66..dde7e1ce6ae3ebc43eb9d3c9506c7df6f5dc133a 100644 |
--- a/bindings/scripts/v8_dictionary.py |
+++ b/bindings/scripts/v8_dictionary.py |
@@ -60,6 +60,9 @@ def dictionary_context(dictionary, interfaces_info): |
'members': [member_context(dictionary, member) |
for member in sorted(dictionary.members, |
key=operator.attrgetter('name'))], |
+ 'required_member_names': sorted([member.name |
+ for member in dictionary.members |
+ if member.is_required]), |
'use_permissive_dictionary_conversion': 'PermissiveDictionaryConversion' in dictionary.extended_attributes, |
'v8_class': v8_types.v8_type(cpp_class), |
'v8_original_class': v8_types.v8_type(dictionary.name), |
@@ -99,6 +102,7 @@ def member_context(dictionary, member): |
cpp_default_value, v8_default_value = default_values() |
cpp_name = v8_utilities.cpp_name(member) |
+ is_deprecated_dictionary = unwrapped_idl_type.name == 'Dictionary' |
return { |
'cpp_default_value': cpp_default_value, |
@@ -113,11 +117,12 @@ def member_context(dictionary, member): |
'enum_values': unwrapped_idl_type.enum_values, |
'has_method_name': has_method_name_for_dictionary_member(member), |
'idl_type': idl_type.base_type, |
- 'is_interface_type': idl_type.is_interface_type and not idl_type.is_dictionary, |
+ 'is_interface_type': idl_type.is_interface_type and not (idl_type.is_dictionary_type or is_deprecated_dictionary), |
'is_nullable': idl_type.is_nullable, |
- 'is_object': unwrapped_idl_type.name == 'Object', |
+ 'is_object': unwrapped_idl_type.name == 'Object' or is_deprecated_dictionary, |
'is_required': member.is_required, |
'name': member.name, |
+ 'runtime_enabled_function': v8_utilities.runtime_enabled_function_name(member), # [RuntimeEnabled] |
'setter_name': setter_name_for_dictionary_member(member), |
'null_setter_name': null_setter_name_for_dictionary_member(member), |
'v8_default_value': v8_default_value, |
@@ -177,6 +182,8 @@ def member_impl_context(member, interfaces_info, header_includes): |
return '!m_%s.isNull()' % cpp_name |
elif idl_type.name in ['Any', 'Object']: |
return '!(m_{0}.isEmpty() || m_{0}.isNull() || m_{0}.isUndefined())'.format(cpp_name) |
+ elif idl_type.name == 'Dictionary': |
+ return '!m_%s.isUndefinedOrNull()' % cpp_name |
else: |
return 'm_%s' % cpp_name |