| Index: Source/bindings/templates/attributes.cpp
|
| diff --git a/Source/bindings/templates/attributes.cpp b/Source/bindings/templates/attributes.cpp
|
| index 36fced2352cc6281c2266cd009ff39d521a2f3f9..f396959312a2a09cf7df521ba3c595bf08b80838 100644
|
| --- a/Source/bindings/templates/attributes.cpp
|
| +++ b/Source/bindings/templates/attributes.cpp
|
| @@ -257,8 +257,20 @@ v8::Local<v8::Value> v8Value, const v8::PropertyCallbackInfo<void>& info
|
| {% elif not is_node %}{# EventHandler hack #}
|
| moveEventListenerToNewWrapper(holder, {{attribute.event_handler_getter_expression}}, v8Value, {{v8_class}}::eventListenerCacheIndex, info.GetIsolate());
|
| {% endif %}
|
| - {% if attribute.enum_validation_expression %}
|
| - {# Setter ignores invalid enum values: http://www.w3.org/TR/WebIDL/#idl-enums #}
|
| + {# Type checking, possibly throw a TypeError, per:
|
| + http://www.w3.org/TR/WebIDL/#es-type-mapping #}
|
| + {% if attribute.has_type_checking_unrestricted %}
|
| + {# Non-finite floating point values (NaN, +Infinity or −Infinity), per:
|
| + http://heycam.github.io/webidl/#es-float
|
| + http://heycam.github.io/webidl/#es-double #}
|
| + if (!std::isfinite(cppValue)) {
|
| + exceptionState.throwTypeError("The provided {{attribute.idl_type}} value is non-finite.");
|
| + exceptionState.throwIfNeeded();
|
| + return;
|
| + }
|
| + {% elif attribute.enum_validation_expression %}
|
| + {# Setter ignores invalid enum values:
|
| + http://www.w3.org/TR/WebIDL/#idl-enums #}
|
| String string = cppValue;
|
| if (!({{attribute.enum_validation_expression}}))
|
| return;
|
|
|