<!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>[203546] 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/203546">203546</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2016-07-21 19:21:23 -0700 (Thu, 21 Jul 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Make parameters mandatory for attribute-related API on Element
https://bugs.webkit.org/show_bug.cgi?id=160059

Reviewed by Ryosuke Niwa.

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:

Source/WebCore:

Make parameters mandatory for attribute-related API on Element to match
the specification:
- https://dom.spec.whatwg.org/#element

Firefox and Chrome agree with the specification. Calling this API
without the parameters does not make much sense, especially considering
WebKit uses the string &quot;undefined&quot; when the parameter is omitted.

No new tests, rebaselined existing tests.

* dom/Element.idl:

LayoutTests:

Update existing layout tests to reflect the behavior change.

* fast/dom/Element/script-tests/setAttributeNS-namespace-err.js:
* fast/dom/Element/setAttributeNS-namespace-err-expected.txt:
* fast/dom/HTMLHrElement/hr-color-noshade-attribute.html:
* fast/dom/attribute-downcast-right.html:
* fast/images/style-access-during-imageChanged-style-freeze.html:
* fast/selectors/read-only-read-write-input-basics.html:
* fast/selectors/read-only-read-write-textarea-basics.html:
* media/video-playsinline-expected.txt:
* media/video-playsinline.html:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsfastdomElementscripttestssetAttributeNSnamespaceerrjs">trunk/LayoutTests/fast/dom/Element/script-tests/setAttributeNS-namespace-err.js</a></li>
<li><a href="#trunkLayoutTestsfastdomElementsetAttributeNSnamespaceerrexpectedtxt">trunk/LayoutTests/fast/dom/Element/setAttributeNS-namespace-err-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastdomHTMLAnchorElementanchornodownloadsethtml">trunk/LayoutTests/fast/dom/HTMLAnchorElement/anchor-nodownload-set.html</a></li>
<li><a href="#trunkLayoutTestsfastdomHTMLHrElementhrcolornoshadeattributehtml">trunk/LayoutTests/fast/dom/HTMLHrElement/hr-color-noshade-attribute.html</a></li>
<li><a href="#trunkLayoutTestsfastdomattributedowncastrighthtml">trunk/LayoutTests/fast/dom/attribute-downcast-right.html</a></li>
<li><a href="#trunkLayoutTestsfastimagesstyleaccessduringimageChangedstylefreezehtml">trunk/LayoutTests/fast/images/style-access-during-imageChanged-style-freeze.html</a></li>
<li><a href="#trunkLayoutTestsfastselectorsreadonlyreadwriteinputbasicshtml">trunk/LayoutTests/fast/selectors/read-only-read-write-input-basics.html</a></li>
<li><a href="#trunkLayoutTestsfastselectorsreadonlyreadwritetextareabasicshtml">trunk/LayoutTests/fast/selectors/read-only-read-write-textarea-basics.html</a></li>
<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="#trunkLayoutTestsmediavideoplaysinlineexpectedtxt">trunk/LayoutTests/media/video-playsinline-expected.txt</a></li>
<li><a href="#trunkLayoutTestsmediavideoplaysinlinehtml">trunk/LayoutTests/media/video-playsinline.html</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoredomElementidl">trunk/Source/WebCore/dom/Element.idl</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (203545 => 203546)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-07-22 01:40:22 UTC (rev 203545)
+++ trunk/LayoutTests/ChangeLog        2016-07-22 02:21:23 UTC (rev 203546)
</span><span class="lines">@@ -1,3 +1,22 @@
</span><ins>+2016-07-21  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Make parameters mandatory for attribute-related API on Element
+        https://bugs.webkit.org/show_bug.cgi?id=160059
+
+        Reviewed by Ryosuke Niwa.
+
+        Update existing layout tests to reflect the behavior change.
+
+        * fast/dom/Element/script-tests/setAttributeNS-namespace-err.js:
+        * fast/dom/Element/setAttributeNS-namespace-err-expected.txt:
+        * fast/dom/HTMLHrElement/hr-color-noshade-attribute.html:
+        * fast/dom/attribute-downcast-right.html:
+        * fast/images/style-access-during-imageChanged-style-freeze.html:
+        * fast/selectors/read-only-read-write-input-basics.html:
+        * fast/selectors/read-only-read-write-textarea-basics.html:
+        * media/video-playsinline-expected.txt:
+        * media/video-playsinline.html:
+
</ins><span class="cx"> 2016-07-21  Dean Jackson  &lt;dino@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         REGRESSION (r202927): The internal size of the ImageBuffer is scaled twice by the context scaleFactor
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomElementscripttestssetAttributeNSnamespaceerrjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/Element/script-tests/setAttributeNS-namespace-err.js (203545 => 203546)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/Element/script-tests/setAttributeNS-namespace-err.js        2016-07-22 01:40:22 UTC (rev 203545)
+++ trunk/LayoutTests/fast/dom/Element/script-tests/setAttributeNS-namespace-err.js        2016-07-22 02:21:23 UTC (rev 203546)
</span><span class="lines">@@ -124,10 +124,9 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-// Moz throws a &quot;Not enough arguments&quot; exception in these, we don't:
</del><span class="cx"> var element = document.createElement(&quot;div&quot;);
</span><del>-shouldBeUndefined(&quot;element.setAttributeNS()&quot;);
-shouldBeUndefined(&quot;element.setAttributeNS(\&quot;http://www.example.com\&quot;)&quot;);
-shouldBeUndefined(&quot;element.setAttributeNS(\&quot;http://www.example.com\&quot;, \&quot;foo\&quot;)&quot;);
</del><ins>+shouldThrow(&quot;element.setAttributeNS()&quot;);
+shouldThrow(&quot;element.setAttributeNS(\&quot;http://www.example.com\&quot;)&quot;);
+shouldThrow(&quot;element.setAttributeNS(\&quot;http://www.example.com\&quot;, \&quot;foo\&quot;)&quot;);
</ins><span class="cx"> 
</span><span class="cx"> runNSTests();
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomElementsetAttributeNSnamespaceerrexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/Element/setAttributeNS-namespace-err-expected.txt (203545 => 203546)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/Element/setAttributeNS-namespace-err-expected.txt        2016-07-22 01:40:22 UTC (rev 203545)
+++ trunk/LayoutTests/fast/dom/Element/setAttributeNS-namespace-err-expected.txt        2016-07-22 02:21:23 UTC (rev 203546)
</span><span class="lines">@@ -3,9 +3,9 @@
</span><span class="cx"> On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-PASS element.setAttributeNS() is undefined.
-PASS element.setAttributeNS(&quot;http://www.example.com&quot;) is undefined.
-PASS element.setAttributeNS(&quot;http://www.example.com&quot;, &quot;foo&quot;) is undefined.
</del><ins>+PASS element.setAttributeNS() threw exception TypeError: Not enough arguments.
+PASS element.setAttributeNS(&quot;http://www.example.com&quot;) threw exception TypeError: Not enough arguments.
+PASS element.setAttributeNS(&quot;http://www.example.com&quot;, &quot;foo&quot;) threw exception TypeError: Not enough arguments.
</ins><span class="cx"> PASS element.setAttributeNS(undefined, undefined, 'value')
</span><span class="cx"> PASS element.setAttributeNS(null, undefined, 'value')
</span><span class="cx"> FAIL element.setAttributeNS(undefined, null, 'value')
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomHTMLAnchorElementanchornodownloadsethtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/HTMLAnchorElement/anchor-nodownload-set.html (203545 => 203546)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/HTMLAnchorElement/anchor-nodownload-set.html        2016-07-22 01:40:22 UTC (rev 203545)
+++ trunk/LayoutTests/fast/dom/HTMLAnchorElement/anchor-nodownload-set.html        2016-07-22 02:21:23 UTC (rev 203546)
</span><span class="lines">@@ -28,7 +28,7 @@
</span><span class="cx">     var blob = new Blob([string], {type: &quot;text/html&quot;});
</span><span class="cx">     var link = document.getElementById(&quot;blob-url&quot;);
</span><span class="cx">     link.href = window.URL.createObjectURL(blob);
</span><del>-    link.setAttribute('download');
</del><ins>+    link.setAttribute('download', '');
</ins><span class="cx">     click(link);
</span><span class="cx"> }
</span><span class="cx"> runTest();
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomHTMLHrElementhrcolornoshadeattributehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/HTMLHrElement/hr-color-noshade-attribute.html (203545 => 203546)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/HTMLHrElement/hr-color-noshade-attribute.html        2016-07-22 01:40:22 UTC (rev 203545)
+++ trunk/LayoutTests/fast/dom/HTMLHrElement/hr-color-noshade-attribute.html        2016-07-22 02:21:23 UTC (rev 203546)
</span><span class="lines">@@ -13,12 +13,12 @@
</span><span class="cx">                 shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('hrElement3'),null).getPropertyValue('background-color')&quot;,&quot;rgb(0, 0, 0)&quot;);
</span><span class="cx">                 shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('hrElement4'),null).getPropertyValue('border-color')&quot;,&quot;rgb(128, 128, 128)&quot;);
</span><span class="cx">                 shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('hrElement4'),null).getPropertyValue('background-color')&quot;,&quot;rgb(128, 128, 128)&quot;);
</span><del>-                document.getElementById('hrElement5').setAttribute(&quot;color&quot;,&quot;yellow&quot;);
-                document.getElementById('hrElement5').setAttribute(&quot;noshade&quot;);
</del><ins>+                document.getElementById('hrElement5').setAttribute(&quot;color&quot;, &quot;yellow&quot;);
+                document.getElementById('hrElement5').setAttribute(&quot;noshade&quot;, &quot;&quot;);
</ins><span class="cx">                 shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('hrElement5'),null).getPropertyValue('border-color')&quot;,&quot;rgb(255, 255, 0)&quot;);
</span><span class="cx">                 shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('hrElement5'),null).getPropertyValue('background-color')&quot;,&quot;rgb(255, 255, 0)&quot;);
</span><del>-                document.getElementById('hrElement6').setAttribute(&quot;noshade&quot;);
-                document.getElementById('hrElement6').setAttribute(&quot;color&quot;,&quot;green&quot;);
</del><ins>+                document.getElementById('hrElement6').setAttribute(&quot;noshade&quot;, &quot;&quot;);
+                document.getElementById('hrElement6').setAttribute(&quot;color&quot;, &quot;green&quot;);
</ins><span class="cx">                 shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('hrElement6'),null).getPropertyValue('border-color')&quot;,&quot;rgb(0, 128, 0)&quot;);
</span><span class="cx">                 shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('hrElement6'),null).getPropertyValue('background-color')&quot;,&quot;rgb(0, 128, 0)&quot;);
</span><span class="cx">             }
</span><span class="lines">@@ -32,4 +32,4 @@
</span><span class="cx">         &lt;hr id=&quot;hrElement5&quot;&gt;
</span><span class="cx">         &lt;hr id=&quot;hrElement6&quot;&gt;
</span><span class="cx">     &lt;/body&gt;
</span><del>-&lt;/html&gt;
</del><span class="cx">\ No newline at end of file
</span><ins>+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastdomattributedowncastrighthtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/attribute-downcast-right.html (203545 => 203546)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/attribute-downcast-right.html        2016-07-22 01:40:22 UTC (rev 203545)
+++ trunk/LayoutTests/fast/dom/attribute-downcast-right.html        2016-07-22 02:21:23 UTC (rev 203546)
</span><span class="lines">@@ -4,8 +4,8 @@
</span><span class="cx"> 
</span><span class="cx"> var oElement = document.createElement(&quot;s&quot;)
</span><span class="cx"> var oElementNS = document.createElementNS(null, &quot;test&quot;);
</span><del>-oElementNS.setAttributeNS();
-var oAttributeNS = oElementNS.getAttributeNodeNS();
</del><ins>+oElementNS.setAttributeNS(null, &quot;test&quot;, &quot;value&quot;);
+var oAttributeNS = oElementNS.getAttributeNodeNS(null, &quot;test&quot;);
</ins><span class="cx"> var oAttributeNSClone = oAttributeNS.cloneNode();
</span><span class="cx"> oElement.setAttributeNode(oAttributeNSClone);
</span><span class="cx"> &lt;/SCRIPT&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsfastimagesstyleaccessduringimageChangedstylefreezehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/images/style-access-during-imageChanged-style-freeze.html (203545 => 203546)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/images/style-access-during-imageChanged-style-freeze.html        2016-07-22 01:40:22 UTC (rev 203545)
+++ trunk/LayoutTests/fast/images/style-access-during-imageChanged-style-freeze.html        2016-07-22 02:21:23 UTC (rev 203546)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx">         container.style.removeProperty(&quot;display&quot;);
</span><span class="cx">         document.body.offsetTop;
</span><span class="cx">         var target = document.getElementById(&quot;target&quot;);
</span><del>-        target.setAttribute(&quot;foo&quot;);
</del><ins>+        target.setAttribute(&quot;foo&quot;, &quot;&quot;);
</ins><span class="cx">         document.body.offsetTop;
</span><span class="cx">         var result = document.getElementById(&quot;result&quot;);
</span><span class="cx">         result.innerText = getComputedStyle(target).color === &quot;rgb(0, 128, 0)&quot; ? &quot;PASS&quot; : &quot;FAIL&quot;;
</span></span></pre></div>
<a id="trunkLayoutTestsfastselectorsreadonlyreadwriteinputbasicshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/selectors/read-only-read-write-input-basics.html (203545 => 203546)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/selectors/read-only-read-write-input-basics.html        2016-07-22 01:40:22 UTC (rev 203545)
+++ trunk/LayoutTests/fast/selectors/read-only-read-write-input-basics.html        2016-07-22 02:21:23 UTC (rev 203546)
</span><span class="lines">@@ -80,7 +80,7 @@
</span><span class="cx">     testProperties(!supportsReadonly);
</span><span class="cx"> 
</span><span class="cx">     // Setting readonly through attributes.
</span><del>-    testCase.setAttribute(&quot;readonly&quot;);
</del><ins>+    testCase.setAttribute(&quot;readonly&quot;, &quot;&quot;);
</ins><span class="cx">     testProperties(true);
</span><span class="cx"> 
</span><span class="cx">     testCase.removeAttribute(&quot;readonly&quot;);
</span><span class="lines">@@ -94,7 +94,7 @@
</span><span class="cx">     testProperties(!supportsReadonly);
</span><span class="cx"> 
</span><span class="cx">     // Setting disabled through attributes.
</span><del>-    testCase.setAttribute(&quot;disabled&quot;);
</del><ins>+    testCase.setAttribute(&quot;disabled&quot;, &quot;&quot;);
</ins><span class="cx">     testProperties(true);
</span><span class="cx"> 
</span><span class="cx">     testCase.removeAttribute(&quot;disabled&quot;);
</span></span></pre></div>
<a id="trunkLayoutTestsfastselectorsreadonlyreadwritetextareabasicshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/selectors/read-only-read-write-textarea-basics.html (203545 => 203546)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/selectors/read-only-read-write-textarea-basics.html        2016-07-22 01:40:22 UTC (rev 203545)
+++ trunk/LayoutTests/fast/selectors/read-only-read-write-textarea-basics.html        2016-07-22 02:21:23 UTC (rev 203546)
</span><span class="lines">@@ -143,7 +143,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // Setting the value through attributes.
</span><del>-newTextArea.setAttribute(&quot;readonly&quot;);
</del><ins>+newTextArea.setAttribute(&quot;readonly&quot;, &quot;&quot;);
</ins><span class="cx"> testProperties(true);
</span><span class="cx"> newTextArea.removeAttribute(&quot;readonly&quot;);
</span><span class="cx"> testProperties(false);
</span><span class="lines">@@ -153,7 +153,7 @@
</span><span class="cx"> testAttribute(&quot;readonly&quot;, &quot;false&quot;);
</span><span class="cx"> testAttribute(&quot;readonly&quot;, &quot;foobar&quot;);
</span><span class="cx"> 
</span><del>-newTextArea.setAttribute(&quot;disabled&quot;);
</del><ins>+newTextArea.setAttribute(&quot;disabled&quot;, &quot;&quot;);
</ins><span class="cx"> testProperties(true);
</span><span class="cx"> newTextArea.removeAttribute(&quot;disabled&quot;);
</span><span class="cx"> testProperties(false);
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/ChangeLog (203545 => 203546)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/ChangeLog        2016-07-22 01:40:22 UTC (rev 203545)
+++ trunk/LayoutTests/imported/w3c/ChangeLog        2016-07-22 02:21:23 UTC (rev 203546)
</span><span class="lines">@@ -1,5 +1,17 @@
</span><span class="cx"> 2016-07-21  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Make parameters mandatory for attribute-related API on Element
+        https://bugs.webkit.org/show_bug.cgi?id=160059
+
+        Reviewed by Ryosuke Niwa.
+
+        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:
+
+2016-07-21  Chris Dumez  &lt;cdumez@apple.com&gt;
+
</ins><span class="cx">         Make parameters to Document.getElementsBy*() operations mandatory
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=160050
</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 (203545 => 203546)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces-expected.txt        2016-07-22 01:40:22 UTC (rev 203545)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces-expected.txt        2016-07-22 02:21:23 UTC (rev 203546)
</span><span class="lines">@@ -831,16 +831,16 @@
</span><span class="cx"> PASS Element interface: operation hasAttributes() 
</span><span class="cx"> PASS Element interface: attribute attributes 
</span><span class="cx"> FAIL Element interface: operation getAttributeNames() assert_own_property: interface prototype object missing non-static operation expected property &quot;getAttributeNames&quot; missing
</span><del>-FAIL Element interface: operation getAttribute(DOMString) assert_equals: property has wrong .length expected 1 but got 0
-FAIL Element interface: operation getAttributeNS(DOMString,DOMString) assert_equals: property has wrong .length expected 2 but got 0
-FAIL Element interface: operation setAttribute(DOMString,DOMString) assert_equals: property has wrong .length expected 2 but got 0
-FAIL Element interface: operation setAttributeNS(DOMString,DOMString,DOMString) assert_equals: property has wrong .length expected 3 but got 0
-FAIL Element interface: operation removeAttribute(DOMString) assert_equals: property has wrong .length expected 1 but got 0
</del><ins>+PASS Element interface: operation getAttribute(DOMString) 
+PASS Element interface: operation getAttributeNS(DOMString,DOMString) 
+PASS Element interface: operation setAttribute(DOMString,DOMString) 
+PASS Element interface: operation setAttributeNS(DOMString,DOMString,DOMString) 
+PASS Element interface: operation removeAttribute(DOMString) 
</ins><span class="cx"> PASS Element interface: operation removeAttributeNS(DOMString,DOMString) 
</span><span class="cx"> PASS Element interface: operation hasAttribute(DOMString) 
</span><del>-FAIL Element interface: operation hasAttributeNS(DOMString,DOMString) assert_equals: property has wrong .length expected 2 but got 0
-FAIL Element interface: operation getAttributeNode(DOMString) assert_equals: property has wrong .length expected 1 but got 0
-FAIL Element interface: operation getAttributeNodeNS(DOMString,DOMString) assert_equals: property has wrong .length expected 2 but got 0
</del><ins>+PASS Element interface: operation hasAttributeNS(DOMString,DOMString) 
+PASS Element interface: operation getAttributeNode(DOMString) 
+PASS Element interface: operation getAttributeNodeNS(DOMString,DOMString) 
</ins><span class="cx"> PASS Element interface: operation setAttributeNode(Attr) 
</span><span class="cx"> PASS Element interface: operation setAttributeNodeNS(Attr) 
</span><span class="cx"> PASS Element interface: operation removeAttributeNode(Attr) 
</span><span class="lines">@@ -883,41 +883,25 @@
</span><span class="cx"> PASS Element interface: element must inherit property &quot;attributes&quot; with the proper type (9) 
</span><span class="cx"> FAIL Element interface: element must inherit property &quot;getAttributeNames&quot; with the proper type (10) assert_inherits: property &quot;getAttributeNames&quot; not found in prototype chain
</span><span class="cx"> PASS Element interface: element must inherit property &quot;getAttribute&quot; with the proper type (11) 
</span><del>-FAIL Element interface: calling getAttribute(DOMString) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
-            fn.apply(obj, args);
-        }&quot; did not throw
</del><ins>+PASS Element interface: calling getAttribute(DOMString) on element with too few arguments must throw TypeError 
</ins><span class="cx"> PASS Element interface: element must inherit property &quot;getAttributeNS&quot; with the proper type (12) 
</span><del>-FAIL Element interface: calling getAttributeNS(DOMString,DOMString) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
-            fn.apply(obj, args);
-        }&quot; did not throw
</del><ins>+PASS Element interface: calling getAttributeNS(DOMString,DOMString) on element with too few arguments must throw TypeError 
</ins><span class="cx"> PASS Element interface: element must inherit property &quot;setAttribute&quot; with the proper type (13) 
</span><del>-FAIL Element interface: calling setAttribute(DOMString,DOMString) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
-            fn.apply(obj, args);
-        }&quot; did not throw
</del><ins>+PASS Element interface: calling setAttribute(DOMString,DOMString) on element with too few arguments must throw TypeError 
</ins><span class="cx"> PASS Element interface: element must inherit property &quot;setAttributeNS&quot; with the proper type (14) 
</span><del>-FAIL Element interface: calling setAttributeNS(DOMString,DOMString,DOMString) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
-            fn.apply(obj, args);
-        }&quot; did not throw
</del><ins>+PASS Element interface: calling setAttributeNS(DOMString,DOMString,DOMString) on element with too few arguments must throw TypeError 
</ins><span class="cx"> PASS Element interface: element must inherit property &quot;removeAttribute&quot; with the proper type (15) 
</span><del>-FAIL Element interface: calling removeAttribute(DOMString) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
-            fn.apply(obj, args);
-        }&quot; did not throw
</del><ins>+PASS Element interface: calling removeAttribute(DOMString) on element with too few arguments must throw TypeError 
</ins><span class="cx"> PASS Element interface: element must inherit property &quot;removeAttributeNS&quot; with the proper type (16) 
</span><span class="cx"> PASS Element interface: calling removeAttributeNS(DOMString,DOMString) on element with too few arguments must throw TypeError 
</span><span class="cx"> PASS Element interface: element must inherit property &quot;hasAttribute&quot; with the proper type (17) 
</span><span class="cx"> PASS Element interface: calling hasAttribute(DOMString) on element with too few arguments must throw TypeError 
</span><span class="cx"> PASS Element interface: element must inherit property &quot;hasAttributeNS&quot; with the proper type (18) 
</span><del>-FAIL Element interface: calling hasAttributeNS(DOMString,DOMString) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
-            fn.apply(obj, args);
-        }&quot; did not throw
</del><ins>+PASS Element interface: calling hasAttributeNS(DOMString,DOMString) on element with too few arguments must throw TypeError 
</ins><span class="cx"> PASS Element interface: element must inherit property &quot;getAttributeNode&quot; with the proper type (19) 
</span><del>-FAIL Element interface: calling getAttributeNode(DOMString) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
-            fn.apply(obj, args);
-        }&quot; did not throw
</del><ins>+PASS Element interface: calling getAttributeNode(DOMString) on element with too few arguments must throw TypeError 
</ins><span class="cx"> PASS Element interface: element must inherit property &quot;getAttributeNodeNS&quot; with the proper type (20) 
</span><del>-FAIL Element interface: calling getAttributeNodeNS(DOMString,DOMString) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
-            fn.apply(obj, args);
-        }&quot; did not throw
</del><ins>+PASS Element interface: calling getAttributeNodeNS(DOMString,DOMString) on element with too few arguments must throw TypeError 
</ins><span class="cx"> PASS Element interface: element must inherit property &quot;setAttributeNode&quot; with the proper type (21) 
</span><span class="cx"> PASS Element interface: calling setAttributeNode(Attr) on element with too few arguments must throw TypeError 
</span><span class="cx"> PASS Element interface: element must inherit property &quot;setAttributeNodeNS&quot; with the proper type (22) 
</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 (203545 => 203546)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt        2016-07-22 01:40:22 UTC (rev 203545)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt        2016-07-22 02:21:23 UTC (rev 203546)
</span><span class="lines">@@ -1241,41 +1241,25 @@
</span><span class="cx"> PASS Element interface: document.createElement(&quot;noscript&quot;) must inherit property &quot;attributes&quot; with the proper type (8) 
</span><span class="cx"> FAIL Element interface: document.createElement(&quot;noscript&quot;) must inherit property &quot;getAttributeNames&quot; with the proper type (9) assert_inherits: property &quot;getAttributeNames&quot; not found in prototype chain
</span><span class="cx"> PASS Element interface: document.createElement(&quot;noscript&quot;) must inherit property &quot;getAttribute&quot; with the proper type (10) 
</span><del>-FAIL Element interface: calling getAttribute(DOMString) on document.createElement(&quot;noscript&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
-            fn.apply(obj, args);
-        }&quot; did not throw
</del><ins>+PASS Element interface: calling getAttribute(DOMString) on document.createElement(&quot;noscript&quot;) with too few arguments must throw TypeError 
</ins><span class="cx"> PASS Element interface: document.createElement(&quot;noscript&quot;) must inherit property &quot;getAttributeNS&quot; with the proper type (11) 
</span><del>-FAIL Element interface: calling getAttributeNS(DOMString,DOMString) on document.createElement(&quot;noscript&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
-            fn.apply(obj, args);
-        }&quot; did not throw
</del><ins>+PASS Element interface: calling getAttributeNS(DOMString,DOMString) on document.createElement(&quot;noscript&quot;) with too few arguments must throw TypeError 
</ins><span class="cx"> PASS Element interface: document.createElement(&quot;noscript&quot;) must inherit property &quot;setAttribute&quot; with the proper type (12) 
</span><del>-FAIL Element interface: calling setAttribute(DOMString,DOMString) on document.createElement(&quot;noscript&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
-            fn.apply(obj, args);
-        }&quot; did not throw
</del><ins>+PASS Element interface: calling setAttribute(DOMString,DOMString) on document.createElement(&quot;noscript&quot;) with too few arguments must throw TypeError 
</ins><span class="cx"> PASS Element interface: document.createElement(&quot;noscript&quot;) must inherit property &quot;setAttributeNS&quot; with the proper type (13) 
</span><del>-FAIL Element interface: calling setAttributeNS(DOMString,DOMString,DOMString) on document.createElement(&quot;noscript&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
-            fn.apply(obj, args);
-        }&quot; did not throw
</del><ins>+PASS Element interface: calling setAttributeNS(DOMString,DOMString,DOMString) on document.createElement(&quot;noscript&quot;) with too few arguments must throw TypeError 
</ins><span class="cx"> PASS Element interface: document.createElement(&quot;noscript&quot;) must inherit property &quot;removeAttribute&quot; with the proper type (14) 
</span><del>-FAIL Element interface: calling removeAttribute(DOMString) on document.createElement(&quot;noscript&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
-            fn.apply(obj, args);
-        }&quot; did not throw
</del><ins>+PASS Element interface: calling removeAttribute(DOMString) on document.createElement(&quot;noscript&quot;) with too few arguments must throw TypeError 
</ins><span class="cx"> PASS Element interface: document.createElement(&quot;noscript&quot;) must inherit property &quot;removeAttributeNS&quot; with the proper type (15) 
</span><span class="cx"> PASS Element interface: calling removeAttributeNS(DOMString,DOMString) on document.createElement(&quot;noscript&quot;) with too few arguments must throw TypeError 
</span><span class="cx"> PASS Element interface: document.createElement(&quot;noscript&quot;) must inherit property &quot;hasAttribute&quot; with the proper type (16) 
</span><span class="cx"> PASS Element interface: calling hasAttribute(DOMString) on document.createElement(&quot;noscript&quot;) with too few arguments must throw TypeError 
</span><span class="cx"> PASS Element interface: document.createElement(&quot;noscript&quot;) must inherit property &quot;hasAttributeNS&quot; with the proper type (17) 
</span><del>-FAIL Element interface: calling hasAttributeNS(DOMString,DOMString) on document.createElement(&quot;noscript&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
-            fn.apply(obj, args);
-        }&quot; did not throw
</del><ins>+PASS Element interface: calling hasAttributeNS(DOMString,DOMString) on document.createElement(&quot;noscript&quot;) with too few arguments must throw TypeError 
</ins><span class="cx"> PASS Element interface: document.createElement(&quot;noscript&quot;) must inherit property &quot;getAttributeNode&quot; with the proper type (18) 
</span><del>-FAIL Element interface: calling getAttributeNode(DOMString) on document.createElement(&quot;noscript&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
-            fn.apply(obj, args);
-        }&quot; did not throw
</del><ins>+PASS Element interface: calling getAttributeNode(DOMString) on document.createElement(&quot;noscript&quot;) with too few arguments must throw TypeError 
</ins><span class="cx"> PASS Element interface: document.createElement(&quot;noscript&quot;) must inherit property &quot;getAttributeNodeNS&quot; with the proper type (19) 
</span><del>-FAIL Element interface: calling getAttributeNodeNS(DOMString,DOMString) on document.createElement(&quot;noscript&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
-            fn.apply(obj, args);
-        }&quot; did not throw
</del><ins>+PASS Element interface: calling getAttributeNodeNS(DOMString,DOMString) on document.createElement(&quot;noscript&quot;) with too few arguments must throw TypeError 
</ins><span class="cx"> PASS Element interface: document.createElement(&quot;noscript&quot;) must inherit property &quot;setAttributeNode&quot; with the proper type (20) 
</span><span class="cx"> PASS Element interface: calling setAttributeNode(Attr) on document.createElement(&quot;noscript&quot;) with too few arguments must throw TypeError 
</span><span class="cx"> PASS Element interface: document.createElement(&quot;noscript&quot;) must inherit property &quot;setAttributeNodeNS&quot; with the proper type (21) 
</span></span></pre></div>
<a id="trunkLayoutTestsmediavideoplaysinlineexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/video-playsinline-expected.txt (203545 => 203546)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/video-playsinline-expected.txt        2016-07-22 01:40:22 UTC (rev 203545)
+++ trunk/LayoutTests/media/video-playsinline-expected.txt        2016-07-22 02:21:23 UTC (rev 203546)
</span><span class="lines">@@ -1,7 +1,7 @@
</span><span class="cx"> RUN(internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(true))
</span><span class="cx"> RUN(internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(true))
</span><span class="cx"> RUN(video.playsInline = false)
</span><del>-RUN(video.removeAttribute(&quot;webkit-playsinline&quot;))
</del><ins>+RUN(video.removeAttribute(&quot;webkit-playsinline&quot;, &quot;&quot;))
</ins><span class="cx"> EVENT(canplaythrough)
</span><span class="cx"> RUN(video.play())
</span><span class="cx"> EVENT(playing)
</span><span class="lines">@@ -9,7 +9,7 @@
</span><span class="cx"> RUN(internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(true))
</span><span class="cx"> RUN(internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(true))
</span><span class="cx"> RUN(video.playsInline = false)
</span><del>-RUN(video.setAttribute(&quot;webkit-playsinline&quot;))
</del><ins>+RUN(video.setAttribute(&quot;webkit-playsinline&quot;, &quot;&quot;))
</ins><span class="cx"> EVENT(canplaythrough)
</span><span class="cx"> RUN(video.play())
</span><span class="cx"> EVENT(playing)
</span><span class="lines">@@ -17,7 +17,7 @@
</span><span class="cx"> RUN(internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(true))
</span><span class="cx"> RUN(internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(false))
</span><span class="cx"> RUN(video.playsInline = false)
</span><del>-RUN(video.setAttribute(&quot;webkit-playsinline&quot;))
</del><ins>+RUN(video.setAttribute(&quot;webkit-playsinline&quot;, &quot;&quot;))
</ins><span class="cx"> EVENT(canplaythrough)
</span><span class="cx"> RUN(video.play())
</span><span class="cx"> EVENT(playing)
</span><span class="lines">@@ -25,7 +25,7 @@
</span><span class="cx"> RUN(internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(true))
</span><span class="cx"> RUN(internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(false))
</span><span class="cx"> RUN(video.playsInline = false)
</span><del>-RUN(video.removeAttribute(&quot;webkit-playsinline&quot;))
</del><ins>+RUN(video.removeAttribute(&quot;webkit-playsinline&quot;, &quot;&quot;))
</ins><span class="cx"> EVENT(canplaythrough)
</span><span class="cx"> RUN(video.play())
</span><span class="cx"> EVENT(playing)
</span><span class="lines">@@ -33,7 +33,7 @@
</span><span class="cx"> RUN(internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(true))
</span><span class="cx"> RUN(internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(true))
</span><span class="cx"> RUN(video.playsInline = true)
</span><del>-RUN(video.setAttribute(&quot;webkit-playsinline&quot;))
</del><ins>+RUN(video.setAttribute(&quot;webkit-playsinline&quot;, &quot;&quot;))
</ins><span class="cx"> EVENT(canplaythrough)
</span><span class="cx"> RUN(video.play())
</span><span class="cx"> EVENT(playing)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx"> RUN(internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(true))
</span><span class="cx"> RUN(internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(true))
</span><span class="cx"> RUN(video.playsInline = true)
</span><del>-RUN(video.removeAttribute(&quot;webkit-playsinline&quot;))
</del><ins>+RUN(video.removeAttribute(&quot;webkit-playsinline&quot;, &quot;&quot;))
</ins><span class="cx"> EVENT(canplaythrough)
</span><span class="cx"> RUN(video.play())
</span><span class="cx"> EVENT(playing)
</span><span class="lines">@@ -49,7 +49,7 @@
</span><span class="cx"> RUN(internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(true))
</span><span class="cx"> RUN(internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(false))
</span><span class="cx"> RUN(video.playsInline = true)
</span><del>-RUN(video.setAttribute(&quot;webkit-playsinline&quot;))
</del><ins>+RUN(video.setAttribute(&quot;webkit-playsinline&quot;, &quot;&quot;))
</ins><span class="cx"> EVENT(canplaythrough)
</span><span class="cx"> RUN(video.play())
</span><span class="cx"> EVENT(playing)
</span><span class="lines">@@ -57,7 +57,7 @@
</span><span class="cx"> RUN(internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(true))
</span><span class="cx"> RUN(internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(false))
</span><span class="cx"> RUN(video.playsInline = true)
</span><del>-RUN(video.removeAttribute(&quot;webkit-playsinline&quot;))
</del><ins>+RUN(video.removeAttribute(&quot;webkit-playsinline&quot;, &quot;&quot;))
</ins><span class="cx"> EVENT(canplaythrough)
</span><span class="cx"> RUN(video.play())
</span><span class="cx"> EVENT(playing)
</span><span class="lines">@@ -65,7 +65,7 @@
</span><span class="cx"> RUN(internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(false))
</span><span class="cx"> RUN(internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(true))
</span><span class="cx"> RUN(video.playsInline = false)
</span><del>-RUN(video.setAttribute(&quot;webkit-playsinline&quot;))
</del><ins>+RUN(video.setAttribute(&quot;webkit-playsinline&quot;, &quot;&quot;))
</ins><span class="cx"> EVENT(canplaythrough)
</span><span class="cx"> RUN(video.play())
</span><span class="cx"> EVENT(playing)
</span><span class="lines">@@ -73,7 +73,7 @@
</span><span class="cx"> RUN(internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(false))
</span><span class="cx"> RUN(internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(true))
</span><span class="cx"> RUN(video.playsInline = false)
</span><del>-RUN(video.removeAttribute(&quot;webkit-playsinline&quot;))
</del><ins>+RUN(video.removeAttribute(&quot;webkit-playsinline&quot;, &quot;&quot;))
</ins><span class="cx"> EVENT(canplaythrough)
</span><span class="cx"> RUN(video.play())
</span><span class="cx"> EVENT(playing)
</span><span class="lines">@@ -81,7 +81,7 @@
</span><span class="cx"> RUN(internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(false))
</span><span class="cx"> RUN(internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(false))
</span><span class="cx"> RUN(video.playsInline = false)
</span><del>-RUN(video.setAttribute(&quot;webkit-playsinline&quot;))
</del><ins>+RUN(video.setAttribute(&quot;webkit-playsinline&quot;, &quot;&quot;))
</ins><span class="cx"> EVENT(canplaythrough)
</span><span class="cx"> RUN(video.play())
</span><span class="cx"> EVENT(playing)
</span><span class="lines">@@ -89,7 +89,7 @@
</span><span class="cx"> RUN(internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(false))
</span><span class="cx"> RUN(internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(false))
</span><span class="cx"> RUN(video.playsInline = false)
</span><del>-RUN(video.removeAttribute(&quot;webkit-playsinline&quot;))
</del><ins>+RUN(video.removeAttribute(&quot;webkit-playsinline&quot;, &quot;&quot;))
</ins><span class="cx"> EVENT(canplaythrough)
</span><span class="cx"> RUN(video.play())
</span><span class="cx"> EVENT(playing)
</span><span class="lines">@@ -97,7 +97,7 @@
</span><span class="cx"> RUN(internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(false))
</span><span class="cx"> RUN(internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(true))
</span><span class="cx"> RUN(video.playsInline = true)
</span><del>-RUN(video.setAttribute(&quot;webkit-playsinline&quot;))
</del><ins>+RUN(video.setAttribute(&quot;webkit-playsinline&quot;, &quot;&quot;))
</ins><span class="cx"> EVENT(canplaythrough)
</span><span class="cx"> RUN(video.play())
</span><span class="cx"> EVENT(playing)
</span><span class="lines">@@ -105,7 +105,7 @@
</span><span class="cx"> RUN(internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(false))
</span><span class="cx"> RUN(internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(true))
</span><span class="cx"> RUN(video.playsInline = true)
</span><del>-RUN(video.removeAttribute(&quot;webkit-playsinline&quot;))
</del><ins>+RUN(video.removeAttribute(&quot;webkit-playsinline&quot;, &quot;&quot;))
</ins><span class="cx"> EVENT(canplaythrough)
</span><span class="cx"> RUN(video.play())
</span><span class="cx"> EVENT(playing)
</span><span class="lines">@@ -113,7 +113,7 @@
</span><span class="cx"> RUN(internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(false))
</span><span class="cx"> RUN(internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(false))
</span><span class="cx"> RUN(video.playsInline = true)
</span><del>-RUN(video.setAttribute(&quot;webkit-playsinline&quot;))
</del><ins>+RUN(video.setAttribute(&quot;webkit-playsinline&quot;, &quot;&quot;))
</ins><span class="cx"> EVENT(canplaythrough)
</span><span class="cx"> RUN(video.play())
</span><span class="cx"> EVENT(playing)
</span><span class="lines">@@ -121,7 +121,7 @@
</span><span class="cx"> RUN(internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(false))
</span><span class="cx"> RUN(internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(false))
</span><span class="cx"> RUN(video.playsInline = true)
</span><del>-RUN(video.removeAttribute(&quot;webkit-playsinline&quot;))
</del><ins>+RUN(video.removeAttribute(&quot;webkit-playsinline&quot;, &quot;&quot;))
</ins><span class="cx"> EVENT(canplaythrough)
</span><span class="cx"> RUN(video.play())
</span><span class="cx"> EVENT(playing)
</span></span></pre></div>
<a id="trunkLayoutTestsmediavideoplaysinlinehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/video-playsinline.html (203545 => 203546)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/video-playsinline.html        2016-07-22 01:40:22 UTC (rev 203545)
+++ trunk/LayoutTests/media/video-playsinline.html        2016-07-22 02:21:23 UTC (rev 203546)
</span><span class="lines">@@ -26,7 +26,7 @@
</span><span class="cx">     video.controls = true;
</span><span class="cx">     video.src = findMediaFile('video', 'content/test');
</span><span class="cx">     run('video.playsInline = ' + hasPlaysInline);
</span><del>-    run('video.' + (hasWebKitPlaysInline ? 'set' : 'remove') + 'Attribute(&quot;webkit-playsinline&quot;)');
</del><ins>+    run('video.' + (hasWebKitPlaysInline ? 'set' : 'remove') + 'Attribute(&quot;webkit-playsinline&quot;, &quot;&quot;)');
</ins><span class="cx">     waitForEventOnce('canplaythrough', () =&gt; {
</span><span class="cx">         runWithKeyDown(() =&gt; {
</span><span class="cx">             run('video.play()');
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (203545 => 203546)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-07-22 01:40:22 UTC (rev 203545)
+++ trunk/Source/WebCore/ChangeLog        2016-07-22 02:21:23 UTC (rev 203546)
</span><span class="lines">@@ -1,3 +1,22 @@
</span><ins>+2016-07-21  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Make parameters mandatory for attribute-related API on Element
+        https://bugs.webkit.org/show_bug.cgi?id=160059
+
+        Reviewed by Ryosuke Niwa.
+
+        Make parameters mandatory for attribute-related API on Element to match
+        the specification:
+        - https://dom.spec.whatwg.org/#element
+
+        Firefox and Chrome agree with the specification. Calling this API
+        without the parameters does not make much sense, especially considering
+        WebKit uses the string &quot;undefined&quot; when the parameter is omitted.
+
+        No new tests, rebaselined existing tests.
+
+        * dom/Element.idl:
+
</ins><span class="cx"> 2016-07-21  Myles C. Maxfield  &lt;mmaxfield@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Remove support for deprecated SPI inlineMediaPlaybackRequiresPlaysInlineAttribute
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Element.idl (203545 => 203546)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Element.idl        2016-07-22 01:40:22 UTC (rev 203545)
+++ trunk/Source/WebCore/dom/Element.idl        2016-07-22 02:21:23 UTC (rev 203546)
</span><span class="lines">@@ -29,19 +29,16 @@
</span><span class="cx"> 
</span><span class="cx">     readonly attribute DOMString? tagName;
</span><span class="cx"> 
</span><del>-    // FIXME: Using &quot;undefined&quot; as default parameter value is wrong.
-    DOMString? getAttribute(optional DOMString name = &quot;undefined&quot;);
</del><ins>+    DOMString? getAttribute(DOMString name);
</ins><span class="cx"> 
</span><span class="cx">     [ObjCLegacyUnnamedParameters, RaisesException, InvokesCustomElementLifecycleCallbacks]
</span><span class="cx"> 
</span><del>-    // FIXME: Using &quot;undefined&quot; as default parameter value is wrong.
-    void setAttribute(optional DOMString name = &quot;undefined&quot;, optional DOMString value = &quot;undefined&quot;);
</del><ins>+    void setAttribute(DOMString name, DOMString value);
</ins><span class="cx"> 
</span><del>-    // FIXME: Using &quot;undefined&quot; as default parameter value is wrong.
-    [InvokesCustomElementLifecycleCallbacks] void removeAttribute(optional DOMString name = &quot;undefined&quot;);
-    Attr getAttributeNode(optional DOMString name = &quot;undefined&quot;);
</del><ins>+    [InvokesCustomElementLifecycleCallbacks] void removeAttribute(DOMString name);
+    Attr? getAttributeNode(DOMString name);
</ins><span class="cx"> 
</span><del>-    [RaisesException, InvokesCustomElementLifecycleCallbacks] Attr setAttributeNode(Attr newAttr);
</del><ins>+    [RaisesException, InvokesCustomElementLifecycleCallbacks] Attr? setAttributeNode(Attr newAttr);
</ins><span class="cx">     [RaisesException, InvokesCustomElementLifecycleCallbacks] Attr removeAttributeNode(Attr oldAttr);
</span><span class="cx"> 
</span><span class="cx"> #if defined(LANGUAGE_OBJECTIVE_C) &amp;&amp; LANGUAGE_OBJECTIVE_C
</span><span class="lines">@@ -59,13 +56,11 @@
</span><span class="cx"> 
</span><span class="cx">     // DOM Level 2 Core
</span><span class="cx"> 
</span><del>-    // FIXME: Using &quot;undefined&quot; as default parameter value is wrong.
-    [ObjCLegacyUnnamedParameters] DOMString? getAttributeNS(optional DOMString? namespaceURI = null, optional DOMString localName = &quot;undefined&quot;);
</del><ins>+    [ObjCLegacyUnnamedParameters] DOMString? getAttributeNS(DOMString? namespaceURI, DOMString localName);
</ins><span class="cx"> 
</span><span class="cx">     [ObjCLegacyUnnamedParameters, RaisesException, InvokesCustomElementLifecycleCallbacks]
</span><span class="cx"> 
</span><del>-    // FIXME: Using &quot;undefined&quot; as default parameter value is wrong.
-    void setAttributeNS(optional DOMString? namespaceURI = null, optional DOMString qualifiedName = &quot;undefined&quot;, optional DOMString value = &quot;undefined&quot;);
</del><ins>+    void setAttributeNS(DOMString? namespaceURI, DOMString qualifiedName, DOMString value);
</ins><span class="cx"> 
</span><span class="cx">     [ObjCLegacyUnnamedParameters, InvokesCustomElementLifecycleCallbacks] void removeAttributeNS(DOMString? namespaceURI, DOMString localName);
</span><span class="cx"> 
</span><span class="lines">@@ -76,13 +71,12 @@
</span><span class="cx">     HTMLCollection getElementsByTagNameNS(optional DOMString? namespaceURI = null, optional DOMString localName = &quot;undefined&quot;);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    // FIXME: Using &quot;undefined&quot; as default parameter value is wrong.
-    [ObjCLegacyUnnamedParameters] Attr getAttributeNodeNS(optional DOMString? namespaceURI = null, optional DOMString localName = &quot;undefined&quot;);
-    [RaisesException, InvokesCustomElementLifecycleCallbacks] Attr setAttributeNodeNS(Attr newAttr);
</del><ins>+    [ObjCLegacyUnnamedParameters] Attr? getAttributeNodeNS(DOMString? namespaceURI, DOMString localName);
+    [RaisesException, InvokesCustomElementLifecycleCallbacks] Attr? setAttributeNodeNS(Attr newAttr);
</ins><span class="cx">     boolean hasAttribute(DOMString name);
</span><del>-    // FIXME: Using &quot;undefined&quot; as default parameter value is wrong.
-    [ObjCLegacyUnnamedParameters] boolean hasAttributeNS(optional DOMString? namespaceURI = null, optional DOMString localName = &quot;undefined&quot;);
</del><span class="cx"> 
</span><ins>+    [ObjCLegacyUnnamedParameters] boolean hasAttributeNS(DOMString? namespaceURI, DOMString localName);
+
</ins><span class="cx">     [ImplementedAs=cssomStyle] readonly attribute CSSStyleDeclaration style;
</span><span class="cx"> 
</span><span class="cx">     // DOM 4
</span></span></pre>
</div>
</div>

</body>
</html>