<!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>[206206] 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/206206">206206</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2016-09-21 02:56:16 -0700 (Wed, 21 Sep 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>[Fetch] Align Accept header default values with fetch spec
https://bugs.webkit.org/show_bug.cgi?id=162260

Patch by Youenn Fablet &lt;youenn@apple.com&gt; on 2016-09-21
Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Ensuring Accept and Accept-Language user-specific values are going up to the server.

* web-platform-tests/fetch/api/basic/accept-header-expected.txt:
* web-platform-tests/fetch/api/basic/accept-header-worker-expected.txt:
* web-platform-tests/fetch/api/basic/accept-header.js:
(promise_test):

Source/WebCore:

Covered by existing and updated tests.

To start implementing step 1 to 7 of fetch algorithm, this patch updates Accept header handling.

Default values are set according the spec based on resource type.
Some resource types are not defined in the spec and we keep using existing values.

We check if Accept header is already present in the request. If that is the case, no change is done to that header.

If the Accept header is not set, the default value '*/*' is used.
An Accept header is therefore always set at CachedResourceLoader level.

* loader/cache/CachedCSSStyleSheet.cpp:
(WebCore::CachedCSSStyleSheet::CachedCSSStyleSheet): Removing accept initialization.
* loader/cache/CachedResource.cpp:
(WebCore::CachedResource::load): Removing accept header setting.
* loader/cache/CachedResource.h:
(WebCore::CachedResource::accept): Deleted.
(WebCore::CachedResource::setAccept): Deleted.
* loader/cache/CachedResourceLoader.cpp:
(WebCore::acceptHeaderValueFromType): helper routine merging fetch spec and existing WebKit accept values.
(WebCore::CachedResourceLoader::prepareFetch): Should implement step 1 to 7 of https://fetch.spec.whatwg.org/#fetching.
(WebCore::CachedResourceLoader::requestResource): Making use of prepareFetch.
* loader/cache/CachedResourceLoader.h:
* loader/cache/CachedSVGDocument.cpp:
(WebCore::CachedSVGDocument::CachedSVGDocument): Removing accept initialization.
* loader/cache/CachedScript.cpp:
(WebCore::CachedScript::CachedScript): Removing accept initialization.
* loader/cache/CachedXSLStyleSheet.cpp:
(WebCore::CachedXSLStyleSheet::CachedXSLStyleSheet): Removing accept initialization.
* platform/network/ResourceRequestBase.cpp:
(WebCore::ResourceRequestBase::hasHTTPHeader): Introduced to check for header presence.
* platform/network/ResourceRequestBase.h:

LayoutTests:

