Title: [184211] trunk
Revision
184211
Author
[email protected]
Date
2015-05-12 12:37:31 -0700 (Tue, 12 May 2015)

Log Message

[Mac] Share cookie storage between UI process and secondary processes
https://bugs.webkit.org/show_bug.cgi?id=144820
rdar://problem/20572830

Reviewed by Darin Adler.

Source/WebCore:

* platform/network/mac/CookieJarMac.mm:
* platform/spi/cf/CFNetworkSPI.h:
Moved SPIs into an SPI header, so that WebKit2 could use them too without duplication.

Source/WebKit2:

Pass a cookie storage descriptor that includes file path as well as other data that
CFNetwork needs to use the same cookies storage as in another process (session cookies
are still separate).

While at it, started to clean up code that passes cookie storage path. It was mostly
dead and unimplemented, only used in child processes when USE(SECCOMP_FILTERS) was enabled.

* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
* Shared/Network/NetworkProcessCreationParameters.cpp:
(WebKit::NetworkProcessCreationParameters::encode):
(WebKit::NetworkProcessCreationParameters::decode):
* Shared/Network/NetworkProcessCreationParameters.h:
* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode):
(WebKit::WebProcessCreationParameters::decode):
* Shared/WebProcessCreationParameters.h:
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeWebProcess):
(WebKit::WebProcessPool::platformInitializeNetworkProcess):
(WebKit::WebProcessPool::platformDefaultCookieStorageDirectory): Deleted.
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::ensureNetworkProcess):
(WebKit::WebProcessPool::createNewWebProcess):
(WebKit::WebProcessPool::cookieStorageDirectory):
* UIProcess/WebProcessPool.h:
* UIProcess/efl/WebProcessPoolEfl.cpp:
(WebKit::WebProcessPool::platformDefaultCookieStorageDirectory): Deleted.
* UIProcess/gtk/WebProcessPoolGtk.cpp:
(WebKit::WebProcessPool::platformDefaultCookieStorageDirectory): Deleted.
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeWebProcess):

Tools:

* WebKitTestRunner/TestController.cpp: (WTR::TestController::initialize):
Don't set cookie storage directory, as it's a no-op, we use an ephemeral session
for testing.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (184210 => 184211)


--- trunk/Source/WebCore/ChangeLog	2015-05-12 19:29:42 UTC (rev 184210)
+++ trunk/Source/WebCore/ChangeLog	2015-05-12 19:37:31 UTC (rev 184211)
@@ -1,3 +1,15 @@
+2015-05-08  Alexey Proskuryakov  <[email protected]>
+
+        [Mac] Share cookie storage between UI process and secondary processes
+        https://bugs.webkit.org/show_bug.cgi?id=144820
+        rdar://problem/20572830
+
+        Reviewed by Darin Adler.
+
+        * platform/network/mac/CookieJarMac.mm:
+        * platform/spi/cf/CFNetworkSPI.h:
+        Moved SPIs into an SPI header, so that WebKit2 could use them too without duplication.
+
 2015-05-12  Chris Dumez  <[email protected]>
 
         [WK2] Log using diagnostic logging how far back in history we navigate

Modified: trunk/Source/WebCore/platform/network/mac/CookieJarMac.mm (184210 => 184211)


--- trunk/Source/WebCore/platform/network/mac/CookieJarMac.mm	2015-05-12 19:29:42 UTC (rev 184210)
+++ trunk/Source/WebCore/platform/network/mac/CookieJarMac.mm	2015-05-12 19:37:31 UTC (rev 184211)
@@ -26,14 +26,9 @@
 #import "config.h"
 #import "PlatformCookieJar.h"
 
+#import "CFNetworkSPI.h"
 #import "NetworkStorageSession.h"
 
-@interface NSHTTPCookieStorage (Details)
-- (void)removeCookiesSinceDate:(NSDate *)date;
-- (id)_initWithCFHTTPCookieStorage:(CFHTTPCookieStorageRef)cfStorage;
-- (CFHTTPCookieStorageRef)_cookieStorage;
-@end
-
 #if !USE(CFNETWORK)
 
 #import "BlockExceptions.h"
@@ -43,11 +38,6 @@
 #import "WebCoreSystemInterface.h"
 #import <wtf/text/StringBuilder.h>
 
-enum {
-    NSHTTPCookieAcceptPolicyExclusivelyFromMainDocumentDomain = 3
-};
-
-
 namespace WebCore {
 
 static RetainPtr<NSArray> filterCookies(NSArray *unfilteredCookies)

Modified: trunk/Source/WebCore/platform/spi/cf/CFNetworkSPI.h (184210 => 184211)


--- trunk/Source/WebCore/platform/spi/cf/CFNetworkSPI.h	2015-05-12 19:29:42 UTC (rev 184210)
+++ trunk/Source/WebCore/platform/spi/cf/CFNetworkSPI.h	2015-05-12 19:37:31 UTC (rev 184211)
@@ -120,4 +120,20 @@
 EXTERN_C void _CFNetworkResetHSTSHostsSinceDate(CFURLStorageSessionRef, CFDateRef);
 #endif
 
+#if (TARGET_OS_IPHONE && __IPHONE_OS_VERSION_MIN_REQUIRED >= 90000) || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)
+EXTERN_C CFDataRef CFHTTPCookieStorageCreateIdentifyingData(CFAllocatorRef inAllocator, CFHTTPCookieStorageRef inStorage);
+EXTERN_C CFHTTPCookieStorageRef CFHTTPCookieStorageCreateFromIdentifyingData(CFAllocatorRef inAllocator, CFDataRef inData);
+#endif
+
+#if defined(__OBJC__) && !USE(APPLE_INTERNAL_SDK)
+@interface NSHTTPCookieStorage (Details)
+#if (TARGET_OS_IPHONE && __IPHONE_OS_VERSION_MIN_REQUIRED >= 90000) || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)
++ (void)_setSharedHTTPCookieStorage:(NSHTTPCookieStorage *)storage;
+#endif
+- (void)removeCookiesSinceDate:(NSDate *)date;
+- (id)_initWithCFHTTPCookieStorage:(CFHTTPCookieStorageRef)cfStorage;
+- (CFHTTPCookieStorageRef)_cookieStorage;
+@end
+#endif
+
 #endif // CFNetworkSPI_h

Modified: trunk/Source/WebKit2/ChangeLog (184210 => 184211)


--- trunk/Source/WebKit2/ChangeLog	2015-05-12 19:29:42 UTC (rev 184210)
+++ trunk/Source/WebKit2/ChangeLog	2015-05-12 19:37:31 UTC (rev 184211)
@@ -1,3 +1,44 @@
+2015-05-08  Alexey Proskuryakov  <[email protected]>
+
+        [Mac] Share cookie storage between UI process and secondary processes
+        https://bugs.webkit.org/show_bug.cgi?id=144820
+        rdar://problem/20572830
+
+        Reviewed by Darin Adler.
+
+        Pass a cookie storage descriptor that includes file path as well as other data that
+        CFNetwork needs to use the same cookies storage as in another process (session cookies
+        are still separate).
+
+        While at it, started to clean up code that passes cookie storage path. It was mostly
+        dead and unimplemented, only used in child processes when USE(SECCOMP_FILTERS) was enabled.
+
+        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
+        (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
+        * Shared/Network/NetworkProcessCreationParameters.cpp:
+        (WebKit::NetworkProcessCreationParameters::encode):
+        (WebKit::NetworkProcessCreationParameters::decode):
+        * Shared/Network/NetworkProcessCreationParameters.h:
+        * Shared/WebProcessCreationParameters.cpp:
+        (WebKit::WebProcessCreationParameters::encode):
+        (WebKit::WebProcessCreationParameters::decode):
+        * Shared/WebProcessCreationParameters.h:
+        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
+        (WebKit::WebProcessPool::platformInitializeWebProcess):
+        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
+        (WebKit::WebProcessPool::platformDefaultCookieStorageDirectory): Deleted.
+        * UIProcess/WebProcessPool.cpp:
+        (WebKit::WebProcessPool::ensureNetworkProcess):
+        (WebKit::WebProcessPool::createNewWebProcess):
+        (WebKit::WebProcessPool::cookieStorageDirectory):
+        * UIProcess/WebProcessPool.h:
+        * UIProcess/efl/WebProcessPoolEfl.cpp:
+        (WebKit::WebProcessPool::platformDefaultCookieStorageDirectory): Deleted.
+        * UIProcess/gtk/WebProcessPoolGtk.cpp:
+        (WebKit::WebProcessPool::platformDefaultCookieStorageDirectory): Deleted.
+        * WebProcess/cocoa/WebProcessCocoa.mm:
+        (WebKit::WebProcess::platformInitializeWebProcess):
+
 2015-05-12  Chris Dumez  <[email protected]>
 
         [WK2] Log using diagnostic logging how far back in history we navigate

Modified: trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkProcessCocoa.mm (184210 => 184211)


--- trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkProcessCocoa.mm	2015-05-12 19:29:42 UTC (rev 184210)
+++ trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkProcessCocoa.mm	2015-05-12 19:37:31 UTC (rev 184211)
@@ -77,6 +77,10 @@
 
     initializeNetworkSettings();
 
+#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100
+    setSharedHTTPCookieStorage(parameters.uiProcessCookieStorageIdentifier);
+#endif
+
     // FIXME: Most of what this function does for cache size gets immediately overridden by setCacheModel().
     // - memory cache size passed from UI process is always ignored;
     // - disk cache size passed from UI process is effectively a minimum size.

Modified: trunk/Source/WebKit2/Shared/ChildProcess.h (184210 => 184211)


--- trunk/Source/WebKit2/Shared/ChildProcess.h	2015-05-12 19:29:42 UTC (rev 184210)
+++ trunk/Source/WebKit2/Shared/ChildProcess.h	2015-05-12 19:37:31 UTC (rev 184211)
@@ -84,6 +84,10 @@
     virtual void initializeSandbox(const ChildProcessInitializationParameters&, SandboxInitializationParameters&);
     virtual void initializeConnection(IPC::Connection*);
 
+#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100
+    static void setSharedHTTPCookieStorage(const Vector<uint8_t>& identifier);
+#endif
+
     virtual bool shouldTerminate() = 0;
     virtual void terminate();
 

Modified: trunk/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.cpp (184210 => 184211)


--- trunk/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.cpp	2015-05-12 19:29:42 UTC (rev 184210)
+++ trunk/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.cpp	2015-05-12 19:37:31 UTC (rev 184211)
@@ -52,7 +52,12 @@
     encoder << shouldEnableNetworkCache;
     encoder << shouldEnableNetworkCacheEfficacyLogging;
 #endif
+#if ENABLE(SECCOMP_FILTERS)
     encoder << cookieStorageDirectory;
+#endif
+#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100
+    encoder << uiProcessCookieStorageIdentifier;
+#endif
 #if PLATFORM(IOS)
     encoder << cookieStorageDirectoryExtensionHandle;
     encoder << containerCachesDirectoryExtensionHandle;
@@ -100,8 +105,14 @@
     if (!decoder.decode(result.shouldEnableNetworkCacheEfficacyLogging))
         return false;
 #endif
+#if ENABLE(SECCOMP_FILTERS)
     if (!decoder.decode(result.cookieStorageDirectory))
         return false;
+#endif
+#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100
+    if (!decoder.decode(result.uiProcessCookieStorageIdentifier))
+        return false;
+#endif
 #if PLATFORM(IOS)
     if (!decoder.decode(result.cookieStorageDirectoryExtensionHandle))
         return false;

Modified: trunk/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.h (184210 => 184211)


--- trunk/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.h	2015-05-12 19:29:42 UTC (rev 184210)
+++ trunk/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.h	2015-05-12 19:37:31 UTC (rev 184211)
@@ -61,14 +61,15 @@
     bool shouldEnableNetworkCache;
     bool shouldEnableNetworkCacheEfficacyLogging;
 #endif
-
+#if ENABLE(SECCOMP_FILTERS)
     String cookieStorageDirectory;
-
+#endif
+#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100
+    Vector<uint8_t> uiProcessCookieStorageIdentifier;
+#endif
 #if PLATFORM(IOS)
     SandboxExtension::Handle cookieStorageDirectoryExtensionHandle;
-
     SandboxExtension::Handle containerCachesDirectoryExtensionHandle;
-
     SandboxExtension::Handle parentBundleDirectoryExtensionHandle;
 #endif
     bool shouldUseTestingNetworkSession;

Modified: trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp (184210 => 184211)


--- trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp	2015-05-12 19:29:42 UTC (rev 184210)
+++ trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp	2015-05-12 19:37:31 UTC (rev 184211)
@@ -73,7 +73,12 @@
     encoder << webSQLDatabaseDirectoryExtensionHandle;
     encoder << diskCacheDirectory;
     encoder << diskCacheDirectoryExtensionHandle;
+#if ENABLE(SECCOMP_FILTERS)
     encoder << cookieStorageDirectory;
+#endif
+#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100
+    encoder << uiProcessCookieStorageIdentifier;
+#endif
 #if PLATFORM(IOS)
     encoder << cookieStorageDirectoryExtensionHandle;
     encoder << containerCachesDirectoryExtensionHandle;
@@ -177,8 +182,14 @@
         return false;
     if (!decoder.decode(parameters.diskCacheDirectoryExtensionHandle))
         return false;
+#if ENABLE(SECCOMP_FILTERS)
     if (!decoder.decode(parameters.cookieStorageDirectory))
         return false;
+#endif
+#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100
+    if (!decoder.decode(parameters.uiProcessCookieStorageIdentifier))
+        return false;
+#endif
 #if PLATFORM(IOS)
     if (!decoder.decode(parameters.cookieStorageDirectoryExtensionHandle))
         return false;

Modified: trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h (184210 => 184211)


--- trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h	2015-05-12 19:29:42 UTC (rev 184210)
+++ trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h	2015-05-12 19:37:31 UTC (rev 184211)
@@ -74,7 +74,12 @@
     SandboxExtension::Handle webSQLDatabaseDirectoryExtensionHandle;
     String diskCacheDirectory;
     SandboxExtension::Handle diskCacheDirectoryExtensionHandle;
+#if ENABLE(SECCOMP_FILTERS)
     String cookieStorageDirectory;
+#endif
+#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100
+    Vector<uint8_t> uiProcessCookieStorageIdentifier;
+#endif
 #if PLATFORM(IOS)
     SandboxExtension::Handle cookieStorageDirectoryExtensionHandle;
     SandboxExtension::Handle containerCachesDirectoryExtensionHandle;

Modified: trunk/Source/WebKit2/Shared/mac/ChildProcessMac.mm (184210 => 184211)


--- trunk/Source/WebKit2/Shared/mac/ChildProcessMac.mm	2015-05-12 19:29:42 UTC (rev 184210)
+++ trunk/Source/WebKit2/Shared/mac/ChildProcessMac.mm	2015-05-12 19:37:31 UTC (rev 184211)
@@ -30,6 +30,7 @@
 
 #import "SandboxInitializationParameters.h"
 #import "WebKitSystemInterface.h"
+#import <WebCore/CFNetworkSPI.h>
 #import <WebCore/FileSystem.h>
 #import <WebCore/SystemVersion.h>
 #import <mach/mach.h>
@@ -175,6 +176,20 @@
     }
 }
 
