<!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>[199682] trunk/Source</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/199682">199682</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2016-04-18 11:49:56 -0700 (Mon, 18 Apr 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>[WK2][iOS] Only adjust network responses' MIME type for QuickLook in the context of a main resource load
https://bugs.webkit.org/show_bug.cgi?id=156639
&lt;rdar://problem/25765848&gt;

Reviewed by Alex Christensen.

Source/WebCore:

Only adjust network responses' MIME type for QuickLook in the context of a main
resource load since we can only preview main resources with QuickLook. This
avoids doing unnecessary work during page load. Also, this makes it a lot less
likely to dlopen() the QuickLook library during page load since we now only
adjust MIME type for QuickLook for main resources, and main resources usually
have the well-known 'text/html' MIME type for which we know we will not use
QuickLook.

After this change, we no longer need to dlopen() the QuickLook library in the
NetworkProcess in the context of the PLT. We would previously dlopen() the
library during the first page load, thus significantly slowing it down. As a
result, we see a ~22% speed up in the PLT's first page load and a 0.9-1% overall
PLT progression.

* platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp:
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveResponse):
Pass flag to adjustMIMETypeIfNecessary() indicated if this is a main resource load.

* platform/network/ios/WebCoreURLResponseIOS.mm:
(WebCore::adjustMIMETypeIfNecessary):
Only adjust the MIME type for QuickLook if the isMainResourceLoad parameter is true.

* platform/network/mac/WebCoreResourceHandleAsDelegate.mm:
(-[WebCoreResourceHandleAsDelegate connection:didReceiveResponse:]):
* platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
(-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveResponse:]):
Only adjust the MIME type for QuickLook if the isMainResourceLoad parameter is true.

* platform/network/mac/WebCoreURLResponse.h:
* platform/network/mac/WebCoreURLResponse.mm:
(WebCore::adjustMIMETypeIfNecessary):

Source/WebKit2:

* NetworkProcess/NetworkDataTask.h:
(WebKit::NetworkDataTask::firstRequest):
Add getter to return the first request.

* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):
Pass flag to adjustMIMETypeIfNecessary() indicated if this is a main resource load.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkcfResourceHandleCFURLConnectionDelegateWithOperationQueuecpp">trunk/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkiosWebCoreURLResponseIOSmm">trunk/Source/WebCore/platform/network/ios/WebCoreURLResponseIOS.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkmacWebCoreResourceHandleAsDelegatemm">trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsDelegate.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkmacWebCoreResourceHandleAsOperationQueueDelegatemm">trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkmacWebCoreURLResponseh">trunk/Source/WebCore/platform/network/mac/WebCoreURLResponse.h</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkmacWebCoreURLResponsemm">trunk/Source/WebCore/platform/network/mac/WebCoreURLResponse.mm</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcessNetworkDataTaskh">trunk/Source/WebKit2/NetworkProcess/NetworkDataTask.h</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcesscocoaNetworkSessionCocoamm">trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (199681 => 199682)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-04-18 18:41:33 UTC (rev 199681)
+++ trunk/Source/WebCore/ChangeLog        2016-04-18 18:49:56 UTC (rev 199682)
</span><span class="lines">@@ -1,3 +1,43 @@
</span><ins>+2016-04-18  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        [WK2][iOS] Only adjust network responses' MIME type for QuickLook in the context of a main resource load
+        https://bugs.webkit.org/show_bug.cgi?id=156639
+        &lt;rdar://problem/25765848&gt;
+
+        Reviewed by Alex Christensen.
+
+        Only adjust network responses' MIME type for QuickLook in the context of a main
+        resource load since we can only preview main resources with QuickLook. This
+        avoids doing unnecessary work during page load. Also, this makes it a lot less
+        likely to dlopen() the QuickLook library during page load since we now only
+        adjust MIME type for QuickLook for main resources, and main resources usually
+        have the well-known 'text/html' MIME type for which we know we will not use
+        QuickLook.
+
+        After this change, we no longer need to dlopen() the QuickLook library in the
+        NetworkProcess in the context of the PLT. We would previously dlopen() the
+        library during the first page load, thus significantly slowing it down. As a
+        result, we see a ~22% speed up in the PLT's first page load and a 0.9-1% overall
+        PLT progression.
+
+        * platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp:
+        (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveResponse):
+        Pass flag to adjustMIMETypeIfNecessary() indicated if this is a main resource load.
+
+        * platform/network/ios/WebCoreURLResponseIOS.mm:
+        (WebCore::adjustMIMETypeIfNecessary):
+        Only adjust the MIME type for QuickLook if the isMainResourceLoad parameter is true.
+
+        * platform/network/mac/WebCoreResourceHandleAsDelegate.mm:
+        (-[WebCoreResourceHandleAsDelegate connection:didReceiveResponse:]):
+        * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
+        (-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveResponse:]):
+        Only adjust the MIME type for QuickLook if the isMainResourceLoad parameter is true.
+
+        * platform/network/mac/WebCoreURLResponse.h:
+        * platform/network/mac/WebCoreURLResponse.mm:
+        (WebCore::adjustMIMETypeIfNecessary):
+
</ins><span class="cx"> 2016-04-18  Brent Fulgham  &lt;bfulgham@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         CSP: Remove stubs for dynamically-added favicons (via link rel=&quot;icon&quot;)
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformnetworkcfResourceHandleCFURLConnectionDelegateWithOperationQueuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp (199681 => 199682)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp        2016-04-18 18:41:33 UTC (rev 199681)
+++ trunk/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp        2016-04-18 18:49:56 UTC (rev 199682)
</span><span class="lines">@@ -144,8 +144,10 @@
</span><span class="cx">         auto msg = CFURLResponseGetHTTPResponse(cfResponse);
</span><span class="cx">         int statusCode = msg ? CFHTTPMessageGetResponseStatusCode(msg) : 0;
</span><span class="cx"> 
</span><del>-        if (statusCode != 304)
-            adjustMIMETypeIfNecessary(cfResponse);
</del><ins>+        if (statusCode != 304) {
+            bool isMainResourceLoad = m_handle-&gt;firstRequest().requester() == ResourceRequest::Requester::Main;
+            adjustMIMETypeIfNecessary(cfResponse, isMainResourceLoad);
+        }
</ins><span class="cx"> 
</span><span class="cx"> #if !PLATFORM(IOS)
</span><span class="cx">         if (_CFURLRequestCopyProtocolPropertyForKey(m_handle-&gt;firstRequest().cfURLRequest(DoNotUpdateHTTPBody), CFSTR(&quot;ForceHTMLMIMEType&quot;)))
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformnetworkiosWebCoreURLResponseIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/network/ios/WebCoreURLResponseIOS.mm (199681 => 199682)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/network/ios/WebCoreURLResponseIOS.mm        2016-04-18 18:41:33 UTC (rev 199681)
+++ trunk/Source/WebCore/platform/network/ios/WebCoreURLResponseIOS.mm        2016-04-18 18:49:56 UTC (rev 199682)
</span><span class="lines">@@ -46,7 +46,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-void adjustMIMETypeIfNecessary(CFURLResponseRef cfResponse)
</del><ins>+void adjustMIMETypeIfNecessary(CFURLResponseRef cfResponse, bool isMainResourceLoad)
</ins><span class="cx"> {
</span><span class="cx">     RetainPtr&lt;CFStringRef&gt; mimeType = CFURLResponseGetMIMEType(cfResponse);
</span><span class="cx">     RetainPtr&lt;CFStringRef&gt; updatedMIMEType = mimeType;
</span><span class="lines">@@ -56,7 +56,7 @@
</span><span class="cx"> #if USE(QUICK_LOOK)
</span><span class="cx">     // We must ensure that the MIME type is correct, so that QuickLook's web plugin is called when needed.
</span><span class="cx">     // We filter the basic MIME types so that we don't do unnecessary work in standard browsing situations.
</span><del>-    if (shouldUseQuickLookForMIMEType((NSString *)updatedMIMEType.get())) {
</del><ins>+    if (isMainResourceLoad &amp;&amp; shouldUseQuickLookForMIMEType((NSString *)updatedMIMEType.get())) {
</ins><span class="cx">         RetainPtr&lt;CFStringRef&gt; suggestedFilename = adoptCF(CFURLResponseCopySuggestedFilename(cfResponse));
</span><span class="cx">         RetainPtr&lt;CFStringRef&gt; quickLookMIMEType = adoptCF((CFStringRef)QLTypeCopyBestMimeTypeForFileNameAndMimeType((NSString *)suggestedFilename.get(), (NSString *)mimeType.get()));
</span><span class="cx">         if (!quickLookMIMEType) {
</span><span class="lines">@@ -73,6 +73,8 @@
</span><span class="cx">         if (quickLookMIMEType)
</span><span class="cx">             updatedMIMEType = quickLookMIMEType;
</span><span class="cx">     }
</span><ins>+#else
+    UNUSED_PARAM(isMainResourceLoad);
</ins><span class="cx"> #endif // USE(QUICK_LOOK)
</span><span class="cx">     if (!mimeType || CFStringCompare(mimeType.get(), updatedMIMEType.get(), kCFCompareCaseInsensitive) != kCFCompareEqualTo)
</span><span class="cx">         CFURLResponseSetMIMEType(cfResponse, updatedMIMEType.get());
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformnetworkmacWebCoreResourceHandleAsDelegatemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsDelegate.mm (199681 => 199682)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsDelegate.mm        2016-04-18 18:41:33 UTC (rev 199681)
+++ trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsDelegate.mm        2016-04-18 18:49:56 UTC (rev 199682)
</span><span class="lines">@@ -153,8 +153,10 @@
</span><span class="cx"> 
</span><span class="cx">     // Avoid MIME type sniffing if the response comes back as 304 Not Modified.
</span><span class="cx">     int statusCode = [r respondsToSelector:@selector(statusCode)] ? [(id)r statusCode] : 0;
</span><del>-    if (statusCode != 304)
-        adjustMIMETypeIfNecessary([r _CFURLResponse]);
</del><ins>+    if (statusCode != 304) {
+        bool isMainResourceLoad = m_handle-&gt;firstRequest().requester() == ResourceRequest::Requester::Main;
+        adjustMIMETypeIfNecessary([r _CFURLResponse], isMainResourceLoad);
+    }
</ins><span class="cx"> 
</span><span class="cx"> #if !PLATFORM(IOS)
</span><span class="cx">     if ([m_handle-&gt;firstRequest().nsURLRequest(DoNotUpdateHTTPBody) _propertyForKey:@&quot;ForceHTMLMIMEType&quot;])
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformnetworkmacWebCoreResourceHandleAsOperationQueueDelegatemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm (199681 => 199682)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm        2016-04-18 18:41:33 UTC (rev 199681)
+++ trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm        2016-04-18 18:49:56 UTC (rev 199682)
</span><span class="lines">@@ -203,8 +203,10 @@
</span><span class="cx"> 
</span><span class="cx">         // Avoid MIME type sniffing if the response comes back as 304 Not Modified.
</span><span class="cx">         int statusCode = [r respondsToSelector:@selector(statusCode)] ? [(id)r statusCode] : 0;
</span><del>-        if (statusCode != 304)
-            adjustMIMETypeIfNecessary([r _CFURLResponse]);
</del><ins>+        if (statusCode != 304) {
+            bool isMainResourceLoad = m_handle-&gt;firstRequest().requester() == ResourceRequest::Requester::Main;
+            adjustMIMETypeIfNecessary([r _CFURLResponse], isMainResourceLoad);
+        }
</ins><span class="cx"> 
</span><span class="cx">         if ([m_handle-&gt;firstRequest().nsURLRequest(DoNotUpdateHTTPBody) _propertyForKey:@&quot;ForceHTMLMIMEType&quot;])
</span><span class="cx">             [r _setMIMEType:@&quot;text/html&quot;];
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformnetworkmacWebCoreURLResponseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/network/mac/WebCoreURLResponse.h (199681 => 199682)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/network/mac/WebCoreURLResponse.h        2016-04-18 18:41:33 UTC (rev 199681)
+++ trunk/Source/WebCore/platform/network/mac/WebCoreURLResponse.h        2016-04-18 18:49:56 UTC (rev 199682)
</span><span class="lines">@@ -43,5 +43,5 @@
</span><span class="cx"> #endif // __OBJC__
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><del>-WEBCORE_EXPORT void adjustMIMETypeIfNecessary(CFURLResponseRef);
</del><ins>+WEBCORE_EXPORT void adjustMIMETypeIfNecessary(CFURLResponseRef, bool isMainResourceLoad);
</ins><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformnetworkmacWebCoreURLResponsemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/network/mac/WebCoreURLResponse.mm (199681 => 199682)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/network/mac/WebCoreURLResponse.mm        2016-04-18 18:41:33 UTC (rev 199681)
+++ trunk/Source/WebCore/platform/network/mac/WebCoreURLResponse.mm        2016-04-18 18:49:56 UTC (rev 199682)
</span><span class="lines">@@ -286,8 +286,9 @@
</span><span class="cx">     return CFDictionaryCreate(kCFAllocatorDefault, (const void**)&amp;keys, (const void**)&amp;values, sizeof(keys)/sizeof(CFStringRef), &amp;kCFTypeDictionaryKeyCallBacks, &amp;kCFTypeDictionaryValueCallBacks);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void adjustMIMETypeIfNecessary(CFURLResponseRef cfResponse)
</del><ins>+void adjustMIMETypeIfNecessary(CFURLResponseRef cfResponse, bool isMainResourceLoad)
</ins><span class="cx"> {
</span><ins>+    UNUSED_PARAM(isMainResourceLoad);
</ins><span class="cx">     RetainPtr&lt;CFStringRef&gt; result = CFURLResponseGetMIMEType(cfResponse);
</span><span class="cx">     RetainPtr&lt;CFStringRef&gt; originalResult = result;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (199681 => 199682)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2016-04-18 18:41:33 UTC (rev 199681)
+++ trunk/Source/WebKit2/ChangeLog        2016-04-18 18:49:56 UTC (rev 199682)
</span><span class="lines">@@ -1,3 +1,19 @@
</span><ins>+2016-04-18  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        [WK2][iOS] Only adjust network responses' MIME type for QuickLook in the context of a main resource load
+        https://bugs.webkit.org/show_bug.cgi?id=156639
+        &lt;rdar://problem/25765848&gt;
+
+        Reviewed by Alex Christensen.
+
+        * NetworkProcess/NetworkDataTask.h:
+        (WebKit::NetworkDataTask::firstRequest):
+        Add getter to return the first request.
+
+        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
+        (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):
+        Pass flag to adjustMIMETypeIfNecessary() indicated if this is a main resource load.
+
</ins><span class="cx"> 2016-04-18  Brian Burg  &lt;bburg@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Web Automation: provide detailed error messages when an automation command fails
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcessNetworkDataTaskh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/NetworkDataTask.h (199681 => 199682)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/NetworkDataTask.h        2016-04-18 18:41:33 UTC (rev 199681)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkDataTask.h        2016-04-18 18:49:56 UTC (rev 199682)
</span><span class="lines">@@ -123,6 +123,7 @@
</span><span class="cx">     void setPendingDownloadLocation(const String&amp; filename, const SandboxExtension::Handle&amp;);
</span><span class="cx">     const String&amp; pendingDownloadLocation() { return m_pendingDownloadLocation; }
</span><span class="cx"> 
</span><ins>+    const WebCore::ResourceRequest&amp; firstRequest() const { return m_firstRequest; }
</ins><span class="cx">     WebCore::ResourceRequest currentRequest();
</span><span class="cx">     String suggestedFilename();
</span><span class="cx">     void willPerformHTTPRedirection(const WebCore::ResourceResponse&amp;, WebCore::ResourceRequest&amp;&amp;, RedirectCompletionHandler);
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcesscocoaNetworkSessionCocoamm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm (199681 => 199682)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm        2016-04-18 18:41:33 UTC (rev 199681)
+++ trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm        2016-04-18 18:49:56 UTC (rev 199682)
</span><span class="lines">@@ -206,9 +206,11 @@
</span><span class="cx">         
</span><span class="cx">         // Avoid MIME type sniffing if the response comes back as 304 Not Modified.
</span><span class="cx">         int statusCode = [response respondsToSelector:@selector(statusCode)] ? [(id)response statusCode] : 0;
</span><del>-        if (statusCode != 304)
-            WebCore::adjustMIMETypeIfNecessary(response._CFURLResponse);
-        
</del><ins>+        if (statusCode != 304) {
+            bool isMainResourceLoad = networkDataTask-&gt;firstRequest().requester() == WebCore::ResourceRequest::Requester::Main;
+            WebCore::adjustMIMETypeIfNecessary(response._CFURLResponse, isMainResourceLoad);
+        }
+
</ins><span class="cx">         WebCore::ResourceResponse resourceResponse(response);
</span><span class="cx">         copyTimingData([dataTask _timingData], resourceResponse.resourceLoadTiming());
</span><span class="cx">         auto completionHandlerCopy = Block_copy(completionHandler);
</span></span></pre>
</div>
</div>

</body>
</html>