Allow the WebIDL parser to accept files without a top-level interface, and have the exposed-interface generator skip those modules. With that in place, register support IDLs through libweb_js_bindings() as well, including generated CSS IDLs from the build directory, and remove the separate support-idl plumbing. This is enabled now that the IDL generator rules have been simplified so that every IDL file produces a corresponding header and cpp file.
20 lines
769 B
Markdown
20 lines
769 B
Markdown
# Adding a new IDL file
|
|
|
|
Ladybird's build system does a lot of work of turning the IDL from a Web spec into code, but there are a few things you'll need to do yourself.
|
|
|
|
For the sake of example, let's say you're wanting to add the `HTMLDetailsElement`.
|
|
|
|
1. Create `LibWeb/HTML/HTMLDetailsElement.idl` with the contents of the IDL section of the spec. In this case, that would be:
|
|
```webidl
|
|
[Exposed=Window]
|
|
interface HTMLDetailsElement : HTMLElement {
|
|
[HTMLConstructor] constructor();
|
|
|
|
[CEReactions] attribute boolean open;
|
|
};
|
|
```
|
|
|
|
2. Add the IDL file to [`LibWeb/idl_files.cmake`](../Libraries/LibWeb/idl_files.cmake).
|
|
|
|
3. Forward declare the generated class in [`LibWeb/Forward.h`](../Libraries/LibWeb/Forward.h):
|
|
- `HTMLDetailsElement` in its namespace.
|