<!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>[195969] trunk</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/195969">195969</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2016-02-01 11:42:14 -0800 (Mon, 01 Feb 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Move properties that use custom bindings to the prototype
https://bugs.webkit.org/show_bug.cgi?id=153735

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline several W3C tests now that more checks are passing.

* web-platform-tests/dom/interfaces-expected.txt:
* web-platform-tests/html/dom/interfaces-expected.txt:
* web-platform-tests/XMLHttpRequest/interfaces-expected.txt:

Source/WebCore:

Move properties that use custom bindings to the prototype. Whether a
property's bindings code is generated or custom-written should not
impact where the property is located.

No new tests, already covered by existing tests.

* bindings/js/JSHTMLDocumentCustom.cpp:
(WebCore::JSHTMLDocument::getOwnPropertySlot):
Add null-check for staticPropHashTable. HTMLDocument no longer has
any property on the instance so staticPropHashTable is now null.

* bindings/scripts/CodeGeneratorJS.pm:

LayoutTests:

Rebaseline / update existing tests now that properties using custom
bindings are on the prototype, as expected.

* fast/mediastream/MediaStream-video-element-expected.txt:
* fast/xmlhttprequest/xmlhttprequest-properties-prototype-expected.txt:
* inspector/model/remote-object-get-properties-expected.txt:
* js/dom/dom-attributes-on-mismatch-type-expected.txt:
* js/dom/dom-attributes-on-mismatch-type.html:
* platform/mac/inspector/model/remote-object-expected.txt:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsfastmediastreamMediaStreamvideoelementexpectedtxt">trunk/LayoutTests/fast/mediastream/MediaStream-video-element-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastxmlhttprequestxmlhttprequestpropertiesprototypeexpectedtxt">trunk/LayoutTests/fast/xmlhttprequest/xmlhttprequest-properties-prototype-expected.txt</a></li>
<li><a href="#trunkLayoutTestshttptestssecuritycrossframeaccessenumerationexpectedtxt">trunk/LayoutTests/http/tests/security/cross-frame-access-enumeration-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cChangeLog">trunk/LayoutTests/imported/w3c/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestinterfacesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/interfaces-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdominterfacesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmldominterfacesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt</a></li>
<li><a href="#trunkLayoutTestsinspectormodelremoteobjectgetpropertiesexpectedtxt">trunk/LayoutTests/inspector/model/remote-object-get-properties-expected.txt</a></li>
<li><a href="#trunkLayoutTestsjsdomdomattributesonmismatchtypeexpectedtxt">trunk/LayoutTests/js/dom/dom-attributes-on-mismatch-type-expected.txt</a></li>
<li><a href="#trunkLayoutTestsjsdomdomattributesonmismatchtypehtml">trunk/LayoutTests/js/dom/dom-attributes-on-mismatch-type.html</a></li>
<li><a href="#trunkLayoutTestsplatformmacinspectormodelremoteobjectexpectedtxt">trunk/LayoutTests/platform/mac/inspector/model/remote-object-expected.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSHTMLDocumentCustomcpp">trunk/Source/WebCore/bindings/js/JSHTMLDocumentCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestInterfacecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestInterfaceh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestJSBuiltinConstructorcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestJSBuiltinConstructorh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (195968 => 195969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-02-01 19:05:43 UTC (rev 195968)
+++ trunk/LayoutTests/ChangeLog        2016-02-01 19:42:14 UTC (rev 195969)
</span><span class="lines">@@ -1,3 +1,20 @@
</span><ins>+2016-02-01  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Move properties that use custom bindings to the prototype
+        https://bugs.webkit.org/show_bug.cgi?id=153735
+
+        Reviewed by Darin Adler.
+
+        Rebaseline / update existing tests now that properties using custom
+        bindings are on the prototype, as expected.
+
+        * fast/mediastream/MediaStream-video-element-expected.txt:
+        * fast/xmlhttprequest/xmlhttprequest-properties-prototype-expected.txt:
+        * inspector/model/remote-object-get-properties-expected.txt:
+        * js/dom/dom-attributes-on-mismatch-type-expected.txt:
+        * js/dom/dom-attributes-on-mismatch-type.html:
+        * platform/mac/inspector/model/remote-object-expected.txt:
+
</ins><span class="cx"> 2016-02-01  Youenn Fablet  &lt;youenn.fablet@crf.canon.fr&gt;
</span><span class="cx"> 
</span><span class="cx">         [Fetch API] Implement Fetch API Request
</span></span></pre></div>
<a id="trunkLayoutTestsfastmediastreamMediaStreamvideoelementexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/mediastream/MediaStream-video-element-expected.txt (195968 => 195969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/mediastream/MediaStream-video-element-expected.txt        2016-02-01 19:05:43 UTC (rev 195968)
+++ trunk/LayoutTests/fast/mediastream/MediaStream-video-element-expected.txt        2016-02-01 19:42:14 UTC (rev 195969)
</span><span class="lines">@@ -33,10 +33,10 @@
</span><span class="cx"> PASS video.videoTracks[0].kind is &quot;main&quot;
</span><span class="cx"> 
</span><span class="cx"> video.videoTracks[0] properties:
</span><ins>+  track.id = &lt;UUID&gt;
</ins><span class="cx">   track.kind = main
</span><ins>+  track.label = Mock video device
</ins><span class="cx">   track.language = 
</span><del>-  track.id = &lt;UUID&gt;
-  track.label = Mock video device
</del><span class="cx">   track.selected = true
</span><span class="cx">   track.sourceBuffer = null
</span><span class="cx"> 
</span><span class="lines">@@ -47,10 +47,10 @@
</span><span class="cx"> PASS video.audioTracks[0].kind is &quot;main&quot;
</span><span class="cx"> 
</span><span class="cx"> video.audioTracks[0] properties:
</span><ins>+  track.id = &lt;UUID&gt;
</ins><span class="cx">   track.kind = main
</span><ins>+  track.label = Mock audio device
</ins><span class="cx">   track.language = 
</span><del>-  track.id = &lt;UUID&gt;
-  track.label = Mock audio device
</del><span class="cx">   track.enabled = true
</span><span class="cx">   track.sourceBuffer = null
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastxmlhttprequestxmlhttprequestpropertiesprototypeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/xmlhttprequest/xmlhttprequest-properties-prototype-expected.txt (195968 => 195969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/xmlhttprequest/xmlhttprequest-properties-prototype-expected.txt        2016-02-01 19:05:43 UTC (rev 195968)
+++ trunk/LayoutTests/fast/xmlhttprequest/xmlhttprequest-properties-prototype-expected.txt        2016-02-01 19:42:14 UTC (rev 195969)
</span><span class="lines">@@ -12,16 +12,16 @@
</span><span class="cx"> PASS properties.enumerable is true
</span><span class="cx"> 
</span><span class="cx"> * response
</span><del>-FAIL xhr.hasOwnProperty(propertyName) should be false. Was true.
-FAIL xhr.__proto__.hasOwnProperty(propertyName) should be true. Was false.
-FAIL properties.configurable should be true. Threw exception TypeError: undefined is not an object (evaluating 'properties.configurable')
-FAIL properties.enumerable should be true. Threw exception TypeError: undefined is not an object (evaluating 'properties.enumerable')
</del><ins>+PASS xhr.hasOwnProperty(propertyName) is false
+PASS xhr.__proto__.hasOwnProperty(propertyName) is true
+PASS properties.configurable is true
+PASS properties.enumerable is true
</ins><span class="cx"> 
</span><span class="cx"> * responseText
</span><del>-FAIL xhr.hasOwnProperty(propertyName) should be false. Was true.
-FAIL xhr.__proto__.hasOwnProperty(propertyName) should be true. Was false.
-FAIL properties.configurable should be true. Threw exception TypeError: undefined is not an object (evaluating 'properties.configurable')
-FAIL properties.enumerable should be true. Threw exception TypeError: undefined is not an object (evaluating 'properties.enumerable')
</del><ins>+PASS xhr.hasOwnProperty(propertyName) is false
+PASS xhr.__proto__.hasOwnProperty(propertyName) is true
+PASS properties.configurable is true
+PASS properties.enumerable is true
</ins><span class="cx"> 
</span><span class="cx"> * responseType
</span><span class="cx"> PASS xhr.hasOwnProperty(propertyName) is false
</span></span></pre></div>
<a id="trunkLayoutTestshttptestssecuritycrossframeaccessenumerationexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/security/cross-frame-access-enumeration-expected.txt (195968 => 195969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/security/cross-frame-access-enumeration-expected.txt        2016-02-01 19:05:43 UTC (rev 195968)
+++ trunk/LayoutTests/http/tests/security/cross-frame-access-enumeration-expected.txt        2016-02-01 19:42:14 UTC (rev 195969)
</span><span class="lines">@@ -5,6 +5,7 @@
</span><span class="cx"> CONSOLE MESSAGE: line 29: Blocked a frame with origin &quot;http://127.0.0.1:8000&quot; from accessing a frame with origin &quot;http://localhost:8000&quot;. Protocols, domains, and ports must match.
</span><span class="cx"> CONSOLE MESSAGE: line 29: Blocked a frame with origin &quot;http://127.0.0.1:8000&quot; from accessing a frame with origin &quot;http://localhost:8000&quot;. Protocols, domains, and ports must match.
</span><span class="cx"> CONSOLE MESSAGE: line 29: Blocked a frame with origin &quot;http://127.0.0.1:8000&quot; from accessing a frame with origin &quot;http://localhost:8000&quot;. Protocols, domains, and ports must match.
</span><ins>+CONSOLE MESSAGE: line 29: Blocked a frame with origin &quot;http://127.0.0.1:8000&quot; from accessing a frame with origin &quot;http://localhost:8000&quot;. Protocols, domains, and ports must match.
</ins><span class="cx"> CONSOLE MESSAGE: line 75: Blocked a frame with origin &quot;http://127.0.0.1:8000&quot; from accessing a frame with origin &quot;http://localhost:8000&quot;. Protocols, domains, and ports must match.
</span><span class="cx"> CONSOLE MESSAGE: line 82: Blocked a frame with origin &quot;http://127.0.0.1:8000&quot; from accessing a frame with origin &quot;http://localhost:8000&quot;. Protocols, domains, and ports must match.
</span><span class="cx"> CONSOLE MESSAGE: line 29: Blocked a frame with origin &quot;http://127.0.0.1:8000&quot; from accessing a frame with origin &quot;http://localhost:8000&quot;. Protocols, domains, and ports must match.
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/ChangeLog (195968 => 195969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/ChangeLog        2016-02-01 19:05:43 UTC (rev 195968)
+++ trunk/LayoutTests/imported/w3c/ChangeLog        2016-02-01 19:42:14 UTC (rev 195969)
</span><span class="lines">@@ -1,3 +1,16 @@
</span><ins>+2016-02-01  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Move properties that use custom bindings to the prototype
+        https://bugs.webkit.org/show_bug.cgi?id=153735
+
+        Reviewed by Darin Adler.
+
+        Rebaseline several W3C tests now that more checks are passing.
+
+        * web-platform-tests/dom/interfaces-expected.txt:
+        * web-platform-tests/html/dom/interfaces-expected.txt:
+        * web-platform-tests/XMLHttpRequest/interfaces-expected.txt:
+
</ins><span class="cx"> 2016-02-01  Youenn Fablet  &lt;youenn.fablet@crf.canon.fr&gt;
</span><span class="cx"> 
</span><span class="cx">         [Fetch API] Implement Fetch API Request
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestinterfacesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/interfaces-expected.txt (195968 => 195969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/interfaces-expected.txt        2016-02-01 19:05:43 UTC (rev 195968)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/interfaces-expected.txt        2016-02-01 19:42:14 UTC (rev 195969)
</span><span class="lines">@@ -70,8 +70,8 @@
</span><span class="cx"> PASS XMLHttpRequest interface: operation getAllResponseHeaders() 
</span><span class="cx"> PASS XMLHttpRequest interface: operation overrideMimeType(DOMString) 
</span><span class="cx"> FAIL XMLHttpRequest interface: attribute responseType assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</span><del>-FAIL XMLHttpRequest interface: attribute response assert_true: The prototype object must have a property &quot;response&quot; expected true got false
-FAIL XMLHttpRequest interface: attribute responseText assert_true: The prototype object must have a property &quot;responseText&quot; expected true got false
</del><ins>+FAIL XMLHttpRequest interface: attribute response assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
+FAIL XMLHttpRequest interface: attribute responseText assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</ins><span class="cx"> FAIL XMLHttpRequest interface: attribute responseXML assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</span><span class="cx"> PASS XMLHttpRequest must be primary interface of new XMLHttpRequest() 
</span><span class="cx"> PASS Stringification of new XMLHttpRequest() 
</span><span class="lines">@@ -103,8 +103,8 @@
</span><span class="cx"> PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property &quot;overrideMimeType&quot; with the proper type (20) 
</span><span class="cx"> PASS XMLHttpRequest interface: calling overrideMimeType(DOMString) on new XMLHttpRequest() with too few arguments must throw TypeError 
</span><span class="cx"> PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property &quot;responseType&quot; with the proper type (21) 
</span><del>-FAIL XMLHttpRequest interface: new XMLHttpRequest() must inherit property &quot;response&quot; with the proper type (22) assert_inherits: property &quot;response&quot; found on object expected in prototype chain
-FAIL XMLHttpRequest interface: new XMLHttpRequest() must inherit property &quot;responseText&quot; with the proper type (23) assert_inherits: property &quot;responseText&quot; found on object expected in prototype chain
</del><ins>+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property &quot;response&quot; with the proper type (22) 
+PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property &quot;responseText&quot; with the proper type (23) 
</ins><span class="cx"> PASS XMLHttpRequest interface: new XMLHttpRequest() must inherit property &quot;responseXML&quot; with the proper type (24) 
</span><span class="cx"> PASS XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property &quot;onloadstart&quot; with the proper type (0) 
</span><span class="cx"> PASS XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property &quot;onprogress&quot; with the proper type (1) 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdominterfacesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces-expected.txt (195968 => 195969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces-expected.txt        2016-02-01 19:05:43 UTC (rev 195968)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces-expected.txt        2016-02-01 19:42:14 UTC (rev 195969)
</span><span class="lines">@@ -76,11 +76,11 @@
</span><span class="cx"> PASS CustomEvent interface object name 
</span><span class="cx"> PASS CustomEvent interface: existence and properties of interface prototype object 
</span><span class="cx"> PASS CustomEvent interface: existence and properties of interface prototype object's &quot;constructor&quot; property 
</span><del>-FAIL CustomEvent interface: attribute detail assert_true: The prototype object must have a property &quot;detail&quot; expected true got false
</del><ins>+FAIL CustomEvent interface: attribute detail assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</ins><span class="cx"> FAIL CustomEvent interface: operation initCustomEvent(DOMString,boolean,boolean,any) assert_equals: property has wrong .length expected 4 but got 0
</span><span class="cx"> PASS CustomEvent must be primary interface of new CustomEvent(&quot;foo&quot;) 
</span><span class="cx"> PASS Stringification of new CustomEvent(&quot;foo&quot;) 
</span><del>-FAIL CustomEvent interface: new CustomEvent(&quot;foo&quot;) must inherit property &quot;detail&quot; with the proper type (0) assert_inherits: property &quot;detail&quot; found on object expected in prototype chain
</del><ins>+PASS CustomEvent interface: new CustomEvent(&quot;foo&quot;) must inherit property &quot;detail&quot; with the proper type (0) 
</ins><span class="cx"> PASS CustomEvent interface: new CustomEvent(&quot;foo&quot;) must inherit property &quot;initCustomEvent&quot; with the proper type (1) 
</span><span class="cx"> FAIL CustomEvent interface: calling initCustomEvent(DOMString,boolean,boolean,any) on new CustomEvent(&quot;foo&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
</span><span class="cx">     [native code]
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmldominterfacesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt (195968 => 195969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt        2016-02-01 19:05:43 UTC (rev 195968)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt        2016-02-01 19:42:14 UTC (rev 195969)
</span><span class="lines">@@ -271,7 +271,7 @@
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property &quot;clear&quot; with the proper type (79) 
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property &quot;captureEvents&quot; with the proper type (80) 
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property &quot;releaseEvents&quot; with the proper type (81) 
</span><del>-FAIL Document interface: iframe.contentDocument must inherit property &quot;all&quot; with the proper type (82) assert_inherits: property &quot;all&quot; found on object expected in prototype chain
</del><ins>+PASS Document interface: iframe.contentDocument must inherit property &quot;all&quot; with the proper type (82) 
</ins><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property &quot;getElementById&quot; with the proper type (83) 
</span><span class="cx"> FAIL Document interface: calling getElementById(DOMString) on iframe.contentDocument with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
</span><span class="cx">     [native code]
</span><span class="lines">@@ -1942,7 +1942,7 @@
</span><span class="cx"> PASS HTMLMediaElement interface: document.createElement(&quot;video&quot;) must inherit property &quot;play&quot; with the proper type (32) 
</span><span class="cx"> PASS HTMLMediaElement interface: document.createElement(&quot;video&quot;) must inherit property &quot;pause&quot; with the proper type (33) 
</span><span class="cx"> PASS HTMLMediaElement interface: document.createElement(&quot;video&quot;) must inherit property &quot;mediaGroup&quot; with the proper type (34) 
</span><del>-FAIL HTMLMediaElement interface: document.createElement(&quot;video&quot;) must inherit property &quot;controller&quot; with the proper type (35) assert_inherits: property &quot;controller&quot; found on object expected in prototype chain
</del><ins>+PASS HTMLMediaElement interface: document.createElement(&quot;video&quot;) must inherit property &quot;controller&quot; with the proper type (35) 
</ins><span class="cx"> PASS HTMLMediaElement interface: document.createElement(&quot;video&quot;) must inherit property &quot;controls&quot; with the proper type (36) 
</span><span class="cx"> PASS HTMLMediaElement interface: document.createElement(&quot;video&quot;) must inherit property &quot;volume&quot; with the proper type (37) 
</span><span class="cx"> PASS HTMLMediaElement interface: document.createElement(&quot;video&quot;) must inherit property &quot;muted&quot; with the proper type (38) 
</span><span class="lines">@@ -1998,7 +1998,7 @@
</span><span class="cx"> PASS HTMLMediaElement interface: document.createElement(&quot;audio&quot;) must inherit property &quot;play&quot; with the proper type (32) 
</span><span class="cx"> PASS HTMLMediaElement interface: document.createElement(&quot;audio&quot;) must inherit property &quot;pause&quot; with the proper type (33) 
</span><span class="cx"> PASS HTMLMediaElement interface: document.createElement(&quot;audio&quot;) must inherit property &quot;mediaGroup&quot; with the proper type (34) 
</span><del>-FAIL HTMLMediaElement interface: document.createElement(&quot;audio&quot;) must inherit property &quot;controller&quot; with the proper type (35) assert_inherits: property &quot;controller&quot; found on object expected in prototype chain
</del><ins>+PASS HTMLMediaElement interface: document.createElement(&quot;audio&quot;) must inherit property &quot;controller&quot; with the proper type (35) 
</ins><span class="cx"> PASS HTMLMediaElement interface: document.createElement(&quot;audio&quot;) must inherit property &quot;controls&quot; with the proper type (36) 
</span><span class="cx"> PASS HTMLMediaElement interface: document.createElement(&quot;audio&quot;) must inherit property &quot;volume&quot; with the proper type (37) 
</span><span class="cx"> PASS HTMLMediaElement interface: document.createElement(&quot;audio&quot;) must inherit property &quot;muted&quot; with the proper type (38) 
</span><span class="lines">@@ -2049,7 +2049,7 @@
</span><span class="cx"> PASS HTMLMediaElement interface: new Audio() must inherit property &quot;play&quot; with the proper type (32) 
</span><span class="cx"> PASS HTMLMediaElement interface: new Audio() must inherit property &quot;pause&quot; with the proper type (33) 
</span><span class="cx"> PASS HTMLMediaElement interface: new Audio() must inherit property &quot;mediaGroup&quot; with the proper type (34) 
</span><del>-FAIL HTMLMediaElement interface: new Audio() must inherit property &quot;controller&quot; with the proper type (35) assert_inherits: property &quot;controller&quot; found on object expected in prototype chain
</del><ins>+PASS HTMLMediaElement interface: new Audio() must inherit property &quot;controller&quot; with the proper type (35) 
</ins><span class="cx"> PASS HTMLMediaElement interface: new Audio() must inherit property &quot;controls&quot; with the proper type (36) 
</span><span class="cx"> PASS HTMLMediaElement interface: new Audio() must inherit property &quot;volume&quot; with the proper type (37) 
</span><span class="cx"> PASS HTMLMediaElement interface: new Audio() must inherit property &quot;muted&quot; with the proper type (38) 
</span><span class="lines">@@ -2158,7 +2158,7 @@
</span><span class="cx"> PASS HTMLMediaElement interface: operation play() 
</span><span class="cx"> PASS HTMLMediaElement interface: operation pause() 
</span><span class="cx"> FAIL HTMLMediaElement interface: attribute mediaGroup assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</span><del>-FAIL HTMLMediaElement interface: attribute controller assert_true: The prototype object must have a property &quot;controller&quot; expected true got false
</del><ins>+FAIL HTMLMediaElement interface: attribute controller assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</ins><span class="cx"> FAIL HTMLMediaElement interface: attribute controls assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</span><span class="cx"> FAIL HTMLMediaElement interface: attribute volume assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</span><span class="cx"> FAIL HTMLMediaElement interface: attribute muted assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</span><span class="lines">@@ -2337,9 +2337,9 @@
</span><span class="cx"> PASS TextTrack interface object name 
</span><span class="cx"> FAIL TextTrack interface: existence and properties of interface prototype object assert_equals: prototype of TextTrack.prototype is not EventTarget.prototype expected object &quot;[object EventTargetPrototype]&quot; but got object &quot;[object Object]&quot;
</span><span class="cx"> PASS TextTrack interface: existence and properties of interface prototype object's &quot;constructor&quot; property 
</span><del>-FAIL TextTrack interface: attribute kind assert_true: The prototype object must have a property &quot;kind&quot; expected true got false
</del><ins>+FAIL TextTrack interface: attribute kind assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</ins><span class="cx"> FAIL TextTrack interface: attribute label assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</span><del>-FAIL TextTrack interface: attribute language assert_true: The prototype object must have a property &quot;language&quot; expected true got false
</del><ins>+FAIL TextTrack interface: attribute language assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</ins><span class="cx"> FAIL TextTrack interface: attribute id assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</span><span class="cx"> FAIL TextTrack interface: attribute inBandMetadataTrackDispatchType assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</span><span class="cx"> FAIL TextTrack interface: attribute mode assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</span><span class="lines">@@ -2350,9 +2350,9 @@
</span><span class="cx"> FAIL TextTrack interface: attribute oncuechange assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</span><span class="cx"> PASS TextTrack must be primary interface of document.createElement(&quot;track&quot;).track 
</span><span class="cx"> PASS Stringification of document.createElement(&quot;track&quot;).track 
</span><del>-FAIL TextTrack interface: document.createElement(&quot;track&quot;).track must inherit property &quot;kind&quot; with the proper type (0) assert_inherits: property &quot;kind&quot; found on object expected in prototype chain
</del><ins>+PASS TextTrack interface: document.createElement(&quot;track&quot;).track must inherit property &quot;kind&quot; with the proper type (0) 
</ins><span class="cx"> PASS TextTrack interface: document.createElement(&quot;track&quot;).track must inherit property &quot;label&quot; with the proper type (1) 
</span><del>-FAIL TextTrack interface: document.createElement(&quot;track&quot;).track must inherit property &quot;language&quot; with the proper type (2) assert_inherits: property &quot;language&quot; found on object expected in prototype chain
</del><ins>+PASS TextTrack interface: document.createElement(&quot;track&quot;).track must inherit property &quot;language&quot; with the proper type (2) 
</ins><span class="cx"> PASS TextTrack interface: document.createElement(&quot;track&quot;).track must inherit property &quot;id&quot; with the proper type (3) 
</span><span class="cx"> PASS TextTrack interface: document.createElement(&quot;track&quot;).track must inherit property &quot;inBandMetadataTrackDispatchType&quot; with the proper type (4) 
</span><span class="cx"> PASS TextTrack interface: document.createElement(&quot;track&quot;).track must inherit property &quot;mode&quot; with the proper type (5) 
</span><span class="lines">@@ -2417,7 +2417,7 @@
</span><span class="cx"> PASS TrackEvent interface object name 
</span><span class="cx"> PASS TrackEvent interface: existence and properties of interface prototype object 
</span><span class="cx"> PASS TrackEvent interface: existence and properties of interface prototype object's &quot;constructor&quot; property 
</span><del>-FAIL TrackEvent interface: attribute track assert_true: The prototype object must have a property &quot;track&quot; expected true got false
</del><ins>+FAIL TrackEvent interface: attribute track assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</ins><span class="cx"> FAIL TrackEvent must be primary interface of new TrackEvent(&quot;addtrack&quot;; {track:document.createElement(&quot;track&quot;).track}) assert_equals: Unexpected exception when evaluating object expected null but got object &quot;SyntaxError: Unexpected token ';'. Expected ')' to end a ...&quot;
</span><span class="cx"> FAIL Stringification of new TrackEvent(&quot;addtrack&quot;; {track:document.createElement(&quot;track&quot;).track}) assert_equals: Unexpected exception when evaluating object expected null but got object &quot;SyntaxError: Unexpected token ';'. Expected ')' to end a ...&quot;
</span><span class="cx"> FAIL TrackEvent interface: new TrackEvent(&quot;addtrack&quot;; {track:document.createElement(&quot;track&quot;).track}) must inherit property &quot;track&quot; with the proper type (0) assert_equals: Unexpected exception when evaluating object expected null but got object &quot;SyntaxError: Unexpected token ';'. Expected ')' to end a ...&quot;
</span><span class="lines">@@ -2853,9 +2853,9 @@
</span><span class="cx"> PASS HTMLInputElement interface: operation setCustomValidity(DOMString) 
</span><span class="cx"> FAIL HTMLInputElement interface: attribute labels assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</span><span class="cx"> PASS HTMLInputElement interface: operation select() 
</span><del>-FAIL HTMLInputElement interface: attribute selectionStart assert_true: The prototype object must have a property &quot;selectionStart&quot; expected true got false
-FAIL HTMLInputElement interface: attribute selectionEnd assert_true: The prototype object must have a property &quot;selectionEnd&quot; expected true got false
-FAIL HTMLInputElement interface: attribute selectionDirection assert_true: The prototype object must have a property &quot;selectionDirection&quot; expected true got false
</del><ins>+FAIL HTMLInputElement interface: attribute selectionStart assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
+FAIL HTMLInputElement interface: attribute selectionEnd assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
+FAIL HTMLInputElement interface: attribute selectionDirection assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</ins><span class="cx"> PASS HTMLInputElement interface: operation setRangeText(DOMString) 
</span><span class="cx"> PASS HTMLInputElement interface: operation setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) 
</span><span class="cx"> FAIL HTMLInputElement interface: operation setSelectionRange(unsigned long,unsigned long,DOMString) assert_equals: property has wrong .length expected 2 but got 0
</span><span class="lines">@@ -2916,9 +2916,9 @@
</span><span class="cx"> PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on document.createElement(&quot;input&quot;) with too few arguments must throw TypeError 
</span><span class="cx"> PASS HTMLInputElement interface: document.createElement(&quot;input&quot;) must inherit property &quot;labels&quot; with the proper type (48) 
</span><span class="cx"> PASS HTMLInputElement interface: document.createElement(&quot;input&quot;) must inherit property &quot;select&quot; with the proper type (49) 
</span><del>-FAIL HTMLInputElement interface: document.createElement(&quot;input&quot;) must inherit property &quot;selectionStart&quot; with the proper type (50) assert_inherits: property &quot;selectionStart&quot; found on object expected in prototype chain
-FAIL HTMLInputElement interface: document.createElement(&quot;input&quot;) must inherit property &quot;selectionEnd&quot; with the proper type (51) assert_inherits: property &quot;selectionEnd&quot; found on object expected in prototype chain
-FAIL HTMLInputElement interface: document.createElement(&quot;input&quot;) must inherit property &quot;selectionDirection&quot; with the proper type (52) assert_inherits: property &quot;selectionDirection&quot; found on object expected in prototype chain
</del><ins>+PASS HTMLInputElement interface: document.createElement(&quot;input&quot;) must inherit property &quot;selectionStart&quot; with the proper type (50) 
+PASS HTMLInputElement interface: document.createElement(&quot;input&quot;) must inherit property &quot;selectionEnd&quot; with the proper type (51) 
+PASS HTMLInputElement interface: document.createElement(&quot;input&quot;) must inherit property &quot;selectionDirection&quot; with the proper type (52) 
</ins><span class="cx"> PASS HTMLInputElement interface: document.createElement(&quot;input&quot;) must inherit property &quot;setRangeText&quot; with the proper type (53) 
</span><span class="cx"> PASS HTMLInputElement interface: calling setRangeText(DOMString) on document.createElement(&quot;input&quot;) with too few arguments must throw TypeError 
</span><span class="cx"> PASS HTMLInputElement interface: document.createElement(&quot;input&quot;) must inherit property &quot;setRangeText&quot; with the proper type (54) 
</span><span class="lines">@@ -3422,7 +3422,7 @@
</span><span class="cx"> PASS HTMLTemplateElement interface object name 
</span><span class="cx"> PASS HTMLTemplateElement interface: existence and properties of interface prototype object 
</span><span class="cx"> PASS HTMLTemplateElement interface: existence and properties of interface prototype object's &quot;constructor&quot; property 
</span><del>-FAIL HTMLTemplateElement interface: attribute content assert_true: The prototype object must have a property &quot;content&quot; expected true got false
</del><ins>+FAIL HTMLTemplateElement interface: attribute content assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</ins><span class="cx"> FAIL HTMLCanvasElement interface: existence and properties of interface object assert_equals: class string of HTMLCanvasElement expected &quot;[object Function]&quot; but got &quot;[object HTMLCanvasElementConstructor]&quot;
</span><span class="cx"> PASS HTMLCanvasElement interface object length 
</span><span class="cx"> PASS HTMLCanvasElement interface object name 
</span><span class="lines">@@ -3482,8 +3482,8 @@
</span><span class="cx"> FAIL CanvasRenderingContext2D interface: attribute globalAlpha assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</span><span class="cx"> FAIL CanvasRenderingContext2D interface: attribute globalCompositeOperation assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</span><span class="cx"> FAIL CanvasRenderingContext2D interface: attribute imageSmoothingEnabled assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</span><del>-FAIL CanvasRenderingContext2D interface: attribute strokeStyle assert_true: The prototype object must have a property &quot;strokeStyle&quot; expected true got false
-FAIL CanvasRenderingContext2D interface: attribute fillStyle assert_true: The prototype object must have a property &quot;fillStyle&quot; expected true got false
</del><ins>+FAIL CanvasRenderingContext2D interface: attribute strokeStyle assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
+FAIL CanvasRenderingContext2D interface: attribute fillStyle assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</ins><span class="cx"> PASS CanvasRenderingContext2D interface: operation createLinearGradient(double,double,double,double) 
</span><span class="cx"> PASS CanvasRenderingContext2D interface: operation createRadialGradient(double,double,double,double,double,double) 
</span><span class="cx"> PASS CanvasRenderingContext2D interface: operation createPattern(CanvasImageSource,DOMString) 
</span><span class="lines">@@ -3569,8 +3569,8 @@
</span><span class="cx"> PASS CanvasRenderingContext2D interface: document.createElement(&quot;canvas&quot;).getContext(&quot;2d&quot;) must inherit property &quot;globalAlpha&quot; with the proper type (13) 
</span><span class="cx"> PASS CanvasRenderingContext2D interface: document.createElement(&quot;canvas&quot;).getContext(&quot;2d&quot;) must inherit property &quot;globalCompositeOperation&quot; with the proper type (14) 
</span><span class="cx"> PASS CanvasRenderingContext2D interface: document.createElement(&quot;canvas&quot;).getContext(&quot;2d&quot;) must inherit property &quot;imageSmoothingEnabled&quot; with the proper type (15) 
</span><del>-FAIL CanvasRenderingContext2D interface: document.createElement(&quot;canvas&quot;).getContext(&quot;2d&quot;) must inherit property &quot;strokeStyle&quot; with the proper type (16) assert_inherits: property &quot;strokeStyle&quot; found on object expected in prototype chain
-FAIL CanvasRenderingContext2D interface: document.createElement(&quot;canvas&quot;).getContext(&quot;2d&quot;) must inherit property &quot;fillStyle&quot; with the proper type (17) assert_inherits: property &quot;fillStyle&quot; found on object expected in prototype chain
</del><ins>+FAIL CanvasRenderingContext2D interface: document.createElement(&quot;canvas&quot;).getContext(&quot;2d&quot;) must inherit property &quot;strokeStyle&quot; with the proper type (16) Unrecognized type [object Object],[object Object],[object Object]
+FAIL CanvasRenderingContext2D interface: document.createElement(&quot;canvas&quot;).getContext(&quot;2d&quot;) must inherit property &quot;fillStyle&quot; with the proper type (17) Unrecognized type [object Object],[object Object],[object Object]
</ins><span class="cx"> PASS CanvasRenderingContext2D interface: document.createElement(&quot;canvas&quot;).getContext(&quot;2d&quot;) must inherit property &quot;createLinearGradient&quot; with the proper type (18) 
</span><span class="cx"> PASS CanvasRenderingContext2D interface: calling createLinearGradient(double,double,double,double) on document.createElement(&quot;canvas&quot;).getContext(&quot;2d&quot;) with too few arguments must throw TypeError 
</span><span class="cx"> PASS CanvasRenderingContext2D interface: document.createElement(&quot;canvas&quot;).getContext(&quot;2d&quot;) must inherit property &quot;createRadialGradient&quot; with the proper type (19) 
</span><span class="lines">@@ -3759,7 +3759,7 @@
</span><span class="cx"> FAIL DataTransfer interface: attribute effectAllowed assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</span><span class="cx"> FAIL DataTransfer interface: attribute items assert_true: The prototype object must have a property &quot;items&quot; expected true got false
</span><span class="cx"> PASS DataTransfer interface: operation setDragImage(Element,long,long) 
</span><del>-FAIL DataTransfer interface: attribute types assert_true: The prototype object must have a property &quot;types&quot; expected true got false
</del><ins>+FAIL DataTransfer interface: attribute types assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</ins><span class="cx"> PASS DataTransfer interface: operation getData(DOMString) 
</span><span class="cx"> PASS DataTransfer interface: operation setData(DOMString,DOMString) 
</span><span class="cx"> PASS DataTransfer interface: operation clearData(DOMString) 
</span><span class="lines">@@ -4080,7 +4080,7 @@
</span><span class="cx"> PASS History interface: existence and properties of interface prototype object 
</span><span class="cx"> PASS History interface: existence and properties of interface prototype object's &quot;constructor&quot; property 
</span><span class="cx"> FAIL History interface: attribute length assert_true: The prototype object must have a property &quot;length&quot; expected true got false
</span><del>-FAIL History interface: attribute state assert_true: The prototype object must have a property &quot;state&quot; expected true got false
</del><ins>+FAIL History interface: attribute state assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</ins><span class="cx"> PASS History interface: operation go(long) 
</span><span class="cx"> PASS History interface: operation back() 
</span><span class="cx"> PASS History interface: operation forward() 
</span><span class="lines">@@ -4089,7 +4089,7 @@
</span><span class="cx"> PASS History must be primary interface of window.history 
</span><span class="cx"> PASS Stringification of window.history 
</span><span class="cx"> FAIL History interface: window.history must inherit property &quot;length&quot; with the proper type (0) assert_inherits: property &quot;length&quot; found on object expected in prototype chain
</span><del>-FAIL History interface: window.history must inherit property &quot;state&quot; with the proper type (1) assert_inherits: property &quot;state&quot; found on object expected in prototype chain
</del><ins>+PASS History interface: window.history must inherit property &quot;state&quot; with the proper type (1) 
</ins><span class="cx"> PASS History interface: window.history must inherit property &quot;go&quot; with the proper type (2) 
</span><span class="cx"> PASS History interface: calling go(long) on window.history with too few arguments must throw TypeError 
</span><span class="cx"> PASS History interface: window.history must inherit property &quot;back&quot; with the proper type (3) 
</span><span class="lines">@@ -4129,10 +4129,10 @@
</span><span class="cx"> PASS PopStateEvent interface object name 
</span><span class="cx"> PASS PopStateEvent interface: existence and properties of interface prototype object 
</span><span class="cx"> PASS PopStateEvent interface: existence and properties of interface prototype object's &quot;constructor&quot; property 
</span><del>-FAIL PopStateEvent interface: attribute state assert_true: The prototype object must have a property &quot;state&quot; expected true got false
</del><ins>+FAIL PopStateEvent interface: attribute state assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</ins><span class="cx"> PASS PopStateEvent must be primary interface of new PopStateEvent(&quot;popstate&quot;, { data: {} }) 
</span><span class="cx"> PASS Stringification of new PopStateEvent(&quot;popstate&quot;, { data: {} }) 
</span><del>-FAIL PopStateEvent interface: new PopStateEvent(&quot;popstate&quot;, { data: {} }) must inherit property &quot;state&quot; with the proper type (0) assert_inherits: property &quot;state&quot; found on object expected in prototype chain
</del><ins>+PASS PopStateEvent interface: new PopStateEvent(&quot;popstate&quot;, { data: {} }) must inherit property &quot;state&quot; with the proper type (0) 
</ins><span class="cx"> PASS Event interface: new PopStateEvent(&quot;popstate&quot;, { data: {} }) must inherit property &quot;type&quot; with the proper type (0) 
</span><span class="cx"> PASS Event interface: new PopStateEvent(&quot;popstate&quot;, { data: {} }) must inherit property &quot;target&quot; with the proper type (1) 
</span><span class="cx"> PASS Event interface: new PopStateEvent(&quot;popstate&quot;, { data: {} }) must inherit property &quot;currentTarget&quot; with the proper type (2) 
</span><span class="lines">@@ -4360,7 +4360,7 @@
</span><span class="cx"> PASS MessageEvent interface object name 
</span><span class="cx"> PASS MessageEvent interface: existence and properties of interface prototype object 
</span><span class="cx"> PASS MessageEvent interface: existence and properties of interface prototype object's &quot;constructor&quot; property 
</span><del>-FAIL MessageEvent interface: attribute data assert_true: The prototype object must have a property &quot;data&quot; expected true got false
</del><ins>+FAIL MessageEvent interface: attribute data assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</ins><span class="cx"> FAIL MessageEvent interface: attribute origin assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</span><span class="cx"> FAIL MessageEvent interface: attribute lastEventId assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</span><span class="cx"> FAIL MessageEvent interface: attribute source assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</span></span></pre></div>
<a id="trunkLayoutTestsinspectormodelremoteobjectgetpropertiesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/inspector/model/remote-object-get-properties-expected.txt (195968 => 195969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector/model/remote-object-get-properties-expected.txt        2016-02-01 19:05:43 UTC (rev 195968)
+++ trunk/LayoutTests/inspector/model/remote-object-get-properties-expected.txt        2016-02-01 19:42:14 UTC (rev 195969)
</span><span class="lines">@@ -37,11 +37,9 @@
</span><span class="cx"> description: Event
</span><span class="cx"> 
</span><span class="cx"> OWN PROPERTIES:
</span><del>-    clipboardData
</del><span class="cx">     __proto__
</span><span class="cx"> 
</span><span class="cx"> DISPLAYABLE PROPERTIES:
</span><del>-    clipboardData
</del><span class="cx">     type
</span><span class="cx">     target
</span><span class="cx">     currentTarget
</span><span class="lines">@@ -53,10 +51,10 @@
</span><span class="cx">     srcElement
</span><span class="cx">     returnValue
</span><span class="cx">     cancelBubble
</span><ins>+    clipboardData
</ins><span class="cx">     __proto__
</span><span class="cx"> 
</span><span class="cx"> ALL PROPERTIES:
</span><del>-    clipboardData
</del><span class="cx">     constructor
</span><span class="cx">     type
</span><span class="cx">     target
</span><span class="lines">@@ -69,6 +67,7 @@
</span><span class="cx">     srcElement
</span><span class="cx">     returnValue
</span><span class="cx">     cancelBubble
</span><ins>+    clipboardData
</ins><span class="cx">     NONE
</span><span class="cx">     CAPTURING_PHASE
</span><span class="cx">     AT_TARGET
</span></span></pre></div>
<a id="trunkLayoutTestsjsdomdomattributesonmismatchtypeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/js/dom/dom-attributes-on-mismatch-type-expected.txt (195968 => 195969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/js/dom/dom-attributes-on-mismatch-type-expected.txt        2016-02-01 19:05:43 UTC (rev 195968)
+++ trunk/LayoutTests/js/dom/dom-attributes-on-mismatch-type-expected.txt        2016-02-01 19:42:14 UTC (rev 195969)
</span><span class="lines">@@ -3,7 +3,7 @@
</span><span class="cx"> On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-PASS objectWithDocumentAsPrototype.all is undefined.
</del><ins>+PASS objectWithDocumentAsPrototype.all threw exception TypeError: The HTMLDocument.all getter can only be used on instances of HTMLDocument.
</ins><span class="cx"> See what happens if we put the anchor prototype on a div
</span><span class="cx"> PASS testDiv instanceof HTMLAnchorElement is true
</span><span class="cx"> PASS testDiv.href threw exception TypeError: The HTMLAnchorElement.href getter can only be used on instances of HTMLAnchorElement.
</span></span></pre></div>
<a id="trunkLayoutTestsjsdomdomattributesonmismatchtypehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/js/dom/dom-attributes-on-mismatch-type.html (195968 => 195969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/js/dom/dom-attributes-on-mismatch-type.html        2016-02-01 19:05:43 UTC (rev 195968)
+++ trunk/LayoutTests/js/dom/dom-attributes-on-mismatch-type.html        2016-02-01 19:42:14 UTC (rev 195969)
</span><span class="lines">@@ -12,7 +12,7 @@
</span><span class="cx">         var testDiv = document.getElementById(&quot;testDiv&quot;);
</span><span class="cx">         var testAnchor = document.getElementById(&quot;testAnchor&quot;);
</span><span class="cx">         var objectWithDocumentAsPrototype = { __proto__: document };
</span><del>-        shouldBeUndefined(&quot;objectWithDocumentAsPrototype.all&quot;);
</del><ins>+        shouldThrow(&quot;objectWithDocumentAsPrototype.all&quot;);
</ins><span class="cx">         debug(&quot;See what happens if we put the anchor prototype on a div&quot;);
</span><span class="cx">         testDiv.__proto__ = testAnchor.__proto__;
</span><span class="cx">         shouldBeTrue(&quot;testDiv instanceof HTMLAnchorElement&quot;)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacinspectormodelremoteobjectexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/inspector/model/remote-object-expected.txt (195968 => 195969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/inspector/model/remote-object-expected.txt        2016-02-01 19:05:43 UTC (rev 195968)
+++ trunk/LayoutTests/platform/mac/inspector/model/remote-object-expected.txt        2016-02-01 19:42:14 UTC (rev 195969)
</span><span class="lines">@@ -1596,12 +1596,6 @@
</span><span class="cx">     &quot;_properties&quot;: [
</span><span class="cx">       {
</span><span class="cx">         &quot;_listeners&quot;: null,
</span><del>-        &quot;_name&quot;: &quot;clipboardData&quot;,
-        &quot;_type&quot;: &quot;undefined&quot;,
-        &quot;_value&quot;: &quot;undefined&quot;
-      },
-      {
-        &quot;_listeners&quot;: null,
</del><span class="cx">         &quot;_name&quot;: &quot;type&quot;,
</span><span class="cx">         &quot;_type&quot;: &quot;string&quot;,
</span><span class="cx">         &quot;_value&quot;: &quot;load&quot;
</span><span class="lines">@@ -1624,6 +1618,12 @@
</span><span class="cx">         &quot;_name&quot;: &quot;eventPhase&quot;,
</span><span class="cx">         &quot;_type&quot;: &quot;number&quot;,
</span><span class="cx">         &quot;_value&quot;: &quot;2&quot;
</span><ins>+      },
+      {
+        &quot;_listeners&quot;: null,
+        &quot;_name&quot;: &quot;bubbles&quot;,
+        &quot;_type&quot;: &quot;boolean&quot;,
+        &quot;_value&quot;: &quot;false&quot;
</ins><span class="cx">       }
</span><span class="cx">     ],
</span><span class="cx">     &quot;_entries&quot;: null
</span><span class="lines">@@ -1905,33 +1905,33 @@
</span><span class="cx">     &quot;_properties&quot;: [
</span><span class="cx">       {
</span><span class="cx">         &quot;_listeners&quot;: null,
</span><del>-        &quot;_name&quot;: &quot;selectionStart&quot;,
-        &quot;_type&quot;: &quot;number&quot;,
-        &quot;_value&quot;: &quot;0&quot;
</del><ins>+        &quot;_name&quot;: &quot;accept&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;&quot;
</ins><span class="cx">       },
</span><span class="cx">       {
</span><span class="cx">         &quot;_listeners&quot;: null,
</span><del>-        &quot;_name&quot;: &quot;selectionEnd&quot;,
-        &quot;_type&quot;: &quot;number&quot;,
-        &quot;_value&quot;: &quot;0&quot;
</del><ins>+        &quot;_name&quot;: &quot;alt&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;&quot;
</ins><span class="cx">       },
</span><span class="cx">       {
</span><span class="cx">         &quot;_listeners&quot;: null,
</span><del>-        &quot;_name&quot;: &quot;selectionDirection&quot;,
</del><ins>+        &quot;_name&quot;: &quot;autocomplete&quot;,
</ins><span class="cx">         &quot;_type&quot;: &quot;string&quot;,
</span><del>-        &quot;_value&quot;: &quot;none&quot;
</del><ins>+        &quot;_value&quot;: &quot;&quot;
</ins><span class="cx">       },
</span><span class="cx">       {
</span><span class="cx">         &quot;_listeners&quot;: null,
</span><del>-        &quot;_name&quot;: &quot;accept&quot;,
-        &quot;_type&quot;: &quot;string&quot;,
-        &quot;_value&quot;: &quot;&quot;
</del><ins>+        &quot;_name&quot;: &quot;autofocus&quot;,
+        &quot;_type&quot;: &quot;boolean&quot;,
+        &quot;_value&quot;: &quot;false&quot;
</ins><span class="cx">       },
</span><span class="cx">       {
</span><span class="cx">         &quot;_listeners&quot;: null,
</span><del>-        &quot;_name&quot;: &quot;alt&quot;,
-        &quot;_type&quot;: &quot;string&quot;,
-        &quot;_value&quot;: &quot;&quot;
</del><ins>+        &quot;_name&quot;: &quot;defaultChecked&quot;,
+        &quot;_type&quot;: &quot;boolean&quot;,
+        &quot;_value&quot;: &quot;false&quot;
</ins><span class="cx">       }
</span><span class="cx">     ],
</span><span class="cx">     &quot;_entries&quot;: null
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (195968 => 195969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-02-01 19:05:43 UTC (rev 195968)
+++ trunk/Source/WebCore/ChangeLog        2016-02-01 19:42:14 UTC (rev 195969)
</span><span class="lines">@@ -1,3 +1,23 @@
</span><ins>+2016-02-01  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Move properties that use custom bindings to the prototype
+        https://bugs.webkit.org/show_bug.cgi?id=153735
+
+        Reviewed by Darin Adler.
+
+        Move properties that use custom bindings to the prototype. Whether a
+        property's bindings code is generated or custom-written should not
+        impact where the property is located.
+
+        No new tests, already covered by existing tests.
+
+        * bindings/js/JSHTMLDocumentCustom.cpp:
+        (WebCore::JSHTMLDocument::getOwnPropertySlot):
+        Add null-check for staticPropHashTable. HTMLDocument no longer has
+        any property on the instance so staticPropHashTable is now null.
+
+        * bindings/scripts/CodeGeneratorJS.pm:
+
</ins><span class="cx"> 2016-02-01  Jer Noble  &lt;jer.noble@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         REGRESSION(r195770): Use-after-free in ResourceLoaderOptions::cachingPolicy
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSHTMLDocumentCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSHTMLDocumentCustom.cpp (195968 => 195969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSHTMLDocumentCustom.cpp        2016-02-01 19:05:43 UTC (rev 195968)
+++ trunk/Source/WebCore/bindings/js/JSHTMLDocumentCustom.cpp        2016-02-01 19:42:14 UTC (rev 195969)
</span><span class="lines">@@ -71,9 +71,11 @@
</span><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (const HashTableValue* entry = JSHTMLDocument::info()-&gt;staticPropHashTable-&gt;entry(propertyName)) {
-        slot.setCacheableCustom(thisObject, entry-&gt;attributes(), entry-&gt;propertyGetter());
-        return true;
</del><ins>+    if (auto* table = JSHTMLDocument::info()-&gt;staticPropHashTable) {
+        if (const HashTableValue* entry = table-&gt;entry(propertyName)) {
+            slot.setCacheableCustom(thisObject, entry-&gt;attributes(), entry-&gt;propertyGetter());
+            return true;
+        }
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return Base::getOwnPropertySlot(thisObject, exec, propertyName, slot);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (195968 => 195969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-02-01 19:05:43 UTC (rev 195968)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-02-01 19:42:14 UTC (rev 195969)
</span><span class="lines">@@ -704,8 +704,6 @@
</span><span class="cx"> 
</span><span class="cx">     return 1 if InterfaceRequiresAttributesOnInstance($interface);
</span><span class="cx">     return 1 if $attribute-&gt;signature-&gt;type =~ /Constructor$/;
</span><del>-    return 1 if HasCustomGetter($attribute-&gt;signature-&gt;extendedAttributes);
-    return 1 if HasCustomSetter($attribute-&gt;signature-&gt;extendedAttributes);
</del><span class="cx"> 
</span><span class="cx">     # [Unforgeable] attributes should be on the instance.
</span><span class="cx">     # https://heycam.github.io/webidl/#Unforgeable
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestInterfacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp (195968 => 195969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp        2016-02-01 19:05:43 UTC (rev 195968)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp        2016-02-01 19:42:14 UTC (rev 195969)
</span><span class="lines">@@ -151,31 +151,6 @@
</span><span class="cx"> 
</span><span class="cx"> typedef JSDOMConstructor&lt;JSTestInterface&gt; JSTestInterfaceConstructor;
</span><span class="cx"> 
</span><del>-/* Hash table */
-
-static const struct CompactHashIndex JSTestInterfaceTableIndex[4] = {
-    { -1, -1 },
-    { 0, -1 },
-    { -1, -1 },
-    { 1, -1 },
-};
-
-
-static const HashTableValue JSTestInterfaceTableValues[] =
-{
-#if ENABLE(Condition22) || ENABLE(Condition23)
-    { &quot;implementsStr3&quot;, DontDelete | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestInterfaceImplementsStr3), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestInterfaceImplementsStr3) } },
-#else
-    { 0, 0, NoIntrinsic, { 0, 0 } },
-#endif
-#if ENABLE(Condition11) || ENABLE(Condition12)
-    { &quot;supplementalStr3&quot;, DontDelete | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestInterfaceSupplementalStr3), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestInterfaceSupplementalStr3) } },
-#else
-    { 0, 0, NoIntrinsic, { 0, 0 } },
-#endif
-};
-
-static const HashTable JSTestInterfaceTable = { 2, 3, true, JSTestInterfaceTableValues, JSTestInterfaceTableIndex };
</del><span class="cx"> /* Hash table for constructor */
</span><span class="cx"> 
</span><span class="cx"> static const HashTableValue JSTestInterfaceConstructorTableValues[] =
</span><span class="lines">@@ -306,6 +281,11 @@
</span><span class="cx">     { 0, 0, NoIntrinsic, { 0, 0 } },
</span><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><ins>+    { &quot;implementsStr3&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestInterfaceImplementsStr3), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestInterfaceImplementsStr3) } },
+#else
+    { 0, 0, NoIntrinsic, { 0, 0 } },
+#endif
+#if ENABLE(Condition22) || ENABLE(Condition23)
</ins><span class="cx">     { &quot;implementsNode&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestInterfaceImplementsNode), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestInterfaceImplementsNode) } },
</span><span class="cx"> #else
</span><span class="cx">     { 0, 0, NoIntrinsic, { 0, 0 } },
</span><span class="lines">@@ -321,6 +301,11 @@
</span><span class="cx">     { 0, 0, NoIntrinsic, { 0, 0 } },
</span><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><ins>+    { &quot;supplementalStr3&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestInterfaceSupplementalStr3), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestInterfaceSupplementalStr3) } },
+#else
+    { 0, 0, NoIntrinsic, { 0, 0 } },
+#endif
+#if ENABLE(Condition11) || ENABLE(Condition12)
</ins><span class="cx">     { &quot;supplementalNode&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestInterfaceSupplementalNode), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestInterfaceSupplementalNode) } },
</span><span class="cx"> #else
</span><span class="cx">     { 0, 0, NoIntrinsic, { 0, 0 } },
</span><span class="lines">@@ -395,7 +380,7 @@
</span><span class="cx">     reifyStaticProperties(vm, JSTestInterfacePrototypeTableValues, *this);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-const ClassInfo JSTestInterface::s_info = { &quot;TestInterface&quot;, &amp;Base::s_info, &amp;JSTestInterfaceTable, CREATE_METHOD_TABLE(JSTestInterface) };
</del><ins>+const ClassInfo JSTestInterface::s_info = { &quot;TestInterface&quot;, &amp;Base::s_info, 0, CREATE_METHOD_TABLE(JSTestInterface) };
</ins><span class="cx"> 
</span><span class="cx"> JSTestInterface::JSTestInterface(Structure* structure, JSDOMGlobalObject&amp; globalObject, Ref&lt;TestInterface&gt;&amp;&amp; impl)
</span><span class="cx">     : JSDOMWrapper&lt;TestInterface&gt;(structure, globalObject, WTFMove(impl))
</span><span class="lines">@@ -418,15 +403,6 @@
</span><span class="cx">     thisObject-&gt;JSTestInterface::~JSTestInterface();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool JSTestInterface::getOwnPropertySlot(JSObject* object, ExecState* state, PropertyName propertyName, PropertySlot&amp; slot)
-{
-    auto* thisObject = jsCast&lt;JSTestInterface*&gt;(object);
-    ASSERT_GC_OBJECT_INHERITS(thisObject, info());
-    if (getStaticValueSlot&lt;JSTestInterface, Base&gt;(state, JSTestInterfaceTable, thisObject, propertyName, slot))
-        return true;
-    return false;
-}
-
</del><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><span class="cx"> EncodedJSValue jsTestInterfaceConstructorImplementsStaticReadOnlyAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</span><span class="cx"> {
</span><span class="lines">@@ -489,7 +465,9 @@
</span><span class="cx">     UNUSED_PARAM(state);
</span><span class="cx">     UNUSED_PARAM(slotBase);
</span><span class="cx">     UNUSED_PARAM(thisValue);
</span><del>-    auto* castedThis = jsCast&lt;JSTestInterface*&gt;(slotBase);
</del><ins>+    JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(JSValue::decode(thisValue));
+    if (UNLIKELY(!castedThis))
+        return throwGetterTypeError(*state, &quot;TestInterface&quot;, &quot;implementsStr3&quot;);
</ins><span class="cx">     return JSValue::encode(castedThis-&gt;implementsStr3(*state));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -573,7 +551,9 @@
</span><span class="cx">     UNUSED_PARAM(state);
</span><span class="cx">     UNUSED_PARAM(slotBase);
</span><span class="cx">     UNUSED_PARAM(thisValue);
</span><del>-    auto* castedThis = jsCast&lt;JSTestInterface*&gt;(slotBase);
</del><ins>+    JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(JSValue::decode(thisValue));
+    if (UNLIKELY(!castedThis))
+        return throwGetterTypeError(*state, &quot;TestInterface&quot;, &quot;supplementalStr3&quot;);
</ins><span class="cx">     return JSValue::encode(castedThis-&gt;supplementalStr3(*state));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -673,10 +653,11 @@
</span><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     UNUSED_PARAM(baseObject);
</span><del>-    UNUSED_PARAM(thisValue);
-    auto* castedThis = jsCast&lt;JSTestInterface*&gt;(baseObject);
-    UNUSED_PARAM(thisValue);
-    UNUSED_PARAM(state);
</del><ins>+    JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(JSValue::decode(thisValue));
+    if (UNLIKELY(!castedThis)) {
+        throwSetterTypeError(*state, &quot;TestInterface&quot;, &quot;implementsStr3&quot;);
+        return;
+    }
</ins><span class="cx">     castedThis-&gt;setImplementsStr3(*state, value);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -738,10 +719,11 @@
</span><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     UNUSED_PARAM(baseObject);
</span><del>-    UNUSED_PARAM(thisValue);
-    auto* castedThis = jsCast&lt;JSTestInterface*&gt;(baseObject);
-    UNUSED_PARAM(thisValue);
-    UNUSED_PARAM(state);
</del><ins>+    JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(JSValue::decode(thisValue));
+    if (UNLIKELY(!castedThis)) {
+        throwSetterTypeError(*state, &quot;TestInterface&quot;, &quot;supplementalStr3&quot;);
+        return;
+    }
</ins><span class="cx">     castedThis-&gt;setSupplementalStr3(*state, value);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestInterfaceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h (195968 => 195969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h        2016-02-01 19:05:43 UTC (rev 195968)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h        2016-02-01 19:42:14 UTC (rev 195969)
</span><span class="lines">@@ -42,7 +42,6 @@
</span><span class="cx">     static JSC::JSObject* createPrototype(JSC::VM&amp;, JSC::JSGlobalObject*);
</span><span class="cx">     static JSC::JSObject* getPrototype(JSC::VM&amp;, JSC::JSGlobalObject*);
</span><span class="cx">     static TestInterface* toWrapped(JSC::JSValue);
</span><del>-    static bool getOwnPropertySlot(JSC::JSObject*, JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&amp;);
</del><span class="cx">     static void put(JSC::JSCell*, JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&amp;);
</span><span class="cx">     static void putByIndex(JSC::JSCell*, JSC::ExecState*, unsigned propertyName, JSC::JSValue, bool shouldThrow);
</span><span class="cx">     bool putDelegate(JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&amp;);
</span><span class="lines">@@ -78,8 +77,6 @@
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><span class="cx">     JSC::JSValue supplementalMethod3(JSC::ExecState&amp;);
</span><span class="cx"> #endif
</span><del>-public:
-    static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | Base::StructureFlags;
</del><span class="cx"> protected:
</span><span class="cx">     JSTestInterface(JSC::Structure*, JSDOMGlobalObject&amp;, Ref&lt;TestInterface&gt;&amp;&amp;);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestJSBuiltinConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp (195968 => 195969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp        2016-02-01 19:05:43 UTC (rev 195968)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp        2016-02-01 19:42:14 UTC (rev 195969)
</span><span class="lines">@@ -70,23 +70,6 @@
</span><span class="cx"> 
</span><span class="cx"> typedef JSBuiltinConstructor&lt;JSTestJSBuiltinConstructor&gt; JSTestJSBuiltinConstructorConstructor;
</span><span class="cx"> 
</span><del>-/* Hash table for constructor */
-
-static const struct CompactHashIndex JSTestJSBuiltinConstructorTableIndex[4] = {
-    { 0, -1 },
-    { -1, -1 },
-    { 1, -1 },
-    { -1, -1 },
-};
-
-
-static const HashTableValue JSTestJSBuiltinConstructorTableValues[] =
-{
-    { &quot;testAttributeCustom&quot;, DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestJSBuiltinConstructorTestAttributeCustom), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) } },
-    { &quot;testAttributeRWCustom&quot;, DontDelete | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestJSBuiltinConstructorTestAttributeRWCustom), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestJSBuiltinConstructorTestAttributeRWCustom) } },
-};
-
-static const HashTable JSTestJSBuiltinConstructorTable = { 2, 3, true, JSTestJSBuiltinConstructorTableValues, JSTestJSBuiltinConstructorTableIndex };
</del><span class="cx"> template&lt;&gt; void JSTestJSBuiltinConstructorConstructor::initializeProperties(VM&amp; vm, JSDOMGlobalObject&amp; globalObject)
</span><span class="cx"> {
</span><span class="cx">     putDirect(vm, vm.propertyNames-&gt;prototype, JSTestJSBuiltinConstructor::getPrototype(vm, &amp;globalObject), DontDelete | ReadOnly | DontEnum);
</span><span class="lines">@@ -107,6 +90,8 @@
</span><span class="cx"> {
</span><span class="cx">     { &quot;constructor&quot;, DontEnum, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestJSBuiltinConstructorConstructor), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestJSBuiltinConstructorConstructor) } },
</span><span class="cx">     { &quot;testAttribute&quot;, Accessor | Builtin, NoIntrinsic, { (intptr_t)static_cast&lt;BuiltinGenerator&gt;(testJSBuiltinConstructorTestAttributeCodeGenerator), (intptr_t) (setTestJSBuiltinConstructorTestAttributeCodeGenerator) } },
</span><ins>+    { &quot;testAttributeCustom&quot;, ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestJSBuiltinConstructorTestAttributeCustom), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) } },
+    { &quot;testAttributeRWCustom&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestJSBuiltinConstructorTestAttributeRWCustom), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestJSBuiltinConstructorTestAttributeRWCustom) } },
</ins><span class="cx">     { &quot;testFunction&quot;, JSC::Builtin, NoIntrinsic, { (intptr_t)static_cast&lt;BuiltinGenerator&gt;(testJSBuiltinConstructorTestFunctionCodeGenerator), (intptr_t) (0) } },
</span><span class="cx">     { &quot;testCustomFunction&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestJSBuiltinConstructorPrototypeFunctionTestCustomFunction), (intptr_t) (0) } },
</span><span class="cx"> };
</span><span class="lines">@@ -119,7 +104,7 @@
</span><span class="cx">     reifyStaticProperties(vm, JSTestJSBuiltinConstructorPrototypeTableValues, *this);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-const ClassInfo JSTestJSBuiltinConstructor::s_info = { &quot;TestJSBuiltinConstructor&quot;, &amp;Base::s_info, &amp;JSTestJSBuiltinConstructorTable, CREATE_METHOD_TABLE(JSTestJSBuiltinConstructor) };
</del><ins>+const ClassInfo JSTestJSBuiltinConstructor::s_info = { &quot;TestJSBuiltinConstructor&quot;, &amp;Base::s_info, 0, CREATE_METHOD_TABLE(JSTestJSBuiltinConstructor) };
</ins><span class="cx"> 
</span><span class="cx"> JSTestJSBuiltinConstructor::JSTestJSBuiltinConstructor(Structure* structure, JSDOMGlobalObject&amp; globalObject)
</span><span class="cx">     : JSDOMObject(structure, globalObject) { }
</span><span class="lines">@@ -140,21 +125,14 @@
</span><span class="cx">     thisObject-&gt;JSTestJSBuiltinConstructor::~JSTestJSBuiltinConstructor();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool JSTestJSBuiltinConstructor::getOwnPropertySlot(JSObject* object, ExecState* state, PropertyName propertyName, PropertySlot&amp; slot)
-{
-    auto* thisObject = jsCast&lt;JSTestJSBuiltinConstructor*&gt;(object);
-    ASSERT_GC_OBJECT_INHERITS(thisObject, info());
-    if (getStaticValueSlot&lt;JSTestJSBuiltinConstructor, Base&gt;(state, JSTestJSBuiltinConstructorTable, thisObject, propertyName, slot))
-        return true;
-    return false;
-}
-
</del><span class="cx"> EncodedJSValue jsTestJSBuiltinConstructorTestAttributeCustom(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</span><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><span class="cx">     UNUSED_PARAM(slotBase);
</span><span class="cx">     UNUSED_PARAM(thisValue);
</span><del>-    auto* castedThis = jsCast&lt;JSTestJSBuiltinConstructor*&gt;(slotBase);
</del><ins>+    JSTestJSBuiltinConstructor* castedThis = jsDynamicCast&lt;JSTestJSBuiltinConstructor*&gt;(JSValue::decode(thisValue));
+    if (UNLIKELY(!castedThis))
+        return throwGetterTypeError(*state, &quot;TestJSBuiltinConstructor&quot;, &quot;testAttributeCustom&quot;);
</ins><span class="cx">     return JSValue::encode(castedThis-&gt;testAttributeCustom(*state));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -164,7 +142,9 @@
</span><span class="cx">     UNUSED_PARAM(state);
</span><span class="cx">     UNUSED_PARAM(slotBase);
</span><span class="cx">     UNUSED_PARAM(thisValue);
</span><del>-    auto* castedThis = jsCast&lt;JSTestJSBuiltinConstructor*&gt;(slotBase);
</del><ins>+    JSTestJSBuiltinConstructor* castedThis = jsDynamicCast&lt;JSTestJSBuiltinConstructor*&gt;(JSValue::decode(thisValue));
+    if (UNLIKELY(!castedThis))
+        return throwGetterTypeError(*state, &quot;TestJSBuiltinConstructor&quot;, &quot;testAttributeRWCustom&quot;);
</ins><span class="cx">     return JSValue::encode(castedThis-&gt;testAttributeRWCustom(*state));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -194,10 +174,11 @@
</span><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     UNUSED_PARAM(baseObject);
</span><del>-    UNUSED_PARAM(thisValue);
-    auto* castedThis = jsCast&lt;JSTestJSBuiltinConstructor*&gt;(baseObject);
-    UNUSED_PARAM(thisValue);
-    UNUSED_PARAM(state);
</del><ins>+    JSTestJSBuiltinConstructor* castedThis = jsDynamicCast&lt;JSTestJSBuiltinConstructor*&gt;(JSValue::decode(thisValue));
+    if (UNLIKELY(!castedThis)) {
+        throwSetterTypeError(*state, &quot;TestJSBuiltinConstructor&quot;, &quot;testAttributeRWCustom&quot;);
+        return;
+    }
</ins><span class="cx">     castedThis-&gt;setTestAttributeRWCustom(*state, value);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestJSBuiltinConstructorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.h (195968 => 195969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.h        2016-02-01 19:05:43 UTC (rev 195968)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.h        2016-02-01 19:42:14 UTC (rev 195969)
</span><span class="lines">@@ -37,7 +37,6 @@
</span><span class="cx"> 
</span><span class="cx">     static JSC::JSObject* createPrototype(JSC::VM&amp;, JSC::JSGlobalObject*);
</span><span class="cx">     static JSC::JSObject* getPrototype(JSC::VM&amp;, JSC::JSGlobalObject*);
</span><del>-    static bool getOwnPropertySlot(JSC::JSObject*, JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&amp;);
</del><span class="cx">     static void destroy(JSC::JSCell*);
</span><span class="cx"> 
</span><span class="cx">     DECLARE_INFO;
</span><span class="lines">@@ -58,8 +57,6 @@
</span><span class="cx"> 
</span><span class="cx">     // Custom functions
</span><span class="cx">     JSC::JSValue testCustomFunction(JSC::ExecState&amp;);
</span><del>-public:
-    static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | Base::StructureFlags;
</del><span class="cx"> protected:
</span><span class="cx">     JSTestJSBuiltinConstructor(JSC::Structure*, JSDOMGlobalObject&amp;);
</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 (195968 => 195969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2016-02-01 19:05:43 UTC (rev 195968)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2016-02-01 19:42:14 UTC (rev 195969)
</span><span class="lines">@@ -364,30 +364,29 @@
</span><span class="cx"> /* Hash table */
</span><span class="cx"> 
</span><span class="cx"> static const struct CompactHashIndex JSTestObjTableIndex[17] = {
</span><del>-    { 5, -1 },
</del><ins>+    { 4, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 4, -1 },
</del><ins>+    { 3, -1 },
</ins><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 2, -1 },
</del><ins>+    { 1, -1 },
</ins><span class="cx">     { 0, 16 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 1, -1 },
</del><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><span class="cx">     { -1, -1 },
</span><del>-    { 3, -1 },
</del><ins>+    { -1, -1 },
+    { 2, -1 },
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> static const HashTableValue JSTestObjTableValues[] =
</span><span class="cx"> {
</span><span class="cx">     { &quot;TestSubObjEnabledBySetting&quot;, DontEnum, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjTestSubObjEnabledBySettingConstructor), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjTestSubObjEnabledBySettingConstructor) } },
</span><del>-    { &quot;customAttr&quot;, DontDelete | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCustomAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjCustomAttr) } },
</del><span class="cx"> #if ENABLE(Condition1)
</span><span class="cx">     { &quot;conditionalAttr4&quot;, DontEnum, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjConditionalAttr4Constructor), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjConditionalAttr4Constructor) } },
</span><span class="cx"> #else
</span><span class="lines">@@ -406,7 +405,7 @@
</span><span class="cx">     { &quot;contentDocument&quot;, DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjContentDocument), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) } },
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-static const HashTable JSTestObjTable = { 6, 15, true, JSTestObjTableValues, JSTestObjTableIndex };
</del><ins>+static const HashTable JSTestObjTable = { 5, 15, true, JSTestObjTableValues, JSTestObjTableIndex };
</ins><span class="cx"> /* Hash table for constructor */
</span><span class="cx"> 
</span><span class="cx"> static const HashTableValue JSTestObjConstructorTableValues[] =
</span><span class="lines">@@ -525,6 +524,7 @@
</span><span class="cx">     { &quot;stringAttrWithGetterException&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjStringAttrWithGetterException), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjStringAttrWithGetterException) } },
</span><span class="cx">     { &quot;stringAttrWithSetterException&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjStringAttrWithSetterException), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjStringAttrWithSetterException) } },
</span><span class="cx">     { &quot;strictTypeCheckingAttribute&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjStrictTypeCheckingAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjStrictTypeCheckingAttribute) } },
</span><ins>+    { &quot;customAttr&quot;, CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCustomAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjCustomAttr) } },
</ins><span class="cx"> #if ENABLE(Condition4)
</span><span class="cx">     { &quot;jsBuiltinAttribute&quot;, Accessor | Builtin, NoIntrinsic, { (intptr_t)static_cast&lt;BuiltinGenerator&gt;(testObjJsBuiltinAttributeCodeGenerator), (intptr_t) (setTestObjJsBuiltinAttributeCodeGenerator) } },
</span><span class="cx"> #else
</span><span class="lines">@@ -1284,7 +1284,9 @@
</span><span class="cx">     UNUSED_PARAM(state);
</span><span class="cx">     UNUSED_PARAM(slotBase);
</span><span class="cx">     UNUSED_PARAM(thisValue);
</span><del>-    auto* castedThis = jsCast&lt;JSTestObj*&gt;(slotBase);
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
+    if (UNLIKELY(!castedThis))
+        return throwGetterTypeError(*state, &quot;TestObj&quot;, &quot;customAttr&quot;);
</ins><span class="cx">     return JSValue::encode(castedThis-&gt;customAttr(*state));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -2416,10 +2418,11 @@
</span><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     UNUSED_PARAM(baseObject);
</span><del>-    UNUSED_PARAM(thisValue);
-    auto* castedThis = jsCast&lt;JSTestObj*&gt;(baseObject);
-    UNUSED_PARAM(thisValue);
-    UNUSED_PARAM(state);
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
+    if (UNLIKELY(!castedThis)) {
+        throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;customAttr&quot;);
+        return;
+    }
</ins><span class="cx">     castedThis-&gt;setCustomAttr(*state, value);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>