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/AbstractRangeConstructor.h>
|
||||||
#include <LibWeb/Bindings/AbstractRangePrototype.h>
|
#include <LibWeb/Bindings/AbstractRangePrototype.h>
|
||||||
#include <LibWeb/Bindings/AudioConstructor.h>
|
#include <LibWeb/Bindings/AudioConstructor.h>
|
||||||
|
#include <LibWeb/Bindings/CDATASectionConstructor.h>
|
||||||
|
#include <LibWeb/Bindings/CDATASectionPrototype.h>
|
||||||
#include <LibWeb/Bindings/CSSConditionRuleConstructor.h>
|
#include <LibWeb/Bindings/CSSConditionRuleConstructor.h>
|
||||||
#include <LibWeb/Bindings/CSSConditionRulePrototype.h>
|
#include <LibWeb/Bindings/CSSConditionRulePrototype.h>
|
||||||
#include <LibWeb/Bindings/CSSFontFaceRuleConstructor.h>
|
#include <LibWeb/Bindings/CSSFontFaceRuleConstructor.h>
|
||||||
|
@ -370,6 +372,7 @@
|
||||||
ADD_WINDOW_OBJECT_INTERFACE(AbortController) \
|
ADD_WINDOW_OBJECT_INTERFACE(AbortController) \
|
||||||
ADD_WINDOW_OBJECT_INTERFACE(AbortSignal) \
|
ADD_WINDOW_OBJECT_INTERFACE(AbortSignal) \
|
||||||
ADD_WINDOW_OBJECT_INTERFACE(AbstractRange) \
|
ADD_WINDOW_OBJECT_INTERFACE(AbstractRange) \
|
||||||
|
ADD_WINDOW_OBJECT_INTERFACE(CDATASection) \
|
||||||
ADD_WINDOW_OBJECT_INTERFACE(CSSConditionRule) \
|
ADD_WINDOW_OBJECT_INTERFACE(CSSConditionRule) \
|
||||||
ADD_WINDOW_OBJECT_INTERFACE(CSSFontFaceRule) \
|
ADD_WINDOW_OBJECT_INTERFACE(CSSFontFaceRule) \
|
||||||
ADD_WINDOW_OBJECT_INTERFACE(CSSGroupingRule) \
|
ADD_WINDOW_OBJECT_INTERFACE(CSSGroupingRule) \
|
||||||
|
|
|
@ -74,6 +74,7 @@ set(SOURCES
|
||||||
DOM/AbortSignal.cpp
|
DOM/AbortSignal.cpp
|
||||||
DOM/Attribute.cpp
|
DOM/Attribute.cpp
|
||||||
DOM/Attribute.idl
|
DOM/Attribute.idl
|
||||||
|
DOM/CDATASection.cpp
|
||||||
DOM/CharacterData.cpp
|
DOM/CharacterData.cpp
|
||||||
DOM/CharacterData.idl
|
DOM/CharacterData.idl
|
||||||
DOM/Comment.cpp
|
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_parent_node() const { return is_element() || is_document() || is_document_fragment(); }
|
||||||
bool is_slottable() const { return is_element() || is_text(); }
|
bool is_slottable() const { return is_element() || is_text(); }
|
||||||
bool is_attribute() const { return type() == NodeType::ATTRIBUTE_NODE; }
|
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 is_shadow_root() const { return false; }
|
||||||
|
|
||||||
virtual bool requires_svg_container() 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
|
// https://dom.spec.whatwg.org/#dom-text-text
|
||||||
NonnullRefPtr<Text> Text::create_with_global_object(Bindings::WindowObject& window, String const& data)
|
NonnullRefPtr<Text> Text::create_with_global_object(Bindings::WindowObject& window, String const& data)
|
||||||
{
|
{
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
namespace Web::DOM {
|
namespace Web::DOM {
|
||||||
|
|
||||||
class Text final : public CharacterData {
|
class Text : public CharacterData {
|
||||||
public:
|
public:
|
||||||
using WrapperType = Bindings::TextWrapper;
|
using WrapperType = Bindings::TextWrapper;
|
||||||
|
|
||||||
|
@ -32,6 +32,9 @@ public:
|
||||||
|
|
||||||
ExceptionOr<NonnullRefPtr<Text>> split_text(size_t offset);
|
ExceptionOr<NonnullRefPtr<Text>> split_text(size_t offset);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
Text(Document&, NodeType, String const&);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
WeakPtr<HTML::HTMLInputElement> m_owner_input_element;
|
WeakPtr<HTML::HTMLInputElement> m_owner_input_element;
|
||||||
|
|
||||||
|
|
|
@ -118,6 +118,7 @@ class AbstractRange;
|
||||||
class AbortController;
|
class AbortController;
|
||||||
class AbortSignal;
|
class AbortSignal;
|
||||||
class Attribute;
|
class Attribute;
|
||||||
|
class CDATASection;
|
||||||
class CharacterData;
|
class CharacterData;
|
||||||
class Comment;
|
class Comment;
|
||||||
class CustomEvent;
|
class CustomEvent;
|
||||||
|
@ -410,6 +411,7 @@ class AttributeWrapper;
|
||||||
struct CallbackType;
|
struct CallbackType;
|
||||||
class CanvasGradientWrapper;
|
class CanvasGradientWrapper;
|
||||||
class CanvasRenderingContext2DWrapper;
|
class CanvasRenderingContext2DWrapper;
|
||||||
|
class CDATASectionWrapper;
|
||||||
class CharacterDataWrapper;
|
class CharacterDataWrapper;
|
||||||
class CloseEventWrapper;
|
class CloseEventWrapper;
|
||||||
class CommentWrapper;
|
class CommentWrapper;
|
||||||
|
|
|
@ -24,6 +24,7 @@ libweb_js_wrapper(DOM/AbstractRange)
|
||||||
libweb_js_wrapper(DOM/Attribute)
|
libweb_js_wrapper(DOM/Attribute)
|
||||||
libweb_js_wrapper(DOM/AbortController)
|
libweb_js_wrapper(DOM/AbortController)
|
||||||
libweb_js_wrapper(DOM/AbortSignal)
|
libweb_js_wrapper(DOM/AbortSignal)
|
||||||
|
libweb_js_wrapper(DOM/CDATASection)
|
||||||
libweb_js_wrapper(DOM/CharacterData)
|
libweb_js_wrapper(DOM/CharacterData)
|
||||||
libweb_js_wrapper(DOM/Comment)
|
libweb_js_wrapper(DOM/Comment)
|
||||||
libweb_js_wrapper(DOM/CustomEvent)
|
libweb_js_wrapper(DOM/CustomEvent)
|
||||||
|
|
Loading…
Add table
Reference in a new issue