MCPcopy Create free account
hub / github.com/SeleniumHQ/selenium / SetGlobalProxySettings

Method SetGlobalProxySettings

cpp/iedriver/ProxyManager.cpp:294–367  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

292}
293
294void ProxyManager::SetGlobalProxySettings() {
295 LOG(TRACE) << "ProxyManager::SetGlobalProxySettings";
296 std::wstring proxy_settings_string = this->BuildProxySettingsString();
297
298 std::vector<std::wstring> proxy_settings;
299 StringUtilities::Split(proxy_settings_string,
300 _TEXT(BYPASS_PROXY_MARKER),
301 &proxy_settings);
302
303 std::wstring proxy = proxy_settings[0];
304 std::wstring proxy_bypass = L"";
305 if (proxy_settings.size() > 1) {
306 proxy_bypass = proxy_settings[1];
307 }
308
309 INTERNET_PER_CONN_OPTION_LIST option_list;
310 unsigned long list_size = sizeof(INTERNET_PER_CONN_OPTION_LIST);
311 option_list.dwSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
312
313 INTERNET_PER_CONN_OPTION proxy_options[3];
314 if (this->proxy_type_ == WD_PROXY_TYPE_DIRECT) {
315 proxy_options[0].dwOption = INTERNET_PER_CONN_FLAGS;
316 proxy_options[0].Value.dwValue = PROXY_TYPE_DIRECT;
317 option_list.dwOptionCount = 1;
318 } else if (this->proxy_type_ == WD_PROXY_TYPE_AUTOCONFIGURE) {
319 proxy_options[0].dwOption = INTERNET_PER_CONN_AUTOCONFIG_URL;
320 proxy_options[0].Value.pszValue = const_cast<wchar_t*>(proxy.c_str());
321 proxy_options[1].dwOption = INTERNET_PER_CONN_FLAGS;
322 proxy_options[1].Value.dwValue = PROXY_TYPE_AUTO_PROXY_URL;
323 option_list.dwOptionCount = 2;
324 } else if (this->proxy_type_ == WD_PROXY_TYPE_AUTODETECT) {
325 proxy_options[0].dwOption = INTERNET_PER_CONN_AUTODISCOVERY_FLAGS;
326 proxy_options[0].Value.dwValue = AUTO_PROXY_FLAG_ALWAYS_DETECT;
327 proxy_options[1].dwOption = INTERNET_PER_CONN_FLAGS;
328 proxy_options[1].Value.dwValue = PROXY_TYPE_AUTO_DETECT;
329 option_list.dwOptionCount = 2;
330 } else {
331 proxy_options[0].dwOption = INTERNET_PER_CONN_PROXY_SERVER;
332 proxy_options[0].Value.pszValue = const_cast<wchar_t*>(proxy.c_str());
333 proxy_options[1].dwOption = INTERNET_PER_CONN_FLAGS;
334 proxy_options[1].Value.dwValue = PROXY_TYPE_PROXY | PROXY_TYPE_DIRECT;
335 proxy_options[2].dwOption = INTERNET_PER_CONN_PROXY_BYPASS;
336 proxy_options[2].Value.pszValue = const_cast<wchar_t*>(proxy_bypass.c_str());;
337 option_list.dwOptionCount = 3;
338 }
339
340 option_list.pOptions = proxy_options;
341 option_list.pszConnection = NULL;
342 option_list.dwOptionError = 0;
343 BOOL success = ::InternetSetOption(NULL,
344 INTERNET_OPTION_PER_CONNECTION_OPTION,
345 &option_list,
346 list_size);
347 if (!success) {
348 LOGERR(WARN) << "InternetSetOption failed setting INTERNET_OPTION_PER_CONNECTION_OPTION";
349 }
350
351 // Only set proxy authentication for SOCKS proxies, and

Callers 1

SetProxySettingsMethod · 0.95

Calls 4

LOGClass · 0.50
sizeMethod · 0.45

Tested by

no test coverage detected