<!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>[195798] 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/195798">195798</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2016-01-28 19:42:43 -0800 (Thu, 28 Jan 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Move attributes to the prototype for List types / and types with indexed/named property getters
https://bugs.webkit.org/show_bug.cgi?id=153599

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline W3C tests now that more checks are passing.

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

Source/WebCore:

Move attributes to the prototype for List types / and types with indexed/named property getters.

We used to keep them on the instance because:
1. Our GetOwnProperty lookup used to be in incorrect order for interfaces with indexed/named property getters.
-&gt; This was fixed recently and we now match the specification and other browsers.
2. This used to regress performance when iterating over those list types
-&gt; Local testing seems to show that this is no longer a regression (tested Speedometer and various related Bindings PerformanceTests).

No new tests, already covered by existing tests.

* bindings/scripts/CodeGeneratorJS.pm:
(InterfaceRequiresAttributesOnInstance): Deleted.
(AttributeShouldBeOnInstanceForCompatibility): Deleted.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsimportedw3cChangeLog">trunk/LayoutTests/imported/w3c/ChangeLog</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="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsimportedw3cChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/ChangeLog (195797 => 195798)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/ChangeLog        2016-01-29 03:36:18 UTC (rev 195797)
+++ trunk/LayoutTests/imported/w3c/ChangeLog        2016-01-29 03:42:43 UTC (rev 195798)
</span><span class="lines">@@ -1,5 +1,17 @@
</span><span class="cx"> 2016-01-28  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Move attributes to the prototype for List types / and types with indexed/named property getters
+        https://bugs.webkit.org/show_bug.cgi?id=153599
+
+        Reviewed by Darin Adler.
+
+        Rebaseline W3C tests now that more checks are passing.
+
+        * web-platform-tests/dom/interfaces-expected.txt:
+        * web-platform-tests/html/dom/interfaces-expected.txt:
+
+2016-01-28  Chris Dumez  &lt;cdumez@apple.com&gt;
+
</ins><span class="cx">         EventHandler IDL attributes should be enumerable
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=153595
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdominterfacesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces-expected.txt (195797 => 195798)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces-expected.txt        2016-01-29 03:36:18 UTC (rev 195797)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces-expected.txt        2016-01-29 03:42:43 UTC (rev 195798)
</span><span class="lines">@@ -1576,5 +1576,5 @@
</span><span class="cx"> PASS DOMSettableTokenList interface object name 
</span><span class="cx"> PASS DOMSettableTokenList interface: existence and properties of interface prototype object 
</span><span class="cx"> FAIL DOMSettableTokenList interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_own_property: DOMSettableTokenList.prototype does not have own property &quot;constructor&quot; expected property &quot;constructor&quot; missing
</span><del>-FAIL DOMSettableTokenList interface: attribute value assert_true: The prototype object must have a property &quot;value&quot; expected true got false
</del><ins>+FAIL DOMSettableTokenList interface: attribute value assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</ins><span class="cx"> 
</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 (195797 => 195798)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt        2016-01-29 03:36:18 UTC (rev 195797)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt        2016-01-29 03:42:43 UTC (rev 195798)
</span><span class="lines">@@ -128,7 +128,7 @@
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property &quot;URL&quot; with the proper type (1) 
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property &quot;documentURI&quot; with the proper type (2) 
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property &quot;origin&quot; with the proper type (3) 
</span><del>-FAIL Document interface: iframe.contentDocument must inherit property &quot;compatMode&quot; with the proper type (4) assert_inherits: property &quot;compatMode&quot; found on object expected in prototype chain
</del><ins>+PASS Document interface: iframe.contentDocument must inherit property &quot;compatMode&quot; with the proper type (4) 
</ins><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property &quot;characterSet&quot; with the proper type (5) 
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property &quot;charset&quot; with the proper type (6) 
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property &quot;inputEncoding&quot; with the proper type (7) 
</span><span class="lines">@@ -205,15 +205,15 @@
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property &quot;lastModified&quot; with the proper type (38) 
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property &quot;readyState&quot; with the proper type (39) 
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property &quot;title&quot; with the proper type (41) 
</span><del>-FAIL Document interface: iframe.contentDocument must inherit property &quot;dir&quot; with the proper type (42) assert_inherits: property &quot;dir&quot; found on object expected in prototype chain
</del><ins>+PASS Document interface: iframe.contentDocument must inherit property &quot;dir&quot; with the proper type (42) 
</ins><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property &quot;body&quot; with the proper type (43) 
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property &quot;head&quot; with the proper type (44) 
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property &quot;images&quot; with the proper type (45) 
</span><del>-FAIL Document interface: iframe.contentDocument must inherit property &quot;embeds&quot; with the proper type (46) assert_inherits: property &quot;embeds&quot; found on object expected in prototype chain
-FAIL Document interface: iframe.contentDocument must inherit property &quot;plugins&quot; with the proper type (47) assert_inherits: property &quot;plugins&quot; found on object expected in prototype chain
</del><ins>+PASS Document interface: iframe.contentDocument must inherit property &quot;embeds&quot; with the proper type (46) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;plugins&quot; with the proper type (47) 
</ins><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property &quot;links&quot; with the proper type (48) 
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property &quot;forms&quot; with the proper type (49) 
</span><del>-FAIL Document interface: iframe.contentDocument must inherit property &quot;scripts&quot; with the proper type (50) assert_inherits: property &quot;scripts&quot; found on object expected in prototype chain
</del><ins>+PASS Document interface: iframe.contentDocument must inherit property &quot;scripts&quot; with the proper type (50) 
</ins><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property &quot;getElementsByName&quot; with the proper type (51) 
</span><span class="cx"> FAIL Document interface: calling getElementsByName(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">@@ -234,7 +234,7 @@
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property &quot;defaultView&quot; with the proper type (60) 
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property &quot;activeElement&quot; with the proper type (61) 
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property &quot;hasFocus&quot; with the proper type (62) 
</span><del>-FAIL Document interface: iframe.contentDocument must inherit property &quot;designMode&quot; with the proper type (63) assert_inherits: property &quot;designMode&quot; found on object expected in prototype chain
</del><ins>+PASS Document interface: iframe.contentDocument must inherit property &quot;designMode&quot; with the proper type (63) 
</ins><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property &quot;execCommand&quot; with the proper type (64) 
</span><span class="cx"> FAIL Document interface: calling execCommand(DOMString,boolean,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">@@ -261,11 +261,11 @@
</span><span class="cx"> }&quot; did not throw
</span><span class="cx"> FAIL Document interface: iframe.contentDocument must inherit property &quot;commands&quot; with the proper type (70) assert_inherits: property &quot;commands&quot; not found in prototype chain
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property &quot;onreadystatechange&quot; with the proper type (71) 
</span><del>-FAIL Document interface: iframe.contentDocument must inherit property &quot;fgColor&quot; with the proper type (72) assert_inherits: property &quot;fgColor&quot; found on object expected in prototype chain
-FAIL Document interface: iframe.contentDocument must inherit property &quot;linkColor&quot; with the proper type (73) assert_inherits: property &quot;linkColor&quot; found on object expected in prototype chain
-FAIL Document interface: iframe.contentDocument must inherit property &quot;vlinkColor&quot; with the proper type (74) assert_inherits: property &quot;vlinkColor&quot; found on object expected in prototype chain
-FAIL Document interface: iframe.contentDocument must inherit property &quot;alinkColor&quot; with the proper type (75) assert_inherits: property &quot;alinkColor&quot; found on object expected in prototype chain
-FAIL Document interface: iframe.contentDocument must inherit property &quot;bgColor&quot; with the proper type (76) assert_inherits: property &quot;bgColor&quot; found on object expected in prototype chain
</del><ins>+PASS Document interface: iframe.contentDocument must inherit property &quot;fgColor&quot; with the proper type (72) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;linkColor&quot; with the proper type (73) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;vlinkColor&quot; with the proper type (74) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;alinkColor&quot; with the proper type (75) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;bgColor&quot; with the proper type (76) 
</ins><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property &quot;anchors&quot; with the proper type (77) 
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property &quot;applets&quot; with the proper type (78) 
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property &quot;clear&quot; with the proper type (79) 
</span><span class="lines">@@ -792,7 +792,7 @@
</span><span class="cx"> PASS RadioNodeList interface object name 
</span><span class="cx"> PASS RadioNodeList interface: existence and properties of interface prototype object 
</span><span class="cx"> FAIL RadioNodeList interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_own_property: RadioNodeList.prototype does not have own property &quot;constructor&quot; expected property &quot;constructor&quot; missing
</span><del>-FAIL RadioNodeList interface: attribute value assert_true: The prototype object must have a property &quot;value&quot; expected true got false
</del><ins>+FAIL RadioNodeList interface: attribute value assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</ins><span class="cx"> FAIL HTMLOptionsCollection interface: existence and properties of interface object assert_equals: class string of HTMLOptionsCollection expected &quot;[object Function]&quot; but got &quot;[object HTMLOptionsCollectionConstructor]&quot;
</span><span class="cx"> PASS HTMLOptionsCollection interface object length 
</span><span class="cx"> PASS HTMLOptionsCollection interface object name 
</span><span class="lines">@@ -801,7 +801,7 @@
</span><span class="cx"> FAIL HTMLOptionsCollection interface: attribute length assert_true: The prototype object must have a property &quot;length&quot; expected true got false
</span><span class="cx"> PASS HTMLOptionsCollection interface: operation add([object Object],[object Object],[object Object],[object Object]) 
</span><span class="cx"> FAIL HTMLOptionsCollection interface: operation remove(long) assert_equals: property has wrong .length expected 1 but got 0
</span><del>-FAIL HTMLOptionsCollection interface: attribute selectedIndex assert_true: The prototype object must have a property &quot;selectedIndex&quot; expected true got false
</del><ins>+FAIL HTMLOptionsCollection interface: attribute selectedIndex assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</ins><span class="cx"> FAIL HTMLOptionsCollection must be primary interface of document.createElement(&quot;select&quot;).options assert_equals: wrong typeof object expected &quot;function&quot; but got &quot;object&quot;
</span><span class="cx"> FAIL Stringification of document.createElement(&quot;select&quot;).options assert_equals: wrong typeof object expected &quot;function&quot; but got &quot;object&quot;
</span><span class="cx"> FAIL HTMLOptionsCollection interface: document.createElement(&quot;select&quot;).options must inherit property &quot;length&quot; with the proper type (0) assert_equals: wrong typeof object expected &quot;function&quot; but got &quot;object&quot;
</span><span class="lines">@@ -2311,17 +2311,17 @@
</span><span class="cx"> FAIL TextTrackList interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_own_property: TextTrackList.prototype does not have own property &quot;constructor&quot; expected property &quot;constructor&quot; missing
</span><span class="cx"> FAIL TextTrackList interface: attribute length assert_true: The prototype object must have a property &quot;length&quot; expected true got false
</span><span class="cx"> PASS TextTrackList interface: operation getTrackById(DOMString) 
</span><del>-FAIL TextTrackList interface: attribute onchange assert_true: The prototype object must have a property &quot;onchange&quot; expected true got false
-FAIL TextTrackList interface: attribute onaddtrack assert_true: The prototype object must have a property &quot;onaddtrack&quot; expected true got false
-FAIL TextTrackList interface: attribute onremovetrack assert_true: The prototype object must have a property &quot;onremovetrack&quot; expected true got false
</del><ins>+FAIL TextTrackList interface: attribute onchange assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
+FAIL TextTrackList interface: attribute onaddtrack assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
+FAIL TextTrackList interface: attribute onremovetrack assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</ins><span class="cx"> PASS TextTrackList must be primary interface of document.createElement(&quot;video&quot;).textTracks 
</span><span class="cx"> PASS Stringification of document.createElement(&quot;video&quot;).textTracks 
</span><span class="cx"> FAIL TextTrackList interface: document.createElement(&quot;video&quot;).textTracks 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><span class="cx"> PASS TextTrackList interface: document.createElement(&quot;video&quot;).textTracks must inherit property &quot;getTrackById&quot; with the proper type (2) 
</span><span class="cx"> PASS TextTrackList interface: calling getTrackById(DOMString) on document.createElement(&quot;video&quot;).textTracks with too few arguments must throw TypeError 
</span><del>-FAIL TextTrackList interface: document.createElement(&quot;video&quot;).textTracks must inherit property &quot;onchange&quot; with the proper type (3) assert_inherits: property &quot;onchange&quot; found on object expected in prototype chain
-FAIL TextTrackList interface: document.createElement(&quot;video&quot;).textTracks must inherit property &quot;onaddtrack&quot; with the proper type (4) assert_inherits: property &quot;onaddtrack&quot; found on object expected in prototype chain
-FAIL TextTrackList interface: document.createElement(&quot;video&quot;).textTracks must inherit property &quot;onremovetrack&quot; with the proper type (5) assert_inherits: property &quot;onremovetrack&quot; found on object expected in prototype chain
</del><ins>+PASS TextTrackList interface: document.createElement(&quot;video&quot;).textTracks must inherit property &quot;onchange&quot; with the proper type (3) 
+PASS TextTrackList interface: document.createElement(&quot;video&quot;).textTracks must inherit property &quot;onaddtrack&quot; with the proper type (4) 
+PASS TextTrackList interface: document.createElement(&quot;video&quot;).textTracks must inherit property &quot;onremovetrack&quot; with the proper type (5) 
</ins><span class="cx"> PASS EventTarget interface: document.createElement(&quot;video&quot;).textTracks must inherit property &quot;addEventListener&quot; with the proper type (0) 
</span><span class="cx"> FAIL EventTarget interface: calling addEventListener(DOMString,EventListener,boolean) on document.createElement(&quot;video&quot;).textTracks 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">@@ -2751,16 +2751,16 @@
</span><span class="cx"> PASS HTMLFormElement interface object name 
</span><span class="cx"> PASS HTMLFormElement interface: existence and properties of interface prototype object 
</span><span class="cx"> FAIL HTMLFormElement interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_own_property: HTMLFormElement.prototype does not have own property &quot;constructor&quot; expected property &quot;constructor&quot; missing
</span><del>-FAIL HTMLFormElement interface: attribute acceptCharset assert_true: The prototype object must have a property &quot;acceptCharset&quot; expected true got false
-FAIL HTMLFormElement interface: attribute action assert_true: The prototype object must have a property &quot;action&quot; expected true got false
-FAIL HTMLFormElement interface: attribute autocomplete assert_true: The prototype object must have a property &quot;autocomplete&quot; expected true got false
-FAIL HTMLFormElement interface: attribute enctype assert_true: The prototype object must have a property &quot;enctype&quot; expected true got false
-FAIL HTMLFormElement interface: attribute encoding assert_true: The prototype object must have a property &quot;encoding&quot; expected true got false
-FAIL HTMLFormElement interface: attribute method assert_true: The prototype object must have a property &quot;method&quot; expected true got false
-FAIL HTMLFormElement interface: attribute name assert_true: The prototype object must have a property &quot;name&quot; expected true got false
-FAIL HTMLFormElement interface: attribute noValidate assert_true: The prototype object must have a property &quot;noValidate&quot; expected true got false
-FAIL HTMLFormElement interface: attribute target assert_true: The prototype object must have a property &quot;target&quot; expected true got false
-FAIL HTMLFormElement interface: attribute elements assert_true: The prototype object must have a property &quot;elements&quot; expected true got false
</del><ins>+FAIL HTMLFormElement interface: attribute acceptCharset assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
+FAIL HTMLFormElement interface: attribute action assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
+FAIL HTMLFormElement interface: attribute autocomplete assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
+FAIL HTMLFormElement interface: attribute enctype assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
+FAIL HTMLFormElement interface: attribute encoding assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
+FAIL HTMLFormElement interface: attribute method assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
+FAIL HTMLFormElement interface: attribute name assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
+FAIL HTMLFormElement interface: attribute noValidate assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
+FAIL HTMLFormElement interface: attribute target assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
+FAIL HTMLFormElement interface: attribute elements assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</ins><span class="cx"> FAIL HTMLFormElement interface: attribute length assert_true: The prototype object must have a property &quot;length&quot; expected true got false
</span><span class="cx"> PASS HTMLFormElement interface: operation submit() 
</span><span class="cx"> PASS HTMLFormElement interface: operation reset() 
</span><span class="lines">@@ -2769,16 +2769,16 @@
</span><span class="cx"> FAIL HTMLFormElement interface: operation requestAutocomplete() assert_own_property: interface prototype object missing non-static operation expected property &quot;requestAutocomplete&quot; missing
</span><span class="cx"> PASS HTMLFormElement must be primary interface of document.createElement(&quot;form&quot;) 
</span><span class="cx"> PASS Stringification of document.createElement(&quot;form&quot;) 
</span><del>-FAIL HTMLFormElement interface: document.createElement(&quot;form&quot;) must inherit property &quot;acceptCharset&quot; with the proper type (0) assert_inherits: property &quot;acceptCharset&quot; found on object expected in prototype chain
-FAIL HTMLFormElement interface: document.createElement(&quot;form&quot;) must inherit property &quot;action&quot; with the proper type (1) assert_inherits: property &quot;action&quot; found on object expected in prototype chain
-FAIL HTMLFormElement interface: document.createElement(&quot;form&quot;) must inherit property &quot;autocomplete&quot; with the proper type (2) assert_inherits: property &quot;autocomplete&quot; found on object expected in prototype chain
-FAIL HTMLFormElement interface: document.createElement(&quot;form&quot;) must inherit property &quot;enctype&quot; with the proper type (3) assert_inherits: property &quot;enctype&quot; found on object expected in prototype chain
-FAIL HTMLFormElement interface: document.createElement(&quot;form&quot;) must inherit property &quot;encoding&quot; with the proper type (4) assert_inherits: property &quot;encoding&quot; found on object expected in prototype chain
-FAIL HTMLFormElement interface: document.createElement(&quot;form&quot;) must inherit property &quot;method&quot; with the proper type (5) assert_inherits: property &quot;method&quot; found on object expected in prototype chain
-FAIL HTMLFormElement interface: document.createElement(&quot;form&quot;) must inherit property &quot;name&quot; with the proper type (6) assert_inherits: property &quot;name&quot; found on object expected in prototype chain
-FAIL HTMLFormElement interface: document.createElement(&quot;form&quot;) must inherit property &quot;noValidate&quot; with the proper type (7) assert_inherits: property &quot;noValidate&quot; found on object expected in prototype chain
-FAIL HTMLFormElement interface: document.createElement(&quot;form&quot;) must inherit property &quot;target&quot; with the proper type (8) assert_inherits: property &quot;target&quot; found on object expected in prototype chain
-FAIL HTMLFormElement interface: document.createElement(&quot;form&quot;) must inherit property &quot;elements&quot; with the proper type (9) assert_inherits: property &quot;elements&quot; found on object expected in prototype chain
</del><ins>+PASS HTMLFormElement interface: document.createElement(&quot;form&quot;) must inherit property &quot;acceptCharset&quot; with the proper type (0) 
+PASS HTMLFormElement interface: document.createElement(&quot;form&quot;) must inherit property &quot;action&quot; with the proper type (1) 
+PASS HTMLFormElement interface: document.createElement(&quot;form&quot;) must inherit property &quot;autocomplete&quot; with the proper type (2) 
+PASS HTMLFormElement interface: document.createElement(&quot;form&quot;) must inherit property &quot;enctype&quot; with the proper type (3) 
+PASS HTMLFormElement interface: document.createElement(&quot;form&quot;) must inherit property &quot;encoding&quot; with the proper type (4) 
+PASS HTMLFormElement interface: document.createElement(&quot;form&quot;) must inherit property &quot;method&quot; with the proper type (5) 
+PASS HTMLFormElement interface: document.createElement(&quot;form&quot;) must inherit property &quot;name&quot; with the proper type (6) 
+PASS HTMLFormElement interface: document.createElement(&quot;form&quot;) must inherit property &quot;noValidate&quot; with the proper type (7) 
+PASS HTMLFormElement interface: document.createElement(&quot;form&quot;) must inherit property &quot;target&quot; with the proper type (8) 
+PASS HTMLFormElement interface: document.createElement(&quot;form&quot;) must inherit property &quot;elements&quot; with the proper type (9) 
</ins><span class="cx"> FAIL HTMLFormElement interface: document.createElement(&quot;form&quot;) must inherit property &quot;length&quot; with the proper type (10) assert_inherits: property &quot;length&quot; found on object expected in prototype chain
</span><span class="cx"> PASS HTMLFormElement interface: document.createElement(&quot;form&quot;) must inherit property &quot;submit&quot; with the proper type (13) 
</span><span class="cx"> PASS HTMLFormElement interface: document.createElement(&quot;form&quot;) must inherit property &quot;reset&quot; with the proper type (14) 
</span><span class="lines">@@ -4320,9 +4320,9 @@
</span><span class="cx"> PASS Plugin interface object name 
</span><span class="cx"> PASS Plugin interface: existence and properties of interface prototype object 
</span><span class="cx"> FAIL Plugin interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_own_property: Plugin.prototype does not have own property &quot;constructor&quot; expected property &quot;constructor&quot; missing
</span><del>-FAIL Plugin interface: attribute name assert_true: The prototype object must have a property &quot;name&quot; expected true got false
-FAIL Plugin interface: attribute description assert_true: The prototype object must have a property &quot;description&quot; expected true got false
-FAIL Plugin interface: attribute filename assert_true: The prototype object must have a property &quot;filename&quot; expected true got false
</del><ins>+FAIL Plugin interface: attribute name assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
+FAIL Plugin interface: attribute description assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
+FAIL Plugin interface: attribute filename assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</ins><span class="cx"> FAIL Plugin interface: attribute length assert_true: The prototype object must have a property &quot;length&quot; expected true got false
</span><span class="cx"> FAIL Plugin interface: operation item(unsigned long) assert_equals: property has wrong .length expected 1 but got 0
</span><span class="cx"> FAIL Plugin interface: operation namedItem(DOMString) assert_equals: property has wrong .length expected 1 but got 0
</span><span class="lines">@@ -4631,38 +4631,38 @@
</span><span class="cx"> PASS HTMLFrameSetElement interface object name 
</span><span class="cx"> PASS HTMLFrameSetElement interface: existence and properties of interface prototype object 
</span><span class="cx"> FAIL HTMLFrameSetElement interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_own_property: HTMLFrameSetElement.prototype does not have own property &quot;constructor&quot; expected property &quot;constructor&quot; missing
</span><del>-FAIL HTMLFrameSetElement interface: attribute cols assert_true: The prototype object must have a property &quot;cols&quot; expected true got false
-FAIL HTMLFrameSetElement interface: attribute rows assert_true: The prototype object must have a property &quot;rows&quot; expected true got false
</del><ins>+FAIL HTMLFrameSetElement interface: attribute cols assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
+FAIL HTMLFrameSetElement interface: attribute rows assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</ins><span class="cx"> FAIL HTMLFrameSetElement interface: attribute onafterprint assert_true: The prototype object must have a property &quot;onafterprint&quot; expected true got false
</span><span class="cx"> FAIL HTMLFrameSetElement interface: attribute onbeforeprint assert_true: The prototype object must have a property &quot;onbeforeprint&quot; expected true got false
</span><del>-FAIL HTMLFrameSetElement interface: attribute onbeforeunload assert_true: The prototype object must have a property &quot;onbeforeunload&quot; expected true got false
-FAIL HTMLFrameSetElement interface: attribute onhashchange assert_true: The prototype object must have a property &quot;onhashchange&quot; expected true got false
</del><ins>+FAIL HTMLFrameSetElement interface: attribute onbeforeunload assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
+FAIL HTMLFrameSetElement interface: attribute onhashchange assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</ins><span class="cx"> FAIL HTMLFrameSetElement interface: attribute onlanguagechange assert_true: The prototype object must have a property &quot;onlanguagechange&quot; expected true got false
</span><del>-FAIL HTMLFrameSetElement interface: attribute onmessage assert_true: The prototype object must have a property &quot;onmessage&quot; expected true got false
-FAIL HTMLFrameSetElement interface: attribute onoffline assert_true: The prototype object must have a property &quot;onoffline&quot; expected true got false
-FAIL HTMLFrameSetElement interface: attribute ononline assert_true: The prototype object must have a property &quot;ononline&quot; expected true got false
-FAIL HTMLFrameSetElement interface: attribute onpagehide assert_true: The prototype object must have a property &quot;onpagehide&quot; expected true got false
-FAIL HTMLFrameSetElement interface: attribute onpageshow assert_true: The prototype object must have a property &quot;onpageshow&quot; expected true got false
-FAIL HTMLFrameSetElement interface: attribute onpopstate assert_true: The prototype object must have a property &quot;onpopstate&quot; expected true got false
-FAIL HTMLFrameSetElement interface: attribute onstorage assert_true: The prototype object must have a property &quot;onstorage&quot; expected true got false
-FAIL HTMLFrameSetElement interface: attribute onunload assert_true: The prototype object must have a property &quot;onunload&quot; expected true got false
</del><ins>+FAIL HTMLFrameSetElement interface: attribute onmessage assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
+FAIL HTMLFrameSetElement interface: attribute onoffline assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
+FAIL HTMLFrameSetElement interface: attribute ononline assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
+FAIL HTMLFrameSetElement interface: attribute onpagehide assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
+FAIL HTMLFrameSetElement interface: attribute onpageshow assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
+FAIL HTMLFrameSetElement interface: attribute onpopstate assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
+FAIL HTMLFrameSetElement interface: attribute onstorage assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
+FAIL HTMLFrameSetElement interface: attribute onunload assert_equals: getter must be Function expected &quot;function&quot; but got &quot;undefined&quot;
</ins><span class="cx"> PASS HTMLFrameSetElement must be primary interface of document.createElement(&quot;frameset&quot;) 
</span><span class="cx"> PASS Stringification of document.createElement(&quot;frameset&quot;) 
</span><del>-FAIL HTMLFrameSetElement interface: document.createElement(&quot;frameset&quot;) must inherit property &quot;cols&quot; with the proper type (0) assert_inherits: property &quot;cols&quot; found on object expected in prototype chain
-FAIL HTMLFrameSetElement interface: document.createElement(&quot;frameset&quot;) must inherit property &quot;rows&quot; with the proper type (1) assert_inherits: property &quot;rows&quot; found on object expected in prototype chain
</del><ins>+PASS HTMLFrameSetElement interface: document.createElement(&quot;frameset&quot;) must inherit property &quot;cols&quot; with the proper type (0) 
+PASS HTMLFrameSetElement interface: document.createElement(&quot;frameset&quot;) must inherit property &quot;rows&quot; with the proper type (1) 
</ins><span class="cx"> FAIL HTMLFrameSetElement interface: document.createElement(&quot;frameset&quot;) must inherit property &quot;onafterprint&quot; with the proper type (2) assert_inherits: property &quot;onafterprint&quot; not found in prototype chain
</span><span class="cx"> FAIL HTMLFrameSetElement interface: document.createElement(&quot;frameset&quot;) must inherit property &quot;onbeforeprint&quot; with the proper type (3) assert_inherits: property &quot;onbeforeprint&quot; not found in prototype chain
</span><del>-FAIL HTMLFrameSetElement interface: document.createElement(&quot;frameset&quot;) must inherit property &quot;onbeforeunload&quot; with the proper type (4) assert_inherits: property &quot;onbeforeunload&quot; found on object expected in prototype chain
-FAIL HTMLFrameSetElement interface: document.createElement(&quot;frameset&quot;) must inherit property &quot;onhashchange&quot; with the proper type (5) assert_inherits: property &quot;onhashchange&quot; found on object expected in prototype chain
</del><ins>+PASS HTMLFrameSetElement interface: document.createElement(&quot;frameset&quot;) must inherit property &quot;onbeforeunload&quot; with the proper type (4) 
+PASS HTMLFrameSetElement interface: document.createElement(&quot;frameset&quot;) must inherit property &quot;onhashchange&quot; with the proper type (5) 
</ins><span class="cx"> FAIL HTMLFrameSetElement interface: document.createElement(&quot;frameset&quot;) must inherit property &quot;onlanguagechange&quot; with the proper type (6) assert_inherits: property &quot;onlanguagechange&quot; not found in prototype chain
</span><del>-FAIL HTMLFrameSetElement interface: document.createElement(&quot;frameset&quot;) must inherit property &quot;onmessage&quot; with the proper type (7) assert_inherits: property &quot;onmessage&quot; found on object expected in prototype chain
-FAIL HTMLFrameSetElement interface: document.createElement(&quot;frameset&quot;) must inherit property &quot;onoffline&quot; with the proper type (8) assert_inherits: property &quot;onoffline&quot; found on object expected in prototype chain
-FAIL HTMLFrameSetElement interface: document.createElement(&quot;frameset&quot;) must inherit property &quot;ononline&quot; with the proper type (9) assert_inherits: property &quot;ononline&quot; found on object expected in prototype chain
-FAIL HTMLFrameSetElement interface: document.createElement(&quot;frameset&quot;) must inherit property &quot;onpagehide&quot; with the proper type (10) assert_inherits: property &quot;onpagehide&quot; found on object expected in prototype chain
-FAIL HTMLFrameSetElement interface: document.createElement(&quot;frameset&quot;) must inherit property &quot;onpageshow&quot; with the proper type (11) assert_inherits: property &quot;onpageshow&quot; found on object expected in prototype chain
-FAIL HTMLFrameSetElement interface: document.createElement(&quot;frameset&quot;) must inherit property &quot;onpopstate&quot; with the proper type (12) assert_inherits: property &quot;onpopstate&quot; found on object expected in prototype chain
-FAIL HTMLFrameSetElement interface: document.createElement(&quot;frameset&quot;) must inherit property &quot;onstorage&quot; with the proper type (13) assert_inherits: property &quot;onstorage&quot; found on object expected in prototype chain
-FAIL HTMLFrameSetElement interface: document.createElement(&quot;frameset&quot;) must inherit property &quot;onunload&quot; with the proper type (14) assert_inherits: property &quot;onunload&quot; found on object expected in prototype chain
</del><ins>+PASS HTMLFrameSetElement interface: document.createElement(&quot;frameset&quot;) must inherit property &quot;onmessage&quot; with the proper type (7) 
+PASS HTMLFrameSetElement interface: document.createElement(&quot;frameset&quot;) must inherit property &quot;onoffline&quot; with the proper type (8) 
+PASS HTMLFrameSetElement interface: document.createElement(&quot;frameset&quot;) must inherit property &quot;ononline&quot; with the proper type (9) 
+PASS HTMLFrameSetElement interface: document.createElement(&quot;frameset&quot;) must inherit property &quot;onpagehide&quot; with the proper type (10) 
+PASS HTMLFrameSetElement interface: document.createElement(&quot;frameset&quot;) must inherit property &quot;onpageshow&quot; with the proper type (11) 
+PASS HTMLFrameSetElement interface: document.createElement(&quot;frameset&quot;) must inherit property &quot;onpopstate&quot; with the proper type (12) 
+PASS HTMLFrameSetElement interface: document.createElement(&quot;frameset&quot;) must inherit property &quot;onstorage&quot; with the proper type (13) 
+PASS HTMLFrameSetElement interface: document.createElement(&quot;frameset&quot;) must inherit property &quot;onunload&quot; with the proper type (14) 
</ins><span class="cx"> FAIL HTMLFrameElement interface: existence and properties of interface object assert_equals: class string of HTMLFrameElement expected &quot;[object Function]&quot; but got &quot;[object HTMLFrameElementConstructor]&quot;
</span><span class="cx"> PASS HTMLFrameElement interface object length 
</span><span class="cx"> PASS HTMLFrameElement interface object name 
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (195797 => 195798)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-01-29 03:36:18 UTC (rev 195797)
+++ trunk/Source/WebCore/ChangeLog        2016-01-29 03:42:43 UTC (rev 195798)
</span><span class="lines">@@ -1,3 +1,24 @@
</span><ins>+2016-01-28  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Move attributes to the prototype for List types / and types with indexed/named property getters
+        https://bugs.webkit.org/show_bug.cgi?id=153599
+
+        Reviewed by Darin Adler.
+
+        Move attributes to the prototype for List types / and types with indexed/named property getters.
+
+        We used to keep them on the instance because:
+        1. Our GetOwnProperty lookup used to be in incorrect order for interfaces with indexed/named property getters.
+        -&gt; This was fixed recently and we now match the specification and other browsers.
+        2. This used to regress performance when iterating over those list types
+        -&gt; Local testing seems to show that this is no longer a regression (tested Speedometer and various related Bindings PerformanceTests).
+
+        No new tests, already covered by existing tests.
+
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (InterfaceRequiresAttributesOnInstance): Deleted.
+        (AttributeShouldBeOnInstanceForCompatibility): Deleted.
+
</ins><span class="cx"> 2016-01-28  Antti Koivisto  &lt;antti@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Tab suspension code hits asserts
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (195797 => 195798)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-01-29 03:36:18 UTC (rev 195797)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-01-29 03:42:43 UTC (rev 195798)
</span><span class="lines">@@ -665,20 +665,11 @@
</span><span class="cx"> {
</span><span class="cx">     my $interface = shift;
</span><span class="cx">     my $interfaceName = $interface-&gt;name;
</span><del>-    my $namedGetterFunction = GetNamedGetterFunction($interface);
-    my $indexedGetterFunction = GetIndexedGetterFunction($interface);
</del><span class="cx"> 
</span><span class="cx">     # FIXME: All these return 1 if ... should ideally be removed.
</span><span class="cx">     # Some of them are unavoidable due to DOM weirdness, in which case we should
</span><span class="cx">     # add an IDL attribute for them
</span><span class="cx"> 
</span><del>-    # FIXME: We should rearrange how custom named getters and getOwnPropertySlot
-    # overrides are handled so that we get the correct semantics and lookup ordering
-    my $hasImpureNamedGetter = $namedGetterFunction
-        || $interface-&gt;extendedAttributes-&gt;{&quot;CustomNamedGetter&quot;};
-    return 1 if $hasImpureNamedGetter
-        || $interface-&gt;extendedAttributes-&gt;{&quot;CustomGetOwnPropertySlot&quot;};
-
</del><span class="cx">     # FIXME: These two should be fixed by removing the custom override of message, etc
</span><span class="cx">     return 1 if $interfaceName =~ &quot;Exception&quot;;
</span><span class="cx">     return 1 if $interfaceName =~ &quot;Error&quot;;
</span><span class="lines">@@ -687,9 +678,6 @@
</span><span class="cx"> 
</span><span class="cx">     return 1 if InterfaceRequiresAttributesOnInstanceForCompatibility($interface);
</span><span class="cx"> 
</span><del>-    #FIXME: We currently clobber performance for a number of the list types
-    return 1 if $interfaceName =~ &quot;List&quot; &amp;&amp; !($interfaceName =~ &quot;Element&quot;);
-
</del><span class="cx">     return 0;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>