diff options
Diffstat (limited to 'ext/web/10_filereader.js')
-rw-r--r-- | ext/web/10_filereader.js | 28 |
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, |