LibWeb: Set the correct prototype for SVGAElement instances

(cherry picked from commit 4db05ecf69bee07a060f2e4513e9d53b6110dcc4)
This commit is contained in:
Andreas Kling 2024-06-28 14:51:57 +02:00 committed by Nico Weber
parent bdf3071bd9
commit 225108c830
4 changed files with 19 additions and 2 deletions

View file

@ -0,0 +1 @@
true

View file

@ -0,0 +1,7 @@
<script src="../include.js"></script>
<script>
test(() => {
let a = document.createElementNS("http://www.w3.org/2000/svg", "a");
println(a.__proto__ === SVGAElement.prototype);
});
</script>

View file

@ -4,6 +4,7 @@
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <LibWeb/Bindings/SVGAElementPrototype.h>
#include <LibWeb/Layout/SVGGraphicsBox.h>
#include <LibWeb/SVG/SVGAElement.h>
@ -18,6 +19,12 @@ SVGAElement::SVGAElement(DOM::Document& document, DOM::QualifiedName qualified_n
SVGAElement::~SVGAElement() = default;
void SVGAElement::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(SVGAElement);
}
JS::GCPtr<Layout::Node> SVGAElement::create_layout_node(NonnullRefPtr<CSS::StyleProperties> style)
{
return heap().allocate_without_realm<Layout::SVGGraphicsBox>(document(), *this, move(style));

View file

@ -17,9 +17,11 @@ class SVGAElement final : public SVGGraphicsElement {
public:
virtual ~SVGAElement() override;
SVGAElement(DOM::Document&, DOM::QualifiedName);
virtual JS::GCPtr<Layout::Node> create_layout_node(NonnullRefPtr<CSS::StyleProperties>) override;
private:
SVGAElement(DOM::Document&, DOM::QualifiedName);
virtual void initialize(JS::Realm&) override;
};
}