<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[192905] trunk/Source/WebCore</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/192905">192905</a></dd>
<dt>Author</dt> <dd>beidson@apple.com</dd>
<dt>Date</dt> <dd>2015-12-01 13:46:53 -0800 (Tue, 01 Dec 2015)</dd>
</dl>
<h3>Log Message</h3>
<pre>Add "RaisesExceptionWithMessage" IDL attribute.
https://bugs.webkit.org/show_bug.cgi?id=151720
Reviewed by Alex Christensen.
No new tests (Covered by changes to existing bindings tests).
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateImplementation):
(GenerateParametersCheck):
(GenerateReturnParameters):
(GenerateImplementationFunctionCall):
(GenerateConstructorDefinition):
* bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:
(webkit_dom_test_obj_method_with_exception_with_message):
* bindings/scripts/test/GObject/WebKitDOMTestObj.h:
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::jsTestObjPrototypeFunctionMethodWithExceptionWithMessage):
* bindings/scripts/test/ObjC/DOMTestObj.h:
* bindings/scripts/test/ObjC/DOMTestObj.mm:
(-[DOMTestObj methodWithExceptionWithMessage]):
* bindings/scripts/test/TestObj.idl:</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestGObjectWebKitDOMTestObjcpp">trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestGObjectWebKitDOMTestObjh">trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestObjCDOMTestObjh">trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestObjCDOMTestObjmm">trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestTestObjidl">trunk/Source/WebCore/bindings/scripts/test/TestObj.idl</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (192904 => 192905)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-12-01 21:43:30 UTC (rev 192904)
+++ trunk/Source/WebCore/ChangeLog        2015-12-01 21:46:53 UTC (rev 192905)
</span><span class="lines">@@ -1,3 +1,32 @@
</span><ins>+2015-12-01 Brady Eidson <beidson@apple.com>
+
+ Add "RaisesExceptionWithMessage" IDL attribute.
+ https://bugs.webkit.org/show_bug.cgi?id=151720
+
+ Reviewed by Alex Christensen.
+
+ No new tests (Covered by changes to existing bindings tests).
+
+ * bindings/scripts/CodeGeneratorJS.pm:
+ (GenerateImplementation):
+ (GenerateParametersCheck):
+ (GenerateReturnParameters):
+ (GenerateImplementationFunctionCall):
+ (GenerateConstructorDefinition):
+
+ * bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:
+ (webkit_dom_test_obj_method_with_exception_with_message):
+ * bindings/scripts/test/GObject/WebKitDOMTestObj.h:
+
+ * bindings/scripts/test/JS/JSTestObj.cpp:
+ (WebCore::jsTestObjPrototypeFunctionMethodWithExceptionWithMessage):
+
+ * bindings/scripts/test/ObjC/DOMTestObj.h:
+ * bindings/scripts/test/ObjC/DOMTestObj.mm:
+ (-[DOMTestObj methodWithExceptionWithMessage]):
+
+ * bindings/scripts/test/TestObj.idl:
+
</ins><span class="cx"> 2015-12-01 Darin Adler <darin@apple.com>
</span><span class="cx">
</span><span class="cx"> Fix anomaly where isMouseEvent returns false for wheel events
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (192904 => 192905)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2015-12-01 21:43:30 UTC (rev 192904)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2015-12-01 21:46:53 UTC (rev 192905)
</span><span class="lines">@@ -2851,6 +2851,8 @@
</span><span class="cx"> my $isCustom = HasCustomMethod($function->signature->extendedAttributes);
</span><span class="cx"> my $isOverloaded = $function->{overloads} && @{$function->{overloads}} > 1;
</span><span class="cx"> my $raisesException = $function->signature->extendedAttributes->{"RaisesException"};
</span><ins>+ my $raisesExceptionWithMessage = $function->signature->extendedAttributes->{"RaisesExceptionWithMessage"};
+ die "RaisesException and RaisesExceptionWithMessage are mutually exclusive" if $raisesException && $raisesExceptionWithMessage;
</ins><span class="cx">
</span><span class="cx"> next if $isCustom && $isOverloaded && $function->{overloadIndex} > 1;
</span><span class="cx">
</span><span class="lines">@@ -2902,7 +2904,8 @@
</span><span class="cx"> } else {
</span><span class="cx"> GenerateArgumentsCountCheck(\@implContent, $function, $interface);
</span><span class="cx">
</span><del>- push(@implContent, " ExceptionCode ec = 0;\n") if $raisesException;
</del><ins>+ push(@implContent, " ExceptionCode ec = 0;\n") if $raisesException || $raisesExceptionWithMessage;
+ push(@implContent, " String exceptionMessage;\n") if $raisesExceptionWithMessage;
</ins><span class="cx">
</span><span class="cx"> my $numParameters = @{$function->parameters};
</span><span class="cx"> my ($functionString, $dummy) = GenerateParametersCheck(\@implContent, $function, $interface, $numParameters, $interfaceName, $functionImplementationName, $svgPropertyType, $svgPropertyOrListPropertyType, $svgListPropertyType);
</span><span class="lines">@@ -2938,10 +2941,11 @@
</span><span class="cx"> } else {
</span><span class="cx"> GenerateArgumentsCountCheck(\@implContent, $function, $interface);
</span><span class="cx">
</span><del>- push(@implContent, " ExceptionCode ec = 0;\n") if $raisesException;
</del><ins>+ push(@implContent, " ExceptionCode ec = 0;\n") if $raisesException || $raisesExceptionWithMessage;
+ push(@implContent, " String exceptionMessage;\n") if $raisesExceptionWithMessage;
</ins><span class="cx">
</span><span class="cx"> if ($function->signature->extendedAttributes->{"CheckSecurityForNode"}) {
</span><del>- push(@implContent, " if (!shouldAllowAccessToNode(state, impl." . $function->signature->name . "(" . ($raisesException ? "ec" : "") .")))\n");
</del><ins>+ push(@implContent, " if (!shouldAllowAccessToNode(state, impl." . $function->signature->name . "(" . ($raisesException ? "ec" : $raisesExceptionWithMessage ? "ec, exceptionMessage" : "") .")))\n");
</ins><span class="cx"> push(@implContent, " return JSValue::encode(jsNull());\n");
</span><span class="cx"> $implIncludes{"JSDOMBinding.h"} = 1;
</span><span class="cx"> }
</span><span class="lines">@@ -3289,7 +3293,8 @@
</span><span class="cx"> my $argsIndex = 0;
</span><span class="cx"> my $hasOptionalArguments = 0;
</span><span class="cx"> my $raisesException = $function->signature->extendedAttributes->{"RaisesException"};
</span><del>-
</del><ins>+ my $raisesExceptionWithMessage = $function->signature->extendedAttributes->{"RaisesExceptionWithMessage"};
+
</ins><span class="cx"> my $className = $interface->name;
</span><span class="cx"> my @arguments;
</span><span class="cx"> my $functionName;
</span><span class="lines">@@ -3533,7 +3538,8 @@
</span><span class="cx"> my @arguments;
</span><span class="cx">
</span><span class="cx"> push(@arguments, "DeferredWrapper(state, castedThis->globalObject(), promiseDeferred)") if IsReturningPromise($function);
</span><del>- push(@arguments, "ec") if $function->signature->extendedAttributes->{"RaisesException"};
</del><ins>+ push(@arguments, "ec") if $function->signature->extendedAttributes->{"RaisesException"} || $function->signature->extendedAttributes->{"RaisesExceptionWithMessage"};
+ push(@arguments, "exceptionMessage") if $function->signature->extendedAttributes->{"RaisesExceptionWithMessage"};
</ins><span class="cx"> return @arguments;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -3816,6 +3822,7 @@
</span><span class="cx">
</span><span class="cx"> my $nondeterministic = $function->signature->extendedAttributes->{"Nondeterministic"};
</span><span class="cx"> my $raisesException = $function->signature->extendedAttributes->{"RaisesException"};
</span><ins>+ my $raisesExceptionWithMessage = $function->signature->extendedAttributes->{"RaisesExceptionWithMessage"};
</ins><span class="cx">
</span><span class="cx"> if ($function->signature->type eq "void" || IsReturningPromise($function)) {
</span><span class="cx"> if ($nondeterministic) {
</span><span class="lines">@@ -3825,18 +3832,21 @@
</span><span class="cx"> push(@implContent, $indent . "if (!cursor.isReplaying()) {\n");
</span><span class="cx"> push(@implContent, $indent . " $functionString;\n");
</span><span class="cx"> push(@implContent, $indent . " setDOMException(state, ec);\n") if $raisesException;
</span><ins>+ push(@implContent, $indent . " setDOMException(state, ec, exceptionMessage);\n") if $raisesExceptionWithMessage;
</ins><span class="cx"> push(@implContent, $indent . "}\n");
</span><span class="cx"> push(@implContent, "#else\n");
</span><span class="cx"> push(@implContent, $indent . "$functionString;\n");
</span><span class="cx"> push(@implContent, $indent . "setDOMException(state, ec);\n") if $raisesException;
</span><ins>+ push(@implContent, $indent . "setDOMException(state, ec, exceptionMessage);\n") if $raisesExceptionWithMessage;
</ins><span class="cx"> push(@implContent, "#endif\n");
</span><span class="cx"> } else {
</span><span class="cx"> push(@implContent, $indent . "$functionString;\n");
</span><span class="cx"> push(@implContent, $indent . "setDOMException(state, ec);\n") if $raisesException;
</span><ins>+ push(@implContent, $indent . "setDOMException(state, ec, exceptionMessage);\n") if $raisesExceptionWithMessage;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if ($svgPropertyType and !$function->isStatic) {
</span><del>- if ($raisesException) {
</del><ins>+ if ($raisesException || $raisesExceptionWithMessage) {
</ins><span class="cx"> push(@implContent, $indent . "if (!ec)\n");
</span><span class="cx"> push(@implContent, $indent . " impl.commitChange();\n");
</span><span class="cx"> } else {
</span><span class="lines">@@ -3861,7 +3871,7 @@
</span><span class="cx"> push(@implContent, $indent . "static NeverDestroyed<const AtomicString> bindingName(\"$bindingName\", AtomicString::ConstructFromLiteral);\n");
</span><span class="cx"> push(@implContent, $indent . "if (cursor.isCapturing()) {\n");
</span><span class="cx"> push(@implContent, $indent . " $nativeType memoizedResult = $functionString;\n");
</span><del>- my $exceptionCode = $raisesException ? "ec" : "0";
</del><ins>+ my $exceptionCode = $raisesException || $raisesExceptionWithMessage ? "ec" : "0";
</ins><span class="cx"> push(@implContent, $indent . " cursor.appendInput<MemoizedDOMResult<$memoizedType>>(bindingName.get().string(), memoizedResult, $exceptionCode);\n");
</span><span class="cx"> push(@implContent, $indent . " result = " . NativeToJSValue($function->signature, 1, $interfaceName, "memoizedResult", $thisObject) . ";\n");
</span><span class="cx"> push(@implContent, $indent . "} else if (cursor.isReplaying()) {\n");
</span><span class="lines">@@ -3870,7 +3880,7 @@
</span><span class="cx"> # FIXME: the generated code should report an error if an input cannot be fetched or converted.
</span><span class="cx"> push(@implContent, $indent . " if (input && input->convertTo<$memoizedType>(memoizedResult)) {\n");
</span><span class="cx"> push(@implContent, $indent . " result = " . NativeToJSValue($function->signature, 1, $interfaceName, "memoizedResult", $thisObject) . ";\n");
</span><del>- push(@implContent, $indent . " ec = input->exceptionCode();\n") if $raisesException;
</del><ins>+ push(@implContent, $indent . " ec = input->exceptionCode();\n") if $raisesException || $raisesExceptionWithMessage;
</ins><span class="cx"> push(@implContent, $indent . " } else\n");
</span><span class="cx"> push(@implContent, $indent . " result = " . NativeToJSValue($function->signature, 1, $interfaceName, $functionString, $thisObject) . ";\n");
</span><span class="cx"> push(@implContent, $indent . "} else\n");
</span><span class="lines">@@ -3882,6 +3892,7 @@
</span><span class="cx"> push(@implContent, $indent . "JSValue result = " . NativeToJSValue($function->signature, 1, $interfaceName, $functionString, $thisObject) . ";\n");
</span><span class="cx"> }
</span><span class="cx"> push(@implContent, "\n" . $indent . "setDOMException(state, ec);\n") if $raisesException;
</span><ins>+ push(@implContent, "\n" . $indent . "setDOMException(state, ec, exceptionMessage);\n") if $raisesExceptionWithMessage;
</ins><span class="cx">
</span><span class="cx"> if ($codeGenerator->ExtendedAttributeContains($function->signature->extendedAttributes->{"CallWith"}, "ScriptState")) {
</span><span class="cx"> push(@implContent, $indent . "if (UNLIKELY(state->hadException()))\n");
</span><span class="lines">@@ -4785,9 +4796,10 @@
</span><span class="cx">
</span><span class="cx"> GenerateArgumentsCountCheck($outputArray, $function, $interface);
</span><span class="cx">
</span><del>- if ($function->signature->extendedAttributes->{"RaisesException"} || $interface->extendedAttributes->{"ConstructorRaisesException"}) {
</del><ins>+ if ($function->signature->extendedAttributes->{"RaisesException"} || $function->signature->extendedAttributes->{"RaisesExceptionWithMessage"} || $interface->extendedAttributes->{"ConstructorRaisesException"}) {
</ins><span class="cx"> $implIncludes{"ExceptionCode.h"} = 1;
</span><span class="cx"> push(@$outputArray, " ExceptionCode ec = 0;\n");
</span><ins>+ push(@$outputArray, " String exceptionMessage;\n") if $function->signature->extendedAttributes->{"RaisesExceptionWithMessage"};
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> # FIXME: For now, we do not support SVG constructors.
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestGObjectWebKitDOMTestObjcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp (192904 => 192905)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp        2015-12-01 21:43:30 UTC (rev 192904)
+++ trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp        2015-12-01 21:46:53 UTC (rev 192905)
</span><span class="lines">@@ -1238,6 +1238,14 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+void webkit_dom_test_obj_method_with_exception_with_message(WebKitDOMTestObj* self)
+{
+ WebCore::JSMainThreadNullState state;
+ g_return_if_fail(WEBKIT_DOM_IS_TEST_OBJ(self));
+ WebCore::TestObj* item = WebKit::core(self);
+ item->methodWithExceptionWithMessage();
+}
+
</ins><span class="cx"> void webkit_dom_test_obj_with_script_state_void(WebKitDOMTestObj* self)
</span><span class="cx"> {
</span><span class="cx"> WebCore::JSMainThreadNullState state;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestGObjectWebKitDOMTestObjh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h (192904 => 192905)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h        2015-12-01 21:43:30 UTC (rev 192904)
+++ trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h        2015-12-01 21:46:53 UTC (rev 192905)
</span><span class="lines">@@ -301,6 +301,15 @@
</span><span class="cx"> webkit_dom_test_obj_method_with_exception(WebKitDOMTestObj* self, GError** error);
</span><span class="cx">
</span><span class="cx"> /**
</span><ins>+ * webkit_dom_test_obj_method_with_exception_with_message:
+ * @self: A #WebKitDOMTestObj
+ *
+ * Stability: Unstable
+**/
+WEBKIT_API void
+webkit_dom_test_obj_method_with_exception_with_message(WebKitDOMTestObj* self);
+
+/**
</ins><span class="cx"> * webkit_dom_test_obj_with_script_state_void:
</span><span class="cx"> * @self: A #WebKitDOMTestObj
</span><span class="cx"> *
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp (192904 => 192905)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2015-12-01 21:43:30 UTC (rev 192904)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2015-12-01 21:46:53 UTC (rev 192905)
</span><span class="lines">@@ -104,6 +104,7 @@
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionSerializedValue(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOptionsObject(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithException(JSC::ExecState*);
</span><ins>+JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithExceptionWithMessage(JSC::ExecState*);
</ins><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionCustomMethod(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionCustomMethodWithArgs(JSC::ExecState*);
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionPrivateMethod(JSC::ExecState*);
</span><span class="lines">@@ -605,6 +606,7 @@
</span><span class="cx"> { "serializedValue", JSC::Function, NoIntrinsic, { (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionSerializedValue), (intptr_t) (1) } },
</span><span class="cx"> { "optionsObject", JSC::Function, NoIntrinsic, { (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionOptionsObject), (intptr_t) (1) } },
</span><span class="cx"> { "methodWithException", JSC::Function, NoIntrinsic, { (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithException), (intptr_t) (0) } },
</span><ins>+ { "methodWithExceptionWithMessage", JSC::Function, NoIntrinsic, { (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithExceptionWithMessage), (intptr_t) (0) } },
</ins><span class="cx"> { "customMethod", JSC::Function, NoIntrinsic, { (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionCustomMethod), (intptr_t) (0) } },
</span><span class="cx"> { "customMethodWithArgs", JSC::Function, NoIntrinsic, { (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionCustomMethodWithArgs), (intptr_t) (3) } },
</span><span class="cx"> { "customBindingMethod", JSC::Function, NoIntrinsic, { (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionCustomBindingMethod), (intptr_t) (0) } },
</span><span class="lines">@@ -3482,6 +3484,21 @@
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithExceptionWithMessage(ExecState* state)
+{
+ JSValue thisValue = state->thisValue();
+ JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(thisValue);
+ if (UNLIKELY(!castedThis))
+ return throwThisTypeError(*state, "TestObj", "methodWithExceptionWithMessage");
+ ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
+ auto& impl = castedThis->wrapped();
+ ExceptionCode ec = 0;
+ String exceptionMessage;
+ impl.methodWithExceptionWithMessage(ec, exceptionMessage);
+ setDOMException(state, ec, exceptionMessage);
+ return JSValue::encode(jsUndefined());
+}
+
</ins><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionCustomMethod(ExecState* state)
</span><span class="cx"> {
</span><span class="cx"> JSValue thisValue = state->thisValue();
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestObjCDOMTestObjh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h (192904 => 192905)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h        2015-12-01 21:43:30 UTC (rev 192904)
+++ trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h        2015-12-01 21:46:53 UTC (rev 192905)
</span><span class="lines">@@ -143,6 +143,7 @@
</span><span class="cx"> - (void)serializedValue:(NSString *)serializedArg;
</span><span class="cx"> - (void)optionsObject:(DOMDictionary *)oo ooo:(DOMDictionary *)ooo;
</span><span class="cx"> - (void)methodWithException;
</span><ins>+- (void)methodWithExceptionWithMessage;
</ins><span class="cx"> - (void)customMethod;
</span><span class="cx"> - (void)customMethodWithArgs:(int)longArg strArg:(NSString *)strArg objArg:(DOMTestObj *)objArg;
</span><span class="cx"> - (void)addEventListener:(NSString *)type listener:(id <DOMEventListener>)listener useCapture:(BOOL)useCapture;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestObjCDOMTestObjmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm (192904 => 192905)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm        2015-12-01 21:43:30 UTC (rev 192904)
+++ trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm        2015-12-01 21:46:53 UTC (rev 192905)
</span><span class="lines">@@ -967,6 +967,12 @@
</span><span class="cx"> WebCore::raiseOnDOMError(ec);
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+- (void)methodWithExceptionWithMessage
+{
+ WebCore::JSMainThreadNullState state;
+ IMPL->methodWithExceptionWithMessage();
+}
+
</ins><span class="cx"> - (void)customMethod
</span><span class="cx"> {
</span><span class="cx"> WebCore::JSMainThreadNullState state;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestTestObjidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/TestObj.idl (192904 => 192905)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/TestObj.idl        2015-12-01 21:43:30 UTC (rev 192904)
+++ trunk/Source/WebCore/bindings/scripts/test/TestObj.idl        2015-12-01 21:46:53 UTC (rev 192905)
</span><span class="lines">@@ -104,6 +104,7 @@
</span><span class="cx">
</span><span class="cx"> // Exceptions
</span><span class="cx"> [RaisesException] void methodWithException();
</span><ins>+ [RaisesExceptionWithMessage] void methodWithExceptionWithMessage();
</ins><span class="cx"> [GetterRaisesException] attribute long attrWithGetterException;
</span><span class="cx"> [SetterRaisesException] attribute long attrWithSetterException;
</span><span class="cx"> [GetterRaisesException] attribute DOMString stringAttrWithGetterException;
</span></span></pre>
</div>
</div>
</body>
</html>