Skip to content
This repository was archived by the owner on Jun 24, 2022. It is now read-only.

Commit dbbc4cc

Browse files
[GTK][WPE] Move proxy settings from WebKitContext to WebKitWebsiteDataManager
https://bugs.webkit.org/show_bug.cgi?id=216927 Patch by Carlos Garcia Campos <[email protected]> on 2020-09-24 Reviewed by Alex Christensen. Source/WebCore: Make proxySettings a member of SoupNetworkSession, instead of being global. * platform/network/soup/SoupNetworkSession.cpp: (WebCore::SoupNetworkSession::SoupNetworkSession): (WebCore::SoupNetworkSession::setProxySettings): (WebCore::proxySettings): Deleted. (WebCore::SoupNetworkSession::setupProxy): Deleted. * platform/network/soup/SoupNetworkSession.h: Source/WebKit: Make proxy settings per session instead of global to the network process. The web context API now simply forwards the request to the website data manager. * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcess.messages.in: * NetworkProcess/NetworkProcessCreationParameters.cpp: (WebKit::NetworkProcessCreationParameters::encode const): (WebKit::NetworkProcessCreationParameters::decode): * NetworkProcess/NetworkProcessCreationParameters.h: * NetworkProcess/NetworkSessionCreationParameters.cpp: (WebKit::NetworkSessionCreationParameters::encode const): (WebKit::NetworkSessionCreationParameters::decode): * NetworkProcess/NetworkSessionCreationParameters.h: * NetworkProcess/soup/NetworkProcessSoup.cpp: (WebKit::NetworkProcess::platformInitializeNetworkProcess): (WebKit::NetworkProcess::setNetworkProxySettings): * NetworkProcess/soup/NetworkSessionSoup.cpp: (WebKit::NetworkSessionSoup::NetworkSessionSoup): (WebKit::NetworkSessionSoup::setProxySettings): * NetworkProcess/soup/NetworkSessionSoup.h: * Shared/WebProcessCreationParameters.cpp: (WebKit::WebProcessCreationParameters::encode const): (WebKit::WebProcessCreationParameters::decode): * Shared/WebProcessCreationParameters.h: * UIProcess/API/glib/WebKitAutomationSession.cpp: (webkitAutomationSessionCreate): * UIProcess/API/glib/WebKitWebContext.cpp: (webkit_web_context_set_network_proxy_settings): * UIProcess/API/glib/WebKitWebView.cpp: (webkitWebViewConstructed): * UIProcess/API/glib/WebKitWebsiteDataManager.cpp: (webkit_website_data_manager_set_network_proxy_settings): * UIProcess/API/gtk/WebKitNetworkProxySettings.h: * UIProcess/API/gtk/WebKitWebContext.h: * UIProcess/API/gtk/WebKitWebsiteDataManager.h: * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt: * UIProcess/API/wpe/WebKitNetworkProxySettings.h: * UIProcess/API/wpe/WebKitWebContext.h: * UIProcess/API/wpe/WebKitWebsiteDataManager.h: * UIProcess/API/wpe/docs/wpe-1.0-sections.txt: * UIProcess/WebProcessPool.h: * UIProcess/WebsiteData/WebsiteDataStore.h: (WebKit::WebsiteDataStore::networkProxySettings const): * UIProcess/WebsiteData/soup/WebsiteDataStoreSoup.cpp: (WebKit::WebsiteDataStore::platformSetNetworkParameters): (WebKit::WebsiteDataStore::setNetworkProxySettings): * UIProcess/glib/WebProcessPoolGLib.cpp: (WebKit::WebProcessPool::platformInitializeWebProcess): * UIProcess/soup/WebProcessPoolSoup.cpp: (WebKit::WebProcessPool::platformInitializeNetworkProcess): (WebKit::WebProcessPool::setNetworkProxySettings): Deleted. Tools: Use the new API in tests. * TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp: (testWebContextProxySettings): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@267534 268f45cc-cd09-0410-ab3c-d52691b4dbfc
1 parent 7e8eed5 commit dbbc4cc

