Index: Source/bindings/scripts/v8_union.py |
diff --git a/Source/bindings/scripts/v8_union.py b/Source/bindings/scripts/v8_union.py |
index 9d4fae6132ef654bde08bbfb2c4e7a71f452d2fb..1af7103e05965343b11170eb8efd358b21ce2f10 100644 |
--- a/Source/bindings/scripts/v8_union.py |
+++ b/Source/bindings/scripts/v8_union.py |
@@ -6,6 +6,7 @@ import v8_utilities |
UNION_H_INCLUDES = frozenset([ |
+ 'bindings/core/v8/Dictionary.h', |
'bindings/core/v8/ExceptionState.h', |
'bindings/core/v8/V8Binding.h', |
'platform/heap/Handle.h', |
@@ -68,12 +69,13 @@ def container_context(union_type, interfaces_info): |
if array_buffer_view_type: |
raise Exception('%s is ambiguous.' % union_type.name) |
array_buffer_view_type = context |
- elif member.is_interface_type: |
- interface_types.append(context) |
- elif member.is_dictionary: |
+ # FIXME: Remove generic Dictionary special casing. |
+ elif member.is_dictionary or member.base_type == 'Dictionary': |
if dictionary_type: |
raise Exception('%s is ambiguous.' % union_type.name) |
dictionary_type = context |
+ elif member.is_interface_type: |
+ interface_types.append(context) |
elif member is union_type.boolean_member_type: |
boolean_type = context |
elif member is union_type.numeric_member_type: |
@@ -125,5 +127,6 @@ def member_context(member, interfaces_info): |
'specific_type_enum': 'SpecificType' + member.name, |
'type_name': member.name, |
'v8_value_to_local_cpp_value': member.v8_value_to_local_cpp_value( |
- {}, 'v8Value', 'cppValue', needs_exception_state_for_string=True), |
+ {}, 'v8Value', 'cppValue', isolate='isolate', |
+ needs_exception_state_for_string=True), |
} |