Commit 30e5bc45 authored by John Chen's avatar John Chen Committed by Commit Bot

[ChromeDriver] W3c-compliant proxyType parsing

The proxyType string should be handled case-sensitively in W3C mode.
Resolves 2 WPT test failures in
webdriver/tests/new_session/invalid_capabilities.py.

Bug: chromedriver:1997
Change-Id: If931b4d1d982aae8646e9b5783cbf7ee52fa4b60
Reviewed-on: https://chromium-review.googlesource.com/c/1355437Reviewed-by: default avatarCaleb Rouleau <crouleau@chromium.org>
Commit-Queue: John Chen <johnchen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#612369}
parent 38f791a8
......@@ -271,14 +271,17 @@ Status ParseExtensions(const base::Value& option, Capabilities* capabilities) {
return Status(kOk);
}
Status ParseProxy(const base::Value& option, Capabilities* capabilities) {
Status ParseProxy(bool w3c_compliant,
const base::Value& option,
Capabilities* capabilities) {
const base::DictionaryValue* proxy_dict;
if (!option.GetAsDictionary(&proxy_dict))
return Status(kInvalidArgument, "must be a dictionary");
std::string proxy_type;
if (!proxy_dict->GetString("proxyType", &proxy_type))
return Status(kInvalidArgument, "'proxyType' must be a string");
proxy_type = base::ToLowerASCII(proxy_type);
if (!w3c_compliant)
proxy_type = base::ToLowerASCII(proxy_type);
if (proxy_type == "direct") {
capabilities->switches.SetSwitch("no-proxy-server");
} else if (proxy_type == "system") {
......@@ -726,7 +729,7 @@ Status Capabilities::Parse(const base::DictionaryValue& desired_caps,
parser_map["platformName"] =
base::BindRepeating(&ParseString, &platform_name);
parser_map["pageLoadStrategy"] = base::BindRepeating(&ParsePageLoadStrategy);
parser_map["proxy"] = base::BindRepeating(&ParseProxy);
parser_map["proxy"] = base::BindRepeating(&ParseProxy, w3c_compliant);
parser_map["timeouts"] = base::BindRepeating(&ParseTimeouts);
if (!w3c_compliant) {
// TODO(https://crbug.com/chromedriver/2596): "unexpectedAlertBehaviour" is
......
......@@ -234,7 +234,7 @@ TEST(ParseCapabilities, IllegalProxyType) {
TEST(ParseCapabilities, DirectProxy) {
Capabilities capabilities;
base::DictionaryValue proxy;
proxy.SetString("proxyType", "DIRECT");
proxy.SetString("proxyType", "direct");
base::DictionaryValue caps;
caps.SetKey("proxy", std::move(proxy));
Status status = capabilities.Parse(caps);
......@@ -257,7 +257,7 @@ TEST(ParseCapabilities, SystemProxy) {
TEST(ParseCapabilities, PacProxy) {
Capabilities capabilities;
base::DictionaryValue proxy;
proxy.SetString("proxyType", "PAC");
proxy.SetString("proxyType", "pac");
proxy.SetString("proxyAutoconfigUrl", "test.wpad");
base::DictionaryValue caps;
caps.SetKey("proxy", std::move(proxy));
......@@ -270,7 +270,7 @@ TEST(ParseCapabilities, PacProxy) {
TEST(ParseCapabilities, MissingProxyAutoconfigUrl) {
Capabilities capabilities;
base::DictionaryValue proxy;
proxy.SetString("proxyType", "PAC");
proxy.SetString("proxyType", "pac");
proxy.SetString("httpProxy", "http://localhost:8001");
base::DictionaryValue caps;
caps.SetKey("proxy", std::move(proxy));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment