mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-04-25 17:25:08 +02:00
Previously, the LibWeb bindings generator would output multiple per interface files like Prototype/Constructor/Namespace/GlobalMixin depending on the contents of that IDL file. This complicates the build system as it means that it does not know what files will be generated without knowledge of the contents of that IDL file. Instead, for each IDL file only generate a single Bindings/<IDLFile>.h and Bindings/<IDLFile>.cpp.
59 lines
1.7 KiB
C++
59 lines
1.7 KiB
C++
/*
|
|
* Copyright (c) 2020, the SerenityOS developers.
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#include <LibWeb/Bindings/HTMLLegendElement.h>
|
|
#include <LibWeb/Bindings/Intrinsics.h>
|
|
#include <LibWeb/HTML/HTMLFieldSetElement.h>
|
|
#include <LibWeb/HTML/HTMLLegendElement.h>
|
|
#include <LibWeb/Layout/LegendBox.h>
|
|
|
|
namespace Web::HTML {
|
|
|
|
GC_DEFINE_ALLOCATOR(HTMLLegendElement);
|
|
|
|
HTMLLegendElement::HTMLLegendElement(DOM::Document& document, DOM::QualifiedName qualified_name)
|
|
: HTMLElement(document, move(qualified_name))
|
|
{
|
|
}
|
|
|
|
HTMLLegendElement::~HTMLLegendElement() = default;
|
|
|
|
void HTMLLegendElement::initialize(JS::Realm& realm)
|
|
{
|
|
WEB_SET_PROTOTYPE_FOR_INTERFACE(HTMLLegendElement);
|
|
Base::initialize(realm);
|
|
}
|
|
|
|
// https://html.spec.whatwg.org/multipage/form-elements.html#dom-legend-form
|
|
HTMLFormElement* HTMLLegendElement::form()
|
|
{
|
|
// The form IDL attribute's behavior depends on whether the legend element is in a fieldset element or not.
|
|
// If the legend has a fieldset element as its parent, then the form IDL attribute must return the same value as the form IDL attribute on that fieldset element.
|
|
if (auto* field_set = as_if<HTML::HTMLFieldSetElement>(parent_element().ptr())) {
|
|
return field_set->form();
|
|
}
|
|
|
|
// Otherwise, it must return null.
|
|
return nullptr;
|
|
}
|
|
|
|
GC::Ptr<Layout::Node> HTMLLegendElement::create_layout_node(GC::Ref<CSS::ComputedProperties> style)
|
|
{
|
|
return heap().allocate<Layout::LegendBox>(document(), *this, move(style));
|
|
}
|
|
|
|
Layout::LegendBox* HTMLLegendElement::layout_node()
|
|
{
|
|
return static_cast<Layout::LegendBox*>(Node::layout_node());
|
|
}
|
|
|
|
Layout::LegendBox const* HTMLLegendElement::layout_node() const
|
|
{
|
|
return static_cast<Layout::LegendBox const*>(Node::layout_node());
|
|
}
|
|
|
|
}
|