Everywhere: Rename WrapperGenerator to BindingsGenerator

This code generator no longer creates JS wrappers for platform objects
in the old sense, instead they're JS objects internally themselves.
Most of what we generate now are prototypes - which can be seen as
bindings for the internal C++ methods implementing getters, setters, and
methods - as well as object constructors, i.e. bindings for the internal
create_with_global_object() method.

Also tweak the naming of various CMake glue code existing around this.
This commit is contained in:
Linus Groh 2022-09-21 18:22:16 +01:00
parent 4270ede7c4
commit edfef8e2f5
14 changed files with 219 additions and 219 deletions

View file

@ -18,6 +18,10 @@
#cmakedefine01 BMP_DEBUG #cmakedefine01 BMP_DEBUG
#endif #endif
#ifndef BINDINGS_GENERATOR_DEBUG
#cmakedefine01 BINDINGS_GENERATOR_DEBUG
#endif
#ifndef CACHE_DEBUG #ifndef CACHE_DEBUG
#cmakedefine01 CACHE_DEBUG #cmakedefine01 CACHE_DEBUG
#endif #endif
@ -502,10 +506,6 @@
#cmakedefine01 WINDOWMANAGER_DEBUG #cmakedefine01 WINDOWMANAGER_DEBUG
#endif #endif
#ifndef WRAPPER_GENERATOR_DEBUG
#cmakedefine01 WRAPPER_GENERATOR_DEBUG
#endif
#ifndef WSMESSAGELOOP_DEBUG #ifndef WSMESSAGELOOP_DEBUG
#cmakedefine01 WSMESSAGELOOP_DEBUG #cmakedefine01 WSMESSAGELOOP_DEBUG
#endif #endif

View file

