LibWeb: Do not reject valid WebDriver script timeouts

The spec's text is pretty awkward here, but the way we've currently
transcribed it to C++ means we reject valid script timeouts. This meant
the following would fail:

    TimeoutsConfiguration config {}; // Default values.
    auto json = timeouts_object(config);
    config = TRY(json_deserialize_as_a_timeouts_configuration(json));
This commit is contained in:
Timothy Flynn 2022-11-17 13:32:56 -05:00 committed by Linus Groh
parent 5d61053276
commit 5b5b563968
Notes: sideshowbarker 2024-07-17 07:48:42 +09:00

View File

@ -51,7 +51,9 @@ ErrorOr<TimeoutsConfiguration, Error> json_deserialize_as_a_timeouts_configurati
auto const& script_duration = value.as_object().get("script"sv);
// 2. If script duration is a number and less than 0 or greater than maximum safe integer, or it is not null, return error with error code invalid argument.
if ((script_duration.is_number() && (script_duration.to_i64() < 0 || script_duration.to_i64() > max_safe_integer)) || !script_duration.is_null())
if (script_duration.is_number() && (script_duration.to_i64() < 0 || script_duration.to_i64() > max_safe_integer))
return Error::from_code(ErrorCode::InvalidArgument, "Invalid script duration");
if (!script_duration.is_number() && !script_duration.is_null())
return Error::from_code(ErrorCode::InvalidArgument, "Invalid script duration");
// 3. Set timeoutss script timeout to script duration.