Diff
Modified: trunk/Source/WebKit/ChangeLog (246568 => 246569)
--- trunk/Source/WebKit/ChangeLog 2019-06-18 21:30:18 UTC (rev 246568)
+++ trunk/Source/WebKit/ChangeLog 2019-06-18 21:40:27 UTC (rev 246569)
@@ -1,3 +1,36 @@
+2019-06-18 Alex Christensen <achristen...@webkit.org>
+
+ NetworkSession::networkStorageSession can return null
+ https://bugs.webkit.org/show_bug.cgi?id=198947
+ <rdar://problem/51394449>
+
+ Reviewed by Youenn Fablet.
+
+ We are seeing evidence of crashes from the map owning NetworkSessions and the map owning NetworkStorageSessions becoming out of sync
+ because NetworkSession is refcounted but NetworkStorageSession is not. I started the complete fix in https://bugs.webkit.org/show_bug.cgi?id=194926
+ but for now let's add less risky null checks to prevent fallout.
+
+ * NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp:
+ (WebKit::ResourceLoadStatisticsStore::updateClientSideCookiesAgeCap):
+ * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
+ (WebKit::WebResourceLoadStatisticsStore::hasStorageAccessForFrame):
+ (WebKit::WebResourceLoadStatisticsStore::callHasStorageAccessForFrameHandler):
+ (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess):
+ (WebKit::WebResourceLoadStatisticsStore::removeAllStorageAccess):
+ (WebKit::WebResourceLoadStatisticsStore::setCacheMaxAgeCap):
+ (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler):
+ (WebKit::WebResourceLoadStatisticsStore::removePrevalentDomains):
+ * NetworkProcess/NetworkProcess.cpp:
+ (WebKit::NetworkProcess::initializeNetworkProcess):
+ * NetworkProcess/NetworkSession.cpp:
+ (WebKit::NetworkSession::networkStorageSession const):
+ * NetworkProcess/NetworkSession.h:
+ * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
+ (WebKit::NetworkDataTaskCocoa::applyCookieBlockingPolicy):
+ (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
+ (WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
+ (WebKit::NetworkDataTaskCocoa::tryPasswordBasedAuthentication):
+
2019-06-18 Brady Eidson <beid...@apple.com>
Handle NSProgress calling our cancellation handler on background threads (and calling it more than once).
Modified: trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp (246568 => 246569)
--- trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp 2019-06-18 21:30:18 UTC (rev 246568)
+++ trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp 2019-06-18 21:40:27 UTC (rev 246569)
@@ -383,8 +383,10 @@
#if ENABLE(RESOURCE_LOAD_STATISTICS)
RunLoop::main().dispatch([store = makeRef(m_store), seconds = m_parameters.clientSideCookiesAgeCapTime] () {
- if (auto* networkSession = store->networkSession())
- networkSession->networkStorageSession().setAgeCapForClientSideCookies(seconds);
+ if (auto* networkSession = store->networkSession()) {
+ if (auto* storageSession = networkSession->networkStorageSession())
+ storageSession->setAgeCapForClientSideCookies(seconds);
+ }
});
#endif
}
Modified: trunk/Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp (246568 => 246569)
--- trunk/Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp 2019-06-18 21:30:18 UTC (rev 246568)
+++ trunk/Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp 2019-06-18 21:40:27 UTC (rev 246569)
@@ -300,7 +300,11 @@
bool WebResourceLoadStatisticsStore::hasStorageAccessForFrame(const RegistrableDomain& resourceDomain, const RegistrableDomain& firstPartyDomain, uint64_t frameID, PageIdentifier pageID)
{
- return m_networkSession ? m_networkSession->networkStorageSession().hasStorageAccess(resourceDomain, firstPartyDomain, frameID, pageID) : false;
+ if (m_networkSession) {
+ if (auto* storageSession = m_networkSession->networkStorageSession())
+ return storageSession->hasStorageAccess(resourceDomain, firstPartyDomain, frameID, pageID);
+ }
+ return false;
}
void WebResourceLoadStatisticsStore::callHasStorageAccessForFrameHandler(const RegistrableDomain& resourceDomain, const RegistrableDomain& firstPartyDomain, uint64_t frameID, PageIdentifier pageID, CompletionHandler<void(bool hasAccess)>&& callback)
@@ -308,8 +312,10 @@
ASSERT(RunLoop::isMain());
if (m_networkSession) {
- callback(m_networkSession->networkStorageSession().hasStorageAccess(resourceDomain, firstPartyDomain, frameID, pageID));
- return;
+ if (auto* storageSession = m_networkSession->networkStorageSession()) {
+ callback(storageSession->hasStorageAccess(resourceDomain, firstPartyDomain, frameID, pageID));
+ return;
+ }
}
callback(false);
@@ -401,9 +407,11 @@
bool isStorageGranted = false;
if (m_networkSession) {
- m_networkSession->networkStorageSession().grantStorageAccess(resourceDomain, firstPartyDomain, frameID, pageID);
- ASSERT(m_networkSession->networkStorageSession().hasStorageAccess(resourceDomain, firstPartyDomain, frameID, pageID));
- isStorageGranted = true;
+ if (auto* storageSession = m_networkSession->networkStorageSession()) {
+ storageSession->grantStorageAccess(resourceDomain, firstPartyDomain, frameID, pageID);
+ ASSERT(storageSession->hasStorageAccess(resourceDomain, firstPartyDomain, frameID, pageID));
+ isStorageGranted = true;
+ }
}
return isStorageGranted ? StorageAccessWasGranted::Yes : StorageAccessWasGranted::No;
@@ -431,8 +439,10 @@
{
ASSERT(RunLoop::isMain());
- if (m_networkSession)
- m_networkSession->networkStorageSession().removeAllStorageAccess();
+ if (m_networkSession) {
+ if (auto* storageSession = m_networkSession->networkStorageSession())
+ storageSession->removeAllStorageAccess();
+ }
completionHandler();
}
@@ -936,8 +946,10 @@
ASSERT(RunLoop::isMain());
ASSERT(seconds >= 0_s);
- if (m_networkSession)
- m_networkSession->networkStorageSession().setCacheMaxAgeCapForPrevalentResources(seconds);
+ if (m_networkSession) {
+ if (auto* storageSession = m_networkSession->networkStorageSession())
+ storageSession->setCacheMaxAgeCapForPrevalentResources(seconds);
+ }
completionHandler();
}
@@ -946,8 +958,10 @@
{
ASSERT(RunLoop::isMain());
- if (m_networkSession)
- m_networkSession->networkStorageSession().setPrevalentDomainsToBlockCookiesFor(domainsToBlock);
+ if (m_networkSession) {
+ if (auto* storageSession = m_networkSession->networkStorageSession())
+ storageSession->setPrevalentDomainsToBlockCookiesFor(domainsToBlock);
+ }
completionHandler();
}
@@ -954,8 +968,10 @@
void WebResourceLoadStatisticsStore::removePrevalentDomains(const Vector<RegistrableDomain>& domains)
{
- if (m_networkSession)
- m_networkSession->networkStorageSession().removePrevalentDomains(domains);
+ if (m_networkSession) {
+ if (auto* storageSession = m_networkSession->networkStorageSession())
+ storageSession->removePrevalentDomains(domains);
+ }
}
void WebResourceLoadStatisticsStore::callRemoveDomainsHandler(const Vector<RegistrableDomain>& domains)
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp (246568 => 246569)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp 2019-06-18 21:30:18 UTC (rev 246568)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp 2019-06-18 21:40:27 UTC (rev 246569)
@@ -335,8 +335,9 @@
initializeStorageQuota(parameters.defaultDataStoreParameters);
auto* defaultSession = networkSession(PAL::SessionID::defaultSessionID());
+ auto* defaultStorageSession = defaultSession->networkStorageSession();
for (const auto& cookie : parameters.defaultDataStoreParameters.pendingCookies)
- defaultSession->networkStorageSession().setCookie(cookie);
+ defaultStorageSession->setCookie(cookie);
for (auto& supplement : m_supplements.values())
supplement->initialize(parameters);
Modified: trunk/Source/WebKit/NetworkProcess/NetworkSession.cpp (246568 => 246569)
--- trunk/Source/WebKit/NetworkProcess/NetworkSession.cpp 2019-06-18 21:30:18 UTC (rev 246568)
+++ trunk/Source/WebKit/NetworkProcess/NetworkSession.cpp 2019-06-18 21:40:27 UTC (rev 246569)
@@ -68,11 +68,13 @@
#endif
}
-NetworkStorageSession& NetworkSession::networkStorageSession() const
+NetworkStorageSession* NetworkSession::networkStorageSession() const
{
+ // FIXME: https://bugs.webkit.org/show_bug.cgi?id=194926 NetworkSession should own NetworkStorageSession
+ // instead of having separate maps with the same key and different management.
auto* storageSession = m_networkProcess->storageSession(m_sessionID);
- RELEASE_ASSERT(storageSession);
- return *storageSession;
+ ASSERT(storageSession);
+ return storageSession;
}
NetworkSession::NetworkSession(NetworkProcess& networkProcess, PAL::SessionID sessionID, const String& localStorageDirectory, SandboxExtension::Handle& handle)
Modified: trunk/Source/WebKit/NetworkProcess/NetworkSession.h (246568 => 246569)
--- trunk/Source/WebKit/NetworkProcess/NetworkSession.h 2019-06-18 21:30:18 UTC (rev 246568)
+++ trunk/Source/WebKit/NetworkProcess/NetworkSession.h 2019-06-18 21:40:27 UTC (rev 246569)
@@ -72,7 +72,7 @@
PAL::SessionID sessionID() const { return m_sessionID; }
NetworkProcess& networkProcess() { return m_networkProcess; }
- WebCore::NetworkStorageSession& networkStorageSession() const;
+ WebCore::NetworkStorageSession* networkStorageSession() const;
void registerNetworkDataTask(NetworkDataTask& task) { m_dataTaskSet.add(&task); }
void unregisterNetworkDataTask(NetworkDataTask& task) { m_dataTaskSet.remove(&task); }
Modified: trunk/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm (246568 => 246569)
--- trunk/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm 2019-06-18 21:30:18 UTC (rev 246568)
+++ trunk/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm 2019-06-18 21:40:27 UTC (rev 246569)
@@ -138,9 +138,15 @@
if (shouldBlock == m_hasBeenSetToUseStatelessCookieStorage)
return;
- NSHTTPCookieStorage *storage = shouldBlock ? statelessCookieStorage() : m_session->networkStorageSession().nsCookieStorage();
- [m_task _setExplicitCookieStorage:storage._cookieStorage];
- m_hasBeenSetToUseStatelessCookieStorage = shouldBlock;
+ NSHTTPCookieStorage *storage = nil;
+ if (shouldBlock)
+ storage = statelessCookieStorage();
+ else if (auto* storageSession = m_session->networkStorageSession())
+ storage = storageSession->nsCookieStorage();
+ if (storage) {
+ [m_task _setExplicitCookieStorage:storage._cookieStorage];
+ m_hasBeenSetToUseStatelessCookieStorage = shouldBlock;
+ }
}
#endif
@@ -180,10 +186,12 @@
url = ""
#if USE(CREDENTIAL_STORAGE_WITH_NETWORK_SESSION)
- if (m_user.isEmpty() && m_password.isEmpty())
- m_initialCredential = m_session->networkStorageSession().credentialStorage().get(m_partition, url);
- else
- m_session->networkStorageSession().credentialStorage().set(m_partition, WebCore::Credential(m_user, m_password, WebCore::CredentialPersistenceNone), url);
+ if (auto* storageSession = m_session->networkStorageSession()) {
+ if (m_user.isEmpty() && m_password.isEmpty())
+ m_initialCredential = storageSession->credentialStorage().get(m_partition, url);
+ else
+ storageSession->credentialStorage().set(m_partition, WebCore::Credential(m_user, m_password, WebCore::CredentialPersistenceNone), url);
+ }
#endif
}
@@ -196,7 +204,8 @@
bool shouldBlockCookies = false;
#if ENABLE(RESOURCE_LOAD_STATISTICS)
- shouldBlockCookies = storedCredentialsPolicy == WebCore::StoredCredentialsPolicy::EphemeralStatelessCookieless || session.networkStorageSession().shouldBlockCookies(request, frameID, pageID);
+ shouldBlockCookies = storedCredentialsPolicy == WebCore::StoredCredentialsPolicy::EphemeralStatelessCookieless
+ || (session.networkStorageSession() && session.networkStorageSession()->shouldBlockCookies(request, frameID, pageID));
#endif
restrictRequestReferrerToOriginIfNeeded(request, shouldBlockCookies);
@@ -351,7 +360,7 @@
// Only consider applying authentication credentials if this is actually a redirect and the redirect
// URL didn't include credentials of its own.
if (m_user.isEmpty() && m_password.isEmpty() && !redirectResponse.isNull()) {
- auto credential = m_session->networkStorageSession().credentialStorage().get(m_partition, request.url());
+ auto credential = m_session->networkStorageSession() ? m_session->networkStorageSession()->credentialStorage().get(m_partition, request.url()) : WebCore::Credential();
if (!credential.isEmpty()) {
m_initialCredential = credential;
@@ -366,7 +375,8 @@
request.setFirstPartyForCookies(request.url());
#if ENABLE(RESOURCE_LOAD_STATISTICS)
- bool shouldBlockCookies = m_storedCredentialsPolicy == WebCore::StoredCredentialsPolicy::EphemeralStatelessCookieless || m_session->networkStorageSession().shouldBlockCookies(request, m_frameID, m_pageID);
+ bool shouldBlockCookies = m_storedCredentialsPolicy == WebCore::StoredCredentialsPolicy::EphemeralStatelessCookieless
+ || (m_session->networkStorageSession() && m_session->networkStorageSession()->shouldBlockCookies(request, m_frameID, m_pageID));
#if !RELEASE_LOG_DISABLED
if (m_session->shouldLogCookieInformation())
RELEASE_LOG_IF(isAlwaysOnLoggingAllowed(), Network, "%p - NetworkDataTaskCocoa::willPerformHTTPRedirection::logCookieInformation: pageID = %llu, frameID = %llu, taskID = %lu: %s cookies for redirect URL %s", this, m_pageID.toUInt64(), m_frameID, (unsigned long)[m_task taskIdentifier], (shouldBlockCookies ? "Blocking" : "Not blocking"), request.url().string().utf8().data());
@@ -397,7 +407,7 @@
return completionHandler({ });
if (!request.isNull()) {
#if ENABLE(RESOURCE_LOAD_STATISTICS)
- bool shouldBlockCookies = m_session->networkStorageSession().shouldBlockCookies(request, m_frameID, m_pageID);
+ bool shouldBlockCookies = m_session->networkStorageSession() && m_session->networkStorageSession()->shouldBlockCookies(request, m_frameID, m_pageID);
#else
bool shouldBlockCookies = false;
#endif
@@ -445,16 +455,18 @@
// The stored credential wasn't accepted, stop using it.
// There is a race condition here, since a different credential might have already been stored by another ResourceHandle,
// but the observable effect should be very minor, if any.
- m_session->networkStorageSession().credentialStorage().remove(m_partition, challenge.protectionSpace());
+ if (auto* storageSession = m_session->networkStorageSession())
+ storageSession->credentialStorage().remove(m_partition, challenge.protectionSpace());
}
if (!challenge.previousFailureCount()) {
- auto credential = m_session->networkStorageSession().credentialStorage().get(m_partition, challenge.protectionSpace());
+ auto credential = m_session->networkStorageSession() ? m_session->networkStorageSession()->credentialStorage().get(m_partition, challenge.protectionSpace()) : WebCore::Credential();
if (!credential.isEmpty() && credential != m_initialCredential) {
ASSERT(credential.persistence() == WebCore::CredentialPersistenceNone);
if (challenge.failureResponse().httpStatusCode() == 401) {
// Store the credential back, possibly adding it as a default for this directory.
- m_session->networkStorageSession().credentialStorage().set(m_partition, credential, challenge.protectionSpace(), challenge.failureResponse().url());
+ if (auto* storageSession = m_session->networkStorageSession())
+ storageSession->credentialStorage().set(m_partition, credential, challenge.protectionSpace(), challenge.failureResponse().url());
}
completionHandler(AuthenticationChallengeDisposition::UseCredential, credential);
return true;
Modified: trunk/Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.cpp (246568 => 246569)
--- trunk/Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.cpp 2019-06-18 21:30:18 UTC (rev 246568)
+++ trunk/Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.cpp 2019-06-18 21:40:27 UTC (rev 246569)
@@ -59,9 +59,9 @@
request.removeCredentials();
if (m_user.isEmpty() && m_password.isEmpty())
- m_initialCredential = m_session->networkStorageSession().credentialStorage().get(m_partition, request.url());
+ m_initialCredential = m_session->networkStorageSession()->credentialStorage().get(m_partition, request.url());
else
- m_session->networkStorageSession().credentialStorage().set(m_partition, Credential(m_user, m_password, CredentialPersistenceNone), request.url());
+ m_session->networkStorageSession()->credentialStorage().set(m_partition, Credential(m_user, m_password, CredentialPersistenceNone), request.url());
}
}
@@ -287,7 +287,7 @@
// Only consider applying authentication credentials if this is actually a redirect and the redirect
// URL didn't include credentials of its own.
if (m_user.isEmpty() && m_password.isEmpty()) {
- auto credential = m_session->networkStorageSession().credentialStorage().get(m_partition, request.url());
+ auto credential = m_session->networkStorageSession()->credentialStorage().get(m_partition, request.url());
if (!credential.isEmpty()) {
m_initialCredential = credential;
didChangeCredential = true;
@@ -337,16 +337,16 @@
// The stored credential wasn't accepted, stop using it. There is a race condition
// here, since a different credential might have already been stored by another
// NetworkDataTask, but the observable effect should be very minor, if any.
- m_session->networkStorageSession().credentialStorage().remove(m_partition, challenge.protectionSpace());
+ m_session->networkStorageSession()->credentialStorage().remove(m_partition, challenge.protectionSpace());
}
if (!challenge.previousFailureCount()) {
- auto credential = m_session->networkStorageSession().credentialStorage().get(m_partition, challenge.protectionSpace());
+ auto credential = m_session->networkStorageSession()->credentialStorage().get(m_partition, challenge.protectionSpace());
if (!credential.isEmpty() && credential != m_initialCredential) {
ASSERT(credential.persistence() == CredentialPersistenceNone);
if (challenge.failureResponse().isUnauthorized()) {
// Store the credential back, possibly adding it as a default for this directory.
- m_session->networkStorageSession().credentialStorage().set(m_partition, credential, challenge.protectionSpace(), challenge.failureResponse().url());
+ m_session->networkStorageSession()->credentialStorage().set(m_partition, credential, challenge.protectionSpace(), challenge.failureResponse().url());
}
restartWithCredential(challenge.protectionSpace(), credential);
return;
@@ -367,7 +367,7 @@
if (disposition == AuthenticationChallengeDisposition::UseCredential && !credential.isEmpty()) {
if (m_storedCredentialsPolicy == StoredCredentialsPolicy::Use) {
if (credential.persistence() == CredentialPersistenceForSession || credential.persistence() == CredentialPersistencePermanent)
- m_session->networkStorageSession().credentialStorage().set(m_partition, credential, challenge.protectionSpace(), challenge.failureResponse().url());
+ m_session->networkStorageSession()->credentialStorage().set(m_partition, credential, challenge.protectionSpace(), challenge.failureResponse().url());
}
restartWithCredential(challenge.protectionSpace(), credential);
@@ -444,10 +444,10 @@
void NetworkDataTaskCurl::appendCookieHeader(WebCore::ResourceRequest& request)
{
- const auto& storageSession = m_session->networkStorageSession();
- const auto& cookieJar = storageSession.cookieStorage();
+ const auto* storageSession = m_session->networkStorageSession();
+ const auto& cookieJar = storageSession->cookieStorage();
auto includeSecureCookies = request.url().protocolIs("https") ? IncludeSecureCookies::Yes : IncludeSecureCookies::No;
- auto cookieHeaderField = cookieJar.cookieRequestHeaderFieldValue(storageSession, request.firstPartyForCookies(), WebCore::SameSiteInfo::create(request), request.url(), WTF::nullopt, WTF::nullopt, includeSecureCookies).first;
+ auto cookieHeaderField = cookieJar.cookieRequestHeaderFieldValue(*storageSession, request.firstPartyForCookies(), WebCore::SameSiteInfo::create(request), request.url(), WTF::nullopt, WTF::nullopt, includeSecureCookies).first;
if (!cookieHeaderField.isEmpty())
request.addHTTPHeaderField(HTTPHeaderName::Cookie, cookieHeaderField);
}
@@ -456,12 +456,12 @@
{
static const auto setCookieHeader = "set-cookie: ";
- const auto& storageSession = m_session->networkStorageSession();
- const auto& cookieJar = storageSession.cookieStorage();
+ const auto* storageSession = m_session->networkStorageSession();
+ const auto& cookieJar = storageSession->cookieStorage();
for (auto header : response.headers) {
if (header.startsWithIgnoringASCIICase(setCookieHeader)) {
String setCookieString = header.right(header.length() - strlen(setCookieHeader));
- cookieJar.setCookiesFromHTTPResponse(storageSession, request.firstPartyForCookies(), response.url, setCookieString);
+ cookieJar.setCookiesFromHTTPResponse(*storageSession, request.firstPartyForCookies(), response.url, setCookieString);
}
}
}
Modified: trunk/Source/WebKit/NetworkProcess/curl/NetworkSessionCurl.cpp (246568 => 246569)
--- trunk/Source/WebKit/NetworkProcess/curl/NetworkSessionCurl.cpp 2019-06-18 21:30:18 UTC (rev 246568)
+++ trunk/Source/WebKit/NetworkProcess/curl/NetworkSessionCurl.cpp 2019-06-18 21:40:27 UTC (rev 246569)
@@ -41,8 +41,8 @@
: NetworkSession(networkProcess, parameters.sessionID, parameters.localStorageDirectory, parameters.localStorageDirectoryExtensionHandle)
{
if (!parameters.cookiePersistentStorageFile.isEmpty())
- networkStorageSession().setCookieDatabase(makeUniqueRef<CookieJarDB>(parameters.cookiePersistentStorageFile));
- networkStorageSession().setProxySettings(WTFMove(parameters.proxySettings));
+ networkStorageSession()->setCookieDatabase(makeUniqueRef<CookieJarDB>(parameters.cookiePersistentStorageFile));
+ networkStorageSession()->setProxySettings(WTFMove(parameters.proxySettings));
}
NetworkSessionCurl::~NetworkSessionCurl()
Modified: trunk/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp (246568 => 246569)
--- trunk/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp 2019-06-18 21:30:18 UTC (rev 246568)
+++ trunk/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp 2019-06-18 21:40:27 UTC (rev 246569)
@@ -68,9 +68,9 @@
request.removeCredentials();
if (m_user.isEmpty() && m_password.isEmpty())
- m_initialCredential = m_session->networkStorageSession().credentialStorage().get(m_partition, request.url());
+ m_initialCredential = m_session->networkStorageSession()->credentialStorage().get(m_partition, request.url());
else
- m_session->networkStorageSession().credentialStorage().set(m_partition, Credential(m_user, m_password, CredentialPersistenceNone), request.url());
+ m_session->networkStorageSession()->credentialStorage().set(m_partition, Credential(m_user, m_password, CredentialPersistenceNone), request.url());
}
applyAuthenticationToRequest(request);
}
@@ -470,17 +470,17 @@
// The stored credential wasn't accepted, stop using it. There is a race condition
// here, since a different credential might have already been stored by another
// NetworkDataTask, but the observable effect should be very minor, if any.
- m_session->networkStorageSession().credentialStorage().remove(m_partition, challenge.protectionSpace());
+ m_session->networkStorageSession()->credentialStorage().remove(m_partition, challenge.protectionSpace());
}
if (!challenge.previousFailureCount()) {
- auto credential = m_session->networkStorageSession().credentialStorage().get(m_partition, challenge.protectionSpace());
+ auto credential = m_session->networkStorageSession()->credentialStorage().get(m_partition, challenge.protectionSpace());
if (!credential.isEmpty() && credential != m_initialCredential) {
ASSERT(credential.persistence() == CredentialPersistenceNone);
if (isAuthenticationFailureStatusCode(challenge.failureResponse().httpStatusCode())) {
// Store the credential back, possibly adding it as a default for this directory.
- m_session->networkStorageSession().credentialStorage().set(m_partition, credential, challenge.protectionSpace(), challenge.failureResponse().url());
+ m_session->networkStorageSession()->credentialStorage().set(m_partition, credential, challenge.protectionSpace(), challenge.failureResponse().url());
}
soup_auth_authenticate(challenge.soupAuth(), credential.user().utf8().data(), credential.password().utf8().data());
return;
@@ -496,7 +496,7 @@
// will become session credentials after the first use.
if (m_storedCredentialsPolicy == StoredCredentialsPolicy::Use) {
auto protectionSpace = challenge.protectionSpace();
- m_session->networkStorageSession().getCredentialFromPersistentStorage(protectionSpace, m_cancellable.get(),
+ m_session->networkStorageSession()->getCredentialFromPersistentStorage(protectionSpace, m_cancellable.get(),
[this, protectedThis = makeRef(*this), authChallenge = WTFMove(challenge)] (Credential&& credential) mutable {
if (m_state == State::Canceling || m_state == State::Completed || !m_client) {
clearRequest();
@@ -531,7 +531,7 @@
// we place the credentials in the store even though libsoup will never fire the authenticate signal again for
// this protection space.
if (credential.persistence() == CredentialPersistenceForSession || credential.persistence() == CredentialPersistencePermanent)
- m_session->networkStorageSession().credentialStorage().set(m_partition, credential, challenge.protectionSpace(), challenge.failureResponse().url());
+ m_session->networkStorageSession()->credentialStorage().set(m_partition, credential, challenge.protectionSpace(), challenge.failureResponse().url());
if (credential.persistence() == CredentialPersistencePermanent) {
m_protectionSpaceForPersistentStorage = challenge.protectionSpace();
@@ -663,7 +663,7 @@
request.clearHTTPOrigin();
} else if (url.protocolIsInHTTPFamily() && m_storedCredentialsPolicy == StoredCredentialsPolicy::Use) {
if (m_user.isEmpty() && m_password.isEmpty()) {
- auto credential = m_session->networkStorageSession().credentialStorage().get(m_partition, request.url());
+ auto credential = m_session->networkStorageSession()->credentialStorage().get(m_partition, request.url());
if (!credential.isEmpty())
m_initialCredential = credential;
}
@@ -830,7 +830,7 @@
// This is because we want to avoid hitting the disk twice (once to add and once to remove) for
// incorrect credentials or polluting the keychain with invalid credentials.
if (!isAuthenticationFailureStatusCode(m_soupMessage->status_code) && m_soupMessage->status_code < 500) {
- m_session->networkStorageSession().saveCredentialToPersistentStorage(m_protectionSpaceForPersistentStorage, m_credentialForPersistentStorage);
+ m_session->networkStorageSession()->saveCredentialToPersistentStorage(m_protectionSpaceForPersistentStorage, m_credentialForPersistentStorage);
m_protectionSpaceForPersistentStorage = ProtectionSpace();
m_credentialForPersistentStorage = Credential();
}
Modified: trunk/Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.cpp (246568 => 246569)
--- trunk/Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.cpp 2019-06-18 21:30:18 UTC (rev 246568)
+++ trunk/Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.cpp 2019-06-18 21:40:27 UTC (rev 246569)
@@ -39,7 +39,7 @@
NetworkSessionSoup::NetworkSessionSoup(NetworkProcess& networkProcess, NetworkSessionCreationParameters&& parameters)
: NetworkSession(networkProcess, parameters.sessionID, parameters.localStorageDirectory, parameters.localStorageDirectoryExtensionHandle)
{
- networkStorageSession().setCookieObserverHandler([this] {
+ networkStorageSession()->setCookieObserverHandler([this] {
this->networkProcess().supplement<WebCookieManager>()->notifyCookiesDidChange(m_sessionID);
});
@@ -55,7 +55,7 @@
SoupSession* NetworkSessionSoup::soupSession() const
{
- return networkStorageSession().soupNetworkSession().soupSession();
+ return networkStorageSession()->soupNetworkSession().soupSession();
}
void NetworkSessionSoup::clearCredentials()