<!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>[203806] 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/203806">203806</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2016-07-27 16:50:29 -0700 (Wed, 27 Jul 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>First parameter to HTMLMediaElement.canPlayType() should be mandatory
https://bugs.webkit.org/show_bug.cgi?id=160275

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline w3c test now that more checks are passing.

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

Source/WebCore:

First parameter to HTMLMediaElement.canPlayType() should be mandatory:
- https://html.spec.whatwg.org/multipage/embedded-content.html#htmlmediaelement

Firefox and Chrome agree with the specification.

No new tests, rebaselined existing tests.

* html/HTMLMediaElement.idl:

LayoutTests:

Update existing tests to reflect behavior change.

* media/encrypted-media/encrypted-media-can-play-type.html:
* media/media-can-play-type-expected.txt:
* media/media-can-play-type.html:
* platform/mac/media/encrypted-media/encrypted-media-can-play-type-expected.txt:</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="#trunkLayoutTestsimportedw3cwebplatformtestshtmldominterfacesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt</a></li>
<li><a href="#trunkLayoutTestsmediaencryptedmediaencryptedmediacanplaytypehtml">trunk/LayoutTests/media/encrypted-media/encrypted-media-can-play-type.html</a></li>
<li><a href="#trunkLayoutTestsmediamediacanplaytypeexpectedtxt">trunk/LayoutTests/media/media-can-play-type-expected.txt</a></li>
<li><a href="#trunkLayoutTestsmediamediacanplaytypehtml">trunk/LayoutTests/media/media-can-play-type.html</a></li>
<li><a href="#trunkLayoutTestsplatformmacmediaencryptedmediaencryptedmediacanplaytypeexpectedtxt">trunk/LayoutTests/platform/mac/media/encrypted-media/encrypted-media-can-play-type-expected.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMediaElementidl">trunk/Source/WebCore/html/HTMLMediaElement.idl</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (203805 => 203806)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-07-27 23:50:07 UTC (rev 203805)
+++ trunk/LayoutTests/ChangeLog        2016-07-27 23:50:29 UTC (rev 203806)
</span><span class="lines">@@ -1,5 +1,19 @@
</span><span class="cx"> 2016-07-27  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        First parameter to HTMLMediaElement.canPlayType() should be mandatory
+        https://bugs.webkit.org/show_bug.cgi?id=160275
+
+        Reviewed by Ryosuke Niwa.
+
+        Update existing tests to reflect behavior change.
+
+        * media/encrypted-media/encrypted-media-can-play-type.html:
+        * media/media-can-play-type-expected.txt:
+        * media/media-can-play-type.html:
+        * platform/mac/media/encrypted-media/encrypted-media-can-play-type-expected.txt:
+
+2016-07-27  Chris Dumez  &lt;cdumez@apple.com&gt;
+
</ins><span class="cx">         Parameters to insertAdjacentText() / insertAdjacentHTML() should be mandatory
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=160274
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/ChangeLog (203805 => 203806)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/ChangeLog        2016-07-27 23:50:07 UTC (rev 203805)
+++ trunk/LayoutTests/imported/w3c/ChangeLog        2016-07-27 23:50:29 UTC (rev 203806)
</span><span class="lines">@@ -1,5 +1,16 @@
</span><span class="cx"> 2016-07-27  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        First parameter to HTMLMediaElement.canPlayType() should be mandatory
+        https://bugs.webkit.org/show_bug.cgi?id=160275
+
+        Reviewed by Ryosuke Niwa.
+
+        Rebaseline w3c test now that more checks are passing.
+
+        * web-platform-tests/html/dom/interfaces-expected.txt:
+
+2016-07-27  Chris Dumez  &lt;cdumez@apple.com&gt;
+
</ins><span class="cx">         First parameter to setTimeout() / setInterval() should be mandatory
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=160277
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmldominterfacesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt (203805 => 203806)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt        2016-07-27 23:50:07 UTC (rev 203805)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt        2016-07-27 23:50:29 UTC (rev 203806)
</span><span class="lines">@@ -1850,9 +1850,7 @@
</span><span class="cx"> PASS HTMLMediaElement interface: document.createElement(&quot;video&quot;) must inherit property &quot;buffered&quot; with the proper type (10) 
</span><span class="cx"> PASS HTMLMediaElement interface: document.createElement(&quot;video&quot;) must inherit property &quot;load&quot; with the proper type (11) 
</span><span class="cx"> PASS HTMLMediaElement interface: document.createElement(&quot;video&quot;) must inherit property &quot;canPlayType&quot; with the proper type (12) 
</span><del>-FAIL HTMLMediaElement interface: calling canPlayType(DOMString) on document.createElement(&quot;video&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 HTMLMediaElement interface: calling canPlayType(DOMString) on document.createElement(&quot;video&quot;) with too few arguments must throw TypeError 
</ins><span class="cx"> PASS HTMLMediaElement interface: document.createElement(&quot;video&quot;) must inherit property &quot;HAVE_NOTHING&quot; with the proper type (13) 
</span><span class="cx"> PASS HTMLMediaElement interface: document.createElement(&quot;video&quot;) must inherit property &quot;HAVE_METADATA&quot; with the proper type (14) 
</span><span class="cx"> PASS HTMLMediaElement interface: document.createElement(&quot;video&quot;) must inherit property &quot;HAVE_CURRENT_DATA&quot; with the proper type (15) 
</span><span class="lines">@@ -1906,9 +1904,7 @@
</span><span class="cx"> PASS HTMLMediaElement interface: document.createElement(&quot;audio&quot;) must inherit property &quot;buffered&quot; with the proper type (10) 
</span><span class="cx"> PASS HTMLMediaElement interface: document.createElement(&quot;audio&quot;) must inherit property &quot;load&quot; with the proper type (11) 
</span><span class="cx"> PASS HTMLMediaElement interface: document.createElement(&quot;audio&quot;) must inherit property &quot;canPlayType&quot; with the proper type (12) 
</span><del>-FAIL HTMLMediaElement interface: calling canPlayType(DOMString) on document.createElement(&quot;audio&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 HTMLMediaElement interface: calling canPlayType(DOMString) on document.createElement(&quot;audio&quot;) with too few arguments must throw TypeError 
</ins><span class="cx"> PASS HTMLMediaElement interface: document.createElement(&quot;audio&quot;) must inherit property &quot;HAVE_NOTHING&quot; with the proper type (13) 
</span><span class="cx"> PASS HTMLMediaElement interface: document.createElement(&quot;audio&quot;) must inherit property &quot;HAVE_METADATA&quot; with the proper type (14) 
</span><span class="cx"> PASS HTMLMediaElement interface: document.createElement(&quot;audio&quot;) must inherit property &quot;HAVE_CURRENT_DATA&quot; with the proper type (15) 
</span><span class="lines">@@ -1957,9 +1953,7 @@
</span><span class="cx"> PASS HTMLMediaElement interface: new Audio() must inherit property &quot;buffered&quot; with the proper type (10) 
</span><span class="cx"> PASS HTMLMediaElement interface: new Audio() must inherit property &quot;load&quot; with the proper type (11) 
</span><span class="cx"> PASS HTMLMediaElement interface: new Audio() must inherit property &quot;canPlayType&quot; with the proper type (12) 
</span><del>-FAIL HTMLMediaElement interface: calling canPlayType(DOMString) on new Audio() 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 HTMLMediaElement interface: calling canPlayType(DOMString) on new Audio() with too few arguments must throw TypeError 
</ins><span class="cx"> PASS HTMLMediaElement interface: new Audio() must inherit property &quot;HAVE_NOTHING&quot; with the proper type (13) 
</span><span class="cx"> PASS HTMLMediaElement interface: new Audio() must inherit property &quot;HAVE_METADATA&quot; with the proper type (14) 
</span><span class="cx"> PASS HTMLMediaElement interface: new Audio() must inherit property &quot;HAVE_CURRENT_DATA&quot; with the proper type (15) 
</span><span class="lines">@@ -2064,7 +2058,7 @@
</span><span class="cx"> PASS HTMLMediaElement interface: attribute preload 
</span><span class="cx"> PASS HTMLMediaElement interface: attribute buffered 
</span><span class="cx"> PASS HTMLMediaElement interface: operation load() 
</span><del>-FAIL HTMLMediaElement interface: operation canPlayType(DOMString) assert_equals: property has wrong .length expected 1 but got 0
</del><ins>+PASS HTMLMediaElement interface: operation canPlayType(DOMString) 
</ins><span class="cx"> PASS HTMLMediaElement interface: constant HAVE_NOTHING on interface object 
</span><span class="cx"> PASS HTMLMediaElement interface: constant HAVE_NOTHING on interface prototype object 
</span><span class="cx"> PASS HTMLMediaElement interface: constant HAVE_METADATA on interface object 
</span></span></pre></div>
<a id="trunkLayoutTestsmediaencryptedmediaencryptedmediacanplaytypehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/encrypted-media/encrypted-media-can-play-type.html (203805 => 203806)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/encrypted-media/encrypted-media-can-play-type.html        2016-07-27 23:50:07 UTC (rev 203805)
+++ trunk/LayoutTests/media/encrypted-media/encrypted-media-can-play-type.html        2016-07-27 23:50:29 UTC (rev 203806)
</span><span class="lines">@@ -13,7 +13,7 @@
</span><span class="cx">             video = mediaElement = document.getElementsByTagName('video')[0];
</span><span class="cx"> 
</span><span class="cx">             consoleWrite(&quot;Always return the empty string for no type.&quot;);
</span><del>-            testExpected(&quot;video.canPlayType()&quot;, &quot;&quot;);
</del><ins>+            testException(&quot;video.canPlayType()&quot;, &quot;'TypeError: Not enough arguments'&quot;);
</ins><span class="cx"> 
</span><span class="cx">             consoleWrite(&quot;&lt;br&gt;Always return the empty string for an empty type.&quot;);
</span><span class="cx">             testExpected(&quot;video.canPlayType('')&quot;, &quot;&quot;);
</span></span></pre></div>
<a id="trunkLayoutTestsmediamediacanplaytypeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/media-can-play-type-expected.txt (203805 => 203806)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/media-can-play-type-expected.txt        2016-07-27 23:50:07 UTC (rev 203805)
+++ trunk/LayoutTests/media/media-can-play-type-expected.txt        2016-07-27 23:50:29 UTC (rev 203806)
</span><span class="lines">@@ -1,7 +1,7 @@
</span><span class="cx"> 
</span><span class="cx"> Test HTMLMediaElement canPlayType() method.
</span><span class="cx"> 
</span><del>-EXPECTED (video.canPlayType() == '') OK
</del><ins>+TEST(video.canPlayType()) THROWS('TypeError: Not enough arguments') OK
</ins><span class="cx"> EXPECTED (video.canPlayType('video/') == '') OK
</span><span class="cx"> EXPECTED (video.canPlayType('video/blahblah') == '') OK
</span><span class="cx"> EXPECTED (video.canPlayType('video/blahblah; codecs=&quot;blah, , blah&quot;') == '') OK
</span></span></pre></div>
<a id="trunkLayoutTestsmediamediacanplaytypehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/media-can-play-type.html (203805 => 203806)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/media-can-play-type.html        2016-07-27 23:50:07 UTC (rev 203805)
+++ trunk/LayoutTests/media/media-can-play-type.html        2016-07-27 23:50:29 UTC (rev 203806)
</span><span class="lines">@@ -6,7 +6,7 @@
</span><span class="cx">             function start() {
</span><span class="cx">                 video = document.getElementsByTagName('video')[0];
</span><span class="cx"> 
</span><del>-                testExpected(&quot;video.canPlayType()&quot;, &quot;&quot;);
</del><ins>+                testException(&quot;video.canPlayType()&quot;, &quot;'TypeError: Not enough arguments'&quot;);
</ins><span class="cx">                 testExpected(&quot;video.canPlayType('video/')&quot;, &quot;&quot;);
</span><span class="cx">                 testExpected(&quot;video.canPlayType('video/blahblah')&quot;, &quot;&quot;);
</span><span class="cx">                 testExpected(&quot;video.canPlayType('video/blahblah; codecs=\&quot;blah,  , blah\&quot;')&quot;, &quot;&quot;);
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacmediaencryptedmediaencryptedmediacanplaytypeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/media/encrypted-media/encrypted-media-can-play-type-expected.txt (203805 => 203806)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/media/encrypted-media/encrypted-media-can-play-type-expected.txt        2016-07-27 23:50:07 UTC (rev 203805)
+++ trunk/LayoutTests/platform/mac/media/encrypted-media/encrypted-media-can-play-type-expected.txt        2016-07-27 23:50:29 UTC (rev 203806)
</span><span class="lines">@@ -4,7 +4,7 @@
</span><span class="cx"> The test is designed to pass with any implementation regardless of supported media types and relies on the expected log to detect the expected results for some types. To get sufficient coverage, it is important that an implementation support clearkey encryption of at least one of the types below.
</span><span class="cx"> 
</span><span class="cx"> Always return the empty string for no type.
</span><del>-EXPECTED (video.canPlayType() == '') OK
</del><ins>+TEST(video.canPlayType()) THROWS('TypeError: Not enough arguments') OK
</ins><span class="cx"> 
</span><span class="cx"> Always return the empty string for an empty type.
</span><span class="cx"> EXPECTED (video.canPlayType('') == '') OK
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (203805 => 203806)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-07-27 23:50:07 UTC (rev 203805)
+++ trunk/Source/WebCore/ChangeLog        2016-07-27 23:50:29 UTC (rev 203806)
</span><span class="lines">@@ -1,5 +1,21 @@
</span><span class="cx"> 2016-07-27  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        First parameter to HTMLMediaElement.canPlayType() should be mandatory
+        https://bugs.webkit.org/show_bug.cgi?id=160275
+
+        Reviewed by Ryosuke Niwa.
+
+        First parameter to HTMLMediaElement.canPlayType() should be mandatory:
+        - https://html.spec.whatwg.org/multipage/embedded-content.html#htmlmediaelement
+
+        Firefox and Chrome agree with the specification.
+
+        No new tests, rebaselined existing tests.
+
+        * html/HTMLMediaElement.idl:
+
+2016-07-27  Chris Dumez  &lt;cdumez@apple.com&gt;
+
</ins><span class="cx">         First parameter to setTimeout() / setInterval() should be mandatory
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=160277
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMediaElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMediaElement.idl (203805 => 203806)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMediaElement.idl        2016-07-27 23:50:07 UTC (rev 203805)
+++ trunk/Source/WebCore/html/HTMLMediaElement.idl        2016-07-27 23:50:29 UTC (rev 203806)
</span><span class="lines">@@ -48,11 +48,10 @@
</span><span class="cx">     readonly attribute TimeRanges buffered;
</span><span class="cx">     void load();
</span><span class="cx"> 
</span><del>-    // FIXME: Using &quot;undefined&quot; as default parameter value is wrong.
</del><span class="cx"> #if (defined(ENABLE_ENCRYPTED_MEDIA) &amp;&amp; ENABLE_ENCRYPTED_MEDIA) || (defined(ENABLE_ENCRYPTED_MEDIA_V2) &amp;&amp; ENABLE_ENCRYPTED_MEDIA_V2)
</span><del>-    DOMString canPlayType(optional DOMString type = &quot;undefined&quot;, optional DOMString? keySystem = null);
</del><ins>+    DOMString canPlayType(DOMString type, optional DOMString? keySystem = null);
</ins><span class="cx"> #else
</span><del>-    DOMString canPlayType(optional DOMString type = &quot;undefined&quot;);
</del><ins>+    DOMString canPlayType(DOMString type);
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     // ready state
</span></span></pre>
</div>
</div>

</body>
</html>