Merge pull request #18250 from Snuffleupagus/api-misc-fixes
Improve some old code in the `src/display/api.js` file
This commit is contained in:
commit
2effc96021
@ -229,7 +229,7 @@ const DefaultStandardFontDataFactory =
|
|||||||
* already populated with data, or a parameter object.
|
* already populated with data, or a parameter object.
|
||||||
* @returns {PDFDocumentLoadingTask}
|
* @returns {PDFDocumentLoadingTask}
|
||||||
*/
|
*/
|
||||||
function getDocument(src) {
|
function getDocument(src = {}) {
|
||||||
if (typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC")) {
|
if (typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC")) {
|
||||||
if (typeof src === "string" || src instanceof URL) {
|
if (typeof src === "string" || src instanceof URL) {
|
||||||
src = { url: src };
|
src = { url: src };
|
||||||
@ -237,14 +237,6 @@ function getDocument(src) {
|
|||||||
src = { data: src };
|
src = { data: src };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (typeof src !== "object") {
|
|
||||||
throw new Error("Invalid parameter in getDocument, need parameter object.");
|
|
||||||
}
|
|
||||||
if (!src.url && !src.data && !src.range) {
|
|
||||||
throw new Error(
|
|
||||||
"Invalid parameter object: need either .data, .range or .url"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
const task = new PDFDocumentLoadingTask();
|
const task = new PDFDocumentLoadingTask();
|
||||||
const { docId } = task;
|
const { docId } = task;
|
||||||
|
|
||||||
@ -423,6 +415,9 @@ function getDocument(src) {
|
|||||||
if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) {
|
if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) {
|
||||||
throw new Error("Not implemented: createPDFNetworkStream");
|
throw new Error("Not implemented: createPDFNetworkStream");
|
||||||
}
|
}
|
||||||
|
if (!url) {
|
||||||
|
throw new Error("getDocument - no `url` parameter provided.");
|
||||||
|
}
|
||||||
const createPDFNetworkStream = params => {
|
const createPDFNetworkStream = params => {
|
||||||
if (
|
if (
|
||||||
typeof PDFJSDev !== "undefined" &&
|
typeof PDFJSDev !== "undefined" &&
|
||||||
@ -2091,6 +2086,14 @@ class PDFWorker {
|
|||||||
return this._readyCapability.promise;
|
return this._readyCapability.promise;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#resolve() {
|
||||||
|
this._readyCapability.resolve();
|
||||||
|
// Send global setting, e.g. verbosity level.
|
||||||
|
this._messageHandler.send("configure", {
|
||||||
|
verbosity: this.verbosity,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The current `workerPort`, when it exists.
|
* The current `workerPort`, when it exists.
|
||||||
* @type {Worker}
|
* @type {Worker}
|
||||||
@ -2117,11 +2120,7 @@ class PDFWorker {
|
|||||||
// Ignoring "ready" event -- MessageHandler should already be initialized
|
// Ignoring "ready" event -- MessageHandler should already be initialized
|
||||||
// and ready to accept messages.
|
// and ready to accept messages.
|
||||||
});
|
});
|
||||||
this._readyCapability.resolve();
|
this.#resolve();
|
||||||
// Send global setting, e.g. verbosity level.
|
|
||||||
this._messageHandler.send("configure", {
|
|
||||||
verbosity: this.verbosity,
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_initialize() {
|
_initialize() {
|
||||||
@ -2129,11 +2128,14 @@ class PDFWorker {
|
|||||||
// support, create a new web worker and test if it/the browser fulfills
|
// support, create a new web worker and test if it/the browser fulfills
|
||||||
// all requirements to run parts of pdf.js in a web worker.
|
// all requirements to run parts of pdf.js in a web worker.
|
||||||
// Right now, the requirement is, that an Uint8Array is still an
|
// Right now, the requirement is, that an Uint8Array is still an
|
||||||
// Uint8Array as it arrives on the worker. (Chrome added this with v.15.)
|
// Uint8Array as it arrives on the worker.
|
||||||
if (
|
if (
|
||||||
!PDFWorkerUtil.isWorkerDisabled &&
|
PDFWorkerUtil.isWorkerDisabled ||
|
||||||
!PDFWorker.#mainThreadWorkerMessageHandler
|
PDFWorker.#mainThreadWorkerMessageHandler
|
||||||
) {
|
) {
|
||||||
|
this._setupFakeWorker();
|
||||||
|
return;
|
||||||
|
}
|
||||||
let { workerSrc } = PDFWorker;
|
let { workerSrc } = PDFWorker;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -2152,7 +2154,7 @@ class PDFWorker {
|
|||||||
const worker = new Worker(workerSrc, { type: "module" });
|
const worker = new Worker(workerSrc, { type: "module" });
|
||||||
const messageHandler = new MessageHandler("main", "worker", worker);
|
const messageHandler = new MessageHandler("main", "worker", worker);
|
||||||
const terminateEarly = () => {
|
const terminateEarly = () => {
|
||||||
worker.removeEventListener("error", onWorkerError);
|
ac.abort();
|
||||||
messageHandler.destroy();
|
messageHandler.destroy();
|
||||||
worker.terminate();
|
worker.terminate();
|
||||||
if (this.destroyed) {
|
if (this.destroyed) {
|
||||||
@ -2164,43 +2166,37 @@ class PDFWorker {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const onWorkerError = () => {
|
const ac = new AbortController();
|
||||||
|
worker.addEventListener(
|
||||||
|
"error",
|
||||||
|
() => {
|
||||||
if (!this._webWorker) {
|
if (!this._webWorker) {
|
||||||
// Worker failed to initialize due to an error. Clean up and fall
|
// Worker failed to initialize due to an error. Clean up and fall
|
||||||
// back to the fake worker.
|
// back to the fake worker.
|
||||||
terminateEarly();
|
terminateEarly();
|
||||||
}
|
}
|
||||||
};
|
},
|
||||||
worker.addEventListener("error", onWorkerError);
|
{ signal: ac.signal }
|
||||||
|
);
|
||||||
|
|
||||||
messageHandler.on("test", data => {
|
messageHandler.on("test", data => {
|
||||||
worker.removeEventListener("error", onWorkerError);
|
ac.abort();
|
||||||
if (this.destroyed) {
|
if (this.destroyed || !data) {
|
||||||
terminateEarly();
|
terminateEarly();
|
||||||
return; // worker was destroyed
|
return;
|
||||||
}
|
}
|
||||||
if (data) {
|
|
||||||
this._messageHandler = messageHandler;
|
this._messageHandler = messageHandler;
|
||||||
this._port = worker;
|
this._port = worker;
|
||||||
this._webWorker = worker;
|
this._webWorker = worker;
|
||||||
|
|
||||||
this._readyCapability.resolve();
|
this.#resolve();
|
||||||
// Send global setting, e.g. verbosity level.
|
|
||||||
messageHandler.send("configure", {
|
|
||||||
verbosity: this.verbosity,
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
this._setupFakeWorker();
|
|
||||||
messageHandler.destroy();
|
|
||||||
worker.terminate();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
messageHandler.on("ready", data => {
|
messageHandler.on("ready", data => {
|
||||||
worker.removeEventListener("error", onWorkerError);
|
ac.abort();
|
||||||
if (this.destroyed) {
|
if (this.destroyed) {
|
||||||
terminateEarly();
|
terminateEarly();
|
||||||
return; // worker was destroyed
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
sendTest();
|
sendTest();
|
||||||
@ -2224,8 +2220,7 @@ class PDFWorker {
|
|||||||
} catch {
|
} catch {
|
||||||
info("The worker has been disabled.");
|
info("The worker has been disabled.");
|
||||||
}
|
}
|
||||||
}
|
// Either workers are not supported or have thrown an exception.
|
||||||
// Either workers are disabled, not supported or have thrown an exception.
|
|
||||||
// Thus, we fallback to a faked worker.
|
// Thus, we fallback to a faked worker.
|
||||||
this._setupFakeWorker();
|
this._setupFakeWorker();
|
||||||
}
|
}
|
||||||
@ -2253,13 +2248,8 @@ class PDFWorker {
|
|||||||
const workerHandler = new MessageHandler(id + "_worker", id, port);
|
const workerHandler = new MessageHandler(id + "_worker", id, port);
|
||||||
WorkerMessageHandler.setup(workerHandler, port);
|
WorkerMessageHandler.setup(workerHandler, port);
|
||||||
|
|
||||||
const messageHandler = new MessageHandler(id, id + "_worker", port);
|
this._messageHandler = new MessageHandler(id, id + "_worker", port);
|
||||||
this._messageHandler = messageHandler;
|
this.#resolve();
|
||||||
this._readyCapability.resolve();
|
|
||||||
// Send global setting, e.g. verbosity level.
|
|
||||||
messageHandler.send("configure", {
|
|
||||||
verbosity: this.verbosity,
|
|
||||||
});
|
|
||||||
})
|
})
|
||||||
.catch(reason => {
|
.catch(reason => {
|
||||||
this._readyCapability.reject(
|
this._readyCapability.reject(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user