<!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>[209917] 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/209917">209917</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2016-12-16 03:51:16 -0800 (Fri, 16 Dec 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>[Fetch API] Improve resource loading console logging
https://bugs.webkit.org/show_bug.cgi?id=160546

Patch by Youenn Fablet &lt;youenn@apple.com&gt; on 2016-12-16
Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Rebasing since error logging is happening for fetch API.

* web-platform-tests/fetch/api/basic/mode-same-origin-expected.txt:
* web-platform-tests/fetch/api/basic/scheme-about-expected.txt:
* web-platform-tests/fetch/api/basic/scheme-blob-expected.txt:
* web-platform-tests/fetch/api/basic/scheme-others-expected.txt:
* web-platform-tests/fetch/api/cors/cors-basic-expected.txt:
* web-platform-tests/fetch/api/cors/cors-cookies-expected.txt:
* web-platform-tests/fetch/api/cors/cors-multiple-origins-expected.txt:
* web-platform-tests/fetch/api/cors/cors-origin-expected.txt:
* web-platform-tests/fetch/api/cors/cors-preflight.html:
* web-platform-tests/fetch/api/cors/cors-redirect-credentials-expected.txt:
* web-platform-tests/fetch/api/redirect/redirect-location-expected.txt:
* web-platform-tests/fetch/api/redirect/redirect-schemes-expected.txt:
* web-platform-tests/fetch/api/redirect/redirect-to-dataurl-expected.txt:

Source/WebCore:

Covered by rebased tests.

Adding support for logging of resource loading failures in ThreadableLoader.
This will allow doing consistent logging for clients such as fetch, XHR, event source...

Doing logging for Fetch API only at the moment in ThreadableLoader.
Future patches should migrate XHR to this logging system.

Logging routine is implemented in ThreadableLoader.
It is used directly by DocumentThreadableLoader before calling didFail client callback.
DocumentThreadableLoader has a new option to not log errors, in the case the client is WorkerThreadableLoader::MainBridge.
In that case, the logging is done in the worker context within WorkerThreadableLoader::MainBridge::didFail

* loader/DocumentThreadableLoader.cpp:
(WebCore::DocumentThreadableLoader::loadResourceSynchronously): Enable logging.
(WebCore::DocumentThreadableLoader::create): Passing logging parameter to constructor.
(WebCore::DocumentThreadableLoader::DocumentThreadableLoader): Adding initialization of logging parameter.
(WebCore::DocumentThreadableLoader::makeSimpleCrossOriginAccessRequest): Making use of the new logErrorAndFail helper routine.
(WebCore::DocumentThreadableLoader::cancel): No need to log error if it is being cancelled.
(WebCore::DocumentThreadableLoader::redirectReceived): Made the reportXX routines methods of DocumentThreadableLoaders and using logErrorAndFail internally.
(WebCore::DocumentThreadableLoader::didFail): Wrapper around logErrorAndFail since cancel is not calling it anymore.
(WebCore::DocumentThreadableLoader::preflightFailure):
(WebCore::DocumentThreadableLoader::loadRequest):
(WebCore::DocumentThreadableLoader::reportRedirectionWithBadScheme):
(WebCore::DocumentThreadableLoader::reportContentSecurityPolicyError):
(WebCore::DocumentThreadableLoader::reportCrossOriginResourceSharingError):
(WebCore::DocumentThreadableLoader::logErrorAndFail):
(WebCore::reportContentSecurityPolicyError): Deleted.
(WebCore::reportCrossOriginResourceSharingError): Deleted.
(WebCore::reportRedirectionWithBadScheme): Deleted.
* loader/DocumentThreadableLoader.h:
* loader/ThreadableLoader.cpp:
(WebCore::ThreadableLoader::logError):
* loader/ThreadableLoader.h:
* loader/ThreadableLoaderClientWrapper.h:
(WebCore::ThreadableLoaderClientWrapper::create):
(WebCore::ThreadableLoaderClientWrapper::initiator):
(WebCore::ThreadableLoaderClientWrapper::ThreadableLoaderClientWrapper):
* loader/WorkerThreadableLoader.cpp:
(WebCore::WorkerThreadableLoader::WorkerThreadableLoader):
(WebCore::WorkerThreadableLoader::MainThreadBridge::MainThreadBridge):
(WebCore::WorkerThreadableLoader::MainThreadBridge::didFail):

LayoutTests:

Rebasing since error logging is happening for fetch API.
Some tests are flaky due to always changing console logs, in which case DumpJSConsoleLogInStdErr is used.

