1
0
Fork 0
mirror of https://github.com/mozilla/pdf.js.git synced 2025-04-20 15:18:08 +02:00

Merge pull request #17854 from Snuffleupagus/rm-PromiseCapability

[api-minor] Replace the `PromiseCapability` with  `Promise.withResolvers()`
This commit is contained in:
Tim van der Meij 2024-04-02 15:21:43 +02:00 committed by GitHub
commit 2e5282928f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
28 changed files with 159 additions and 252 deletions

View file

@ -22,7 +22,6 @@ const {
GlobalWorkerOptions,
Outliner,
PixelsPerInch,
PromiseCapability,
renderTextLayer,
shadow,
XfaLayer,
@ -1112,7 +1111,7 @@ class Driver {
}
_send(url, message) {
const capability = new PromiseCapability();
const { promise, resolve } = Promise.withResolvers();
this.inflight.textContent = this.inFlightRequests++;
fetch(url, {
@ -1129,18 +1128,18 @@ class Driver {
}
this.inFlightRequests--;
capability.resolve();
resolve();
})
.catch(reason => {
console.warn(`Driver._send failed (${url}): ${reason}`);
this.inFlightRequests--;
capability.resolve();
resolve();
this._send(url, message);
});
return capability.promise;
return promise;
}
}

View file

@ -26,7 +26,6 @@ import {
PasswordException,
PasswordResponses,
PermissionFlag,
PromiseCapability,
UnknownErrorException,
} from "../../src/shared/util.js";
import {
@ -156,13 +155,11 @@ describe("api", function () {
const loadingTask = getDocument(basicApiGetDocumentParams);
expect(loadingTask instanceof PDFDocumentLoadingTask).toEqual(true);
const progressReportedCapability = new PromiseCapability();
const progressReportedCapability = Promise.withResolvers();
// Attach the callback that is used to report loading progress;
// similarly to how viewer.js works.
loadingTask.onProgress = function (progressData) {
if (!progressReportedCapability.settled) {
progressReportedCapability.resolve(progressData);
}
progressReportedCapability.resolve(progressData);
};
const data = await Promise.all([
@ -218,7 +215,7 @@ describe("api", function () {
const loadingTask = getDocument(typedArrayPdf);
expect(loadingTask instanceof PDFDocumentLoadingTask).toEqual(true);
const progressReportedCapability = new PromiseCapability();
const progressReportedCapability = Promise.withResolvers();
loadingTask.onProgress = function (data) {
progressReportedCapability.resolve(data);
};
@ -248,7 +245,7 @@ describe("api", function () {
const loadingTask = getDocument(arrayBufferPdf);
expect(loadingTask instanceof PDFDocumentLoadingTask).toEqual(true);
const progressReportedCapability = new PromiseCapability();
const progressReportedCapability = Promise.withResolvers();
loadingTask.onProgress = function (data) {
progressReportedCapability.resolve(data);
};
@ -306,8 +303,14 @@ describe("api", function () {
const loadingTask = getDocument(buildGetDocumentParams("pr6531_1.pdf"));
expect(loadingTask instanceof PDFDocumentLoadingTask).toEqual(true);
const passwordNeededCapability = new PromiseCapability();
const passwordIncorrectCapability = new PromiseCapability();
const passwordNeededCapability = {
...Promise.withResolvers(),
settled: false,
};
const passwordIncorrectCapability = {
...Promise.withResolvers(),
settled: false,
};
// Attach the callback that is used to request a password;
// similarly to how the default viewer handles passwords.
loadingTask.onPassword = function (updatePassword, reason) {
@ -315,6 +318,7 @@ describe("api", function () {
reason === PasswordResponses.NEED_PASSWORD &&
!passwordNeededCapability.settled
) {
passwordNeededCapability.settled = true;
passwordNeededCapability.resolve();
updatePassword("qwerty"); // Provide an incorrect password.
@ -324,6 +328,7 @@ describe("api", function () {
reason === PasswordResponses.INCORRECT_PASSWORD &&
!passwordIncorrectCapability.settled
) {
passwordIncorrectCapability.settled = true;
passwordIncorrectCapability.resolve();
updatePassword("asdfasdf"); // Provide the correct password.

View file

@ -15,7 +15,6 @@
import {
AbortException,
PromiseCapability,
UnknownErrorException,
} from "../../src/shared/util.js";
import { LoopbackPort } from "../../src/display/api.js";
@ -336,7 +335,7 @@ describe("message_handler", function () {
it("should ignore any pull after close is called", async function () {
let log = "";
const port = new LoopbackPort();
const capability = new PromiseCapability();
const { promise, resolve } = Promise.withResolvers();
const messageHandler2 = new MessageHandler("worker", "main", port);
messageHandler2.on("fakeHandler", (data, sink) => {
sink.onPull = function () {
@ -350,7 +349,7 @@ describe("message_handler", function () {
log += "1";
sink.enqueue([1, 2, 3, 4], 4);
});
return capability.promise.then(() => {
return promise.then(() => {
sink.close();
});
});
@ -371,8 +370,8 @@ describe("message_handler", function () {
await sleep(10);
expect(log).toEqual("01");
capability.resolve();
await capability.promise;
resolve();
await promise;
let result = await reader.read();
expect(result.value).toEqual([1, 2, 3, 4]);

View file

@ -29,7 +29,6 @@ import {
OPS,
PasswordResponses,
PermissionFlag,
PromiseCapability,
shadow,
UnexpectedResponseException,
Util,
@ -105,7 +104,6 @@ const expectedAPI = Object.freeze({
PDFWorker,
PermissionFlag,
PixelsPerInch,
PromiseCapability,
RenderingCancelledException,
renderTextLayer,
setLayerDimensions,

View file

@ -17,7 +17,6 @@ import {
bytesToString,
createValidAbsoluteUrl,
getModificationDate,
PromiseCapability,
string32,
stringToBytes,
stringToPDFString,
@ -223,37 +222,6 @@ describe("util", function () {
});
});
describe("PromiseCapability", function () {
it("should resolve with correct data", async function () {
const promiseCapability = new PromiseCapability();
expect(promiseCapability.settled).toEqual(false);
promiseCapability.resolve({ test: "abc" });
const data = await promiseCapability.promise;
expect(promiseCapability.settled).toEqual(true);
expect(data).toEqual({ test: "abc" });
});
it("should reject with correct reason", async function () {
const promiseCapability = new PromiseCapability();
expect(promiseCapability.settled).toEqual(false);
promiseCapability.reject(new Error("reason"));
try {
await promiseCapability.promise;
// Shouldn't get here.
expect(false).toEqual(true);
} catch (reason) {
expect(promiseCapability.settled).toEqual(true);
expect(reason instanceof Error).toEqual(true);
expect(reason.message).toEqual("reason");
}
});
});
describe("getModificationDate", function () {
it("should get a correctly formatted date", function () {
const date = new Date(Date.UTC(3141, 5, 9, 2, 6, 53));