haikuwebkit/Source/WebCore/dom/TextDecoderStreamDecoder.h

46 lines
1.8 KiB
C
Raw Permalink Normal View History

Add support for TextDecoderStream https://bugs.webkit.org/show_bug.cgi?id=215919 Reviewed by Alex Christensen. LayoutTests/imported/w3c: * web-platform-tests/encoding/streams/backpressure.any-expected.txt: * web-platform-tests/encoding/streams/backpressure.any.worker-expected.txt: * web-platform-tests/encoding/streams/decode-attributes.any-expected.txt: * web-platform-tests/encoding/streams/decode-attributes.any.worker-expected.txt: * web-platform-tests/encoding/streams/decode-bad-chunks.any-expected.txt: * web-platform-tests/encoding/streams/decode-bad-chunks.any.worker-expected.txt: * web-platform-tests/encoding/streams/decode-ignore-bom.any-expected.txt: * web-platform-tests/encoding/streams/decode-ignore-bom.any.worker-expected.txt: * web-platform-tests/encoding/streams/decode-incomplete-input.any-expected.txt: * web-platform-tests/encoding/streams/decode-incomplete-input.any.worker-expected.txt: * web-platform-tests/encoding/streams/decode-non-utf8.any-expected.txt: * web-platform-tests/encoding/streams/decode-non-utf8.any.worker-expected.txt: * web-platform-tests/encoding/streams/decode-split-character.any-expected.txt: * web-platform-tests/encoding/streams/decode-split-character.any.worker-expected.txt: * web-platform-tests/encoding/streams/decode-utf8.any-expected.txt: * web-platform-tests/encoding/streams/decode-utf8.any.worker-expected.txt: * web-platform-tests/encoding/streams/encode-bad-chunks.any-expected.txt: * web-platform-tests/encoding/streams/encode-bad-chunks.any.worker-expected.txt: * web-platform-tests/encoding/streams/readable-writable-properties.any-expected.txt: * web-platform-tests/encoding/streams/readable-writable-properties.any.worker-expected.txt: * web-platform-tests/encoding/streams/realms.window-expected.txt: Source/WebCore: Implement TextEncoderStream as a JS built-in. It is enabled by transform stream runtime flag. TextDecoderStream takes a TransformStream and TextDecoderStreamEncoder as private slots. Add TextDecoderStreamEncoder to implement the actual UTF-8 encoding steps, as a wrapper around TextDecoder. Covered by rebased tests. * CMakeLists.txt: * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * bindings/js/WebCoreBuiltinNames.h: * dom/TextDecoderStream.idl: Added. * dom/TextDecoderStream.js: Added. (initializeTextDecoderStream): (getter.encoding): (getter.fatal): (getter.ignoreBOM): (getter.readable): (getter.writable): * dom/TextDecoderStreamDecoder.cpp: Added. (WebCore::TextDecoderStreamDecoder::create): (WebCore::TextDecoderStreamDecoder::TextDecoderStreamDecoder): (WebCore::TextDecoderStreamDecoder::decode): (WebCore::TextDecoderStreamDecoder::flush): * dom/TextDecoderStreamDecoder.h: Added. (WebCore::TextDecoderStreamDecoder::encoding const): * dom/TextDecoderStreamDecoder.idl: Added. LayoutTests: * TestExpectations: Unskipping encoding tests except legacy-* tests which are big and slow. Canonical link: https://commits.webkit.org/228784@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@266348 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-08-31 09:01:55 +00:00
/*
* Copyright (C) 2020 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#pragma once
#include "TextDecoder.h"
namespace WebCore {
class TextDecoderStreamDecoder : public RefCounted<TextDecoderStreamDecoder> {
public:
static ExceptionOr<Ref<TextDecoderStreamDecoder>> create(const String& label, bool fatal, bool ignoreBOM);
String encoding() const { return m_textDecoder->encoding(); }
Remove WTF::Optional synonym for std::optional, using that class template directly instead https://bugs.webkit.org/show_bug.cgi?id=226433 Reviewed by Chris Dumez. Source/JavaScriptCore: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. * inspector/scripts/codegen/generate_objc_protocol_types_implementation.py: (ObjCProtocolTypesImplementationGenerator._generate_init_method_for_payload): Use auto instead of Optional<>. Also use * instead of value() and nest the definition of the local inside an if statement in the case where it's an optional. * inspector/scripts/tests/expected/*: Regenerated these results. Source/WebCore: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WebCore/PAL: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WebDriver: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WebKit: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. * Scripts/webkit/tests: Regenerated expected results, by running the command "python Scripts/webkit/messages_unittest.py -r". (How am I supposed to know to do that?) Source/WebKitLegacy/ios: * WebCoreSupport/WebChromeClientIOS.h: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WebKitLegacy/mac: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WebKitLegacy/win: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WTF: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. * wtf/Optional.h: Remove WTF::Optional. Tools: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Canonical link: https://commits.webkit.org/238290@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@278253 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-05-30 16:11:40 +00:00
ExceptionOr<String> decode(std::optional<BufferSource::VariantType>);
Add support for TextDecoderStream https://bugs.webkit.org/show_bug.cgi?id=215919 Reviewed by Alex Christensen. LayoutTests/imported/w3c: * web-platform-tests/encoding/streams/backpressure.any-expected.txt: * web-platform-tests/encoding/streams/backpressure.any.worker-expected.txt: * web-platform-tests/encoding/streams/decode-attributes.any-expected.txt: * web-platform-tests/encoding/streams/decode-attributes.any.worker-expected.txt: * web-platform-tests/encoding/streams/decode-bad-chunks.any-expected.txt: * web-platform-tests/encoding/streams/decode-bad-chunks.any.worker-expected.txt: * web-platform-tests/encoding/streams/decode-ignore-bom.any-expected.txt: * web-platform-tests/encoding/streams/decode-ignore-bom.any.worker-expected.txt: * web-platform-tests/encoding/streams/decode-incomplete-input.any-expected.txt: * web-platform-tests/encoding/streams/decode-incomplete-input.any.worker-expected.txt: * web-platform-tests/encoding/streams/decode-non-utf8.any-expected.txt: * web-platform-tests/encoding/streams/decode-non-utf8.any.worker-expected.txt: * web-platform-tests/encoding/streams/decode-split-character.any-expected.txt: * web-platform-tests/encoding/streams/decode-split-character.any.worker-expected.txt: * web-platform-tests/encoding/streams/decode-utf8.any-expected.txt: * web-platform-tests/encoding/streams/decode-utf8.any.worker-expected.txt: * web-platform-tests/encoding/streams/encode-bad-chunks.any-expected.txt: * web-platform-tests/encoding/streams/encode-bad-chunks.any.worker-expected.txt: * web-platform-tests/encoding/streams/readable-writable-properties.any-expected.txt: * web-platform-tests/encoding/streams/readable-writable-properties.any.worker-expected.txt: * web-platform-tests/encoding/streams/realms.window-expected.txt: Source/WebCore: Implement TextEncoderStream as a JS built-in. It is enabled by transform stream runtime flag. TextDecoderStream takes a TransformStream and TextDecoderStreamEncoder as private slots. Add TextDecoderStreamEncoder to implement the actual UTF-8 encoding steps, as a wrapper around TextDecoder. Covered by rebased tests. * CMakeLists.txt: * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * bindings/js/WebCoreBuiltinNames.h: * dom/TextDecoderStream.idl: Added. * dom/TextDecoderStream.js: Added. (initializeTextDecoderStream): (getter.encoding): (getter.fatal): (getter.ignoreBOM): (getter.readable): (getter.writable): * dom/TextDecoderStreamDecoder.cpp: Added. (WebCore::TextDecoderStreamDecoder::create): (WebCore::TextDecoderStreamDecoder::TextDecoderStreamDecoder): (WebCore::TextDecoderStreamDecoder::decode): (WebCore::TextDecoderStreamDecoder::flush): * dom/TextDecoderStreamDecoder.h: Added. (WebCore::TextDecoderStreamDecoder::encoding const): * dom/TextDecoderStreamDecoder.idl: Added. LayoutTests: * TestExpectations: Unskipping encoding tests except legacy-* tests which are big and slow. Canonical link: https://commits.webkit.org/228784@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@266348 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-08-31 09:01:55 +00:00
ExceptionOr<String> flush();
private:
explicit TextDecoderStreamDecoder(Ref<TextDecoder>&&);
Ref<TextDecoder> m_textDecoder;
};
}