1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 17:37:34 +00:00

AK+Everywhere: Remove JsonValue APIs with implicit default values

This commit is contained in:
Dan Klishch 2024-01-12 20:52:38 -05:00 committed by Andrew Kaster
parent c49819cced
commit b5f1a48a7c
16 changed files with 132 additions and 106 deletions

View file

@ -66,16 +66,10 @@ ErrorOr<Gfx::IntRect> PropertyDeserializer<Gfx::IntRect>::operator()(JsonValue c
} else {
auto const& array = value.as_array();
auto get_i32 = [](JsonValue const& value) -> Optional<int> {
if (value.is_integer<i32>())
return value.to_i32();
return {};
};
x = get_i32(array[0]);
y = get_i32(array[1]);
width = get_i32(array[2]);
height = get_i32(array[3]);
x = array[0].get_i32();
y = array[1].get_i32();
width = array[2].get_i32();
height = array[3].get_i32();
}
if (!x.has_value())
@ -103,16 +97,16 @@ ErrorOr<Gfx::IntSize> PropertyDeserializer<Gfx::IntSize>::operator()(JsonValue c
auto const& array = value.as_array();
auto const& width = array[0];
if (!width.is_integer<i32>())
auto const& width = array[0].get_i32();
if (!width.has_value())
return Error::from_string_literal("Width must be an integer");
auto const& height = array[1];
if (!height.is_integer<i32>())
auto const& height = array[1].get_i32();
if (!height.has_value())
return Error::from_string_literal("Height must be an integer");
Gfx::IntSize size;
size.set_width(width.to_i32());
size.set_height(height.to_i32());
size.set_width(width.value());
size.set_height(height.value());
return size;
}
@ -129,10 +123,10 @@ ErrorOr<GUI::Margins> PropertyDeserializer<GUI::Margins>::operator()(JsonValue c
int m[4];
for (size_t i = 0; i < size; ++i) {
auto const& margin = array[i];
if (!margin.is_integer<i32>())
auto const& margin = array[i].get_i32();
if (!margin.has_value())
return Error::from_string_literal("Margin value should be an integer");
m[i] = margin.to_i32();
m[i] = margin.value();
}
if (size == 1)

View file

@ -23,7 +23,7 @@ struct PropertyDeserializer<T> {
{
if (!value.is_integer<T>())
return Error::from_string_literal("Value is either not an integer or out of range for requested type");
return value.to_number<T>();
return value.as_integer<T>();
}
};

View file

@ -434,8 +434,8 @@ Value JSONObject::parse_json_value(VM& vm, JsonValue const& value)
return Value(parse_json_array(vm, value.as_array()));
if (value.is_null())
return js_null();
if (value.is_number())
return Value(value.to_double(0));
if (auto double_value = value.get_double_with_precision_loss(); double_value.has_value())
return Value(double_value.value());
if (value.is_string())
return PrimitiveString::create(vm, value.as_string());
if (value.is_bool())

View file

@ -175,7 +175,7 @@ Vector<Symbol> symbolicate_thread(pid_t pid, pid_t tid, IncludeSourcePosition in
stack.ensure_capacity(json.value().as_array().size());
for (auto& value : json.value().as_array().values()) {
stack.append(value.to_addr());
stack.append(value.get_addr().value());
}
}

View file

@ -51,13 +51,24 @@ ErrorOr<TimeoutsConfiguration, Error> json_deserialize_as_a_timeouts_configurati
auto 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.has_value() && 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.has_value() && !script_duration->is_number() && !script_duration->is_null())
return Error::from_code(ErrorCode::InvalidArgument, "Invalid script duration");
Optional<u64> script_timeout;
if (script_duration.has_value()) {
bool is_valid;
if (auto duration = script_duration->get_double_with_precision_loss(); duration.has_value()) {
is_valid = *duration >= 0 && *duration <= max_safe_integer;
// FIXME: script_timeout should be double.
script_timeout = static_cast<u64>(*duration);
} else if (script_duration->is_null()) {
is_valid = true;
} else {
is_valid = false;
}
if (!is_valid)
return Error::from_code(ErrorCode::InvalidArgument, "Invalid script duration");
}
// 3. Set timeoutss script timeout to script duration.
timeouts.script_timeout = (!script_duration.has_value() || script_duration->is_null()) ? Optional<u64> {} : script_duration->to_u64();
timeouts.script_timeout = script_timeout;
}
// 4. If value has a property with the key "pageLoad":