Index: third_party/WebKit/Source/bindings/scripts/v8_types.py |
diff --git a/third_party/WebKit/Source/bindings/scripts/v8_types.py b/third_party/WebKit/Source/bindings/scripts/v8_types.py |
index 6e5e1d88c55d0cea8153c2556b8ab172d223369a..d52e835a21a88c9e91b42949b0b2115c67eb6e95 100644 |
--- a/third_party/WebKit/Source/bindings/scripts/v8_types.py |
+++ b/third_party/WebKit/Source/bindings/scripts/v8_types.py |
@@ -111,11 +111,11 @@ CPP_SPECIAL_CONVERSION_RULES = { |
'Date': 'double', |
'Dictionary': 'Dictionary', |
'EventHandler': 'EventListener*', |
- 'NodeFilter': 'RawPtr<NodeFilter>', |
+ 'NodeFilter': 'NodeFilter*', |
'Promise': 'ScriptPromise', |
'ScriptValue': 'ScriptValue', |
# FIXME: Eliminate custom bindings for XPathNSResolver http://crbug.com/345529 |
- 'XPathNSResolver': 'RawPtr<XPathNSResolver>', |
+ 'XPathNSResolver': 'XPathNSResolver*', |
'boolean': 'bool', |
'unrestricted double': 'double', |
'unrestricted float': 'float', |
@@ -161,7 +161,7 @@ def cpp_type(idl_type, extended_attributes=None, raw_type=False, used_as_rvalue_ |
else: |
native_array_element_type = idl_type.native_array_element_type |
if native_array_element_type: |
- vector_type = cpp_ptr_type('Vector', 'HeapVector', native_array_element_type.gc_type) |
+ vector_type = cpp_ptr_type('Vector', 'HeapVector', native_array_element_type.is_gc_type) |
vector_template_type = cpp_template_type(vector_type, native_array_element_type.cpp_type_args(used_in_cpp_sequence=True)) |
if used_as_rvalue_type: |
return 'const %s&' % vector_template_type |
@@ -192,11 +192,11 @@ def cpp_type(idl_type, extended_attributes=None, raw_type=False, used_as_rvalue_ |
return 'Flexible' + idl_type.base_type + 'View' |
if idl_type.is_interface_type: |
implemented_as_class = idl_type.implemented_as |
- if raw_type or (used_as_rvalue_type and idl_type.is_garbage_collected): |
+ if raw_type or (used_as_rvalue_type and idl_type.is_garbage_collected) or not used_in_cpp_sequence: |
return implemented_as_class + '*' |
- new_type = 'Member' if used_in_cpp_sequence else 'RawPtr' |
- ptr_type = cpp_ptr_type(('PassRefPtr' if used_as_rvalue_type else 'RefPtr'), new_type, idl_type.gc_type) |
- return cpp_template_type(ptr_type, implemented_as_class) |
+ if not used_in_cpp_sequence: |
+ return implemented_as_class + '*' |
+ return cpp_template_type('Member', implemented_as_class) |
if idl_type.is_dictionary: |
return base_idl_type |
if idl_type.is_union_type: |
@@ -255,8 +255,8 @@ def cpp_template_type(template, inner_type): |
return format_string.format(template=template, inner_type=inner_type) |
-def cpp_ptr_type(old_type, new_type, gc_type): |
- if gc_type == 'GarbageCollectedObject': |
+def cpp_ptr_type(old_type, new_type, is_gc_type): |
+ if is_gc_type: |
return new_type |
return old_type |
@@ -301,12 +301,11 @@ IdlType.set_garbage_collected_types = classmethod( |
cls.garbage_collected_types.update(new_garbage_collected_types)) |
-def gc_type(idl_type): |
- if idl_type.is_garbage_collected or idl_type.is_dictionary or idl_type.is_union_type: |
- return 'GarbageCollectedObject' |
- return 'RefCountedObject' |
+def is_gc_type(idl_type): |
+ return idl_type.is_garbage_collected or idl_type.is_dictionary or idl_type.is_union_type |
+ |
-IdlTypeBase.gc_type = property(gc_type) |
+IdlTypeBase.is_gc_type = property(is_gc_type) |
def is_traceable(idl_type): |
@@ -588,7 +587,7 @@ def v8_value_to_cpp_value_array_or_sequence(native_array_element_type, v8_value, |
if (native_array_element_type.is_interface_type and |
native_array_element_type.name != 'Dictionary'): |
this_cpp_type = None |
- ref_ptr_type = cpp_ptr_type('RefPtr', 'Member', native_array_element_type.gc_type) |
+ ref_ptr_type = 'Member' |
expression_format = '(to{ref_ptr_type}NativeArray<{native_array_element_type}, V8{native_array_element_type}>({v8_value}, {index}, {isolate}, exceptionState))' |
else: |
ref_ptr_type = None |
@@ -792,8 +791,8 @@ V8_SET_RETURN_VALUE = { |
'ScriptValue': 'v8SetReturnValue(info, {cpp_value})', |
'SerializedScriptValue': 'v8SetReturnValue(info, {cpp_value})', |
# DOMWrapper |
- 'DOMWrapperForMainWorld': 'v8SetReturnValueForMainWorld(info, WTF::getPtr({cpp_value}))', |
- 'DOMWrapperFast': 'v8SetReturnValueFast(info, WTF::getPtr({cpp_value}), {script_wrappable})', |
+ 'DOMWrapperForMainWorld': 'v8SetReturnValueForMainWorld(info, {cpp_value})', |
+ 'DOMWrapperFast': 'v8SetReturnValueFast(info, {cpp_value}, {script_wrappable})', |
'DOMWrapperDefault': 'v8SetReturnValue(info, {cpp_value})', |
# Note that static attributes and operations do not check whether |this| is |
# an instance of the interface nor |this|'s creation context is the same as |
@@ -812,7 +811,7 @@ V8_SET_RETURN_VALUE = { |
} |
-def v8_set_return_value(idl_type, cpp_value, extended_attributes=None, script_wrappable='', release=False, for_main_world=False, is_static=False): |
+def v8_set_return_value(idl_type, cpp_value, extended_attributes=None, script_wrappable='', for_main_world=False, is_static=False): |
"""Returns a statement that converts a C++ value to a V8 value and sets it as a return value. |
""" |
@@ -837,18 +836,12 @@ def v8_set_return_value(idl_type, cpp_value, extended_attributes=None, script_wr |
this_v8_conversion_type += 'Static' |
format_string = V8_SET_RETURN_VALUE[this_v8_conversion_type] |
- # FIXME: oilpan: Remove .release() once we remove all RefPtrs from generated code. |
- if release: |
- cpp_value = '%s.release()' % cpp_value |
statement = format_string.format(cpp_value=cpp_value, script_wrappable=script_wrappable) |
return statement |
IdlTypeBase.v8_set_return_value = v8_set_return_value |
-IdlType.release = property(lambda self: self.is_interface_type) |
-IdlUnionType.release = False |
- |
CPP_VALUE_TO_V8_VALUE = { |
# Built-in types |