mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 16:07:47 +00:00
LibWeb: Add the TextEncoder interface
This is from the Encoding Standard (https://encoding.spec.whatwg.org), and therefore gets its own namespace and subdirectory within LibWeb :^)
This commit is contained in:
parent
0306cf2030
commit
35d3a1e77b
6 changed files with 69 additions and 1 deletions
|
@ -807,7 +807,7 @@ int main(int argc, char** argv)
|
||||||
|
|
||||||
auto interface = IDL::parse_interface(path, data, import_base_path);
|
auto interface = IDL::parse_interface(path, data, import_base_path);
|
||||||
|
|
||||||
if (namespace_.is_one_of("Crypto", "CSS", "DOM", "HTML", "UIEvents", "Geometry", "HighResolutionTime", "IntersectionObserver", "NavigationTiming", "RequestIdleCallback", "ResizeObserver", "SVG", "Selection", "XHR", "URL")) {
|
if (namespace_.is_one_of("Crypto", "CSS", "DOM", "Encoding", "HTML", "UIEvents", "Geometry", "HighResolutionTime", "IntersectionObserver", "NavigationTiming", "RequestIdleCallback", "ResizeObserver", "SVG", "Selection", "XHR", "URL")) {
|
||||||
StringBuilder builder;
|
StringBuilder builder;
|
||||||
builder.append(namespace_);
|
builder.append(namespace_);
|
||||||
builder.append("::");
|
builder.append("::");
|
||||||
|
@ -1452,6 +1452,8 @@ static void generate_header(IDL::Interface const& interface)
|
||||||
# include <LibWeb/CSS/@name@.h>
|
# include <LibWeb/CSS/@name@.h>
|
||||||
#elif __has_include(<LibWeb/DOM/@name@.h>)
|
#elif __has_include(<LibWeb/DOM/@name@.h>)
|
||||||
# include <LibWeb/DOM/@name@.h>
|
# include <LibWeb/DOM/@name@.h>
|
||||||
|
#elif __has_include(<LibWeb/Encoding/@name@.h>)
|
||||||
|
# include <LibWeb/Encoding/@name@.h>
|
||||||
#elif __has_include(<LibWeb/Geometry/@name@.h>)
|
#elif __has_include(<LibWeb/Geometry/@name@.h>)
|
||||||
# include <LibWeb/Geometry/@name@.h>
|
# include <LibWeb/Geometry/@name@.h>
|
||||||
#elif __has_include(<LibWeb/HTML/@name@.h>)
|
#elif __has_include(<LibWeb/HTML/@name@.h>)
|
||||||
|
@ -2500,6 +2502,8 @@ void generate_constructor_implementation(IDL::Interface const& interface)
|
||||||
# include <LibWeb/CSS/@name@.h>
|
# include <LibWeb/CSS/@name@.h>
|
||||||
#elif __has_include(<LibWeb/DOM/@name@.h>)
|
#elif __has_include(<LibWeb/DOM/@name@.h>)
|
||||||
# include <LibWeb/DOM/@name@.h>
|
# include <LibWeb/DOM/@name@.h>
|
||||||
|
#elif __has_include(<LibWeb/Encoding/@name@.h>)
|
||||||
|
# include <LibWeb/Encoding/@name@.h>
|
||||||
#elif __has_include(<LibWeb/Geometry/@name@.h>)
|
#elif __has_include(<LibWeb/Geometry/@name@.h>)
|
||||||
# include <LibWeb/Geometry/@name@.h>
|
# include <LibWeb/Geometry/@name@.h>
|
||||||
#elif __has_include(<LibWeb/HTML/@name@.h>)
|
#elif __has_include(<LibWeb/HTML/@name@.h>)
|
||||||
|
@ -2815,6 +2819,8 @@ void generate_prototype_implementation(IDL::Interface const& interface)
|
||||||
# include <LibWeb/CSS/@name@.h>
|
# include <LibWeb/CSS/@name@.h>
|
||||||
#elif __has_include(<LibWeb/DOM/@name@.h>)
|
#elif __has_include(<LibWeb/DOM/@name@.h>)
|
||||||
# include <LibWeb/DOM/@name@.h>
|
# include <LibWeb/DOM/@name@.h>
|
||||||
|
#elif __has_include(<LibWeb/Encoding/@name@.h>)
|
||||||
|
# include <LibWeb/Encoding/@name@.h>
|
||||||
#elif __has_include(<LibWeb/Geometry/@name@.h>)
|
#elif __has_include(<LibWeb/Geometry/@name@.h>)
|
||||||
# include <LibWeb/Geometry/@name@.h>
|
# include <LibWeb/Geometry/@name@.h>
|
||||||
#elif __has_include(<LibWeb/HTML/@name@.h>)
|
#elif __has_include(<LibWeb/HTML/@name@.h>)
|
||||||
|
@ -3268,6 +3274,8 @@ static void generate_iterator_header(IDL::Interface const& interface)
|
||||||
# include <LibWeb/CSS/@name@.h>
|
# include <LibWeb/CSS/@name@.h>
|
||||||
#elif __has_include(<LibWeb/DOM/@name@.h>)
|
#elif __has_include(<LibWeb/DOM/@name@.h>)
|
||||||
# include <LibWeb/DOM/@name@.h>
|
# include <LibWeb/DOM/@name@.h>
|
||||||
|
#elif __has_include(<LibWeb/Encoding/@name@.h>)
|
||||||
|
# include <LibWeb/Encoding/@name@.h>
|
||||||
#elif __has_include(<LibWeb/Geometry/@name@.h>)
|
#elif __has_include(<LibWeb/Geometry/@name@.h>)
|
||||||
# include <LibWeb/Geometry/@name@.h>
|
# include <LibWeb/Geometry/@name@.h>
|
||||||
#elif __has_include(<LibWeb/HTML/@name@.h>)
|
#elif __has_include(<LibWeb/HTML/@name@.h>)
|
||||||
|
@ -3456,6 +3464,8 @@ void generate_iterator_prototype_implementation(IDL::Interface const& interface)
|
||||||
# include <LibWeb/CSS/@name@.h>
|
# include <LibWeb/CSS/@name@.h>
|
||||||
#elif __has_include(<LibWeb/DOM/@name@.h>)
|
#elif __has_include(<LibWeb/DOM/@name@.h>)
|
||||||
# include <LibWeb/DOM/@name@.h>
|
# include <LibWeb/DOM/@name@.h>
|
||||||
|
#elif __has_include(<LibWeb/Encoding/@name@.h>)
|
||||||
|
# include <LibWeb/Encoding/@name@.h>
|
||||||
#elif __has_include(<LibWeb/Geometry/@name@.h>)
|
#elif __has_include(<LibWeb/Geometry/@name@.h>)
|
||||||
# include <LibWeb/Geometry/@name@.h>
|
# include <LibWeb/Geometry/@name@.h>
|
||||||
#elif __has_include(<LibWeb/HTML/@name@.h>)
|
#elif __has_include(<LibWeb/HTML/@name@.h>)
|
||||||
|
|
|
@ -262,6 +262,8 @@
|
||||||
#include <LibWeb/Bindings/SubmitEventConstructor.h>
|
#include <LibWeb/Bindings/SubmitEventConstructor.h>
|
||||||
#include <LibWeb/Bindings/SubmitEventPrototype.h>
|
#include <LibWeb/Bindings/SubmitEventPrototype.h>
|
||||||
#include <LibWeb/Bindings/TextConstructor.h>
|
#include <LibWeb/Bindings/TextConstructor.h>
|
||||||
|
#include <LibWeb/Bindings/TextEncoderConstructor.h>
|
||||||
|
#include <LibWeb/Bindings/TextEncoderPrototype.h>
|
||||||
#include <LibWeb/Bindings/TextPrototype.h>
|
#include <LibWeb/Bindings/TextPrototype.h>
|
||||||
#include <LibWeb/Bindings/UIEventConstructor.h>
|
#include <LibWeb/Bindings/UIEventConstructor.h>
|
||||||
#include <LibWeb/Bindings/UIEventPrototype.h>
|
#include <LibWeb/Bindings/UIEventPrototype.h>
|
||||||
|
@ -416,6 +418,7 @@
|
||||||
ADD_WINDOW_OBJECT_INTERFACE(SVGPathElement) \
|
ADD_WINDOW_OBJECT_INTERFACE(SVGPathElement) \
|
||||||
ADD_WINDOW_OBJECT_INTERFACE(SVGSVGElement) \
|
ADD_WINDOW_OBJECT_INTERFACE(SVGSVGElement) \
|
||||||
ADD_WINDOW_OBJECT_INTERFACE(Text) \
|
ADD_WINDOW_OBJECT_INTERFACE(Text) \
|
||||||
|
ADD_WINDOW_OBJECT_INTERFACE(TextEncoder) \
|
||||||
ADD_WINDOW_OBJECT_INTERFACE(UIEvent) \
|
ADD_WINDOW_OBJECT_INTERFACE(UIEvent) \
|
||||||
ADD_WINDOW_OBJECT_INTERFACE(URLSearchParams) \
|
ADD_WINDOW_OBJECT_INTERFACE(URLSearchParams) \
|
||||||
ADD_WINDOW_OBJECT_INTERFACE(URL) \
|
ADD_WINDOW_OBJECT_INTERFACE(URL) \
|
||||||
|
|
|
@ -396,6 +396,7 @@ libweb_js_wrapper(DOM/ProcessingInstruction)
|
||||||
libweb_js_wrapper(DOM/Range)
|
libweb_js_wrapper(DOM/Range)
|
||||||
libweb_js_wrapper(DOM/ShadowRoot)
|
libweb_js_wrapper(DOM/ShadowRoot)
|
||||||
libweb_js_wrapper(DOM/Text)
|
libweb_js_wrapper(DOM/Text)
|
||||||
|
libweb_js_wrapper(Encoding/TextEncoder)
|
||||||
libweb_js_wrapper(Geometry/DOMRect)
|
libweb_js_wrapper(Geometry/DOMRect)
|
||||||
libweb_js_wrapper(Geometry/DOMRectReadOnly)
|
libweb_js_wrapper(Geometry/DOMRectReadOnly)
|
||||||
libweb_js_wrapper(HTML/CanvasRenderingContext2D)
|
libweb_js_wrapper(HTML/CanvasRenderingContext2D)
|
||||||
|
|
40
Userland/Libraries/LibWeb/Encoding/TextEncoder.h
Normal file
40
Userland/Libraries/LibWeb/Encoding/TextEncoder.h
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2021, Linus Groh <linusg@serenityos.org>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <AK/Forward.h>
|
||||||
|
#include <AK/NonnullRefPtr.h>
|
||||||
|
#include <AK/RefCounted.h>
|
||||||
|
#include <LibJS/Forward.h>
|
||||||
|
#include <LibWeb/Bindings/Wrappable.h>
|
||||||
|
#include <LibWeb/Forward.h>
|
||||||
|
|
||||||
|
namespace Web::Encoding {
|
||||||
|
|
||||||
|
// https://encoding.spec.whatwg.org/#textencoder
|
||||||
|
class TextEncoder
|
||||||
|
: public RefCounted<TextEncoder>
|
||||||
|
, public Bindings::Wrappable {
|
||||||
|
public:
|
||||||
|
using WrapperType = Bindings::TextEncoderWrapper;
|
||||||
|
|
||||||
|
static NonnullRefPtr<TextEncoder> create()
|
||||||
|
{
|
||||||
|
return adopt_ref(*new TextEncoder());
|
||||||
|
}
|
||||||
|
|
||||||
|
static NonnullRefPtr<TextEncoder> create_with_global_object(Bindings::WindowObject&)
|
||||||
|
{
|
||||||
|
return TextEncoder::create();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// https://encoding.spec.whatwg.org/#dom-textencoder
|
||||||
|
TextEncoder() = default;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
9
Userland/Libraries/LibWeb/Encoding/TextEncoder.idl
Normal file
9
Userland/Libraries/LibWeb/Encoding/TextEncoder.idl
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
[Exposed=(Window,Worker)]
|
||||||
|
interface TextEncoder {
|
||||||
|
constructor();
|
||||||
|
|
||||||
|
// [NewObject] Uint8Array encode(optional USVString input = "");
|
||||||
|
// TextEncoderEncodeIntoResult encodeInto(USVString source, [AllowShared] Uint8Array destination);
|
||||||
|
|
||||||
|
// readonly attribute DOMString encoding;
|
||||||
|
};
|
|
@ -109,6 +109,10 @@ template<typename ValueType>
|
||||||
class ExceptionOr;
|
class ExceptionOr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace Web::Encoding {
|
||||||
|
class TextEncoder;
|
||||||
|
}
|
||||||
|
|
||||||
namespace Web::Geometry {
|
namespace Web::Geometry {
|
||||||
class DOMRect;
|
class DOMRect;
|
||||||
class DOMRectReadOnly;
|
class DOMRectReadOnly;
|
||||||
|
@ -432,6 +436,7 @@ class SVGGeometryElementWrapper;
|
||||||
class SVGGraphicsElementWrapper;
|
class SVGGraphicsElementWrapper;
|
||||||
class SVGPathElementWrapper;
|
class SVGPathElementWrapper;
|
||||||
class SVGSVGElementWrapper;
|
class SVGSVGElementWrapper;
|
||||||
|
class TextEncoderWrapper;
|
||||||
class TextWrapper;
|
class TextWrapper;
|
||||||
class UIEventWrapper;
|
class UIEventWrapper;
|
||||||
class URLConstructor;
|
class URLConstructor;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue