Changeset 267534 in webkit
- Timestamp:
- Sep 24, 2020, 9:14:55 AM (6 years ago)
- Location:
- trunk
- Files:
-
- 34 edited
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/platform/network/soup/SoupNetworkSession.cpp (modified) (6 diffs)
-
Source/WebCore/platform/network/soup/SoupNetworkSession.h (modified) (4 diffs)
-
Source/WebKit/ChangeLog (modified) (1 diff)
-
Source/WebKit/NetworkProcess/NetworkProcess.h (modified) (1 diff)
-
Source/WebKit/NetworkProcess/NetworkProcess.messages.in (modified) (1 diff)
-
Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp (modified) (2 diffs)
-
Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h (modified) (2 diffs)
-
Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.cpp (modified) (3 diffs)
-
Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h (modified) (2 diffs)
-
Source/WebKit/NetworkProcess/soup/NetworkProcessSoup.cpp (modified) (2 diffs)
-
Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.cpp (modified) (2 diffs)
-
Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.h (modified) (2 diffs)
-
Source/WebKit/Shared/WebProcessCreationParameters.cpp (modified) (2 diffs)
-
Source/WebKit/Shared/WebProcessCreationParameters.h (modified) (2 diffs)
-
Source/WebKit/UIProcess/API/glib/WebKitAutomationSession.cpp (modified) (1 diff)
-
Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp (modified) (2 diffs)
-
Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp (modified) (1 diff)
-
Source/WebKit/UIProcess/API/glib/WebKitWebsiteDataManager.cpp (modified) (2 diffs)
-
Source/WebKit/UIProcess/API/gtk/WebKitNetworkProxySettings.h (modified) (1 diff)
-
Source/WebKit/UIProcess/API/gtk/WebKitWebContext.h (modified) (2 diffs)
-
Source/WebKit/UIProcess/API/gtk/WebKitWebsiteDataManager.h (modified) (2 diffs)
-
Source/WebKit/UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt (modified) (3 diffs)
-
Source/WebKit/UIProcess/API/wpe/WebKitNetworkProxySettings.h (modified) (1 diff)
-
Source/WebKit/UIProcess/API/wpe/WebKitWebContext.h (modified) (2 diffs)
-
Source/WebKit/UIProcess/API/wpe/WebKitWebsiteDataManager.h (modified) (2 diffs)
-
Source/WebKit/UIProcess/API/wpe/docs/wpe-1.0-sections.txt (modified) (3 diffs)
-
Source/WebKit/UIProcess/WebProcessPool.h (modified) (3 diffs)
-
Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h (modified) (3 diffs)
-
Source/WebKit/UIProcess/WebsiteData/soup/WebsiteDataStoreSoup.cpp (modified) (2 diffs)
-
Source/WebKit/UIProcess/glib/WebProcessPoolGLib.cpp (modified) (1 diff)
-
Source/WebKit/UIProcess/soup/WebProcessPoolSoup.cpp (modified) (1 diff)
-
Tools/ChangeLog (modified) (1 diff)
-
Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r267532 r267534 1 2020-09-24 Carlos Garcia Campos <cgarcia@igalia.com> 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 1 17 2020-09-24 Chris Dumez <cdumez@apple.com> 2 18 -
trunk/Source/WebCore/platform/network/soup/SoupNetworkSession.cpp
r267502 r267534 33 33 #include "GUniquePtrSoup.h" 34 34 #include "Logging.h" 35 #include "SoupNetworkProxySettings.h"36 35 #include <glib/gstdio.h> 37 36 #include <libsoup/soup.h> … … 49 48 static NeverDestroyed<CString> storage; 50 49 return storage.get(); 51 }52 53 static SoupNetworkProxySettings& proxySettings()54 {55 static NeverDestroyed<SoupNetworkProxySettings> settings;56 return settings.get();57 50 } 58 51 … … 143 136 } 144 137 145 if (proxySettings().mode != SoupNetworkProxySettings::Mode::Default)146 setupProxy();147 138 setupLogger(); 148 139 } … … 278 269 } 279 270 280 void SoupNetworkSession::setupProxy() 281 { 271 void SoupNetworkSession::setProxySettings(SoupNetworkProxySettings&& settings) 272 { 273 m_proxySettings = WTFMove(settings); 274 282 275 GRefPtr<GProxyResolver> resolver; 283 switch ( proxySettings().mode) {276 switch (m_proxySettings.mode) { 284 277 case SoupNetworkProxySettings::Mode::Default: { 285 278 GRefPtr<GProxyResolver> currentResolver; … … 296 289 case SoupNetworkProxySettings::Mode::Custom: 297 290 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) 303 296 g_simple_proxy_resolver_set_uri_proxy(G_SIMPLE_PROXY_RESOLVER(resolver.get()), iter.key.data(), iter.value.data()); 304 297 break; … … 307 300 g_object_set(m_soupSession.get(), SOUP_SESSION_PROXY_RESOLVER, resolver.get(), nullptr); 308 301 soup_session_abort(m_soupSession.get()); 309 }310 311 void SoupNetworkSession::setProxySettings(const SoupNetworkProxySettings& settings)312 {313 proxySettings() = settings;314 302 } 315 303 -
trunk/Source/WebCore/platform/network/soup/SoupNetworkSession.h
r267502 r267534 26 26 #pragma once 27 27 28 #include "SoupNetworkProxySettings.h" 28 29 #include <gio/gio.h> 29 30 #include <glib-object.h> … … 44 45 class CertificateInfo; 45 46 class ResourceError; 46 struct SoupNetworkProxySettings;47 47 48 48 class SoupNetworkSession { … … 61 61 static void clearOldSoupCache(const String& cacheDirectory); 62 62 63 static void setProxySettings(const SoupNetworkProxySettings&); 64 void setupProxy(); 63 void setProxySettings(SoupNetworkProxySettings&&); 65 64 66 65 static void setInitialAcceptLanguages(const CString&); … … 81 80 PAL::SessionID m_sessionID; 82 81 bool m_ignoreTLSErrors { false }; 82 SoupNetworkProxySettings m_proxySettings; 83 83 }; 84 84 -
trunk/Source/WebKit/ChangeLog
r267524 r267534 1 2020-09-24 Carlos Garcia Campos <cgarcia@igalia.com> 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 1 60 2020-09-24 Carlos Garcia Campos <cgarcia@igalia.com> 2 61 -
trunk/Source/WebKit/NetworkProcess/NetworkProcess.h
r267502 r267534 448 448 void setIgnoreTLSErrors(PAL::SessionID, bool); 449 449 void userPreferredLanguagesChanged(const Vector<String>&); 450 void setNetworkProxySettings( const WebCore::SoupNetworkProxySettings&);450 void setNetworkProxySettings(PAL::SessionID, WebCore::SoupNetworkProxySettings&&); 451 451 void setPersistentCredentialStorageEnabled(PAL::SessionID, bool); 452 452 #endif -
trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in
r267502 r267534 31 31 SetIgnoreTLSErrors(PAL::SessionID sessionID, bool ignoreTLSErrors) 32 32 UserPreferredLanguagesChanged(Vector<String> languages) 33 SetNetworkProxySettings( struct WebCore::SoupNetworkProxySettings settings)33 SetNetworkProxySettings(PAL::SessionID sessionID, struct WebCore::SoupNetworkProxySettings settings) 34 34 PrefetchDNS(String hostname) 35 35 SetPersistentCredentialStorageEnabled(PAL::SessionID sessionID, bool enabled) -
trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp
r267502 r267534 60 60 encoder << cookieAcceptPolicy; 61 61 encoder << languages; 62 encoder << proxySettings;63 62 #endif 64 63 … … 127 126 if (!decoder.decode(result.languages)) 128 127 return false; 129 if (!decoder.decode(result.proxySettings))130 return false;131 128 #endif 132 129 -
trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h
r267502 r267534 36 36 #if USE(SOUP) 37 37 #include <WebCore/HTTPCookieAcceptPolicy.h> 38 #include <WebCore/SoupNetworkProxySettings.h>39 38 #endif 40 39 … … 77 76 WebCore::HTTPCookieAcceptPolicy cookieAcceptPolicy { WebCore::HTTPCookieAcceptPolicy::AlwaysAccept }; 78 77 Vector<String> languages; 79 WebCore::SoupNetworkProxySettings proxySettings;80 78 #endif 81 79 -
trunk/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.cpp
r267502 r267534 65 65 encoder << persistentCredentialStorageEnabled; 66 66 encoder << ignoreTLSErrors; 67 encoder << proxySettings; 67 68 #endif 68 69 #if USE(CURL) … … 188 189 if (!ignoreTLSErrors) 189 190 return WTF::nullopt; 191 192 Optional<WebCore::SoupNetworkProxySettings> proxySettings; 193 decoder >> proxySettings; 194 if (!proxySettings) 195 return WTF::nullopt; 190 196 #endif 191 197 … … 307 313 , WTFMove(*persistentCredentialStorageEnabled) 308 314 , WTFMove(*ignoreTLSErrors) 315 , WTFMove(*proxySettings) 309 316 #endif 310 317 #if USE(CURL) -
trunk/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h
r267502 r267534 34 34 #if USE(SOUP) 35 35 #include "SoupCookiePersistentStorageType.h" 36 #include <WebCore/SoupNetworkProxySettings.h> 36 37 #endif 37 38 … … 77 78 bool persistentCredentialStorageEnabled { true }; 78 79 bool ignoreTLSErrors { false }; 80 WebCore::SoupNetworkProxySettings proxySettings; 79 81 #endif 80 82 #if USE(CURL) -
trunk/Source/WebKit/NetworkProcess/soup/NetworkProcessSoup.cpp
r267502 r267534 126 126 void NetworkProcess::platformInitializeNetworkProcess(const NetworkProcessCreationParameters& parameters) 127 127 { 128 if (parameters.proxySettings.mode != SoupNetworkProxySettings::Mode::Default)129 setNetworkProxySettings(parameters.proxySettings);130 131 128 GRefPtr<GResolver> cachedResolver = adoptGRef(webkitCachedResolverNew(adoptGRef(g_resolver_get_default()))); 132 129 g_resolver_set_default(cachedResolver.get()); … … 169 166 } 170 167 171 void NetworkProcess::setNetworkProxySettings( const SoupNetworkProxySettings& settings)168 void NetworkProcess::setNetworkProxySettings(PAL::SessionID sessionID, SoupNetworkProxySettings&& settings) 172 169 { 173 SoupNetworkSession::setProxySettings(settings); 174 forEachNetworkSession([](const auto& session) { 175 static_cast<const NetworkSessionSoup&>(session).soupNetworkSession().setupProxy(); 176 }); 170 if (auto* session = networkSession(sessionID)) 171 static_cast<NetworkSessionSoup&>(*session).setProxySettings(WTFMove(settings)); 177 172 } 178 173 -
trunk/Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.cpp
r267502 r267534 49 49 50 50 setIgnoreTLSErrors(parameters.ignoreTLSErrors); 51 52 if (parameters.proxySettings.mode != SoupNetworkProxySettings::Mode::Default) 53 setProxySettings(WTFMove(parameters.proxySettings)); 51 54 52 55 if (!parameters.cookiePersistentStoragePath.isEmpty()) … … 137 140 } 138 141 142 void NetworkSessionSoup::setProxySettings(SoupNetworkProxySettings&& settings) 143 { 144 m_networkSession->setProxySettings(WTFMove(settings)); 145 } 146 139 147 } // namespace WebKit -
trunk/Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.h
r267502 r267534 33 33 namespace WebCore { 34 34 class SoupNetworkSession; 35 struct SoupNetworkProxySettings; 35 36 } 36 37 … … 59 60 60 61 void setIgnoreTLSErrors(bool); 62 void setProxySettings(WebCore::SoupNetworkProxySettings&&); 61 63 62 64 private: -
trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp
r267498 r267534 131 131 #endif 132 132 133 #if USE(SOUP)134 encoder << proxySettings;135 #endif136 137 133 #if ENABLE(RESOURCE_LOAD_STATISTICS) && !RELEASE_LOG_DISABLED 138 134 encoder << shouldLogUserInteraction; … … 378 374 #endif 379 375 380 #if USE(SOUP)381 if (!decoder.decode(parameters.proxySettings))382 return false;383 #endif384 385 376 #if ENABLE(RESOURCE_LOAD_STATISTICS) && !RELEASE_LOG_DISABLED 386 377 if (!decoder.decode(parameters.shouldLogUserInteraction)) -
trunk/Source/WebKit/Shared/WebProcessCreationParameters.h
r267516 r267534 44 44 #endif 45 45 46 #if USE(SOUP)47 #include <WebCore/HTTPCookieAcceptPolicy.h>48 #include <WebCore/SoupNetworkProxySettings.h>49 #endif50 51 46 #if PLATFORM(IOS_FAMILY) 52 47 #include <WebCore/RenderThemeIOS.h> … … 175 170 #endif 176 171 177 #if USE(SOUP)178 WebCore::SoupNetworkProxySettings proxySettings;179 #endif180 181 172 #if PLATFORM(COCOA) 182 173 Vector<String> mediaMIMETypes; -
trunk/Source/WebKit/UIProcess/API/glib/WebKitAutomationSession.cpp
r267502 r267534 361 361 WebKitNetworkProxySettings* proxySettings = nullptr; 362 362 auto proxyMode = parseProxyCapabilities(*capabilities.proxy, &proxySettings); 363 webkit_web _context_set_network_proxy_settings(webContext, proxyMode, proxySettings);363 webkit_website_data_manager_set_network_proxy_settings(webkit_web_context_get_website_data_manager(webContext), proxyMode, proxySettings); 364 364 if (proxySettings) 365 365 webkit_network_proxy_settings_free(proxySettings); -
trunk/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp
r267502 r267534 40 40 #include "WebKitInitialize.h" 41 41 #include "WebKitInjectedBundleClient.h" 42 #include "WebKitNetworkProxySettingsPrivate.h"43 42 #include "WebKitNotificationProvider.h" 44 43 #include "WebKitPrivate.h" … … 936 935 * 937 936 * Since: 2.16 937 * 938 * Deprecated: 2.32. Use webkit_website_data_manager_set_network_proxy_settings() instead. 938 939 */ 939 940 void webkit_web_context_set_network_proxy_settings(WebKitWebContext* context, WebKitNetworkProxyMode proxyMode, WebKitNetworkProxySettings* proxySettings) 940 941 { 941 942 g_return_if_fail(WEBKIT_IS_WEB_CONTEXT(context)); 942 g_return_if_fail((proxyMode != WEBKIT_NETWORK_PROXY_MODE_CUSTOM && !proxySettings) || (proxyMode == WEBKIT_NETWORK_PROXY_MODE_CUSTOM && proxySettings)); 943 944 WebKitWebContextPrivate* priv = context->priv; 945 switch (proxyMode) { 946 case WEBKIT_NETWORK_PROXY_MODE_DEFAULT: 947 priv->processPool->setNetworkProxySettings({ }); 948 break; 949 case WEBKIT_NETWORK_PROXY_MODE_NO_PROXY: 950 priv->processPool->setNetworkProxySettings(WebCore::SoupNetworkProxySettings(WebCore::SoupNetworkProxySettings::Mode::NoProxy)); 951 break; 952 case WEBKIT_NETWORK_PROXY_MODE_CUSTOM: 953 const auto& settings = webkitNetworkProxySettingsGetNetworkProxySettings(proxySettings); 954 if (settings.isEmpty()) { 955 g_warning("Invalid attempt to set custom network proxy settings with an empty WebKitNetworkProxySettings. Use " 956 "WEBKIT_NETWORK_PROXY_MODE_NO_PROXY to not use any proxy or WEBKIT_NETWORK_PROXY_MODE_DEFAULT to use the default system settings"); 957 } else 958 priv->processPool->setNetworkProxySettings(settings); 959 break; 960 } 943 944 webkit_website_data_manager_set_network_proxy_settings(context->priv->websiteDataManager.get(), proxyMode, proxySettings); 961 945 } 962 946 -
trunk/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp
r267502 r267534 758 758 auto* contextDataManager = webkit_web_context_get_website_data_manager(priv->context.get()); 759 759 webkit_website_data_manager_set_tls_errors_policy(priv->websiteDataManager.get(), webkit_website_data_manager_get_tls_errors_policy(contextDataManager)); 760 auto proxySettings = webkitWebsiteDataManagerGetDataStore(contextDataManager).networkProxySettings(); 761 webkitWebsiteDataManagerGetDataStore(priv->websiteDataManager.get()).setNetworkProxySettings(WTFMove(proxySettings)); 760 762 webkitWebsiteDataManagerAddProcessPool(priv->websiteDataManager.get(), webkitWebContextGetProcessPool(priv->context.get())); 761 763 } -
trunk/Source/WebKit/UIProcess/API/glib/WebKitWebsiteDataManager.cpp
r267524 r267534 23 23 #include "WebKitCookieManagerPrivate.h" 24 24 #include "WebKitInitialize.h" 25 #include "WebKitNetworkProxySettingsPrivate.h" 25 26 #include "WebKitPrivate.h" 26 27 #include "WebKitWebsiteDataManagerPrivate.h" … … 951 952 952 953 return manager->priv->tlsErrorsPolicy; 954 } 955 956 /** 957 * webkit_website_data_manager_set_network_proxy_settings: 958 * @manager: a #WebKitWebsiteDataManager 959 * @proxy_mode: a #WebKitNetworkProxyMode 960 * @proxy_settings: (allow-none): a #WebKitNetworkProxySettings, or %NULL 961 * 962 * Set the network proxy settings to be used by connections started in @manager session. 963 * By default %WEBKIT_NETWORK_PROXY_MODE_DEFAULT is used, which means that the 964 * system settings will be used (g_proxy_resolver_get_default()). 965 * If you want to override the system default settings, you can either use 966 * %WEBKIT_NETWORK_PROXY_MODE_NO_PROXY to make sure no proxies are used at all, 967 * or %WEBKIT_NETWORK_PROXY_MODE_CUSTOM to provide your own proxy settings. 968 * When @proxy_mode is %WEBKIT_NETWORK_PROXY_MODE_CUSTOM @proxy_settings must be 969 * a valid #WebKitNetworkProxySettings; otherwise, @proxy_settings must be %NULL. 970 * 971 * Since: 2.32 972 */ 973 void webkit_website_data_manager_set_network_proxy_settings(WebKitWebsiteDataManager* manager, WebKitNetworkProxyMode proxyMode, WebKitNetworkProxySettings* proxySettings) 974 { 975 g_return_if_fail(WEBKIT_IS_WEBSITE_DATA_MANAGER(manager)); 976 g_return_if_fail((proxyMode != WEBKIT_NETWORK_PROXY_MODE_CUSTOM && !proxySettings) || (proxyMode == WEBKIT_NETWORK_PROXY_MODE_CUSTOM && proxySettings)); 977 978 auto& dataStore = webkitWebsiteDataManagerGetDataStore(manager); 979 switch (proxyMode) { 980 case WEBKIT_NETWORK_PROXY_MODE_DEFAULT: 981 dataStore.setNetworkProxySettings({ }); 982 break; 983 case WEBKIT_NETWORK_PROXY_MODE_NO_PROXY: 984 dataStore.setNetworkProxySettings(WebCore::SoupNetworkProxySettings(WebCore::SoupNetworkProxySettings::Mode::NoProxy)); 985 break; 986 case WEBKIT_NETWORK_PROXY_MODE_CUSTOM: 987 auto settings = webkitNetworkProxySettingsGetNetworkProxySettings(proxySettings); 988 if (settings.isEmpty()) { 989 g_warning("Invalid attempt to set custom network proxy settings with an empty WebKitNetworkProxySettings. Use " 990 "WEBKIT_NETWORK_PROXY_MODE_NO_PROXY to not use any proxy or WEBKIT_NETWORK_PROXY_MODE_DEFAULT to use the default system settings"); 991 } else 992 dataStore.setNetworkProxySettings(WTFMove(settings)); 993 break; 994 } 953 995 } 954 996 -
trunk/Source/WebKit/UIProcess/API/gtk/WebKitNetworkProxySettings.h
r210921 r267534 32 32 #define WEBKIT_TYPE_NETWORK_NETWORK_PROXY_SETTINGS (webkit_network_proxy_settings_get_type()) 33 33 34 /** 35 * WebKitNetworkProxyMode: 36 * @WEBKIT_NETWORK_PROXY_MODE_DEFAULT: Use the default proxy of the system. 37 * @WEBKIT_NETWORK_PROXY_MODE_NO_PROXY: Do not use any proxy. 38 * @WEBKIT_NETWORK_PROXY_MODE_CUSTOM: Use custom proxy settings. 39 * 40 * Enum values used to set the network proxy mode. 41 * 42 * Since: 2.16 43 */ 44 typedef enum { 45 WEBKIT_NETWORK_PROXY_MODE_DEFAULT, 46 WEBKIT_NETWORK_PROXY_MODE_NO_PROXY, 47 WEBKIT_NETWORK_PROXY_MODE_CUSTOM 48 } WebKitNetworkProxyMode; 49 34 50 typedef struct _WebKitNetworkProxySettings WebKitNetworkProxySettings; 35 51 -
trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebContext.h
r267502 r267534 90 90 91 91 /** 92 * WebKitNetworkProxyMode:93 * @WEBKIT_NETWORK_PROXY_MODE_DEFAULT: Use the default proxy of the system.94 * @WEBKIT_NETWORK_PROXY_MODE_NO_PROXY: Do not use any proxy.95 * @WEBKIT_NETWORK_PROXY_MODE_CUSTOM: Use custom proxy settings.96 *97 * Enum values used to set the network proxy mode.98 *99 * Since: 2.16100 */101 typedef enum {102 WEBKIT_NETWORK_PROXY_MODE_DEFAULT,103 WEBKIT_NETWORK_PROXY_MODE_NO_PROXY,104 WEBKIT_NETWORK_PROXY_MODE_CUSTOM105 } WebKitNetworkProxyMode;106 107 /**108 92 * WebKitURISchemeRequestCallback: 109 93 * @request: the #WebKitURISchemeRequest … … 187 171 webkit_web_context_clear_cache (WebKitWebContext *context); 188 172 189 WEBKIT_ APIvoid173 WEBKIT_DEPRECATED_FOR(webkit_website_data_manager_set_network_proxy_settings) void 190 174 webkit_web_context_set_network_proxy_settings (WebKitWebContext *context, 191 175 WebKitNetworkProxyMode proxy_mode, -
trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebsiteDataManager.h
r267502 r267534 28 28 #include <webkit2/WebKitCookieManager.h> 29 29 #include <webkit2/WebKitDefines.h> 30 #include <webkit2/WebKitNetworkProxySettings.h> 30 31 #include <webkit2/WebKitWebsiteData.h> 31 32 … … 141 142 WEBKIT_API WebKitTLSErrorsPolicy 142 143 webkit_website_data_manager_get_tls_errors_policy (WebKitWebsiteDataManager *manager); 144 145 WEBKIT_API void 146 webkit_website_data_manager_set_network_proxy_settings (WebKitWebsiteDataManager *manager, 147 WebKitNetworkProxyMode proxy_mode, 148 WebKitNetworkProxySettings *proxy_settings); 143 149 144 150 WEBKIT_API void -
trunk/Source/WebKit/UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt
r267502 r267534 27 27 WebKitCacheModel 28 28 WebKitProcessModel 29 WebKitNetworkProxyMode30 29 webkit_web_context_get_default 31 30 webkit_web_context_new … … 1475 1474 webkit_website_data_manager_set_tls_errors_policy 1476 1475 webkit_website_data_manager_get_tls_errors_policy 1476 webkit_website_data_manager_set_network_proxy_settings 1477 1477 webkit_website_data_manager_fetch 1478 1478 webkit_website_data_manager_fetch_finish … … 1537 1537 <FILE>WebKitNetworkProxySettings</FILE> 1538 1538 WebKitNetworkProxySettings 1539 WebKitNetworkProxyMode 1539 1540 webkit_network_proxy_settings_new 1540 1541 webkit_network_proxy_settings_copy -
trunk/Source/WebKit/UIProcess/API/wpe/WebKitNetworkProxySettings.h
r218553 r267534 32 32 #define WEBKIT_TYPE_NETWORK_NETWORK_PROXY_SETTINGS (webkit_network_proxy_settings_get_type()) 33 33 34 /** 35 * WebKitNetworkProxyMode: 36 * @WEBKIT_NETWORK_PROXY_MODE_DEFAULT: Use the default proxy of the system. 37 * @WEBKIT_NETWORK_PROXY_MODE_NO_PROXY: Do not use any proxy. 38 * @WEBKIT_NETWORK_PROXY_MODE_CUSTOM: Use custom proxy settings. 39 * 40 * Enum values used to set the network proxy mode. 41 * 42 * Since: 2.16 43 */ 44 typedef enum { 45 WEBKIT_NETWORK_PROXY_MODE_DEFAULT, 46 WEBKIT_NETWORK_PROXY_MODE_NO_PROXY, 47 WEBKIT_NETWORK_PROXY_MODE_CUSTOM 48 } WebKitNetworkProxyMode; 49 34 50 typedef struct _WebKitNetworkProxySettings WebKitNetworkProxySettings; 35 51 -
trunk/Source/WebKit/UIProcess/API/wpe/WebKitWebContext.h
r267502 r267534 90 90 91 91 /** 92 * WebKitNetworkProxyMode:93 * @WEBKIT_NETWORK_PROXY_MODE_DEFAULT: Use the default proxy of the system.94 * @WEBKIT_NETWORK_PROXY_MODE_NO_PROXY: Do not use any proxy.95 * @WEBKIT_NETWORK_PROXY_MODE_CUSTOM: Use custom proxy settings.96 *97 * Enum values used to set the network proxy mode.98 *99 * Since: 2.16100 */101 typedef enum {102 WEBKIT_NETWORK_PROXY_MODE_DEFAULT,103 WEBKIT_NETWORK_PROXY_MODE_NO_PROXY,104 WEBKIT_NETWORK_PROXY_MODE_CUSTOM105 } WebKitNetworkProxyMode;106 107 /**108 92 * WebKitURISchemeRequestCallback: 109 93 * @request: the #WebKitURISchemeRequest … … 187 171 webkit_web_context_clear_cache (WebKitWebContext *context); 188 172 189 WEBKIT_ APIvoid173 WEBKIT_DEPRECATED_FOR(webkit_website_data_manager_set_network_proxy_settings) void 190 174 webkit_web_context_set_network_proxy_settings (WebKitWebContext *context, 191 175 WebKitNetworkProxyMode proxy_mode, -
trunk/Source/WebKit/UIProcess/API/wpe/WebKitWebsiteDataManager.h
r267502 r267534 28 28 #include <wpe/WebKitCookieManager.h> 29 29 #include <wpe/WebKitDefines.h> 30 #include <wpe/WebKitNetworkProxySettings.h> 30 31 #include <wpe/WebKitWebsiteData.h> 31 32 … … 141 142 WEBKIT_API WebKitTLSErrorsPolicy 142 143 webkit_website_data_manager_get_tls_errors_policy (WebKitWebsiteDataManager *manager); 144 145 WEBKIT_API void 146 webkit_website_data_manager_set_network_proxy_settings (WebKitWebsiteDataManager *manager, 147 WebKitNetworkProxyMode proxy_mode, 148 WebKitNetworkProxySettings *proxy_settings); 143 149 144 150 WEBKIT_API void -
trunk/Source/WebKit/UIProcess/API/wpe/docs/wpe-1.0-sections.txt
r267502 r267534 5 5 WebKitCacheModel 6 6 WebKitProcessModel 7 WebKitNetworkProxyMode8 7 webkit_web_context_get_default 9 8 webkit_web_context_new … … 1409 1408 webkit_website_data_manager_set_tls_errors_policy 1410 1409 webkit_website_data_manager_get_tls_errors_policy 1410 webkit_website_data_manager_set_network_proxy_settings 1411 1411 webkit_website_data_manager_fetch 1412 1412 webkit_website_data_manager_fetch_finish … … 1471 1471 <FILE>WebKitNetworkProxySettings</FILE> 1472 1472 WebKitNetworkProxySettings 1473 WebKitNetworkProxyMode 1473 1474 webkit_network_proxy_settings_new 1474 1475 webkit_network_proxy_settings_copy -
trunk/Source/WebKit/UIProcess/WebProcessPool.h
r267502 r267534 64 64 #endif 65 65 66 #if USE(SOUP)67 #include <WebCore/SoupNetworkProxySettings.h>68 #endif69 70 66 #if PLATFORM(COCOA) 71 67 OBJC_CLASS NSMutableDictionary; … … 297 293 #if USE(SOUP) 298 294 void setInitialHTTPCookieAcceptPolicy(WebCore::HTTPCookieAcceptPolicy policy) { m_initialHTTPCookieAcceptPolicy = policy; } 299 void setNetworkProxySettings(const WebCore::SoupNetworkProxySettings&);300 295 #endif 301 296 void setEnhancedAccessibility(bool); … … 683 678 #if USE(SOUP) 684 679 WebCore::HTTPCookieAcceptPolicy m_initialHTTPCookieAcceptPolicy { WebCore::HTTPCookieAcceptPolicy::ExclusivelyFromMainDocumentDomain }; 685 WebCore::SoupNetworkProxySettings m_networkProxySettings;686 680 #endif 687 681 -
trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h
r267502 r267534 58 58 #if USE(CURL) 59 59 #include <WebCore/CurlProxySettings.h> 60 #endif 61 62 #if USE(SOUP) 63 #include <WebCore/SoupNetworkProxySettings.h> 60 64 #endif 61 65 … … 262 266 void setIgnoreTLSErrors(bool); 263 267 bool ignoreTLSErrors() const { return m_ignoreTLSErrors; } 268 void setNetworkProxySettings(WebCore::SoupNetworkProxySettings&&); 269 const WebCore::SoupNetworkProxySettings& networkProxySettings() const { return m_networkProxySettings; } 264 270 #endif 265 271 … … 399 405 bool m_persistentCredentialStorageEnabled { true }; 400 406 bool m_ignoreTLSErrors { true }; 407 WebCore::SoupNetworkProxySettings m_networkProxySettings; 401 408 #endif 402 409 -
trunk/Source/WebKit/UIProcess/WebsiteData/soup/WebsiteDataStoreSoup.cpp
r267523 r267534 40 40 networkSessionParameters.persistentCredentialStorageEnabled = m_persistentCredentialStorageEnabled; 41 41 networkSessionParameters.ignoreTLSErrors = m_ignoreTLSErrors; 42 networkSessionParameters.proxySettings = m_networkProxySettings; 42 43 43 44 if (auto* processPool = processPoolForCookieStorageOperations()) … … 68 69 } 69 70 71 void WebsiteDataStore::setNetworkProxySettings(WebCore::SoupNetworkProxySettings&& settings) 72 { 73 m_networkProxySettings = WTFMove(settings); 74 for (auto& processPool : processPools()) 75 processPool->sendToNetworkingProcess(Messages::NetworkProcess::SetNetworkProxySettings(m_sessionID, m_networkProxySettings)); 76 } 77 70 78 } // namespace WebKit -
trunk/Source/WebKit/UIProcess/glib/WebProcessPoolGLib.cpp
r266718 r267534 97 97 98 98 parameters.memoryCacheDisabled = m_memoryCacheDisabled || LegacyGlobalSettings::singleton().cacheModel() == CacheModel::DocumentViewer; 99 parameters.proxySettings = m_networkProxySettings;100 99 101 100 if (memoryPressureMonitorDisabled()) -
trunk/Source/WebKit/UIProcess/soup/WebProcessPoolSoup.cpp
r267502 r267534 43 43 defaultSessionParameters.persistentCredentialStorageEnabled = m_websiteDataStore->persistentCredentialStorageEnabled(); 44 44 defaultSessionParameters.ignoreTLSErrors = m_websiteDataStore->ignoreTLSErrors(); 45 defaultSessionParameters.proxySettings = m_websiteDataStore->networkProxySettings(); 45 46 } 46 47 47 48 parameters.cookieAcceptPolicy = m_initialHTTPCookieAcceptPolicy; 48 49 parameters.languages = userPreferredLanguages(); 49 parameters.proxySettings = m_networkProxySettings;50 50 parameters.shouldEnableITPDatabase = true; 51 51 } 52 52 53 void WebProcessPool::setNetworkProxySettings(const WebCore::SoupNetworkProxySettings& settings) 54 { 55 m_networkProxySettings = settings; 56 if (m_networkProcess) 57 m_networkProcess->send(Messages::NetworkProcess::SetNetworkProxySettings(m_networkProxySettings), 0); 58 } 59 60 } 53 } // namespace WebKit -
trunk/Tools/ChangeLog
r267529 r267534 1 2020-09-24 Carlos Garcia Campos <cgarcia@igalia.com> 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 Use the new API in tests. 9 10 * TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp: 11 (testWebContextProxySettings): 12 1 13 2020-09-24 Sergio Villar Senin <svillar@igalia.com> 2 14 -
trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp
r265753 r267534 672 672 GUniquePtr<char> proxyURI(soup_uri_to_string(test->m_proxyServer.baseURI(), FALSE)); 673 673 WebKitNetworkProxySettings* settings = webkit_network_proxy_settings_new(proxyURI.get(), nullptr); 674 webkit_web_context_set_network_proxy_settings(test->m_webContext.get(), WEBKIT_NETWORK_PROXY_MODE_CUSTOM, settings); 674 auto* dataManager = webkit_web_context_get_website_data_manager(test->m_webContext.get()); 675 webkit_website_data_manager_set_network_proxy_settings(dataManager, WEBKIT_NETWORK_PROXY_MODE_CUSTOM, settings); 675 676 GUniquePtr<char> proxyServerPortAsString = test->proxyServerPortAsString(); 676 677 mainResourceData = test->loadURIAndGetMainResourceData(kServer->getURIForPath("/echoPort").data()); … … 712 713 713 714 // Remove the proxy. Requests to kServer should be received by kServer again. 714 webkit_web _context_set_network_proxy_settings(test->m_webContext.get(), WEBKIT_NETWORK_PROXY_MODE_NO_PROXY, nullptr);715 webkit_website_data_manager_set_network_proxy_settings(dataManager, WEBKIT_NETWORK_PROXY_MODE_NO_PROXY, nullptr); 715 716 mainResourceData = test->loadURIAndGetMainResourceData(kServer->getURIForPath("/echoPort").data()); 716 717 ASSERT_CMP_CSTRING(mainResourceData, ==, serverPortAsString.get()); … … 719 720 static const char* ignoreHosts[] = { "localhost", nullptr }; 720 721 settings = webkit_network_proxy_settings_new(proxyURI.get(), ignoreHosts); 721 webkit_web _context_set_network_proxy_settings(test->m_webContext.get(), WEBKIT_NETWORK_PROXY_MODE_CUSTOM, settings);722 webkit_website_data_manager_set_network_proxy_settings(dataManager, WEBKIT_NETWORK_PROXY_MODE_CUSTOM, settings); 722 723 mainResourceData = test->loadURIAndGetMainResourceData(kServer->getURIForPath("/echoPort").data()); 723 724 ASSERT_CMP_CSTRING(mainResourceData, ==, proxyServerPortAsString.get()); … … 728 729 729 730 // Remove the proxy again to ensure next test is not using any previous values. 730 webkit_web _context_set_network_proxy_settings(test->m_webContext.get(), WEBKIT_NETWORK_PROXY_MODE_NO_PROXY, nullptr);731 webkit_website_data_manager_set_network_proxy_settings(dataManager, WEBKIT_NETWORK_PROXY_MODE_NO_PROXY, nullptr); 731 732 mainResourceData = test->loadURIAndGetMainResourceData(kServer->getURIForPath("/echoPort").data()); 732 733 ASSERT_CMP_CSTRING(mainResourceData, ==, serverPortAsString.get()); … … 735 736 settings = webkit_network_proxy_settings_new(nullptr, nullptr); 736 737 webkit_network_proxy_settings_add_proxy_for_scheme(settings, "http", proxyURI.get()); 737 webkit_web _context_set_network_proxy_settings(test->m_webContext.get(), WEBKIT_NETWORK_PROXY_MODE_CUSTOM, settings);738 webkit_website_data_manager_set_network_proxy_settings(dataManager, WEBKIT_NETWORK_PROXY_MODE_CUSTOM, settings); 738 739 mainResourceData = test->loadURIAndGetMainResourceData(kServer->getURIForPath("/echoPort").data()); 739 740 ASSERT_CMP_CSTRING(mainResourceData, ==, proxyServerPortAsString.get()); … … 741 742 742 743 // Reset to use the default resolver. 743 webkit_web _context_set_network_proxy_settings(test->m_webContext.get(), WEBKIT_NETWORK_PROXY_MODE_DEFAULT, nullptr);744 webkit_website_data_manager_set_network_proxy_settings(dataManager, WEBKIT_NETWORK_PROXY_MODE_DEFAULT, nullptr); 744 745 mainResourceData = test->loadURIAndGetMainResourceData(kServer->getURIForPath("/echoPort").data()); 745 746 ASSERT_CMP_CSTRING(mainResourceData, ==, serverPortAsString.get());
Note:
See TracChangeset
for help on using the changeset viewer.