mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-29 12:19:54 +00:00
LibWeb/FileAPI: Implement aborting a FileReader read
This fixes a timeout for the included WPT test.
This commit is contained in:
parent
33e80fbf51
commit
8e410f959c
Notes:
github-actions[bot]
2025-01-30 21:26:29 +00:00
Author: https://github.com/shannonbooth
Commit: 8e410f959c
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/3144
Reviewed-by: https://github.com/ADKaster ✅
5 changed files with 153 additions and 8 deletions
|
@ -0,0 +1,15 @@
|
|||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
<title>FileReader: starting new reads while one is in progress</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-multiple-reads.any.js"></script>
|
|
@ -0,0 +1,81 @@
|
|||
// META: title=FileReader: starting new reads while one is in progress
|
||||
|
||||
test(function() {
|
||||
var blob_1 = new Blob(['TEST000000001'])
|
||||
var blob_2 = new Blob(['TEST000000002'])
|
||||
var reader = new FileReader();
|
||||
reader.readAsText(blob_1)
|
||||
assert_equals(reader.readyState, FileReader.LOADING, "readyState Must be LOADING")
|
||||
assert_throws_dom("InvalidStateError", function () {
|
||||
reader.readAsText(blob_2)
|
||||
})
|
||||
}, 'test FileReader InvalidStateError exception for readAsText');
|
||||
|
||||
test(function() {
|
||||
var blob_1 = new Blob(['TEST000000001'])
|
||||
var blob_2 = new Blob(['TEST000000002'])
|
||||
var reader = new FileReader();
|
||||
reader.readAsDataURL(blob_1)
|
||||
assert_equals(reader.readyState, FileReader.LOADING, "readyState Must be LOADING")
|
||||
assert_throws_dom("InvalidStateError", function () {
|
||||
reader.readAsDataURL(blob_2)
|
||||
})
|
||||
}, 'test FileReader InvalidStateError exception for readAsDataURL');
|
||||
|
||||
test(function() {
|
||||
var blob_1 = new Blob(['TEST000000001'])
|
||||
var blob_2 = new Blob(['TEST000000002'])
|
||||
var reader = new FileReader();
|
||||
reader.readAsArrayBuffer(blob_1)
|
||||
assert_equals(reader.readyState, FileReader.LOADING, "readyState Must be LOADING")
|
||||
assert_throws_dom("InvalidStateError", function () {
|
||||
reader.readAsArrayBuffer(blob_2)
|
||||
})
|
||||
}, 'test FileReader InvalidStateError exception for readAsArrayBuffer');
|
||||
|
||||
async_test(function() {
|
||||
var blob_1 = new Blob(['TEST000000001'])
|
||||
var blob_2 = new Blob(['TEST000000002'])
|
||||
var reader = new FileReader();
|
||||
var triggered = false;
|
||||
reader.onloadstart = this.step_func_done(function() {
|
||||
assert_false(triggered, "Only one loadstart event should be dispatched");
|
||||
triggered = true;
|
||||
assert_equals(reader.readyState, FileReader.LOADING,
|
||||
"readyState must be LOADING")
|
||||
assert_throws_dom("InvalidStateError", function () {
|
||||
reader.readAsArrayBuffer(blob_2)
|
||||
})
|
||||
});
|
||||
reader.readAsArrayBuffer(blob_1)
|
||||
assert_equals(reader.readyState, FileReader.LOADING, "readyState Must be LOADING")
|
||||
}, 'test FileReader InvalidStateError exception in onloadstart event for readAsArrayBuffer');
|
||||
|
||||
async_test(function() {
|
||||
var blob_1 = new Blob(['TEST000000001'])
|
||||
var blob_2 = new Blob(['TEST000000002'])
|
||||
var reader = new FileReader();
|
||||
reader.onloadend = this.step_func_done(function() {
|
||||
assert_equals(reader.readyState, FileReader.DONE,
|
||||
"readyState must be DONE")
|
||||
reader.readAsArrayBuffer(blob_2)
|
||||
assert_equals(reader.readyState, FileReader.LOADING, "readyState Must be LOADING")
|
||||
});
|
||||
reader.readAsArrayBuffer(blob_1)
|
||||
assert_equals(reader.readyState, FileReader.LOADING, "readyState Must be LOADING")
|
||||
}, 'test FileReader no InvalidStateError exception in loadend event handler for readAsArrayBuffer');
|
||||
|
||||
async_test(function() {
|
||||
var blob_1 = new Blob([new Uint8Array(0x414141)]);
|
||||
var blob_2 = new Blob(['TEST000000002']);
|
||||
var reader = new FileReader();
|
||||
reader.onloadstart = this.step_func(function() {
|
||||
reader.abort();
|
||||
reader.onloadstart = null;
|
||||
reader.onloadend = this.step_func_done(function() {
|
||||
assert_equals('TEST000000002', reader.result);
|
||||
});
|
||||
reader.readAsText(blob_2);
|
||||
});
|
||||
reader.readAsText(blob_1);
|
||||
}, 'test abort and restart in onloadstart event for readAsText');
|
Loading…
Add table
Add a link
Reference in a new issue