| Index: third_party/WebKit/Source/bindings/templates/interface.cpp
|
| diff --git a/third_party/WebKit/Source/bindings/templates/interface.cpp b/third_party/WebKit/Source/bindings/templates/interface.cpp
|
| index 85d404ce60bd0fd5c6e44b37fdc5897a865cbcee..5afea6e7851b0190b5465d4513968f7098a59f81 100644
|
| --- a/third_party/WebKit/Source/bindings/templates/interface.cpp
|
| +++ b/third_party/WebKit/Source/bindings/templates/interface.cpp
|
| @@ -22,7 +22,7 @@ static void indexedPropertyGetter(uint32_t index, const v8::PropertyCallbackInfo
|
| {% endif %}
|
| {{getter.cpp_type}} result = impl->{{getter_name}}({{getter_arguments | join(', ')}});
|
| {% if getter.is_raises_exception %}
|
| - if (exceptionState.throwIfNeeded())
|
| + if (exceptionState.hadException())
|
| return;
|
| {% endif %}
|
| if ({{getter.is_null_expression}})
|
| @@ -68,7 +68,6 @@ static void indexedPropertySetter(uint32_t index, v8::Local<v8::Value> v8Value,
|
| TypeError), per http://www.w3.org/TR/WebIDL/#es-interface #}
|
| if (!propertyValue{% if setter.is_nullable %} && !isUndefinedOrNull(v8Value){% endif %}) {
|
| exceptionState.throwTypeError("The provided value is not of type '{{setter.idl_type}}'.");
|
| - exceptionState.throwIfNeeded();
|
| return;
|
| }
|
| {% endif %}
|
| @@ -83,7 +82,7 @@ static void indexedPropertySetter(uint32_t index, v8::Local<v8::Value> v8Value,
|
| {% endif %}
|
| bool result = impl->{{setter_name}}({{setter_arguments | join(', ')}});
|
| {% if setter.is_raises_exception %}
|
| - if (exceptionState.throwIfNeeded())
|
| + if (exceptionState.hadException())
|
| return;
|
| {% endif %}
|
| if (!result)
|
| @@ -136,7 +135,7 @@ static void indexedPropertyDeleter(uint32_t index, const v8::PropertyCallbackInf
|
| {% endif %}
|
| DeleteResult result = impl->{{deleter_name}}({{deleter_arguments | join(', ')}});
|
| {% if deleter.is_raises_exception %}
|
| - if (exceptionState.throwIfNeeded())
|
| + if (exceptionState.hadException())
|
| return;
|
| {% endif %}
|
| if (result != DeleteUnknownProperty)
|
| @@ -190,7 +189,7 @@ static void namedPropertyGetter(v8::Local<v8::Name> name, const v8::PropertyCall
|
| {{getter.cpp_type}} result = {{getter.cpp_value}};
|
| {% endif %}
|
| {% if getter.is_raises_exception %}
|
| - if (exceptionState.throwIfNeeded())
|
| + if (exceptionState.hadException())
|
| return;
|
| {% endif %}
|
| if ({{getter.is_null_expression}})
|
| @@ -244,7 +243,6 @@ static void namedPropertySetter(v8::Local<v8::Name> name, v8::Local<v8::Value> v
|
| TypeError), per http://www.w3.org/TR/WebIDL/#es-interface #}
|
| if (!propertyValue{% if setter.is_nullable %} && !isUndefinedOrNull(v8Value){% endif %}) {
|
| exceptionState.throwTypeError("The provided value is not of type '{{setter.idl_type}}'.");
|
| - exceptionState.throwIfNeeded();
|
| return;
|
| }
|
| {% endif %}
|
| @@ -261,7 +259,7 @@ static void namedPropertySetter(v8::Local<v8::Name> name, v8::Local<v8::Value> v
|
| {% endif %}
|
| bool result = impl->{{setter_name}}({{setter_arguments | join(', ')}});
|
| {% if setter.is_raises_exception %}
|
| - if (exceptionState.throwIfNeeded())
|
| + if (exceptionState.hadException())
|
| return;
|
| {% endif %}
|
| if (!result)
|
| @@ -314,7 +312,7 @@ static void namedPropertyQuery(v8::Local<v8::Name> name, const v8::PropertyCallb
|
| {% set getter_arguments = ['scriptState'] + getter_arguments %}
|
| {% endif %}
|
| bool result = impl->namedPropertyQuery({{getter_arguments | join(', ')}});
|
| - if (exceptionState.throwIfNeeded())
|
| + if (exceptionState.hadException())
|
| return;
|
| if (!result)
|
| return;
|
| @@ -369,7 +367,7 @@ static void namedPropertyDeleter(v8::Local<v8::Name> name, const v8::PropertyCal
|
| {% endif %}
|
| DeleteResult result = impl->{{deleter_name}}({{deleter_arguments | join(', ')}});
|
| {% if deleter.is_raises_exception %}
|
| - if (exceptionState.throwIfNeeded())
|
| + if (exceptionState.hadException())
|
| return;
|
| {% endif %}
|
| if (result != DeleteUnknownProperty)
|
| @@ -412,7 +410,7 @@ static void namedPropertyEnumerator(const v8::PropertyCallbackInfo<v8::Array>& i
|
| Vector<String> names;
|
| ExceptionState exceptionState(ExceptionState::EnumerationContext, "{{interface_name}}", info.Holder(), info.GetIsolate());
|
| impl->namedPropertyEnumerator(names, exceptionState);
|
| - if (exceptionState.throwIfNeeded())
|
| + if (exceptionState.hadException())
|
| return;
|
| v8::Local<v8::Array> v8names = v8::Array::New(info.GetIsolate(), names.size());
|
| for (size_t i = 0; i < names.size(); ++i) {
|
| @@ -457,7 +455,6 @@ static void {{cpp_class}}OriginSafeMethodSetter(v8::Local<v8::Name> name, v8::Lo
|
| v8::String::Utf8Value attributeName(name);
|
| ExceptionState exceptionState(ExceptionState::SetterContext, *attributeName, "{{interface_name}}", info.Holder(), info.GetIsolate());
|
| if (!BindingSecurity::shouldAllowAccessTo(currentDOMWindow(info.GetIsolate()), impl, exceptionState)) {
|
| - exceptionState.throwIfNeeded();
|
| return;
|
| }
|
|
|
| @@ -541,18 +538,15 @@ static void constructor(const v8::FunctionCallbackInfo<v8::Value>& info)
|
| {% if constructor_overloads.valid_arities %}
|
| if (info.Length() >= {{constructor_overloads.length}}) {
|
| setArityTypeError(exceptionState, "{{constructor_overloads.valid_arities}}", info.Length());
|
| - exceptionState.throwIfNeeded();
|
| return;
|
| }
|
| {% endif %}
|
| {# Otherwise just report "not enough arguments" #}
|
| exceptionState.throwTypeError(ExceptionMessages::notEnoughArguments({{constructor_overloads.length}}, info.Length()));
|
| - exceptionState.throwIfNeeded();
|
| return;
|
| }
|
| {# No match, throw error #}
|
| exceptionState.throwTypeError("No matching constructor signature.");
|
| - exceptionState.throwIfNeeded();
|
| }
|
|
|
| {% endif %}
|
|
|