(bytes, type, mimeType, encodingName)
| 15365 | } |
| 15366 | chunkPromise = reader.read(); |
| 15367 | } else if (done) { |
| 15368 | queueMicrotask(() => { |
| 15369 | fr[kState] = "done"; |
| 15370 | try { |
| 15371 | const result = packageData(bytes, type, blob.type, encodingName); |
| 15372 | if (fr[kAborted]) { |
| 15373 | return; |
| 15374 | } |
| 15375 | fr[kResult] = result; |
| 15376 | fireAProgressEvent("load", fr); |
| 15377 | } catch (error) { |
| 15378 | fr[kError] = error; |
| 15379 | fireAProgressEvent("error", fr); |
| 15380 | } |
| 15381 | if (fr[kState] !== "loading") { |
| 15382 | fireAProgressEvent("loadend", fr); |
| 15383 | } |
| 15384 | }); |
| 15385 | break; |
| 15386 | } |
| 15387 | } catch (error) { |
| 15388 | if (fr[kAborted]) { |
| 15389 | return; |
| 15390 | } |
| 15391 | queueMicrotask(() => { |
| 15392 | fr[kState] = "done"; |
| 15393 | fr[kError] = error; |
| 15394 | fireAProgressEvent("error", fr); |
| 15395 | if (fr[kState] !== "loading") { |
| 15396 | fireAProgressEvent("loadend", fr); |
| 15397 | } |
| 15398 | }); |
| 15399 | break; |
| 15400 | } |
| 15401 | } |
| 15402 | }))(); |
| 15403 | } |
| 15404 | function fireAProgressEvent(e, reader) { |
| 15405 | const event = new ProgressEvent(e, { |
| 15406 | bubbles: false, |
| 15407 | cancelable: false |
| 15408 | }); |
| 15409 | reader.dispatchEvent(event); |
| 15410 | } |
| 15411 | function packageData(bytes, type, mimeType, encodingName) { |
| 15412 | switch (type) { |
| 15413 | case "DataURL": { |
| 15414 | let dataURL = "data:"; |
| 15415 | const parsed = parseMIMEType(mimeType || "application/octet-stream"); |
| 15416 | if (parsed !== "failure") { |
no test coverage detected