<!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>[190023] 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/190023">190023</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2015-09-19 18:59:36 -0700 (Sat, 19 Sep 2015)</dd>
</dl>
<h3>Log Message</h3>
<pre>[Web IDL] Add support for [PutForwards=XXX] IDL extended attribute
https://bugs.webkit.org/show_bug.cgi?id=149376
Reviewed by Darin Adler.
[Web IDL] Add support for [PutForwards=XXX] IDL extended attribute:
https://heycam.github.io/webidl/#PutForwards
As an initial proof of concept, use it for Document.location as per the
HTML specification, instead of using custom bindings:
https://html.spec.whatwg.org/multipage/dom.html#the-document-object
More attributes can be ported later.
No new tests, no web-exposed behavior change intended. Bindings tests
coverage was added.
* bindings/js/JSDocumentCustom.cpp:
Drop custom bindings for the location attribute setter.
* bindings/scripts/CodeGenerator.pm:
(GetAttributeFromInterface):
Add convenience function that returned an attribute from another
interface. This is used by [PutForwards] to retrieve the forwarded
attribute.
* bindings/scripts/CodeGeneratorJS.pm:
(IsReadonly):
(GenerateImplementation):
* bindings/scripts/IDLAttributes.txt:
Add support for [PutForwards=XXX] IDL extended attribute.
* bindings/scripts/test/GObject/WebKitDOMTestNode.cpp:
* bindings/scripts/test/GObject/WebKitDOMTestNode.h:
* bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:
* bindings/scripts/test/GObject/WebKitDOMTestObj.h:
* bindings/scripts/test/JS/JSTestNode.cpp:
* bindings/scripts/test/JS/JSTestObj.cpp:
* bindings/scripts/test/ObjC/DOMTestNode.h:
* bindings/scripts/test/ObjC/DOMTestNode.mm:
* bindings/scripts/test/ObjC/DOMTestObj.h:
* bindings/scripts/test/ObjC/DOMTestObj.mm:
Add binding tests coverage for [PutForwards=XXX] IDL extended
attribute.
* dom/Document.idl:
Use [PutForwards=href] for Document.location attribute, as per the HTML
specification and stop using custom bindings for the setter. Also mark
the attribute as readonly as all attributes using [PutForwards] must be
marked as readonly as per the Web IDL specification.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDocumentCustomcpp">trunk/Source/WebCore/bindings/js/JSDocumentCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorpm">trunk/Source/WebCore/bindings/scripts/CodeGenerator.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsIDLAttributestxt">trunk/Source/WebCore/bindings/scripts/IDLAttributes.txt</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestGObjectWebKitDOMTestNodecpp">trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestNode.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestGObjectWebKitDOMTestNodeh">trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestNode.h</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="#trunkSourceWebCorebindingsscriptstestJSJSTestNodecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestObjCDOMTestNodeh">trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestNode.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestObjCDOMTestNodemm">trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestNode.mm</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="#trunkSourceWebCorebindingsscriptstestTestNodeidl">trunk/Source/WebCore/bindings/scripts/test/TestNode.idl</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestTestObjidl">trunk/Source/WebCore/bindings/scripts/test/TestObj.idl</a></li>
<li><a href="#trunkSourceWebCoredomDocumentidl">trunk/Source/WebCore/dom/Document.idl</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (190022 => 190023)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-09-20 01:09:05 UTC (rev 190022)
+++ trunk/Source/WebCore/ChangeLog        2015-09-20 01:59:36 UTC (rev 190023)
</span><span class="lines">@@ -1,5 +1,58 @@
</span><span class="cx"> 2015-09-19 Chris Dumez <cdumez@apple.com>
</span><span class="cx">
</span><ins>+ [Web IDL] Add support for [PutForwards=XXX] IDL extended attribute
+ https://bugs.webkit.org/show_bug.cgi?id=149376
+
+ Reviewed by Darin Adler.
+
+ [Web IDL] Add support for [PutForwards=XXX] IDL extended attribute:
+ https://heycam.github.io/webidl/#PutForwards
+
+ As an initial proof of concept, use it for Document.location as per the
+ HTML specification, instead of using custom bindings:
+ https://html.spec.whatwg.org/multipage/dom.html#the-document-object
+
+ More attributes can be ported later.
+
+ No new tests, no web-exposed behavior change intended. Bindings tests
+ coverage was added.
+
+ * bindings/js/JSDocumentCustom.cpp:
+ Drop custom bindings for the location attribute setter.
+
+ * bindings/scripts/CodeGenerator.pm:
+ (GetAttributeFromInterface):
+ Add convenience function that returned an attribute from another
+ interface. This is used by [PutForwards] to retrieve the forwarded
+ attribute.
+
+ * bindings/scripts/CodeGeneratorJS.pm:
+ (IsReadonly):
+ (GenerateImplementation):
+ * bindings/scripts/IDLAttributes.txt:
+ Add support for [PutForwards=XXX] IDL extended attribute.
+
+ * bindings/scripts/test/GObject/WebKitDOMTestNode.cpp:
+ * bindings/scripts/test/GObject/WebKitDOMTestNode.h:
+ * bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:
+ * bindings/scripts/test/GObject/WebKitDOMTestObj.h:
+ * bindings/scripts/test/JS/JSTestNode.cpp:
+ * bindings/scripts/test/JS/JSTestObj.cpp:
+ * bindings/scripts/test/ObjC/DOMTestNode.h:
+ * bindings/scripts/test/ObjC/DOMTestNode.mm:
+ * bindings/scripts/test/ObjC/DOMTestObj.h:
+ * bindings/scripts/test/ObjC/DOMTestObj.mm:
+ Add binding tests coverage for [PutForwards=XXX] IDL extended
+ attribute.
+
+ * dom/Document.idl:
+ Use [PutForwards=href] for Document.location attribute, as per the HTML
+ specification and stop using custom bindings for the setter. Also mark
+ the attribute as readonly as all attributes using [PutForwards] must be
+ marked as readonly as per the Web IDL specification.
+
+2015-09-19 Chris Dumez <cdumez@apple.com>
+
</ins><span class="cx"> [WebIDL] Specify default parameter values where it is useful
</span><span class="cx"> https://bugs.webkit.org/show_bug.cgi?id=149331
</span><span class="cx"> <rdar://problem/22545600>
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDocumentCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDocumentCustom.cpp (190022 => 190023)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDocumentCustom.cpp        2015-09-20 01:09:05 UTC (rev 190022)
+++ trunk/Source/WebCore/bindings/js/JSDocumentCustom.cpp        2015-09-20 01:59:36 UTC (rev 190023)
</span><span class="lines">@@ -50,21 +50,6 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-// FIXME: Require support for [PutForward=XXX] Web IDL extended attribute.
-void JSDocument::setLocation(ExecState* exec, JSValue value)
-{
- String locationString = value.toString(exec)->value(exec);
- if (exec->hadException())
- return;
-
- RefPtr<Frame> frame = impl().frame();
- if (!frame)
- return;
-
- if (RefPtr<Location> location = frame->document()->domWindow()->location())
- location->setHref(activeDOMWindow(exec), firstDOMWindow(exec), locationString);
-}
-
</del><span class="cx"> static inline JSValue createNewDocumentWrapper(ExecState& state, JSDOMGlobalObject& globalObject, Document& document)
</span><span class="cx"> {
</span><span class="cx"> JSObject* wrapper;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGenerator.pm (190022 => 190023)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGenerator.pm        2015-09-20 01:09:05 UTC (rev 190022)
+++ trunk/Source/WebCore/bindings/scripts/CodeGenerator.pm        2015-09-20 01:59:36 UTC (rev 190023)
</span><span class="lines">@@ -234,6 +234,20 @@
</span><span class="cx"> return $idlFiles->{$interfaceName};
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+sub GetAttributeFromInterface()
+{
+ my $object = shift;
+ my $outerInterface = shift;
+ my $interfaceName = shift;
+ my $attributeName = shift;
+
+ my $interface = $object->ParseInterface($outerInterface, $interfaceName);
+ for my $attribute (@{$interface->attributes}) {
+ return $attribute if $attribute->signature->name eq $attributeName;
+ }
+ die("Could not find attribute '$attributeName' on interface '$interfaceName'.");
+}
+
</ins><span class="cx"> sub ParseInterface
</span><span class="cx"> {
</span><span class="cx"> my $object = shift;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (190022 => 190023)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2015-09-20 01:09:05 UTC (rev 190022)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2015-09-20 01:59:36 UTC (rev 190023)
</span><span class="lines">@@ -336,7 +336,7 @@
</span><span class="cx"> sub IsReadonly
</span><span class="cx"> {
</span><span class="cx"> my $attribute = shift;
</span><del>- return $attribute->isReadOnly && !$attribute->signature->extendedAttributes->{"Replaceable"};
</del><ins>+ return $attribute->isReadOnly && !$attribute->signature->extendedAttributes->{"Replaceable"} && !$attribute->signature->extendedAttributes->{"PutForwards"};
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> sub AddTypedefForScriptProfileType
</span><span class="lines">@@ -2648,7 +2648,17 @@
</span><span class="cx"> push(@implContent, " castedThis->putDirect(exec->vm(), Identifier::fromString(exec, \"$name\"), value);\n");
</span><span class="cx"> } else {
</span><span class="cx"> if (!$attribute->isStatic) {
</span><del>- push(@implContent, " auto& impl = castedThis->impl();\n");
</del><ins>+ my $putForwards = $attribute->signature->extendedAttributes->{"PutForwards"};
+ if ($putForwards) {
+ my $implGetterFunctionName = $codeGenerator->WK_lcfirst($attribute->signature->extendedAttributes->{"ImplementedAs"} || $name);
+ push(@implContent, " auto* forwardedImpl = castedThis->impl().${implGetterFunctionName}();\n");
+ push(@implContent, " if (!forwardedImpl)\n");
+ push(@implContent, " return;\n");
+ push(@implContent, " auto& impl = *forwardedImpl;\n");
+ $attribute = $codeGenerator->GetAttributeFromInterface($interface, $attribute->signature->type, $putForwards);
+ } else {
+ push(@implContent, " auto& impl = castedThis->impl();\n");
+ }
</ins><span class="cx"> }
</span><span class="cx"> push(@implContent, " ExceptionCode ec = 0;\n") if $setterRaisesException;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsIDLAttributestxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/IDLAttributes.txt (190022 => 190023)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/IDLAttributes.txt        2015-09-20 01:09:05 UTC (rev 190022)
+++ trunk/Source/WebCore/bindings/scripts/IDLAttributes.txt        2015-09-20 01:59:36 UTC (rev 190023)
</span><span class="lines">@@ -102,6 +102,7 @@
</span><span class="cx"> ObjCUseDefaultView
</span><span class="cx"> OverrideBuiltins
</span><span class="cx"> PassContext
</span><ins>+PutForwards=*
</ins><span class="cx"> RaisesException
</span><span class="cx"> Reflect=*
</span><span class="cx"> Replaceable
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestGObjectWebKitDOMTestNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestNode.cpp (190022 => 190023)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestNode.cpp        2015-09-20 01:09:05 UTC (rev 190022)
+++ trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestNode.cpp        2015-09-20 01:59:36 UTC (rev 190023)
</span><span class="lines">@@ -92,9 +92,55 @@
</span><span class="cx">
</span><span class="cx"> G_DEFINE_TYPE_WITH_CODE(WebKitDOMTestNode, webkit_dom_test_node, WEBKIT_DOM_TYPE_NODE, G_IMPLEMENT_INTERFACE(WEBKIT_DOM_TYPE_EVENT_TARGET, webkit_dom_event_target_init))
</span><span class="cx">
</span><ins>+enum {
+ PROP_0,
+ PROP_NAME,
+};
+
+static void webkit_dom_test_node_set_property(GObject* object, guint propertyId, const GValue* value, GParamSpec* pspec)
+{
+ WebKitDOMTestNode* self = WEBKIT_DOM_TEST_NODE(object);
+
+ switch (propertyId) {
+ case PROP_NAME:
+ webkit_dom_test_node_set_name(self, g_value_get_string(value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyId, pspec);
+ break;
+ }
+}
+
+static void webkit_dom_test_node_get_property(GObject* object, guint propertyId, GValue* value, GParamSpec* pspec)
+{
+ WebKitDOMTestNode* self = WEBKIT_DOM_TEST_NODE(object);
+
+ switch (propertyId) {
+ case PROP_NAME:
+ g_value_take_string(value, webkit_dom_test_node_get_name(self));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyId, pspec);
+ break;
+ }
+}
+
</ins><span class="cx"> static void webkit_dom_test_node_class_init(WebKitDOMTestNodeClass* requestClass)
</span><span class="cx"> {
</span><del>- UNUSED_PARAM(requestClass);
</del><ins>+ GObjectClass* gobjectClass = G_OBJECT_CLASS(requestClass);
+ gobjectClass->set_property = webkit_dom_test_node_set_property;
+ gobjectClass->get_property = webkit_dom_test_node_get_property;
+
+ g_object_class_install_property(
+ gobjectClass,
+ PROP_NAME,
+ g_param_spec_string(
+ "name",
+ "TestNode:name",
+ "read-write gchar* TestNode:name",
+ "",
+ WEBKIT_PARAM_READWRITE));
+
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static void webkit_dom_test_node_init(WebKitDOMTestNode* request)
</span><span class="lines">@@ -102,3 +148,22 @@
</span><span class="cx"> UNUSED_PARAM(request);
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+gchar* webkit_dom_test_node_get_name(WebKitDOMTestNode* self)
+{
+ WebCore::JSMainThreadNullState state;
+ g_return_val_if_fail(WEBKIT_DOM_IS_TEST_NODE(self), 0);
+ WebCore::TestNode* item = WebKit::core(self);
+ gchar* result = convertToUTF8String(item->name());
+ return result;
+}
+
+void webkit_dom_test_node_set_name(WebKitDOMTestNode* self, const gchar* value)
+{
+ WebCore::JSMainThreadNullState state;
+ g_return_if_fail(WEBKIT_DOM_IS_TEST_NODE(self));
+ g_return_if_fail(value);
+ WebCore::TestNode* item = WebKit::core(self);
+ WTF::String convertedValue = WTF::String::fromUTF8(value);
+ item->setName(convertedValue);
+}
+
</ins></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestGObjectWebKitDOMTestNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestNode.h (190022 => 190023)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestNode.h        2015-09-20 01:09:05 UTC (rev 190022)
+++ trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestNode.h        2015-09-20 01:59:36 UTC (rev 190023)
</span><span class="lines">@@ -47,6 +47,27 @@
</span><span class="cx"> WEBKIT_API GType
</span><span class="cx"> webkit_dom_test_node_get_type(void);
</span><span class="cx">
</span><ins>+/**
+ * webkit_dom_test_node_get_name:
+ * @self: A #WebKitDOMTestNode
+ *
+ * Returns: A #gchar
+ *
+ * Stability: Unstable
+**/
+WEBKIT_API gchar*
+webkit_dom_test_node_get_name(WebKitDOMTestNode* self);
+
+/**
+ * webkit_dom_test_node_set_name:
+ * @self: A #WebKitDOMTestNode
+ * @value: A #gchar
+ *
+ * Stability: Unstable
+**/
+WEBKIT_API void
+webkit_dom_test_node_set_name(WebKitDOMTestNode* self, const gchar* value);
+
</ins><span class="cx"> G_END_DECLS
</span><span class="cx">
</span><span class="cx"> #endif /* WEBKIT_DOM_USE_UNSTABLE_API */
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestGObjectWebKitDOMTestObjcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp (190022 => 190023)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp        2015-09-20 01:09:05 UTC (rev 190022)
+++ trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp        2015-09-20 01:59:36 UTC (rev 190023)
</span><span class="lines">@@ -135,6 +135,7 @@
</span><span class="cx"> PROP_NULLABLE_LONG_SETTABLE_ATTRIBUTE,
</span><span class="cx"> PROP_NULLABLE_STRING_VALUE,
</span><span class="cx"> PROP_ATTRIBUTE,
</span><ins>+ PROP_PUT_FORWARDS_ATTRIBUTE,
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> static void webkit_dom_test_obj_finalize(GObject* object)
</span><span class="lines">@@ -430,6 +431,9 @@
</span><span class="cx"> case PROP_ATTRIBUTE:
</span><span class="cx"> g_value_take_string(value, webkit_dom_test_obj_get_attribute(self));
</span><span class="cx"> break;
</span><ins>+ case PROP_PUT_FORWARDS_ATTRIBUTE:
+ g_value_set_object(value, webkit_dom_test_obj_get_put_forwards_attribute(self));
+ break;
</ins><span class="cx"> default:
</span><span class="cx"> G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyId, pspec);
</span><span class="cx"> break;
</span><span class="lines">@@ -1026,6 +1030,16 @@
</span><span class="cx"> "",
</span><span class="cx"> WEBKIT_PARAM_READABLE));
</span><span class="cx">
</span><ins>+ g_object_class_install_property(
+ gobjectClass,
+ PROP_PUT_FORWARDS_ATTRIBUTE,
+ g_param_spec_object(
+ "put-forwards-attribute",
+ "TestObj:put-forwards-attribute",
+ "read-only WebKitDOMTestNode* TestObj:put-forwards-attribute",
+ WEBKIT_DOM_TYPE_TEST_NODE,
+ WEBKIT_PARAM_READABLE));
+
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static void webkit_dom_test_obj_init(WebKitDOMTestObj* request)
</span><span class="lines">@@ -2555,3 +2569,12 @@
</span><span class="cx"> return result;
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+WebKitDOMTestNode* webkit_dom_test_obj_get_put_forwards_attribute(WebKitDOMTestObj* self)
+{
+ WebCore::JSMainThreadNullState state;
+ g_return_val_if_fail(WEBKIT_DOM_IS_TEST_OBJ(self), 0);
+ WebCore::TestObj* item = WebKit::core(self);
+ RefPtr<WebCore::TestNode> gobjectResult = WTF::getPtr(item->putForwardsAttribute());
+ return WebKit::kit(gobjectResult.get());
+}
+
</ins></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestGObjectWebKitDOMTestObjh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h (190022 => 190023)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h        2015-09-20 01:09:05 UTC (rev 190022)
+++ trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h        2015-09-20 01:59:36 UTC (rev 190023)
</span><span class="lines">@@ -1703,6 +1703,17 @@
</span><span class="cx"> WEBKIT_API gchar*
</span><span class="cx"> webkit_dom_test_obj_get_attribute(WebKitDOMTestObj* self);
</span><span class="cx">
</span><ins>+/**
+ * webkit_dom_test_obj_get_put_forwards_attribute:
+ * @self: A #WebKitDOMTestObj
+ *
+ * Returns: (transfer none): A #WebKitDOMTestNode
+ *
+ * Stability: Unstable
+**/
+WEBKIT_API WebKitDOMTestNode*
+webkit_dom_test_obj_get_put_forwards_attribute(WebKitDOMTestObj* self);
+
</ins><span class="cx"> G_END_DECLS
</span><span class="cx">
</span><span class="cx"> #endif /* WEBKIT_DOM_USE_UNSTABLE_API */
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp (190022 => 190023)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp        2015-09-20 01:09:05 UTC (rev 190022)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp        2015-09-20 01:59:36 UTC (rev 190023)
</span><span class="lines">@@ -24,7 +24,9 @@
</span><span class="cx"> #include "ExceptionCode.h"
</span><span class="cx"> #include "JSDOMBinding.h"
</span><span class="cx"> #include "TestNode.h"
</span><ins>+#include "URL.h"
</ins><span class="cx"> #include <runtime/Error.h>
</span><ins>+#include <runtime/JSString.h>
</ins><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx">
</span><span class="cx"> using namespace JSC;
</span><span class="lines">@@ -33,6 +35,8 @@
</span><span class="cx">
</span><span class="cx"> // Attributes
</span><span class="cx">
</span><ins>+JSC::EncodedJSValue jsTestNodeName(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestNodeName(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> JSC::EncodedJSValue jsTestNodeConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
</span><span class="cx">
</span><span class="cx"> class JSTestNodePrototype : public JSC::JSNonFinalObject {
</span><span class="lines">@@ -118,6 +122,7 @@
</span><span class="cx"> static const HashTableValue JSTestNodePrototypeTableValues[] =
</span><span class="cx"> {
</span><span class="cx"> { "constructor", DontEnum | ReadOnly, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestNodeConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } },
</span><ins>+ { "name", DontDelete | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestNodeName), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestNodeName) } },
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> const ClassInfo JSTestNodePrototype::s_info = { "TestNodePrototype", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestNodePrototype) };
</span><span class="lines">@@ -145,6 +150,23 @@
</span><span class="cx"> return getDOMPrototype<JSTestNode>(vm, globalObject);
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+EncodedJSValue jsTestNodeName(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
+{
+ UNUSED_PARAM(exec);
+ UNUSED_PARAM(slotBase);
+ UNUSED_PARAM(thisValue);
+ JSTestNode* castedThis = jsDynamicCast<JSTestNode*>(JSValue::decode(thisValue));
+ if (UNLIKELY(!castedThis)) {
+ if (jsDynamicCast<JSTestNodePrototype*>(slotBase))
+ return reportDeprecatedGetterError(*exec, "TestNode", "name");
+ return throwGetterTypeError(*exec, "TestNode", "name");
+ }
+ auto& impl = castedThis->impl();
+ JSValue result = jsStringWithCache(exec, impl.name());
+ return JSValue::encode(result);
+}
+
+
</ins><span class="cx"> EncodedJSValue jsTestNodeConstructor(ExecState* exec, JSObject* baseValue, EncodedJSValue, PropertyName)
</span><span class="cx"> {
</span><span class="cx"> JSTestNodePrototype* domObject = jsDynamicCast<JSTestNodePrototype*>(baseValue);
</span><span class="lines">@@ -153,6 +175,26 @@
</span><span class="cx"> return JSValue::encode(JSTestNode::getConstructor(exec->vm(), domObject->globalObject()));
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+void setJSTestNodeName(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
+{
+ JSValue value = JSValue::decode(encodedValue);
+ UNUSED_PARAM(baseObject);
+ JSTestNode* castedThis = jsDynamicCast<JSTestNode*>(JSValue::decode(thisValue));
+ if (UNLIKELY(!castedThis)) {
+ if (jsDynamicCast<JSTestNodePrototype*>(JSValue::decode(thisValue)))
+ reportDeprecatedSetterError(*exec, "TestNode", "name");
+ else
+ throwSetterTypeError(*exec, "TestNode", "name");
+ return;
+ }
+ auto& impl = castedThis->impl();
+ String nativeValue = value.toString(exec)->value(exec);
+ if (UNLIKELY(exec->hadException()))
+ return;
+ impl.setName(nativeValue);
+}
+
+
</ins><span class="cx"> JSValue JSTestNode::getConstructor(VM& vm, JSGlobalObject* globalObject)
</span><span class="cx"> {
</span><span class="cx"> return getDOMConstructor<JSTestNodeConstructor>(vm, jsCast<JSDOMGlobalObject*>(globalObject));
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp (190022 => 190023)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2015-09-20 01:09:05 UTC (rev 190022)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2015-09-20 01:59:36 UTC (rev 190023)
</span><span class="lines">@@ -49,6 +49,7 @@
</span><span class="cx"> #include "ScriptProfile.h"
</span><span class="cx"> #include "SerializedScriptValue.h"
</span><span class="cx"> #include "Settings.h"
</span><ins>+#include "TestNode.h"
</ins><span class="cx"> #include "TestObj.h"
</span><span class="cx"> #include "URL.h"
</span><span class="cx"> #include "bool.h"
</span><span class="lines">@@ -309,6 +310,8 @@
</span><span class="cx"> JSC::EncodedJSValue jsTestObjAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
</span><span class="cx"> JSC::EncodedJSValue jsTestObjAttributeWithReservedEnumType(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
</span><span class="cx"> void setJSTestObjAttributeWithReservedEnumType(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</span><ins>+JSC::EncodedJSValue jsTestObjPutForwardsAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjPutForwardsAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> JSC::EncodedJSValue jsTestObjConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
</span><span class="cx">
</span><span class="cx"> class JSTestObjPrototype : public JSC::JSNonFinalObject {
</span><span class="lines">@@ -576,6 +579,7 @@
</span><span class="cx"> { "nullableStringValue", DontDelete | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjNullableStringValue), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjNullableStringValue) } },
</span><span class="cx"> { "attribute", DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } },
</span><span class="cx"> { "attributeWithReservedEnumType", DontDelete | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjAttributeWithReservedEnumType), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjAttributeWithReservedEnumType) } },
</span><ins>+ { "putForwardsAttribute", DontDelete | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjPutForwardsAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjPutForwardsAttribute) } },
</ins><span class="cx"> #if ENABLE(Condition1)
</span><span class="cx"> { "CONDITIONAL_CONST", DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, { (long long)(0) } },
</span><span class="cx"> #else
</span><span class="lines">@@ -1942,6 +1946,23 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx">
</span><ins>+EncodedJSValue jsTestObjPutForwardsAttribute(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
+{
+ UNUSED_PARAM(exec);
+ UNUSED_PARAM(slotBase);
+ UNUSED_PARAM(thisValue);
+ JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
+ if (UNLIKELY(!castedThis)) {
+ if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
+ return reportDeprecatedGetterError(*exec, "TestObj", "putForwardsAttribute");
+ return throwGetterTypeError(*exec, "TestObj", "putForwardsAttribute");
+ }
+ auto& impl = castedThis->impl();
+ JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.putForwardsAttribute()));
+ return JSValue::encode(result);
+}
+
+
</ins><span class="cx"> EncodedJSValue jsTestObjConstructor(ExecState* exec, JSObject* baseValue, EncodedJSValue, PropertyName)
</span><span class="cx"> {
</span><span class="cx"> JSTestObjPrototype* domObject = jsDynamicCast<JSTestObjPrototype*>(baseValue);
</span><span class="lines">@@ -3057,6 +3078,29 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx">
</span><ins>+void setJSTestObjPutForwardsAttribute(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
+{
+ JSValue value = JSValue::decode(encodedValue);
+ UNUSED_PARAM(baseObject);
+ JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
+ if (UNLIKELY(!castedThis)) {
+ if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
+ reportDeprecatedSetterError(*exec, "TestObj", "putForwardsAttribute");
+ else
+ throwSetterTypeError(*exec, "TestObj", "putForwardsAttribute");
+ return;
+ }
+ auto* forwardedImpl = castedThis->impl().putForwardsAttribute();
+ if (!forwardedImpl)
+ return;
+ auto& impl = *forwardedImpl;
+ String nativeValue = value.toString(exec)->value(exec);
+ if (UNLIKELY(exec->hadException()))
+ return;
+ impl.setName(nativeValue);
+}
+
+
</ins><span class="cx"> JSValue JSTestObj::getConstructor(VM& vm, JSGlobalObject* globalObject)
</span><span class="cx"> {
</span><span class="cx"> return getDOMConstructor<JSTestObjConstructor>(vm, jsCast<JSDOMGlobalObject*>(globalObject));
</span><span class="lines">@@ -3309,7 +3353,7 @@
</span><span class="cx">
</span><span class="cx"> String enumArg;
</span><span class="cx"> if (exec->argument(0).isUndefined())
</span><del>- enumArg = String(ASCIILiteral("EnumValue1"));
</del><ins>+ enumArg = ASCIILiteral("EnumValue1");
</ins><span class="cx"> else {
</span><span class="cx"> enumArg = exec->uncheckedArgument(0).toString(exec)->value(exec);
</span><span class="cx"> if (UNLIKELY(exec->hadException()))
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestObjCDOMTestNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestNode.h (190022 => 190023)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestNode.h        2015-09-20 01:09:05 UTC (rev 190022)
+++ trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestNode.h        2015-09-20 01:59:36 UTC (rev 190023)
</span><span class="lines">@@ -26,6 +26,9 @@
</span><span class="cx">
</span><span class="cx"> #import <WebCore/DOMNode.h>
</span><span class="cx">
</span><ins>+@class NSString;
+
</ins><span class="cx"> WEBKIT_CLASS_AVAILABLE_MAC(9876_5)
</span><span class="cx"> WEBCORE_EXPORT @interface DOMTestNode : DOMNode
</span><ins>+@property (copy) NSString *name;
</ins><span class="cx"> @end
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestObjCDOMTestNodemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestNode.mm (190022 => 190023)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestNode.mm        2015-09-20 01:09:05 UTC (rev 190022)
+++ trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestNode.mm        2015-09-20 01:59:36 UTC (rev 190023)
</span><span class="lines">@@ -35,6 +35,7 @@
</span><span class="cx"> #import "JSMainThreadExecState.h"
</span><span class="cx"> #import "TestNode.h"
</span><span class="cx"> #import "ThreadCheck.h"
</span><ins>+#import "URL.h"
</ins><span class="cx"> #import "WebScriptObjectPrivate.h"
</span><span class="cx"> #import <wtf/GetPtr.h>
</span><span class="cx">
</span><span class="lines">@@ -42,6 +43,18 @@
</span><span class="cx">
</span><span class="cx"> @implementation DOMTestNode
</span><span class="cx">
</span><ins>+- (NSString *)name
+{
+ WebCore::JSMainThreadNullState state;
+ return IMPL->name();
+}
+
+- (void)setName:(NSString *)newName
+{
+ WebCore::JSMainThreadNullState state;
+ IMPL->setName(newName);
+}
+
</ins><span class="cx"> @end
</span><span class="cx">
</span><span class="cx"> WebCore::TestNode* core(DOMTestNode *wrapper)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestObjCDOMTestObjh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h (190022 => 190023)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h        2015-09-20 01:09:05 UTC (rev 190022)
+++ trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h        2015-09-20 01:59:36 UTC (rev 190023)
</span><span class="lines">@@ -122,6 +122,7 @@
</span><span class="cx"> @property int nullableLongSettableAttribute;
</span><span class="cx"> @property int nullableStringValue;
</span><span class="cx"> @property (readonly, copy) NSString *attribute;
</span><ins>+@property (readonly, strong) DOMTestNode *putForwardsAttribute;
</ins><span class="cx">
</span><span class="cx"> - (void)voidMethod;
</span><span class="cx"> - (void)voidMethodWithArgs:(int)longArg strArg:(NSString *)strArg objArg:(DOMTestObj *)objArg;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestObjCDOMTestObjmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm (190022 => 190023)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm        2015-09-20 01:09:05 UTC (rev 190022)
+++ trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm        2015-09-20 01:59:36 UTC (rev 190023)
</span><span class="lines">@@ -830,6 +830,12 @@
</span><span class="cx"> return IMPL->attribute();
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+- (DOMTestNode *)putForwardsAttribute
+{
+ WebCore::JSMainThreadNullState state;
+ return kit(WTF::getPtr(IMPL->putForwardsAttribute()));
+}
+
</ins><span class="cx"> - (void)voidMethod
</span><span class="cx"> {
</span><span class="cx"> WebCore::JSMainThreadNullState state;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestTestNodeidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/TestNode.idl (190022 => 190023)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/TestNode.idl        2015-09-20 01:09:05 UTC (rev 190022)
+++ trunk/Source/WebCore/bindings/scripts/test/TestNode.idl        2015-09-20 01:59:36 UTC (rev 190023)
</span><span class="lines">@@ -22,5 +22,6 @@
</span><span class="cx"> EventTarget,
</span><span class="cx"> Constructor,
</span><span class="cx"> ] interface TestNode : Node {
</span><ins>+ attribute DOMString name;
</ins><span class="cx"> };
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestTestObjidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/TestObj.idl (190022 => 190023)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/TestObj.idl        2015-09-20 01:09:05 UTC (rev 190022)
+++ trunk/Source/WebCore/bindings/scripts/test/TestObj.idl        2015-09-20 01:59:36 UTC (rev 190023)
</span><span class="lines">@@ -299,6 +299,9 @@
</span><span class="cx"> Promise testPromiseFunctionWithFloatArgument(float a);
</span><span class="cx"> [RaisesException] Promise testPromiseFunctionWithException();
</span><span class="cx"> Promise testPromiseFunctionWithOptionalIntArgument(optional long a);
</span><ins>+
+ // PutForwards
+ [PutForwards=name] readonly attribute TestNode putForwardsAttribute;
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> // The following comment should not generate any code.
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.idl (190022 => 190023)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.idl        2015-09-20 01:09:05 UTC (rev 190022)
+++ trunk/Source/WebCore/dom/Document.idl        2015-09-20 01:59:36 UTC (rev 190023)
</span><span class="lines">@@ -170,7 +170,7 @@
</span><span class="cx"> NodeList getElementsByName([Default=Undefined,AtomicString] optional DOMString elementName);
</span><span class="cx">
</span><span class="cx"> #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
</span><del>- [CustomSetter, Unforgeable] attribute Location location;
</del><ins>+ [PutForwards=href, Unforgeable] readonly attribute Location location;
</ins><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> // IE extensions
</span></span></pre>
</div>
</div>
</body>
</html>