Script: Implement TextEncoderStream (#38466)

This implements the `TextEncoderStream` WebIDL interface. 

Testing: Existing WPT tests should be sufficient
Fixes: #37724

---------

Signed-off-by: minghuaw <wuminghua7@huawei.com>
This commit is contained in:
minghuaw 2025-08-15 15:57:00 +08:00 committed by GitHub
parent f24f225db8
commit d409137e4c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 476 additions and 228 deletions

View file

@ -5,50 +5,8 @@
expected: ERROR
[idlharness.any.html]
[TextEncoderStream interface: existence and properties of interface object]
expected: FAIL
[TextEncoderStream interface object length]
expected: FAIL
[TextEncoderStream interface object name]
expected: FAIL
[TextEncoderStream interface: existence and properties of interface prototype object]
expected: FAIL
[TextEncoderStream interface: existence and properties of interface prototype object's "constructor" property]
expected: FAIL
[TextEncoderStream interface: existence and properties of interface prototype object's @@unscopables property]
expected: FAIL
[TextEncoderStream interface: attribute encoding]
expected: FAIL
[idlharness.any.worker.html]
[TextEncoderStream interface: existence and properties of interface object]
expected: FAIL
[TextEncoderStream interface object length]
expected: FAIL
[TextEncoderStream interface object name]
expected: FAIL
[TextEncoderStream interface: existence and properties of interface prototype object]
expected: FAIL
[TextEncoderStream interface: existence and properties of interface prototype object's "constructor" property]
expected: FAIL
[TextEncoderStream interface: existence and properties of interface prototype object's @@unscopables property]
expected: FAIL
[TextEncoderStream interface: attribute encoding]
expected: FAIL
[idlharness.any.shadowrealm-in-window.html]
expected: ERROR

View file

@ -1,10 +1,4 @@
[backpressure.any.worker.html]
[write() should not complete until read relieves backpressure for TextEncoderStream]
expected: FAIL
[additional writes should wait for backpressure to be relieved for class TextEncoderStream]
expected: FAIL
[backpressure.any.sharedworker.html]
expected: ERROR
@ -13,12 +7,6 @@
expected: ERROR
[backpressure.any.html]
[write() should not complete until read relieves backpressure for TextEncoderStream]
expected: FAIL
[additional writes should wait for backpressure to be relieved for class TextEncoderStream]
expected: FAIL
[backpressure.any.shadowrealm.html]
expected: TIMEOUT

View file

@ -1,22 +1,4 @@
[encode-bad-chunks.any.html]
[a chunk that cannot be converted to a string should error the streams]
expected: FAIL
[input of type undefined should be converted correctly to string]
expected: FAIL
[input of type null should be converted correctly to string]
expected: FAIL
[input of type numeric should be converted correctly to string]
expected: FAIL
[input of type object should be converted correctly to string]
expected: FAIL
[input of type array should be converted correctly to string]
expected: FAIL
[encode-bad-chunks.any.sharedworker.html]
expected: ERROR
@ -25,20 +7,3 @@
expected: ERROR
[encode-bad-chunks.any.worker.html]
[a chunk that cannot be converted to a string should error the streams]
expected: FAIL
[input of type undefined should be converted correctly to string]
expected: FAIL
[input of type null should be converted correctly to string]
expected: FAIL
[input of type numeric should be converted correctly to string]
expected: FAIL
[input of type object should be converted correctly to string]
expected: FAIL
[input of type array should be converted correctly to string]
expected: FAIL

View file

@ -2,121 +2,8 @@
expected: ERROR
[encode-utf8.any.html]
[encoding one string of UTF-8 should give one complete chunk]
expected: FAIL
[a character split between chunks should be correctly encoded]
expected: FAIL
[a character following one split between chunks should be correctly encoded]
expected: FAIL
[two consecutive astral characters each split down the middle should be correctly reassembled]
expected: FAIL
[two consecutive astral characters each split down the middle with an invalid surrogate in the middle should be correctly encoded]
expected: FAIL
[a stream ending in a leading surrogate should emit a replacement character as a final chunk]
expected: FAIL
[an unmatched surrogate at the end of a chunk followed by an astral character in the next chunk should be replaced with the replacement character at the start of the next output chunk]
expected: FAIL
[an unmatched surrogate at the end of a chunk followed by an ascii character in the next chunk should be replaced with the replacement character at the start of the next output chunk]
expected: FAIL
[an unmatched surrogate at the end of a chunk followed by a plane 1 character split into two chunks should result in the encoded plane 1 character appearing in the last output chunk]
expected: FAIL
[two leading chunks should result in two replacement characters]
expected: FAIL
[a non-terminal unpaired leading surrogate should immediately be replaced]
expected: FAIL
[a terminal unpaired trailing surrogate should immediately be replaced]
expected: FAIL
[a leading surrogate chunk should be carried past empty chunks]
expected: FAIL
[a leading surrogate chunk should error when it is clear it didn't form a pair]
expected: FAIL
[an empty string should result in no output chunk]
expected: FAIL
[a leading empty chunk should be ignored]
expected: FAIL
[a trailing empty chunk should be ignored]
expected: FAIL
[a plain ASCII chunk should be converted]
expected: FAIL
[characters in the ISO-8859-1 range should be encoded correctly]
expected: FAIL
[encode-utf8.any.sharedworker.html]
expected: ERROR
[encode-utf8.any.worker.html]
[encoding one string of UTF-8 should give one complete chunk]
expected: FAIL
[a character split between chunks should be correctly encoded]
expected: FAIL
[a character following one split between chunks should be correctly encoded]
expected: FAIL
[two consecutive astral characters each split down the middle should be correctly reassembled]
expected: FAIL
[two consecutive astral characters each split down the middle with an invalid surrogate in the middle should be correctly encoded]
expected: FAIL
[a stream ending in a leading surrogate should emit a replacement character as a final chunk]
expected: FAIL
[an unmatched surrogate at the end of a chunk followed by an astral character in the next chunk should be replaced with the replacement character at the start of the next output chunk]
expected: FAIL
[an unmatched surrogate at the end of a chunk followed by an ascii character in the next chunk should be replaced with the replacement character at the start of the next output chunk]
expected: FAIL
[an unmatched surrogate at the end of a chunk followed by a plane 1 character split into two chunks should result in the encoded plane 1 character appearing in the last output chunk]
expected: FAIL
[two leading chunks should result in two replacement characters]
expected: FAIL
[a non-terminal unpaired leading surrogate should immediately be replaced]
expected: FAIL
[a terminal unpaired trailing surrogate should immediately be replaced]
expected: FAIL
[a leading surrogate chunk should be carried past empty chunks]
expected: FAIL
[a leading surrogate chunk should error when it is clear it didn't form a pair]
expected: FAIL
[an empty string should result in no output chunk]
expected: FAIL
[a leading empty chunk should be ignored]
expected: FAIL
[a trailing empty chunk should be ignored]
expected: FAIL
[a plain ASCII chunk should be converted]
expected: FAIL
[characters in the ISO-8859-1 range should be encoded correctly]
expected: FAIL

View file

@ -1,6 +0,0 @@
[invalid-realm.window.html]
[TextEncoderStream: write in detached realm should succeed]
expected: FAIL
[TextEncoderStream: close in detached realm should succeed]
expected: FAIL

View file

@ -1,7 +1,4 @@
[readable-writable-properties.any.html]
[TextEncoderStream readable and writable properties must pass brand checks]
expected: FAIL
[readable-writable-properties.any.sharedworker.html]
expected: ERROR
@ -10,9 +7,6 @@
expected: ERROR
[readable-writable-properties.any.worker.html]
[TextEncoderStream readable and writable properties must pass brand checks]
expected: FAIL
[readable-writable-properties.any.shadowrealm.html]
expected: TIMEOUT

View file

@ -1,10 +1,4 @@
[realms.window.html]
[a TextEncoderStream object should be associated with the realm the constructor came from]
expected: FAIL
[TextEncoderStream's readable and writable attributes should come from the same realm as the constructor definition]
expected: FAIL
[the output chunks when read is called after write should come from the same realm as the constructor of TextEncoderStream]
expected: FAIL

View file

@ -1,2 +0,0 @@
[stringification-crash.html]
expected: TIMEOUT

View file

@ -1,15 +1,16 @@
[fetch-event.https.h2.html]
expected: TIMEOUT
[global setup]
expected: FAIL
[The streaming request body is readable in the service worker.]
expected: FAIL
expected: TIMEOUT
[Network fallback for streaming upload.]
expected: FAIL
expected: NOTRUN
[When the streaming request body is used, network fallback fails.]
expected: FAIL
expected: NOTRUN
[Running clone() in the service worker does not prevent network fallback.]
expected: FAIL
expected: NOTRUN

View file

@ -13725,14 +13725,14 @@
]
],
"interfaces.https.html": [
"cbdb5bef0bab4f54514913517c214631a71f7d3a",
"40567f81c201fe775ad4735c231349fac8c33381",
[
null,
{}
]
],
"interfaces.worker.js": [
"1955d6f821d8445c813ac09e098b2c66f0e07d26",
"66f95241d5518a6b82725529775dc5613cbab1c0",
[
"mozilla/interfaces.worker.html",
{}

View file

@ -330,6 +330,7 @@ test_interfaces([
"TextDecoder",
"TextDecoderStream",
"TextEncoder",
"TextEncoderStream",
"TimeRanges",
"Touch",
"TouchEvent",

View file

@ -113,6 +113,7 @@ test_interfaces([
"TextDecoder",
"TextDecoderStream",
"TextEncoder",
"TextEncoderStream",
"TrustedHTML",
"TrustedScript",
"TrustedScriptURL",