mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-30 12:49:19 +00:00
LibWeb/FileAPI: Implement FileReader readAsBinaryString
This commit is contained in:
parent
d79bb1aac2
commit
eca68aad88
Notes:
github-actions[bot]
2025-01-28 11:40:38 +00:00
Author: https://github.com/shannonbooth
Commit: eca68aad88
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/3343
Reviewed-by: https://github.com/AtkinsSJ ✅
4 changed files with 50 additions and 2 deletions
|
@ -105,8 +105,12 @@ WebIDL::ExceptionOr<FileReader::Result> FileReader::blob_package_data(JS::Realm&
|
|||
// Return a new ArrayBuffer whose contents are bytes.
|
||||
return JS::ArrayBuffer::create(realm, move(bytes));
|
||||
case Type::BinaryString:
|
||||
// FIXME: Return bytes as a binary string, in which every byte is represented by a code unit of equal value [0..255].
|
||||
return WebIDL::NotSupportedError::create(realm, "BinaryString not supported yet"_string);
|
||||
// Return bytes as a binary string, in which every byte is represented by a code unit of equal value [0..255].
|
||||
Vector<u16> builder;
|
||||
builder.ensure_capacity(bytes.size());
|
||||
for (auto byte : bytes.bytes())
|
||||
builder.unchecked_append(byte);
|
||||
return MUST(Utf16View { builder }.to_utf8(Utf16View::AllowInvalidCodeUnits::Yes));
|
||||
}
|
||||
VERIFY_NOT_REACHED();
|
||||
}
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
Harness status: OK
|
||||
|
||||
Found 1 tests
|
||||
|
||||
1 Pass
|
||||
Pass FileAPI Test: filereader_readAsBinaryString
|
|
@ -0,0 +1,15 @@
|
|||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
<title>FileAPI Test: filereader_readAsBinaryString</title>
|
||||
<script>
|
||||
self.GLOBAL = {
|
||||
isWindow: function() { return true; },
|
||||
isWorker: function() { return false; },
|
||||
isShadowRealm: function() { return false; },
|
||||
};
|
||||
</script>
|
||||
<script src="../../resources/testharness.js"></script>
|
||||
<script src="../../resources/testharnessreport.js"></script>
|
||||
|
||||
<div id=log></div>
|
||||
<script src="../../FileAPI/reading-data-section/filereader_readAsBinaryString.any.js"></script>
|
|
@ -0,0 +1,23 @@
|
|||
// META: title=FileAPI Test: filereader_readAsBinaryString
|
||||
|
||||
async_test(t => {
|
||||
const blob = new Blob(["σ"]);
|
||||
const reader = new FileReader();
|
||||
|
||||
reader.onload = t.step_func_done(() => {
|
||||
assert_equals(typeof reader.result, "string", "The result is string");
|
||||
assert_equals(reader.result.length, 2, "The result length is 2");
|
||||
assert_equals(reader.result, "\xcf\x83", "The result is \xcf\x83");
|
||||
assert_equals(reader.readyState, reader.DONE);
|
||||
});
|
||||
|
||||
reader.onloadstart = t.step_func(() => {
|
||||
assert_equals(reader.readyState, reader.LOADING);
|
||||
});
|
||||
|
||||
reader.onprogress = t.step_func(() => {
|
||||
assert_equals(reader.readyState, reader.LOADING);
|
||||
});
|
||||
|
||||
reader.readAsBinaryString(blob);
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue