Changeset 184211 in webkit
- Timestamp:
- May 12, 2015, 12:37:31 PM (10 years ago)
- Location:
- trunk
- Files:
-
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r184210 r184211 1 2015-05-08 Alexey Proskuryakov <ap@apple.com> 2 3 [Mac] Share cookie storage between UI process and secondary processes 4 https://bugs.webkit.org/show_bug.cgi?id=144820 5 rdar://problem/20572830 6 7 Reviewed by Darin Adler. 8 9 * platform/network/mac/CookieJarMac.mm: 10 * platform/spi/cf/CFNetworkSPI.h: 11 Moved SPIs into an SPI header, so that WebKit2 could use them too without duplication. 12 1 13 2015-05-12 Chris Dumez <cdumez@apple.com> 2 14 -
trunk/Source/WebCore/platform/network/mac/CookieJarMac.mm
r181878 r184211 27 27 #import "PlatformCookieJar.h" 28 28 29 #import "CFNetworkSPI.h" 29 30 #import "NetworkStorageSession.h" 30 31 @interface NSHTTPCookieStorage (Details)32 - (void)removeCookiesSinceDate:(NSDate *)date;33 - (id)_initWithCFHTTPCookieStorage:(CFHTTPCookieStorageRef)cfStorage;34 - (CFHTTPCookieStorageRef)_cookieStorage;35 @end36 31 37 32 #if !USE(CFNETWORK) … … 43 38 #import "WebCoreSystemInterface.h" 44 39 #import <wtf/text/StringBuilder.h> 45 46 enum {47 NSHTTPCookieAcceptPolicyExclusivelyFromMainDocumentDomain = 348 };49 50 40 51 41 namespace WebCore { -
trunk/Source/WebCore/platform/spi/cf/CFNetworkSPI.h
r182815 r184211 121 121 #endif 122 122 123 #if (TARGET_OS_IPHONE && __IPHONE_OS_VERSION_MIN_REQUIRED >= 90000) || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100) 124 EXTERN_C CFDataRef CFHTTPCookieStorageCreateIdentifyingData(CFAllocatorRef inAllocator, CFHTTPCookieStorageRef inStorage); 125 EXTERN_C CFHTTPCookieStorageRef CFHTTPCookieStorageCreateFromIdentifyingData(CFAllocatorRef inAllocator, CFDataRef inData); 126 #endif 127 128 #if defined(__OBJC__) && !USE(APPLE_INTERNAL_SDK) 129 @interface NSHTTPCookieStorage (Details) 130 #if (TARGET_OS_IPHONE && __IPHONE_OS_VERSION_MIN_REQUIRED >= 90000) || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100) 131 + (void)_setSharedHTTPCookieStorage:(NSHTTPCookieStorage *)storage; 132 #endif 133 - (void)removeCookiesSinceDate:(NSDate *)date; 134 - (id)_initWithCFHTTPCookieStorage:(CFHTTPCookieStorageRef)cfStorage; 135 - (CFHTTPCookieStorageRef)_cookieStorage; 136 @end 137 #endif 138 123 139 #endif // CFNetworkSPI_h -
trunk/Source/WebKit2/ChangeLog
r184210 r184211 1 2015-05-08 Alexey Proskuryakov <ap@apple.com> 2 3 [Mac] Share cookie storage between UI process and secondary processes 4 https://bugs.webkit.org/show_bug.cgi?id=144820 5 rdar://problem/20572830 6 7 Reviewed by Darin Adler. 8 9 Pass a cookie storage descriptor that includes file path as well as other data that 10 CFNetwork needs to use the same cookies storage as in another process (session cookies 11 are still separate). 12 13 While at it, started to clean up code that passes cookie storage path. It was mostly 14 dead and unimplemented, only used in child processes when USE(SECCOMP_FILTERS) was enabled. 15 16 * NetworkProcess/cocoa/NetworkProcessCocoa.mm: 17 (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa): 18 * Shared/Network/NetworkProcessCreationParameters.cpp: 19 (WebKit::NetworkProcessCreationParameters::encode): 20 (WebKit::NetworkProcessCreationParameters::decode): 21 * Shared/Network/NetworkProcessCreationParameters.h: 22 * Shared/WebProcessCreationParameters.cpp: 23 (WebKit::WebProcessCreationParameters::encode): 24 (WebKit::WebProcessCreationParameters::decode): 25 * Shared/WebProcessCreationParameters.h: 26 * UIProcess/Cocoa/WebProcessPoolCocoa.mm: 27 (WebKit::WebProcessPool::platformInitializeWebProcess): 28 (WebKit::WebProcessPool::platformInitializeNetworkProcess): 29 (WebKit::WebProcessPool::platformDefaultCookieStorageDirectory): Deleted. 30 * UIProcess/WebProcessPool.cpp: 31 (WebKit::WebProcessPool::ensureNetworkProcess): 32 (WebKit::WebProcessPool::createNewWebProcess): 33 (WebKit::WebProcessPool::cookieStorageDirectory): 34 * UIProcess/WebProcessPool.h: 35 * UIProcess/efl/WebProcessPoolEfl.cpp: 36 (WebKit::WebProcessPool::platformDefaultCookieStorageDirectory): Deleted. 37 * UIProcess/gtk/WebProcessPoolGtk.cpp: 38 (WebKit::WebProcessPool::platformDefaultCookieStorageDirectory): Deleted. 39 * WebProcess/cocoa/WebProcessCocoa.mm: 40 (WebKit::WebProcess::platformInitializeWebProcess): 41 1 42 2015-05-12 Chris Dumez <cdumez@apple.com> 2 43 -
trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkProcessCocoa.mm
r183755 r184211 78 78 initializeNetworkSettings(); 79 79 80 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100 81 setSharedHTTPCookieStorage(parameters.uiProcessCookieStorageIdentifier); 82 #endif 83 80 84 // FIXME: Most of what this function does for cache size gets immediately overridden by setCacheModel(). 81 85 // - memory cache size passed from UI process is always ignored; -
trunk/Source/WebKit2/Shared/ChildProcess.h
r164913 r184211 85 85 virtual void initializeConnection(IPC::Connection*); 86 86 87 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100 88 static void setSharedHTTPCookieStorage(const Vector<uint8_t>& identifier); 89 #endif 90 87 91 virtual bool shouldTerminate() = 0; 88 92 virtual void terminate(); -
trunk/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.cpp
r182259 r184211 53 53 encoder << shouldEnableNetworkCacheEfficacyLogging; 54 54 #endif 55 #if ENABLE(SECCOMP_FILTERS) 55 56 encoder << cookieStorageDirectory; 57 #endif 58 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100 59 encoder << uiProcessCookieStorageIdentifier; 60 #endif 56 61 #if PLATFORM(IOS) 57 62 encoder << cookieStorageDirectoryExtensionHandle; … … 101 106 return false; 102 107 #endif 108 #if ENABLE(SECCOMP_FILTERS) 103 109 if (!decoder.decode(result.cookieStorageDirectory)) 104 110 return false; 111 #endif 112 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100 113 if (!decoder.decode(result.uiProcessCookieStorageIdentifier)) 114 return false; 115 #endif 105 116 #if PLATFORM(IOS) 106 117 if (!decoder.decode(result.cookieStorageDirectoryExtensionHandle)) -
trunk/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.h
r182259 r184211 62 62 bool shouldEnableNetworkCacheEfficacyLogging; 63 63 #endif 64 64 #if ENABLE(SECCOMP_FILTERS) 65 65 String cookieStorageDirectory; 66 66 #endif 67 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100 68 Vector<uint8_t> uiProcessCookieStorageIdentifier; 69 #endif 67 70 #if PLATFORM(IOS) 68 71 SandboxExtension::Handle cookieStorageDirectoryExtensionHandle; 69 70 72 SandboxExtension::Handle containerCachesDirectoryExtensionHandle; 71 72 73 SandboxExtension::Handle parentBundleDirectoryExtensionHandle; 73 74 #endif -
trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp
r183562 r184211 74 74 encoder << diskCacheDirectory; 75 75 encoder << diskCacheDirectoryExtensionHandle; 76 #if ENABLE(SECCOMP_FILTERS) 76 77 encoder << cookieStorageDirectory; 78 #endif 79 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100 80 encoder << uiProcessCookieStorageIdentifier; 81 #endif 77 82 #if PLATFORM(IOS) 78 83 encoder << cookieStorageDirectoryExtensionHandle; … … 178 183 if (!decoder.decode(parameters.diskCacheDirectoryExtensionHandle)) 179 184 return false; 185 #if ENABLE(SECCOMP_FILTERS) 180 186 if (!decoder.decode(parameters.cookieStorageDirectory)) 181 187 return false; 188 #endif 189 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100 190 if (!decoder.decode(parameters.uiProcessCookieStorageIdentifier)) 191 return false; 192 #endif 182 193 #if PLATFORM(IOS) 183 194 if (!decoder.decode(parameters.cookieStorageDirectoryExtensionHandle)) -
trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h
r183562 r184211 75 75 String diskCacheDirectory; 76 76 SandboxExtension::Handle diskCacheDirectoryExtensionHandle; 77 #if ENABLE(SECCOMP_FILTERS) 77 78 String cookieStorageDirectory; 79 #endif 80 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100 81 Vector<uint8_t> uiProcessCookieStorageIdentifier; 82 #endif 78 83 #if PLATFORM(IOS) 79 84 SandboxExtension::Handle cookieStorageDirectoryExtensionHandle; -
trunk/Source/WebKit2/Shared/mac/ChildProcessMac.mm
r179373 r184211 31 31 #import "SandboxInitializationParameters.h" 32 32 #import "WebKitSystemInterface.h" 33 #import <WebCore/CFNetworkSPI.h> 33 34 #import <WebCore/FileSystem.h> 34 35 #import <WebCore/SystemVersion.h> … … 176 177 } 177 178 179 #if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100 180 void ChildProcess::setSharedHTTPCookieStorage(const Vector<uint8_t>& identifier) 181 { 182 // FIXME: Remove the runtime check when it's not needed (soon). 183 if (![NSHTTPCookieStorage respondsToSelector:@selector(_setSharedHTTPCookieStorage:)]) 184 return; 185 186 RetainPtr<CFDataRef> cookieStorageData = adoptCF(CFDataCreate(kCFAllocatorDefault, identifier.data(), identifier.size())); 187 RetainPtr<CFHTTPCookieStorageRef> uiProcessCookieStorage = adoptCF(CFHTTPCookieStorageCreateFromIdentifyingData(kCFAllocatorDefault, cookieStorageData.get())); 188 [NSHTTPCookieStorage _setSharedHTTPCookieStorage:adoptNS([[NSHTTPCookieStorage alloc] _initWithCFHTTPCookieStorage:uiProcessCookieStorage.get()]).get()]; 189 } 190 #endif 191 192 178 193 #if USE(APPKIT) 179 194 void ChildProcess::stopNSAppRunLoop() -
trunk/Source/WebKit2/UIProcess/Cocoa/WebProcessPoolCocoa.mm
r183893 r184211 241 241 parameters.networkATSContext = adoptCF(_CFNetworkCopyATSContext()); 242 242 #endif 243 244 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100 245 RetainPtr<CFDataRef> cookieStorageData = adoptCF(CFHTTPCookieStorageCreateIdentifyingData(kCFAllocatorDefault, [[NSHTTPCookieStorage sharedHTTPCookieStorage] _cookieStorage])); 246 ASSERT(parameters.uiProcessCookieStorageIdentifier.isEmpty()); 247 parameters.uiProcessCookieStorageIdentifier.append(CFDataGetBytePtr(cookieStorageData.get()), CFDataGetLength(cookieStorageData.get())); 248 #endif 243 249 } 244 250 … … 268 274 parameters.shouldEnableNetworkCacheEfficacyLogging = [defaults boolForKey:WebKitNetworkCacheEfficacyLoggingEnabledDefaultsKey]; 269 275 #endif 276 277 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100 278 RetainPtr<CFDataRef> cookieStorageData = adoptCF(CFHTTPCookieStorageCreateIdentifyingData(kCFAllocatorDefault, [[NSHTTPCookieStorage sharedHTTPCookieStorage] _cookieStorage])); 279 ASSERT(parameters.uiProcessCookieStorageIdentifier.isEmpty()); 280 parameters.uiProcessCookieStorageIdentifier.append(CFDataGetBytePtr(cookieStorageData.get()), CFDataGetLength(cookieStorageData.get())); 281 #endif 270 282 } 271 283 #endif … … 282 294 cachePath = @"~/Library/Caches/com.apple.WebKit.WebProcess"; 283 295 return stringByResolvingSymlinksInPath([cachePath stringByStandardizingPath]); 284 }285 286 String WebProcessPool::platformDefaultCookieStorageDirectory() const287 {288 #if PLATFORM(IOS)289 String path = pathForProcessContainer();290 if (path.isEmpty())291 path = NSHomeDirectory();292 293 path = path + "/Library/Cookies";294 path = stringByResolvingSymlinksInPath(path);295 return path;296 #else297 notImplemented();298 return [@"" stringByStandardizingPath];299 #endif300 296 } 301 297 -
trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp
r183562 r184211 412 412 SandboxExtension::createHandleForReadWriteDirectory(parameters.diskCacheDirectory, parameters.diskCacheDirectoryExtensionHandle); 413 413 414 parameters.cookieStorageDirectory = cookieStorageDirectory(); 414 #if ENABLE(SECCOMP_FILTERS) 415 parameters.cookieStorageDirectory = this->cookieStorageDirectory(); 416 #endif 415 417 416 418 #if PLATFORM(IOS) 417 if (!parameters.cookieStorageDirectory.isEmpty()) 418 SandboxExtension::createHandleForReadWriteDirectory(parameters.cookieStorageDirectory, parameters.cookieStorageDirectoryExtensionHandle); 419 String cookieStorageDirectory = this->cookieStorageDirectory(); 420 if (!cookieStorageDirectory.isEmpty()) 421 SandboxExtension::createHandleForReadWriteDirectory(cookieStorageDirectory, parameters.cookieStorageDirectoryExtensionHandle); 419 422 420 423 String containerCachesDirectory = this->networkingCachesDirectory(); … … 611 614 SandboxExtension::createHandleForReadWriteDirectory(parameters.diskCacheDirectory, parameters.diskCacheDirectoryExtensionHandle); 612 615 613 parameters.cookieStorageDirectory = cookieStorageDirectory(); 616 #if ENABLE(SECCOMP_FILTERS) 617 parameters.cookieStorageDirectory = this->cookieStorageDirectory(); 618 #endif 614 619 615 620 #if PLATFORM(IOS) 616 if (!parameters.cookieStorageDirectory.isEmpty()) 617 SandboxExtension::createHandleForReadWriteDirectory(parameters.cookieStorageDirectory, parameters.cookieStorageDirectoryExtensionHandle); 621 String cookieStorageDirectory = this->cookieStorageDirectory(); 622 if (!cookieStorageDirectory.isEmpty()) 623 SandboxExtension::createHandleForReadWriteDirectory(cookieStorageDirectory, parameters.cookieStorageDirectoryExtensionHandle); 618 624 619 625 String containerCachesDirectory = this->webContentCachesDirectory(); … … 1188 1194 } 1189 1195 1196 #if ENABLE(SECCOMP_FILTERS) 1190 1197 String WebProcessPool::cookieStorageDirectory() const 1191 1198 { … … 1193 1200 return m_overrideCookieStorageDirectory; 1194 1201 1195 return platformDefaultCookieStorageDirectory(); 1196 } 1202 // 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. 1203 return emptyString(); 1204 } 1205 #endif 1197 1206 1198 1207 void WebProcessPool::useTestingNetworkSession() -
trunk/Source/WebKit2/UIProcess/WebProcessPool.h
r183562 r184211 402 402 String platformDefaultDiskCacheDirectory() const; 403 403 404 #if ENABLE(SECCOMP_FILTERS) 404 405 String cookieStorageDirectory() const; 405 String platformDefaultCookieStorageDirectory() const; 406 #endif 406 407 407 408 #if PLATFORM(IOS) -
trunk/Source/WebKit2/UIProcess/efl/WebProcessPoolEfl.cpp
r180145 r184211 132 132 } 133 133 134 String WebProcessPool::platformDefaultCookieStorageDirectory() const135 {136 notImplemented();137 return String();138 }139 140 134 void WebProcessPool::setIgnoreTLSErrors(bool ignoreTLSErrors) 141 135 { -
trunk/Source/WebKit2/UIProcess/gtk/WebProcessPoolGtk.cpp
r179409 r184211 149 149 } 150 150 151 String WebProcessPool::platformDefaultCookieStorageDirectory() const152 {153 notImplemented();154 return String();155 }156 157 151 void WebProcessPool::setIgnoreTLSErrors(bool ignoreTLSErrors) 158 152 { -
trunk/Source/WebKit2/WebProcess/cocoa/WebProcessCocoa.mm
r183562 r184211 150 150 #endif 151 151 152 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100 153 setSharedHTTPCookieStorage(parameters.uiProcessCookieStorageIdentifier); 154 #endif 155 152 156 // FIXME: Most of what this function does for cache size gets immediately overridden by setCacheModel(). 153 157 // - memory cache size passed from UI process is always ignored; -
trunk/Tools/ChangeLog
r184209 r184211 1 2015-05-11 Alexey Proskuryakov <ap@apple.com> 2 3 [Mac] Share cookie storage between UI process and secondary processes 4 https://bugs.webkit.org/show_bug.cgi?id=144820 5 rdar://problem/20572830 6 7 Reviewed by Darin Adler. 8 9 * WebKitTestRunner/TestController.cpp: (WTR::TestController::initialize): 10 Don't set cookie storage directory, as it's a no-op, we use an ephemeral session 11 for testing. 12 1 13 2015-05-12 Jake Nielsen <jacob_nielsen@apple.com> 2 14 -
trunk/Tools/WebKitTestRunner/TestController.cpp
r184015 r184211 381 381 WKContextSetApplicationCacheDirectory(m_context.get(), toWK(temporaryFolder + separator + "ApplicationCache").get()); 382 382 WKContextSetDiskCacheDirectory(m_context.get(), toWK(temporaryFolder + separator + "Cache").get()); 383 WKContextSetCookieStorageDirectory(m_context.get(), toWK(temporaryFolder + separator + "Cookies").get());384 383 // Disable icon database to avoid fetching <http://127.0.0.1:8000/favicon.ico> and making tests flaky. 385 384 // Invividual tests can enable it using testRunner.setIconDatabaseEnabled, although it's not currently supported in WebKitTestRunner.
Note:
See TracChangeset
for help on using the changeset viewer.