+#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100
+void ChildProcess::setSharedHTTPCookieStorage(const Vector<uint8_t>& identifier)
+{
+    // FIXME: Remove the runtime check when it's not needed (soon).
+    if (![NSHTTPCookieStorage respondsToSelector:@selector(_setSharedHTTPCookieStorage:)])
+        return;
+
+    RetainPtr<CFDataRef> cookieStorageData = adoptCF(CFDataCreate(kCFAllocatorDefault, identifier.data(), identifier.size()));
+    RetainPtr<CFHTTPCookieStorageRef> uiProcessCookieStorage = adoptCF(CFHTTPCookieStorageCreateFromIdentifyingData(kCFAllocatorDefault, cookieStorageData.get()));
+    [NSHTTPCookieStorage _setSharedHTTPCookieStorage:adoptNS([[NSHTTPCookieStorage alloc] _initWithCFHTTPCookieStorage:uiProcessCookieStorage.get()]).get()];
+}
+#endif
+
+
 #if USE(APPKIT)
 void ChildProcess::stopNSAppRunLoop()
 {

Modified: trunk/Source/WebKit2/UIProcess/Cocoa/WebProcessPoolCocoa.mm (184210 => 184211)


--- trunk/Source/WebKit2/UIProcess/Cocoa/WebProcessPoolCocoa.mm	2015-05-12 19:29:42 UTC (rev 184210)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/WebProcessPoolCocoa.mm	2015-05-12 19:37:31 UTC (rev 184211)
@@ -240,6 +240,12 @@
 #if (TARGET_OS_IPHONE && __IPHONE_OS_VERSION_MIN_REQUIRED >= 90000) || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)
     parameters.networkATSContext = adoptCF(_CFNetworkCopyATSContext());
 #endif
+
+#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100
+    RetainPtr<CFDataRef> cookieStorageData = adoptCF(CFHTTPCookieStorageCreateIdentifyingData(kCFAllocatorDefault, [[NSHTTPCookieStorage sharedHTTPCookieStorage] _cookieStorage]));
+    ASSERT(parameters.uiProcessCookieStorageIdentifier.isEmpty());
+    parameters.uiProcessCookieStorageIdentifier.append(CFDataGetBytePtr(cookieStorageData.get()), CFDataGetLength(cookieStorageData.get()));
+#endif
 }
 
 #if ENABLE(NETWORK_PROCESS)
