<!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>[203612] 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/203612">203612</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2016-07-22 13:34:18 -0700 (Fri, 22 Jul 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Fix default parameter values for window.alert() / prompt() / confirm()
https://bugs.webkit.org/show_bug.cgi?id=160085

Reviewed by Ryosuke Niwa.

Source/WebCore:

Fix default parameter values for window.alert() / prompt() / confirm() to
match the specification:
- https://html.spec.whatwg.org/multipage/browsers.html#the-window-object

They should default to the empty string, not the string &quot;undefined&quot;.

Firefox and chrome agree with the specification.

No new tests, updated existing test.

* page/DOMWindow.h:
* page/DOMWindow.idl:

LayoutTests:

Update existing test to reflect behavior change.

* fast/dom/Window/alert-undefined-expected.txt:
* fast/dom/Window/alert-undefined.html:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsfastdomWindowalertundefinedexpectedtxt">trunk/LayoutTests/fast/dom/Window/alert-undefined-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastdomWindowalertundefinedhtml">trunk/LayoutTests/fast/dom/Window/alert-undefined.html</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorepageDOMWindowh">trunk/Source/WebCore/page/DOMWindow.h</a></li>
<li><a href="#trunkSourceWebCorepageDOMWindowidl">trunk/Source/WebCore/page/DOMWindow.idl</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (203611 => 203612)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-07-22 20:33:11 UTC (rev 203611)
+++ trunk/LayoutTests/ChangeLog        2016-07-22 20:34:18 UTC (rev 203612)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2016-07-22  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Fix default parameter values for window.alert() / prompt() / confirm()
+        https://bugs.webkit.org/show_bug.cgi?id=160085
+
+        Reviewed by Ryosuke Niwa.
+
+        Update existing test to reflect behavior change.
+
+        * fast/dom/Window/alert-undefined-expected.txt:
+        * fast/dom/Window/alert-undefined.html:
+
</ins><span class="cx"> 2016-07-22  Daniel Bates  &lt;dabates@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         CSP: object-src and plugin-types directives are not respected for plugin replacements
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomWindowalertundefinedexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/Window/alert-undefined-expected.txt (203611 => 203612)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/Window/alert-undefined-expected.txt        2016-07-22 20:33:11 UTC (rev 203611)
+++ trunk/LayoutTests/fast/dom/Window/alert-undefined-expected.txt        2016-07-22 20:34:18 UTC (rev 203612)
</span><span class="lines">@@ -1,10 +1,17 @@
</span><ins>+ALERT: * The line below should have no text
+ALERT: 
+ALERT: * The line below should have the text 'undefined'
</ins><span class="cx"> ALERT: undefined
</span><ins>+ALERT: * The line below should have the text 'null'
</ins><span class="cx"> ALERT: null
</span><del>-CONFIRM: undefined
</del><ins>+ALERT: * The lines below should have no text
+CONFIRM: 
+CONFIRM: 
+ALERT: * The line below should have the text 'null'
</ins><span class="cx"> CONFIRM: null
</span><del>-PROMPT: undefined, default text: 
-PROMPT: null, default text: 
-ALERT: undefined
-CONFIRM: undefined
-PROMPT: undefined, default text: 
-The alerts that show up (or if this is running under DRT, that is dumped) should contain text; none should be empty. This isn't entirely consistent with other browsers in every case, but since there's no real use case for this, it's best to be explicit rather than subtle and empty.
</del><ins>+ALERT: * The lines below should have no text and no default text
+PROMPT: , default text: 
+PROMPT: , default text: 
+ALERT: * The line below should have the text 'null' and the default text null
+PROMPT: null, default text: null
+
</ins></span></pre></div>
<a id="trunkLayoutTestsfastdomWindowalertundefinedhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/Window/alert-undefined.html (203611 => 203612)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/Window/alert-undefined.html        2016-07-22 20:33:11 UTC (rev 203611)
+++ trunk/LayoutTests/fast/dom/Window/alert-undefined.html        2016-07-22 20:34:18 UTC (rev 203612)
</span><span class="lines">@@ -7,22 +7,31 @@
</span><span class="cx">             if (window.testRunner)
</span><span class="cx">                 testRunner.dumpAsText();
</span><span class="cx"> 
</span><ins>+            alert(&quot;* The line below should have no text&quot;);
+            alert();
+
+            alert(&quot;* The line below should have the text 'undefined'&quot;);
</ins><span class="cx">             alert(undefined);
</span><ins>+
+            alert(&quot;* The line below should have the text 'null'&quot;);
</ins><span class="cx">             alert(null);
</span><ins>+
+            alert(&quot;* The lines below should have no text&quot;);
+            confirm();
</ins><span class="cx">             confirm(undefined);
</span><ins>+
+            alert(&quot;* The line below should have the text 'null'&quot;);
</ins><span class="cx">             confirm(null);
</span><del>-            prompt(undefined);
-            prompt(null);
</del><span class="cx"> 
</span><del>-            alert();
-            confirm();
</del><ins>+            alert(&quot;* The lines below should have no text and no default text&quot;);
</ins><span class="cx">             prompt();
</span><ins>+            prompt(undefined, undefined);
+
+             alert(&quot;* The line below should have the text 'null' and the default text null&quot;);
+            prompt(null, null);
</ins><span class="cx">         }
</span><span class="cx">     &lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body onload=&quot;runTests()&quot;&gt;
</span><del>-    &lt;p&gt;The alerts that show up (or if this is running under DRT, that is dumped) should contain text; none should be empty.
-    This isn't entirely consistent with other browsers in every case, but since there's no real use case for this,
-    it's best to be explicit rather than subtle and empty.&lt;/p&gt;
</del><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (203611 => 203612)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-07-22 20:33:11 UTC (rev 203611)
+++ trunk/Source/WebCore/ChangeLog        2016-07-22 20:34:18 UTC (rev 203612)
</span><span class="lines">@@ -1,3 +1,23 @@
</span><ins>+2016-07-22  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Fix default parameter values for window.alert() / prompt() / confirm()
+        https://bugs.webkit.org/show_bug.cgi?id=160085
+
+        Reviewed by Ryosuke Niwa.
+
+        Fix default parameter values for window.alert() / prompt() / confirm() to
+        match the specification:
+        - https://html.spec.whatwg.org/multipage/browsers.html#the-window-object
+
+        They should default to the empty string, not the string &quot;undefined&quot;.
+
+        Firefox and chrome agree with the specification.
+
+        No new tests, updated existing test.
+
+        * page/DOMWindow.h:
+        * page/DOMWindow.idl:
+
</ins><span class="cx"> 2016-07-22  Daniel Bates  &lt;dabates@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         CSP: object-src and plugin-types directives are not respected for plugin replacements
</span></span></pre></div>
<a id="trunkSourceWebCorepageDOMWindowh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/DOMWindow.h (203611 => 203612)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/DOMWindow.h        2016-07-22 20:33:11 UTC (rev 203611)
+++ trunk/Source/WebCore/page/DOMWindow.h        2016-07-22 20:34:18 UTC (rev 203612)
</span><span class="lines">@@ -175,7 +175,7 @@
</span><span class="cx"> 
</span><span class="cx">         void showModalDialog(const String&amp; urlString, const String&amp; dialogFeaturesString, DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow, std::function&lt;void (DOMWindow&amp;)&gt; prepareDialogFunction);
</span><span class="cx"> 
</span><del>-        void alert(const String&amp; message);
</del><ins>+        void alert(const String&amp; message = emptyString());
</ins><span class="cx">         bool confirm(const String&amp; message);
</span><span class="cx">         String prompt(const String&amp; message, const String&amp; defaultValue);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorepageDOMWindowidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/DOMWindow.idl (203611 => 203612)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/DOMWindow.idl        2016-07-22 20:33:11 UTC (rev 203611)
+++ trunk/Source/WebCore/page/DOMWindow.idl        2016-07-22 20:34:18 UTC (rev 203612)
</span><span class="lines">@@ -73,10 +73,12 @@
</span><span class="cx">                                        optional any dialogArgs,
</span><span class="cx">                                        optional DOMString featureArgs);
</span><span class="cx"> 
</span><del>-    // FIXME: Using &quot;undefined&quot; as default parameter value is wrong.
-    void alert(optional DOMString message = &quot;undefined&quot;);
-    boolean confirm(optional DOMString message = &quot;undefined&quot;);
-    DOMString? prompt(optional DOMString message = &quot;undefined&quot;, optional DOMString? defaultValue = null);
</del><ins>+#if defined(LANGUAGE_JAVASCRIPT) &amp;&amp; LANGUAGE_JAVASCRIPT
+    void alert();
+#endif
+    void alert(DOMString message);
+    boolean confirm(optional DOMString message = &quot;&quot;);
+    DOMString? prompt(optional DOMString message = &quot;&quot;, optional DOMString defaultValue = &quot;&quot;);
</ins><span class="cx"> 
</span><span class="cx">     // FIXME: Using &quot;undefined&quot; as default parameter value is wrong.
</span><span class="cx">     boolean find(optional DOMString string = &quot;undefined&quot;,
</span></span></pre>
</div>
</div>

</body>
</html>