summaryrefslogtreecommitdiff
path: root/Source/WebKit2/WebProcess/soup
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebKit2/WebProcess/soup
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/WebKit2/WebProcess/soup')
-rw-r--r--Source/WebKit2/WebProcess/soup/WebKitSoupRequestGeneric.cpp107
-rw-r--r--Source/WebKit2/WebProcess/soup/WebKitSoupRequestGeneric.h64
-rw-r--r--Source/WebKit2/WebProcess/soup/WebKitSoupRequestInputStream.cpp79
-rw-r--r--Source/WebKit2/WebProcess/soup/WebKitSoupRequestInputStream.h4
-rw-r--r--Source/WebKit2/WebProcess/soup/WebProcessSoup.cpp167
-rw-r--r--Source/WebKit2/WebProcess/soup/WebSoupRequestManager.messages.in28
6 files changed, 57 insertions, 392 deletions
diff --git a/Source/WebKit2/WebProcess/soup/WebKitSoupRequestGeneric.cpp b/Source/WebKit2/WebProcess/soup/WebKitSoupRequestGeneric.cpp
deleted file mode 100644
index 55c50375a..000000000
--- a/Source/WebKit2/WebProcess/soup/WebKitSoupRequestGeneric.cpp
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright (C) 2012 Igalia S.L.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "config.h"
-#include "WebKitSoupRequestGeneric.h"
-
-#include <wtf/text/CString.h>
-
-#if !ENABLE(CUSTOM_PROTOCOLS)
-#include "WebProcess.h"
-#include "WebSoupRequestManager.h"
-#endif
-
-using namespace WebKit;
-
-G_DEFINE_TYPE(WebKitSoupRequestGeneric, webkit_soup_request_generic, SOUP_TYPE_REQUEST)
-
-struct _WebKitSoupRequestGenericPrivate {
- CString mimeType;
- goffset contentLength;
-};
-
-static void webkitSoupRequestGenericFinalize(GObject* object)
-{
- WEBKIT_SOUP_REQUEST_GENERIC(object)->priv->~WebKitSoupRequestGenericPrivate();
- G_OBJECT_CLASS(webkit_soup_request_generic_parent_class)->finalize(object);
-}
-
-static void webkit_soup_request_generic_init(WebKitSoupRequestGeneric* request)
-{
- WebKitSoupRequestGenericPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(request, WEBKIT_TYPE_SOUP_REQUEST_GENERIC, WebKitSoupRequestGenericPrivate);
- request->priv = priv;
- new (priv) WebKitSoupRequestGenericPrivate();
-}
-
-static void webkitSoupRequestGenericSendAsync(SoupRequest* request, GCancellable* cancellable, GAsyncReadyCallback callback, gpointer userData)
-{
-#if ENABLE(CUSTOM_PROTOCOLS)
- CustomProtocolManagerImpl* customProtocolManager = WEBKIT_SOUP_REQUEST_GENERIC_GET_CLASS(request)->customProtocolManager;
- ASSERT(customProtocolManager);
- customProtocolManager->send(g_task_new(request, cancellable, callback, userData));
-#else
- WebProcess::shared().supplement<WebSoupRequestManager>()->send(g_task_new(request, cancellable, callback, userData));
-#endif
-}
-
-static GInputStream* webkitSoupRequestGenericSendFinish(SoupRequest* request, GAsyncResult* result, GError** error)
-{
- g_return_val_if_fail(g_task_is_valid(result, request), 0);
-#if ENABLE(CUSTOM_PROTOCOLS)
- CustomProtocolManagerImpl* customProtocolManager = WEBKIT_SOUP_REQUEST_GENERIC_GET_CLASS(request)->customProtocolManager;
- ASSERT(customProtocolManager);
- return customProtocolManager->finish(G_TASK(result), error);
-#else
- return WebProcess::shared().supplement<WebSoupRequestManager>()->finish(G_TASK(result), error);
-#endif
-}
-
-static goffset webkitSoupRequestGenericGetContentLength(SoupRequest* request)
-{
- return WEBKIT_SOUP_REQUEST_GENERIC(request)->priv->contentLength;
-}
-
-static const char* webkitSoupRequestGenericGetContentType(SoupRequest* request)
-{
- return WEBKIT_SOUP_REQUEST_GENERIC(request)->priv->mimeType.data();
-}
-
-static void webkit_soup_request_generic_class_init(WebKitSoupRequestGenericClass* requestGenericClass)
-{
- GObjectClass* gObjectClass = G_OBJECT_CLASS(requestGenericClass);
- gObjectClass->finalize = webkitSoupRequestGenericFinalize;
-
- SoupRequestClass* requestClass = SOUP_REQUEST_CLASS(requestGenericClass);
- requestClass->send_async = webkitSoupRequestGenericSendAsync;
- requestClass->send_finish = webkitSoupRequestGenericSendFinish;
- requestClass->get_content_length = webkitSoupRequestGenericGetContentLength;
- requestClass->get_content_type = webkitSoupRequestGenericGetContentType;
-
- g_type_class_add_private(requestGenericClass, sizeof(WebKitSoupRequestGenericPrivate));
-}
-
-void webkitSoupRequestGenericSetContentLength(WebKitSoupRequestGeneric* request, goffset contentLength)
-{
- request->priv->contentLength = contentLength;
-}
-
-void webkitSoupRequestGenericSetContentType(WebKitSoupRequestGeneric* request, const char* mimeType)
-{
- request->priv->mimeType = mimeType;
-}
diff --git a/Source/WebKit2/WebProcess/soup/WebKitSoupRequestGeneric.h b/Source/WebKit2/WebProcess/soup/WebKitSoupRequestGeneric.h
deleted file mode 100644
index 5c5d3ad2d..000000000
--- a/Source/WebKit2/WebProcess/soup/WebKitSoupRequestGeneric.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (C) 2012 Igalia S.L.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef WebKitSoupRequestGeneric_h
-#define WebKitSoupRequestGeneric_h
-
-#include <glib-object.h>
-#include <libsoup/soup.h>
-
-#if ENABLE(CUSTOM_PROTOCOLS)
-#include "CustomProtocolManagerImpl.h"
-#endif
-
-G_BEGIN_DECLS
-
-#define WEBKIT_TYPE_SOUP_REQUEST_GENERIC (webkit_soup_request_generic_get_type())
-#define WEBKIT_SOUP_REQUEST_GENERIC(object) (G_TYPE_CHECK_INSTANCE_CAST((object), WEBKIT_TYPE_SOUP_REQUEST_GENERIC, WebKitSoupRequestGeneric))
-#define WEBKIT_IS_SOUP_REQUEST_GENERIC(object) (G_TYPE_CHECK_INSTANCE_TYPE((object), WEBKIT_TYPE_SOUP_REQUEST_GENERIC))
-#define WEBKIT_SOUP_REQUEST_GENERIC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_SOUP_REQUEST_GENERIC, WebKitSoupRequestGenericClass))
-#define WEBKIT_IS_SOUP_REQUEST_GENERIC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_SOUP_REQUEST_GENERIC))
-#define WEBKIT_SOUP_REQUEST_GENERIC_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_SOUP_REQUEST_GENERIC, WebKitSoupRequestGenericClass))
-
-typedef struct _WebKitSoupRequestGeneric WebKitSoupRequestGeneric;
-typedef struct _WebKitSoupRequestGenericClass WebKitSoupRequestGenericClass;
-typedef struct _WebKitSoupRequestGenericPrivate WebKitSoupRequestGenericPrivate;
-
-struct _WebKitSoupRequestGeneric {
- SoupRequest parent;
-
- WebKitSoupRequestGenericPrivate *priv;
-};
-
-struct _WebKitSoupRequestGenericClass {
- SoupRequestClass parent;
-
-#if ENABLE(CUSTOM_PROTOCOLS)
- WebKit::CustomProtocolManagerImpl* customProtocolManager;
-#endif
-};
-
-GType webkit_soup_request_generic_get_type();
-
-void webkitSoupRequestGenericSetContentLength(WebKitSoupRequestGeneric*, goffset contentLength);
-void webkitSoupRequestGenericSetContentType(WebKitSoupRequestGeneric*, const char* mimeType);
-
-G_END_DECLS
-
-#endif // WebKitSoupRequestGeneric_h
diff --git a/Source/WebKit2/WebProcess/soup/WebKitSoupRequestInputStream.cpp b/Source/WebKit2/WebProcess/soup/WebKitSoupRequestInputStream.cpp
index 852a585d6..cfb5b10cc 100644
--- a/Source/WebKit2/WebProcess/soup/WebKitSoupRequestInputStream.cpp
+++ b/Source/WebKit2/WebProcess/soup/WebKitSoupRequestInputStream.cpp
@@ -20,24 +20,21 @@
#include "config.h"
#include "WebKitSoupRequestInputStream.h"
-#include <wtf/OwnPtr.h>
-#include <wtf/PassOwnPtr.h>
-#include <wtf/Threading.h>
-#include <wtf/gobject/GRefPtr.h>
+#include <wtf/MainThread.h>
+#include <wtf/glib/GRefPtr.h>
+#include <wtf/glib/GUniquePtr.h>
struct AsyncReadData {
- AsyncReadData(GSimpleAsyncResult* result, void* buffer, gsize count, GCancellable* cancellable)
- : result(result)
+ AsyncReadData(GRefPtr<GTask>&& task, void* buffer, gsize count)
+ : task(WTFMove(task))
, buffer(buffer)
, count(count)
- , cancellable(cancellable)
{
}
- GRefPtr<GSimpleAsyncResult> result;
+ GRefPtr<GTask> task;
void* buffer;
size_t count;
- GRefPtr<GCancellable> cancellable;
};
struct _WebKitSoupRequestInputStreamPrivate {
@@ -45,32 +42,29 @@ struct _WebKitSoupRequestInputStreamPrivate {
uint64_t bytesReceived;
uint64_t bytesRead;
- Mutex readLock;
- OwnPtr<AsyncReadData> pendingAsyncRead;
+ GUniquePtr<GError> error;
+
+ std::unique_ptr<AsyncReadData> pendingAsyncRead;
};
G_DEFINE_TYPE(WebKitSoupRequestInputStream, webkit_soup_request_input_stream, G_TYPE_MEMORY_INPUT_STREAM)
-static void webkitSoupRequestInputStreamReadAsyncResultComplete(WebKitSoupRequestInputStream* stream, GSimpleAsyncResult* result, void* buffer, gsize count, GCancellable* cancellable)
+static void webkitSoupRequestInputStreamReadAsyncResultComplete(GTask* task, void* buffer, gsize count)
{
- GError* error = 0;
- gssize bytesRead = G_INPUT_STREAM_GET_CLASS(stream)->read_fn(G_INPUT_STREAM(stream), buffer, count, cancellable, &error);
+ WebKitSoupRequestInputStream* stream = WEBKIT_SOUP_REQUEST_INPUT_STREAM(g_task_get_source_object(task));
+ GError* error = nullptr;
+ gssize bytesRead = G_INPUT_STREAM_GET_CLASS(stream)->read_fn(G_INPUT_STREAM(stream), buffer, count, g_task_get_cancellable(task), &error);
if (!error) {
- g_simple_async_result_set_op_res_gssize(result, bytesRead);
stream->priv->bytesRead += bytesRead;
+ g_task_return_int(task, bytesRead);
} else
- g_simple_async_result_take_error(result, error);
- g_simple_async_result_complete_in_idle(result);
+ g_task_return_error(task, error);
}
static void webkitSoupRequestInputStreamPendingReadAsyncComplete(WebKitSoupRequestInputStream* stream)
{
- if (!stream->priv->pendingAsyncRead)
- return;
-
- AsyncReadData* data = stream->priv->pendingAsyncRead.get();
- webkitSoupRequestInputStreamReadAsyncResultComplete(stream, data->result.get(), data->buffer, data->count, data->cancellable.get());
- stream->priv->pendingAsyncRead.clear();
+ if (auto data = WTFMove(stream->priv->pendingAsyncRead))
+ webkitSoupRequestInputStreamReadAsyncResultComplete(data->task.get(), data->buffer, data->count);
}
static bool webkitSoupRequestInputStreamHasDataToRead(WebKitSoupRequestInputStream* stream)
@@ -85,31 +79,33 @@ static bool webkitSoupRequestInputStreamIsWaitingForData(WebKitSoupRequestInputS
static void webkitSoupRequestInputStreamReadAsync(GInputStream* inputStream, void* buffer, gsize count, int /*priority*/, GCancellable* cancellable, GAsyncReadyCallback callback, gpointer userData)
{
+ ASSERT(isMainThread());
WebKitSoupRequestInputStream* stream = WEBKIT_SOUP_REQUEST_INPUT_STREAM(inputStream);
- GRefPtr<GSimpleAsyncResult> result = adoptGRef(g_simple_async_result_new(G_OBJECT(stream), callback, userData, reinterpret_cast<void*>(webkitSoupRequestInputStreamReadAsync)));
-
- MutexLocker locker(stream->priv->readLock);
+ GRefPtr<GTask> task = adoptGRef(g_task_new(stream, cancellable, callback, userData));
if (!webkitSoupRequestInputStreamHasDataToRead(stream) && !webkitSoupRequestInputStreamIsWaitingForData(stream)) {
- g_simple_async_result_set_op_res_gssize(result.get(), 0);
- g_simple_async_result_complete_in_idle(result.get());
+ g_task_return_int(task.get(), 0);
+ return;
+ }
+
+ if (stream->priv->error.get()) {
+ g_task_return_error(task.get(), stream->priv->error.release());
return;
}
if (webkitSoupRequestInputStreamHasDataToRead(stream)) {
- webkitSoupRequestInputStreamReadAsyncResultComplete(stream, result.get(), buffer, count, cancellable);
+ webkitSoupRequestInputStreamReadAsyncResultComplete(task.get(), buffer, count);
return;
}
- stream->priv->pendingAsyncRead = adoptPtr(new AsyncReadData(result.get(), buffer, count, cancellable));
+ stream->priv->pendingAsyncRead = std::make_unique<AsyncReadData>(WTFMove(task), buffer, count);
}
-static gssize webkitSoupRequestInputStreamReadFinish(GInputStream*, GAsyncResult* result, GError**)
+static gssize webkitSoupRequestInputStreamReadFinish(GInputStream* inputStream, GAsyncResult* result, GError** error)
{
- GSimpleAsyncResult* simpleResult = G_SIMPLE_ASYNC_RESULT(result);
- g_warn_if_fail(g_simple_async_result_get_source_tag(simpleResult) == webkitSoupRequestInputStreamReadAsync);
+ g_return_val_if_fail(g_task_is_valid(result, inputStream), 0);
- return g_simple_async_result_get_op_res_gssize(simpleResult);
+ return g_task_propagate_int(G_TASK(result), error);
}
static void webkitSoupRequestInputStreamFinalize(GObject* object)
@@ -146,11 +142,11 @@ GInputStream* webkitSoupRequestInputStreamNew(uint64_t contentLength)
void webkitSoupRequestInputStreamAddData(WebKitSoupRequestInputStream* stream, const void* data, size_t dataLength)
{
+ ASSERT(isMainThread());
+
if (webkitSoupRequestInputStreamFinished(stream))
return;
- MutexLocker locker(stream->priv->readLock);
-
if (dataLength) {
// Truncate the dataLength to the contentLength if it's known.
if (stream->priv->contentLength && stream->priv->bytesReceived + dataLength > stream->priv->contentLength)
@@ -168,6 +164,17 @@ void webkitSoupRequestInputStreamAddData(WebKitSoupRequestInputStream* stream, c
webkitSoupRequestInputStreamPendingReadAsyncComplete(stream);
}
+void webkitSoupRequestInputStreamDidFailWithError(WebKitSoupRequestInputStream* stream, const WebCore::ResourceError& resourceError)
+{
+ GUniquePtr<GError> error(g_error_new(g_quark_from_string(resourceError.domain().utf8().data()), resourceError.errorCode(), "%s", resourceError.localizedDescription().utf8().data()));
+ if (auto data = WTFMove(stream->priv->pendingAsyncRead))
+ g_task_return_error(data->task.get(), error.release());
+ else {
+ stream->priv->contentLength = stream->priv->bytesReceived;
+ stream->priv->error = WTFMove(error);
+ }
+}
+
bool webkitSoupRequestInputStreamFinished(WebKitSoupRequestInputStream* stream)
{
return !webkitSoupRequestInputStreamIsWaitingForData(stream);
diff --git a/Source/WebKit2/WebProcess/soup/WebKitSoupRequestInputStream.h b/Source/WebKit2/WebProcess/soup/WebKitSoupRequestInputStream.h
index f795e64d8..d7e264d57 100644
--- a/Source/WebKit2/WebProcess/soup/WebKitSoupRequestInputStream.h
+++ b/Source/WebKit2/WebProcess/soup/WebKitSoupRequestInputStream.h
@@ -20,6 +20,7 @@
#ifndef WebKitSoupRequestInputStream_h
#define WebKitSoupRequestInputStream_h
+#include <WebCore/ResourceError.h>
#include <gio/gio.h>
G_BEGIN_DECLS
@@ -46,8 +47,9 @@ struct _WebKitSoupRequestInputStreamClass {
};
GType webkit_soup_request_input_stream_get_type();
-GInputStream* webkitSoupRequestInputStreamNew(guint64 contentLength);
+GInputStream* webkitSoupRequestInputStreamNew(uint64_t contentLength);
void webkitSoupRequestInputStreamAddData(WebKitSoupRequestInputStream*, const void* data, size_t dataLength);
+void webkitSoupRequestInputStreamDidFailWithError(WebKitSoupRequestInputStream*, const WebCore::ResourceError&);
bool webkitSoupRequestInputStreamFinished(WebKitSoupRequestInputStream*);
G_END_DECLS
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
diff --git a/Source/WebKit2/WebProcess/soup/WebSoupRequestManager.messages.in b/Source/WebKit2/WebProcess/soup/WebSoupRequestManager.messages.in
deleted file mode 100644
index 24afa952a..000000000
--- a/Source/WebKit2/WebProcess/soup/WebSoupRequestManager.messages.in
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright (C) 2012 Igalia S.L.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR
-# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-messages -> WebSoupRequestManager {
- RegisterURIScheme(String uriScheme);
- DidHandleURIRequest(IPC::DataReference requestData, uint64_t contentLength, String mimeType, uint64_t requestID);
- DidReceiveURIRequestData(IPC::DataReference requestData, uint64_t requestID);
- DidFailURIRequest(WebCore::ResourceError error, uint64_t requestID);
-}