@@ -267,6 +273,12 @@
     parameters.shouldEnableNetworkCache = [defaults boolForKey:WebKitNetworkCacheEnabledDefaultsKey] && ![defaults boolForKey:WebKitNetworkCacheTemporarilyDisabledForTestingKey];
     parameters.shouldEnableNetworkCacheEfficacyLogging = [defaults boolForKey:WebKitNetworkCacheEfficacyLoggingEnabledDefaultsKey];
 #endif
+
+#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100
+    RetainPtr<CFDataRef> cookieStorageData = adoptCF(CFHTTPCookieStorageCreateIdentifyingData(kCFAllocatorDefault, [[NSHTTPCookieStorage sharedHTTPCookieStorage] _cookieStorage]));
+    ASSERT(parameters.uiProcessCookieStorageIdentifier.isEmpty());
+    parameters.uiProcessCookieStorageIdentifier.append(CFDataGetBytePtr(cookieStorageData.get()), CFDataGetLength(cookieStorageData.get()));
+#endif
 }
 #endif
 
@@ -283,23 +295,7 @@
     return stringByResolvingSymlinksInPath([cachePath stringByStandardizingPath]);
 }
 
-String WebProcessPool::platformDefaultCookieStorageDirectory() const
-{
 #if PLATFORM(IOS)
-    String path = pathForProcessContainer();
-    if (path.isEmpty())
-        path = NSHomeDirectory();
-
-    path = path + "/Library/Cookies";
-    path = stringByResolvingSymlinksInPath(path);
-    return path;
-#else
-    notImplemented();
-    return [@"" stringByStandardizingPath];
-#endif
-}
-
-#if PLATFORM(IOS)
 String WebProcessPool::parentBundleDirectory() const
 {
     return [[[NSBundle mainBundle] bundlePath] stringByStandardizingPath];

Modified: trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp (184210 => 184211)


--- trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp	2015-05-12 19:29:42 UTC (rev 184210)
+++ trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp	2015-05-12 19:37:31 UTC (rev 184211)
@@ -411,11 +411,14 @@
     if (!parameters.diskCacheDirectory.isEmpty())
         SandboxExtension::createHandleForReadWriteDirectory(parameters.diskCacheDirectory, parameters.diskCacheDirectoryExtensionHandle);
 
-    parameters.cookieStorageDirectory = cookieStorageDirectory();
+#if ENABLE(SECCOMP_FILTERS)
+    parameters.cookieStorageDirectory = this->cookieStorageDirectory();
+#endif
 
 #if PLATFORM(IOS)
-    if (!parameters.cookieStorageDirectory.isEmpty())
-        SandboxExtension::createHandleForReadWriteDirectory(parameters.cookieStorageDirectory, parameters.cookieStorageDirectoryExtensionHandle);
+    String cookieStorageDirectory = this->cookieStorageDirectory();
+    if (!cookieStorageDirectory.isEmpty())
+        SandboxExtension::createHandleForReadWriteDirectory(cookieStorageDirectory, parameters.cookieStorageDirectoryExtensionHandle);
 
     String containerCachesDirectory = this->networkingCachesDirectory();
     if (!containerCachesDirectory.isEmpty())
@@ -610,11 +613,14 @@
     if (!parameters.diskCacheDirectory.isEmpty())
         SandboxExtension::createHandleForReadWriteDirectory(parameters.diskCacheDirectory, parameters.diskCacheDirectoryExtensionHandle);
 
-    parameters.cookieStorageDirectory = cookieStorageDirectory();
+#if ENABLE(SECCOMP_FILTERS)
+    parameters.cookieStorageDirectory = this->cookieStorageDirectory();
+#endif
 
 #if PLATFORM(IOS)
-    if (!parameters.cookieStorageDirectory.isEmpty())
-        SandboxExtension::createHandleForReadWriteDirectory(parameters.cookieStorageDirectory, parameters.cookieStorageDirectoryExtensionHandle);
+    String cookieStorageDirectory = this->cookieStorageDirectory();
+    if (!cookieStorageDirectory.isEmpty())
+        SandboxExtension::createHandleForReadWriteDirectory(cookieStorageDirectory, parameters.cookieStorageDirectoryExtensionHandle);
 
     String containerCachesDirectory = this->webContentCachesDirectory();
     if (!containerCachesDirectory.isEmpty())
@@ -1187,13 +1193,16 @@
     return platformDefaultDiskCacheDirectory();
 }
 
