<!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>[209091] 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/209091">209091</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2016-11-29 14:38:26 -0800 (Tue, 29 Nov 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Can't download move.simple.com direct deposit transition PDF: Non user-triggered activations of anchors that have a download attribute are ignored
https://bugs.webkit.org/show_bug.cgi?id=165148
&lt;rdar://problem/29421771&gt;

Reviewed by Daniel Bates.

Source/WebCore:

We were ignoring non user-triggered activations of anchors that have a
download attribute which is stricter than Chrome and Firefox and breaks
downloads on move.simple.com. This patch relaxes our policy to allow
simulated clicks on such links, similarly to other browsers.

Web authors can anyway already trigger downloads using script by setting
window.location to a specific URL and serving to right HTTP headers to
trigger a download.

Note that our previous behavior matches the current version of the
specification so I also filed a bug against the HTML specification to
see if we can get it changed to match the behavior of browsers:
- https://github.com/whatwg/html/issues/2116

No new tests, updated existing test.

* html/HTMLAnchorElement.cpp:
(WebCore::HTMLAnchorElement::handleClick):

LayoutTests:

Update existing test to reflect behavior change.

* fast/dom/HTMLAnchorElement/anchor-download-synthetic-click-expected.txt:
* fast/dom/HTMLAnchorElement/anchor-download-synthetic-click.html:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsfastdomHTMLAnchorElementanchordownloadsyntheticclickexpectedtxt">trunk/LayoutTests/fast/dom/HTMLAnchorElement/anchor-download-synthetic-click-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastdomHTMLAnchorElementanchordownloadsyntheticclickhtml">trunk/LayoutTests/fast/dom/HTMLAnchorElement/anchor-download-synthetic-click.html</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLAnchorElementcpp">trunk/Source/WebCore/html/HTMLAnchorElement.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (209090 => 209091)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-11-29 22:15:52 UTC (rev 209090)
+++ trunk/LayoutTests/ChangeLog        2016-11-29 22:38:26 UTC (rev 209091)
</span><span class="lines">@@ -1,3 +1,16 @@
</span><ins>+2016-11-29  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Can't download move.simple.com direct deposit transition PDF: Non user-triggered activations of anchors that have a download attribute are ignored
+        https://bugs.webkit.org/show_bug.cgi?id=165148
+        &lt;rdar://problem/29421771&gt;
+
+        Reviewed by Daniel Bates.
+
+        Update existing test to reflect behavior change.
+
+        * fast/dom/HTMLAnchorElement/anchor-download-synthetic-click-expected.txt:
+        * fast/dom/HTMLAnchorElement/anchor-download-synthetic-click.html:
+
</ins><span class="cx"> 2016-11-29  Eric Carlson  &lt;eric.carlson@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [MediaStream] Don't request user permission for a device if it has already been granted in the current browsing context
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomHTMLAnchorElementanchordownloadsyntheticclickexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/HTMLAnchorElement/anchor-download-synthetic-click-expected.txt (209090 => 209091)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/HTMLAnchorElement/anchor-download-synthetic-click-expected.txt        2016-11-29 22:15:52 UTC (rev 209090)
+++ trunk/LayoutTests/fast/dom/HTMLAnchorElement/anchor-download-synthetic-click-expected.txt        2016-11-29 22:38:26 UTC (rev 209091)
</span><span class="lines">@@ -1,6 +1,8 @@
</span><del>-CONSOLE MESSAGE: line 22: Non user-triggered activations of anchors that have a download attribute are ignored.
-Test that synthetic clicks on an anchor with a download attribute are ignored.
</del><ins>+Download started.
+Downloading URL with suggested filename &quot;foo.pdf&quot;
+Download completed.
+Test that synthetic clicks on an anchor with a download attribute are not ignored.
</ins><span class="cx"> 
</span><del>-This test passes if you do not see any 'Download started' message above.
</del><ins>+This test passes if you see a 'Download started' message above and if the suggested filename is foo.pdf.
</ins><span class="cx"> 
</span><span class="cx"> Blob URL
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomHTMLAnchorElementanchordownloadsyntheticclickhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/HTMLAnchorElement/anchor-download-synthetic-click.html (209090 => 209091)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/HTMLAnchorElement/anchor-download-synthetic-click.html        2016-11-29 22:15:52 UTC (rev 209090)
+++ trunk/LayoutTests/fast/dom/HTMLAnchorElement/anchor-download-synthetic-click.html        2016-11-29 22:38:26 UTC (rev 209091)
</span><span class="lines">@@ -9,9 +9,9 @@
</span><span class="cx"> &lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><del>-&lt;p&gt;Test that synthetic clicks on an anchor with a download attribute are ignored.&lt;/p&gt;
-&lt;p&gt; This test passes if you do not see any 'Download started' message above.&lt;/p&gt;
-&lt;a id=&quot;blob-url&quot; download&gt;Blob URL&lt;/a&gt;
</del><ins>+&lt;p&gt;Test that synthetic clicks on an anchor with a download attribute are not ignored.&lt;/p&gt;
+&lt;p&gt; This test passes if you see a 'Download started' message above and if the suggested filename is foo.pdf.&lt;/p&gt;
+&lt;a id=&quot;blob-url&quot; download=&quot;foo.pdf&quot;&gt;Blob URL&lt;/a&gt;
</ins><span class="cx"> &lt;script&gt;
</span><span class="cx"> function runTest()
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (209090 => 209091)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-11-29 22:15:52 UTC (rev 209090)
+++ trunk/Source/WebCore/ChangeLog        2016-11-29 22:38:26 UTC (rev 209091)
</span><span class="lines">@@ -1,3 +1,30 @@
</span><ins>+2016-11-29  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Can't download move.simple.com direct deposit transition PDF: Non user-triggered activations of anchors that have a download attribute are ignored
+        https://bugs.webkit.org/show_bug.cgi?id=165148
+        &lt;rdar://problem/29421771&gt;
+
+        Reviewed by Daniel Bates.
+
+        We were ignoring non user-triggered activations of anchors that have a
+        download attribute which is stricter than Chrome and Firefox and breaks
+        downloads on move.simple.com. This patch relaxes our policy to allow
+        simulated clicks on such links, similarly to other browsers.
+
+        Web authors can anyway already trigger downloads using script by setting
+        window.location to a specific URL and serving to right HTTP headers to
+        trigger a download.
+
+        Note that our previous behavior matches the current version of the
+        specification so I also filed a bug against the HTML specification to
+        see if we can get it changed to match the behavior of browsers:
+        - https://github.com/whatwg/html/issues/2116
+
+        No new tests, updated existing test.
+
+        * html/HTMLAnchorElement.cpp:
+        (WebCore::HTMLAnchorElement::handleClick):
+
</ins><span class="cx"> 2016-11-29  Andy Estes  &lt;aestes@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [Cocoa] Enable two clang warnings recommended by Xcode
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLAnchorElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLAnchorElement.cpp (209090 => 209091)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLAnchorElement.cpp        2016-11-29 22:15:52 UTC (rev 209090)
+++ trunk/Source/WebCore/html/HTMLAnchorElement.cpp        2016-11-29 22:38:26 UTC (rev 209091)
</span><span class="lines">@@ -383,14 +383,6 @@
</span><span class="cx">             downloadAttribute = attributeWithoutSynchronization(downloadAttr);
</span><span class="cx">         else if (hasAttributeWithoutSynchronization(downloadAttr))
</span><span class="cx">             document().addConsoleMessage(MessageSource::Security, MessageLevel::Warning, &quot;The download attribute on anchor was ignored because its href URL has a different security origin.&quot;);
</span><del>-        // If the a element has a download attribute and the algorithm is not triggered by user activation
-        // then abort these steps.
-        // https://html.spec.whatwg.org/#the-a-element:triggered-by-user-activation
-        if (!downloadAttribute.isNull() &amp;&amp; !event.isTrusted() &amp;&amp; !ScriptController::processingUserGesture()) {
-            // The specification says to throw an InvalidAccessError but other browsers do not.
-            document().addConsoleMessage(MessageSource::Security, MessageLevel::Warning, &quot;Non user-triggered activations of anchors that have a download attribute are ignored.&quot;);
-            return;
-        }
</del><span class="cx">     }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>