Skip to content

Commit a55687d

Browse files
authored
browser(webkit): pass proxy url as is for https support (#2460)
1 parent 8e6375f commit a55687d

File tree

3 files changed

+27
-52
lines changed

3 files changed

+27
-52
lines changed

browser_patches/webkit/BUILD_NUMBER

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1260
1+
1261

browser_patches/webkit/embedder/Playwright/mac/AppDelegate.m

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -141,22 +141,21 @@ - (NSDictionary *)proxyConfiguration:(NSString *)proxyServer
141141
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
142142

143143
NSMutableDictionary *dictionary = [[[NSMutableDictionary alloc] init] autorelease];
144+
NSURL *proxyURL = [NSURL URLWithString:proxyServer];
145+
NSString *host = [proxyURL host];
146+
NSNumber *port = [proxyURL port];
144147
if ([proxyServer hasPrefix:@"socks5://"]) {
145-
NSURL *socksProxy = [NSURL URLWithString:proxyServer];
146-
[dictionary setObject:[socksProxy host] forKey:(NSString *)kCFStreamPropertySOCKSProxyHost];
147-
NSNumber *port = [socksProxy port];
148+
[dictionary setObject:host forKey:(NSString *)kCFStreamPropertySOCKSProxyHost];
148149
if (port)
149150
[dictionary setObject:port forKey:(NSString *)kCFStreamPropertySOCKSProxyPort];
151+
} else if ([proxyServer hasPrefix:@"https://"]) {
152+
[dictionary setObject:host forKey:(NSString *)kCFStreamPropertyHTTPSProxyHost];
153+
if (port)
154+
[dictionary setObject:port forKey:(NSString *)kCFStreamPropertyHTTPSProxyPort];
150155
} else {
151-
NSURL *httpProxy = [NSURL URLWithString: [NSString stringWithFormat:@"http://%@", proxyServer]];
152-
NSString *host = [httpProxy host];
153-
NSNumber *port = [httpProxy port];
154156
[dictionary setObject:host forKey:(NSString *)kCFStreamPropertyHTTPProxyHost];
155-
[dictionary setObject:host forKey:(NSString *)kCFStreamPropertyHTTPSProxyHost];
156-
if (port) {
157+
if (port)
157158
[dictionary setObject:port forKey:(NSString *)kCFStreamPropertyHTTPProxyPort];
158-
[dictionary setObject:port forKey:(NSString *)kCFStreamPropertyHTTPSProxyPort];
159-
}
160159
}
161160

162161
#pragma clang diagnostic pop

browser_patches/webkit/patches/bootstrap.diff

Lines changed: 17 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -12760,10 +12760,10 @@ index 31d29091985f34a65134a2b0e7cb3ace1dae441d..571ceac8a4b291fa6e91eb8b17065c0a
1276012760
};
1276112761
diff --git a/Source/WebKit/UIProcess/glib/InspectorPlaywrightAgentClientGLib.cpp b/Source/WebKit/UIProcess/glib/InspectorPlaywrightAgentClientGLib.cpp
1276212762
new file mode 100644
12763-
index 0000000000000000000000000000000000000000..1619f5b10ea9a3dc2f7de22d4018acc462f46013
12763+
index 0000000000000000000000000000000000000000..79aa5407901c07f63a53ac0e441cd6a9b9c65d07
1276412764
--- /dev/null
1276512765
+++ b/Source/WebKit/UIProcess/glib/InspectorPlaywrightAgentClientGLib.cpp
12766-
@@ -0,0 +1,156 @@
12766+
@@ -0,0 +1,150 @@
1276712767
+/*
1276812768
+ * Copyright (C) 2019 Microsoft Corporation.
1276912769
+ *
@@ -12814,13 +12814,7 @@ index 0000000000000000000000000000000000000000..1619f5b10ea9a3dc2f7de22d4018acc4
1281412814
+ return settings;
1281512815
+
1281612816
+ settings.mode = WebCore::SoupNetworkProxySettings::Mode::Custom;
12817-
+
12818-
+ if (proxyServer.startsWith("socks5://")) {
12819-
+ settings.defaultProxyURL = proxyServer.utf8();
12820-
+ } else {
12821-
+ settings.proxyMap.set("http", String("http://" + proxyServer).utf8());
12822-
+ settings.proxyMap.set("https", String("https://" + proxyServer).utf8());
12823-
+ }
12817+
+ settings.defaultProxyURL = proxyServer.utf8();
1282412818
+ settings.ignoreHosts.reset(g_strdupv(const_cast<char**>(ignoreHosts)));
1282512819
+ return settings;
1282612820
+}
@@ -13766,10 +13760,10 @@ index 0000000000000000000000000000000000000000..78bd14ef515e4022dbc251945d60248a
1376613760
+} // namespace WebKit
1376713761
diff --git a/Source/WebKit/UIProcess/win/InspectorPlaywrightAgentClientWin.cpp b/Source/WebKit/UIProcess/win/InspectorPlaywrightAgentClientWin.cpp
1376813762
new file mode 100644
13769-
index 0000000000000000000000000000000000000000..ac82d055b9a544502ab5e4bda7fd3a003e595992
13763+
index 0000000000000000000000000000000000000000..4e5910f0f1d1b237b7c5637ccbc4fe3f374ff391
1377013764
--- /dev/null
1377113765
+++ b/Source/WebKit/UIProcess/win/InspectorPlaywrightAgentClientWin.cpp
13772-
@@ -0,0 +1,94 @@
13766+
@@ -0,0 +1,90 @@
1377313767
+/*
1377413768
+ * Copyright (C) 2020 Microsoft Corporation.
1377513769
+ *
@@ -13845,11 +13839,7 @@ index 0000000000000000000000000000000000000000..ac82d055b9a544502ab5e4bda7fd3a00
1384513839
+ browserContext.dataStore = WebKit::WebsiteDataStore::createNonPersistent();
1384613840
+ m_configureDataStore(toAPI(browserContext.dataStore.get()));
1384713841
+ if (!proxyServer.isEmpty()) {
13848-
+ URL proxyURL;
13849-
+ if (proxyServer.startsWith("socks5://"))
13850-
+ proxyURL = URL(URL(), proxyServer);
13851-
+ else if (!proxyServer.startsWith("http"))
13852-
+ proxyURL = URL(URL(), "http://" + proxyServer);
13842+
+ URL proxyURL = URL(URL(), proxyServer);
1385313843
+ WebCore::CurlProxySettings settings(WTFMove(proxyURL), String(proxyBypassList));
1385413844
+ browserContext.dataStore->setNetworkProxySettings(WTFMove(settings));
1385513845
+ }
@@ -15143,7 +15133,7 @@ index 1570d65effb5d601ee3c44a2a7461436f4691c2c..65e62adad0c3684e5cec2f6bc8e7f528
1514315133

1514415134
#endif
1514515135
diff --git a/Tools/MiniBrowser/gtk/main.c b/Tools/MiniBrowser/gtk/main.c
15146-
index 2ff45b938cffabe95fe17137393b8b6c506d4993..ec7ac8bbe174e0c1edbe425b392c9fd6695cb4b8 100644
15136+
index 2ff45b938cffabe95fe17137393b8b6c506d4993..79180075025fd323cc9e818c76603d0fcea74c1d 100644
1514715137
--- a/Tools/MiniBrowser/gtk/main.c
1514815138
+++ b/Tools/MiniBrowser/gtk/main.c
1514915139
@@ -54,6 +54,10 @@ static const char *cookiesFile;
@@ -15237,23 +15227,16 @@ index 2ff45b938cffabe95fe17137393b8b6c506d4993..ec7ac8bbe174e0c1edbe425b392c9fd6
1523715227
g_object_unref(manager);
1523815228

1523915229
if (cookiesPolicy) {
15240-
@@ -572,7 +628,14 @@ int main(int argc, char *argv[])
15230+
@@ -572,7 +628,7 @@ int main(int argc, char *argv[])
1524115231
}
1524215232

1524315233
if (proxy) {
1524415234
- WebKitNetworkProxySettings *webkitProxySettings = webkit_network_proxy_settings_new(proxy, ignoreHosts);
15245-
+ WebKitNetworkProxySettings* webkitProxySettings;
15246-
+ if (g_str_has_prefix(proxy, "socks5://")) {
15247-
+ webkitProxySettings = webkit_network_proxy_settings_new(proxy, ignoreHosts);
15248-
+ } else {
15249-
+ webkitProxySettings = webkit_network_proxy_settings_new("", ignoreHosts);
15250-
+ webkit_network_proxy_settings_add_proxy_for_scheme(webkitProxySettings, "http", g_strconcat("http", proxy));
15251-
+ webkit_network_proxy_settings_add_proxy_for_scheme(webkitProxySettings, "https", g_strconcat("https", proxy));
15252-
+ }
15235+
+ WebKitNetworkProxySettings* webkitProxySettings = webkit_network_proxy_settings_new(proxy, ignoreHosts);
1525315236
webkit_web_context_set_network_proxy_settings(webContext, WEBKIT_NETWORK_PROXY_MODE_CUSTOM, webkitProxySettings);
1525415237
webkit_network_proxy_settings_free(webkitProxySettings);
1525515238
}
15256-
@@ -633,9 +696,7 @@ int main(int argc, char *argv[])
15239+
@@ -633,9 +689,7 @@ int main(int argc, char *argv[])
1525715240
WebKitWebView *webView = createBrowserTab(mainWindow, webkitSettings, userContentManager);
1525815241
if (!i)
1525915242
firstTab = GTK_WIDGET(webView);
@@ -15264,7 +15247,7 @@ index 2ff45b938cffabe95fe17137393b8b6c506d4993..ec7ac8bbe174e0c1edbe425b392c9fd6
1526415247
}
1526515248
} else {
1526615249
WebKitWebView *webView = createBrowserTab(mainWindow, webkitSettings, userContentManager);
15267-
@@ -657,8 +718,7 @@ int main(int argc, char *argv[])
15250+
@@ -657,8 +711,7 @@ int main(int argc, char *argv[])
1526815251

1526915252
browser_main();
1527015253

@@ -15275,7 +15258,7 @@ index 2ff45b938cffabe95fe17137393b8b6c506d4993..ec7ac8bbe174e0c1edbe425b392c9fd6
1527515258
return 0;
1527615259
}
1527715260
diff --git a/Tools/MiniBrowser/wpe/main.cpp b/Tools/MiniBrowser/wpe/main.cpp
15278-
index fde24a7cc8ceb8cc6d7810e3548a5129d1c0a187..02756b2bbdb664d0445eec83eeeee8e0c9590720 100644
15261+
index fde24a7cc8ceb8cc6d7810e3548a5129d1c0a187..9344a1edd2f9931583c04de2a25a2ec71b2702e8 100644
1527915262
--- a/Tools/MiniBrowser/wpe/main.cpp
1528015263
+++ b/Tools/MiniBrowser/wpe/main.cpp
1528115264
@@ -43,6 +43,9 @@ static gboolean headlessMode;
@@ -15426,23 +15409,16 @@ index fde24a7cc8ceb8cc6d7810e3548a5129d1c0a187..02756b2bbdb664d0445eec83eeeee8e0
1542615409

1542715410
if (cookiesPolicy) {
1542815411
auto* cookieManager = webkit_web_context_get_cookie_manager(webContext);
15429-
@@ -238,7 +321,14 @@ int main(int argc, char *argv[])
15412+
@@ -238,7 +321,7 @@ int main(int argc, char *argv[])
1543015413
}
1543115414

1543215415
if (proxy) {
1543315416
- auto* webkitProxySettings = webkit_network_proxy_settings_new(proxy, ignoreHosts);
15434-
+ WebKitNetworkProxySettings* webkitProxySettings;
15435-
+ if (g_str_has_prefix(proxy, "socks5://")) {
15436-
+ webkitProxySettings = webkit_network_proxy_settings_new(proxy, ignoreHosts);
15437-
+ } else {
15438-
+ webkitProxySettings = webkit_network_proxy_settings_new("", ignoreHosts);
15439-
+ webkit_network_proxy_settings_add_proxy_for_scheme(webkitProxySettings, "http", g_strconcat("http", proxy));
15440-
+ webkit_network_proxy_settings_add_proxy_for_scheme(webkitProxySettings, "https", g_strconcat("https", proxy));
15441-
+ }
15417+
+ WebKitNetworkProxySettings* webkitProxySettings = webkit_network_proxy_settings_new(proxy, ignoreHosts);
1544215418
webkit_web_context_set_network_proxy_settings(webContext, WEBKIT_NETWORK_PROXY_MODE_CUSTOM, webkitProxySettings);
1544315419
webkit_network_proxy_settings_free(webkitProxySettings);
1544415420
}
15445-
@@ -301,8 +391,6 @@ int main(int argc, char *argv[])
15421+
@@ -301,8 +384,6 @@ int main(int argc, char *argv[])
1544615422
backendPtr->setAccessibleChild(ATK_OBJECT(accessible));
1544715423
#endif
1544815424

@@ -15451,7 +15427,7 @@ index fde24a7cc8ceb8cc6d7810e3548a5129d1c0a187..02756b2bbdb664d0445eec83eeeee8e0
1545115427
webkit_web_context_set_automation_allowed(webContext, automationMode);
1545215428
g_signal_connect(webContext, "automation-started", G_CALLBACK(automationStartedCallback), webView);
1545315429
g_signal_connect(webView, "permission-request", G_CALLBACK(decidePermissionRequest), nullptr);
15454-
@@ -318,16 +406,9 @@ int main(int argc, char *argv[])
15430+
@@ -318,16 +399,9 @@ int main(int argc, char *argv[])
1545515431
webkit_web_view_set_background_color(webView, &color);
1545615432

1545715433
if (uriArguments) {
@@ -15471,7 +15447,7 @@ index fde24a7cc8ceb8cc6d7810e3548a5129d1c0a187..02756b2bbdb664d0445eec83eeeee8e0
1547115447
webkit_web_view_load_uri(webView, "about:blank");
1547215448
else
1547315449
webkit_web_view_load_uri(webView, "https://wpewebkit.org");
15474-
@@ -337,8 +418,7 @@ int main(int argc, char *argv[])
15450+
@@ -337,8 +411,7 @@ int main(int argc, char *argv[])
1547515451
g_hash_table_destroy(openViews);
1547615452

1547715453

0 commit comments

Comments
 (0)