+#if ENABLE(SECCOMP_FILTERS)
 String WebProcessPool::cookieStorageDirectory() const
 {
     if (!m_overrideCookieStorageDirectory.isEmpty())
         return m_overrideCookieStorageDirectory;
 
-    return platformDefaultCookieStorageDirectory();
+    // FIXME: This doesn't make much sense. Is this function used at all? We used to call platform code, but no existing platforms implemented that function.
+    return emptyString();
 }
+#endif
 
 void WebProcessPool::useTestingNetworkSession()
 {

Modified: trunk/Source/WebKit2/UIProcess/WebProcessPool.h (184210 => 184211)


--- trunk/Source/WebKit2/UIProcess/WebProcessPool.h	2015-05-12 19:29:42 UTC (rev 184210)
+++ trunk/Source/WebKit2/UIProcess/WebProcessPool.h	2015-05-12 19:37:31 UTC (rev 184211)
@@ -401,8 +401,9 @@
     String diskCacheDirectory() const;
     String platformDefaultDiskCacheDirectory() const;
 
+#if ENABLE(SECCOMP_FILTERS)
     String cookieStorageDirectory() const;
-    String platformDefaultCookieStorageDirectory() const;
+#endif
 
 #if PLATFORM(IOS)
     String parentBundleDirectory() const;

Modified: trunk/Source/WebKit2/UIProcess/efl/WebProcessPoolEfl.cpp (184210 => 184211)


--- trunk/Source/WebKit2/UIProcess/efl/WebProcessPoolEfl.cpp	2015-05-12 19:29:42 UTC (rev 184210)
+++ trunk/Source/WebKit2/UIProcess/efl/WebProcessPoolEfl.cpp	2015-05-12 19:37:31 UTC (rev 184211)
@@ -131,12 +131,6 @@
     return String::fromUTF8(efreet_cache_home_get()) + "/WebKitEfl";
 }
 
