WebKit Bugzilla
Attachment 343101 Details for
Bug 186806
: REGRESSION (r231850): Cookie file cannot be read or written by network process
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch for landing
bug-186806-20180619144005.patch (text/plain), 6.81 KB, created by
Sihui Liu
on 2018-06-19 14:40:06 PDT
(
hide
)
Description:
Patch for landing
Filename:
MIME Type:
Creator:
Sihui Liu
Created:
2018-06-19 14:40:06 PDT
Size:
6.81 KB
patch
obsolete
>Subversion Revision: 232953 >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index e1693c776926386c5a65f3add17985c86ca4de86..7450160c7c922fca2963fc3139f19dfc5408fc91 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,25 @@ >+2018-06-19 Sihui Liu <sihui_liu@apple.com> >+ >+ REGRESSION (r231850): Cookie file cannot be read or written by network process >+ https://bugs.webkit.org/show_bug.cgi?id=186806 >+ <rdar://problem/41113791> >+ >+ Reviewed by Geoffrey Garen. >+ >+ Default websiteDataStore may be added wrongly to network process before default session was >+ set, as messages were asynchronous, so the cookie storage could be improperly set. >+ >+ * NetworkProcess/NetworkProcess.cpp: >+ (WebKit::NetworkProcess::initializeNetworkProcess): >+ * NetworkProcess/NetworkProcessCreationParameters.cpp: >+ (WebKit::NetworkProcessCreationParameters::encode const): >+ (WebKit::NetworkProcessCreationParameters::decode): >+ * NetworkProcess/NetworkProcessCreationParameters.h: >+ * NetworkProcess/mac/RemoteNetworkingContext.mm: >+ (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession): >+ * UIProcess/WebProcessPool.cpp: >+ (WebKit::WebProcessPool::ensureNetworkProcess): >+ > 2018-06-18 John Wilander <wilander@apple.com> > > Resource Load Statistics: Make sure to call callbacks even if there is no store (test infrastructure) >diff --git a/Source/WebKit/NetworkProcess/NetworkProcess.cpp b/Source/WebKit/NetworkProcess/NetworkProcess.cpp >index 722a752c2fde72c345e3e0b95fd8700f665766de..184d127c38bf66af5e6c01df80039b2206f9e458 100644 >--- a/Source/WebKit/NetworkProcess/NetworkProcess.cpp >+++ b/Source/WebKit/NetworkProcess/NetworkProcess.cpp >@@ -269,6 +269,10 @@ void NetworkProcess::initializeNetworkProcess(NetworkProcessCreationParameters&& > > SessionTracker::setSession(PAL::SessionID::defaultSessionID(), NetworkSession::create(WTFMove(parameters.defaultSessionParameters))); > >+ auto* defaultSession = SessionTracker::networkSession(PAL::SessionID::defaultSessionID()); >+ for (const auto& cookie : parameters.defaultSessionPendingCookies) >+ defaultSession->networkStorageSession().setCookie(cookie); >+ > for (auto& supplement : m_supplements.values()) > supplement->initialize(parameters); > >diff --git a/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp b/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp >index 2010b43739898df2fa3b18427d0f89dc96b9971c..8374dd3f94bbfab6965c1e8f92436b2acc18424f 100644 >--- a/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp >+++ b/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp >@@ -55,6 +55,7 @@ void NetworkProcessCreationParameters::encode(IPC::Encoder& encoder) const > #if PLATFORM(COCOA) > encoder << uiProcessCookieStorageIdentifier; > #endif >+ encoder << defaultSessionPendingCookies; > #if PLATFORM(IOS) > encoder << cookieStorageDirectoryExtensionHandle; > encoder << containerCachesDirectoryExtensionHandle; >@@ -147,6 +148,8 @@ bool NetworkProcessCreationParameters::decode(IPC::Decoder& decoder, NetworkProc > if (!decoder.decode(result.uiProcessCookieStorageIdentifier)) > return false; > #endif >+ if (!decoder.decode(result.defaultSessionPendingCookies)) >+ return false; > #if PLATFORM(IOS) > std::optional<SandboxExtension::Handle> cookieStorageDirectoryExtensionHandle; > decoder >> cookieStorageDirectoryExtensionHandle; >diff --git a/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h b/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h >index 4388945b7cf5a60a10c52b9425aca8ba1d14fdb3..6bfdaec8c04a3a0d594f62148b2efaa6f94b3156 100644 >--- a/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h >+++ b/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h >@@ -28,6 +28,7 @@ > #include "CacheModel.h" > #include "NetworkSessionCreationParameters.h" > #include "SandboxExtension.h" >+#include <WebCore/Cookie.h> > #include <wtf/ProcessID.h> > #include <wtf/Vector.h> > #include <wtf/text/WTFString.h> >@@ -65,6 +66,7 @@ struct NetworkProcessCreationParameters { > #if PLATFORM(COCOA) > Vector<uint8_t> uiProcessCookieStorageIdentifier; > #endif >+ Vector<WebCore::Cookie> defaultSessionPendingCookies; > #if PLATFORM(IOS) > SandboxExtension::Handle cookieStorageDirectoryExtensionHandle; > SandboxExtension::Handle containerCachesDirectoryExtensionHandle; >diff --git a/Source/WebKit/NetworkProcess/mac/RemoteNetworkingContext.mm b/Source/WebKit/NetworkProcess/mac/RemoteNetworkingContext.mm >index 1e02e91c8ca35e4a97ceaef61809155fdd53d2f5..154678c8e2f2f04c72673b73e3a083f6a46b915d 100644 >--- a/Source/WebKit/NetworkProcess/mac/RemoteNetworkingContext.mm >+++ b/Source/WebKit/NetworkProcess/mac/RemoteNetworkingContext.mm >@@ -46,12 +46,8 @@ namespace WebKit { > void RemoteNetworkingContext::ensureWebsiteDataStoreSession(WebsiteDataStoreParameters&& parameters) > { > auto sessionID = parameters.networkSessionParameters.sessionID; >- if (auto* session = NetworkStorageSession::storageSession(sessionID)) { >- ASSERT(parameters.pendingCookies.isEmpty() || sessionID == PAL::SessionID::defaultSessionID()); >- for (const auto& cookie : parameters.pendingCookies) >- session->setCookie(cookie); >+ if (NetworkStorageSession::storageSession(sessionID)) > return; >- } > > String base; > if (SessionTracker::getIdentifierBase().isNull()) >diff --git a/Source/WebKit/UIProcess/WebProcessPool.cpp b/Source/WebKit/UIProcess/WebProcessPool.cpp >index 7c6cec014ffd74e1ac52be4491c3743e85e10811..4c61e976b5cf94b0864e21966306dc5a8ed3086d 100644 >--- a/Source/WebKit/UIProcess/WebProcessPool.cpp >+++ b/Source/WebKit/UIProcess/WebProcessPool.cpp >@@ -467,6 +467,11 @@ NetworkProcessProxy& WebProcessPool::ensureNetworkProcess(WebsiteDataStore* with > parameters.defaultSessionParameters.sessionID = PAL::SessionID::defaultSessionID(); > } > >+ if (m_websiteDataStore) { >+ parameters.defaultSessionPendingCookies = m_websiteDataStore->websiteDataStore().pendingCookies(); >+ m_websiteDataStore->websiteDataStore().clearPendingCookies(); >+ } >+ > parameters.privateBrowsingEnabled = WebPreferences::anyPagesAreUsingPrivateBrowsing(); > > parameters.cacheModel = cacheModel(); >@@ -528,11 +533,6 @@ NetworkProcessProxy& WebProcessPool::ensureNetworkProcess(WebsiteDataStore* with > m_websiteDataStore->websiteDataStore().networkProcessDidCrash(); > } > >- if (m_websiteDataStore) { >- m_networkProcess->addSession(makeRef(m_websiteDataStore->websiteDataStore())); >- m_websiteDataStore->websiteDataStore().clearPendingCookies(); >- } >- > if (withWebsiteDataStore) { > m_networkProcess->addSession(makeRef(*withWebsiteDataStore)); > withWebsiteDataStore->clearPendingCookies();
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 186806
:
343069
|
343101
|
343291
|
343377
|
343379