WebKit Bugzilla
Attachment 372307 Details for
Bug 198947
: NetworkSession::networkStorageSession can return null
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-198947-20190617180158.patch (text/plain), 30.93 KB, created by
Alex Christensen
on 2019-06-17 18:01:59 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Alex Christensen
Created:
2019-06-17 18:01:59 PDT
Size:
30.93 KB
patch
obsolete
>Index: Source/WebKit/ChangeLog >=================================================================== >--- Source/WebKit/ChangeLog (revision 246528) >+++ Source/WebKit/ChangeLog (working copy) >@@ -1,3 +1,36 @@ >+2019-06-17 Alex Christensen <achristensen@webkit.org> >+ >+ NetworkSession::networkStorageSession can return null >+ https://bugs.webkit.org/show_bug.cgi?id=198947 >+ <rdar://problem/51394449> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ 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-17 Tim Horton <timothy_horton@apple.com> > > Fix the build with case-sensitive includes >Index: Source/WebKit/NetworkProcess/NetworkProcess.cpp >=================================================================== >--- Source/WebKit/NetworkProcess/NetworkProcess.cpp (revision 246516) >+++ Source/WebKit/NetworkProcess/NetworkProcess.cpp (working copy) >@@ -335,8 +335,9 @@ void NetworkProcess::initializeNetworkPr > 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); >Index: Source/WebKit/NetworkProcess/NetworkSession.cpp >=================================================================== >--- Source/WebKit/NetworkProcess/NetworkSession.cpp (revision 246516) >+++ Source/WebKit/NetworkProcess/NetworkSession.cpp (working copy) >@@ -68,11 +68,13 @@ Ref<NetworkSession> NetworkSession::crea > #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) >Index: Source/WebKit/NetworkProcess/NetworkSession.h >=================================================================== >--- Source/WebKit/NetworkProcess/NetworkSession.h (revision 246516) >+++ Source/WebKit/NetworkProcess/NetworkSession.h (working copy) >@@ -72,7 +72,7 @@ public: > > 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); } >Index: Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp >=================================================================== >--- Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp (revision 246516) >+++ Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp (working copy) >@@ -389,8 +389,10 @@ void ResourceLoadStatisticsStore::update > > #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 > } >Index: Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp >=================================================================== >--- Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp (revision 246516) >+++ Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp (working copy) >@@ -300,7 +300,11 @@ void WebResourceLoadStatisticsStore::has > > 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 @@ void WebResourceLoadStatisticsStore::cal > 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 @@ StorageAccessWasGranted WebResourceLoadS > 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 @@ void WebResourceLoadStatisticsStore::rem > { > 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 @@ void WebResourceLoadStatisticsStore::set > 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,16 +958,20 @@ void WebResourceLoadStatisticsStore::cal > { > ASSERT(RunLoop::isMain()); > >- if (m_networkSession) >- m_networkSession->networkStorageSession().setPrevalentDomainsToBlockCookiesFor(domainsToBlock); >+ if (m_networkSession) { >+ if (auto* storageSession = m_networkSession->networkStorageSession()) >+ storageSession->setPrevalentDomainsToBlockCookiesFor(domainsToBlock); >+ } > > completionHandler(); > } > > 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) >Index: Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm >=================================================================== >--- Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm (revision 246516) >+++ Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm (working copy) >@@ -138,9 +138,15 @@ void NetworkDataTaskCocoa::applyCookieBl > 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 @@ NetworkDataTaskCocoa::NetworkDataTaskCoc > url = request.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 @@ NetworkDataTaskCocoa::NetworkDataTaskCoc > > 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 @@ void NetworkDataTaskCocoa::willPerformHT > // 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 @@ void NetworkDataTaskCocoa::willPerformHT > 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 @@ void NetworkDataTaskCocoa::willPerformHT > 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 @@ bool NetworkDataTaskCocoa::tryPasswordBa > // 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; >Index: Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.cpp >=================================================================== >--- Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.cpp (revision 246516) >+++ Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.cpp (working copy) >@@ -59,9 +59,9 @@ NetworkDataTaskCurl::NetworkDataTaskCurl > 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 @@ void NetworkDataTaskCurl::willPerformHTT > // 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 @@ void NetworkDataTaskCurl::tryHttpAuthent > // 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 @@ void NetworkDataTaskCurl::tryHttpAuthent > 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::restartWithCre > > 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 @@ void NetworkDataTaskCurl::handleCookieHe > { > 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); > } > } > } >Index: Source/WebKit/NetworkProcess/curl/NetworkSessionCurl.cpp >=================================================================== >--- Source/WebKit/NetworkProcess/curl/NetworkSessionCurl.cpp (revision 246516) >+++ Source/WebKit/NetworkProcess/curl/NetworkSessionCurl.cpp (working copy) >@@ -41,8 +41,8 @@ NetworkSessionCurl::NetworkSessionCurl(N > : 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() >Index: Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp >=================================================================== >--- Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp (revision 246516) >+++ Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp (working copy) >@@ -68,9 +68,9 @@ NetworkDataTaskSoup::NetworkDataTaskSoup > 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 @@ void NetworkDataTaskSoup::authenticate(A > // 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 @@ void NetworkDataTaskSoup::authenticate(A > // 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 @@ void NetworkDataTaskSoup::continueAuthen > // 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 @@ void NetworkDataTaskSoup::continueHTTPRe > 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 @@ void NetworkDataTaskSoup::didGetHeaders( > // 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(); > } >Index: Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.cpp >=================================================================== >--- Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.cpp (revision 246516) >+++ Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.cpp (working copy) >@@ -39,7 +39,7 @@ using namespace WebCore; > 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 @@ NetworkSessionSoup::~NetworkSessionSoup( > > SoupSession* NetworkSessionSoup::soupSession() const > { >- return networkStorageSession().soupNetworkSession().soupSession(); >+ return networkStorageSession()->soupNetworkSession().soupSession(); > } > > void NetworkSessionSoup::clearCredentials()
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 198947
:
372304
| 372307