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 a new ArrayBuffer whose contents are bytes.
|
||||||
return JS::ArrayBuffer::create(realm, move(bytes));
|
return JS::ArrayBuffer::create(realm, move(bytes));
|
||||||
case Type::BinaryString:
|
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 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);
|
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();
|
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