| Index: Source/bindings/scripts/v8_types.py
|
| diff --git a/Source/bindings/scripts/v8_types.py b/Source/bindings/scripts/v8_types.py
|
| index 746dde3da43e1e3b3d409439c2c1331c0f97dc3c..8508ad81728eec92599480f46aeca2e2609fc9fa 100644
|
| --- a/Source/bindings/scripts/v8_types.py
|
| +++ b/Source/bindings/scripts/v8_types.py
|
| @@ -411,7 +411,7 @@ V8_VALUE_TO_CPP_VALUE = {
|
| }
|
|
|
|
|
| -def v8_value_to_cpp_value(idl_type, extended_attributes, v8_value, index, isolate='info.GetIsolate()'):
|
| +def v8_value_to_cpp_value(idl_type, extended_attributes, v8_value, index, isolate):
|
| if idl_type.name == 'void':
|
| return ''
|
|
|
| @@ -466,20 +466,28 @@ def v8_value_to_cpp_value_array_or_sequence(array_or_sequence_type, v8_value, in
|
| return expression
|
|
|
|
|
| -def v8_value_to_local_cpp_value(idl_type, extended_attributes, v8_value, variable_name, index=None, declare_variable=True):
|
| +def v8_value_to_local_cpp_value(idl_type, extended_attributes, v8_value, variable_name, index=None, declare_variable=True, isolate='info.GetIsolate()', used_in_private_script=False):
|
| """Returns an expression that converts a V8 value to a C++ value and stores it as a local value."""
|
| +
|
| + # FIXME: Support union type.
|
| + if idl_type.is_union_type:
|
| + return ''
|
| +
|
| this_cpp_type = idl_type.cpp_type_args(extended_attributes=extended_attributes, raw_type=True)
|
|
|
| idl_type = idl_type.preprocessed_type
|
| - cpp_value = v8_value_to_cpp_value(idl_type, extended_attributes, v8_value, index)
|
| + cpp_value = v8_value_to_cpp_value(idl_type, extended_attributes, v8_value, index, isolate)
|
| args = [variable_name, cpp_value]
|
| if idl_type.base_type == 'DOMString' and not idl_type.array_or_sequence_type:
|
| - macro = 'TOSTRING_VOID'
|
| + macro = 'TOSTRING_DEFAULT' if used_in_private_script else 'TOSTRING_VOID'
|
| elif idl_type.may_raise_exception_on_conversion:
|
| - macro = 'TONATIVE_VOID_EXCEPTIONSTATE'
|
| + macro = 'TONATIVE_DEFAULT_EXCEPTIONSTATE' if used_in_private_script else 'TONATIVE_VOID_EXCEPTIONSTATE'
|
| args.append('exceptionState')
|
| else:
|
| - macro = 'TONATIVE_VOID'
|
| + macro = 'TONATIVE_DEFAULT' if used_in_private_script else 'TONATIVE_VOID'
|
| +
|
| + if used_in_private_script:
|
| + args.append('false')
|
|
|
| # Macros come in several variants, to minimize expensive creation of
|
| # v8::TryCatch.
|
| @@ -568,7 +576,7 @@ def v8_conversion_type(idl_type, extended_attributes):
|
| return 'StringOrNull'
|
| if treat_returned_null_string_as == 'Undefined':
|
| return 'StringOrUndefined'
|
| - raise 'Unrecognized TreatReturnNullStringAs value: "%s"' % treat_returned_null_string_as
|
| + raise 'Unrecognized TreatReturnedNullStringAs value: "%s"' % treat_returned_null_string_as
|
| if idl_type.is_basic_type or base_idl_type == 'ScriptValue':
|
| return base_idl_type
|
|
|
| @@ -590,7 +598,7 @@ V8_SET_RETURN_VALUE = {
|
| 'DOMString': 'v8SetReturnValueString(info, {cpp_value}, info.GetIsolate())',
|
| 'ByteString': 'v8SetReturnValueString(info, {cpp_value}, info.GetIsolate())',
|
| 'ScalarValueString': 'v8SetReturnValueString(info, {cpp_value}, info.GetIsolate())',
|
| - # [TreatNullReturnValueAs]
|
| + # [TreatReturnedNullStringAs]
|
| 'StringOrNull': 'v8SetReturnValueStringOrNull(info, {cpp_value}, info.GetIsolate())',
|
| 'StringOrUndefined': 'v8SetReturnValueStringOrUndefined(info, {cpp_value}, info.GetIsolate())',
|
| 'void': '',
|
| @@ -679,7 +687,7 @@ CPP_VALUE_TO_V8_VALUE = {
|
| 'double': 'v8::Number::New({isolate}, {cpp_value})',
|
| 'unrestricted double': 'v8::Number::New({isolate}, {cpp_value})',
|
| 'void': 'v8Undefined()',
|
| - # [TreatNullReturnValueAs]
|
| + # [TreatReturnedNullStringAs]
|
| 'StringOrNull': '{cpp_value}.isNull() ? v8::Handle<v8::Value>(v8::Null({isolate})) : v8String({isolate}, {cpp_value})',
|
| 'StringOrUndefined': '{cpp_value}.isNull() ? v8Undefined() : v8String({isolate}, {cpp_value})',
|
| # Special cases
|
|
|