Replace the testMode parameter in src/pdf.sandbox.js with a constant, set using the pre-processor

This simplifies not just this code, but the unit-tests as well, and should be sufficient as far as I can tell.
Note also that currently, in the *built* `pdf.sandbox.js` file, there's even a line reading `testMode = testMode && false;` because of an accidentally flipped pre-processor statement.

Finally, in the `scripting_spec.js` unit-test, defines `sandboxBundleSrc` at the top of the file to make it easier to find and/or change it when necessary.
This commit is contained in:
Jonas Jenwald 2020-12-05 16:35:49 +01:00
parent c39f1aedb2
commit c549069ebd
2 changed files with 13 additions and 15 deletions

View File

@ -20,15 +20,17 @@ const pdfjsVersion = PDFJSDev.eval("BUNDLE_VERSION");
/* eslint-disable-next-line no-unused-vars */ /* eslint-disable-next-line no-unused-vars */
const pdfjsBuild = PDFJSDev.eval("BUNDLE_BUILD"); const pdfjsBuild = PDFJSDev.eval("BUNDLE_BUILD");
const TESTING =
typeof PDFJSDev === "undefined" || PDFJSDev.test("!PRODUCTION || TESTING");
class Sandbox { class Sandbox {
constructor(module, testMode) { constructor(module) {
this._evalInSandbox = module.cwrap("evalInSandbox", null, [ this._evalInSandbox = module.cwrap("evalInSandbox", null, [
"string", "string",
"int", "int",
]); ]);
this._dispatchEventName = null; this._dispatchEventName = null;
this._module = module; this._module = module;
this._testMode = testMode;
this._alertOnError = 1; this._alertOnError = 1;
} }
@ -55,7 +57,7 @@ class Sandbox {
"delete module;", "delete module;",
"delete data;", "delete data;",
]; ];
if (!this._testMode) { if (!TESTING) {
code = code.concat(extra.map(name => `delete ${name};`)); code = code.concat(extra.map(name => `delete ${name};`));
code.push("delete debugMe;"); code.push("delete debugMe;");
} }
@ -86,7 +88,7 @@ class Sandbox {
} }
evalForTesting(code, key) { evalForTesting(code, key) {
if (this._testMode) { if (TESTING) {
this._evalInSandbox( this._evalInSandbox(
`try { `try {
send({ id: "${key}", result: ${code} }); send({ id: "${key}", result: ${code} });
@ -99,13 +101,9 @@ class Sandbox {
} }
} }
function QuickJSSandbox(testMode = false) { function QuickJSSandbox() {
testMode =
testMode &&
(typeof PDFJSDev === "undefined" ||
PDFJSDev.test("!PRODUCTION || TESTING"));
return ModuleLoader().then(module => { return ModuleLoader().then(module => {
return new Sandbox(module, testMode); return new Sandbox(module);
}); });
} }

View File

@ -15,6 +15,8 @@
import { loadScript } from "../../src/display/display_utils.js"; import { loadScript } from "../../src/display/display_utils.js";
const sandboxBundleSrc = "../../build/generic/build/pdf.sandbox.js";
describe("Scripting", function () { describe("Scripting", function () {
let sandbox, send_queue, test_id, ref; let sandbox, send_queue, test_id, ref;
@ -44,11 +46,9 @@ describe("Scripting", function () {
send_queue.set(event.detail.id, event.detail); send_queue.set(event.detail.id, event.detail);
} }
}; };
const promise = loadScript("../../build/generic/build/pdf.sandbox.js").then( const promise = loadScript(sandboxBundleSrc).then(() => {
() => { return window.pdfjsSandbox.QuickJSSandbox();
return window.pdfjsSandbox.QuickJSSandbox(true); });
}
);
sandbox = { sandbox = {
createSandbox(data) { createSandbox(data) {
promise.then(sbx => sbx.create(data)); promise.then(sbx => sbx.create(data));