mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 02:47:34 +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;
|
return true;
|
||||||
if (type.name == "ImageData")
|
if (type.name == "ImageData")
|
||||||
return true;
|
return true;
|
||||||
|
if (type.name == "Window")
|
||||||
|
return true;
|
||||||
return false;
|
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("js_suffix", js_suffix);
|
||||||
scoped_generator.set("legacy_null_to_empty_string", legacy_null_to_empty_string ? "true" : "false");
|
scoped_generator.set("legacy_null_to_empty_string", legacy_null_to_empty_string ? "true" : "false");
|
||||||
scoped_generator.set("parameter.type.name", parameter.type.name);
|
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())
|
if (optional_default_value.has_value())
|
||||||
scoped_generator.set("parameter.optional_default_value", *optional_default_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())
|
if (vm.exception())
|
||||||
@return_statement@
|
@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@");
|
vm.throw_exception<JS::TypeError>(global_object, JS::ErrorType::NotAnObjectOfType, "@parameter.type.name@");
|
||||||
@return_statement@
|
@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 {
|
} else {
|
||||||
scoped_generator.append(R"~~~(
|
scoped_generator.append(R"~~~(
|
||||||
|
@ -953,12 +959,12 @@ static void generate_to_cpp(SourceGenerator& generator, ParameterType& parameter
|
||||||
if (vm.exception())
|
if (vm.exception())
|
||||||
@return_statement@
|
@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@");
|
vm.throw_exception<JS::TypeError>(global_object, JS::ErrorType::NotAnObjectOfType, "@parameter.type.name@");
|
||||||
@return_statement@
|
@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