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

<h3>Log Message</h3>
<pre>Make parameters to Element.getElementsBy*() operations mandatory
https://bugs.webkit.org/show_bug.cgi?id=160060

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:

Source/WebCore:

Make parameters to Element.getElementsBy*() operations mandatory to
match the specification:
- https://dom.spec.whatwg.org/#interface-element

Firefox and Chrome agree with the specification so the compatibility
risk should be low.

It makes very little sense to call these operations without parameter,
especially considering WebKit uses the string &quot;undefined&quot; if the
parameter is omitted.

No new tests, rebaselined existing tests.

* dom/Element.idl:

LayoutTests:

Drop cases that were calling the operation without parameter.

* fast/dom/getElementsByClassName/dumpHTMLCollection-expected.txt:
* fast/dom/getElementsByClassName/dumpHTMLCollection.html:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</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="#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 (203546 => 203547)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-07-22 02:21:23 UTC (rev 203546)
+++ trunk/LayoutTests/ChangeLog        2016-07-22 02:42:27 UTC (rev 203547)
</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 to Element.getElementsBy*() operations mandatory
+        https://bugs.webkit.org/show_bug.cgi?id=160060
+
+        Reviewed by Darin Adler.
+
+        Drop cases that were calling the operation without parameter.
+        
+        * fast/dom/getElementsByClassName/dumpHTMLCollection-expected.txt:
+        * fast/dom/getElementsByClassName/dumpHTMLCollection.html:
+
+2016-07-21  Chris Dumez  &lt;cdumez@apple.com&gt;
+
</ins><span class="cx">         Make parameters mandatory for attribute-related API on Element
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=160059
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/ChangeLog (203546 => 203547)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/ChangeLog        2016-07-22 02:21:23 UTC (rev 203546)
+++ trunk/LayoutTests/imported/w3c/ChangeLog        2016-07-22 02:42:27 UTC (rev 203547)
</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 to Element.getElementsBy*() operations mandatory
+        https://bugs.webkit.org/show_bug.cgi?id=160060
+
+        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:
+
+2016-07-21  Chris Dumez  &lt;cdumez@apple.com&gt;
+
</ins><span class="cx">         Make parameters mandatory for attribute-related API on Element
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=160059
</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 (203546 => 203547)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces-expected.txt        2016-07-22 02:21:23 UTC (rev 203546)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces-expected.txt        2016-07-22 02:42:27 UTC (rev 203547)
</span><span class="lines">@@ -849,9 +849,9 @@
</span><span class="cx"> PASS Element interface: operation closest(DOMString) 
</span><span class="cx"> PASS Element interface: operation matches(DOMString) 
</span><span class="cx"> PASS Element interface: operation webkitMatchesSelector(DOMString) 
</span><del>-FAIL Element interface: operation getElementsByTagName(DOMString) assert_equals: property has wrong .length expected 1 but got 0
-FAIL Element interface: operation getElementsByTagNameNS(DOMString,DOMString) assert_equals: property has wrong .length expected 2 but got 0
-FAIL Element interface: operation getElementsByClassName(DOMString) assert_equals: property has wrong .length expected 1 but got 0
</del><ins>+PASS Element interface: operation getElementsByTagName(DOMString) 
+PASS Element interface: operation getElementsByTagNameNS(DOMString,DOMString) 
+PASS Element interface: operation getElementsByClassName(DOMString) 
</ins><span class="cx"> FAIL Element interface: operation insertAdjacentElement(DOMString,Element) assert_own_property: interface prototype object missing non-static operation expected property &quot;insertAdjacentElement&quot; missing
</span><span class="cx"> FAIL Element interface: operation insertAdjacentText(DOMString,DOMString) assert_own_property: interface prototype object missing non-static operation expected property &quot;insertAdjacentText&quot; missing
</span><span class="cx"> PASS Element interface: attribute children 
</span><span class="lines">@@ -918,17 +918,11 @@
</span><span class="cx"> PASS Element interface: element must inherit property &quot;webkitMatchesSelector&quot; with the proper type (28) 
</span><span class="cx"> PASS Element interface: calling webkitMatchesSelector(DOMString) on element with too few arguments must throw TypeError 
</span><span class="cx"> PASS Element interface: element must inherit property &quot;getElementsByTagName&quot; with the proper type (29) 
</span><del>-FAIL Element interface: calling getElementsByTagName(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 getElementsByTagName(DOMString) on element with too few arguments must throw TypeError 
</ins><span class="cx"> PASS Element interface: element must inherit property &quot;getElementsByTagNameNS&quot; with the proper type (30) 
</span><del>-FAIL Element interface: calling getElementsByTagNameNS(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 getElementsByTagNameNS(DOMString,DOMString) on element with too few arguments must throw TypeError 
</ins><span class="cx"> PASS Element interface: element must inherit property &quot;getElementsByClassName&quot; with the proper type (31) 
</span><del>-FAIL Element interface: calling getElementsByClassName(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 getElementsByClassName(DOMString) on element with too few arguments must throw TypeError 
</ins><span class="cx"> FAIL Element interface: element must inherit property &quot;insertAdjacentElement&quot; with the proper type (32) assert_inherits: property &quot;insertAdjacentElement&quot; not found in prototype chain
</span><span class="cx"> FAIL Element interface: calling insertAdjacentElement(DOMString,Element) on element with too few arguments must throw TypeError assert_inherits: property &quot;insertAdjacentElement&quot; not found in prototype chain
</span><span class="cx"> FAIL Element interface: element must inherit property &quot;insertAdjacentText&quot; with the proper type (33) assert_inherits: property &quot;insertAdjacentText&quot; not found in prototype chain
</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 (203546 => 203547)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt        2016-07-22 02:21:23 UTC (rev 203546)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt        2016-07-22 02:42:27 UTC (rev 203547)
</span><span class="lines">@@ -1271,17 +1271,11 @@
</span><span class="cx"> PASS Element interface: document.createElement(&quot;noscript&quot;) must inherit property &quot;matches&quot; with the proper type (24) 
</span><span class="cx"> PASS Element interface: calling matches(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;getElementsByTagName&quot; with the proper type (25) 
</span><del>-FAIL Element interface: calling getElementsByTagName(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 getElementsByTagName(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;getElementsByTagNameNS&quot; with the proper type (26) 
</span><del>-FAIL Element interface: calling getElementsByTagNameNS(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 getElementsByTagNameNS(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;getElementsByClassName&quot; with the proper type (27) 
</span><del>-FAIL Element interface: calling getElementsByClassName(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 getElementsByClassName(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;children&quot; with the proper type (28) 
</span><span class="cx"> PASS Element interface: document.createElement(&quot;noscript&quot;) must inherit property &quot;firstElementChild&quot; with the proper type (29) 
</span><span class="cx"> PASS Element interface: document.createElement(&quot;noscript&quot;) must inherit property &quot;lastElementChild&quot; with the proper type (30) 
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (203546 => 203547)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-07-22 02:21:23 UTC (rev 203546)
+++ trunk/Source/WebCore/ChangeLog        2016-07-22 02:42:27 UTC (rev 203547)
</span><span class="lines">@@ -1,5 +1,27 @@
</span><span class="cx"> 2016-07-21  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Make parameters to Element.getElementsBy*() operations mandatory
+        https://bugs.webkit.org/show_bug.cgi?id=160060
+
+        Reviewed by Darin Adler.
+
+        Make parameters to Element.getElementsBy*() operations mandatory to
+        match the specification:
+        - https://dom.spec.whatwg.org/#interface-element
+
+        Firefox and Chrome agree with the specification so the compatibility
+        risk should be low.
+
+        It makes very little sense to call these operations without parameter,
+        especially considering WebKit uses the string &quot;undefined&quot; if the
+        parameter is omitted.
+
+        No new tests, rebaselined existing tests.
+
+        * dom/Element.idl:
+
+2016-07-21  Chris Dumez  &lt;cdumez@apple.com&gt;
+
</ins><span class="cx">         Make parameters mandatory for attribute-related API on Element
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=160059
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Element.idl (203546 => 203547)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Element.idl        2016-07-22 02:21:23 UTC (rev 203546)
+++ trunk/Source/WebCore/dom/Element.idl        2016-07-22 02:42:27 UTC (rev 203547)
</span><span class="lines">@@ -42,10 +42,9 @@
</span><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><del>-    [ImplementedAs=getElementsByTagNameForObjC] NodeList getElementsByTagName(optional DOMString name);
</del><ins>+    [ImplementedAs=getElementsByTagNameForObjC] NodeList getElementsByTagName(DOMString name);
</ins><span class="cx"> #else
</span><del>-    // FIXME: Using &quot;undefined&quot; as default parameter value is wrong.
-    HTMLCollection getElementsByTagName(optional DOMString name = &quot;undefined&quot;);
</del><ins>+    HTMLCollection getElementsByTagName(DOMString name);
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if !defined(LANGUAGE_OBJECTIVE_C)
</span><span class="lines">@@ -65,10 +64,9 @@
</span><span class="cx">     [ObjCLegacyUnnamedParameters, InvokesCustomElementLifecycleCallbacks] void removeAttributeNS(DOMString? namespaceURI, DOMString localName);
</span><span class="cx"> 
</span><span class="cx"> #if defined(LANGUAGE_OBJECTIVE_C) &amp;&amp; LANGUAGE_OBJECTIVE_C
</span><del>-    [ObjCLegacyUnnamedParameters, ImplementedAs=getElementsByTagNameNSForObjC] NodeList getElementsByTagNameNS(optional DOMString namespaceURI, optional DOMString localName);
</del><ins>+    [ObjCLegacyUnnamedParameters, ImplementedAs=getElementsByTagNameNSForObjC] NodeList getElementsByTagNameNS(DOMString? namespaceURI, DOMString localName);
</ins><span class="cx"> #else
</span><del>-    // FIXME: Using &quot;undefined&quot; as default parameter value is wrong.
-    HTMLCollection getElementsByTagNameNS(optional DOMString? namespaceURI = null, optional DOMString localName = &quot;undefined&quot;);
</del><ins>+    HTMLCollection getElementsByTagNameNS(DOMString? namespaceURI, DOMString localName);
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     [ObjCLegacyUnnamedParameters] Attr? getAttributeNodeNS(DOMString? namespaceURI, DOMString localName);
</span><span class="lines">@@ -128,10 +126,9 @@
</span><span class="cx"> 
</span><span class="cx">     // HTML 5
</span><span class="cx"> #if defined(LANGUAGE_OBJECTIVE_C) &amp;&amp; LANGUAGE_OBJECTIVE_C
</span><del>-    [ImplementedAs=getElementsByClassNameForObjC] NodeList getElementsByClassName(optional DOMString name);
</del><ins>+    [ImplementedAs=getElementsByClassNameForObjC] NodeList getElementsByClassName(DOMString name);
</ins><span class="cx"> #else
</span><del>-    // FIXME: Using &quot;undefined&quot; as default parameter value is wrong.
-    HTMLCollection getElementsByClassName(optional DOMString name = &quot;undefined&quot;);
</del><ins>+    HTMLCollection getElementsByClassName(DOMString name);
</ins><span class="cx"> #endif
</span><span class="cx">     [TreatNullAs=EmptyString, SetterRaisesException] attribute DOMString innerHTML;
</span><span class="cx">     [TreatNullAs=EmptyString, SetterRaisesException] attribute DOMString outerHTML;
</span></span></pre>
</div>
</div>

</body>
</html>