* http/tests/misc/resources/image-checks-for-accept.php: Updated according new image Accept header value.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestshttptestsmiscresourcesimagechecksforacceptphp">trunk/LayoutTests/http/tests/misc/resources/image-checks-for-accept.php</a></li>
<li><a href="#trunkLayoutTestsimportedw3cChangeLog">trunk/LayoutTests/imported/w3c/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicacceptheaderexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicacceptheaderworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header-worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicacceptheaderjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.js</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreloadercacheCachedCSSStyleSheetcpp">trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.cpp</a></li>
<li><a href="#trunkSourceWebCoreloadercacheCachedResourcecpp">trunk/Source/WebCore/loader/cache/CachedResource.cpp</a></li>
<li><a href="#trunkSourceWebCoreloadercacheCachedResourceh">trunk/Source/WebCore/loader/cache/CachedResource.h</a></li>
<li><a href="#trunkSourceWebCoreloadercacheCachedResourceLoadercpp">trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp</a></li>
<li><a href="#trunkSourceWebCoreloadercacheCachedResourceLoaderh">trunk/Source/WebCore/loader/cache/CachedResourceLoader.h</a></li>
<li><a href="#trunkSourceWebCoreloadercacheCachedSVGDocumentcpp">trunk/Source/WebCore/loader/cache/CachedSVGDocument.cpp</a></li>
<li><a href="#trunkSourceWebCoreloadercacheCachedScriptcpp">trunk/Source/WebCore/loader/cache/CachedScript.cpp</a></li>
<li><a href="#trunkSourceWebCoreloadercacheCachedXSLStyleSheetcpp">trunk/Source/WebCore/loader/cache/CachedXSLStyleSheet.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkResourceRequestBasecpp">trunk/Source/WebCore/platform/network/ResourceRequestBase.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkResourceRequestBaseh">trunk/Source/WebCore/platform/network/ResourceRequestBase.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (206205 => 206206)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-09-21 09:48:51 UTC (rev 206205)
+++ trunk/LayoutTests/ChangeLog        2016-09-21 09:56:16 UTC (rev 206206)
</span><span class="lines">@@ -1,3 +1,12 @@
</span><ins>+2016-09-21  Youenn Fablet  &lt;youenn@apple.com&gt;
+
+        [Fetch] Align Accept header default values with fetch spec
+        https://bugs.webkit.org/show_bug.cgi?id=162260
+
+        Reviewed by Sam Weinig.
+
+        * http/tests/misc/resources/image-checks-for-accept.php: Updated according new image Accept header value.
+
</ins><span class="cx"> 2016-09-21  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Import html/syntax web platform tests
</span></span></pre></div>
<a id="trunkLayoutTestshttptestsmiscresourcesimagechecksforacceptphp"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/misc/resources/image-checks-for-accept.php (206205 => 206206)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/misc/resources/image-checks-for-accept.php        2016-09-21 09:48:51 UTC (rev 206205)
+++ trunk/LayoutTests/http/tests/misc/resources/image-checks-for-accept.php        2016-09-21 09:56:16 UTC (rev 206206)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> &lt;?php
</span><del>-    if($_SERVER[&quot;HTTP_ACCEPT&quot;] == &quot;*/*&quot; || $_SERVER[&quot;HTTP_ACCEPT&quot;] == &quot;image/*&quot; || $_SERVER[&quot;HTTP_ACCEPT&quot;] == &quot;image/jpg&quot;)
</del><ins>+    if($_SERVER[&quot;HTTP_ACCEPT&quot;] == &quot;image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5&quot;)
</ins><span class="cx">     {
</span><span class="cx">         header(&quot;Content-Type: image/jpg&quot;);
</span><span class="cx">         header(&quot;Cache-Control: no-store&quot;);
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/ChangeLog (206205 => 206206)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/ChangeLog        2016-09-21 09:48:51 UTC (rev 206205)
+++ trunk/LayoutTests/imported/w3c/ChangeLog        2016-09-21 09:56:16 UTC (rev 206206)
</span><span class="lines">@@ -1,3 +1,17 @@
</span><ins>+2016-09-21  Youenn Fablet  &lt;youenn@apple.com&gt;
+
+        [Fetch] Align Accept header default values with fetch spec
+        https://bugs.webkit.org/show_bug.cgi?id=162260
+
+        Reviewed by Sam Weinig.
+
+        Ensuring Accept and Accept-Language user-specific values are going up to the server.
+
+        * web-platform-tests/fetch/api/basic/accept-header-expected.txt:
+        * web-platform-tests/fetch/api/basic/accept-header-worker-expected.txt:
+        * web-platform-tests/fetch/api/basic/accept-header.js:
+        (promise_test):
+
</ins><span class="cx"> 2016-09-21  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Import html/syntax web platform tests
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicacceptheaderexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header-expected.txt (206205 => 206206)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header-expected.txt        2016-09-21 09:48:51 UTC (rev 206205)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header-expected.txt        2016-09-21 09:56:16 UTC (rev 206206)
</span><span class="lines">@@ -1,3 +1,6 @@
</span><span class="cx"> 
</span><span class="cx"> PASS Request through fetch should have 'accept' header with value '*/*' 
</span><ins>+PASS Request through fetch should have 'accept' header with value 'custom/*' 
+PASS Request through fetch should have a 'accept-language' header 
+PASS Request through fetch should have 'accept-language' header with value 'bzh' 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicacceptheaderworkerexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header-worker-expected.txt (206205 => 206206)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header-worker-expected.txt        2016-09-21 09:48:51 UTC (rev 206205)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header-worker-expected.txt        2016-09-21 09:56:16 UTC (rev 206206)
</span><span class="lines">@@ -1,3 +1,6 @@
</span><span class="cx"> 
</span><span class="cx"> PASS Request through fetch should have 'accept' header with value '*/*' 
</span><ins>+PASS Request through fetch should have 'accept' header with value 'custom/*' 
+PASS Request through fetch should have a 'accept-language' header 
+PASS Request through fetch should have 'accept-language' header with value 'bzh' 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicacceptheaderjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.js (206205 => 206206)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.js        2016-09-21 09:48:51 UTC (rev 206205)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.js        2016-09-21 09:56:16 UTC (rev 206206)
</span><span class="lines">@@ -11,4 +11,28 @@
</span><span class="cx">   });
</span><span class="cx"> }, &quot;Request through fetch should have 'accept' header with value '*/*'&quot;);
</span><span class="cx"> 
</span><ins>+promise_test(function() {
+  return fetch(RESOURCES_DIR + &quot;inspect-headers.py?headers=Accept&quot;, {&quot;headers&quot;: [[&quot;Accept&quot;, &quot;custom/*&quot;]]}).then(function(response) {
+    assert_equals(response.status, 200, &quot;HTTP status is 200&quot;);
+    assert_equals(response.type , &quot;basic&quot;, &quot;Response's type is basic&quot;);
+    assert_equals(response.headers.get(&quot;x-request-accept&quot;), &quot;custom/*&quot;, &quot;Request has accept header with value 'custom/*'&quot;);
+  });
+}, &quot;Request through fetch should have 'accept' header with value 'custom/*'&quot;);
+
+promise_test(function() {
+  return fetch(RESOURCES_DIR + &quot;inspect-headers.py?headers=Accept-Language&quot;).then(function(response) {
+    assert_equals(response.status, 200, &quot;HTTP status is 200&quot;);
+    assert_equals(response.type , &quot;basic&quot;, &quot;Response's type is basic&quot;);
+    assert_true(response.headers.has(&quot;x-request-accept-language&quot;));
+  });
+}, &quot;Request through fetch should have a 'accept-language' header&quot;);
+
+promise_test(function() {
+  return fetch(RESOURCES_DIR + &quot;inspect-headers.py?headers=Accept-Language&quot;, {&quot;headers&quot;: [[&quot;Accept-Language&quot;, &quot;bzh&quot;]]}).then(function(response) {
+    assert_equals(response.status, 200, &quot;HTTP status is 200&quot;);
+    assert_equals(response.type , &quot;basic&quot;, &quot;Response's type is basic&quot;);
+    assert_equals(response.headers.get(&quot;x-request-accept-language&quot;), &quot;bzh&quot;, &quot;Request has accept header with value 'bzh'&quot;);
+  });
+}, &quot;Request through fetch should have 'accept-language' header with value 'bzh'&quot;);
+
</ins><span class="cx"> done();
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (206205 => 206206)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-09-21 09:48:51 UTC (rev 206205)
+++ trunk/Source/WebCore/ChangeLog        2016-09-21 09:56:16 UTC (rev 206206)
</span><span class="lines">@@ -1,3 +1,44 @@
</span><ins>+2016-09-21  Youenn Fablet  &lt;youenn@apple.com&gt;
+
+        [Fetch] Align Accept header default values with fetch spec
+        https://bugs.webkit.org/show_bug.cgi?id=162260
+
+        Reviewed by Sam Weinig.
+
+        Covered by existing and updated tests.
+
+        To start implementing step 1 to 7 of fetch algorithm, this patch updates Accept header handling.
+
+        Default values are set according the spec based on resource type.
+        Some resource types are not defined in the spec and we keep using existing values.
+
+        We check if Accept header is already present in the request. If that is the case, no change is done to that header.
+
+        If the Accept header is not set, the default value '*/*' is used.
+        An Accept header is therefore always set at CachedResourceLoader level.
+
+        * loader/cache/CachedCSSStyleSheet.cpp:
+        (WebCore::CachedCSSStyleSheet::CachedCSSStyleSheet): Removing accept initialization.
+        * loader/cache/CachedResource.cpp:
+        (WebCore::CachedResource::load): Removing accept header setting.
+        * loader/cache/CachedResource.h:
+        (WebCore::CachedResource::accept): Deleted.
+        (WebCore::CachedResource::setAccept): Deleted.
+        * loader/cache/CachedResourceLoader.cpp:
+        (WebCore::acceptHeaderValueFromType): helper routine merging fetch spec and existing WebKit accept values.
+        (WebCore::CachedResourceLoader::prepareFetch): Should implement step 1 to 7 of https://fetch.spec.whatwg.org/#fetching.
+        (WebCore::CachedResourceLoader::requestResource): Making use of prepareFetch.
+        * loader/cache/CachedResourceLoader.h:
+        * loader/cache/CachedSVGDocument.cpp:
+        (WebCore::CachedSVGDocument::CachedSVGDocument): Removing accept initialization.
+        * loader/cache/CachedScript.cpp:
+        (WebCore::CachedScript::CachedScript): Removing accept initialization.
+        * loader/cache/CachedXSLStyleSheet.cpp:
+        (WebCore::CachedXSLStyleSheet::CachedXSLStyleSheet): Removing accept initialization.
+        * platform/network/ResourceRequestBase.cpp:
+        (WebCore::ResourceRequestBase::hasHTTPHeader): Introduced to check for header presence.
+        * platform/network/ResourceRequestBase.h:
+
</ins><span class="cx"> 2016-09-21  Jeremy Huddleston Sequoia  &lt;jeremyhu@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [GTK] Fix build failure of ScrollbarThemeGtk with libc++
</span></span></pre></div>
<a id="trunkSourceWebCoreloadercacheCachedCSSStyleSheetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.cpp (206205 => 206206)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.cpp        2016-09-21 09:48:51 UTC (rev 206205)
+++ trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.cpp        2016-09-21 09:56:16 UTC (rev 206206)
</span><span class="lines">@@ -45,9 +45,6 @@
</span><span class="cx">     : CachedResource(WTFMove(request), CSSStyleSheet, sessionID)
</span><span class="cx">     , m_decoder(TextResourceDecoder::create(&quot;text/css&quot;, request.charset()))
</span><span class="cx"> {
</span><del>-    // Prefer text/css but accept any type (dell.com serves a stylesheet
-    // as text/html; see &lt;http://bugs.webkit.org/show_bug.cgi?id=11451&gt;).
-    setAccept(&quot;text/css,*/*;q=0.1&quot;);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> CachedCSSStyleSheet::~CachedCSSStyleSheet()
</span></span></pre></div>
<a id="trunkSourceWebCoreloadercacheCachedResourcecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/cache/CachedResource.cpp (206205 => 206206)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/cache/CachedResource.cpp        2016-09-21 09:48:51 UTC (rev 206205)
+++ trunk/Source/WebCore/loader/cache/CachedResource.cpp        2016-09-21 09:56:16 UTC (rev 206206)
</span><span class="lines">@@ -307,9 +307,6 @@
</span><span class="cx">     }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    if (!accept().isEmpty())
-        m_resourceRequest.setHTTPAccept(accept());
-
</del><span class="cx">     if (isCacheValidator()) {
</span><span class="cx">         CachedResource* resourceToRevalidate = m_resourceToRevalidate;
</span><span class="cx">         ASSERT(resourceToRevalidate-&gt;canUseCacheValidator());
</span></span></pre></div>
<a id="trunkSourceWebCoreloadercacheCachedResourceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/cache/CachedResource.h (206205 => 206206)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/cache/CachedResource.h        2016-09-21 09:48:51 UTC (rev 206205)
+++ trunk/Source/WebCore/loader/cache/CachedResource.h        2016-09-21 09:56:16 UTC (rev 206206)
</span><span class="lines">@@ -220,11 +220,6 @@
</span><span class="cx"> 
</span><span class="cx">     bool isExpired() const;
</span><span class="cx"> 
</span><del>-    // List of acceptable MIME types separated by &quot;,&quot;.
-    // A MIME type may contain a wildcard, e.g. &quot;text/*&quot;.
-    String accept() const { return m_accept; }
-    void setAccept(const String&amp; accept) { m_accept = accept; }
-
</del><span class="cx">     void cancelLoad();
</span><span class="cx">     bool wasCanceled() const { return m_error.isCancellation(); }
</span><span class="cx">     bool errorOccurred() const { return m_status == LoadError || m_status == DecodeError; }
</span><span class="lines">@@ -319,7 +314,6 @@
</span><span class="cx"> 
</span><span class="cx">     HashMap&lt;CachedResourceClient*, std::unique_ptr&lt;Callback&gt;&gt; m_clientsAwaitingCallback;
</span><span class="cx">     SessionID m_sessionID;
</span><del>-    String m_accept;
</del><span class="cx">     ResourceLoadPriority m_loadPriority;
</span><span class="cx">     std::chrono::system_clock::time_point m_responseTimestamp;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreloadercacheCachedResourceLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp (206205 => 206206)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp        2016-09-21 09:48:51 UTC (rev 206205)
+++ trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp        2016-09-21 09:56:16 UTC (rev 206206)
</span><span class="lines">@@ -570,6 +570,38 @@
</span><span class="cx">         frame-&gt;page()-&gt;diagnosticLoggingClient().logDiagnosticMessageWithValue(DiagnosticLoggingKeys::resourceRequestKey(), description, value, ShouldSample::Yes);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static inline String acceptHeaderValueFromType(CachedResource::Type type)
+{
+    switch (type) {
+    case CachedResource::Type::MainResource:
+        return ASCIILiteral(&quot;text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8&quot;);
+    case CachedResource::Type::ImageResource:
+        return ASCIILiteral(&quot;image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5&quot;);
+    case CachedResource::Type::CSSStyleSheet:
+        return ASCIILiteral(&quot;text/css,*/*;q=0.1&quot;);
+    case CachedResource::Type::SVGDocumentResource:
+        return ASCIILiteral(&quot;image/svg+xml&quot;);
+#if ENABLE(XSLT)
+    case CachedResource::Type::XSLStyleSheet:
+        // FIXME: This should accept more general xml formats */*+xml, image/svg+xml for example.
+        return ASCIILiteral(&quot;text/xml,application/xml,application/xhtml+xml,text/xsl,application/rss+xml,application/atom+xml&quot;);
+#endif
+    default:
+        return ASCIILiteral(&quot;*/*&quot;);
+    }
+}
+
+void CachedResourceLoader::prepareFetch(CachedResource::Type type, CachedResourceRequest&amp; request)
+{
+    // Implementing step 1 to 7 of https://fetch.spec.whatwg.org/#fetching
+
+    if (!request.resourceRequest().hasHTTPHeader(HTTPHeaderName::Accept))
+        request.mutableResourceRequest().setHTTPHeaderField(HTTPHeaderName::Accept, acceptHeaderValueFromType(type));
+
+    // Accept-Language value is handled in underlying port-specific code.
+    // FIXME: Decide whether to support client hints
+}
+
</ins><span class="cx"> CachedResourceHandle&lt;CachedResource&gt; CachedResourceLoader::requestResource(CachedResource::Type type, CachedResourceRequest&amp;&amp; request)
</span><span class="cx"> {
</span><span class="cx">     if (Document* document = this-&gt;document())
</span><span class="lines">@@ -587,6 +619,8 @@
</span><span class="cx">         return nullptr;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    prepareFetch(type, request);
+
</ins><span class="cx">     if (!canRequest(type, url, request.options(), request.forPreload())) {
</span><span class="cx">         RELEASE_LOG_IF_ALLOWED(&quot;requestResource: Not allowed to request resource (frame = %p)&quot;, frame());
</span><span class="cx">         return nullptr;
</span></span></pre></div>
<a id="trunkSourceWebCoreloadercacheCachedResourceLoaderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/cache/CachedResourceLoader.h (206205 => 206206)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/cache/CachedResourceLoader.h        2016-09-21 09:48:51 UTC (rev 206205)
+++ trunk/Source/WebCore/loader/cache/CachedResourceLoader.h        2016-09-21 09:56:16 UTC (rev 206206)
</span><span class="lines">@@ -151,6 +151,7 @@
</span><span class="cx">     explicit CachedResourceLoader(DocumentLoader*);
</span><span class="cx"> 
</span><span class="cx">     CachedResourceHandle&lt;CachedResource&gt; requestResource(CachedResource::Type, CachedResourceRequest&amp;&amp;);
</span><ins>+    void prepareFetch(CachedResource::Type, CachedResourceRequest&amp;);
</ins><span class="cx">     CachedResourceHandle&lt;CachedResource&gt; revalidateResource(CachedResourceRequest&amp;&amp;, CachedResource&amp;);
</span><span class="cx">     CachedResourceHandle&lt;CachedResource&gt; loadResource(CachedResource::Type, CachedResourceRequest&amp;&amp;);
</span><span class="cx">     CachedResourceHandle&lt;CachedResource&gt; requestPreload(CachedResource::Type, CachedResourceRequest&amp;&amp;);
</span></span></pre></div>
<a id="trunkSourceWebCoreloadercacheCachedSVGDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/cache/CachedSVGDocument.cpp (206205 => 206206)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/cache/CachedSVGDocument.cpp        2016-09-21 09:48:51 UTC (rev 206205)
+++ trunk/Source/WebCore/loader/cache/CachedSVGDocument.cpp        2016-09-21 09:56:16 UTC (rev 206206)
</span><span class="lines">@@ -31,7 +31,6 @@
</span><span class="cx">     : CachedResource(WTFMove(request), SVGDocumentResource, sessionID)
</span><span class="cx">     , m_decoder(TextResourceDecoder::create(&quot;application/xml&quot;))
</span><span class="cx"> {
</span><del>-    setAccept(&quot;image/svg+xml&quot;);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> CachedSVGDocument::~CachedSVGDocument()
</span></span></pre></div>
<a id="trunkSourceWebCoreloadercacheCachedScriptcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/cache/CachedScript.cpp (206205 => 206206)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/cache/CachedScript.cpp        2016-09-21 09:48:51 UTC (rev 206205)
+++ trunk/Source/WebCore/loader/cache/CachedScript.cpp        2016-09-21 09:56:16 UTC (rev 206206)
</span><span class="lines">@@ -44,10 +44,6 @@
</span><span class="cx">     : CachedResource(WTFMove(request), Script, sessionID)
</span><span class="cx">     , m_decoder(TextResourceDecoder::create(ASCIILiteral(&quot;application/javascript&quot;), request.charset()))
</span><span class="cx"> {
</span><del>-    // It's javascript we want.
-    // But some websites think their scripts are &lt;some wrong mimetype here&gt;
-    // and refuse to serve them if we only accept application/x-javascript.
-    setAccept(&quot;*/*&quot;);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> CachedScript::~CachedScript()
</span></span></pre></div>
<a id="trunkSourceWebCoreloadercacheCachedXSLStyleSheetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/cache/CachedXSLStyleSheet.cpp (206205 => 206206)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/cache/CachedXSLStyleSheet.cpp        2016-09-21 09:48:51 UTC (rev 206205)
+++ trunk/Source/WebCore/loader/cache/CachedXSLStyleSheet.cpp        2016-09-21 09:56:16 UTC (rev 206206)
</span><span class="lines">@@ -40,9 +40,6 @@
</span><span class="cx">     : CachedResource(WTFMove(request), XSLStyleSheet, sessionID)
</span><span class="cx">     , m_decoder(TextResourceDecoder::create(&quot;text/xsl&quot;))
</span><span class="cx"> {
</span><del>-    // It's XML we want.
-    // FIXME: This should accept more general xml formats */*+xml, image/svg+xml for example.
-    setAccept(&quot;text/xml, application/xml, application/xhtml+xml, text/xsl, application/rss+xml, application/atom+xml&quot;);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> CachedXSLStyleSheet::~CachedXSLStyleSheet()
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformnetworkResourceRequestBasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/network/ResourceRequestBase.cpp (206205 => 206206)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/network/ResourceRequestBase.cpp        2016-09-21 09:48:51 UTC (rev 206205)
+++ trunk/Source/WebCore/platform/network/ResourceRequestBase.cpp        2016-09-21 09:56:16 UTC (rev 206206)
</span><span class="lines">@@ -333,6 +333,11 @@
</span><span class="cx">         m_platformRequestUpdated = false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+bool ResourceRequestBase::hasHTTPHeader(HTTPHeaderName name) const
+{
+    return m_httpHeaderFields.contains(name);
+}
+
</ins><span class="cx"> String ResourceRequestBase::httpUserAgent() const
</span><span class="cx"> {
</span><span class="cx">     return httpHeaderField(HTTPHeaderName::UserAgent);
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformnetworkResourceRequestBaseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/network/ResourceRequestBase.h (206205 => 206206)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/network/ResourceRequestBase.h        2016-09-21 09:48:51 UTC (rev 206205)
+++ trunk/Source/WebCore/platform/network/ResourceRequestBase.h        2016-09-21 09:56:16 UTC (rev 206206)
</span><span class="lines">@@ -97,6 +97,8 @@
</span><span class="cx">     WEBCORE_EXPORT void setHTTPContentType(const String&amp;);
</span><span class="cx">     void clearHTTPContentType();
</span><span class="cx"> 
</span><ins>+    bool hasHTTPHeader(HTTPHeaderName) const;
+
</ins><span class="cx">     WEBCORE_EXPORT String httpReferrer() const;
</span><span class="cx">     bool hasHTTPReferrer() const;
</span><span class="cx">     WEBCORE_EXPORT void setHTTPReferrer(const String&amp;);
</span></span></pre>
</div>
</div>

</body>
</html>