[api-minor] Improve the useWorkerFetch default value checks

Given that the Fetch API only supports the http/https protocols, worker-thread fetching of CMaps and Standard-fonts may thus fail in certain cases. To improve the default behaviour we'll now also check that the `cMapUrl` and `standardFontDataUrl` options are appropriate, except in Firefox where this should always work.
This commit is contained in:
Jonas Jenwald 2023-01-01 14:39:03 +01:00
parent 3fd2a35482
commit 2c57a4232c

View File

@ -47,6 +47,7 @@ import {
DOMCMapReaderFactory, DOMCMapReaderFactory,
DOMStandardFontDataFactory, DOMStandardFontDataFactory,
isDataScheme, isDataScheme,
isValidFetchUrl,
loadScript, loadScript,
PageViewport, PageViewport,
RenderingCancelledException, RenderingCancelledException,
@ -363,8 +364,11 @@ function getDocument(src) {
} }
if (typeof params.useWorkerFetch !== "boolean") { if (typeof params.useWorkerFetch !== "boolean") {
params.useWorkerFetch = params.useWorkerFetch =
params.CMapReaderFactory === DOMCMapReaderFactory && (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) ||
params.StandardFontDataFactory === DOMStandardFontDataFactory; (params.CMapReaderFactory === DOMCMapReaderFactory &&
params.StandardFontDataFactory === DOMStandardFontDataFactory &&
isValidFetchUrl(params.cMapUrl, document.baseURI) &&
isValidFetchUrl(params.standardFontDataUrl, document.baseURI));
} }
if (typeof params.isEvalSupported !== "boolean") { if (typeof params.isEvalSupported !== "boolean") {
params.isEvalSupported = true; params.isEvalSupported = true;