* TestExpectations:
* http/tests/fetch/fetching-same-resource-with-diffferent-options-expected.txt:
* http/tests/inspector/network/fetch-network-data-expected.txt:
* platform/ios-simulator-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-expected.txt:
* platform/ios-simulator-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin-expected.txt:
* platform/mac-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-expected.txt:
* platform/mac-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin-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="#trunkLayoutTestshttptestsfetchfetchingsameresourcewithdiffferentoptionsexpectedtxt">trunk/LayoutTests/http/tests/fetch/fetching-same-resource-with-diffferent-options-expected.txt</a></li>
<li><a href="#trunkLayoutTestshttptestsinspectornetworkfetchnetworkdataexpectedtxt">trunk/LayoutTests/http/tests/inspector/network/fetch-network-data-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cChangeLog">trunk/LayoutTests/imported/w3c/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicmodesameoriginexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemeaboutexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemeblobexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-blob-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemeothersexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-others-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsbasicexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorscookiesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsmultipleoriginsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-multiple-origins-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsoriginexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflighthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectcredentialsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapiredirectredirectlocationexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-location-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapiredirectredirectschemesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-schemes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapiredirectredirecttodataurlexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-to-dataurl-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatorwk2importedw3cwebplatformtestsfetchapicorscorsbasicexpectedtxt">trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatorwk2importedw3cwebplatformtestsfetchapicorscorsoriginexpectedtxt">trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacwk2importedw3cwebplatformtestsfetchapicorscorsbasicexpectedtxt">trunk/LayoutTests/platform/mac-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacwk2importedw3cwebplatformtestsfetchapicorscorsoriginexpectedtxt">trunk/LayoutTests/platform/mac-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin-expected.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreloaderDocumentThreadableLoadercpp">trunk/Source/WebCore/loader/DocumentThreadableLoader.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderDocumentThreadableLoaderh">trunk/Source/WebCore/loader/DocumentThreadableLoader.h</a></li>
<li><a href="#trunkSourceWebCoreloaderThreadableLoadercpp">trunk/Source/WebCore/loader/ThreadableLoader.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderThreadableLoaderh">trunk/Source/WebCore/loader/ThreadableLoader.h</a></li>
<li><a href="#trunkSourceWebCoreloaderThreadableLoaderClientWrapperh">trunk/Source/WebCore/loader/ThreadableLoaderClientWrapper.h</a></li>
<li><a href="#trunkSourceWebCoreloaderWorkerThreadableLoadercpp">trunk/Source/WebCore/loader/WorkerThreadableLoader.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (209916 => 209917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-12-16 11:50:19 UTC (rev 209916)
+++ trunk/LayoutTests/ChangeLog        2016-12-16 11:51:16 UTC (rev 209917)
</span><span class="lines">@@ -1,3 +1,21 @@
</span><ins>+2016-12-16  Youenn Fablet  &lt;youenn@apple.com&gt;
+
+        [Fetch API] Improve resource loading console logging
+        https://bugs.webkit.org/show_bug.cgi?id=160546
+
+        Reviewed by Alex Christensen.
+
+        Rebasing since error logging is happening for fetch API.
+        Some tests are flaky due to always changing console logs, in which case DumpJSConsoleLogInStdErr is used.
+
+        * TestExpectations:
+        * http/tests/fetch/fetching-same-resource-with-diffferent-options-expected.txt:
+        * http/tests/inspector/network/fetch-network-data-expected.txt:
+        * platform/ios-simulator-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-expected.txt:
+        * platform/ios-simulator-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin-expected.txt:
+        * platform/mac-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-expected.txt:
+        * platform/mac-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin-expected.txt:
+
</ins><span class="cx"> 2016-12-16  Romain Bellessort  &lt;romain.bellessort@crf.canon.fr&gt;
</span><span class="cx"> 
</span><span class="cx">         [Readable Streams API] Implement ReadableByteStreamController cancel internal method
</span></span></pre></div>
<a id="trunkLayoutTestsTestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/TestExpectations (209916 => 209917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/TestExpectations        2016-12-16 11:50:19 UTC (rev 209916)
+++ trunk/LayoutTests/TestExpectations        2016-12-16 11:51:16 UTC (rev 209917)
</span><span class="lines">@@ -299,7 +299,11 @@
</span><span class="cx"> webkit.org/b/157145 imported/w3c/web-platform-tests/fetch/nosniff/stylesheet.html [ Failure Pass ]
</span><span class="cx"> webkit.org/b/161312 imported/w3c/web-platform-tests/html/semantics/document-metadata/the-link-element/document-without-browsing-context.html [ Failure Pass ]
</span><span class="cx"> 
</span><ins>+imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.html [ DumpJSConsoleLogInStdErr ]
</ins><span class="cx"> imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.html [ DumpJSConsoleLogInStdErr ]
</span><ins>+imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.html [ DumpJSConsoleLogInStdErr ]
+imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.html [ DumpJSConsoleLogInStdErr ]
+imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.html [ DumpJSConsoleLogInStdErr ]
</ins><span class="cx"> 
</span><span class="cx"> webkit.org/b/159724 imported/w3c/web-platform-tests/XMLHttpRequest/send-redirect-post-upload.htm [ Failure Pass ]
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestshttptestsfetchfetchingsameresourcewithdiffferentoptionsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/fetch/fetching-same-resource-with-diffferent-options-expected.txt (209916 => 209917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/fetch/fetching-same-resource-with-diffferent-options-expected.txt        2016-12-16 11:50:19 UTC (rev 209916)
+++ trunk/LayoutTests/http/tests/fetch/fetching-same-resource-with-diffferent-options-expected.txt        2016-12-16 11:51:16 UTC (rev 209917)
</span><span class="lines">@@ -1,7 +1,11 @@
</span><span class="cx"> CONSOLE MESSAGE: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8000/resources/download-json-with-delay.php?iteration=2&amp;delay=100&amp;cors=true&amp;allowCache=true&amp;test=1. Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8000/resources/download-json-with-delay.php?iteration=2&amp;delay=100&amp;cors=true&amp;allowCache=true&amp;test=2. Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8000/resources/download-json-with-delay.php?iteration=2&amp;delay=100&amp;cors=true&amp;allowCache=true&amp;test=3. Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8000/resources/download-json-with-delay.php?iteration=2&amp;delay=100&amp;cors=true&amp;allowCache=true&amp;test=4. Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> 
</span><span class="cx"> PASS Ensure cors checks work when loading in parallel the same resource with different modes 
</span><span class="cx"> PASS Ensure cors checks work when loading successively the same resource with different modes 
</span></span></pre></div>
<a id="trunkLayoutTestshttptestsinspectornetworkfetchnetworkdataexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/inspector/network/fetch-network-data-expected.txt (209916 => 209917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/inspector/network/fetch-network-data-expected.txt        2016-12-16 11:50:19 UTC (rev 209916)
+++ trunk/LayoutTests/http/tests/inspector/network/fetch-network-data-expected.txt        2016-12-16 11:51:16 UTC (rev 209917)
</span><span class="lines">@@ -1,3 +1,4 @@
</span><ins>+CONSOLE MESSAGE: line 1: Fetch API cannot load http://localhost:8000/inspector/network/resources/cors-data.pl. Cross origin requests are not allowed when using same-origin fetch mode.
</ins><span class="cx"> Tests for Network data with different types of Fetch requests.
</span><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/ChangeLog (209916 => 209917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/ChangeLog        2016-12-16 11:50:19 UTC (rev 209916)
+++ trunk/LayoutTests/imported/w3c/ChangeLog        2016-12-16 11:51:16 UTC (rev 209917)
</span><span class="lines">@@ -1,3 +1,26 @@
</span><ins>+2016-12-16  Youenn Fablet  &lt;youenn@apple.com&gt;
+
+        [Fetch API] Improve resource loading console logging
+        https://bugs.webkit.org/show_bug.cgi?id=160546
+
+        Reviewed by Alex Christensen.
+
+        Rebasing since error logging is happening for fetch API.
+
+        * web-platform-tests/fetch/api/basic/mode-same-origin-expected.txt:
+        * web-platform-tests/fetch/api/basic/scheme-about-expected.txt:
+        * web-platform-tests/fetch/api/basic/scheme-blob-expected.txt:
+        * web-platform-tests/fetch/api/basic/scheme-others-expected.txt:
+        * web-platform-tests/fetch/api/cors/cors-basic-expected.txt:
+        * web-platform-tests/fetch/api/cors/cors-cookies-expected.txt:
+        * web-platform-tests/fetch/api/cors/cors-multiple-origins-expected.txt:
+        * web-platform-tests/fetch/api/cors/cors-origin-expected.txt:
+        * web-platform-tests/fetch/api/cors/cors-preflight.html:
+        * web-platform-tests/fetch/api/cors/cors-redirect-credentials-expected.txt:
+        * web-platform-tests/fetch/api/redirect/redirect-location-expected.txt:
+        * web-platform-tests/fetch/api/redirect/redirect-schemes-expected.txt:
+        * web-platform-tests/fetch/api/redirect/redirect-to-dataurl-expected.txt:
+
</ins><span class="cx"> 2016-12-15  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Move charCode / keyCode / which attributes from UIEvent to KeyboardEvent
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicmodesameoriginexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin-expected.txt (209916 => 209917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin-expected.txt        2016-12-16 11:50:19 UTC (rev 209916)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin-expected.txt        2016-12-16 11:51:16 UTC (rev 209917)
</span><span class="lines">@@ -1,3 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 1: Fetch API cannot load https://localhost:9443/fetch/api/resources/top.txt. Cross origin requests are not allowed when using same-origin fetch mode.
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://127.0.0.1:8800/fetch/api/resources/top.txt. Cross origin requests are not allowed when using same-origin fetch mode.
</ins><span class="cx"> CONSOLE MESSAGE: Unsafe attempt to load URL https://localhost:9443/fetch/api/resources/top.txt?location=https%3A%2F%2Flocalhost%3A9443%2Ffetch%2Fapi%2Fresources%2Ftop.txt&amp;count=1 from frame with URL http://localhost:8800/fetch/api/basic/mode-same-origin.html. Domains, protocols and ports must match.
</span><span class="cx"> 
</span><span class="cx"> CONSOLE MESSAGE: Unsafe attempt to load URL http://127.0.0.1:8800/fetch/api/resources/top.txt?location=http%3A%2F%2F127.0.0.1%3A8800%2Ffetch%2Fapi%2Fresources%2Ftop.txt&amp;count=1 from frame with URL http://localhost:8800/fetch/api/basic/mode-same-origin.html. Domains, protocols and ports must match.
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemeaboutexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about-expected.txt (209916 => 209917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about-expected.txt        2016-12-16 11:50:19 UTC (rev 209916)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about-expected.txt        2016-12-16 11:51:16 UTC (rev 209917)
</span><span class="lines">@@ -1,3 +1,9 @@
</span><ins>+CONSOLE MESSAGE: line 1: Fetch API cannot load about:blank. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: Fetch API cannot load about:blank. Preflight response is not successful
+CONSOLE MESSAGE: line 1: Fetch API cannot load about:blank. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 1: Fetch API cannot load about:invalid.com. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 1: Fetch API cannot load about:config. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 1: Fetch API cannot load about:unicorn. Cross origin requests are only supported for HTTP.
</ins><span class="cx"> 
</span><span class="cx"> FAIL Fetching about:blank (GET) is OK promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
</span><span class="cx"> FAIL Fetching about:blank (PUT) is OK promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemeblobexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-blob-expected.txt (209916 => 209917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-blob-expected.txt        2016-12-16 11:50:19 UTC (rev 209916)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-blob-expected.txt        2016-12-16 11:51:16 UTC (rev 209917)
</span><span class="lines">@@ -1,3 +1,4 @@
</span><ins>+CONSOLE MESSAGE: line 1: Fetch API cannot load blob:http://www.localhost:8800/. Cross origin requests are only supported for HTTP.
</ins><span class="cx"> 
</span><span class="cx"> PASS Fetching [GET] URL.createObjectURL(blob) is OK 
</span><span class="cx"> PASS Fetching [GET] blob:http://www.localhost:8800/ is KO 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemeothersexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-others-expected.txt (209916 => 209917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-others-expected.txt        2016-12-16 11:50:19 UTC (rev 209916)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-others-expected.txt        2016-12-16 11:51:16 UTC (rev 209917)
</span><span class="lines">@@ -1,3 +1,19 @@
</span><ins>+CONSOLE MESSAGE: line 1: Fetch API cannot load aaa://localhost:8800/. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 1: Fetch API cannot load cap://localhost:8800/. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 1: Fetch API cannot load cid://localhost:8800/. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 1: Fetch API cannot load dav://localhost:8800/. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 1: Fetch API cannot load dict://localhost:8800/. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 1: Fetch API cannot load dns://localhost:8800/. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 1: Fetch API cannot load geo://localhost:8800/. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 1: Fetch API cannot load im://localhost:8800/. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 1: Fetch API cannot load imap://localhost:8800/. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 1: Fetch API cannot load ipp://localhost:8800/. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 1: Fetch API cannot load ldap://localhost:8800/. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 1: Fetch API cannot load mailto://localhost:8800/. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 1: Fetch API cannot load nfs://localhost:8800/. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 1: Fetch API cannot load pop://localhost:8800/. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 1: Fetch API cannot load rtsp://localhost:8800/. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 1: Fetch API cannot load snmp://localhost:8800/. Cross origin requests are only supported for HTTP.
</ins><span class="cx"> 
</span><span class="cx"> PASS Fetching aaa://localhost:8800/ is KO 
</span><span class="cx"> PASS Fetching cap://localhost:8800/ is KO 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsbasicexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-expected.txt (209916 => 209917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-expected.txt        2016-12-16 11:50:19 UTC (rev 209916)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-expected.txt        2016-12-16 11:51:16 UTC (rev 209917)
</span><span class="lines">@@ -1,8 +1,13 @@
</span><span class="cx"> CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/top.txt. Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</ins><span class="cx"> CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load https://localhost:9443/fetch/api/resources/top.txt. Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</ins><span class="cx"> CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://127.0.0.1:8800/fetch/api/resources/top.txt. Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</ins><span class="cx"> CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://127.0.0.1:8801/fetch/api/resources/top.txt. Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</ins><span class="cx"> CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load https://127.0.0.1:9443/fetch/api/resources/top.txt. Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</ins><span class="cx"> 
</span><span class="cx"> PASS Same domain different port [no-cors mode] 
</span><span class="cx"> PASS Same domain different port [server forbid CORS] 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorscookiesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies-expected.txt (209916 => 209917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies-expected.txt        2016-12-16 11:50:19 UTC (rev 209916)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies-expected.txt        2016-12-16 11:51:16 UTC (rev 209917)
</span><span class="lines">@@ -1,4 +1,5 @@
</span><span class="cx"> Blocked access to external URL http://www.localhost:8800/fetch/api/resources/inspect-headers.py?cors&amp;headers=cookie
</span><ins>+CONSOLE MESSAGE: line 1: Fetch API cannot load http://www.localhost:8800/fetch/api/resources/inspect-headers.py?cors&amp;headers=cookie due to access control checks.
</ins><span class="cx"> 
</span><span class="cx"> PASS Omit mode: no cookie sent 
</span><span class="cx"> FAIL Include mode: 1 cookie assert_equals: Request includes cookie(s) expected (string) &quot;a=1&quot; but got (object) null
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsmultipleoriginsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-multiple-origins-expected.txt (209916 => 209917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-multiple-origins-expected.txt        2016-12-16 11:50:19 UTC (rev 209916)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-multiple-origins-expected.txt        2016-12-16 11:51:16 UTC (rev 209917)
</span><span class="lines">@@ -1,9 +1,15 @@
</span><span class="cx"> CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/preflight.py?origin=%22%22%2C%20http%3A%2F%2Fexample.com%2C%20http%3A%2F%2Flocalhost%3A8800. Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</ins><span class="cx"> CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/preflight.py?origin=%22%22%2C%20http%3A%2F%2Fexample.com%2C%20*. Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</ins><span class="cx"> CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/preflight.py?origin=%22%22%2C%20http%3A%2F%2Flocalhost%3A8800%2C%20http%3A%2F%2Flocalhost%3A8800. Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</ins><span class="cx"> CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/preflight.py?origin=*%2C%20http%3A%2F%2Fexample.com%2C%20*. Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</ins><span class="cx"> CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/preflight.py?origin=*%2C%20http%3A%2F%2Fexample.com%2C%20http%3A%2F%2Flocalhost%3A8800. Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</ins><span class="cx"> CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/preflight.py?origin=%2C%20http%3A%2F%2Fexample.com%2C%20https%3A%2F%2Fexample2.com. Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</ins><span class="cx"> 
</span><span class="cx"> FAIL 3 origins allowed, match the 3rd (http://localhost:8800) promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
</span><span class="cx"> FAIL 3 origins allowed, match the 3rd (&quot;*&quot;) promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsoriginexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin-expected.txt (209916 => 209917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin-expected.txt        2016-12-16 11:50:19 UTC (rev 209916)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin-expected.txt        2016-12-16 11:51:16 UTC (rev 209917)
</span><span class="lines">@@ -1,11 +1,3 @@
</span><del>-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</del><span class="cx"> 
</span><span class="cx"> PASS Cross domain different subdomain [origin OK] 
</span><span class="cx"> PASS Cross domain different subdomain [origin KO] 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflighthtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.html (209916 => 209917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.html        2016-12-16 11:50:19 UTC (rev 209916)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.html        2016-12-16 11:51:16 UTC (rev 209917)
</span><span class="lines">@@ -16,11 +16,6 @@
</span><span class="cx">     &lt;script src=&quot;../resources/utils.js&quot;&gt;&lt;/script&gt;
</span><span class="cx">     &lt;script src=&quot;/common/get-host-info.sub.js&quot;&gt;&lt;/script&gt;
</span><span class="cx">     &lt;script src=&quot;/common/utils.js&quot;&gt;&lt;/script&gt;
</span><del>-    &lt;script&gt;
-// To be removed, see https://bugs.webkit.org/show_bug.cgi?id=161310
-console.log(&quot;Doing some logging once&quot;)
-console.log(&quot;Doing some logging again&quot;)
-    &lt;/script&gt;
</del><span class="cx">     &lt;script src=&quot;cors-preflight.js&quot;&gt;&lt;/script&gt;
</span><span class="cx">   &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectcredentialsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials-expected.txt (209916 => 209917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials-expected.txt        2016-12-16 11:50:19 UTC (rev 209916)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials-expected.txt        2016-12-16 11:51:16 UTC (rev 209917)
</span><span class="lines">@@ -1,63 +1,123 @@
</span><span class="cx"> CONSOLE MESSAGE: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=301&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1. Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=301&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1. Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=301&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1. Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://localhost:8800/fetch/api/resources/preflight.py?redirect_status=301&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=301&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://localhost:8800/fetch/api/resources/preflight.py?redirect_status=301&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://localhost:8800/fetch/api/resources/preflight.py?redirect_status=301&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=301&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://localhost:8800/fetch/api/resources/preflight.py?redirect_status=301&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://localhost:8800/fetch/api/resources/preflight.py?redirect_status=301&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=301&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://localhost:8800/fetch/api/resources/preflight.py?redirect_status=301&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=301&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=301&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=301&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=301&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=301&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=301&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=301&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=301&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=301&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://127.0.0.1:8800/fetch/api/resources/preflight.py?redirect_status=301&amp;location=http%3A%2F%2Fuser%3Apassword%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=301&amp;location=http%3A%2F%2Fuser%3Apassword%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://127.0.0.1:8800/fetch/api/resources/preflight.py?redirect_status=301&amp;location=http%3A%2F%2Fuser%3Apassword%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://127.0.0.1:8800/fetch/api/resources/preflight.py?redirect_status=301&amp;location=http%3A%2F%2Fuser%3A%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=301&amp;location=http%3A%2F%2Fuser%3A%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://127.0.0.1:8800/fetch/api/resources/preflight.py?redirect_status=301&amp;location=http%3A%2F%2Fuser%3A%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://127.0.0.1:8800/fetch/api/resources/preflight.py?redirect_status=301&amp;location=http%3A%2F%2F%3Apassword%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=301&amp;location=http%3A%2F%2F%3Apassword%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://127.0.0.1:8800/fetch/api/resources/preflight.py?redirect_status=301&amp;location=http%3A%2F%2F%3Apassword%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=302&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1. Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=302&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1. Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=302&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1. Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://localhost:8800/fetch/api/resources/preflight.py?redirect_status=302&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=302&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://localhost:8800/fetch/api/resources/preflight.py?redirect_status=302&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://localhost:8800/fetch/api/resources/preflight.py?redirect_status=302&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=302&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://localhost:8800/fetch/api/resources/preflight.py?redirect_status=302&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://localhost:8800/fetch/api/resources/preflight.py?redirect_status=302&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=302&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://localhost:8800/fetch/api/resources/preflight.py?redirect_status=302&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=302&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=302&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=302&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=302&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=302&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=302&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=302&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=302&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=302&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://127.0.0.1:8800/fetch/api/resources/preflight.py?redirect_status=302&amp;location=http%3A%2F%2Fuser%3Apassword%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=302&amp;location=http%3A%2F%2Fuser%3Apassword%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://127.0.0.1:8800/fetch/api/resources/preflight.py?redirect_status=302&amp;location=http%3A%2F%2Fuser%3Apassword%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://127.0.0.1:8800/fetch/api/resources/preflight.py?redirect_status=302&amp;location=http%3A%2F%2Fuser%3A%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=302&amp;location=http%3A%2F%2Fuser%3A%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://127.0.0.1:8800/fetch/api/resources/preflight.py?redirect_status=302&amp;location=http%3A%2F%2Fuser%3A%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://127.0.0.1:8800/fetch/api/resources/preflight.py?redirect_status=302&amp;location=http%3A%2F%2F%3Apassword%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=302&amp;location=http%3A%2F%2F%3Apassword%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://127.0.0.1:8800/fetch/api/resources/preflight.py?redirect_status=302&amp;location=http%3A%2F%2F%3Apassword%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=303&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1. Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=303&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1. Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=303&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1. Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://localhost:8800/fetch/api/resources/preflight.py?redirect_status=303&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=303&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://localhost:8800/fetch/api/resources/preflight.py?redirect_status=303&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://localhost:8800/fetch/api/resources/preflight.py?redirect_status=303&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=303&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://localhost:8800/fetch/api/resources/preflight.py?redirect_status=303&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://localhost:8800/fetch/api/resources/preflight.py?redirect_status=303&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=303&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://localhost:8800/fetch/api/resources/preflight.py?redirect_status=303&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=303&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=303&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=303&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=303&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=303&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=303&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=303&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=303&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=303&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://127.0.0.1:8800/fetch/api/resources/preflight.py?redirect_status=303&amp;location=http%3A%2F%2Fuser%3Apassword%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=303&amp;location=http%3A%2F%2Fuser%3Apassword%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://127.0.0.1:8800/fetch/api/resources/preflight.py?redirect_status=303&amp;location=http%3A%2F%2Fuser%3Apassword%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://127.0.0.1:8800/fetch/api/resources/preflight.py?redirect_status=303&amp;location=http%3A%2F%2Fuser%3A%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=303&amp;location=http%3A%2F%2Fuser%3A%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://127.0.0.1:8800/fetch/api/resources/preflight.py?redirect_status=303&amp;location=http%3A%2F%2Fuser%3A%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://127.0.0.1:8800/fetch/api/resources/preflight.py?redirect_status=303&amp;location=http%3A%2F%2F%3Apassword%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=303&amp;location=http%3A%2F%2F%3Apassword%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://127.0.0.1:8800/fetch/api/resources/preflight.py?redirect_status=303&amp;location=http%3A%2F%2F%3Apassword%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=307&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1. Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=307&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1. Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=307&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1. Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://localhost:8800/fetch/api/resources/preflight.py?redirect_status=307&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=307&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://localhost:8800/fetch/api/resources/preflight.py?redirect_status=307&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://localhost:8800/fetch/api/resources/preflight.py?redirect_status=307&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=307&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://localhost:8800/fetch/api/resources/preflight.py?redirect_status=307&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://localhost:8800/fetch/api/resources/preflight.py?redirect_status=307&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=307&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://localhost:8800/fetch/api/resources/preflight.py?redirect_status=307&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=307&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=307&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=307&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=307&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=307&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=307&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=307&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=307&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=307&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://127.0.0.1:8800/fetch/api/resources/preflight.py?redirect_status=307&amp;location=http%3A%2F%2Fuser%3Apassword%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=307&amp;location=http%3A%2F%2Fuser%3Apassword%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://127.0.0.1:8800/fetch/api/resources/preflight.py?redirect_status=307&amp;location=http%3A%2F%2Fuser%3Apassword%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://127.0.0.1:8800/fetch/api/resources/preflight.py?redirect_status=307&amp;location=http%3A%2F%2Fuser%3A%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=307&amp;location=http%3A%2F%2Fuser%3A%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://127.0.0.1:8800/fetch/api/resources/preflight.py?redirect_status=307&amp;location=http%3A%2F%2Fuser%3A%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://127.0.0.1:8800/fetch/api/resources/preflight.py?redirect_status=307&amp;location=http%3A%2F%2F%3Apassword%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=307&amp;location=http%3A%2F%2F%3Apassword%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://127.0.0.1:8800/fetch/api/resources/preflight.py?redirect_status=307&amp;location=http%3A%2F%2F%3Apassword%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=308&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1. Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=308&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1. Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=308&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1. Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://localhost:8800/fetch/api/resources/preflight.py?redirect_status=308&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=308&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://localhost:8800/fetch/api/resources/preflight.py?redirect_status=308&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://localhost:8800/fetch/api/resources/preflight.py?redirect_status=308&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=308&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://localhost:8800/fetch/api/resources/preflight.py?redirect_status=308&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://localhost:8800/fetch/api/resources/preflight.py?redirect_status=308&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=308&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://localhost:8800/fetch/api/resources/preflight.py?redirect_status=308&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=308&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=308&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=308&amp;location=http%3A%2F%2Fuser%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=308&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=308&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=308&amp;location=http%3A%2F%2Fuser%3A%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=308&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=308&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://localhost:8801/fetch/api/resources/preflight.py?redirect_status=308&amp;location=http%3A%2F%2F%3Apassword%40localhost%3A8801%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://127.0.0.1:8800/fetch/api/resources/preflight.py?redirect_status=308&amp;location=http%3A%2F%2Fuser%3Apassword%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=308&amp;location=http%3A%2F%2Fuser%3Apassword%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://127.0.0.1:8800/fetch/api/resources/preflight.py?redirect_status=308&amp;location=http%3A%2F%2Fuser%3Apassword%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://127.0.0.1:8800/fetch/api/resources/preflight.py?redirect_status=308&amp;location=http%3A%2F%2Fuser%3A%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=308&amp;location=http%3A%2F%2Fuser%3A%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://127.0.0.1:8800/fetch/api/resources/preflight.py?redirect_status=308&amp;location=http%3A%2F%2Fuser%3A%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://127.0.0.1:8800/fetch/api/resources/preflight.py?redirect_status=308&amp;location=http%3A%2F%2F%3Apassword%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/redirect.py?redirect_status=308&amp;location=http%3A%2F%2F%3Apassword%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py. Cross-origin redirection to http://127.0.0.1:8800/fetch/api/resources/preflight.py?redirect_status=308&amp;location=http%3A%2F%2F%3Apassword%40127.0.0.1%3A8800%2Ffetch%2Fapi%2Fcors%2F..%2Fresources%2Fpreflight.py&amp;count=1 denied by Cross-Origin Resource Sharing policy: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
</ins><span class="cx"> 
</span><span class="cx"> PASS Redirect 301 from same origin to remote with user and password 
</span><span class="cx"> PASS Redirect 301 from same origin to remote with user 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapiredirectredirectlocationexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-location-expected.txt (209916 => 209917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-location-expected.txt        2016-12-16 11:50:19 UTC (rev 209916)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-location-expected.txt        2016-12-16 11:51:16 UTC (rev 209917)
</span><span class="lines">@@ -1,8 +1,13 @@
</span><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to data:,data%20url denied by Cross-Origin Resource Sharing policy: URL is either a non-HTTP URL or contains credentials.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8800/fetch/api/resources/redirect.py?redirect_status=301&amp;location=data%3A%2Cdata%2520url. Cross-origin redirection to data:,data%20url denied by Cross-Origin Resource Sharing policy: URL is either a non-HTTP URL or contains credentials.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to data:,data%20url denied by Cross-Origin Resource Sharing policy: URL is either a non-HTTP URL or contains credentials.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8800/fetch/api/resources/redirect.py?redirect_status=302&amp;location=data%3A%2Cdata%2520url. Cross-origin redirection to data:,data%20url denied by Cross-Origin Resource Sharing policy: URL is either a non-HTTP URL or contains credentials.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to data:,data%20url denied by Cross-Origin Resource Sharing policy: URL is either a non-HTTP URL or contains credentials.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8800/fetch/api/resources/redirect.py?redirect_status=303&amp;location=data%3A%2Cdata%2520url. Cross-origin redirection to data:,data%20url denied by Cross-Origin Resource Sharing policy: URL is either a non-HTTP URL or contains credentials.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to data:,data%20url denied by Cross-Origin Resource Sharing policy: URL is either a non-HTTP URL or contains credentials.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8800/fetch/api/resources/redirect.py?redirect_status=307&amp;location=data%3A%2Cdata%2520url. Cross-origin redirection to data:,data%20url denied by Cross-Origin Resource Sharing policy: URL is either a non-HTTP URL or contains credentials.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to data:,data%20url denied by Cross-Origin Resource Sharing policy: URL is either a non-HTTP URL or contains credentials.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8800/fetch/api/resources/redirect.py?redirect_status=308&amp;location=data%3A%2Cdata%2520url. Cross-origin redirection to data:,data%20url denied by Cross-Origin Resource Sharing policy: URL is either a non-HTTP URL or contains credentials.
</ins><span class="cx"> 
</span><span class="cx"> PASS Redirect 301 in &quot;follow&quot; mode without location 
</span><span class="cx"> PASS Redirect 301 in &quot;manual&quot; mode without location 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapiredirectredirectschemesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-schemes-expected.txt (209916 => 209917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-schemes-expected.txt        2016-12-16 11:50:19 UTC (rev 209916)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-schemes-expected.txt        2016-12-16 11:51:16 UTC (rev 209917)
</span><span class="lines">@@ -1,8 +1,13 @@
</span><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to mailto:a@a.com denied by Cross-Origin Resource Sharing policy: URL is either a non-HTTP URL or contains credentials.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8800/fetch/api/resources/redirect.py?location=mailto:a@a.com. Cross-origin redirection to mailto:a@a.com denied by Cross-Origin Resource Sharing policy: URL is either a non-HTTP URL or contains credentials.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to data:,HI denied by Cross-Origin Resource Sharing policy: URL is either a non-HTTP URL or contains credentials.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8800/fetch/api/resources/redirect.py?location=data:,HI. Cross-origin redirection to data:,HI denied by Cross-Origin Resource Sharing policy: URL is either a non-HTTP URL or contains credentials.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to facetime:a@a.org denied by Cross-Origin Resource Sharing policy: URL is either a non-HTTP URL or contains credentials.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8800/fetch/api/resources/redirect.py?location=facetime:a@a.org. Cross-origin redirection to facetime:a@a.org denied by Cross-Origin Resource Sharing policy: URL is either a non-HTTP URL or contains credentials.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to about:blank denied by Cross-Origin Resource Sharing policy: URL is either a non-HTTP URL or contains credentials.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8800/fetch/api/resources/redirect.py?location=about:blank. Cross-origin redirection to about:blank denied by Cross-Origin Resource Sharing policy: URL is either a non-HTTP URL or contains credentials.
</ins><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to about:unicorn denied by Cross-Origin Resource Sharing policy: URL is either a non-HTTP URL or contains credentials.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8800/fetch/api/resources/redirect.py?location=about:unicorn. Cross-origin redirection to about:unicorn denied by Cross-Origin Resource Sharing policy: URL is either a non-HTTP URL or contains credentials.
</ins><span class="cx"> CONSOLE MESSAGE: Not allowed to load local resource: blob:djfksfjs
</span><span class="cx"> 
</span><span class="cx"> PASS Fetch: handling different schemes in redirects 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapiredirectredirecttodataurlexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-to-dataurl-expected.txt (209916 => 209917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-to-dataurl-expected.txt        2016-12-16 11:50:19 UTC (rev 209916)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-to-dataurl-expected.txt        2016-12-16 11:51:16 UTC (rev 209917)
</span><span class="lines">@@ -1,7 +1,11 @@
</span><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to data:text/plain;base64,cmVzcG9uc2UncyBib2R5 denied by Cross-Origin Resource Sharing policy: URL is either a non-HTTP URL or contains credentials.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8800/fetch/api/resources/redirect.py?cors&amp;location=data%3Atext%2Fplain%3Bbase64%2CcmVzcG9uc2UncyBib2R5. Cross-origin redirection to data:text/plain;base64,cmVzcG9uc2UncyBib2R5 denied by Cross-Origin Resource Sharing policy: URL is either a non-HTTP URL or contains credentials.
+CONSOLE MESSAGE: Fetch API cannot load data:text/plain;base64,cmVzcG9uc2UncyBib2R5. Redirection to URL with a scheme that is not HTTP(S).
</ins><span class="cx"> CONSOLE MESSAGE: Unsafe attempt to load URL data:text/plain;base64,cmVzcG9uc2UncyBib2R5 from frame with URL http://localhost:8800/fetch/api/redirect/redirect-to-dataurl.html. Domains, protocols and ports must match.
</span><span class="cx"> 
</span><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to data:text/plain;base64,cmVzcG9uc2UncyBib2R5 denied by Cross-Origin Resource Sharing policy: URL is either a non-HTTP URL or contains credentials.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://127.0.0.1:8800/fetch/api/resources/redirect.py?cors&amp;location=data%3Atext%2Fplain%3Bbase64%2CcmVzcG9uc2UncyBib2R5. Cross-origin redirection to data:text/plain;base64,cmVzcG9uc2UncyBib2R5 denied by Cross-Origin Resource Sharing policy: URL is either a non-HTTP URL or contains credentials.
+CONSOLE MESSAGE: Fetch API cannot load data:text/plain;base64,cmVzcG9uc2UncyBib2R5. Redirection to URL with a scheme that is not HTTP(S).
</ins><span class="cx"> 
</span><span class="cx"> PASS Testing data URL loading after same-origin redirection (cors mode) 
</span><span class="cx"> PASS Testing data URL loading after same-origin redirection (no-cors mode) 
</span></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorwk2importedw3cwebplatformtestsfetchapicorscorsbasicexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-expected.txt (209916 => 209917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-expected.txt        2016-12-16 11:50:19 UTC (rev 209916)
+++ trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-expected.txt        2016-12-16 11:51:16 UTC (rev 209917)
</span><span class="lines">@@ -1,6 +1,9 @@
</span><span class="cx"> CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/top.txt. Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</ins><span class="cx"> CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://127.0.0.1:8800/fetch/api/resources/top.txt. Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</ins><span class="cx"> CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://127.0.0.1:8801/fetch/api/resources/top.txt. Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</ins><span class="cx"> 
</span><span class="cx"> PASS Same domain different port [no-cors mode] 
</span><span class="cx"> PASS Same domain different port [server forbid CORS] 
</span></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorwk2importedw3cwebplatformtestsfetchapicorscorsoriginexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin-expected.txt (209916 => 209917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin-expected.txt        2016-12-16 11:50:19 UTC (rev 209916)
+++ trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin-expected.txt        2016-12-16 11:51:16 UTC (rev 209917)
</span><span class="lines">@@ -1,9 +1,3 @@
</span><del>-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</del><span class="cx"> 
</span><span class="cx"> PASS Cross domain different subdomain [origin OK] 
</span><span class="cx"> PASS Cross domain different subdomain [origin KO] 
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacwk2importedw3cwebplatformtestsfetchapicorscorsbasicexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-expected.txt (209916 => 209917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-expected.txt        2016-12-16 11:50:19 UTC (rev 209916)
+++ trunk/LayoutTests/platform/mac-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-expected.txt        2016-12-16 11:51:16 UTC (rev 209917)
</span><span class="lines">@@ -1,6 +1,9 @@
</span><span class="cx"> CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/top.txt. Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</ins><span class="cx"> CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://127.0.0.1:8800/fetch/api/resources/top.txt. Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</ins><span class="cx"> CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</span><ins>+CONSOLE MESSAGE: Fetch API cannot load http://127.0.0.1:8801/fetch/api/resources/top.txt. Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</ins><span class="cx"> 
</span><span class="cx"> PASS Same domain different port [no-cors mode] 
</span><span class="cx"> PASS Same domain different port [server forbid CORS] 
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacwk2importedw3cwebplatformtestsfetchapicorscorsoriginexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin-expected.txt (209916 => 209917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin-expected.txt        2016-12-16 11:50:19 UTC (rev 209916)
+++ trunk/LayoutTests/platform/mac-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin-expected.txt        2016-12-16 11:51:16 UTC (rev 209917)
</span><span class="lines">@@ -1,9 +1,3 @@
</span><del>-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</del><span class="cx"> 
</span><span class="cx"> PASS Cross domain different subdomain [origin OK] 
</span><span class="cx"> PASS Cross domain different subdomain [origin KO] 
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (209916 => 209917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-12-16 11:50:19 UTC (rev 209916)
+++ trunk/Source/WebCore/ChangeLog        2016-12-16 11:51:16 UTC (rev 209917)
</span><span class="lines">@@ -1,3 +1,53 @@
</span><ins>+2016-12-16  Youenn Fablet  &lt;youenn@apple.com&gt;
+
+        [Fetch API] Improve resource loading console logging
+        https://bugs.webkit.org/show_bug.cgi?id=160546
+
+        Reviewed by Alex Christensen.
+
+        Covered by rebased tests.
+
+        Adding support for logging of resource loading failures in ThreadableLoader.
+        This will allow doing consistent logging for clients such as fetch, XHR, event source...
+
+        Doing logging for Fetch API only at the moment in ThreadableLoader.
+        Future patches should migrate XHR to this logging system.
+
+        Logging routine is implemented in ThreadableLoader.
+        It is used directly by DocumentThreadableLoader before calling didFail client callback.
+        DocumentThreadableLoader has a new option to not log errors, in the case the client is WorkerThreadableLoader::MainBridge.
+        In that case, the logging is done in the worker context within WorkerThreadableLoader::MainBridge::didFail
+
+        * loader/DocumentThreadableLoader.cpp:
+        (WebCore::DocumentThreadableLoader::loadResourceSynchronously): Enable logging.
+        (WebCore::DocumentThreadableLoader::create): Passing logging parameter to constructor.
+        (WebCore::DocumentThreadableLoader::DocumentThreadableLoader): Adding initialization of logging parameter.
+        (WebCore::DocumentThreadableLoader::makeSimpleCrossOriginAccessRequest): Making use of the new logErrorAndFail helper routine.
+        (WebCore::DocumentThreadableLoader::cancel): No need to log error if it is being cancelled.
+        (WebCore::DocumentThreadableLoader::redirectReceived): Made the reportXX routines methods of DocumentThreadableLoaders and using logErrorAndFail internally.
+        (WebCore::DocumentThreadableLoader::didFail): Wrapper around logErrorAndFail since cancel is not calling it anymore.
+        (WebCore::DocumentThreadableLoader::preflightFailure):
+        (WebCore::DocumentThreadableLoader::loadRequest):
+        (WebCore::DocumentThreadableLoader::reportRedirectionWithBadScheme):
+        (WebCore::DocumentThreadableLoader::reportContentSecurityPolicyError):
+        (WebCore::DocumentThreadableLoader::reportCrossOriginResourceSharingError):
+        (WebCore::DocumentThreadableLoader::logErrorAndFail):
+        (WebCore::reportContentSecurityPolicyError): Deleted.
+        (WebCore::reportCrossOriginResourceSharingError): Deleted.
+        (WebCore::reportRedirectionWithBadScheme): Deleted.
+        * loader/DocumentThreadableLoader.h:
+        * loader/ThreadableLoader.cpp:
+        (WebCore::ThreadableLoader::logError):
+        * loader/ThreadableLoader.h:
+        * loader/ThreadableLoaderClientWrapper.h:
+        (WebCore::ThreadableLoaderClientWrapper::create):
+        (WebCore::ThreadableLoaderClientWrapper::initiator):
+        (WebCore::ThreadableLoaderClientWrapper::ThreadableLoaderClientWrapper):
+        * loader/WorkerThreadableLoader.cpp:
+        (WebCore::WorkerThreadableLoader::WorkerThreadableLoader):
+        (WebCore::WorkerThreadableLoader::MainThreadBridge::MainThreadBridge):
+        (WebCore::WorkerThreadableLoader::MainThreadBridge::didFail):
+
</ins><span class="cx"> 2016-12-16  Enrique Ocaña González  &lt;eocanha@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [GStreamer][MSE] Fix build warning in MediaPlayerPrivateGStreamer.cpp using gcc 6.2
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderDocumentThreadableLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/DocumentThreadableLoader.cpp (209916 => 209917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/DocumentThreadableLoader.cpp        2016-12-16 11:50:19 UTC (rev 209916)
+++ trunk/Source/WebCore/loader/DocumentThreadableLoader.cpp        2016-12-16 11:51:16 UTC (rev 209917)
</span><span class="lines">@@ -58,7 +58,7 @@
</span><span class="cx"> void DocumentThreadableLoader::loadResourceSynchronously(Document&amp; document, ResourceRequest&amp;&amp; request, ThreadableLoaderClient&amp; client, const ThreadableLoaderOptions&amp; options, RefPtr&lt;SecurityOrigin&gt;&amp;&amp; origin, std::unique_ptr&lt;ContentSecurityPolicy&gt;&amp;&amp; contentSecurityPolicy)
</span><span class="cx"> {
</span><span class="cx">     // The loader will be deleted as soon as this function exits.
</span><del>-    Ref&lt;DocumentThreadableLoader&gt; loader = adoptRef(*new DocumentThreadableLoader(document, client, LoadSynchronously, WTFMove(request), options, WTFMove(origin), WTFMove(contentSecurityPolicy), String()));
</del><ins>+    Ref&lt;DocumentThreadableLoader&gt; loader = adoptRef(*new DocumentThreadableLoader(document, client, LoadSynchronously, WTFMove(request), options, WTFMove(origin), WTFMove(contentSecurityPolicy), String(), ShouldLogError::Yes));
</ins><span class="cx">     ASSERT(loader-&gt;hasOneRef());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -67,9 +67,11 @@
</span><span class="cx">     loadResourceSynchronously(document, WTFMove(request), client, options, nullptr, nullptr);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;DocumentThreadableLoader&gt; DocumentThreadableLoader::create(Document&amp; document, ThreadableLoaderClient&amp; client, ResourceRequest&amp;&amp; request, const ThreadableLoaderOptions&amp; options, RefPtr&lt;SecurityOrigin&gt;&amp;&amp; origin, std::unique_ptr&lt;ContentSecurityPolicy&gt;&amp;&amp; contentSecurityPolicy, String&amp;&amp; referrer)
</del><ins>+RefPtr&lt;DocumentThreadableLoader&gt; DocumentThreadableLoader::create(Document&amp; document, ThreadableLoaderClient&amp; client,
+ResourceRequest&amp;&amp; request, const ThreadableLoaderOptions&amp; options, RefPtr&lt;SecurityOrigin&gt;&amp;&amp; origin,
+std::unique_ptr&lt;ContentSecurityPolicy&gt;&amp;&amp; contentSecurityPolicy, String&amp;&amp; referrer, ShouldLogError shouldLogError)
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;DocumentThreadableLoader&gt; loader = adoptRef(new DocumentThreadableLoader(document, client, LoadAsynchronously, WTFMove(request), options, WTFMove(origin), WTFMove(contentSecurityPolicy), WTFMove(referrer)));
</del><ins>+    RefPtr&lt;DocumentThreadableLoader&gt; loader = adoptRef(new DocumentThreadableLoader(document, client, LoadAsynchronously, WTFMove(request), options, WTFMove(origin), WTFMove(contentSecurityPolicy), WTFMove(referrer), shouldLogError));
</ins><span class="cx">     if (!loader-&gt;isLoading())
</span><span class="cx">         loader = nullptr;
</span><span class="cx">     return loader;
</span><span class="lines">@@ -77,10 +79,10 @@
</span><span class="cx"> 
</span><span class="cx"> RefPtr&lt;DocumentThreadableLoader&gt; DocumentThreadableLoader::create(Document&amp; document, ThreadableLoaderClient&amp; client, ResourceRequest&amp;&amp; request, const ThreadableLoaderOptions&amp; options, String&amp;&amp; referrer)
</span><span class="cx"> {
</span><del>-    return create(document, client, WTFMove(request), options, nullptr, nullptr, WTFMove(referrer));
</del><ins>+    return create(document, client, WTFMove(request), options, nullptr, nullptr, WTFMove(referrer), ShouldLogError::Yes);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-DocumentThreadableLoader::DocumentThreadableLoader(Document&amp; document, ThreadableLoaderClient&amp; client, BlockingBehavior blockingBehavior, ResourceRequest&amp;&amp; request, const ThreadableLoaderOptions&amp; options, RefPtr&lt;SecurityOrigin&gt;&amp;&amp; origin, std::unique_ptr&lt;ContentSecurityPolicy&gt;&amp;&amp; contentSecurityPolicy, String&amp;&amp; referrer)
</del><ins>+DocumentThreadableLoader::DocumentThreadableLoader(Document&amp; document, ThreadableLoaderClient&amp; client, BlockingBehavior blockingBehavior, ResourceRequest&amp;&amp; request, const ThreadableLoaderOptions&amp; options, RefPtr&lt;SecurityOrigin&gt;&amp;&amp; origin, std::unique_ptr&lt;ContentSecurityPolicy&gt;&amp;&amp; contentSecurityPolicy, String&amp;&amp; referrer, ShouldLogError shouldLogError)
</ins><span class="cx">     : m_client(&amp;client)
</span><span class="cx">     , m_document(document)
</span><span class="cx">     , m_options(options)
</span><span class="lines">@@ -90,6 +92,7 @@
</span><span class="cx">     , m_simpleRequest(true)
</span><span class="cx">     , m_async(blockingBehavior == LoadAsynchronously)
</span><span class="cx">     , m_contentSecurityPolicy(WTFMove(contentSecurityPolicy))
</span><ins>+    , m_shouldLogError(shouldLogError)
</ins><span class="cx"> {
</span><span class="cx">     // Setting a referrer header is only supported in the async code path.
</span><span class="cx">     ASSERT(m_async || m_referrer.isEmpty());
</span><span class="lines">@@ -117,7 +120,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (m_options.mode == FetchOptions::Mode::SameOrigin) {
</span><del>-        m_client-&gt;didFail(ResourceError(errorDomainWebKitInternal, 0, request.url(), &quot;Cross origin requests are not supported.&quot;));
</del><ins>+        logErrorAndFail(ResourceError(errorDomainWebKitInternal, 0, request.url(), &quot;Cross origin requests are not allowed when using same-origin fetch mode.&quot;));
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -146,7 +149,7 @@
</span><span class="cx"> 
</span><span class="cx">     // Cross-origin requests are only allowed for HTTP and registered schemes. We would catch this when checking response headers later, but there is no reason to send a request that's guaranteed to be denied.
</span><span class="cx">     if (!SchemeRegistry::shouldTreatURLSchemeAsCORSEnabled(request.url().protocol().toStringWithoutCopying())) {
</span><del>-        m_client-&gt;didFail(ResourceError(errorDomainWebKitInternal, 0, request.url(), &quot;Cross origin requests are only supported for HTTP.&quot;, ResourceError::Type::AccessControl));
</del><ins>+        logErrorAndFail(ResourceError(errorDomainWebKitInternal, 0, request.url(), &quot;Cross origin requests are only supported for HTTP.&quot;, ResourceError::Type::AccessControl));
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -178,7 +181,7 @@
</span><span class="cx">     if (m_client &amp;&amp; m_resource) {
</span><span class="cx">         // FIXME: This error is sent to the client in didFail(), so it should not be an internal one. Use FrameLoaderClient::cancelledError() instead.
</span><span class="cx">         ResourceError error(errorDomainWebKitInternal, 0, m_resource-&gt;url(), &quot;Load cancelled&quot;, ResourceError::Type::Cancellation);
</span><del>-        didFail(m_resource-&gt;identifier(), error);
</del><ins>+        m_client-&gt;didFail(error);
</ins><span class="cx">     }
</span><span class="cx">     clearResource();
</span><span class="cx">     m_client = nullptr;
</span><span class="lines">@@ -206,21 +209,6 @@
</span><span class="cx">         m_preflightChecker = std::nullopt;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static inline void reportContentSecurityPolicyError(ThreadableLoaderClient&amp; client, const URL&amp; url)
-{
-    client.didFail(ResourceError(errorDomainWebKitInternal, 0, url, &quot;Cross-origin redirection denied by Content Security Policy.&quot;, ResourceError::Type::AccessControl));
-}
-
-static inline void reportCrossOriginResourceSharingError(ThreadableLoaderClient&amp; client, const URL&amp; url)
-{
-    client.didFail(ResourceError(errorDomainWebKitInternal, 0, url, &quot;Cross-origin redirection denied by Cross-Origin Resource Sharing policy.&quot;, ResourceError::Type::AccessControl));
-}
-
-static inline void reportRedirectionWithBadScheme(ThreadableLoaderClient&amp; client, const URL&amp; url)
-{
-    client.didFail(ResourceError(errorDomainWebKitInternal, 0, url, &quot;Redirection to URL with a scheme that is not HTTP(S).&quot;, ResourceError::Type::AccessControl));
-}
-
</del><span class="cx"> void DocumentThreadableLoader::redirectReceived(CachedResource&amp; resource, ResourceRequest&amp; request, const ResourceResponse&amp; redirectResponse)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(m_client);
</span><span class="lines">@@ -232,13 +220,13 @@
</span><span class="cx">     // Reassess this check based on https://github.com/whatwg/fetch/issues/393 discussions.
</span><span class="cx">     // We should also disable that check in navigation mode.
</span><span class="cx">     if (!request.url().protocolIsInHTTPFamily() &amp;&amp; m_options.initiator == cachedResourceRequestInitiators().fetch) {
</span><del>-        reportRedirectionWithBadScheme(*m_client, request.url());
</del><ins>+        reportRedirectionWithBadScheme(request.url());
</ins><span class="cx">         clearResource();
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (!isAllowedByContentSecurityPolicy(request.url(), redirectResponse.isNull() ? ContentSecurityPolicy::RedirectResponseReceived::No : ContentSecurityPolicy::RedirectResponseReceived::Yes)) {
</span><del>-        reportContentSecurityPolicyError(*m_client, redirectResponse.url());
</del><ins>+        reportContentSecurityPolicyError(redirectResponse.url());
</ins><span class="cx">         clearResource();
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="lines">@@ -343,7 +331,7 @@
</span><span class="cx"> void DocumentThreadableLoader::didFail(unsigned long, const ResourceError&amp; error)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(m_client);
</span><del>-    m_client-&gt;didFail(error);
</del><ins>+    logErrorAndFail(error);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void DocumentThreadableLoader::preflightSuccess(ResourceRequest&amp;&amp; request)
</span><span class="lines">@@ -362,9 +350,8 @@
</span><span class="cx">     m_preflightChecker = std::nullopt;
</span><span class="cx"> 
</span><span class="cx">     InspectorInstrumentation::didFailLoading(m_document.frame(), m_document.frame()-&gt;loader().documentLoader(), identifier, error);
</span><del>-
</del><span class="cx">     ASSERT(m_client);
</span><del>-    m_client-&gt;didFail(error);
</del><ins>+    logErrorAndFail(error);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void DocumentThreadableLoader::loadRequest(ResourceRequest&amp;&amp; request, SecurityCheckPolicy securityCheck)
</span><span class="lines">@@ -397,7 +384,7 @@
</span><span class="cx">             m_resource-&gt;addClient(*this);
</span><span class="cx">         else {
</span><span class="cx">             // FIXME: Since we receive a synchronous error, this is probably due to some AccessControl checks. We should try to retrieve the actual error.
</span><del>-            m_client-&gt;didFail(ResourceError(String(), 0, requestUrl, String(), ResourceError::Type::AccessControl));
</del><ins>+            logErrorAndFail(ResourceError(String(), 0, requestUrl, String(), ResourceError::Type::AccessControl));
</ins><span class="cx">         }
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="lines">@@ -425,7 +412,7 @@
</span><span class="cx">             didFinishLoading(identifier, 0.0);
</span><span class="cx">             return;
</span><span class="cx">         }
</span><del>-        m_client-&gt;didFail(error);
</del><ins>+        logErrorAndFail(error);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -435,11 +422,11 @@
</span><span class="cx">     bool didRedirect = requestURL != response.url();
</span><span class="cx">     if (didRedirect) {
</span><span class="cx">         if (!isAllowedByContentSecurityPolicy(response.url(), ContentSecurityPolicy::RedirectResponseReceived::Yes)) {
</span><del>-            reportContentSecurityPolicyError(*m_client, requestURL);
</del><ins>+            reportContentSecurityPolicyError(requestURL);
</ins><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx">         if (!isAllowedRedirect(response.url())) {
</span><del>-            reportCrossOriginResourceSharingError(*m_client, requestURL);
</del><ins>+            reportCrossOriginResourceSharingError(requestURL);
</ins><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="lines">@@ -453,7 +440,7 @@
</span><span class="cx">             tainting = ResourceResponse::Tainting::Cors;
</span><span class="cx">             String accessControlErrorDescription;
</span><span class="cx">             if (!passesAccessControlCheck(response, m_options.allowCredentials, securityOrigin(), accessControlErrorDescription)) {
</span><del>-                m_client-&gt;didFail(ResourceError(errorDomainWebKitInternal, 0, response.url(), accessControlErrorDescription, ResourceError::Type::AccessControl));
</del><ins>+                logErrorAndFail(ResourceError(errorDomainWebKitInternal, 0, response.url(), accessControlErrorDescription, ResourceError::Type::AccessControl));
</ins><span class="cx">                 return;
</span><span class="cx">             }
</span><span class="cx">         }
</span><span class="lines">@@ -508,4 +495,27 @@
</span><span class="cx">     return *m_document.contentSecurityPolicy();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void DocumentThreadableLoader::reportRedirectionWithBadScheme(const URL&amp; url)
+{
+    logErrorAndFail(ResourceError(errorDomainWebKitInternal, 0, url, &quot;Redirection to URL with a scheme that is not HTTP(S).&quot;, ResourceError::Type::AccessControl));
+}
+
+void DocumentThreadableLoader::reportContentSecurityPolicyError(const URL&amp; url)
+{
+    logErrorAndFail(ResourceError(errorDomainWebKitInternal, 0, url, &quot;Cross-origin redirection denied by Content Security Policy.&quot;, ResourceError::Type::AccessControl));
+}
+
+void DocumentThreadableLoader::reportCrossOriginResourceSharingError(const URL&amp; url)
+{
+    logErrorAndFail(ResourceError(errorDomainWebKitInternal, 0, url, &quot;Cross-origin redirection denied by Cross-Origin Resource Sharing policy.&quot;, ResourceError::Type::AccessControl));
+}
+
+void DocumentThreadableLoader::logErrorAndFail(const ResourceError&amp; error)
+{
+    if (m_shouldLogError == ShouldLogError::Yes)
+        logError(m_document, error, m_options.initiator);
+    ASSERT(m_client);
+    m_client-&gt;didFail(error);
+}
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderDocumentThreadableLoaderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/DocumentThreadableLoader.h (209916 => 209917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/DocumentThreadableLoader.h        2016-12-16 11:50:19 UTC (rev 209916)
+++ trunk/Source/WebCore/loader/DocumentThreadableLoader.h        2016-12-16 11:51:16 UTC (rev 209917)
</span><span class="lines">@@ -49,7 +49,8 @@
</span><span class="cx">         static void loadResourceSynchronously(Document&amp;, ResourceRequest&amp;&amp;, ThreadableLoaderClient&amp;, const ThreadableLoaderOptions&amp;, RefPtr&lt;SecurityOrigin&gt;&amp;&amp;, std::unique_ptr&lt;ContentSecurityPolicy&gt;&amp;&amp;);
</span><span class="cx">         static void loadResourceSynchronously(Document&amp;, ResourceRequest&amp;&amp;, ThreadableLoaderClient&amp;, const ThreadableLoaderOptions&amp;);
</span><span class="cx"> 
</span><del>-        static RefPtr&lt;DocumentThreadableLoader&gt; create(Document&amp;, ThreadableLoaderClient&amp;, ResourceRequest&amp;&amp;, const ThreadableLoaderOptions&amp;, RefPtr&lt;SecurityOrigin&gt;&amp;&amp;, std::unique_ptr&lt;ContentSecurityPolicy&gt;&amp;&amp;, String&amp;&amp; referrer);
</del><ins>+        enum class ShouldLogError { No, Yes };
+        static RefPtr&lt;DocumentThreadableLoader&gt; create(Document&amp;, ThreadableLoaderClient&amp;, ResourceRequest&amp;&amp;, const ThreadableLoaderOptions&amp;, RefPtr&lt;SecurityOrigin&gt;&amp;&amp;, std::unique_ptr&lt;ContentSecurityPolicy&gt;&amp;&amp;, String&amp;&amp; referrer, ShouldLogError);
</ins><span class="cx">         static RefPtr&lt;DocumentThreadableLoader&gt; create(Document&amp;, ThreadableLoaderClient&amp;, ResourceRequest&amp;&amp;, const ThreadableLoaderOptions&amp;, String&amp;&amp; referrer = String());
</span><span class="cx"> 
</span><span class="cx">         virtual ~DocumentThreadableLoader();
</span><span class="lines">@@ -74,7 +75,7 @@
</span><span class="cx">             LoadAsynchronously
</span><span class="cx">         };
</span><span class="cx"> 
</span><del>-        DocumentThreadableLoader(Document&amp;, ThreadableLoaderClient&amp;, BlockingBehavior, ResourceRequest&amp;&amp;, const ThreadableLoaderOptions&amp;, RefPtr&lt;SecurityOrigin&gt;&amp;&amp;, std::unique_ptr&lt;ContentSecurityPolicy&gt;&amp;&amp;, String&amp;&amp;);
</del><ins>+        DocumentThreadableLoader(Document&amp;, ThreadableLoaderClient&amp;, BlockingBehavior, ResourceRequest&amp;&amp;, const ThreadableLoaderOptions&amp;, RefPtr&lt;SecurityOrigin&gt;&amp;&amp;, std::unique_ptr&lt;ContentSecurityPolicy&gt;&amp;&amp;, String&amp;&amp;, ShouldLogError);
</ins><span class="cx"> 
</span><span class="cx">         void clearResource();
</span><span class="cx"> 
</span><span class="lines">@@ -109,6 +110,11 @@
</span><span class="cx">         const String&amp; referrer() const { return m_referrer; }
</span><span class="cx">         bool isLoading() { return m_resource || m_preflightChecker; }
</span><span class="cx"> 
</span><ins>+        void reportRedirectionWithBadScheme(const URL&amp;);
+        void reportContentSecurityPolicyError(const URL&amp;);
+        void reportCrossOriginResourceSharingError(const URL&amp;);
+        void logErrorAndFail(const ResourceError&amp;);
+
</ins><span class="cx">         CachedResourceHandle&lt;CachedRawResource&gt; m_resource;
</span><span class="cx">         ThreadableLoaderClient* m_client;
</span><span class="cx">         Document&amp; m_document;
</span><span class="lines">@@ -121,6 +127,8 @@
</span><span class="cx">         std::unique_ptr&lt;ContentSecurityPolicy&gt; m_contentSecurityPolicy;
</span><span class="cx">         std::optional&lt;CrossOriginPreflightChecker&gt; m_preflightChecker;
</span><span class="cx">         std::optional&lt;HTTPHeaderMap&gt; m_originalHeaders;
</span><ins>+
+        ShouldLogError m_shouldLogError;
</ins><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderThreadableLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/ThreadableLoader.cpp (209916 => 209917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/ThreadableLoader.cpp        2016-12-16 11:50:19 UTC (rev 209916)
+++ trunk/Source/WebCore/loader/ThreadableLoader.cpp        2016-12-16 11:51:16 UTC (rev 209917)
</span><span class="lines">@@ -31,8 +31,10 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;ThreadableLoader.h&quot;
</span><span class="cx"> 
</span><ins>+#include &quot;CachedResourceRequestInitiators.h&quot;
</ins><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;DocumentThreadableLoader.h&quot;
</span><ins>+#include &quot;ResourceError.h&quot;
</ins><span class="cx"> #include &quot;ScriptExecutionContext.h&quot;
</span><span class="cx"> #include &quot;SecurityOrigin.h&quot;
</span><span class="cx"> #include &quot;WorkerGlobalScope.h&quot;
</span><span class="lines">@@ -76,4 +78,41 @@
</span><span class="cx">     context.didLoadResourceSynchronously();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void ThreadableLoader::logError(ScriptExecutionContext&amp; context, const ResourceError&amp; error, const String&amp; initiator)
+{
+    // FIXME: extend centralized logging to other clients than fetch, at least XHR and EventSource.
+    if (initiator != cachedResourceRequestInitiators().fetch)
+        return;
+
+    if (error.isCancellation())
+        return;
+
+    // FIXME: Some errors are returned with null URLs. This leads to poor console messages. We should do better for these errors.
+    if (error.failingURL().isNull())
+        return;
+
+    // We further reduce logging to some errors.
+    // FIXME: Log more errors when making so do not make some layout tests flaky.
+    if (error.domain() != errorDomainWebKitInternal &amp;&amp; !error.isAccessControl())
+        return;
+
+    const char* messageStart;
+    if (initiator == cachedResourceRequestInitiators().fetch)
+        messageStart = &quot;Fetch API cannot load &quot;;
+    else
+        messageStart = &quot;Cannot load &quot;;
+
+    const char* messageMiddle = &quot;. &quot;;
+    String description = error.localizedDescription();
+    if (description.isEmpty()) {
+        // FIXME: We should probably define default description error message for all error types.
+        if (error.isAccessControl())
+            messageMiddle = ASCIILiteral(&quot; due to access control checks.&quot;);
+        else
+            messageMiddle = &quot;.&quot;;
+    }
+
+    context.addConsoleMessage(MessageSource::JS, MessageLevel::Error, makeString(messageStart, error.failingURL().string(), messageMiddle, description));
+}
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderThreadableLoaderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/ThreadableLoader.h (209916 => 209917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/ThreadableLoader.h        2016-12-16 11:50:19 UTC (rev 209916)
+++ trunk/Source/WebCore/loader/ThreadableLoader.h        2016-12-16 11:51:16 UTC (rev 209917)
</span><span class="lines">@@ -85,6 +85,8 @@
</span><span class="cx">         void ref() { refThreadableLoader(); }
</span><span class="cx">         void deref() { derefThreadableLoader(); }
</span><span class="cx"> 
</span><ins>+        static void logError(ScriptExecutionContext&amp;, const ResourceError&amp;, const String&amp;);
+
</ins><span class="cx">     protected:
</span><span class="cx">         ThreadableLoader() { }
</span><span class="cx">         virtual ~ThreadableLoader() { }
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderThreadableLoaderClientWrapperh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/ThreadableLoaderClientWrapper.h (209916 => 209917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/ThreadableLoaderClientWrapper.h        2016-12-16 11:50:19 UTC (rev 209916)
+++ trunk/Source/WebCore/loader/ThreadableLoaderClientWrapper.h        2016-12-16 11:51:16 UTC (rev 209917)
</span><span class="lines">@@ -39,9 +39,9 @@
</span><span class="cx"> 
</span><span class="cx"> class ThreadableLoaderClientWrapper : public ThreadSafeRefCounted&lt;ThreadableLoaderClientWrapper&gt; {
</span><span class="cx"> public:
</span><del>-    static Ref&lt;ThreadableLoaderClientWrapper&gt; create(ThreadableLoaderClient&amp; client)
</del><ins>+    static Ref&lt;ThreadableLoaderClientWrapper&gt; create(ThreadableLoaderClient&amp; client, const String&amp; initiator)
</ins><span class="cx">     {
</span><del>-        return adoptRef(*new ThreadableLoaderClientWrapper(client));
</del><ins>+        return adoptRef(*new ThreadableLoaderClientWrapper(client, initiator));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void clearClient()
</span><span class="lines">@@ -93,11 +93,20 @@
</span><span class="cx">             m_client-&gt;didReceiveResponse(identifier, response);
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    const String&amp; initiator() const { return m_initiator; }
+
</ins><span class="cx"> protected:
</span><del>-    explicit ThreadableLoaderClientWrapper(ThreadableLoaderClient&amp; client) : m_client(&amp;client) { }
</del><ins>+    explicit ThreadableLoaderClientWrapper(ThreadableLoaderClient&amp;, const String&amp;);
</ins><span class="cx"> 
</span><span class="cx">     ThreadableLoaderClient* m_client;
</span><ins>+    String m_initiator;
</ins><span class="cx">     bool m_done { false };
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+inline ThreadableLoaderClientWrapper::ThreadableLoaderClientWrapper(ThreadableLoaderClient&amp; client, const String&amp; initiator)
+    : m_client(&amp;client)
+    , m_initiator(initiator)
+{
+}
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderWorkerThreadableLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/WorkerThreadableLoader.cpp (209916 => 209917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/WorkerThreadableLoader.cpp        2016-12-16 11:50:19 UTC (rev 209916)
+++ trunk/Source/WebCore/loader/WorkerThreadableLoader.cpp        2016-12-16 11:51:16 UTC (rev 209917)
</span><span class="lines">@@ -52,7 +52,7 @@
</span><span class="cx"> 
</span><span class="cx"> WorkerThreadableLoader::WorkerThreadableLoader(WorkerGlobalScope&amp; workerGlobalScope, ThreadableLoaderClient&amp; client, const String&amp; taskMode, ResourceRequest&amp;&amp; request, const ThreadableLoaderOptions&amp; options, const String&amp; referrer)
</span><span class="cx">     : m_workerGlobalScope(workerGlobalScope)
</span><del>-    , m_workerClientWrapper(ThreadableLoaderClientWrapper::create(client))
</del><ins>+    , m_workerClientWrapper(ThreadableLoaderClientWrapper::create(client, options.initiator))
</ins><span class="cx">     , m_bridge(*new MainThreadBridge(m_workerClientWrapper.get(), workerGlobalScope.thread().workerLoaderProxy(), taskMode, WTFMove(request), options, referrer.isEmpty() ? workerGlobalScope.url().strippedForUseAsReferrer() : referrer, workerGlobalScope.securityOrigin(), workerGlobalScope.contentSecurityPolicy()))
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="lines">@@ -122,7 +122,7 @@
</span><span class="cx"> 
</span><span class="cx">         // FIXME: If the site requests a local resource, then this will return a non-zero value but the sync path will return a 0 value.
</span><span class="cx">         // Either this should return 0 or the other code path should call a failure callback.
</span><del>-        m_mainThreadLoader = DocumentThreadableLoader::create(document, *this, WTFMove(request), options-&gt;options, WTFMove(options-&gt;origin), WTFMove(contentSecurityPolicyCopy), WTFMove(options-&gt;referrer));
</del><ins>+        m_mainThreadLoader = DocumentThreadableLoader::create(document, *this, WTFMove(request), options-&gt;options, WTFMove(options-&gt;origin), WTFMove(contentSecurityPolicyCopy), WTFMove(options-&gt;referrer), DocumentThreadableLoader::ShouldLogError::No);
</ins><span class="cx">         ASSERT(m_mainThreadLoader || m_loadingFinished);
</span><span class="cx">     });
</span><span class="cx"> }
</span><span class="lines">@@ -212,7 +212,10 @@
</span><span class="cx"> {
</span><span class="cx">     m_loadingFinished = true;
</span><span class="cx">     m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper = Ref&lt;ThreadableLoaderClientWrapper&gt;(*m_workerClientWrapper), error = error.isolatedCopy()] (ScriptExecutionContext&amp; context) mutable {
</span><del>-        ASSERT_UNUSED(context, context.isWorkerGlobalScope());
</del><ins>+        ASSERT(context.isWorkerGlobalScope());
+
+        ThreadableLoader::logError(context, error, workerClientWrapper-&gt;initiator());
+
</ins><span class="cx">         workerClientWrapper-&gt;didFail(error);
</span><span class="cx">     }, m_taskMode);
</span><span class="cx"> }
</span></span></pre>
</div>
</div>

</body>
</html>