Diff
Modified: trunk/Source/WebKit/ChangeLog (280127 => 280128)
--- trunk/Source/WebKit/ChangeLog 2021-07-21 11:35:17 UTC (rev 280127)
+++ trunk/Source/WebKit/ChangeLog 2021-07-21 11:51:18 UTC (rev 280128)
@@ -1,3 +1,30 @@
+2021-07-21 Carlos Garcia Campos <cgar...@igalia.com>
+
+ REGRESSION(r267763): [SOUP] After network process crash, all cookies are lost until browser is restarted
+ https://bugs.webkit.org/show_bug.cgi?id=228128
+
+ Reviewed by Adrian Perez de Castro.
+
+ Cookies configuration is no longer stored to be sent again to the new network process after a crash.
+
+ * NetworkProcess/NetworkSessionCreationParameters.cpp:
+ (WebKit::NetworkSessionCreationParameters::encode const): Encode cookieAcceptPolicy.
+ (WebKit::NetworkSessionCreationParameters::decode): Decode cookieAcceptPolicy.
+ * NetworkProcess/NetworkSessionCreationParameters.h: Add cookieAcceptPolicy.
+ * NetworkProcess/soup/NetworkSessionSoup.cpp:
+ (WebKit::NetworkSessionSoup::NetworkSessionSoup): Set cookie accept policy on NetworkStorageSession.
+ * UIProcess/API/glib/WebKitCookieManager.cpp:
+ (webkit_cookie_manager_set_persistent_storage): Use WebsiteDataStore API to cache the given values.
+ (webkit_cookie_manager_set_accept_policy): Ditto.
+ * UIProcess/WebCookieManagerProxy.h:
+ * UIProcess/WebsiteData/WebsiteDataStore.h:
+ * UIProcess/WebsiteData/soup/WebsiteDataStoreSoup.cpp:
+ (WebKit::WebsiteDataStore::platformSetNetworkParameters): Set cached cookie settings to network session parameters.
+ (WebKit::WebsiteDataStore::setCookiePersistentStorage): Cache the given value and notify the cookie manager.
+ (WebKit::WebsiteDataStore::setHTTPCookieAcceptPolicy): Ditto.
+ * UIProcess/soup/WebCookieManagerProxySoup.cpp:
+ (WebKit::WebCookieManagerProxy::getCookiePersistentStorage const): Deleted.
+
2021-07-20 Wenson Hsieh <wenson_hs...@apple.com>
[iOS] Add SPI for internal clients to consult whether or not viewport quirks should be enabled
Modified: trunk/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.cpp (280127 => 280128)
--- trunk/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.cpp 2021-07-21 11:35:17 UTC (rev 280127)
+++ trunk/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.cpp 2021-07-21 11:51:18 UTC (rev 280128)
@@ -64,6 +64,7 @@
encoder << persistentCredentialStorageEnabled;
encoder << ignoreTLSErrors;
encoder << proxySettings;
+ encoder << cookieAcceptPolicy;
#endif
#if USE(CURL)
encoder << cookiePersistentStorageFile;
@@ -189,6 +190,11 @@
decoder >> proxySettings;
if (!proxySettings)
return std::nullopt;
+
+ std::optional<WebCore::HTTPCookieAcceptPolicy> cookieAcceptPolicy;
+ decoder >> cookieAcceptPolicy;
+ if (!cookieAcceptPolicy)
+ return std::nullopt;
#endif
#if USE(CURL)
@@ -318,6 +324,7 @@
, WTFMove(*persistentCredentialStorageEnabled)
, WTFMove(*ignoreTLSErrors)
, WTFMove(*proxySettings)
+ , WTFMove(*cookieAcceptPolicy)
#endif
#if USE(CURL)
, WTFMove(*cookiePersistentStorageFile)
Modified: trunk/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h (280127 => 280128)
--- trunk/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h 2021-07-21 11:35:17 UTC (rev 280127)
+++ trunk/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h 2021-07-21 11:51:18 UTC (rev 280128)
@@ -33,6 +33,7 @@
#if USE(SOUP)
#include "SoupCookiePersistentStorageType.h"
+#include <WebCore/HTTPCookieAcceptPolicy.h>
#include <WebCore/SoupNetworkProxySettings.h>
#endif
@@ -77,6 +78,7 @@
bool persistentCredentialStorageEnabled { true };
bool ignoreTLSErrors { false };
WebCore::SoupNetworkProxySettings proxySettings;
+ WebCore::HTTPCookieAcceptPolicy cookieAcceptPolicy { WebCore::HTTPCookieAcceptPolicy::ExclusivelyFromMainDocumentDomain };
#endif
#if USE(CURL)
String cookiePersistentStorageFile;
Modified: trunk/Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.cpp (280127 => 280128)
--- trunk/Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.cpp 2021-07-21 11:35:17 UTC (rev 280127)
+++ trunk/Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.cpp 2021-07-21 11:51:18 UTC (rev 280128)
@@ -47,6 +47,8 @@
auto* storageSession = networkStorageSession();
ASSERT(storageSession);
+ storageSession->setCookieAcceptPolicy(parameters.cookieAcceptPolicy);
+
setIgnoreTLSErrors(parameters.ignoreTLSErrors);
if (parameters.proxySettings.mode != SoupNetworkProxySettings::Mode::Default)
Modified: trunk/Source/WebKit/UIProcess/API/glib/WebKitCookieManager.cpp (280127 => 280128)
--- trunk/Source/WebKit/UIProcess/API/glib/WebKitCookieManager.cpp 2021-07-21 11:35:17 UTC (rev 280127)
+++ trunk/Source/WebKit/UIProcess/API/glib/WebKitCookieManager.cpp 2021-07-21 11:51:18 UTC (rev 280128)
@@ -194,7 +194,8 @@
if (sessionID.isEphemeral())
return;
- manager->priv->cookieManager().setCookiePersistentStorage(sessionID, String::fromUTF8(filename), toSoupCookiePersistentStorageType(storage));
+ auto& websiteDataStore = webkitWebsiteDataManagerGetDataStore(manager->priv->dataManager);
+ websiteDataStore.setCookiePersistentStorage(String::fromUTF8(filename), toSoupCookiePersistentStorageType(storage));
}
/**
@@ -212,7 +213,8 @@
{
g_return_if_fail(WEBKIT_IS_COOKIE_MANAGER(manager));
- manager->priv->cookieManager().setHTTPCookieAcceptPolicy(manager->priv->sessionID(), toHTTPCookieAcceptPolicy(policy), []() { });
+ auto& websiteDataStore = webkitWebsiteDataManagerGetDataStore(manager->priv->dataManager);
+ websiteDataStore.setHTTPCookieAcceptPolicy(toHTTPCookieAcceptPolicy(policy));
}
/**
Modified: trunk/Source/WebKit/UIProcess/WebCookieManagerProxy.h (280127 => 280128)
--- trunk/Source/WebKit/UIProcess/WebCookieManagerProxy.h 2021-07-21 11:35:17 UTC (rev 280127)
+++ trunk/Source/WebKit/UIProcess/WebCookieManagerProxy.h 2021-07-21 11:51:18 UTC (rev 280128)
@@ -87,7 +87,6 @@
#if USE(SOUP)
void setCookiePersistentStorage(PAL::SessionID, const String& storagePath, SoupCookiePersistentStorageType);
- void getCookiePersistentStorage(PAL::SessionID, String& storagePath, SoupCookiePersistentStorageType&) const;
#endif
private:
@@ -99,11 +98,6 @@
HashMap<PAL::SessionID, WeakHashSet<Observer>> m_cookieObservers;
WeakPtr<NetworkProcessProxy> m_networkProcess;
-
-#if USE(SOUP)
- using CookiePersistentStorageMap = HashMap<PAL::SessionID, std::pair<String, SoupCookiePersistentStorageType>>;
- CookiePersistentStorageMap m_cookiePersistentStorageMap;
-#endif
};
} // namespace WebKit
Modified: trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h (280127 => 280128)
--- trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h 2021-07-21 11:35:17 UTC (rev 280127)
+++ trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h 2021-07-21 11:51:18 UTC (rev 280128)
@@ -62,6 +62,8 @@
#endif
#if USE(SOUP)
+#include "SoupCookiePersistentStorageType.h"
+#include <WebCore/HTTPCookieAcceptPolicy.h>
#include <WebCore/SoupNetworkProxySettings.h>
#endif
@@ -290,6 +292,8 @@
bool ignoreTLSErrors() const { return m_ignoreTLSErrors; }
void setNetworkProxySettings(WebCore::SoupNetworkProxySettings&&);
const WebCore::SoupNetworkProxySettings& networkProxySettings() const { return m_networkProxySettings; }
+ void setCookiePersistentStorage(const String&, SoupCookiePersistentStorageType);
+ void setHTTPCookieAcceptPolicy(WebCore::HTTPCookieAcceptPolicy);
#endif
static void allowWebsiteDataRecordsForAllOrigins();
@@ -433,6 +437,9 @@
bool m_persistentCredentialStorageEnabled { true };
bool m_ignoreTLSErrors { true };
WebCore::SoupNetworkProxySettings m_networkProxySettings;
+ String m_cookiePersistentStoragePath;
+ SoupCookiePersistentStorageType m_cookiePersistentStorageType { SoupCookiePersistentStorageType::SQLite };
+ WebCore::HTTPCookieAcceptPolicy m_cookieAcceptPolicy { WebCore::HTTPCookieAcceptPolicy::ExclusivelyFromMainDocumentDomain };
#endif
WeakHashSet<WebProcessProxy> m_processes;
Modified: trunk/Source/WebKit/UIProcess/WebsiteData/soup/WebsiteDataStoreSoup.cpp (280127 => 280128)
--- trunk/Source/WebKit/UIProcess/WebsiteData/soup/WebsiteDataStoreSoup.cpp 2021-07-21 11:35:17 UTC (rev 280127)
+++ trunk/Source/WebKit/UIProcess/WebsiteData/soup/WebsiteDataStoreSoup.cpp 2021-07-21 11:51:18 UTC (rev 280128)
@@ -41,8 +41,9 @@
networkSessionParameters.persistentCredentialStorageEnabled = m_persistentCredentialStorageEnabled;
networkSessionParameters.ignoreTLSErrors = m_ignoreTLSErrors;
networkSessionParameters.proxySettings = m_networkProxySettings;
-
- networkProcess().cookieManager().getCookiePersistentStorage(m_sessionID, networkSessionParameters.cookiePersistentStoragePath, networkSessionParameters.cookiePersistentStorageType);
+ networkSessionParameters.cookiePersistentStoragePath = m_cookiePersistentStoragePath;
+ networkSessionParameters.cookiePersistentStorageType = m_cookiePersistentStorageType;
+ networkSessionParameters.cookieAcceptPolicy = m_cookieAcceptPolicy;
}
void WebsiteDataStore::setPersistentCredentialStorageEnabled(bool enabled)
@@ -72,4 +73,23 @@
networkProcess().send(Messages::NetworkProcess::SetNetworkProxySettings(m_sessionID, m_networkProxySettings), 0);
}
+void WebsiteDataStore::setCookiePersistentStorage(const String& storagePath, SoupCookiePersistentStorageType storageType)
+{
+ if (m_cookiePersistentStoragePath == storagePath && m_cookiePersistentStorageType == storageType)
+ return;
+
+ m_cookiePersistentStoragePath = storagePath;
+ m_cookiePersistentStorageType = storageType;
+ networkProcess().cookieManager().setCookiePersistentStorage(m_sessionID, m_cookiePersistentStoragePath, m_cookiePersistentStorageType);
+}
+
+void WebsiteDataStore::setHTTPCookieAcceptPolicy(WebCore::HTTPCookieAcceptPolicy policy)
+{
+ if (m_cookieAcceptPolicy == policy)
+ return;
+
+ m_cookieAcceptPolicy = policy;
+ networkProcess().cookieManager().setHTTPCookieAcceptPolicy(m_sessionID, policy, [] { });
+}
+
} // namespace WebKit
Modified: trunk/Source/WebKit/UIProcess/soup/WebCookieManagerProxySoup.cpp (280127 => 280128)
--- trunk/Source/WebKit/UIProcess/soup/WebCookieManagerProxySoup.cpp 2021-07-21 11:35:17 UTC (rev 280127)
+++ trunk/Source/WebKit/UIProcess/soup/WebCookieManagerProxySoup.cpp 2021-07-21 11:51:18 UTC (rev 280128)
@@ -28,7 +28,6 @@
#include "NetworkProcessProxy.h"
#include "WebCookieManagerMessages.h"
-#include "WebProcessPool.h"
namespace WebKit {
@@ -38,11 +37,4 @@
m_networkProcess->send(Messages::WebCookieManager::SetCookiePersistentStorage(sessionID, storagePath, storageType), 0);
}
-void WebCookieManagerProxy::getCookiePersistentStorage(PAL::SessionID sessionID, String& storagePath, SoupCookiePersistentStorageType& storageType) const
-{
- auto pair = m_cookiePersistentStorageMap.get(sessionID);
- storagePath = pair.first;
- storageType = pair.second;
-}
-
-}
+} // namespace WebKit