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 02dca6c3f7a36d1120bf1cef5a09f73db0a84fe0..e361c1b8ac69763b698f5aea204362401a705175 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}}; |
} |