34 files changed

+245
-135
lines changed

Source/WebCore/ChangeLog

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,19 @@
1+
2020-09-24 Carlos Garcia Campos <[email protected]>
2+
3+
[GTK][WPE] Move proxy settings from WebKitContext to WebKitWebsiteDataManager
4+
https://bugs.webkit.org/show_bug.cgi?id=216927
5+
6+
Reviewed by Alex Christensen.
7+
8+
Make proxySettings a member of SoupNetworkSession, instead of being global.
9+
10+
* platform/network/soup/SoupNetworkSession.cpp:
11+
(WebCore::SoupNetworkSession::SoupNetworkSession):
12+
(WebCore::SoupNetworkSession::setProxySettings):
13+
(WebCore::proxySettings): Deleted.
14+
(WebCore::SoupNetworkSession::setupProxy): Deleted.
15+
* platform/network/soup/SoupNetworkSession.h:
16+
117
2020-09-24 Chris Dumez <[email protected]>
218

319
web audio api outputs silence for 302 redirected resource in safari

Source/WebCore/platform/network/soup/SoupNetworkSession.cpp

Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
#include "AuthenticationChallenge.h"
3333
#include "GUniquePtrSoup.h"
3434
#include "Logging.h"
35-
#include "SoupNetworkProxySettings.h"
3635
#include <glib/gstdio.h>
3736
#include <libsoup/soup.h>
3837
#include <pal/crypto/CryptoDigest.h>
@@ -50,12 +49,6 @@ static CString& initialAcceptLanguages()
5049
return storage.get();
5150
}
5251

53-
static SoupNetworkProxySettings& proxySettings()
54-
{
55-
static NeverDestroyed<SoupNetworkProxySettings> settings;
56-
return settings.get();
57-
}
58-
5952
#if !LOG_DISABLED || !RELEASE_LOG_DISABLED
6053
inline static void soupLogPrinter(SoupLogger*, SoupLoggerLogLevel, char direction, const char* data, gpointer)
6154
{
@@ -142,8 +135,6 @@ SoupNetworkSession::SoupNetworkSession(PAL::SessionID sessionID)
142135
nullptr);
143136
}
144137

145-
if (proxySettings().mode != SoupNetworkProxySettings::Mode::Default)
146-
setupProxy();
147138
setupLogger();
148139
}
149140

@@ -277,10 +268,12 @@ void SoupNetworkSession::clearOldSoupCache(const String& cacheDirectory)
277268
}
278269
}
279270

