diff --git a/Userland/Libraries/LibWeb/Encoding/TextEncoder.cpp b/Userland/Libraries/LibWeb/Encoding/TextEncoder.cpp index a3a92231be..16a2205df1 100644 --- a/Userland/Libraries/LibWeb/Encoding/TextEncoder.cpp +++ b/Userland/Libraries/LibWeb/Encoding/TextEncoder.cpp @@ -4,6 +4,7 @@ * SPDX-License-Identifier: BSD-2-Clause */ +#include #include #include #include @@ -33,4 +34,11 @@ JS::Uint8Array* TextEncoder::encode(String const& input) const return typed_array; } +// https://encoding.spec.whatwg.org/#dom-textencoder-encoding +FlyString const& TextEncoder::encoding() +{ + static FlyString encoding = "utf-8"sv; + return encoding; +} + } diff --git a/Userland/Libraries/LibWeb/Encoding/TextEncoder.h b/Userland/Libraries/LibWeb/Encoding/TextEncoder.h index 2f97d536ba..dc39596147 100644 --- a/Userland/Libraries/LibWeb/Encoding/TextEncoder.h +++ b/Userland/Libraries/LibWeb/Encoding/TextEncoder.h @@ -34,6 +34,8 @@ public: JS::Uint8Array* encode(String const& input) const; + static FlyString const& encoding(); + protected: // https://encoding.spec.whatwg.org/#dom-textencoder TextEncoder() = default; diff --git a/Userland/Libraries/LibWeb/Encoding/TextEncoder.idl b/Userland/Libraries/LibWeb/Encoding/TextEncoder.idl index 8463e8a105..676c7ce037 100644 --- a/Userland/Libraries/LibWeb/Encoding/TextEncoder.idl +++ b/Userland/Libraries/LibWeb/Encoding/TextEncoder.idl @@ -5,5 +5,5 @@ interface TextEncoder { [NewObject] Uint8Array encode(optional USVString input = ""); // TextEncoderEncodeIntoResult encodeInto(USVString source, [AllowShared] Uint8Array destination); - // readonly attribute DOMString encoding; + readonly attribute DOMString encoding; }; diff --git a/Userland/Libraries/LibWeb/Tests/Encoding/TextEncoder.prototype.encoding.js b/Userland/Libraries/LibWeb/Tests/Encoding/TextEncoder.prototype.encoding.js new file mode 100644 index 0000000000..50a61beff8 --- /dev/null +++ b/Userland/Libraries/LibWeb/Tests/Encoding/TextEncoder.prototype.encoding.js @@ -0,0 +1,12 @@ +describe("normal behavior", () => { + loadLocalPage("/res/html/misc/blank.html"); + + afterInitialPageLoad(page => { + test("Basic functionality", () => { + const textEncoder = new page.TextEncoder(); + + expect(textEncoder.encoding).toBe("utf-8"); + }); + }); + waitForPageToLoad(); +});