summaryrefslogtreecommitdiff
path: root/ext/web/10_filereader.js
diff options
context:
space:
mode:
Diffstat (limited to 'ext/web/10_filereader.js')
-rw-r--r--ext/web/10_filereader.js28
1 files changed, 17 insertions, 11 deletions
diff --git a/ext/web/10_filereader.js b/ext/web/10_filereader.js
index 294d96ebd..039d3395d 100644
--- a/ext/web/10_filereader.js
+++ b/ext/web/10_filereader.js
@@ -28,12 +28,14 @@
MapPrototypeGet,
MapPrototypeSet,
ObjectDefineProperty,
+ ObjectPrototypeIsPrototypeOf,
queueMicrotask,
StringFromCodePoint,
Symbol,
TypedArrayPrototypeSet,
TypeError,
Uint8Array,
+ Uint8ArrayPrototype,
} = window.__bootstrap.primordials;
const state = Symbol("[[state]]");
@@ -116,7 +118,10 @@
// 4. If chunkPromise is fulfilled with an object whose done property is false
// and whose value property is a Uint8Array object, run these steps:
- if (!chunk.done && chunk.value instanceof Uint8Array) {
+ if (
+ !chunk.done &&
+ ObjectPrototypeIsPrototypeOf(Uint8ArrayPrototype, chunk.value)
+ ) {
ArrayPrototypePush(chunks, chunk.value);
// TODO(bartlomieju): (only) If roughly 50ms have passed since last progress
@@ -260,7 +265,7 @@
}
#getEventHandlerFor(name) {
- webidl.assertBranded(this, FileReader);
+ webidl.assertBranded(this, FileReaderPrototype);
const maybeMap = this[handlerSymbol];
if (!maybeMap) return null;
@@ -269,7 +274,7 @@
}
#setEventHandlerFor(name, value) {
- webidl.assertBranded(this, FileReader);
+ webidl.assertBranded(this, FileReaderPrototype);
if (!this[handlerSymbol]) {
this[handlerSymbol] = new Map();
@@ -292,7 +297,7 @@
/** @returns {number} */
get readyState() {
- webidl.assertBranded(this, FileReader);
+ webidl.assertBranded(this, FileReaderPrototype);
switch (this[state]) {
case "empty":
return FileReader.EMPTY;
@@ -306,17 +311,17 @@
}
get result() {
- webidl.assertBranded(this, FileReader);
+ webidl.assertBranded(this, FileReaderPrototype);
return this[result];
}
get error() {
- webidl.assertBranded(this, FileReader);
+ webidl.assertBranded(this, FileReaderPrototype);
return this[error];
}
abort() {
- webidl.assertBranded(this, FileReader);
+ webidl.assertBranded(this, FileReaderPrototype);
// If context object's state is "empty" or if context object's state is "done" set context object's result to null and terminate this algorithm.
if (
this[state] === "empty" ||
@@ -349,7 +354,7 @@
/** @param {Blob} blob */
readAsArrayBuffer(blob) {
- webidl.assertBranded(this, FileReader);
+ webidl.assertBranded(this, FileReaderPrototype);
const prefix = "Failed to execute 'readAsArrayBuffer' on 'FileReader'";
webidl.requiredArguments(arguments.length, 1, { prefix });
this.#readOperation(blob, { kind: "ArrayBuffer" });
@@ -357,7 +362,7 @@
/** @param {Blob} blob */
readAsBinaryString(blob) {
- webidl.assertBranded(this, FileReader);
+ webidl.assertBranded(this, FileReaderPrototype);
const prefix = "Failed to execute 'readAsBinaryString' on 'FileReader'";
webidl.requiredArguments(arguments.length, 1, { prefix });
// alias for readAsArrayBuffer
@@ -366,7 +371,7 @@
/** @param {Blob} blob */
readAsDataURL(blob) {
- webidl.assertBranded(this, FileReader);
+ webidl.assertBranded(this, FileReaderPrototype);
const prefix = "Failed to execute 'readAsDataURL' on 'FileReader'";
webidl.requiredArguments(arguments.length, 1, { prefix });
// alias for readAsArrayBuffer
@@ -378,7 +383,7 @@
* @param {string} [encoding]
*/
readAsText(blob, encoding = undefined) {
- webidl.assertBranded(this, FileReader);
+ webidl.assertBranded(this, FileReaderPrototype);
const prefix = "Failed to execute 'readAsText' on 'FileReader'";
webidl.requiredArguments(arguments.length, 1, { prefix });
if (encoding !== undefined) {
@@ -435,6 +440,7 @@
}
webidl.configurePrototype(FileReader);
+ const FileReaderPrototype = FileReader.prototype;
ObjectDefineProperty(FileReader, "EMPTY", {
writable: false,