Title: [197606] trunk/Source
Revision
197606
Author
[email protected]
Date
2016-03-04 19:30:19 -0800 (Fri, 04 Mar 2016)

Log Message

Fix file mime-types when using NetworkSession
https://bugs.webkit.org/show_bug.cgi?id=155058

Patch by Alex Christensen <[email protected]> on 2016-03-04
Reviewed by Andy Estes.

Source/WebCore:

This fixes platform/mac/fast/loader/file-url-mimetypes-3.html
and platform/mac/fast/loader/file-url-mimetypes.html.

* platform/network/mac/WebCoreURLResponse.h:

Source/WebKit2:

* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTask::NetworkDataTask):
Call adjustMIMETypeIfNecessary like we do in connection didReceiveResponse in
WebCoreResourceHandleAsOperationQueueDelegate.mm.
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):
Don't content sniff file urls.  This check is analogous to ResourceHandle::shouldContentSniffURL.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (197605 => 197606)


--- trunk/Source/WebCore/ChangeLog	2016-03-05 01:35:12 UTC (rev 197605)
+++ trunk/Source/WebCore/ChangeLog	2016-03-05 03:30:19 UTC (rev 197606)
@@ -1,3 +1,15 @@
+2016-03-04  Alex Christensen  <[email protected]>
+
+        Fix file mime-types when using NetworkSession
+        https://bugs.webkit.org/show_bug.cgi?id=155058
+
+        Reviewed by Andy Estes.
+
+        This fixes platform/mac/fast/loader/file-url-mimetypes-3.html
+        and platform/mac/fast/loader/file-url-mimetypes.html.
+
+        * platform/network/mac/WebCoreURLResponse.h:
+
 2016-03-04  Sam Weinig  <[email protected]>
 
         [WebKit2] Add WebKit2 equivalent of -[WebView _insertNewlineInQuotedContent]

Modified: trunk/Source/WebCore/platform/network/mac/WebCoreURLResponse.h (197605 => 197606)


--- trunk/Source/WebCore/platform/network/mac/WebCoreURLResponse.h	2016-03-05 01:35:12 UTC (rev 197605)
+++ trunk/Source/WebCore/platform/network/mac/WebCoreURLResponse.h	2016-03-05 03:30:19 UTC (rev 197606)
@@ -43,5 +43,5 @@
 #endif // __OBJC__
 
 namespace WebCore {
-void adjustMIMETypeIfNecessary(CFURLResponseRef);
+WEBCORE_EXPORT void adjustMIMETypeIfNecessary(CFURLResponseRef);
 }

Modified: trunk/Source/WebKit2/ChangeLog (197605 => 197606)


--- trunk/Source/WebKit2/ChangeLog	2016-03-05 01:35:12 UTC (rev 197605)
+++ trunk/Source/WebKit2/ChangeLog	2016-03-05 03:30:19 UTC (rev 197606)
@@ -1,3 +1,18 @@
+2016-03-04  Alex Christensen  <[email protected]>
+
+        Fix file mime-types when using NetworkSession
+        https://bugs.webkit.org/show_bug.cgi?id=155058
+
+        Reviewed by Andy Estes.
+
+        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
+        (WebKit::NetworkDataTask::NetworkDataTask):
+        Call adjustMIMETypeIfNecessary like we do in connection didReceiveResponse in 
+        WebCoreResourceHandleAsOperationQueueDelegate.mm.
+        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
+        (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):
+        Don't content sniff file urls.  This check is analogous to ResourceHandle::shouldContentSniffURL.
+
 2016-03-04  Sam Weinig  <[email protected]>
 
         [WebKit2] Add WebKit2 equivalent of -[WebView _insertNewlineInQuotedContent]

Modified: trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm (197605 => 197606)


--- trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm	2016-03-05 01:35:12 UTC (rev 197605)
+++ trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm	2016-03-05 03:30:19 UTC (rev 197606)
@@ -97,7 +97,7 @@
 #endif
     
     NSURLRequest *nsRequest = request.nsURLRequest(WebCore::UpdateHTTPBody);
-    if (shouldContentSniff == WebCore::DoNotSniffContent) {
+    if (shouldContentSniff == WebCore::DoNotSniffContent || url.protocolIs("file")) {
         NSMutableURLRequest *mutableRequest = [[nsRequest mutableCopy] autorelease];
         [mutableRequest _setProperty:@(NO) forKey:(NSString *)_kCFURLConnectionPropertyShouldSniff];
         nsRequest = mutableRequest;

Modified: trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm (197605 => 197606)


--- trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm	2016-03-05 01:35:12 UTC (rev 197605)
+++ trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm	2016-03-05 03:30:19 UTC (rev 197606)
@@ -46,6 +46,7 @@
 #import <WebCore/ResourceResponse.h>
 #import <WebCore/SharedBuffer.h>
 #import <WebCore/URL.h>
+#import <WebCore/WebCoreURLResponse.h>
 #import <wtf/MainThread.h>
 #import <wtf/NeverDestroyed.h>
 
@@ -166,6 +167,12 @@
     auto storedCredentials = session.configuration.URLCredentialStorage ? WebCore::StoredCredentials::AllowStoredCredentials : WebCore::StoredCredentials::DoNotAllowStoredCredentials;
     if (auto* networkDataTask = _session->dataTaskForIdentifier(dataTask.taskIdentifier, storedCredentials)) {
         ASSERT(isMainThread());
+        
+        // Avoid MIME type sniffing if the response comes back as 304 Not Modified.
+        int statusCode = [response respondsToSelector:@selector(statusCode)] ? [(id)response statusCode] : 0;
+        if (statusCode != 304)
+            WebCore::adjustMIMETypeIfNecessary(response._CFURLResponse);
+        
         WebCore::ResourceResponse resourceResponse(response);
         copyTimingData([dataTask _timingData], resourceResponse.resourceLoadTiming());
         auto completionHandlerCopy = Block_copy(completionHandler);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to