280-
void SoupNetworkSession::setupProxy()
271+
void SoupNetworkSession::setProxySettings(SoupNetworkProxySettings&& settings)
281272
{
273+
m_proxySettings = WTFMove(settings);
274+
282275
GRefPtr<GProxyResolver> resolver;
283-
switch (proxySettings().mode) {
276+
switch (m_proxySettings.mode) {
284277
case SoupNetworkProxySettings::Mode::Default: {
285278
GRefPtr<GProxyResolver> currentResolver;
286279
g_object_get(m_soupSession.get(), SOUP_SESSION_PROXY_RESOLVER, &currentResolver.outPtr(), nullptr);
@@ -295,11 +288,11 @@ void SoupNetworkSession::setupProxy()
295288
break;
296289
case SoupNetworkProxySettings::Mode::Custom:
297290
resolver = adoptGRef(g_simple_proxy_resolver_new(nullptr, nullptr));
298-
if (!proxySettings().defaultProxyURL.isNull())
299-
g_simple_proxy_resolver_set_default_proxy(G_SIMPLE_PROXY_RESOLVER(resolver.get()), proxySettings().defaultProxyURL.data());
300-
if (proxySettings().ignoreHosts)
301-
g_simple_proxy_resolver_set_ignore_hosts(G_SIMPLE_PROXY_RESOLVER(resolver.get()), proxySettings().ignoreHosts.get());
302-
for (const auto& iter : proxySettings().proxyMap)
291+
if (!m_proxySettings.defaultProxyURL.isNull())
292+
g_simple_proxy_resolver_set_default_proxy(G_SIMPLE_PROXY_RESOLVER(resolver.get()), m_proxySettings.defaultProxyURL.data());
293+
if (m_proxySettings.ignoreHosts)
294+
g_simple_proxy_resolver_set_ignore_hosts(G_SIMPLE_PROXY_RESOLVER(resolver.get()), m_proxySettings.ignoreHosts.get());
295+
for (const auto& iter : m_proxySettings.proxyMap)
303296
g_simple_proxy_resolver_set_uri_proxy(G_SIMPLE_PROXY_RESOLVER(resolver.get()), iter.key.data(), iter.value.data());
304297
break;
305298
}
@@ -308,11 +301,6 @@ void SoupNetworkSession::setupProxy()
308301
soup_session_abort(m_soupSession.get());
309302
}
310303

311-
void SoupNetworkSession::setProxySettings(const SoupNetworkProxySettings& settings)
312-
{
313-
proxySettings() = settings;
314-
}
315-
316304
void SoupNetworkSession::setInitialAcceptLanguages(const CString& languages)
317305
{
318306
initialAcceptLanguages() = languages;

Source/WebCore/platform/network/soup/SoupNetworkSession.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
#pragma once
2727

28+
#include "SoupNetworkProxySettings.h"
2829
#include <gio/gio.h>
2930
#include <glib-object.h>
3031
#include <pal/SessionID.h>
@@ -43,7 +44,6 @@ namespace WebCore {
4344

4445
class CertificateInfo;
4546
class ResourceError;
46-
struct SoupNetworkProxySettings;
4747

4848
class SoupNetworkSession {
4949
WTF_MAKE_NONCOPYABLE(SoupNetworkSession); WTF_MAKE_FAST_ALLOCATED;
@@ -60,8 +60,7 @@ class SoupNetworkSession {
6060

6161
static void clearOldSoupCache(const String& cacheDirectory);
6262

63-
static void setProxySettings(const SoupNetworkProxySettings&);
64-
void setupProxy();
63+
void setProxySettings(SoupNetworkProxySettings&&);
6564

6665
static void setInitialAcceptLanguages(const CString&);
6766
void setAcceptLanguages(const CString&);
@@ -80,6 +79,7 @@ class SoupNetworkSession {
8079
GRefPtr<SoupSession> m_soupSession;
8180
PAL::SessionID m_sessionID;
8281
bool m_ignoreTLSErrors { false };
82+
SoupNetworkProxySettings m_proxySettings;
8383
};
8484

8585
} // namespace WebCore

Source/WebKit/ChangeLog

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,62 @@
1+
2020-09-24 Carlos Garcia Campos <[email protected]>
2+
3+
[GTK][WPE] Move proxy settings from WebKitContext to WebKitWebsiteDataManager
4+
https://bugs.webkit.org/show_bug.cgi?id=216927
5+
6+
Reviewed by Alex Christensen.
7+
8+
Make proxy settings per session instead of global to the network process. The web context API now simply
9+
forwards the request to the website data manager.
10+
11+
* NetworkProcess/NetworkProcess.h:
12+
* NetworkProcess/NetworkProcess.messages.in:
13+
* NetworkProcess/NetworkProcessCreationParameters.cpp:
14+
(WebKit::NetworkProcessCreationParameters::encode const):
15+
(WebKit::NetworkProcessCreationParameters::decode):
16+
* NetworkProcess/NetworkProcessCreationParameters.h:
17+
* NetworkProcess/NetworkSessionCreationParameters.cpp:
18+
(WebKit::NetworkSessionCreationParameters::encode const):
19+
(WebKit::NetworkSessionCreationParameters::decode):
20+
* NetworkProcess/NetworkSessionCreationParameters.h:
21+
* NetworkProcess/soup/NetworkProcessSoup.cpp:
22+
(WebKit::NetworkProcess::platformInitializeNetworkProcess):
23+
(WebKit::NetworkProcess::setNetworkProxySettings):
24+
* NetworkProcess/soup/NetworkSessionSoup.cpp:
25+
(WebKit::NetworkSessionSoup::NetworkSessionSoup):
26+
(WebKit::NetworkSessionSoup::setProxySettings):
27+
* NetworkProcess/soup/NetworkSessionSoup.h:
28+
* Shared/WebProcessCreationParameters.cpp:
29+
(WebKit::WebProcessCreationParameters::encode const):
30+
(WebKit::WebProcessCreationParameters::decode):
31+
* Shared/WebProcessCreationParameters.h:
32+
* UIProcess/API/glib/WebKitAutomationSession.cpp:
33+
(webkitAutomationSessionCreate):
34+
* UIProcess/API/glib/WebKitWebContext.cpp:
35+
(webkit_web_context_set_network_proxy_settings):
36+
* UIProcess/API/glib/WebKitWebView.cpp:
37+
(webkitWebViewConstructed):
38+
* UIProcess/API/glib/WebKitWebsiteDataManager.cpp:
39+
(webkit_website_data_manager_set_network_proxy_settings):
40+
* UIProcess/API/gtk/WebKitNetworkProxySettings.h:
41+
* UIProcess/API/gtk/WebKitWebContext.h:
42+
* UIProcess/API/gtk/WebKitWebsiteDataManager.h:
43+
* UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
44+
* UIProcess/API/wpe/WebKitNetworkProxySettings.h:
45+
* UIProcess/API/wpe/WebKitWebContext.h:
46+
* UIProcess/API/wpe/WebKitWebsiteDataManager.h:
47+
* UIProcess/API/wpe/docs/wpe-1.0-sections.txt:
48+
* UIProcess/WebProcessPool.h:
49+
* UIProcess/WebsiteData/WebsiteDataStore.h:
50+
(WebKit::WebsiteDataStore::networkProxySettings const):
51+
* UIProcess/WebsiteData/soup/WebsiteDataStoreSoup.cpp:
52+
(WebKit::WebsiteDataStore::platformSetNetworkParameters):
53+
(WebKit::WebsiteDataStore::setNetworkProxySettings):
54+
* UIProcess/glib/WebProcessPoolGLib.cpp:
55+
(WebKit::WebProcessPool::platformInitializeWebProcess):
56+
* UIProcess/soup/WebProcessPoolSoup.cpp:
57+
(WebKit::WebProcessPool::platformInitializeNetworkProcess):
58+
(WebKit::WebProcessPool::setNetworkProxySettings): Deleted.
59+
160
2020-09-24 Carlos Garcia Campos <[email protected]>
261

362
REGRESSION(r267502): [GTK][WPE] ephemeral WebKitWebsiteDataManager ignores TLS errors by default

Source/WebKit/NetworkProcess/NetworkProcess.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -447,7 +447,7 @@ class NetworkProcess : public AuxiliaryProcess, private DownloadManager::Client,
447447
#if USE(SOUP)
448448
void setIgnoreTLSErrors(PAL::SessionID, bool);
449449
void userPreferredLanguagesChanged(const Vector<String>&);
450-
void setNetworkProxySettings(const WebCore::SoupNetworkProxySettings&);
450+
void setNetworkProxySettings(PAL::SessionID, WebCore::SoupNetworkProxySettings&&);
451451
void setPersistentCredentialStorageEnabled(PAL::SessionID, bool);
452452
#endif
453453

Source/WebKit/NetworkProcess/NetworkProcess.messages.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ messages -> NetworkProcess LegacyReceiver {
3030
#if USE(SOUP)
3131
SetIgnoreTLSErrors(PAL::SessionID sessionID, bool ignoreTLSErrors)
3232
UserPreferredLanguagesChanged(Vector<String> languages)
33-
SetNetworkProxySettings(struct WebCore::SoupNetworkProxySettings settings)
33+
SetNetworkProxySettings(PAL::SessionID sessionID, struct WebCore::SoupNetworkProxySettings settings)
3434
PrefetchDNS(String hostname)
3535
SetPersistentCredentialStorageEnabled(PAL::SessionID sessionID, bool enabled)
3636
#endif

Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ void NetworkProcessCreationParameters::encode(IPC::Encoder& encoder) const
5959
#if USE(SOUP)
6060
encoder << cookieAcceptPolicy;
6161
encoder << languages;
62-
encoder << proxySettings;
6362
#endif
6463

6564
encoder << urlSchemesRegisteredAsSecure;
@@ -126,8 +125,6 @@ bool NetworkProcessCreationParameters::decode(IPC::Decoder& decoder, NetworkProc
126125
return false;
127126
if (!decoder.decode(result.languages))
128127
return false;
129-
if (!decoder.decode(result.proxySettings))
130-
return false;
131128
#endif
132129

133130
if (!decoder.decode(result.urlSchemesRegisteredAsSecure))

Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535

3636
#if USE(SOUP)
3737
#include <WebCore/HTTPCookieAcceptPolicy.h>
38-
#include <WebCore/SoupNetworkProxySettings.h>
3938
#endif
4039

4140
namespace IPC {
@@ -76,7 +75,6 @@ struct NetworkProcessCreationParameters {
7675
#if USE(SOUP)
7776
WebCore::HTTPCookieAcceptPolicy cookieAcceptPolicy { WebCore::HTTPCookieAcceptPolicy::AlwaysAccept };
7877
Vector<String> languages;
79-
WebCore::SoupNetworkProxySettings proxySettings;
8078
#endif
8179

8280
Vector<String> urlSchemesRegisteredAsSecure;

Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ void NetworkSessionCreationParameters::encode(IPC::Encoder& encoder) const
6464
encoder << cookiePersistentStorageType;
6565
encoder << persistentCredentialStorageEnabled;
6666
encoder << ignoreTLSErrors;
67+
encoder << proxySettings;
6768
#endif
6869
#if USE(CURL)
6970
encoder << cookiePersistentStorageFile;
@@ -187,6 +188,11 @@ Optional<NetworkSessionCreationParameters> NetworkSessionCreationParameters::dec
187188
decoder >> ignoreTLSErrors;
188189
if (!ignoreTLSErrors)
189190
return WTF::nullopt;
191+
192+
Optional<WebCore::SoupNetworkProxySettings> proxySettings;
193+
decoder >> proxySettings;
194+
if (!proxySettings)
195+
return WTF::nullopt;
190196
#endif
191197

192198
#if USE(CURL)
@@ -306,6 +312,7 @@ Optional<NetworkSessionCreationParameters> NetworkSessionCreationParameters::dec
306312
, WTFMove(*cookiePersistentStorageType)
307313
, WTFMove(*persistentCredentialStorageEnabled)
308314
, WTFMove(*ignoreTLSErrors)
315+
, WTFMove(*proxySettings)
309316
#endif
310317
#if USE(CURL)
311318
, WTFMove(*cookiePersistentStorageFile)

Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333

3434
#if USE(SOUP)
3535
#include "SoupCookiePersistentStorageType.h"
36+
#include <WebCore/SoupNetworkProxySettings.h>
3637
#endif
3738

3839
#if USE(CURL)
@@ -76,6 +77,7 @@ struct NetworkSessionCreationParameters {
7677
SoupCookiePersistentStorageType cookiePersistentStorageType { SoupCookiePersistentStorageType::Text };
7778
bool persistentCredentialStorageEnabled { true };
7879
bool ignoreTLSErrors { false };
80+
WebCore::SoupNetworkProxySettings proxySettings;
7981
#endif
8082
#if USE(CURL)
8183
String cookiePersistentStorageFile;

0 commit comments

Comments
 (0)