Skip to content

Commit a7c657e

Browse files
committed
Updating IE driver new session command handler to process null capability values
1 parent 6ccbe0a commit a7c657e

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

cpp/iedriver/CommandHandlers/NewSessionCommandHandler.cpp

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -584,6 +584,11 @@ bool NewSessionCommandHandler::ValidateCapabilities(
584584
for (; name_iterator != capability_names.end(); ++name_iterator) {
585585
std::string capability_name = *name_iterator;
586586
std::string capability_error_message;
587+
if (capabilities[capability_name].isNull()) {
588+
// Cast away the const modifier only in this case.
589+
const_cast<Json::Value&>(capabilities).removeMember(capability_name);
590+
continue;
591+
}
587592
if (capability_name == ACCEPT_INSECURE_CERTS_CAPABILITY) {
588593
LOG(DEBUG) << "Found " << ACCEPT_INSECURE_CERTS_CAPABILITY << " capability."
589594
<< " Validating value type is boolean.";
@@ -676,12 +681,10 @@ bool NewSessionCommandHandler::ValidateCapabilities(
676681
std::string page_load_strategy = "";
677682
LOG(DEBUG) << "Found " << PAGE_LOAD_STRATEGY_CAPABILITY << " capability."
678683
<< " Validating value type is string.";
679-
if (capabilities[capability_name].isNull()) {
680-
page_load_strategy = "normal";
681-
} else if (!this->ValidateCapabilityType(capabilities,
682-
capability_name,
683-
Json::ValueType::stringValue,
684-
&capability_error_message)) {
684+
if (!this->ValidateCapabilityType(capabilities,
685+
capability_name,
686+
Json::ValueType::stringValue,
687+
&capability_error_message)) {
685688
*error_message = "Invalid capabilities in " +
686689
capability_set_name + ": " + capability_error_message;
687690
return false;
@@ -717,6 +720,12 @@ bool NewSessionCommandHandler::ValidateCapabilities(
717720
<< " object contains correct property names.";
718721
Json::Value timeouts = capabilities[capability_name];
719722
std::vector<std::string> timeout_names = timeouts.getMemberNames();
723+
if (timeout_names.size() == 0) {
724+
*error_message = "Invalid capabilities in " +
725+
capability_set_name + ": " +
726+
"no timeouts specified";
727+
return false;
728+
}
720729
std::vector<std::string>::const_iterator timeout_name_iterator = timeout_names.begin();
721730
for (; timeout_name_iterator != timeout_names.end(); ++timeout_name_iterator) {
722731
std::string timeout_name = *timeout_name_iterator;

0 commit comments

Comments
 (0)