Diff
Modified: tags/Safari-605.1.15.2/Source/WebKit/ChangeLog (225503 => 225504)
--- tags/Safari-605.1.15.2/Source/WebKit/ChangeLog 2017-12-05 00:09:10 UTC (rev 225503)
+++ tags/Safari-605.1.15.2/Source/WebKit/ChangeLog 2017-12-05 00:11:05 UTC (rev 225504)
@@ -1,3 +1,22 @@
+2017-12-04 Jason Marcell <jmarc...@apple.com>
+
+ Cherry-pick r225383. rdar://problem/35709469
+
+ 2017-11-30 Alex Christensen <achristen...@webkit.org>
+
+ REGRESSION (r224791): cookies are shared between ephemeral sessions in the same process pool
+ https://bugs.webkit.org/show_bug.cgi?id=180235
+
+ Reviewed by Joseph Pecoraro.
+
+ In r224791 I assumed that uiProcessCookieStorageIdentifier would be empty in the ephemeral session initialization message.
+ This is not the case. We did not catch this because almost all of our ephemeral session testing uses the legacyPrivateSessionID.
+ I add checks for if the SessionID is ephemeral like we already have in WebFrameNetworkingContext::ensureWebsiteDataStoreSession.
+ I also add an API test that makes sure cookies are not shared between ephemeral sessions the way they are made through the API.
+
+ * NetworkProcess/mac/RemoteNetworkingContext.mm:
+ (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
+
2017-11-29 Zan Dobersek <zdober...@igalia.com>
[CoordGraphics] Rename CoordinatedBuffer to Nicosia::Buffer
Modified: tags/Safari-605.1.15.2/Source/WebKit/NetworkProcess/mac/RemoteNetworkingContext.mm (225503 => 225504)
--- tags/Safari-605.1.15.2/Source/WebKit/NetworkProcess/mac/RemoteNetworkingContext.mm 2017-12-05 00:09:10 UTC (rev 225503)
+++ tags/Safari-605.1.15.2/Source/WebKit/NetworkProcess/mac/RemoteNetworkingContext.mm 2017-12-05 00:11:05 UTC (rev 225504)
@@ -97,7 +97,7 @@
SandboxExtension::consumePermanently(parameters.cookieStoragePathExtensionHandle);
RetainPtr<CFHTTPCookieStorageRef> uiProcessCookieStorage;
- if (!parameters.uiProcessCookieStorageIdentifier.isEmpty())
+ if (!sessionID.isEphemeral() && !parameters.uiProcessCookieStorageIdentifier.isEmpty())
uiProcessCookieStorage = cookieStorageFromIdentifyingData(parameters.uiProcessCookieStorageIdentifier);
NetworkStorageSession::ensureSession(sessionID, base + '.' + String::number(sessionID.sessionID()), WTFMove(uiProcessCookieStorage));
@@ -106,7 +106,7 @@
for (const auto& cookie : parameters.pendingCookies)
session->setCookie(cookie);
- if (!parameters.cacheStorageDirectory.isNull()) {
+ if (!sessionID.isEphemeral() && !parameters.cacheStorageDirectory.isNull()) {
SandboxExtension::consumePermanently(parameters.cacheStorageDirectoryExtensionHandle);
session->setCacheStorageDirectory(WTFMove(parameters.cacheStorageDirectory));
session->setCacheStoragePerOriginQuota(parameters.cacheStoragePerOriginQuota);
Modified: tags/Safari-605.1.15.2/Tools/ChangeLog (225503 => 225504)
--- tags/Safari-605.1.15.2/Tools/ChangeLog 2017-12-05 00:09:10 UTC (rev 225503)
+++ tags/Safari-605.1.15.2/Tools/ChangeLog 2017-12-05 00:11:05 UTC (rev 225504)
@@ -1,3 +1,19 @@
+2017-12-04 Jason Marcell <jmarc...@apple.com>
+
+ Cherry-pick r225383. rdar://problem/35709469
+
+ 2017-11-30 Alex Christensen <achristen...@webkit.org>
+
+ REGRESSION (r224791): cookies are shared between ephemeral sessions in the same process pool
+ https://bugs.webkit.org/show_bug.cgi?id=180235
+
+ Reviewed by Joseph Pecoraro.
+
+ * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
+ * TestWebKitAPI/Tests/WebKitCocoa/CookiePrivateBrowsing.mm: Added.
+ (-[CookiePrivateBrowsingDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
+ (TEST):
+
2017-11-28 Carlos Garcia Campos <cgar...@igalia.com>
WebDriver: add an option to dump test results to a json file
Modified: tags/Safari-605.1.15.2/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj (225503 => 225504)
--- tags/Safari-605.1.15.2/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj 2017-12-05 00:09:10 UTC (rev 225503)
+++ tags/Safari-605.1.15.2/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj 2017-12-05 00:11:05 UTC (rev 225504)
@@ -228,6 +228,7 @@
5C0BF8931DD599BD00B00328 /* IsNavigationActionTrusted.mm in Sources */ = {isa = PBXBuildFile; fileRef = 57F10D921C7E7B3800ECDF30 /* IsNavigationActionTrusted.mm */; };
5C0BF8941DD599C900B00328 /* MenuTypesForMouseEvents.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7A99D9931AD4A29D00373141 /* MenuTypesForMouseEvents.mm */; };
5C0BF8951DD599CD00B00328 /* NavigatorLanguage.mm in Sources */ = {isa = PBXBuildFile; fileRef = E19DB9781B32137C00DB38D4 /* NavigatorLanguage.mm */; };
+ 5C19A5241FD0F60100EEA323 /* CookiePrivateBrowsing.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5C19A5231FD0F32600EEA323 /* CookiePrivateBrowsing.mm */; };
5C2936931D5BF70D00DEAB1E /* CookieAcceptPolicy.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5C2936911D5BF63E00DEAB1E /* CookieAcceptPolicy.mm */; };
5C2936961D5C00ED00DEAB1E /* CookieMessage.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 5C2936941D5BFD1900DEAB1E /* CookieMessage.html */; };
5C4A84951F7EEFFC00ACFC54 /* Configuration.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5C4A84941F7EEFD400ACFC54 /* Configuration.mm */; };
@@ -1362,6 +1363,7 @@
57F56A5B1C7F8A4000F31D7E /* IsNavigationActionTrusted.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = IsNavigationActionTrusted.html; sourceTree = "<group>"; };
5C0BF88C1DD5957400B00328 /* MemoryPressureHandler.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MemoryPressureHandler.mm; sourceTree = "<group>"; };
5C0BF88F1DD5999B00B00328 /* WebViewCanPasteZeroPng.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebViewCanPasteZeroPng.mm; sourceTree = "<group>"; };
+ 5C19A5231FD0F32600EEA323 /* CookiePrivateBrowsing.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CookiePrivateBrowsing.mm; sourceTree = "<group>"; };
5C2936911D5BF63E00DEAB1E /* CookieAcceptPolicy.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CookieAcceptPolicy.mm; sourceTree = "<group>"; };
5C2936941D5BFD1900DEAB1E /* CookieMessage.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = CookieMessage.html; sourceTree = "<group>"; };
5C4A84941F7EEFD400ACFC54 /* Configuration.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = Configuration.mm; sourceTree = "<group>"; };
@@ -2009,6 +2011,7 @@
A14FC5891B89927100D107EB /* ContentFilteringPlugIn.mm */,
5CA1DED81F74A87100E71BD3 /* ContentRuleListNotification.mm */,
5C2936911D5BF63E00DEAB1E /* CookieAcceptPolicy.mm */,
+ 5C19A5231FD0F32600EEA323 /* CookiePrivateBrowsing.mm */,
9B1056411F9045C700D5583F /* CopyHTML.mm */,
9999108A1F393C8B008AD455 /* Copying.mm */,
9B7A37C21F8AEBA5004AA228 /* CopyURL.mm */,
@@ -3262,6 +3265,7 @@
CD0BD0A61F79924D001AB2CF /* ContextMenuImgWithVideo.mm in Sources */,
5C2936931D5BF70D00DEAB1E /* CookieAcceptPolicy.mm in Sources */,
51D1249B1E785425002B2820 /* CookieManager.cpp in Sources */,
+ 5C19A5241FD0F60100EEA323 /* CookiePrivateBrowsing.mm in Sources */,
9B1F6F781F90558400B55744 /* CopyHTML.mm in Sources */,
9999108B1F393C96008AD455 /* Copying.mm in Sources */,
9B7A37C41F8AEBA5004AA228 /* CopyURL.mm in Sources */,
Added: tags/Safari-605.1.15.2/Tools/TestWebKitAPI/Tests/WebKitCocoa/CookiePrivateBrowsing.mm (0 => 225504)
--- tags/Safari-605.1.15.2/Tools/TestWebKitAPI/Tests/WebKitCocoa/CookiePrivateBrowsing.mm (rev 0)
+++ tags/Safari-605.1.15.2/Tools/TestWebKitAPI/Tests/WebKitCocoa/CookiePrivateBrowsing.mm 2017-12-05 00:11:05 UTC (rev 225504)
@@ -0,0 +1,74 @@
+/*
+ * 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"
+
+#import "PlatformUtilities.h"
+#import <WebKit/WKProcessPool.h>
+#import <WebKit/WKProcessPoolPrivate.h>
+#import <WebKit/WKWebView.h>
+#import <WebKit/WKWebViewConfiguration.h>
+#import <wtf/RetainPtr.h>
+
+#if WK_API_ENABLED
+
+static bool receivedAlert;
+
+@interface CookiePrivateBrowsingDelegate : NSObject <WKUIDelegate>
+@end
+
+@implementation CookiePrivateBrowsingDelegate
+
+- (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(void))completionHandler
+{
+ EXPECT_STREQ(message.UTF8String, "old cookie: <>");
+ receivedAlert = true;
+ completionHandler();
+}
+
+@end
+
+TEST(WebKit, CookiePrivateBrowsing)
+{
+ auto delegate = adoptNS([[CookiePrivateBrowsingDelegate alloc] init]);
+
+ auto configuration1 = adoptNS([[WKWebViewConfiguration alloc] init]);
+ auto configuration2 = adoptNS([[WKWebViewConfiguration alloc] init]);
+ [configuration2 setProcessPool:[configuration1 processPool]];
+ [configuration1 setWebsiteDataStore:[WKWebsiteDataStore nonPersistentDataStore]];
+ [configuration2 setWebsiteDataStore:[WKWebsiteDataStore nonPersistentDataStore]];
+ auto view1 = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration1.get()]);
+ auto view2 = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration2.get()]);
+ [view1 setUIDelegate:delegate.get()];
+ [view2 setUIDelegate:delegate.get()];
+ NSString *alertOldCookie = @"<script>var oldCookie = document.cookie; document.cookie = 'key=value'; alert('old cookie: <' + oldCookie + '>');</script>";
+ [view1 loadHTMLString:alertOldCookie baseURL:[NSURL URLWithString:@"http://example.com/"]];
+ TestWebKitAPI::Util::run(&receivedAlert);
+ receivedAlert = false;
+ [view2 loadHTMLString:alertOldCookie baseURL:[NSURL URLWithString:@"http://example.com/"]];
+ TestWebKitAPI::Util::run(&receivedAlert);
+}
+
+#endif