Modified: trunk/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.h (258599 => 258600)
--- trunk/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.h 2020-03-17 21:35:28 UTC (rev 258599)
+++ trunk/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.h 2020-03-17 21:36:41 UTC (rev 258600)
@@ -50,7 +50,7 @@
class NetworkSessionCocoa;
struct SessionWrapper : public CanMakeWeakPtr<SessionWrapper> {
- void initialize(NSURLSessionConfiguration *, NetworkSessionCocoa&, WebCore::StoredCredentialsPolicy);
+ void initialize(NSURLSessionConfiguration *, NetworkSessionCocoa&, WebCore::StoredCredentialsPolicy, NavigatingToAppBoundDomain);
RetainPtr<NSURLSession> session;
RetainPtr<WKNetworkSessionDelegate> delegate;
@@ -68,7 +68,7 @@
NetworkSessionCocoa(NetworkProcess&, NetworkSessionCreationParameters&&);
~NetworkSessionCocoa();
- void initializeEphemeralStatelessSession();
+ void initializeEphemeralStatelessSession(NavigatingToAppBoundDomain);
const String& boundInterfaceIdentifier() const;
const String& sourceApplicationBundleIdentifier() const;
@@ -104,7 +104,7 @@
void clearCredentials() override;
bool shouldLogCookieInformation() const override { return m_shouldLogCookieInformation; }
Seconds loadThrottleLatency() const override { return m_loadThrottleLatency; }
- SessionWrapper& isolatedSession(WebCore::StoredCredentialsPolicy, const WebCore::RegistrableDomain);
+ SessionWrapper& isolatedSession(WebCore::StoredCredentialsPolicy, const WebCore::RegistrableDomain, NavigatingToAppBoundDomain);
SessionWrapper& appBoundSession(WebCore::StoredCredentialsPolicy);
Vector<WebCore::SecurityOriginData> hostNamesWithAlternativeServices() const override;
Modified: trunk/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm (258599 => 258600)
--- trunk/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm 2020-03-17 21:35:28 UTC (rev 258599)
+++ trunk/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm 2020-03-17 21:36:41 UTC (rev 258600)
@@ -62,7 +62,8 @@
#if USE(APPLE_INTERNAL_SDK)
#include <WebKitAdditions/NetworkSessionCocoaAdditions.h>
#else
-#define NETWORK_SESSION_COCOA_ADDITIONS false
+#define NETWORK_SESSION_COCOA_ADDITIONS_1
+#define NETWORK_SESSION_COCOA_ADDITIONS_2 false
#endif
#import "DeviceManagementSoftLink.h"
@@ -1054,8 +1055,10 @@
ALLOW_DEPRECATED_DECLARATIONS_END
}
-void SessionWrapper::initialize(NSURLSessionConfiguration *configuration, NetworkSessionCocoa& networkSession, WebCore::StoredCredentialsPolicy storedCredentialsPolicy)
+void SessionWrapper::initialize(NSURLSessionConfiguration *configuration, NetworkSessionCocoa& networkSession, WebCore::StoredCredentialsPolicy storedCredentialsPolicy, NavigatingToAppBoundDomain isNavigatingToAppBoundDomain)
{
+ UNUSED_PARAM(isNavigatingToAppBoundDomain);
+ NETWORK_SESSION_COCOA_ADDITIONS_1
delegate = adoptNS([[WKNetworkSessionDelegate alloc] initWithNetworkSession:networkSession wrapper:*this withCredentials:storedCredentialsPolicy == WebCore::StoredCredentialsPolicy::Use]);
session = [NSURLSession sessionWithConfiguration:configuration delegate:delegate.get() delegateQueue:[NSOperationQueue mainQueue]];
}
@@ -1152,7 +1155,7 @@
cookieStorage._overrideSessionCookieAcceptPolicy = YES;
#endif
- m_sessionWithCredentialStorage.initialize(configuration, *this, WebCore::StoredCredentialsPolicy::Use);
+ m_sessionWithCredentialStorage.initialize(configuration, *this, WebCore::StoredCredentialsPolicy::Use, NavigatingToAppBoundDomain::No);
LOG(NetworkSession, "Created NetworkSession with cookieAcceptPolicy %lu", configuration.HTTPCookieStorage.cookieAcceptPolicy);
configuration.URLCredentialStorage = nil;
@@ -1161,7 +1164,7 @@
// configuration.HTTPCookieStorage = nil;
// configuration.HTTPCookieAcceptPolicy = NSHTTPCookieAcceptPolicyNever;
- m_sessionWithoutCredentialStorage.initialize(configuration, *this, WebCore::StoredCredentialsPolicy::DoNotUse);
+ m_sessionWithoutCredentialStorage.initialize(configuration, *this, WebCore::StoredCredentialsPolicy::DoNotUse, NavigatingToAppBoundDomain::No);
m_deviceManagementRestrictionsEnabled = parameters.deviceManagementRestrictionsEnabled;
m_allLoadsBlockedByDeviceManagementRestrictionsForTesting = parameters.allLoadsBlockedByDeviceManagementRestrictionsForTesting;
@@ -1183,7 +1186,7 @@
NetworkSessionCocoa::~NetworkSessionCocoa() = default;
-void NetworkSessionCocoa::initializeEphemeralStatelessSession()
+void NetworkSessionCocoa::initializeEphemeralStatelessSession(NavigatingToAppBoundDomain isNavigatingToAppBoundDomain)
{
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration ephemeralSessionConfiguration];
NSURLSessionConfiguration *existingConfiguration = m_sessionWithoutCredentialStorage.session.get().configuration;
@@ -1201,7 +1204,7 @@
configuration._CTDataConnectionServiceType = existingConfiguration._CTDataConnectionServiceType;
#endif
- m_ephemeralStatelessSession.initialize(configuration, *this, WebCore::StoredCredentialsPolicy::EphemeralStateless);
+ m_ephemeralStatelessSession.initialize(configuration, *this, WebCore::StoredCredentialsPolicy::EphemeralStateless, isNavigatingToAppBoundDomain);
}
SessionWrapper& NetworkSessionCocoa::sessionWrapperForTask(const WebCore::ResourceRequest& request, WebCore::StoredCredentialsPolicy storedCredentialsPolicy, NavigatingToAppBoundDomain isNavigatingToAppBoundDomain)
@@ -1210,13 +1213,13 @@
if (auto* storageSession = networkStorageSession()) {
auto firstParty = WebCore::RegistrableDomain(request.firstPartyForCookies());
if (storageSession->shouldBlockThirdPartyCookiesButKeepFirstPartyCookiesFor(firstParty))
- return isolatedSession(storedCredentialsPolicy, firstParty);
+ return isolatedSession(storedCredentialsPolicy, firstParty, isNavigatingToAppBoundDomain);
} else
ASSERT_NOT_REACHED();
#endif
if (isNavigatingToAppBoundDomain == NavigatingToAppBoundDomain::Yes) {
- if (m_isInAppBrowserPrivacyEnabled || NETWORK_SESSION_COCOA_ADDITIONS)
+ if (m_isInAppBrowserPrivacyEnabled || NETWORK_SESSION_COCOA_ADDITIONS_2)
return appBoundSession(storedCredentialsPolicy);
}
@@ -1227,7 +1230,7 @@
return m_sessionWithoutCredentialStorage;
case WebCore::StoredCredentialsPolicy::EphemeralStateless:
if (!m_ephemeralStatelessSession.session)
- initializeEphemeralStatelessSession();
+ initializeEphemeralStatelessSession(NavigatingToAppBoundDomain::No);
return m_ephemeralStatelessSession;
}
}
@@ -1236,8 +1239,8 @@
{
if (!m_appBoundSession) {
m_appBoundSession = makeUnique<IsolatedSession>();
- m_appBoundSession->sessionWithCredentialStorage.initialize(m_sessionWithCredentialStorage.session.get().configuration, *this, WebCore::StoredCredentialsPolicy::Use);
- m_appBoundSession->sessionWithoutCredentialStorage.initialize(m_sessionWithoutCredentialStorage.session.get().configuration, *this, WebCore::StoredCredentialsPolicy::DoNotUse);
+ m_appBoundSession->sessionWithCredentialStorage.initialize(m_sessionWithCredentialStorage.session.get().configuration, *this, WebCore::StoredCredentialsPolicy::Use, NavigatingToAppBoundDomain::Yes);
+ m_appBoundSession->sessionWithoutCredentialStorage.initialize(m_sessionWithoutCredentialStorage.session.get().configuration, *this, WebCore::StoredCredentialsPolicy::DoNotUse, NavigatingToAppBoundDomain::Yes);
}
auto& sessionWrapper = [&] (auto storedCredentialsPolicy) -> SessionWrapper& {
@@ -1250,7 +1253,7 @@
return m_appBoundSession->sessionWithoutCredentialStorage;
case WebCore::StoredCredentialsPolicy::EphemeralStateless:
if (!m_ephemeralStatelessSession.session)
- initializeEphemeralStatelessSession();
+ initializeEphemeralStatelessSession(NavigatingToAppBoundDomain::Yes);
return m_ephemeralStatelessSession;
}
} (storedCredentialsPolicy);
@@ -1258,12 +1261,12 @@
return sessionWrapper;
}
-SessionWrapper& NetworkSessionCocoa::isolatedSession(WebCore::StoredCredentialsPolicy storedCredentialsPolicy, const WebCore::RegistrableDomain firstPartyDomain)
+SessionWrapper& NetworkSessionCocoa::isolatedSession(WebCore::StoredCredentialsPolicy storedCredentialsPolicy, const WebCore::RegistrableDomain firstPartyDomain, NavigatingToAppBoundDomain isNavigatingToAppBoundDomain)
{
- auto& entry = m_isolatedSessions.ensure(firstPartyDomain, [this] {
+ auto& entry = m_isolatedSessions.ensure(firstPartyDomain, [this, isNavigatingToAppBoundDomain] {
auto newEntry = makeUnique<IsolatedSession>();
- newEntry->sessionWithCredentialStorage.initialize(m_sessionWithCredentialStorage.session.get().configuration, *this, WebCore::StoredCredentialsPolicy::Use);
- newEntry->sessionWithoutCredentialStorage.initialize(m_sessionWithoutCredentialStorage.session.get().configuration, *this, WebCore::StoredCredentialsPolicy::DoNotUse);
+ newEntry->sessionWithCredentialStorage.initialize(m_sessionWithCredentialStorage.session.get().configuration, *this, WebCore::StoredCredentialsPolicy::Use, isNavigatingToAppBoundDomain);
+ newEntry->sessionWithoutCredentialStorage.initialize(m_sessionWithoutCredentialStorage.session.get().configuration, *this, WebCore::StoredCredentialsPolicy::DoNotUse, isNavigatingToAppBoundDomain);
return newEntry;
}).iterator->value;
@@ -1279,7 +1282,7 @@
return entry->sessionWithoutCredentialStorage;
case WebCore::StoredCredentialsPolicy::EphemeralStateless:
if (!m_ephemeralStatelessSession.session)
- initializeEphemeralStatelessSession();
+ initializeEphemeralStatelessSession(isNavigatingToAppBoundDomain);
return m_ephemeralStatelessSession;
}
} (storedCredentialsPolicy);