LibWeb: Add CDATASection
Not used for anything currently other than exposing it on the Window object. This allows Web Components Polyfills to patch its prototype.
This commit is contained in:
parent
2916b3bebf
commit
1ceba560f4
Notes:
sideshowbarker
2024-07-17 09:56:12 +09:00
Author: https://github.com/Lubrsi Commit: https://github.com/SerenityOS/serenity/commit/1ceba560f4 Pull-request: https://github.com/SerenityOS/serenity/pull/14407
10 changed files with 68 additions and 1 deletions
|
@ -15,6 +15,8 @@
|
|||
#include <LibWeb/Bindings/AbstractRangeConstructor.h>
|
||||
#include <LibWeb/Bindings/AbstractRangePrototype.h>
|
||||
#include <LibWeb/Bindings/AudioConstructor.h>
|
||||
#include <LibWeb/Bindings/CDATASectionConstructor.h>
|
||||
#include <LibWeb/Bindings/CDATASectionPrototype.h>
|
||||
#include <LibWeb/Bindings/CSSConditionRuleConstructor.h>
|
||||
#include <LibWeb/Bindings/CSSConditionRulePrototype.h>
|
||||
#include <LibWeb/Bindings/CSSFontFaceRuleConstructor.h>
|
||||
|
@ -370,6 +372,7 @@
|
|||
ADD_WINDOW_OBJECT_INTERFACE(AbortController) \
|
||||
ADD_WINDOW_OBJECT_INTERFACE(AbortSignal) \
|
||||
ADD_WINDOW_OBJECT_INTERFACE(AbstractRange) \
|
||||
ADD_WINDOW_OBJECT_INTERFACE(CDATASection) \
|
||||
ADD_WINDOW_OBJECT_INTERFACE(CSSConditionRule) \
|
||||
ADD_WINDOW_OBJECT_INTERFACE(CSSFontFaceRule) \
|
||||
ADD_WINDOW_OBJECT_INTERFACE(CSSGroupingRule) \
|
||||
|
|
|
@ -74,6 +74,7 @@ set(SOURCES
|
|||
DOM/AbortSignal.cpp
|
||||
DOM/Attribute.cpp
|
||||
DOM/Attribute.idl
|
||||
DOM/CDATASection.cpp
|
||||
DOM/CharacterData.cpp
|
||||
DOM/CharacterData.idl
|
||||
DOM/Comment.cpp
|
||||
|
|
20
Userland/Libraries/LibWeb/DOM/CDATASection.cpp
Normal file
20
Userland/Libraries/LibWeb/DOM/CDATASection.cpp
Normal file
|
@ -0,0 +1,20 @@
|
|||
/*
|
||||
* Copyright (c) 2022, Luke Wilde <lukew@serenityos.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <LibWeb/DOM/CDATASection.h>
|
||||
|
||||
namespace Web::DOM {
|
||||
|
||||
CDATASection::CDATASection(Document& document, String const& data)
|
||||
: Text(document, NodeType::CDATA_SECTION_NODE, data)
|
||||
{
|
||||
}
|
||||
|
||||
CDATASection::~CDATASection()
|
||||
{
|
||||
}
|
||||
|
||||
}
|
28
Userland/Libraries/LibWeb/DOM/CDATASection.h
Normal file
28
Userland/Libraries/LibWeb/DOM/CDATASection.h
Normal file
|
@ -0,0 +1,28 @@
|
|||
/*
|
||||
* Copyright (c) 2022, Luke Wilde <lukew@serenityos.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AK/RefCounted.h>
|
||||
#include <LibWeb/DOM/Text.h>
|
||||
|
||||
namespace Web::DOM {
|
||||
|
||||
class CDATASection final : public Text {
|
||||
public:
|
||||
using WrapperType = Bindings::CDATASectionWrapper;
|
||||
|
||||
CDATASection(Document&, String const&);
|
||||
virtual ~CDATASection() override;
|
||||
|
||||
// ^Node
|
||||
virtual FlyString node_name() const override { return "#cdata-section"; }
|
||||
};
|
||||
|
||||
template<>
|
||||
inline bool Node::fast_is<CDATASection>() const { return is_cdata_section(); }
|
||||
|
||||
}
|
3
Userland/Libraries/LibWeb/DOM/CDATASection.idl
Normal file
3
Userland/Libraries/LibWeb/DOM/CDATASection.idl
Normal file
|
@ -0,0 +1,3 @@
|
|||
[Exposed=Window]
|
||||
interface CDATASection : Text {
|
||||
};
|
|
@ -72,6 +72,7 @@ public:
|
|||
bool is_parent_node() const { return is_element() || is_document() || is_document_fragment(); }
|
||||
bool is_slottable() const { return is_element() || is_text(); }
|
||||
bool is_attribute() const { return type() == NodeType::ATTRIBUTE_NODE; }
|
||||
bool is_cdata_section() const { return type() == NodeType::CDATA_SECTION_NODE; }
|
||||
virtual bool is_shadow_root() const { return false; }
|
||||
|
||||
virtual bool requires_svg_container() const { return false; }
|
||||
|
|
|
@ -17,6 +17,11 @@ Text::Text(Document& document, String const& data)
|
|||
{
|
||||
}
|
||||
|
||||
Text::Text(Document& document, NodeType type, String const& data)
|
||||
: CharacterData(document, type, data)
|
||||
{
|
||||
}
|
||||
|
||||
// https://dom.spec.whatwg.org/#dom-text-text
|
||||
NonnullRefPtr<Text> Text::create_with_global_object(Bindings::WindowObject& window, String const& data)
|
||||
{
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
namespace Web::DOM {
|
||||
|
||||
class Text final : public CharacterData {
|
||||
class Text : public CharacterData {
|
||||
public:
|
||||
using WrapperType = Bindings::TextWrapper;
|
||||
|
||||
|
@ -32,6 +32,9 @@ public:
|
|||
|
||||
ExceptionOr<NonnullRefPtr<Text>> split_text(size_t offset);
|
||||
|
||||
protected:
|
||||
Text(Document&, NodeType, String const&);
|
||||
|
||||
private:
|
||||
WeakPtr<HTML::HTMLInputElement> m_owner_input_element;
|
||||
|
||||
|
|
|
@ -118,6 +118,7 @@ class AbstractRange;
|
|||
class AbortController;
|
||||
class AbortSignal;
|
||||
class Attribute;
|
||||
class CDATASection;
|
||||
class CharacterData;
|
||||
class Comment;
|
||||
class CustomEvent;
|
||||
|
@ -410,6 +411,7 @@ class AttributeWrapper;
|
|||
struct CallbackType;
|
||||
class CanvasGradientWrapper;
|
||||
class CanvasRenderingContext2DWrapper;
|
||||
class CDATASectionWrapper;
|
||||
class CharacterDataWrapper;
|
||||
class CloseEventWrapper;
|
||||
class CommentWrapper;
|
||||
|
|
|
@ -24,6 +24,7 @@ libweb_js_wrapper(DOM/AbstractRange)
|
|||
libweb_js_wrapper(DOM/Attribute)
|
||||
libweb_js_wrapper(DOM/AbortController)
|
||||
libweb_js_wrapper(DOM/AbortSignal)
|
||||
libweb_js_wrapper(DOM/CDATASection)
|
||||
libweb_js_wrapper(DOM/CharacterData)
|
||||
libweb_js_wrapper(DOM/Comment)
|
||||
libweb_js_wrapper(DOM/CustomEvent)
|
||||
|
|
Loading…
Add table
Reference in a new issue