Title: [233084] trunk/Source/WebKit
Revision
233084
Author
[email protected]
Date
2018-06-22 10:06:43 -0700 (Fri, 22 Jun 2018)

Log Message

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.

Add defaultSessionPendingCookies to NetworkProcessCreationParameters, so pending cookies of default session
can be added right after default session is set. This improves the fix r231850 as it does not send additional
message and avoids the regression.

* 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/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::NetworkProcessProxy):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::ensureNetworkProcess):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (233083 => 233084)


--- trunk/Source/WebKit/ChangeLog	2018-06-22 16:54:55 UTC (rev 233083)
+++ trunk/Source/WebKit/ChangeLog	2018-06-22 17:06:43 UTC (rev 233084)
@@ -1,3 +1,28 @@
+2018-06-22  Sihui Liu  <[email protected]>
+
+        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.
+
+        Add defaultSessionPendingCookies to NetworkProcessCreationParameters, so pending cookies of default session 
+        can be added right after default session is set. This improves the fix r231850 as it does not send additional 
+        message and avoids the regression.
+
+        * 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/Network/NetworkProcessProxy.cpp:
+        (WebKit::NetworkProcessProxy::NetworkProcessProxy):
+        * UIProcess/WebProcessPool.cpp:
+        (WebKit::WebProcessPool::ensureNetworkProcess):
+
 2018-06-22  Brent Fulgham  <[email protected]>
 
         [iOS Debug] Multiple resourceLoadStatistics redirect tests are flaky timeouts

Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp (233083 => 233084)


--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp	2018-06-22 16:54:55 UTC (rev 233083)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp	2018-06-22 17:06:43 UTC (rev 233084)
@@ -269,6 +269,10 @@
 
     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);
 

Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp (233083 => 233084)


--- trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp	2018-06-22 16:54:55 UTC (rev 233083)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp	2018-06-22 17:06:43 UTC (rev 233084)
@@ -55,6 +55,7 @@
 #if PLATFORM(COCOA)
     encoder << uiProcessCookieStorageIdentifier;
 #endif
+    encoder << defaultSessionPendingCookies;
 #if PLATFORM(IOS)
     encoder << cookieStorageDirectoryExtensionHandle;
     encoder << containerCachesDirectoryExtensionHandle;
@@ -147,6 +148,8 @@
     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;

Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h (233083 => 233084)


--- trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h	2018-06-22 16:54:55 UTC (rev 233083)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h	2018-06-22 17:06:43 UTC (rev 233084)
@@ -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 @@
 #if PLATFORM(COCOA)
     Vector<uint8_t> uiProcessCookieStorageIdentifier;
 #endif
+    Vector<WebCore::Cookie> defaultSessionPendingCookies;
 #if PLATFORM(IOS)
     SandboxExtension::Handle cookieStorageDirectoryExtensionHandle;
     SandboxExtension::Handle containerCachesDirectoryExtensionHandle;

Modified: trunk/Source/WebKit/NetworkProcess/mac/RemoteNetworkingContext.mm (233083 => 233084)


--- trunk/Source/WebKit/NetworkProcess/mac/RemoteNetworkingContext.mm	2018-06-22 16:54:55 UTC (rev 233083)
+++ trunk/Source/WebKit/NetworkProcess/mac/RemoteNetworkingContext.mm	2018-06-22 17:06:43 UTC (rev 233084)
@@ -46,12 +46,8 @@
 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())

Modified: trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp (233083 => 233084)


--- trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp	2018-06-22 16:54:55 UTC (rev 233083)
+++ trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp	2018-06-22 17:06:43 UTC (rev 233084)
@@ -82,6 +82,9 @@
     , m_throttler(*this, processPool.shouldTakeUIBackgroundAssertion())
 {
     connect();
+
+    if (auto* websiteDataStore = m_processPool.websiteDataStore())
+        m_websiteDataStores.set(websiteDataStore->websiteDataStore().sessionID(), makeRef(websiteDataStore->websiteDataStore()));
 }
 
 NetworkProcessProxy::~NetworkProcessProxy()

Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.cpp (233083 => 233084)


--- trunk/Source/WebKit/UIProcess/WebProcessPool.cpp	2018-06-22 16:54:55 UTC (rev 233083)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.cpp	2018-06-22 17:06:43 UTC (rev 233084)
@@ -528,11 +528,6 @@
             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();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to