summaryrefslogtreecommitdiff
path: root/Source/WebKit2/WebProcess/soup/WebProcessSoup.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit2/WebProcess/soup/WebProcessSoup.cpp')
-rw-r--r--Source/WebKit2/WebProcess/soup/WebProcessSoup.cpp167
1 files changed, 11 insertions, 156 deletions
diff --git a/Source/WebKit2/WebProcess/soup/WebProcessSoup.cpp b/Source/WebKit2/WebProcess/soup/WebProcessSoup.cpp
index 461a858a9..c854cd731 100644
--- a/Source/WebKit2/WebProcess/soup/WebProcessSoup.cpp
+++ b/Source/WebKit2/WebProcess/soup/WebProcessSoup.cpp
@@ -27,180 +27,35 @@
#include "config.h"
#include "WebProcess.h"
-#if PLATFORM(EFL)
-#include "SeccompFiltersWebProcessEfl.h"
-#endif
-
-#include "CertificateInfo.h"
-#include "WebCookieManager.h"
#include "WebProcessCreationParameters.h"
-#include <WebCore/FileSystem.h>
-#include <WebCore/Language.h>
#include <WebCore/MemoryCache.h>
-#include <WebCore/PageCache.h>
-#include <WebCore/ResourceHandle.h>
+#include <WebCore/NetworkStorageSession.h>
#include <WebCore/SoupNetworkSession.h>
-#include <libsoup/soup.h>
-#include <wtf/gobject/GRefPtr.h>
-#include <wtf/gobject/GUniquePtr.h>
-
-#if !ENABLE(CUSTOM_PROTOCOLS)
-#include "WebSoupRequestManager.h"
-#endif
namespace WebKit {
-static uint64_t getCacheDiskFreeSize(SoupCache* cache)
-{
- ASSERT(cache);
-
- GUniqueOutPtr<char> cacheDir;
- g_object_get(G_OBJECT(cache), "cache-dir", &cacheDir.outPtr(), NULL);
- if (!cacheDir)
- return 0;
-
- return WebCore::getVolumeFreeSizeForPath(cacheDir.get());
-}
-
-static uint64_t getMemorySize()
-{
- static uint64_t kDefaultMemorySize = 512;
-#if !OS(WINDOWS)
- long pageSize = sysconf(_SC_PAGESIZE);
- if (pageSize == -1)
- return kDefaultMemorySize;
-
- long physPages = sysconf(_SC_PHYS_PAGES);
- if (physPages == -1)
- return kDefaultMemorySize;
-
- return ((pageSize / 1024) * physPages) / 1024;
-#else
- // Fallback to default for other platforms.
- return kDefaultMemorySize;
-#endif
-}
-
void WebProcess::platformSetCacheModel(CacheModel cacheModel)
{
- unsigned cacheTotalCapacity = 0;
- unsigned cacheMinDeadCapacity = 0;
- unsigned cacheMaxDeadCapacity = 0;
- double deadDecodedDataDeletionInterval = 0;
- unsigned pageCacheCapacity = 0;
-
- unsigned long urlCacheMemoryCapacity = 0;
- unsigned long urlCacheDiskCapacity = 0;
-
- uint64_t diskFreeSize = 0;
- SoupCache* cache = nullptr;
-
- if (!usesNetworkProcess()) {
- cache = WebCore::SoupNetworkSession::defaultSession().cache();
- diskFreeSize = getCacheDiskFreeSize(cache) / 1024 / 1024;
- }
-
- uint64_t memSize = getMemorySize();
- calculateCacheSizes(cacheModel, memSize, diskFreeSize,
- cacheTotalCapacity, cacheMinDeadCapacity, cacheMaxDeadCapacity, deadDecodedDataDeletionInterval,
- pageCacheCapacity, urlCacheMemoryCapacity, urlCacheDiskCapacity);
-
- WebCore::memoryCache()->setDisabled(cacheModel == CacheModelDocumentViewer);
- WebCore::memoryCache()->setCapacities(cacheMinDeadCapacity, cacheMaxDeadCapacity, cacheTotalCapacity);
- WebCore::memoryCache()->setDeadDecodedDataDeletionInterval(deadDecodedDataDeletionInterval);
- WebCore::pageCache()->setCapacity(pageCacheCapacity);
-
-#if PLATFORM(GTK) && USE(ACCELERATED_COMPOSITING)
- WebCore::pageCache()->setShouldClearBackingStores(true);
-#endif
-
- if (!usesNetworkProcess()) {
- if (urlCacheDiskCapacity > soup_cache_get_max_size(cache))
- soup_cache_set_max_size(cache, urlCacheDiskCapacity);
- }
-}
-
-void WebProcess::platformClearResourceCaches(ResourceCachesToClear cachesToClear)
-{
- if (cachesToClear == InMemoryResourceCachesOnly)
- return;
-
- // If we're using the network process then it is the only one that needs to clear the disk cache.
- if (usesNetworkProcess())
- return;
-
- soup_cache_clear(WebCore::SoupNetworkSession::defaultSession().cache());
-}
-
-static void setSoupSessionAcceptLanguage(const Vector<String>& languages)
-{
- WebCore::SoupNetworkSession::defaultSession().setAcceptLanguages(languages);
-}
-
-static void languageChanged(void*)
-{
- setSoupSessionAcceptLanguage(WebCore::userPreferredLanguages());
+ WebCore::MemoryCache::singleton().setDisabled(cacheModel == CacheModelDocumentViewer);
}
-void WebProcess::platformInitializeWebProcess(const WebProcessCreationParameters& parameters, IPC::MessageDecoder&)
+void WebProcess::platformInitializeWebProcess(WebProcessCreationParameters&& parameters)
{
-#if ENABLE(SECCOMP_FILTERS)
- {
-#if PLATFORM(EFL)
- SeccompFiltersWebProcessEfl seccompFilters(parameters);
-#endif
- seccompFilters.initialize();
- }
-#endif
-
- if (usesNetworkProcess())
- return;
-
- ASSERT(!parameters.diskCacheDirectory.isEmpty());
- GRefPtr<SoupCache> soupCache = adoptGRef(soup_cache_new(parameters.diskCacheDirectory.utf8().data(), SOUP_CACHE_SINGLE_USER));
- WebCore::SoupNetworkSession::defaultSession().setCache(soupCache.get());
- // Set an initial huge max_size for the SoupCache so the call to soup_cache_load() won't evict any cached
- // resource. The final size of the cache will be set by NetworkProcess::platformSetCacheModel().
- unsigned initialMaxSize = soup_cache_get_max_size(soupCache.get());
- soup_cache_set_max_size(soupCache.get(), G_MAXUINT);
- soup_cache_load(soupCache.get());
- soup_cache_set_max_size(soupCache.get(), initialMaxSize);
-
- if (!parameters.cookiePersistentStoragePath.isEmpty()) {
- supplement<WebCookieManager>()->setCookiePersistentStorage(parameters.cookiePersistentStoragePath,
- parameters.cookiePersistentStorageType);
- }
- supplement<WebCookieManager>()->setHTTPCookieAcceptPolicy(parameters.cookieAcceptPolicy);
-
- if (!parameters.languages.isEmpty())
- setSoupSessionAcceptLanguage(parameters.languages);
-
-#if !ENABLE(CUSTOM_PROTOCOLS)
- for (size_t i = 0; i < parameters.urlSchemesRegistered.size(); i++)
- supplement<WebSoupRequestManager>()->registerURIScheme(parameters.urlSchemesRegistered[i]);
-#endif
-
- setIgnoreTLSErrors(parameters.ignoreTLSErrors);
-
- WebCore::addLanguageChangeObserver(this, languageChanged);
+ if (parameters.proxySettings.mode != WebCore::SoupNetworkProxySettings::Mode::Default)
+ setNetworkProxySettings(parameters.proxySettings);
}
void WebProcess::platformTerminate()
{
- if (!usesNetworkProcess())
- WebCore::removeLanguageChangeObserver(this);
-}
-
-void WebProcess::setIgnoreTLSErrors(bool ignoreTLSErrors)
-{
- ASSERT(!usesNetworkProcess());
- WebCore::ResourceHandle::setIgnoreSSLErrors(ignoreTLSErrors);
}
-void WebProcess::allowSpecificHTTPSCertificateForHost(const WebCore::CertificateInfo& certificateInfo, const String& host)
+void WebProcess::setNetworkProxySettings(const WebCore::SoupNetworkProxySettings& settings)
{
- ASSERT(!usesNetworkProcess());
- WebCore::ResourceHandle::setClientCertificate(host, certificateInfo.certificate());
+ WebCore::SoupNetworkSession::setProxySettings(settings);
+ WebCore::NetworkStorageSession::forEach([](const WebCore::NetworkStorageSession& session) {
+ if (auto* soupSession = session.soupNetworkSession())
+ soupSession->setupProxy();
+ });
}
} // namespace WebKit