Index: third_party/WebKit/Source/bindings/templates/union_container.cpp.tmpl |
diff --git a/third_party/WebKit/Source/bindings/templates/union_container.cpp.tmpl b/third_party/WebKit/Source/bindings/templates/union_container.cpp.tmpl |
index ff2eca5b997b4c4d09d6452eb651bab2a68b005a..a6156fe4a31379eb00059e50716cd0743ed9cdae 100644 |
--- a/third_party/WebKit/Source/bindings/templates/union_container.cpp.tmpl |
+++ b/third_party/WebKit/Source/bindings/templates/union_container.cpp.tmpl |
@@ -7,7 +7,13 @@ if (v8Value->Is{{member.type_name}}()) { |
{% else %} |
if (V8{{member.type_name}}::hasInstance(v8Value, isolate)) { |
{% endif %} |
+{% if member.is_array_buffer_view_or_typed_array %} |
+ {{member.cpp_local_type}} cppValue = toNotShared<{{member.cpp_local_type}}>(isolate, v8Value, exceptionState); |
+ if (exceptionState.hadException()) |
+ return; |
+{% else %} |
{{member.cpp_local_type}} cppValue = V8{{member.type_name}}::toImpl(v8::Local<v8::Object>::Cast(v8Value)); |
+{% endif %} |
impl.set{{member.type_name}}(cppValue); |
return; |
} |
@@ -41,7 +47,11 @@ void {{cpp_class}}::set{{member.type_name}}({{member.rvalue_cpp_type}} value) { |
return; |
} |
{% endif %} |
+ {% if member.is_array_buffer_view_or_typed_array %} |
+ m_{{member.cpp_name}} = {{member.cpp_type}}(value.view()); |
+ {% else %} |
m_{{member.cpp_name}} = value; |
+ {% endif %} |
m_type = {{member.specific_type_enum}}; |
} |