Diff
Modified: trunk/Source/WebCore/ChangeLog (219544 => 219545)
--- trunk/Source/WebCore/ChangeLog 2017-07-16 06:08:41 UTC (rev 219544)
+++ trunk/Source/WebCore/ChangeLog 2017-07-16 06:57:48 UTC (rev 219545)
@@ -1,3 +1,12 @@
+2017-07-15 Brady Eidson <beid...@apple.com>
+
+ Make sure all CFHTTPCookieStorageRefs we create are scheduled.
+ <rdar://problem/33221110> and https://bugs.webkit.org/show_bug.cgi?id=174513
+
+ Reviewed by Tim Horton.
+
+ * platform/spi/cf/CFNetworkSPI.h:
+
2017-07-15 Myles C. Maxfield <mmaxfi...@apple.com>
Rename RenderStyle::fontSize() to RenderStyle::computedFontPixelSize()
Modified: trunk/Source/WebCore/platform/spi/cf/CFNetworkSPI.h (219544 => 219545)
--- trunk/Source/WebCore/platform/spi/cf/CFNetworkSPI.h 2017-07-16 06:08:41 UTC (rev 219544)
+++ trunk/Source/WebCore/platform/spi/cf/CFNetworkSPI.h 2017-07-16 06:57:48 UTC (rev 219545)
@@ -195,10 +195,11 @@
CFHTTPCookieStorageRef _CFHTTPCookieStorageGetDefault(CFAllocatorRef);
CFHTTPCookieStorageRef CFHTTPCookieStorageCreateFromFile(CFAllocatorRef, CFURLRef, CFHTTPCookieStorageRef);
-
+void CFHTTPCookieStorageScheduleWithRunLoop(CFHTTPCookieStorageRef, CFRunLoopRef, CFStringRef);
void CFHTTPCookieStorageSetCookie(CFHTTPCookieStorageRef, CFHTTPCookieRef);
void CFHTTPCookieStorageSetCookieAcceptPolicy(CFHTTPCookieStorageRef, CFHTTPCookieStorageAcceptPolicy);
CFHTTPCookieStorageAcceptPolicy CFHTTPCookieStorageGetCookieAcceptPolicy(CFHTTPCookieStorageRef);
+
void _CFNetworkSetOverrideSystemProxySettings(CFDictionaryRef);
CFURLCredentialStorageRef CFURLCredentialStorageCreate(CFAllocatorRef);
CFURLCredentialRef CFURLCredentialStorageCopyDefaultCredentialForProtectionSpace(CFURLCredentialStorageRef, CFURLProtectionSpaceRef);
Modified: trunk/Source/WebKit/ChangeLog (219544 => 219545)
--- trunk/Source/WebKit/ChangeLog 2017-07-16 06:08:41 UTC (rev 219544)
+++ trunk/Source/WebKit/ChangeLog 2017-07-16 06:57:48 UTC (rev 219545)
@@ -1,3 +1,38 @@
+2017-07-15 Brady Eidson <beid...@apple.com>
+
+ Make sure all CFHTTPCookieStorageRefs we create are scheduled.
+ <rdar://problem/33221110> and https://bugs.webkit.org/show_bug.cgi?id=174513
+
+ Reviewed by Tim Horton.
+
+ Whenever we create a CFHTTPCookieStorage from identifying data it is unscheduled.
+ We need to schedule it on the appropriate RunLoop.
+
+ This patch also cleans up the creation of the identifying data itself.
+
+ * NetworkProcess/mac/RemoteNetworkingContext.mm:
+ (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
+
+ * Shared/cf/CookieStorageUtilsCF.h: Added.
+ * Shared/cf/CookieStorageUtilsCF.mm: Added.
+ (WebKit::cookieStorageFromIdentifyingData):
+ (WebKit::identifyingDataFromCookieStorage):
+
+ * Shared/mac/ChildProcessMac.mm:
+ (WebKit::ChildProcess::setSharedHTTPCookieStorage):
+
+ * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
+ (WebKit::WebProcessPool::platformInitializeWebProcess):
+ (WebKit::WebProcessPool::platformInitializeNetworkProcess):
+
+ * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
+ (WebKit::WebsiteDataStore::parameters):
+
+ * WebKit.xcodeproj/project.pbxproj:
+
+ * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
+ (WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession):
+
2017-07-15 Wenson Hsieh <wenson_hs...@apple.com>
[iOS WK2] Presenting an action sheet on an image map prevents selection UI from updating
Modified: trunk/Source/WebKit/NetworkProcess/mac/RemoteNetworkingContext.mm (219544 => 219545)
--- trunk/Source/WebKit/NetworkProcess/mac/RemoteNetworkingContext.mm 2017-07-16 06:08:41 UTC (rev 219544)
+++ trunk/Source/WebKit/NetworkProcess/mac/RemoteNetworkingContext.mm 2017-07-16 06:57:48 UTC (rev 219545)
@@ -26,6 +26,7 @@
#import "config.h"
#import "RemoteNetworkingContext.h"
+#import "CookieStorageUtilsCF.h"
#import "LegacyCustomProtocolManager.h"
#import "NetworkProcess.h"
#import "NetworkSession.h"
@@ -119,10 +120,8 @@
SandboxExtension::consumePermanently(parameters.cookieStoragePathExtensionHandle);
RetainPtr<CFHTTPCookieStorageRef> uiProcessCookieStorage;
- if (!parameters.uiProcessCookieStorageIdentifier.isEmpty()) {
- RetainPtr<CFDataRef> cookieStorageData = adoptCF(CFDataCreate(kCFAllocatorDefault, parameters.uiProcessCookieStorageIdentifier.data(), parameters.uiProcessCookieStorageIdentifier.size()));
- uiProcessCookieStorage = adoptCF(CFHTTPCookieStorageCreateFromIdentifyingData(kCFAllocatorDefault, cookieStorageData.get()));
- }
+ if (!parameters.uiProcessCookieStorageIdentifier.isEmpty())
+ uiProcessCookieStorage = cookieStorageFromIdentifyingData(parameters.uiProcessCookieStorageIdentifier);
NetworkStorageSession::ensureSession(parameters.sessionID, base + '.' + String::number(parameters.sessionID.sessionID()), WTFMove(uiProcessCookieStorage));
Added: trunk/Source/WebKit/Shared/cf/CookieStorageUtilsCF.h (0 => 219545)
--- trunk/Source/WebKit/Shared/cf/CookieStorageUtilsCF.h (rev 0)
+++ trunk/Source/WebKit/Shared/cf/CookieStorageUtilsCF.h 2017-07-16 06:57:48 UTC (rev 219545)
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include <WebCore/CFNetworkSPI.h>
+#include <wtf/RetainPtr.h>
+#include <wtf/Vector.h>
+
+namespace WebKit {
+
+RetainPtr<CFHTTPCookieStorageRef> cookieStorageFromIdentifyingData(const Vector<uint8_t>&);
+Vector<uint8_t> identifyingDataFromCookieStorage(CFHTTPCookieStorageRef);
+
+} // namespace WebKit
Added: trunk/Source/WebKit/Shared/cf/CookieStorageUtilsCF.mm (0 => 219545)
--- trunk/Source/WebKit/Shared/cf/CookieStorageUtilsCF.mm (rev 0)
+++ trunk/Source/WebKit/Shared/cf/CookieStorageUtilsCF.mm 2017-07-16 06:57:48 UTC (rev 219545)
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "CookieStorageUtilsCF.h"
+
+#include <WebCore/NSURLConnectionSPI.h>
+
+namespace WebKit {
+
+RetainPtr<CFHTTPCookieStorageRef> cookieStorageFromIdentifyingData(const Vector<uint8_t>& data)
+{
+ ASSERT(!data.isEmpty());
+
+ auto cookieStorageData = adoptCF(CFDataCreate(kCFAllocatorDefault, data.data(), data.size()));
+ auto cookieStorage = adoptCF(CFHTTPCookieStorageCreateFromIdentifyingData(kCFAllocatorDefault, cookieStorageData.get()));
+ ASSERT(cookieStorage);
+
+ CFHTTPCookieStorageScheduleWithRunLoop(cookieStorage.get(), [NSURLConnection resourceLoaderRunLoop], kCFRunLoopCommonModes);
+
+ return cookieStorage;
+}
+
+Vector<uint8_t> identifyingDataFromCookieStorage(CFHTTPCookieStorageRef cookieStorage)
+{
+ Vector<uint8_t> result;
+
+ auto cfData = adoptCF(CFHTTPCookieStorageCreateIdentifyingData(kCFAllocatorDefault, cookieStorage));
+ result.append(CFDataGetBytePtr(cfData.get()), CFDataGetLength(cfData.get()));
+
+ return result;
+}
+
+} // namespace WebKit
Modified: trunk/Source/WebKit/Shared/mac/ChildProcessMac.mm (219544 => 219545)
--- trunk/Source/WebKit/Shared/mac/ChildProcessMac.mm 2017-07-16 06:08:41 UTC (rev 219544)
+++ trunk/Source/WebKit/Shared/mac/ChildProcessMac.mm 2017-07-16 06:57:48 UTC (rev 219545)
@@ -29,6 +29,7 @@
#import "ChildProcess.h"
#import "CodeSigning.h"
+#import "CookieStorageUtilsCF.h"
#import "SandboxInitializationParameters.h"
#import "WebKitSystemInterface.h"
#import <WebCore/CFNetworkSPI.h>
@@ -179,9 +180,7 @@
void ChildProcess::setSharedHTTPCookieStorage(const Vector<uint8_t>& identifier)
{
- 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()];
+ [NSHTTPCookieStorage _setSharedHTTPCookieStorage:adoptNS([[NSHTTPCookieStorage alloc] _initWithCFHTTPCookieStorage:cookieStorageFromIdentifyingData(identifier).get()]).get()];
}
#if USE(APPKIT)
Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm (219544 => 219545)
--- trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm 2017-07-16 06:08:41 UTC (rev 219544)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm 2017-07-16 06:57:48 UTC (rev 219545)
@@ -26,6 +26,7 @@
#import "config.h"
#import "WebProcessPool.h"
+#import "CookieStorageUtilsCF.h"
#import "LegacyCustomProtocolManagerClient.h"
#import "NetworkProcessCreationParameters.h"
#import "NetworkProcessMessages.h"
@@ -237,9 +238,8 @@
parameters.networkATSContext = adoptCF(_CFNetworkCopyATSContext());
#if PLATFORM(MAC)
- RetainPtr<CFDataRef> cookieStorageData = adoptCF(CFHTTPCookieStorageCreateIdentifyingData(kCFAllocatorDefault, [[NSHTTPCookieStorage sharedHTTPCookieStorage] _cookieStorage]));
ASSERT(parameters.uiProcessCookieStorageIdentifier.isEmpty());
- parameters.uiProcessCookieStorageIdentifier.append(CFDataGetBytePtr(cookieStorageData.get()), CFDataGetLength(cookieStorageData.get()));
+ parameters.uiProcessCookieStorageIdentifier = identifyingDataFromCookieStorage([[NSHTTPCookieStorage sharedHTTPCookieStorage] _cookieStorage]);
#endif
#if ENABLE(MEDIA_STREAM)
// Allow microphone access if either preference is set because WebRTC requires microphone access.
@@ -293,9 +293,8 @@
parameters.loadThrottleLatency = Seconds { [defaults integerForKey:WebKitNetworkLoadThrottleLatencyMillisecondsDefaultsKey] / 1000. };
#if PLATFORM(MAC)
- RetainPtr<CFDataRef> cookieStorageData = adoptCF(CFHTTPCookieStorageCreateIdentifyingData(kCFAllocatorDefault, [[NSHTTPCookieStorage sharedHTTPCookieStorage] _cookieStorage]));
ASSERT(parameters.uiProcessCookieStorageIdentifier.isEmpty());
- parameters.uiProcessCookieStorageIdentifier.append(CFDataGetBytePtr(cookieStorageData.get()), CFDataGetLength(cookieStorageData.get()));
+ parameters.uiProcessCookieStorageIdentifier = identifyingDataFromCookieStorage([[NSHTTPCookieStorage sharedHTTPCookieStorage] _cookieStorage]);
#endif
parameters.cookieStoragePartitioningEnabled = cookieStoragePartitioningEnabled();
Modified: trunk/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm (219544 => 219545)
--- trunk/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm 2017-07-16 06:08:41 UTC (rev 219544)
+++ trunk/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm 2017-07-16 06:57:48 UTC (rev 219545)
@@ -26,6 +26,7 @@
#import "config.h"
#import "WebsiteDataStore.h"
+#import "CookieStorageUtilsCF.h"
#import "StorageManager.h"
#import "WebResourceLoadStatisticsStore.h"
#import "WebsiteDataStoreParameters.h"
@@ -63,9 +64,7 @@
auto utf8File = cookieFile.utf8();
auto url = "" (const UInt8 *)utf8File.data(), (CFIndex)utf8File.length(), true));
m_cfCookieStorage = adoptCF(CFHTTPCookieStorageCreateFromFile(kCFAllocatorDefault, url.get(), nullptr));
- auto cfData = adoptCF(CFHTTPCookieStorageCreateIdentifyingData(kCFAllocatorDefault, m_cfCookieStorage.get()));
-
- m_uiProcessCookieStorageIdentifier.append(CFDataGetBytePtr(cfData.get()), CFDataGetLength(cfData.get()));
+ m_uiProcessCookieStorageIdentifier = identifyingDataFromCookieStorage(m_cfCookieStorage.get());
}
parameters.uiProcessCookieStorageIdentifier = m_uiProcessCookieStorageIdentifier;
Modified: trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj (219544 => 219545)
--- trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj 2017-07-16 06:08:41 UTC (rev 219544)
+++ trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj 2017-07-16 06:57:48 UTC (rev 219545)
@@ -919,6 +919,7 @@
51032F19180F73BB00961BB7 /* WebToDatabaseProcessConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 51032F17180F73BB00961BB7 /* WebToDatabaseProcessConnection.h */; };
51032F1D180F791700961BB7 /* DatabaseToWebProcessConnectionMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51032F1B180F791700961BB7 /* DatabaseToWebProcessConnectionMessageReceiver.cpp */; };
51032F1E180F791700961BB7 /* DatabaseToWebProcessConnectionMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 51032F1C180F791700961BB7 /* DatabaseToWebProcessConnectionMessages.h */; };
+ 5104F5A21F19D7D2004CF821 /* CookieStorageUtilsCF.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5104F5A11F19D7CF004CF821 /* CookieStorageUtilsCF.mm */; };
5105236F1C739D42007993CB /* WebIDBConnectionToClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5105236D1C7393E9007993CB /* WebIDBConnectionToClient.cpp */; };
510523701C739D42007993CB /* WebIDBConnectionToClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 5105236E1C7393E9007993CB /* WebIDBConnectionToClient.h */; };
510523741C73D38B007993CB /* WebIDBConnectionToServerMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 510523731C73D37B007993CB /* WebIDBConnectionToServerMessages.h */; };
@@ -3160,6 +3161,7 @@
51032F1A180F74F100961BB7 /* DatabaseToWebProcessConnection.messages.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = DatabaseToWebProcessConnection.messages.in; sourceTree = "<group>"; };
51032F1B180F791700961BB7 /* DatabaseToWebProcessConnectionMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DatabaseToWebProcessConnectionMessageReceiver.cpp; sourceTree = "<group>"; };
51032F1C180F791700961BB7 /* DatabaseToWebProcessConnectionMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DatabaseToWebProcessConnectionMessages.h; sourceTree = "<group>"; };
+ 5104F5A11F19D7CF004CF821 /* CookieStorageUtilsCF.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CookieStorageUtilsCF.mm; sourceTree = "<group>"; };
5105236D1C7393E9007993CB /* WebIDBConnectionToClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebIDBConnectionToClient.cpp; sourceTree = "<group>"; };
5105236E1C7393E9007993CB /* WebIDBConnectionToClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebIDBConnectionToClient.h; sourceTree = "<group>"; };
510523711C73D22B007993CB /* WebIDBConnectionToServer.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebIDBConnectionToServer.messages.in; sourceTree = "<group>"; };
@@ -3284,6 +3286,7 @@
518E8EF716B2091C00E91429 /* AuthenticationManager.mac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AuthenticationManager.mac.mm; sourceTree = "<group>"; };
51933DEB1965EB24008AC3EA /* MenuUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MenuUtilities.h; sourceTree = "<group>"; };
51933DEC1965EB24008AC3EA /* MenuUtilities.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MenuUtilities.mm; sourceTree = "<group>"; };
+ 5194B3861F192FB900FA4708 /* CookieStorageUtilsCF.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CookieStorageUtilsCF.h; sourceTree = "<group>"; };
51A4D5A816CAC4FF000E615E /* StatisticsRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StatisticsRequest.cpp; sourceTree = "<group>"; };
51A555F3128C6C47009ABCEC /* WKContextMenuItem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKContextMenuItem.cpp; sourceTree = "<group>"; };
51A555F4128C6C47009ABCEC /* WKContextMenuItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKContextMenuItem.h; sourceTree = "<group>"; };
@@ -5117,6 +5120,8 @@
children = (
1AAF0C4912B16334008E49E2 /* ArgumentCodersCF.cpp */,
1AAF0C4812B16334008E49E2 /* ArgumentCodersCF.h */,
+ 5194B3861F192FB900FA4708 /* CookieStorageUtilsCF.h */,
+ 5104F5A11F19D7CF004CF821 /* CookieStorageUtilsCF.mm */,
);
path = cf;
sourceTree = "<group>";
@@ -9928,6 +9933,7 @@
935EEBA3127761D3003322B8 /* InjectedBundleBackForwardListItem.cpp in Sources */,
BCEE7DC6128B645D009827DA /* InjectedBundleClient.cpp in Sources */,
1A53C2A21A323004004E8C70 /* InjectedBundleCSSStyleDeclarationHandle.cpp in Sources */,
+ 5104F5A21F19D7D2004CF821 /* CookieStorageUtilsCF.mm in Sources */,
51FA2D7415212DF100C1BA0B /* InjectedBundleDOMWindowExtension.cpp in Sources */,
7CBB811C1AA0F8B1006B1942 /* InjectedBundleFileHandle.cpp in Sources */,
BC498619124D10E200D834E1 /* InjectedBundleHitTestResult.cpp in Sources */,
Modified: trunk/Source/WebKit/WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm (219544 => 219545)
--- trunk/Source/WebKit/WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm 2017-07-16 06:08:41 UTC (rev 219544)
+++ trunk/Source/WebKit/WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm 2017-07-16 06:57:48 UTC (rev 219545)
@@ -26,6 +26,7 @@
#include "config.h"
#include "WebFrameNetworkingContext.h"
+#include "CookieStorageUtilsCF.h"
#include "NetworkSession.h"
#include "SessionTracker.h"
#include "WebCookieManager.h"
@@ -79,8 +80,7 @@
SandboxExtension::consumePermanently(parameters.cookieStoragePathExtensionHandle);
- RetainPtr<CFDataRef> cookieStorageData = adoptCF(CFDataCreate(kCFAllocatorDefault, parameters.uiProcessCookieStorageIdentifier.data(), parameters.uiProcessCookieStorageIdentifier.size()));
- auto uiProcessCookieStorage = adoptCF(CFHTTPCookieStorageCreateFromIdentifyingData(kCFAllocatorDefault, cookieStorageData.get()));
+ RetainPtr<CFHTTPCookieStorageRef> uiProcessCookieStorage = cookieStorageFromIdentifyingData(parameters.uiProcessCookieStorageIdentifier);
NetworkStorageSession::ensureSession(parameters.sessionID, base + '.' + String::number(parameters.sessionID.sessionID()), WTFMove(uiProcessCookieStorage));
Modified: trunk/Tools/ChangeLog (219544 => 219545)
--- trunk/Tools/ChangeLog 2017-07-16 06:08:41 UTC (rev 219544)
+++ trunk/Tools/ChangeLog 2017-07-16 06:57:48 UTC (rev 219545)
@@ -1,3 +1,13 @@
+2017-07-15 Brady Eidson <beid...@apple.com>
+
+ Make sure all CFHTTPCookieStorageRefs we create are scheduled.
+ <rdar://problem/33221110> and https://bugs.webkit.org/show_bug.cgi?id=174513
+
+ Reviewed by Tim Horton.
+
+ * TestWebKitAPI/Tests/WebKit2Cocoa/WKHTTPCookieStore.mm:
+ (TEST): Make this test more reliable by clearing everything beforehand.
+
2017-07-15 David Kilzer <ddkil...@apple.com>
Make it possible to extend check-webkit-style with Apple-internal checkers
Modified: trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKHTTPCookieStore.mm (219544 => 219545)
--- trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKHTTPCookieStore.mm 2017-07-16 06:08:41 UTC (rev 219544)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKHTTPCookieStore.mm 2017-07-16 06:57:48 UTC (rev 219545)
@@ -56,6 +56,13 @@
auto webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600)]);
[webView loadHTMLString:@"Oh hello" baseURL:[NSURL URLWithString:@"http://webkit.org"]];
+ [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:[] {
+ gotFlag = true;
+ }];
+
+ TestWebKitAPI::Util::run(&gotFlag);
+ gotFlag = false;
+
globalCookieStore = [WKWebsiteDataStore defaultDataStore].httpCookieStore;
RetainPtr<CookieObserver> observer1 = adoptNS([[CookieObserver alloc] init]);
RetainPtr<CookieObserver> observer2 = adoptNS([[CookieObserver alloc] init]);