@ -28,7 +28,7 @@ interface CSSRule {
- `#include <LibWeb/Bindings/HTMLDetailsElementPrototype.h>` to the includes list. - `#include <LibWeb/Bindings/HTMLDetailsElementPrototype.h>` to the includes list.
- `ADD_WINDOW_OBJECT_INTERFACE(HTMLDetailsElement) \` to the macro at the bottom. - `ADD_WINDOW_OBJECT_INTERFACE(HTMLDetailsElement) \` to the macro at the bottom.
4. Add a `libweb_js_wrapper(HTML/HTMLDetailsElement)` call to [`LibWeb/idl_files.cmake`](../../Userland/Libraries/LibWeb/idl_files.cmake) 4. Add a `libweb_js_bindings(HTML/HTMLDetailsElement)` call to [`LibWeb/idl_files.cmake`](../../Userland/Libraries/LibWeb/idl_files.cmake)
5. Forward declare the generated classes in [`LibWeb/Forward.h`](../../Userland/Libraries/LibWeb/Forward.h): 5. Forward declare the generated classes in [`LibWeb/Forward.h`](../../Userland/Libraries/LibWeb/Forward.h):
- `HTMLDetailsElement` in its namespace. - `HTMLDetailsElement` in its namespace.
@ -38,5 +38,5 @@ interface CSSRule {
- It must inherit from `public RefCounted<HTMLDetailsElement>` and `public Bindings::Wrappable` - It must inherit from `public RefCounted<HTMLDetailsElement>` and `public Bindings::Wrappable`
- It must have a public `using WrapperType = Bindings::HTMLDetailsElementWrapper;` - It must have a public `using WrapperType = Bindings::HTMLDetailsElementWrapper;`
8. If your type isn't an Event or Element, you will need to add it to [`is_wrappable_type()`](../../Meta/Lagom/Tools/CodeGenerators/LibWeb/WrapperGenerator/IDLGenerators.cpp) 8. If your type isn't an Event or Element, you will need to add it to [`is_wrappable_type()`](../../Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp)
so that it can be accepted as an IDL parameter, attribute or return type. so that it can be accepted as an IDL parameter, attribute or return type.

View file

@ -237,8 +237,8 @@ set(XML_PARSER_DEBUG ON)
# set(DEBUG_STATUS_REGISTER ON) # set(DEBUG_STATUS_REGISTER ON)
# False positive: DEFINE_DEBUG_REGISTER is used to define read/write methods for debug registers. # False positive: DEFINE_DEBUG_REGISTER is used to define read/write methods for debug registers.
# set(DEFINE_DEBUG_REGISTER ON) # set(DEFINE_DEBUG_REGISTER ON)
# Clogs up build: The WrapperGenerator stuff is run at compile time. # Clogs up build: The BindingsGenerator stuff is run at compile time.
# set(WRAPPER_GENERATOR_DEBUG ON) # set(BINDINGS_GENERATOR_DEBUG ON)
# Immediately finds violations during boot, shouldn't be discoverable by people who aren't working on fixing. # Immediately finds violations during boot, shouldn't be discoverable by people who aren't working on fixing.
# set(KMALLOC_VERIFY_NO_SPINLOCK_HELD ON) # set(KMALLOC_VERIFY_NO_SPINLOCK_HELD ON)
# False positive: CONSOLE_OUT_TO_BOCHS_DEBUG_PORT is a flag for ConsoleDevice, not a feature. # False positive: CONSOLE_OUT_TO_BOCHS_DEBUG_PORT is a flag for ConsoleDevice, not a feature.

View file

@ -90,7 +90,7 @@ function (generate_css_implementation)
endfunction() endfunction()
function (generate_js_wrappers target) function (generate_js_bindings target)
if (CMAKE_CURRENT_BINARY_DIR MATCHES ".*/LibWeb") if (CMAKE_CURRENT_BINARY_DIR MATCHES ".*/LibWeb")
# Serenity build # Serenity build
@ -104,8 +104,8 @@ function (generate_js_wrappers target)
SET(LIBWEB_META_PREFIX "Lagom") SET(LIBWEB_META_PREFIX "Lagom")
endif() endif()
function(libweb_js_wrapper class) function(libweb_js_bindings class)
cmake_parse_arguments(PARSE_ARGV 1 LIBWEB_WRAPPER "ITERABLE" "" "") cmake_parse_arguments(PARSE_ARGV 1 LIBWEB_BINDINGS "ITERABLE" "" "")
get_filename_component(basename "${class}" NAME) get_filename_component(basename "${class}" NAME)
set(BINDINGS_SOURCES set(BINDINGS_SOURCES
"${LIBWEB_OUTPUT_FOLDER}Bindings/${basename}Constructor.h" "${LIBWEB_OUTPUT_FOLDER}Bindings/${basename}Constructor.h"
@ -120,8 +120,8 @@ function (generate_js_wrappers target)
prototype-implementation prototype-implementation
) )
# FIXME: Instead of requiring a manual declaration of iterable wrappers, we should ask WrapperGenerator if it's iterable # FIXME: Instead of requiring a manual declaration of iterable bindings, we should ask BindingsGenerator if it's iterable
if(LIBWEB_WRAPPER_ITERABLE) if(LIBWEB_BINDINGS_ITERABLE)
list(APPEND BINDINGS_SOURCES list(APPEND BINDINGS_SOURCES
"${LIBWEB_OUTPUT_FOLDER}Bindings/${basename}IteratorPrototype.h" "${LIBWEB_OUTPUT_FOLDER}Bindings/${basename}IteratorPrototype.h"
"${LIBWEB_OUTPUT_FOLDER}Bindings/${basename}IteratorPrototype.cpp" "${LIBWEB_OUTPUT_FOLDER}Bindings/${basename}IteratorPrototype.cpp"
@ -142,11 +142,11 @@ function (generate_js_wrappers target)
list(TRANSFORM include_paths PREPEND -i) list(TRANSFORM include_paths PREPEND -i)
add_custom_command( add_custom_command(
OUTPUT "${bindings_src}" OUTPUT "${bindings_src}"
COMMAND "$<TARGET_FILE:Lagom::WrapperGenerator>" "--${bindings_type}" ${include_paths} "${LIBWEB_INPUT_FOLDER}/${class}.idl" "${LIBWEB_INPUT_FOLDER}" > "${bindings_src}.tmp" COMMAND "$<TARGET_FILE:Lagom::BindingsGenerator>" "--${bindings_type}" ${include_paths} "${LIBWEB_INPUT_FOLDER}/${class}.idl" "${LIBWEB_INPUT_FOLDER}" > "${bindings_src}.tmp"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${bindings_src}.tmp" "${bindings_src}" COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${bindings_src}.tmp" "${bindings_src}"
COMMAND "${CMAKE_COMMAND}" -E remove "${bindings_src}.tmp" COMMAND "${CMAKE_COMMAND}" -E remove "${bindings_src}.tmp"
VERBATIM VERBATIM
DEPENDS Lagom::WrapperGenerator DEPENDS Lagom::BindingsGenerator
MAIN_DEPENDENCY ${LIBWEB_INPUT_FOLDER}/${class}.idl MAIN_DEPENDENCY ${LIBWEB_INPUT_FOLDER}/${class}.idl
) )
endforeach() endforeach()

View file

@ -292,7 +292,7 @@ lagom_lib(TimeZone timezone
target_compile_definitions(LibTimeZone PRIVATE ENABLE_TIME_ZONE_DATA=$<BOOL:${ENABLE_TIME_ZONE_DATABASE_DOWNLOAD}>) target_compile_definitions(LibTimeZone PRIVATE ENABLE_TIME_ZONE_DATA=$<BOOL:${ENABLE_TIME_ZONE_DATABASE_DOWNLOAD}>)
# LibIDL # LibIDL
# This is used by the WrapperGenerator so needs to always be built. # This is used by the BindingsGenerator so needs to always be built.
file(GLOB LIBIDL_SOURCES CONFIGURE_DEPENDS "../../Userland/Libraries/LibIDL/*.cpp") file(GLOB LIBIDL_SOURCES CONFIGURE_DEPENDS "../../Userland/Libraries/LibIDL/*.cpp")
lagom_lib(IDL idl lagom_lib(IDL idl
SOURCES ${LIBIDL_SOURCES} SOURCES ${LIBIDL_SOURCES}
@ -557,7 +557,7 @@ if (BUILD_LAGOM)
SOURCES ${LIBWEB_SOURCES} ${LIBWEB_SUBDIR_SOURCES} ${LIBWEB_SUBSUBDIR_SOURCES} ${LIBWEB_SUBSUBSUBDIR_SOURCES} ${LIBWEB_GENERATED_SOURCES} SOURCES ${LIBWEB_SOURCES} ${LIBWEB_SUBDIR_SOURCES} ${LIBWEB_SUBSUBDIR_SOURCES} ${LIBWEB_SUBSUBSUBDIR_SOURCES} ${LIBWEB_GENERATED_SOURCES}
LIBS LibMarkdown LibGemini LibGfx LibGL LibIDL LibJS LibTextCodec LibWasm LibXML LIBS LibMarkdown LibGemini LibGfx LibGL LibIDL LibJS LibTextCodec LibWasm LibXML
) )
generate_js_wrappers(LibWeb) generate_js_bindings(LibWeb)
endif() endif()
# WebSocket # WebSocket

View file

@ -0,0 +1,7 @@
set(SOURCES
IDLGenerators.cpp
main.cpp
)
lagom_tool(BindingsGenerator LIBS LibIDL)
target_compile_options(BindingsGenerator PUBLIC -g)

View file

@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2020-2021, Andreas Kling <kling@serenityos.org> * Copyright (c) 2020-2021, Andreas Kling <kling@serenityos.org>
* Copyright (c) 2021, Linus Groh <linusg@serenityos.org> * Copyright (c) 2021-2022, Linus Groh <linusg@serenityos.org>
* Copyright (c) 2021, Luke Wilde <lukew@serenityos.org> * Copyright (c) 2021, Luke Wilde <lukew@serenityos.org>
* Copyright (c) 2022, Ali Mohammad Pur <mpfard@serenityos.org> * Copyright (c) 2022, Ali Mohammad Pur <mpfard@serenityos.org>
* *
@ -107,7 +107,7 @@ int main(int argc, char** argv)
interface.fully_qualified_name = interface.name; interface.fully_qualified_name = interface.name;
} }
if constexpr (WRAPPER_GENERATOR_DEBUG) { if constexpr (BINDINGS_GENERATOR_DEBUG) {
dbgln("Attributes:"); dbgln("Attributes:");
for (auto& attribute : interface.attributes) { for (auto& attribute : interface.attributes) {
dbgln(" {}{}{} {}", dbgln(" {}{}{} {}",

View file

@ -6,4 +6,4 @@ lagom_tool(GenerateCSSPropertyID SOURCES GenerateCSSPropertyID.cpp LIB
lagom_tool(GenerateCSSTransformFunctions SOURCES GenerateCSSTransformFunctions.cpp LIBS LibMain) lagom_tool(GenerateCSSTransformFunctions SOURCES GenerateCSSTransformFunctions.cpp LIBS LibMain)
lagom_tool(GenerateCSSValueID SOURCES GenerateCSSValueID.cpp LIBS LibMain) lagom_tool(GenerateCSSValueID SOURCES GenerateCSSValueID.cpp LIBS LibMain)
add_subdirectory(WrapperGenerator) add_subdirectory(BindingsGenerator)

View file

@ -1,7 +0,0 @@
set(SOURCES
IDLGenerators.cpp
main.cpp
)
lagom_tool(WrapperGenerator LIBS LibIDL)
target_compile_options(WrapperGenerator PUBLIC -g)

View file

@ -436,7 +436,7 @@ serenity_lib(LibWeb web)
target_link_libraries(LibWeb LibCore LibJS LibMarkdown LibGemini LibGL LibGUI LibGfx LibSoftGPU LibTextCodec LibWasm LibXML LibIDL) target_link_libraries(LibWeb LibCore LibJS LibMarkdown LibGemini LibGL LibGUI LibGfx LibSoftGPU LibTextCodec LibWasm LibXML LibIDL)
link_with_locale_data(LibWeb) link_with_locale_data(LibWeb)
generate_js_wrappers(LibWeb) generate_js_bindings(LibWeb)
# Note: If you're looking for the calls to "libweb_js_wrapper()", # Note: If you're looking for the calls to "libweb_js_bindings()",
# they have been moved to "idl_files.cmake" # they have been moved to "idl_files.cmake"

View file

@ -98,7 +98,7 @@ DOM::ExceptionOr<String> Headers::get(String const& name_string)
// 2. Return the result of getting name from thiss header list. // 2. Return the result of getting name from thiss header list.
auto byte_buffer = TRY_OR_RETURN_OOM(global_object(), m_header_list.get(name)); auto byte_buffer = TRY_OR_RETURN_OOM(global_object(), m_header_list.get(name));
// FIXME: Teach WrapperGenerator about Optional<String> // FIXME: Teach BindingsGenerator about Optional<String>
return byte_buffer.has_value() ? String { byte_buffer->span() } : String {}; return byte_buffer.has_value() ? String { byte_buffer->span() } : String {};
} }

View file

@ -63,7 +63,7 @@ describe("HTMLTableElement", () => {
let table = page.document.createElement("table"); let table = page.document.createElement("table");
expect(table).not.toBeNull(); expect(table).not.toBeNull();
// We hardcode the default value in a few places, due to the WrapperGenerator's bug with default values // We hardcode the default value in a few places, due to the BindingsGenerator's bug with default values
const defaultValue = -1; const defaultValue = -1;
expect(table.rows.length).toBe(0); expect(table.rows.length).toBe(0);
@ -96,7 +96,7 @@ describe("HTMLTableElement", () => {
let table = page.document.createElement("table"); let table = page.document.createElement("table");
expect(table).not.toBeNull(); expect(table).not.toBeNull();
// We hardcode the default value in a few places, due to the WrapperGenerator's bug with default values // We hardcode the default value in a few places, due to the BindingsGenerator's bug with default values
const defaultValue = -1; const defaultValue = -1;
// deleteRow with an index > number of rows will throw // deleteRow with an index > number of rows will throw

View file

@ -1,190 +1,190 @@
# This file is included from "Meta/CMake/libweb_data.cmake" # This file is included from "Meta/CMake/libweb_data.cmake"
# It is defined here so that there is no need to go to the Meta directory when adding new idl files # It is defined here so that there is no need to go to the Meta directory when adding new idl files
libweb_js_wrapper(Crypto/Crypto) libweb_js_bindings(Crypto/Crypto)
libweb_js_wrapper(Crypto/SubtleCrypto) libweb_js_bindings(Crypto/SubtleCrypto)
libweb_js_wrapper(CSS/CSSConditionRule) libweb_js_bindings(CSS/CSSConditionRule)
libweb_js_wrapper(CSS/CSSFontFaceRule) libweb_js_bindings(CSS/CSSFontFaceRule)
libweb_js_wrapper(CSS/CSSGroupingRule) libweb_js_bindings(CSS/CSSGroupingRule)
libweb_js_wrapper(CSS/CSSImportRule) libweb_js_bindings(CSS/CSSImportRule)
libweb_js_wrapper(CSS/CSSMediaRule) libweb_js_bindings(CSS/CSSMediaRule)
libweb_js_wrapper(CSS/CSSRule) libweb_js_bindings(CSS/CSSRule)
libweb_js_wrapper(CSS/CSSRuleList) libweb_js_bindings(CSS/CSSRuleList)
libweb_js_wrapper(CSS/CSSStyleDeclaration) libweb_js_bindings(CSS/CSSStyleDeclaration)
libweb_js_wrapper(CSS/CSSStyleRule) libweb_js_bindings(CSS/CSSStyleRule)
libweb_js_wrapper(CSS/CSSStyleSheet) libweb_js_bindings(CSS/CSSStyleSheet)
libweb_js_wrapper(CSS/CSSSupportsRule) libweb_js_bindings(CSS/CSSSupportsRule)
libweb_js_wrapper(CSS/MediaList) libweb_js_bindings(CSS/MediaList)
libweb_js_wrapper(CSS/MediaQueryList) libweb_js_bindings(CSS/MediaQueryList)
libweb_js_wrapper(CSS/MediaQueryListEvent) libweb_js_bindings(CSS/MediaQueryListEvent)
libweb_js_wrapper(CSS/Screen) libweb_js_bindings(CSS/Screen)
libweb_js_wrapper(CSS/StyleSheet) libweb_js_bindings(CSS/StyleSheet)
libweb_js_wrapper(CSS/StyleSheetList) libweb_js_bindings(CSS/StyleSheetList)
libweb_js_wrapper(DOM/AbstractRange) libweb_js_bindings(DOM/AbstractRange)
libweb_js_wrapper(DOM/Attr) libweb_js_bindings(DOM/Attr)
libweb_js_wrapper(DOM/AbortController) libweb_js_bindings(DOM/AbortController)
libweb_js_wrapper(DOM/AbortSignal) libweb_js_bindings(DOM/AbortSignal)
libweb_js_wrapper(DOM/CDATASection) libweb_js_bindings(DOM/CDATASection)
libweb_js_wrapper(DOM/CharacterData) libweb_js_bindings(DOM/CharacterData)
libweb_js_wrapper(DOM/Comment) libweb_js_bindings(DOM/Comment)
libweb_js_wrapper(DOM/CustomEvent) libweb_js_bindings(DOM/CustomEvent)
libweb_js_wrapper(DOM/Document) libweb_js_bindings(DOM/Document)
libweb_js_wrapper(DOM/DocumentFragment) libweb_js_bindings(DOM/DocumentFragment)
libweb_js_wrapper(DOM/DocumentType) libweb_js_bindings(DOM/DocumentType)
libweb_js_wrapper(DOM/DOMException) libweb_js_bindings(DOM/DOMException)
libweb_js_wrapper(DOM/DOMImplementation) libweb_js_bindings(DOM/DOMImplementation)
libweb_js_wrapper(DOM/DOMTokenList) libweb_js_bindings(DOM/DOMTokenList)
libweb_js_wrapper(DOM/Element) libweb_js_bindings(DOM/Element)
libweb_js_wrapper(DOM/Event) libweb_js_bindings(DOM/Event)
libweb_js_wrapper(DOM/EventTarget) libweb_js_bindings(DOM/EventTarget)
libweb_js_wrapper(DOM/HTMLCollection) libweb_js_bindings(DOM/HTMLCollection)
libweb_js_wrapper(DOM/MutationRecord) libweb_js_bindings(DOM/MutationRecord)
libweb_js_wrapper(DOM/MutationObserver) libweb_js_bindings(DOM/MutationObserver)
libweb_js_wrapper(DOM/NamedNodeMap) libweb_js_bindings(DOM/NamedNodeMap)
libweb_js_wrapper(DOM/Node) libweb_js_bindings(DOM/Node)
libweb_js_wrapper(DOM/NodeIterator) libweb_js_bindings(DOM/NodeIterator)
libweb_js_wrapper(DOM/NodeList) libweb_js_bindings(DOM/NodeList)
libweb_js_wrapper(DOM/ProcessingInstruction) libweb_js_bindings(DOM/ProcessingInstruction)
libweb_js_wrapper(DOM/Range) libweb_js_bindings(DOM/Range)
libweb_js_wrapper(DOM/ShadowRoot) libweb_js_bindings(DOM/ShadowRoot)
libweb_js_wrapper(DOM/StaticRange) libweb_js_bindings(DOM/StaticRange)
libweb_js_wrapper(DOM/Text) libweb_js_bindings(DOM/Text)
libweb_js_wrapper(DOM/TreeWalker) libweb_js_bindings(DOM/TreeWalker)
libweb_js_wrapper(DOMParsing/XMLSerializer) libweb_js_bindings(DOMParsing/XMLSerializer)
libweb_js_wrapper(Encoding/TextDecoder) libweb_js_bindings(Encoding/TextDecoder)
libweb_js_wrapper(Encoding/TextEncoder) libweb_js_bindings(Encoding/TextEncoder)
libweb_js_wrapper(Fetch/Headers ITERABLE) libweb_js_bindings(Fetch/Headers ITERABLE)
libweb_js_wrapper(FileAPI/Blob) libweb_js_bindings(FileAPI/Blob)
libweb_js_wrapper(FileAPI/File) libweb_js_bindings(FileAPI/File)
libweb_js_wrapper(Geometry/DOMPoint) libweb_js_bindings(Geometry/DOMPoint)
libweb_js_wrapper(Geometry/DOMPointReadOnly) libweb_js_bindings(Geometry/DOMPointReadOnly)
libweb_js_wrapper(Geometry/DOMRect) libweb_js_bindings(Geometry/DOMRect)
libweb_js_wrapper(Geometry/DOMRectList) libweb_js_bindings(Geometry/DOMRectList)
libweb_js_wrapper(Geometry/DOMRectReadOnly) libweb_js_bindings(Geometry/DOMRectReadOnly)
libweb_js_wrapper(HTML/CanvasGradient) libweb_js_bindings(HTML/CanvasGradient)
libweb_js_wrapper(HTML/CanvasRenderingContext2D) libweb_js_bindings(HTML/CanvasRenderingContext2D)
libweb_js_wrapper(HTML/CloseEvent) libweb_js_bindings(HTML/CloseEvent)
libweb_js_wrapper(HTML/DOMParser) libweb_js_bindings(HTML/DOMParser)
libweb_js_wrapper(HTML/DOMStringMap) libweb_js_bindings(HTML/DOMStringMap)
libweb_js_wrapper(HTML/ErrorEvent) libweb_js_bindings(HTML/ErrorEvent)
libweb_js_wrapper(HTML/History) libweb_js_bindings(HTML/History)
libweb_js_wrapper(HTML/HTMLAnchorElement) libweb_js_bindings(HTML/HTMLAnchorElement)
libweb_js_wrapper(HTML/HTMLAreaElement) libweb_js_bindings(HTML/HTMLAreaElement)
libweb_js_wrapper(HTML/HTMLAudioElement) libweb_js_bindings(HTML/HTMLAudioElement)
libweb_js_wrapper(HTML/HTMLBaseElement) libweb_js_bindings(HTML/HTMLBaseElement)
libweb_js_wrapper(HTML/HTMLBodyElement) libweb_js_bindings(HTML/HTMLBodyElement)
libweb_js_wrapper(HTML/HTMLBRElement) libweb_js_bindings(HTML/HTMLBRElement)
libweb_js_wrapper(HTML/HTMLButtonElement) libweb_js_bindings(HTML/HTMLButtonElement)
libweb_js_wrapper(HTML/HTMLCanvasElement) libweb_js_bindings(HTML/HTMLCanvasElement)
libweb_js_wrapper(HTML/HTMLDataElement) libweb_js_bindings(HTML/HTMLDataElement)
libweb_js_wrapper(HTML/HTMLDataListElement) libweb_js_bindings(HTML/HTMLDataListElement)
libweb_js_wrapper(HTML/HTMLDetailsElement) libweb_js_bindings(HTML/HTMLDetailsElement)
libweb_js_wrapper(HTML/HTMLDialogElement) libweb_js_bindings(HTML/HTMLDialogElement)
libweb_js_wrapper(HTML/HTMLDirectoryElement) libweb_js_bindings(HTML/HTMLDirectoryElement)
libweb_js_wrapper(HTML/HTMLDivElement) libweb_js_bindings(HTML/HTMLDivElement)
libweb_js_wrapper(HTML/HTMLDListElement) libweb_js_bindings(HTML/HTMLDListElement)
libweb_js_wrapper(HTML/HTMLElement) libweb_js_bindings(HTML/HTMLElement)
libweb_js_wrapper(HTML/HTMLEmbedElement) libweb_js_bindings(HTML/HTMLEmbedElement)
libweb_js_wrapper(HTML/HTMLFieldSetElement) libweb_js_bindings(HTML/HTMLFieldSetElement)
libweb_js_wrapper(HTML/HTMLFontElement) libweb_js_bindings(HTML/HTMLFontElement)
libweb_js_wrapper(HTML/HTMLFormElement) libweb_js_bindings(HTML/HTMLFormElement)
libweb_js_wrapper(HTML/HTMLFrameElement) libweb_js_bindings(HTML/HTMLFrameElement)
libweb_js_wrapper(HTML/HTMLFrameSetElement) libweb_js_bindings(HTML/HTMLFrameSetElement)
libweb_js_wrapper(HTML/HTMLHeadElement) libweb_js_bindings(HTML/HTMLHeadElement)
libweb_js_wrapper(HTML/HTMLHeadingElement) libweb_js_bindings(HTML/HTMLHeadingElement)
libweb_js_wrapper(HTML/HTMLHRElement) libweb_js_bindings(HTML/HTMLHRElement)
libweb_js_wrapper(HTML/HTMLHtmlElement) libweb_js_bindings(HTML/HTMLHtmlElement)
libweb_js_wrapper(HTML/HTMLIFrameElement) libweb_js_bindings(HTML/HTMLIFrameElement)
libweb_js_wrapper(HTML/HTMLImageElement) libweb_js_bindings(HTML/HTMLImageElement)
libweb_js_wrapper(HTML/HTMLInputElement) libweb_js_bindings(HTML/HTMLInputElement)
libweb_js_wrapper(HTML/HTMLLabelElement) libweb_js_bindings(HTML/HTMLLabelElement)
libweb_js_wrapper(HTML/HTMLLegendElement) libweb_js_bindings(HTML/HTMLLegendElement)
libweb_js_wrapper(HTML/HTMLLIElement) libweb_js_bindings(HTML/HTMLLIElement)
libweb_js_wrapper(HTML/HTMLLinkElement) libweb_js_bindings(HTML/HTMLLinkElement)
libweb_js_wrapper(HTML/HTMLMapElement) libweb_js_bindings(HTML/HTMLMapElement)
libweb_js_wrapper(HTML/HTMLMarqueeElement) libweb_js_bindings(HTML/HTMLMarqueeElement)
libweb_js_wrapper(HTML/HTMLMediaElement) libweb_js_bindings(HTML/HTMLMediaElement)
libweb_js_wrapper(HTML/HTMLMenuElement) libweb_js_bindings(HTML/HTMLMenuElement)
libweb_js_wrapper(HTML/HTMLMetaElement) libweb_js_bindings(HTML/HTMLMetaElement)
libweb_js_wrapper(HTML/HTMLMeterElement) libweb_js_bindings(HTML/HTMLMeterElement)
libweb_js_wrapper(HTML/HTMLModElement) libweb_js_bindings(HTML/HTMLModElement)
libweb_js_wrapper(HTML/HTMLObjectElement) libweb_js_bindings(HTML/HTMLObjectElement)
libweb_js_wrapper(HTML/HTMLOListElement) libweb_js_bindings(HTML/HTMLOListElement)
libweb_js_wrapper(HTML/HTMLOptGroupElement) libweb_js_bindings(HTML/HTMLOptGroupElement)
libweb_js_wrapper(HTML/HTMLOptionElement) libweb_js_bindings(HTML/HTMLOptionElement)
libweb_js_wrapper(HTML/HTMLOptionsCollection) libweb_js_bindings(HTML/HTMLOptionsCollection)
libweb_js_wrapper(HTML/HTMLOutputElement) libweb_js_bindings(HTML/HTMLOutputElement)
libweb_js_wrapper(HTML/HTMLParagraphElement) libweb_js_bindings(HTML/HTMLParagraphElement)
libweb_js_wrapper(HTML/HTMLParamElement) libweb_js_bindings(HTML/HTMLParamElement)
libweb_js_wrapper(HTML/HTMLPictureElement) libweb_js_bindings(HTML/HTMLPictureElement)
libweb_js_wrapper(HTML/HTMLPreElement) libweb_js_bindings(HTML/HTMLPreElement)
libweb_js_wrapper(HTML/HTMLProgressElement) libweb_js_bindings(HTML/HTMLProgressElement)
libweb_js_wrapper(HTML/HTMLQuoteElement) libweb_js_bindings(HTML/HTMLQuoteElement)
libweb_js_wrapper(HTML/HTMLScriptElement) libweb_js_bindings(HTML/HTMLScriptElement)
libweb_js_wrapper(HTML/HTMLSelectElement) libweb_js_bindings(HTML/HTMLSelectElement)
libweb_js_wrapper(HTML/HTMLSlotElement) libweb_js_bindings(HTML/HTMLSlotElement)
libweb_js_wrapper(HTML/HTMLSourceElement) libweb_js_bindings(HTML/HTMLSourceElement)
libweb_js_wrapper(HTML/HTMLSpanElement) libweb_js_bindings(HTML/HTMLSpanElement)
libweb_js_wrapper(HTML/HTMLStyleElement) libweb_js_bindings(HTML/HTMLStyleElement)
libweb_js_wrapper(HTML/HTMLTableCaptionElement) libweb_js_bindings(HTML/HTMLTableCaptionElement)
libweb_js_wrapper(HTML/HTMLTableCellElement) libweb_js_bindings(HTML/HTMLTableCellElement)
libweb_js_wrapper(HTML/HTMLTableColElement) libweb_js_bindings(HTML/HTMLTableColElement)
libweb_js_wrapper(HTML/HTMLTableElement) libweb_js_bindings(HTML/HTMLTableElement)
libweb_js_wrapper(HTML/HTMLTableRowElement) libweb_js_bindings(HTML/HTMLTableRowElement)
libweb_js_wrapper(HTML/HTMLTableSectionElement) libweb_js_bindings(HTML/HTMLTableSectionElement)
libweb_js_wrapper(HTML/HTMLTemplateElement) libweb_js_bindings(HTML/HTMLTemplateElement)
libweb_js_wrapper(HTML/HTMLTextAreaElement) libweb_js_bindings(HTML/HTMLTextAreaElement)
libweb_js_wrapper(HTML/HTMLTimeElement) libweb_js_bindings(HTML/HTMLTimeElement)
libweb_js_wrapper(HTML/HTMLTitleElement) libweb_js_bindings(HTML/HTMLTitleElement)
libweb_js_wrapper(HTML/HTMLTrackElement) libweb_js_bindings(HTML/HTMLTrackElement)
libweb_js_wrapper(HTML/HTMLUListElement) libweb_js_bindings(HTML/HTMLUListElement)
libweb_js_wrapper(HTML/HTMLUnknownElement) libweb_js_bindings(HTML/HTMLUnknownElement)
libweb_js_wrapper(HTML/HTMLVideoElement) libweb_js_bindings(HTML/HTMLVideoElement)
libweb_js_wrapper(HTML/ImageData) libweb_js_bindings(HTML/ImageData)
libweb_js_wrapper(HTML/MessageChannel) libweb_js_bindings(HTML/MessageChannel)
libweb_js_wrapper(HTML/MessageEvent) libweb_js_bindings(HTML/MessageEvent)
libweb_js_wrapper(HTML/MessagePort) libweb_js_bindings(HTML/MessagePort)
libweb_js_wrapper(HTML/PageTransitionEvent) libweb_js_bindings(HTML/PageTransitionEvent)
libweb_js_wrapper(HTML/Path2D) libweb_js_bindings(HTML/Path2D)
libweb_js_wrapper(HTML/PromiseRejectionEvent) libweb_js_bindings(HTML/PromiseRejectionEvent)
libweb_js_wrapper(HTML/Storage) libweb_js_bindings(HTML/Storage)
libweb_js_wrapper(HTML/SubmitEvent) libweb_js_bindings(HTML/SubmitEvent)
libweb_js_wrapper(HTML/TextMetrics) libweb_js_bindings(HTML/TextMetrics)
libweb_js_wrapper(HTML/Worker) libweb_js_bindings(HTML/Worker)
libweb_js_wrapper(HTML/WorkerGlobalScope) libweb_js_bindings(HTML/WorkerGlobalScope)
libweb_js_wrapper(HTML/WorkerLocation) libweb_js_bindings(HTML/WorkerLocation)
libweb_js_wrapper(HTML/WorkerNavigator) libweb_js_bindings(HTML/WorkerNavigator)
libweb_js_wrapper(HighResolutionTime/Performance) libweb_js_bindings(HighResolutionTime/Performance)
libweb_js_wrapper(IntersectionObserver/IntersectionObserver) libweb_js_bindings(IntersectionObserver/IntersectionObserver)
libweb_js_wrapper(NavigationTiming/PerformanceTiming) libweb_js_bindings(NavigationTiming/PerformanceTiming)
libweb_js_wrapper(RequestIdleCallback/IdleDeadline) libweb_js_bindings(RequestIdleCallback/IdleDeadline)
libweb_js_wrapper(ResizeObserver/ResizeObserver) libweb_js_bindings(ResizeObserver/ResizeObserver)
libweb_js_wrapper(SVG/SVGAnimatedLength) libweb_js_bindings(SVG/SVGAnimatedLength)
libweb_js_wrapper(SVG/SVGClipPathElement) libweb_js_bindings(SVG/SVGClipPathElement)
libweb_js_wrapper(SVG/SVGDefsElement) libweb_js_bindings(SVG/SVGDefsElement)
libweb_js_wrapper(SVG/SVGElement) libweb_js_bindings(SVG/SVGElement)
libweb_js_wrapper(SVG/SVGGeometryElement) libweb_js_bindings(SVG/SVGGeometryElement)
libweb_js_wrapper(SVG/SVGGraphicsElement) libweb_js_bindings(SVG/SVGGraphicsElement)
libweb_js_wrapper(SVG/SVGCircleElement) libweb_js_bindings(SVG/SVGCircleElement)
libweb_js_wrapper(SVG/SVGEllipseElement) libweb_js_bindings(SVG/SVGEllipseElement)
libweb_js_wrapper(SVG/SVGLength) libweb_js_bindings(SVG/SVGLength)
libweb_js_wrapper(SVG/SVGLineElement) libweb_js_bindings(SVG/SVGLineElement)
libweb_js_wrapper(SVG/SVGPathElement) libweb_js_bindings(SVG/SVGPathElement)
libweb_js_wrapper(SVG/SVGPolygonElement) libweb_js_bindings(SVG/SVGPolygonElement)
libweb_js_wrapper(SVG/SVGPolylineElement) libweb_js_bindings(SVG/SVGPolylineElement)
libweb_js_wrapper(SVG/SVGRectElement) libweb_js_bindings(SVG/SVGRectElement)
libweb_js_wrapper(SVG/SVGSVGElement) libweb_js_bindings(SVG/SVGSVGElement)
libweb_js_wrapper(SVG/SVGTextContentElement) libweb_js_bindings(SVG/SVGTextContentElement)
libweb_js_wrapper(Selection/Selection) libweb_js_bindings(Selection/Selection)
libweb_js_wrapper(UIEvents/FocusEvent) libweb_js_bindings(UIEvents/FocusEvent)
libweb_js_wrapper(UIEvents/KeyboardEvent) libweb_js_bindings(UIEvents/KeyboardEvent)
libweb_js_wrapper(UIEvents/MouseEvent) libweb_js_bindings(UIEvents/MouseEvent)
libweb_js_wrapper(UIEvents/UIEvent) libweb_js_bindings(UIEvents/UIEvent)
libweb_js_wrapper(URL/URL) libweb_js_bindings(URL/URL)
libweb_js_wrapper(URL/URLSearchParams ITERABLE) libweb_js_bindings(URL/URLSearchParams ITERABLE)
libweb_js_wrapper(WebGL/WebGLContextEvent) libweb_js_bindings(WebGL/WebGLContextEvent)
libweb_js_wrapper(WebGL/WebGLRenderingContext) libweb_js_bindings(WebGL/WebGLRenderingContext)
libweb_js_wrapper(WebSockets/WebSocket) libweb_js_bindings(WebSockets/WebSocket)
libweb_js_wrapper(XHR/ProgressEvent) libweb_js_bindings(XHR/ProgressEvent)
libweb_js_wrapper(XHR/XMLHttpRequest) libweb_js_bindings(XHR/XMLHttpRequest)
libweb_js_wrapper(XHR/XMLHttpRequestEventTarget) libweb_js_bindings(XHR/XMLHttpRequestEventTarget)