mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 04:27:43 +00:00
LibWeb: Add support for unwrapping the WindowObject to WrapperGenerator
This commit is contained in:
parent
f176514db8
commit
7b2c63fd87
1 changed files with 10 additions and 4 deletions
|
@ -852,6 +852,8 @@ static bool is_wrappable_type(IDL::Type const& type)
|
|||
return true;
|
||||
if (type.name == "ImageData")
|
||||
return true;
|
||||
if (type.name == "Window")
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -864,6 +866,10 @@ static void generate_to_cpp(SourceGenerator& generator, ParameterType& parameter
|
|||
scoped_generator.set("js_suffix", js_suffix);
|
||||
scoped_generator.set("legacy_null_to_empty_string", legacy_null_to_empty_string ? "true" : "false");
|
||||
scoped_generator.set("parameter.type.name", parameter.type.name);
|
||||
if (parameter.type.name == "Window")
|
||||
scoped_generator.set("wrapper_name", "WindowObject");
|
||||
else
|
||||
scoped_generator.set("wrapper_name", String::formatted("{}Wrapper", parameter.type.name));
|
||||
|
||||
if (optional_default_value.has_value())
|
||||
scoped_generator.set("parameter.optional_default_value", *optional_default_value);
|
||||
|
@ -938,12 +944,12 @@ static void generate_to_cpp(SourceGenerator& generator, ParameterType& parameter
|
|||
if (vm.exception())
|
||||
@return_statement@
|
||||
|
||||
if (!is<@parameter.type.name@Wrapper>(@cpp_name@_object)) {
|
||||
if (!is<@wrapper_name@>(@cpp_name@_object)) {
|
||||
vm.throw_exception<JS::TypeError>(global_object, JS::ErrorType::NotAnObjectOfType, "@parameter.type.name@");
|
||||
@return_statement@
|
||||
}
|
||||
|
||||
auto& @cpp_name@ = static_cast<@parameter.type.name@Wrapper*>(@cpp_name@_object)->impl();
|
||||
auto& @cpp_name@ = static_cast<@wrapper_name@*>(@cpp_name@_object)->impl();
|
||||
)~~~");
|
||||
} else {
|
||||
scoped_generator.append(R"~~~(
|
||||
|
@ -953,12 +959,12 @@ static void generate_to_cpp(SourceGenerator& generator, ParameterType& parameter
|
|||
if (vm.exception())
|
||||
@return_statement@
|
||||
|
||||
if (!is<@parameter.type.name@Wrapper>(@cpp_name@_object)) {
|
||||
if (!is<@wrapper_name@>(@cpp_name@_object)) {
|
||||
vm.throw_exception<JS::TypeError>(global_object, JS::ErrorType::NotAnObjectOfType, "@parameter.type.name@");
|
||||
@return_statement@
|
||||
}
|
||||
|
||||
@cpp_name@ = &static_cast<@parameter.type.name@Wrapper*>(@cpp_name@_object)->impl();
|
||||
@cpp_name@ = &static_cast<@wrapper_name@*>(@cpp_name@_object)->impl();
|
||||
}
|
||||
)~~~");
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue