@@ -584,6 +584,11 @@ bool NewSessionCommandHandler::ValidateCapabilities(
584
584
for (; name_iterator != capability_names.end (); ++name_iterator) {
585
585
std::string capability_name = *name_iterator;
586
586
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
+ }
587
592
if (capability_name == ACCEPT_INSECURE_CERTS_CAPABILITY) {
588
593
LOG (DEBUG) << " Found " << ACCEPT_INSECURE_CERTS_CAPABILITY << " capability."
589
594
<< " Validating value type is boolean." ;
@@ -676,12 +681,10 @@ bool NewSessionCommandHandler::ValidateCapabilities(
676
681
std::string page_load_strategy = " " ;
677
682
LOG (DEBUG) << " Found " << PAGE_LOAD_STRATEGY_CAPABILITY << " capability."
678
683
<< " 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)) {
685
688
*error_message = " Invalid capabilities in " +
686
689
capability_set_name + " : " + capability_error_message;
687
690
return false ;
@@ -717,6 +720,12 @@ bool NewSessionCommandHandler::ValidateCapabilities(
717
720
<< " object contains correct property names." ;
718
721
Json::Value timeouts = capabilities[capability_name];
719
722
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
+ }
720
729
std::vector<std::string>::const_iterator timeout_name_iterator = timeout_names.begin ();
721
730
for (; timeout_name_iterator != timeout_names.end (); ++timeout_name_iterator) {
722
731
std::string timeout_name = *timeout_name_iterator;
0 commit comments