Re-factor how the sandboxBundleSrc option is passed to PDFScriptingManager

Given that this option isn't used in the Firefox PDF Viewer, we can (ever so slightly) reduce the amount of code needed.
This commit is contained in:
Jonas Jenwald 2023-12-09 09:40:07 +01:00
parent 988d3a188f
commit 92c15a61f1
6 changed files with 12 additions and 28 deletions

View File

@ -110,7 +110,7 @@ class DefaultExternalServices {
throw new Error("Not implemented: createL10n"); throw new Error("Not implemented: createL10n");
} }
static createScripting(options) { static createScripting() {
throw new Error("Not implemented: createScripting"); throw new Error("Not implemented: createScripting");
} }
@ -395,10 +395,6 @@ const PDFViewerApplication = {
const pdfScriptingManager = new PDFScriptingManager({ const pdfScriptingManager = new PDFScriptingManager({
eventBus, eventBus,
sandboxBundleSrc:
typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC || CHROME")
? AppOptions.get("sandboxBundleSrc")
: null,
externalServices, externalServices,
docProperties: this._scriptingDocProperties.bind(this), docProperties: this._scriptingDocProperties.bind(this),
}); });

View File

@ -439,8 +439,8 @@ class ChromeExternalServices extends DefaultExternalServices {
return new GenericL10n(navigator.language); return new GenericL10n(navigator.language);
} }
static createScripting({ sandboxBundleSrc }) { static createScripting() {
return new GenericScripting(sandboxBundleSrc); return new GenericScripting(AppOptions.get("sandboxBundleSrc"));
} }
} }
PDFViewerApplication.externalServices = ChromeExternalServices; PDFViewerApplication.externalServices = ChromeExternalServices;

View File

@ -402,7 +402,7 @@ class FirefoxExternalServices extends DefaultExternalServices {
return new L10n(localeProperties, document.l10n); return new L10n(localeProperties, document.l10n);
} }
static createScripting(options) { static createScripting() {
return FirefoxScripting; return FirefoxScripting;
} }

View File

@ -51,8 +51,8 @@ class GenericExternalServices extends DefaultExternalServices {
return new GenericL10n(AppOptions.get("locale")); return new GenericL10n(AppOptions.get("locale"));
} }
static createScripting({ sandboxBundleSrc }) { static createScripting() {
return new GenericScripting(sandboxBundleSrc); return new GenericScripting(AppOptions.get("sandboxBundleSrc"));
} }
} }
PDFViewerApplication.externalServices = GenericExternalServices; PDFViewerApplication.externalServices = GenericExternalServices;

View File

@ -30,8 +30,8 @@ class PDFScriptingManagerComponents extends PDFScriptingManager {
} }
options.externalServices ||= { options.externalServices ||= {
createScripting: ({ sandboxBundleSrc }) => { createScripting: () => {
return new GenericScripting(sandboxBundleSrc); return new GenericScripting(options.sandboxBundleSrc);
}, },
}; };
options.docProperties ||= pdfDocument => { options.docProperties ||= pdfDocument => {

View File

@ -21,8 +21,8 @@ import { PromiseCapability, shadow } from "pdfjs-lib";
/** /**
* @typedef {Object} PDFScriptingManagerOptions * @typedef {Object} PDFScriptingManagerOptions
* @property {EventBus} eventBus - The application event bus. * @property {EventBus} eventBus - The application event bus.
* @property {string} sandboxBundleSrc - The path and filename of the scripting * @property {string} [sandboxBundleSrc] - The path and filename of the
* bundle. * scripting bundle.
* @property {Object} [externalServices] - The factory that is used when * @property {Object} [externalServices] - The factory that is used when
* initializing scripting; must contain a `createScripting` method. * initializing scripting; must contain a `createScripting` method.
* PLEASE NOTE: Primarily intended for the default viewer use-case. * PLEASE NOTE: Primarily intended for the default viewer use-case.
@ -47,8 +47,6 @@ class PDFScriptingManager {
#ready = false; #ready = false;
#sandboxBundleSrc = null;
#scripting = null; #scripting = null;
#willPrintCapability = null; #willPrintCapability = null;
@ -56,16 +54,8 @@ class PDFScriptingManager {
/** /**
* @param {PDFScriptingManagerOptions} options * @param {PDFScriptingManagerOptions} options
*/ */
constructor({ constructor({ eventBus, externalServices = null, docProperties = null }) {
eventBus,
sandboxBundleSrc = null,
externalServices = null,
docProperties = null,
}) {
this.#eventBus = eventBus; this.#eventBus = eventBus;
if (typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC || CHROME")) {
this.#sandboxBundleSrc = sandboxBundleSrc;
}
this.#externalServices = externalServices; this.#externalServices = externalServices;
this.#docProperties = docProperties; this.#docProperties = docProperties;
} }
@ -421,9 +411,7 @@ class PDFScriptingManager {
if (this.#scripting) { if (this.#scripting) {
throw new Error("#initScripting: Scripting already exists."); throw new Error("#initScripting: Scripting already exists.");
} }
return this.#externalServices.createScripting({ return this.#externalServices.createScripting();
sandboxBundleSrc: this.#sandboxBundleSrc,
});
} }
async #destroyScripting() { async #destroyScripting() {