-String WebProcessPool::platformDefaultCookieStorageDirectory() const
-{
-    notImplemented();
-    return String();
-}
-
 void WebProcessPool::setIgnoreTLSErrors(bool ignoreTLSErrors)
 {
     m_ignoreTLSErrors = ignoreTLSErrors;

Modified: trunk/Source/WebKit2/UIProcess/gtk/WebProcessPoolGtk.cpp (184210 => 184211)


--- trunk/Source/WebKit2/UIProcess/gtk/WebProcessPoolGtk.cpp	2015-05-12 19:29:42 UTC (rev 184210)
+++ trunk/Source/WebKit2/UIProcess/gtk/WebProcessPoolGtk.cpp	2015-05-12 19:37:31 UTC (rev 184211)
@@ -148,12 +148,6 @@
     return WebCore::filenameToString(diskCacheDirectory.get());
 }
 
-String WebProcessPool::platformDefaultCookieStorageDirectory() const
-{
-    notImplemented();
-    return String();
-}
-
 void WebProcessPool::setIgnoreTLSErrors(bool ignoreTLSErrors)
 {
     m_ignoreTLSErrors = ignoreTLSErrors;

Modified: trunk/Source/WebKit2/WebProcess/cocoa/WebProcessCocoa.mm (184210 => 184211)


--- trunk/Source/WebKit2/WebProcess/cocoa/WebProcessCocoa.mm	2015-05-12 19:29:42 UTC (rev 184210)
+++ trunk/Source/WebKit2/WebProcess/cocoa/WebProcessCocoa.mm	2015-05-12 19:37:31 UTC (rev 184211)
@@ -149,6 +149,10 @@
 #endif
 #endif
 
+#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100
+    setSharedHTTPCookieStorage(parameters.uiProcessCookieStorageIdentifier);
+#endif
+
     // FIXME: Most of what this function does for cache size gets immediately overridden by setCacheModel().
     // - memory cache size passed from UI process is always ignored;
     // - disk cache size passed from UI process is effectively a minimum size.

Modified: trunk/Tools/ChangeLog (184210 => 184211)


--- trunk/Tools/ChangeLog	2015-05-12 19:29:42 UTC (rev 184210)
+++ trunk/Tools/ChangeLog	2015-05-12 19:37:31 UTC (rev 184211)
@@ -1,3 +1,15 @@
+2015-05-11  Alexey Proskuryakov  <[email protected]>
+
+        [Mac] Share cookie storage between UI process and secondary processes
+        https://bugs.webkit.org/show_bug.cgi?id=144820
+        rdar://problem/20572830
+
+        Reviewed by Darin Adler.
+
+        * WebKitTestRunner/TestController.cpp: (WTR::TestController::initialize):
+        Don't set cookie storage directory, as it's a no-op, we use an ephemeral session
+        for testing.
+
 2015-05-12  Jake Nielsen  <[email protected]>
 
         Fix internal build configuration issues

Modified: trunk/Tools/WebKitTestRunner/TestController.cpp (184210 => 184211)


--- trunk/Tools/WebKitTestRunner/TestController.cpp	2015-05-12 19:29:42 UTC (rev 184210)
+++ trunk/Tools/WebKitTestRunner/TestController.cpp	2015-05-12 19:37:31 UTC (rev 184211)
@@ -380,7 +380,6 @@
         // FIXME: These should be migrated to WKContextConfigurationRef.
         WKContextSetApplicationCacheDirectory(m_context.get(), toWK(temporaryFolder + separator + "ApplicationCache").get());
         WKContextSetDiskCacheDirectory(m_context.get(), toWK(temporaryFolder + separator + "Cache").get());
-        WKContextSetCookieStorageDirectory(m_context.get(), toWK(temporaryFolder + separator + "Cookies").get());
         // Disable icon database to avoid fetching <http://127.0.0.1:8000/favicon.ico> and making tests flaky.
         // Invividual tests can enable it using testRunner.setIconDatabaseEnabled, although it's not currently supported in WebKitTestRunner.
         WKContextSetIconDatabasePath(m_context.get(), toWK(emptyString()).get());
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to