<!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.
-> 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
-> 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 <cdumez@apple.com>
</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 <cdumez@apple.com>
+
</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 "constructor" property assert_own_property: DOMSettableTokenList.prototype does not have own property "constructor" expected property "constructor" missing
</span><del>-FAIL DOMSettableTokenList interface: attribute value assert_true: The prototype object must have a property "value" expected true got false
</del><ins>+FAIL DOMSettableTokenList interface: attribute value assert_equals: getter must be Function expected "function" but got "undefined"
</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 "URL" with the proper type (1)
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property "documentURI" with the proper type (2)
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property "origin" with the proper type (3)
</span><del>-FAIL Document interface: iframe.contentDocument must inherit property "compatMode" with the proper type (4) assert_inherits: property "compatMode" found on object expected in prototype chain
</del><ins>+PASS Document interface: iframe.contentDocument must inherit property "compatMode" with the proper type (4)
</ins><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property "characterSet" with the proper type (5)
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property "charset" with the proper type (6)
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property "inputEncoding" 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 "lastModified" with the proper type (38)
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property "readyState" with the proper type (39)
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property "title" with the proper type (41)
</span><del>-FAIL Document interface: iframe.contentDocument must inherit property "dir" with the proper type (42) assert_inherits: property "dir" found on object expected in prototype chain
</del><ins>+PASS Document interface: iframe.contentDocument must inherit property "dir" with the proper type (42)
</ins><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property "body" with the proper type (43)
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property "head" with the proper type (44)
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property "images" with the proper type (45)
</span><del>-FAIL Document interface: iframe.contentDocument must inherit property "embeds" with the proper type (46) assert_inherits: property "embeds" found on object expected in prototype chain
-FAIL Document interface: iframe.contentDocument must inherit property "plugins" with the proper type (47) assert_inherits: property "plugins" found on object expected in prototype chain
</del><ins>+PASS Document interface: iframe.contentDocument must inherit property "embeds" with the proper type (46)
+PASS Document interface: iframe.contentDocument must inherit property "plugins" with the proper type (47)
</ins><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property "links" with the proper type (48)
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property "forms" with the proper type (49)
</span><del>-FAIL Document interface: iframe.contentDocument must inherit property "scripts" with the proper type (50) assert_inherits: property "scripts" found on object expected in prototype chain
</del><ins>+PASS Document interface: iframe.contentDocument must inherit property "scripts" with the proper type (50)
</ins><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property "getElementsByName" 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 "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 "defaultView" with the proper type (60)
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property "activeElement" with the proper type (61)
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property "hasFocus" with the proper type (62)
</span><del>-FAIL Document interface: iframe.contentDocument must inherit property "designMode" with the proper type (63) assert_inherits: property "designMode" found on object expected in prototype chain
</del><ins>+PASS Document interface: iframe.contentDocument must inherit property "designMode" with the proper type (63)
</ins><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property "execCommand" 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 "function () {
</span><span class="cx"> [native code]
</span><span class="lines">@@ -261,11 +261,11 @@
</span><span class="cx"> }" did not throw
</span><span class="cx"> FAIL Document interface: iframe.contentDocument must inherit property "commands" with the proper type (70) assert_inherits: property "commands" not found in prototype chain
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property "onreadystatechange" with the proper type (71)
</span><del>-FAIL Document interface: iframe.contentDocument must inherit property "fgColor" with the proper type (72) assert_inherits: property "fgColor" found on object expected in prototype chain
-FAIL Document interface: iframe.contentDocument must inherit property "linkColor" with the proper type (73) assert_inherits: property "linkColor" found on object expected in prototype chain
-FAIL Document interface: iframe.contentDocument must inherit property "vlinkColor" with the proper type (74) assert_inherits: property "vlinkColor" found on object expected in prototype chain
-FAIL Document interface: iframe.contentDocument must inherit property "alinkColor" with the proper type (75) assert_inherits: property "alinkColor" found on object expected in prototype chain
-FAIL Document interface: iframe.contentDocument must inherit property "bgColor" with the proper type (76) assert_inherits: property "bgColor" found on object expected in prototype chain
</del><ins>+PASS Document interface: iframe.contentDocument must inherit property "fgColor" with the proper type (72)
+PASS Document interface: iframe.contentDocument must inherit property "linkColor" with the proper type (73)
+PASS Document interface: iframe.contentDocument must inherit property "vlinkColor" with the proper type (74)
+PASS Document interface: iframe.contentDocument must inherit property "alinkColor" with the proper type (75)
+PASS Document interface: iframe.contentDocument must inherit property "bgColor" with the proper type (76)
</ins><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property "anchors" with the proper type (77)
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property "applets" with the proper type (78)
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property "clear" 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 "constructor" property assert_own_property: RadioNodeList.prototype does not have own property "constructor" expected property "constructor" missing
</span><del>-FAIL RadioNodeList interface: attribute value assert_true: The prototype object must have a property "value" expected true got false
</del><ins>+FAIL RadioNodeList interface: attribute value assert_equals: getter must be Function expected "function" but got "undefined"
</ins><span class="cx"> FAIL HTMLOptionsCollection interface: existence and properties of interface object assert_equals: class string of HTMLOptionsCollection expected "[object Function]" but got "[object HTMLOptionsCollectionConstructor]"
</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 "length" 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 "selectedIndex" expected true got false
</del><ins>+FAIL HTMLOptionsCollection interface: attribute selectedIndex assert_equals: getter must be Function expected "function" but got "undefined"
</ins><span class="cx"> FAIL HTMLOptionsCollection must be primary interface of document.createElement("select").options assert_equals: wrong typeof object expected "function" but got "object"
</span><span class="cx"> FAIL Stringification of document.createElement("select").options assert_equals: wrong typeof object expected "function" but got "object"
</span><span class="cx"> FAIL HTMLOptionsCollection interface: document.createElement("select").options must inherit property "length" with the proper type (0) assert_equals: wrong typeof object expected "function" but got "object"
</span><span class="lines">@@ -2311,17 +2311,17 @@
</span><span class="cx"> FAIL TextTrackList interface: existence and properties of interface prototype object's "constructor" property assert_own_property: TextTrackList.prototype does not have own property "constructor" expected property "constructor" missing
</span><span class="cx"> FAIL TextTrackList interface: attribute length assert_true: The prototype object must have a property "length" 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 "onchange" expected true got false
-FAIL TextTrackList interface: attribute onaddtrack assert_true: The prototype object must have a property "onaddtrack" expected true got false
-FAIL TextTrackList interface: attribute onremovetrack assert_true: The prototype object must have a property "onremovetrack" expected true got false
</del><ins>+FAIL TextTrackList interface: attribute onchange assert_equals: getter must be Function expected "function" but got "undefined"
+FAIL TextTrackList interface: attribute onaddtrack assert_equals: getter must be Function expected "function" but got "undefined"
+FAIL TextTrackList interface: attribute onremovetrack assert_equals: getter must be Function expected "function" but got "undefined"
</ins><span class="cx"> PASS TextTrackList must be primary interface of document.createElement("video").textTracks
</span><span class="cx"> PASS Stringification of document.createElement("video").textTracks
</span><span class="cx"> FAIL TextTrackList interface: document.createElement("video").textTracks must inherit property "length" with the proper type (0) assert_inherits: property "length" found on object expected in prototype chain
</span><span class="cx"> PASS TextTrackList interface: document.createElement("video").textTracks must inherit property "getTrackById" with the proper type (2)
</span><span class="cx"> PASS TextTrackList interface: calling getTrackById(DOMString) on document.createElement("video").textTracks with too few arguments must throw TypeError
</span><del>-FAIL TextTrackList interface: document.createElement("video").textTracks must inherit property "onchange" with the proper type (3) assert_inherits: property "onchange" found on object expected in prototype chain
-FAIL TextTrackList interface: document.createElement("video").textTracks must inherit property "onaddtrack" with the proper type (4) assert_inherits: property "onaddtrack" found on object expected in prototype chain
-FAIL TextTrackList interface: document.createElement("video").textTracks must inherit property "onremovetrack" with the proper type (5) assert_inherits: property "onremovetrack" found on object expected in prototype chain
</del><ins>+PASS TextTrackList interface: document.createElement("video").textTracks must inherit property "onchange" with the proper type (3)
+PASS TextTrackList interface: document.createElement("video").textTracks must inherit property "onaddtrack" with the proper type (4)
+PASS TextTrackList interface: document.createElement("video").textTracks must inherit property "onremovetrack" with the proper type (5)
</ins><span class="cx"> PASS EventTarget interface: document.createElement("video").textTracks must inherit property "addEventListener" with the proper type (0)
</span><span class="cx"> FAIL EventTarget interface: calling addEventListener(DOMString,EventListener,boolean) on document.createElement("video").textTracks with too few arguments must throw TypeError assert_throws: Called with 0 arguments function "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 "constructor" property assert_own_property: HTMLFormElement.prototype does not have own property "constructor" expected property "constructor" missing
</span><del>-FAIL HTMLFormElement interface: attribute acceptCharset assert_true: The prototype object must have a property "acceptCharset" expected true got false
-FAIL HTMLFormElement interface: attribute action assert_true: The prototype object must have a property "action" expected true got false
-FAIL HTMLFormElement interface: attribute autocomplete assert_true: The prototype object must have a property "autocomplete" expected true got false
-FAIL HTMLFormElement interface: attribute enctype assert_true: The prototype object must have a property "enctype" expected true got false
-FAIL HTMLFormElement interface: attribute encoding assert_true: The prototype object must have a property "encoding" expected true got false
-FAIL HTMLFormElement interface: attribute method assert_true: The prototype object must have a property "method" expected true got false
-FAIL HTMLFormElement interface: attribute name assert_true: The prototype object must have a property "name" expected true got false
-FAIL HTMLFormElement interface: attribute noValidate assert_true: The prototype object must have a property "noValidate" expected true got false
-FAIL HTMLFormElement interface: attribute target assert_true: The prototype object must have a property "target" expected true got false
-FAIL HTMLFormElement interface: attribute elements assert_true: The prototype object must have a property "elements" expected true got false
</del><ins>+FAIL HTMLFormElement interface: attribute acceptCharset assert_equals: getter must be Function expected "function" but got "undefined"
+FAIL HTMLFormElement interface: attribute action assert_equals: getter must be Function expected "function" but got "undefined"
+FAIL HTMLFormElement interface: attribute autocomplete assert_equals: getter must be Function expected "function" but got "undefined"
+FAIL HTMLFormElement interface: attribute enctype assert_equals: getter must be Function expected "function" but got "undefined"
+FAIL HTMLFormElement interface: attribute encoding assert_equals: getter must be Function expected "function" but got "undefined"
+FAIL HTMLFormElement interface: attribute method assert_equals: getter must be Function expected "function" but got "undefined"
+FAIL HTMLFormElement interface: attribute name assert_equals: getter must be Function expected "function" but got "undefined"
+FAIL HTMLFormElement interface: attribute noValidate assert_equals: getter must be Function expected "function" but got "undefined"
+FAIL HTMLFormElement interface: attribute target assert_equals: getter must be Function expected "function" but got "undefined"
+FAIL HTMLFormElement interface: attribute elements assert_equals: getter must be Function expected "function" but got "undefined"
</ins><span class="cx"> FAIL HTMLFormElement interface: attribute length assert_true: The prototype object must have a property "length" 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 "requestAutocomplete" missing
</span><span class="cx"> PASS HTMLFormElement must be primary interface of document.createElement("form")
</span><span class="cx"> PASS Stringification of document.createElement("form")
</span><del>-FAIL HTMLFormElement interface: document.createElement("form") must inherit property "acceptCharset" with the proper type (0) assert_inherits: property "acceptCharset" found on object expected in prototype chain
-FAIL HTMLFormElement interface: document.createElement("form") must inherit property "action" with the proper type (1) assert_inherits: property "action" found on object expected in prototype chain
-FAIL HTMLFormElement interface: document.createElement("form") must inherit property "autocomplete" with the proper type (2) assert_inherits: property "autocomplete" found on object expected in prototype chain
-FAIL HTMLFormElement interface: document.createElement("form") must inherit property "enctype" with the proper type (3) assert_inherits: property "enctype" found on object expected in prototype chain
-FAIL HTMLFormElement interface: document.createElement("form") must inherit property "encoding" with the proper type (4) assert_inherits: property "encoding" found on object expected in prototype chain
-FAIL HTMLFormElement interface: document.createElement("form") must inherit property "method" with the proper type (5) assert_inherits: property "method" found on object expected in prototype chain
-FAIL HTMLFormElement interface: document.createElement("form") must inherit property "name" with the proper type (6) assert_inherits: property "name" found on object expected in prototype chain
-FAIL HTMLFormElement interface: document.createElement("form") must inherit property "noValidate" with the proper type (7) assert_inherits: property "noValidate" found on object expected in prototype chain
-FAIL HTMLFormElement interface: document.createElement("form") must inherit property "target" with the proper type (8) assert_inherits: property "target" found on object expected in prototype chain
-FAIL HTMLFormElement interface: document.createElement("form") must inherit property "elements" with the proper type (9) assert_inherits: property "elements" found on object expected in prototype chain
</del><ins>+PASS HTMLFormElement interface: document.createElement("form") must inherit property "acceptCharset" with the proper type (0)
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "action" with the proper type (1)
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "autocomplete" with the proper type (2)
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "enctype" with the proper type (3)
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "encoding" with the proper type (4)
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "method" with the proper type (5)
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "name" with the proper type (6)
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "noValidate" with the proper type (7)
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "target" with the proper type (8)
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "elements" with the proper type (9)
</ins><span class="cx"> FAIL HTMLFormElement interface: document.createElement("form") must inherit property "length" with the proper type (10) assert_inherits: property "length" found on object expected in prototype chain
</span><span class="cx"> PASS HTMLFormElement interface: document.createElement("form") must inherit property "submit" with the proper type (13)
</span><span class="cx"> PASS HTMLFormElement interface: document.createElement("form") must inherit property "reset" 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 "constructor" property assert_own_property: Plugin.prototype does not have own property "constructor" expected property "constructor" missing
</span><del>-FAIL Plugin interface: attribute name assert_true: The prototype object must have a property "name" expected true got false
-FAIL Plugin interface: attribute description assert_true: The prototype object must have a property "description" expected true got false
-FAIL Plugin interface: attribute filename assert_true: The prototype object must have a property "filename" expected true got false
</del><ins>+FAIL Plugin interface: attribute name assert_equals: getter must be Function expected "function" but got "undefined"
+FAIL Plugin interface: attribute description assert_equals: getter must be Function expected "function" but got "undefined"
+FAIL Plugin interface: attribute filename assert_equals: getter must be Function expected "function" but got "undefined"
</ins><span class="cx"> FAIL Plugin interface: attribute length assert_true: The prototype object must have a property "length" 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 "constructor" property assert_own_property: HTMLFrameSetElement.prototype does not have own property "constructor" expected property "constructor" missing
</span><del>-FAIL HTMLFrameSetElement interface: attribute cols assert_true: The prototype object must have a property "cols" expected true got false
-FAIL HTMLFrameSetElement interface: attribute rows assert_true: The prototype object must have a property "rows" expected true got false
</del><ins>+FAIL HTMLFrameSetElement interface: attribute cols assert_equals: getter must be Function expected "function" but got "undefined"
+FAIL HTMLFrameSetElement interface: attribute rows assert_equals: getter must be Function expected "function" but got "undefined"
</ins><span class="cx"> FAIL HTMLFrameSetElement interface: attribute onafterprint assert_true: The prototype object must have a property "onafterprint" expected true got false
</span><span class="cx"> FAIL HTMLFrameSetElement interface: attribute onbeforeprint assert_true: The prototype object must have a property "onbeforeprint" expected true got false
</span><del>-FAIL HTMLFrameSetElement interface: attribute onbeforeunload assert_true: The prototype object must have a property "onbeforeunload" expected true got false
-FAIL HTMLFrameSetElement interface: attribute onhashchange assert_true: The prototype object must have a property "onhashchange" expected true got false
</del><ins>+FAIL HTMLFrameSetElement interface: attribute onbeforeunload assert_equals: getter must be Function expected "function" but got "undefined"
+FAIL HTMLFrameSetElement interface: attribute onhashchange assert_equals: getter must be Function expected "function" but got "undefined"
</ins><span class="cx"> FAIL HTMLFrameSetElement interface: attribute onlanguagechange assert_true: The prototype object must have a property "onlanguagechange" expected true got false
</span><del>-FAIL HTMLFrameSetElement interface: attribute onmessage assert_true: The prototype object must have a property "onmessage" expected true got false
-FAIL HTMLFrameSetElement interface: attribute onoffline assert_true: The prototype object must have a property "onoffline" expected true got false
-FAIL HTMLFrameSetElement interface: attribute ononline assert_true: The prototype object must have a property "ononline" expected true got false
-FAIL HTMLFrameSetElement interface: attribute onpagehide assert_true: The prototype object must have a property "onpagehide" expected true got false
-FAIL HTMLFrameSetElement interface: attribute onpageshow assert_true: The prototype object must have a property "onpageshow" expected true got false
-FAIL HTMLFrameSetElement interface: attribute onpopstate assert_true: The prototype object must have a property "onpopstate" expected true got false
-FAIL HTMLFrameSetElement interface: attribute onstorage assert_true: The prototype object must have a property "onstorage" expected true got false
-FAIL HTMLFrameSetElement interface: attribute onunload assert_true: The prototype object must have a property "onunload" expected true got false
</del><ins>+FAIL HTMLFrameSetElement interface: attribute onmessage assert_equals: getter must be Function expected "function" but got "undefined"
+FAIL HTMLFrameSetElement interface: attribute onoffline assert_equals: getter must be Function expected "function" but got "undefined"
+FAIL HTMLFrameSetElement interface: attribute ononline assert_equals: getter must be Function expected "function" but got "undefined"
+FAIL HTMLFrameSetElement interface: attribute onpagehide assert_equals: getter must be Function expected "function" but got "undefined"
+FAIL HTMLFrameSetElement interface: attribute onpageshow assert_equals: getter must be Function expected "function" but got "undefined"
+FAIL HTMLFrameSetElement interface: attribute onpopstate assert_equals: getter must be Function expected "function" but got "undefined"
+FAIL HTMLFrameSetElement interface: attribute onstorage assert_equals: getter must be Function expected "function" but got "undefined"
+FAIL HTMLFrameSetElement interface: attribute onunload assert_equals: getter must be Function expected "function" but got "undefined"
</ins><span class="cx"> PASS HTMLFrameSetElement must be primary interface of document.createElement("frameset")
</span><span class="cx"> PASS Stringification of document.createElement("frameset")
</span><del>-FAIL HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "cols" with the proper type (0) assert_inherits: property "cols" found on object expected in prototype chain
-FAIL HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "rows" with the proper type (1) assert_inherits: property "rows" found on object expected in prototype chain
</del><ins>+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "cols" with the proper type (0)
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "rows" with the proper type (1)
</ins><span class="cx"> FAIL HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onafterprint" with the proper type (2) assert_inherits: property "onafterprint" not found in prototype chain
</span><span class="cx"> FAIL HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onbeforeprint" with the proper type (3) assert_inherits: property "onbeforeprint" not found in prototype chain
</span><del>-FAIL HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onbeforeunload" with the proper type (4) assert_inherits: property "onbeforeunload" found on object expected in prototype chain
-FAIL HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onhashchange" with the proper type (5) assert_inherits: property "onhashchange" found on object expected in prototype chain
</del><ins>+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onbeforeunload" with the proper type (4)
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onhashchange" with the proper type (5)
</ins><span class="cx"> FAIL HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onlanguagechange" with the proper type (6) assert_inherits: property "onlanguagechange" not found in prototype chain
</span><del>-FAIL HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onmessage" with the proper type (7) assert_inherits: property "onmessage" found on object expected in prototype chain
-FAIL HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onoffline" with the proper type (8) assert_inherits: property "onoffline" found on object expected in prototype chain
-FAIL HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "ononline" with the proper type (9) assert_inherits: property "ononline" found on object expected in prototype chain
-FAIL HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onpagehide" with the proper type (10) assert_inherits: property "onpagehide" found on object expected in prototype chain
-FAIL HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onpageshow" with the proper type (11) assert_inherits: property "onpageshow" found on object expected in prototype chain
-FAIL HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onpopstate" with the proper type (12) assert_inherits: property "onpopstate" found on object expected in prototype chain
-FAIL HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onstorage" with the proper type (13) assert_inherits: property "onstorage" found on object expected in prototype chain
-FAIL HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onunload" with the proper type (14) assert_inherits: property "onunload" found on object expected in prototype chain
</del><ins>+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onmessage" with the proper type (7)
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onoffline" with the proper type (8)
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "ononline" with the proper type (9)
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onpagehide" with the proper type (10)
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onpageshow" with the proper type (11)
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onpopstate" with the proper type (12)
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onstorage" with the proper type (13)
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onunload" 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 "[object Function]" but got "[object HTMLFrameElementConstructor]"
</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 <cdumez@apple.com>
+
+ 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.
+ -> 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
+ -> 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 <antti@apple.com>
</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->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->extendedAttributes->{"CustomNamedGetter"};
- return 1 if $hasImpureNamedGetter
- || $interface->extendedAttributes->{"CustomGetOwnPropertySlot"};
-
</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 =~ "Exception";
</span><span class="cx"> return 1 if $interfaceName =~ "Error";
</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 =~ "List" && !($interfaceName =~ "Element");
-
</del><span class="cx"> return 0;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre>
</div>
</div>
</body>
</html>