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