<!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>[199199] 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/199199">199199</a></dd>
<dt>Author</dt> <dd>jiewen_tan@apple.com</dd>
<dt>Date</dt> <dd>2016-04-07 15:44:37 -0700 (Thu, 07 Apr 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>fast/loader/opaque-base-url.html crashing during mac and ios debug tests
https://bugs.webkit.org/show_bug.cgi?id=156179
&lt;rdar://problem/25507719&gt;

Reviewed by Andy Estes.

Source/WebCore:

A relative URL other than &quot;#&quot; with a non-hierarchical base is invalid, but prior to this
change the URL's string would still contain the invalid relative URL. To avoid mistakes
where we might later treat this URL string as a parsed URL string, set the string to
&quot;about:blank&quot; instead.

Test: fast/url/data-uri-based-urls.html

* platform/URL.cpp:
(WebCore::URL::init):

LayoutTests:

* TestExpectations:
* fast/url/data-uri-based-urls-expected.txt: Added.
* fast/url/data-uri-based-urls.html: Added.
* fast/url/relative-expected.txt:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsTestExpectations">trunk/LayoutTests/TestExpectations</a></li>
<li><a href="#trunkLayoutTestsfasturlrelativeexpectedtxt">trunk/LayoutTests/fast/url/relative-expected.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreplatformURLcpp">trunk/Source/WebCore/platform/URL.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfasturldatauribasedurlsexpectedtxt">trunk/LayoutTests/fast/url/data-uri-based-urls-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfasturldatauribasedurlshtml">trunk/LayoutTests/fast/url/data-uri-based-urls.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (199198 => 199199)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-04-07 22:35:30 UTC (rev 199198)
+++ trunk/LayoutTests/ChangeLog        2016-04-07 22:44:37 UTC (rev 199199)
</span><span class="lines">@@ -1,3 +1,16 @@
</span><ins>+2016-04-07  Jiewen Tan  &lt;jiewen_tan@apple.com&gt;
+
+        fast/loader/opaque-base-url.html crashing during mac and ios debug tests
+        https://bugs.webkit.org/show_bug.cgi?id=156179
+        &lt;rdar://problem/25507719&gt;
+
+        Reviewed by Andy Estes.
+
+        * TestExpectations:
+        * fast/url/data-uri-based-urls-expected.txt: Added.
+        * fast/url/data-uri-based-urls.html: Added.
+        * fast/url/relative-expected.txt:
+
</ins><span class="cx"> 2016-04-07  Ada Chan  &lt;adachan@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Skip a couple more tests that are asserting in FrameView::scheduleRelayoutOfSubtree().
</span></span></pre></div>
<a id="trunkLayoutTestsTestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/TestExpectations (199198 => 199199)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/TestExpectations        2016-04-07 22:35:30 UTC (rev 199198)
+++ trunk/LayoutTests/TestExpectations        2016-04-07 22:44:37 UTC (rev 199199)
</span><span class="lines">@@ -905,8 +905,6 @@
</span><span class="cx"> imported/blink/fast/multicol/outlines-at-column-boundaries.html [ ImageOnlyFailure ]
</span><span class="cx"> fast/multicol/multicol-with-child-renderLayer-for-input.html [ ImageOnlyFailure ]
</span><span class="cx"> 
</span><del>-webkit.org/b/156179 [ Debug ] fast/loader/opaque-base-url.html [ Skip ]
-
</del><span class="cx"> # Assertion failure in MessagePort::contextDestroyed, usually attributed to later tests
</span><span class="cx"> webkit.org/b/94458 http/tests/security/MessagePort/event-listener-context.html [ Skip ]
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfasturldatauribasedurlsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/url/data-uri-based-urls-expected.txt (0 => 199199)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/url/data-uri-based-urls-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/url/data-uri-based-urls-expected.txt        2016-04-07 22:44:37 UTC (rev 199199)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+Test passes if i) the first iframe which includes a relative URL prints about:blank, ii) the second one which includes an absolute URL prints http://www.example.com, and iii) the third one which includes a fragment does not print about:blank
+
+   
+
+--------
+Frame: '&lt;!--framePath //&lt;!--frame0--&gt;--&gt;'
+--------
+about:blank
+
+
+--------
+Frame: '&lt;!--framePath //&lt;!--frame1--&gt;--&gt;'
+--------
+http://www.example.com/
+
+
+--------
+Frame: '&lt;!--framePath //&lt;!--frame2--&gt;--&gt;'
+--------
+data:text/html,
</ins></span></pre></div>
<a id="trunkLayoutTestsfasturldatauribasedurlshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/url/data-uri-based-urls.html (0 => 199199)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/url/data-uri-based-urls.html                                (rev 0)
+++ trunk/LayoutTests/fast/url/data-uri-based-urls.html        2016-04-07 22:44:37 UTC (rev 199199)
</span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script&gt;
+    if (window.testRunner) {
+        testRunner.dumpAsText();
+        testRunner.dumpChildFramesAsText();
+    }
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p&gt;Test passes if i) the first iframe which includes a relative URL prints about:blank, ii) the second one which includes an absolute URL prints http://www.example.com, and iii) the third one which includes a fragment does not print about:blank&lt;/p&gt;
+
+&lt;iframe src='data:text/html,&lt;script&gt;
+document.write(`&lt;a id=&quot;href&quot; href=&quot;&lt;p&gt;FAILURE&lt;/p&gt;&quot;&gt;&lt;/a&gt;`);
+var src = document.getElementById(&quot;href&quot;).href;
+document.write(src + &quot;&lt;br&gt;&quot;);
+&lt;/script&gt;'&gt;&lt;/iframe&gt;
+
+&lt;iframe src='data:text/html,&lt;script&gt;
+document.write(`&lt;a id=&quot;href&quot; href=&quot;http://www.example.com&quot;&gt;&lt;/a&gt;`);
+var src = document.getElementById(&quot;href&quot;).href;
+document.write(src + &quot;&lt;br&gt;&quot;);
+&lt;/script&gt;'&gt;&lt;/iframe&gt;
+
+&lt;iframe src='data:text/html,&lt;script&gt;
+document.write(`&lt;a id=&quot;href&quot; href=&quot;#fragment&quot;&gt;&lt;/a&gt;`);
+var src = document.getElementById(&quot;href&quot;).href;
+document.write(src + &quot;&lt;br&gt;&quot;);
+&lt;/script&gt;'&gt;&lt;/iframe&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfasturlrelativeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/url/relative-expected.txt (199198 => 199199)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/url/relative-expected.txt        2016-04-07 22:35:30 UTC (rev 199198)
+++ trunk/LayoutTests/fast/url/relative-expected.txt        2016-04-07 22:44:37 UTC (rev 199199)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx"> PASS canonicalize('#ref') is 'http://host/a#ref'
</span><span class="cx"> PASS canonicalize('#') is 'http://host/a#'
</span><span class="cx"> PASS canonicalize('#bye') is 'http://host/a?foo=bar#bye'
</span><del>-FAIL canonicalize('baz.html') should be . Was baz.html.
</del><ins>+FAIL canonicalize('baz.html') should be . Was about:blank.
</ins><span class="cx"> PASS canonicalize('data:baz') is 'data:baz'
</span><span class="cx"> PASS canonicalize('data:/base') is 'data:/base'
</span><span class="cx"> PASS canonicalize('http://host/') is 'http://host/'
</span><span class="lines">@@ -46,7 +46,7 @@
</span><span class="cx"> PASS canonicalize('./asd:fgh') is 'http://foo/asd:fgh'
</span><span class="cx"> PASS canonicalize(':foo') is 'http://foo/:foo'
</span><span class="cx"> PASS canonicalize(' hello world') is 'http://foo/hello%20world'
</span><del>-FAIL canonicalize(':foo') should be . Was :foo.
</del><ins>+FAIL canonicalize(':foo') should be . Was about:blank.
</ins><span class="cx"> PASS canonicalize(';foo') is 'http://host/;foo'
</span><span class="cx"> PASS canonicalize(';foo') is 'http://host/;foo'
</span><span class="cx"> PASS canonicalize(';/../bar') is 'http://host/bar'
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (199198 => 199199)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-04-07 22:35:30 UTC (rev 199198)
+++ trunk/Source/WebCore/ChangeLog        2016-04-07 22:44:37 UTC (rev 199199)
</span><span class="lines">@@ -1,3 +1,21 @@
</span><ins>+2016-04-07  Jiewen Tan  &lt;jiewen_tan@apple.com&gt;
+
+        fast/loader/opaque-base-url.html crashing during mac and ios debug tests
+        https://bugs.webkit.org/show_bug.cgi?id=156179
+        &lt;rdar://problem/25507719&gt;
+
+        Reviewed by Andy Estes.
+
+        A relative URL other than &quot;#&quot; with a non-hierarchical base is invalid, but prior to this
+        change the URL's string would still contain the invalid relative URL. To avoid mistakes
+        where we might later treat this URL string as a parsed URL string, set the string to
+        &quot;about:blank&quot; instead.
+
+        Test: fast/url/data-uri-based-urls.html
+
+        * platform/URL.cpp:
+        (WebCore::URL::init):
+
</ins><span class="cx"> 2016-04-07  Brian Burg  &lt;bburg@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Web Automation: implement Automation.addSingleCookie
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformURLcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/URL.cpp (199198 => 199199)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/URL.cpp        2016-04-07 22:35:30 UTC (rev 199198)
+++ trunk/Source/WebCore/platform/URL.cpp        2016-04-07 22:44:37 UTC (rev 199199)
</span><span class="lines">@@ -491,6 +491,8 @@
</span><span class="cx">         str = strBuffer.data();
</span><span class="cx">     } else {
</span><span class="cx">         if (!encodeRelativeString(rel, encoding, strBuffer)) {
</span><ins>+            // FIXME: Instead of assigning the m_string to blankURL(), we should
+            // figure out a proper way to preserve the original malformed URL strings.
</ins><span class="cx">             m_string = blankURL();
</span><span class="cx">             invalidate();
</span><span class="cx">             return;
</span><span class="lines">@@ -542,7 +544,9 @@
</span><span class="cx">                 appendASCII(base.m_string.left(base.m_queryEnd), str, len, parseBuffer);
</span><span class="cx">                 parse(parseBuffer.data(), &amp;relative);
</span><span class="cx">             } else {
</span><del>-                m_string = relative;
</del><ins>+                // FIXME: Instead of assigning the m_string to blankURL(), we should
+                // figure out a proper way to preserve the original malformed URL strings.
+                m_string = blankURL();
</ins><span class="cx">                 invalidate();
</span><span class="cx">             }
</span><span class="cx">             return;
</span></span></pre>
</div>
</div>

</body>
</html>