Use the same cookie storage as WebCore when using NETWORK_SESSION
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 3 Nov 2015 09:28:15 +0000 (09:28 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 3 Nov 2015 09:28:15 +0000 (09:28 +0000)
https://bugs.webkit.org/show_bug.cgi?id=150833

Patch by Alex Christensen <achristensen@webkit.org> on 2015-11-03
Reviewed by Antti Koivisto.

This fixes 12 tests when using NETWORK_SESSION.

* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(WebKit::NetworkSession::NetworkSession):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@191943 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit2/ChangeLog
Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm

index fd36033..6d2f574 100644 (file)
@@ -1,5 +1,17 @@
 2015-11-03  Alex Christensen  <achristensen@webkit.org>
 
+        Use the same cookie storage as WebCore when using NETWORK_SESSION
+        https://bugs.webkit.org/show_bug.cgi?id=150833
+
+        Reviewed by Antti Koivisto.
+
+        This fixes 12 tests when using NETWORK_SESSION.
+
+        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
+        (WebKit::NetworkSession::NetworkSession):
+
+2015-11-03  Alex Christensen  <achristensen@webkit.org>
+
         Clean up NETWORK_SESSION code after r191848
         https://bugs.webkit.org/show_bug.cgi?id=150829
 
index 7ab14a2..73371b1 100644 (file)
 
 #if USE(NETWORK_SESSION)
 
+#import "SessionTracker.h"
 #import <Foundation/NSURLSession.h>
-
 #import <WebCore/AuthenticationChallenge.h>
+#import <WebCore/CFNetworkSPI.h>
 #import <WebCore/Credential.h>
 #import <WebCore/ResourceError.h>
 #import <WebCore/ResourceRequest.h>
@@ -183,6 +184,11 @@ NetworkSession::NetworkSession(Type type)
     m_sessionDelegate = adoptNS([[NetworkSessionDelegate alloc] initWithNetworkSession:*this]);
 
     NSURLSessionConfiguration *configuration = configurationForType(type);
+    // FIXME: Use SessionTracker to make sure the correct cookie storage is used once there is more than one NetworkSession.
+    if (auto* session = SessionTracker::session(WebCore::SessionID::defaultSessionID())) {
+        if (CFHTTPCookieStorageRef storage = session->cookieStorage().get())
+            configuration.HTTPCookieStorage = [[[NSHTTPCookieStorage alloc] _initWithCFHTTPCookieStorage:storage] autorelease];
+    }
     m_session = [NSURLSession sessionWithConfiguration:configuration delegate:static_cast<id>(m_sessionDelegate.get()) delegateQueue:[NSOperationQueue mainQueue]];
 }