Stop pre-building the preference defaults, to simplify the build scripts

This is a left-over from before the introduction of `AppOptions`, but is no longer necessary now.
This commit is contained in:
Jonas Jenwald 2026-01-30 09:31:28 +01:00
parent 35e78f7f11
commit 06cf7dd7b0
3 changed files with 45 additions and 92 deletions

View File

@ -284,7 +284,6 @@ function createWebpackConfig(
disableVersionInfo = false,
disableSourceMaps = false,
disableLicenseHeader = false,
defaultPreferencesDir = null,
} = {}
) {
const versionInfo = !disableVersionInfo
@ -295,9 +294,6 @@ function createWebpackConfig(
BUNDLE_VERSION: versionInfo.version,
BUNDLE_BUILD: versionInfo.commit,
TESTING: defines.TESTING ?? process.env.TESTING === "true",
DEFAULT_PREFERENCES: defaultPreferencesDir
? getDefaultPreferences(defaultPreferencesDir)
: {},
DEFAULT_FTL: defines.GENERIC ? getDefaultFtl() : "",
};
const licenseHeaderLibre = fs
@ -546,36 +542,24 @@ function createWorkerBundle(defines) {
}
function createWebBundle(defines, options) {
const viewerFileConfig = createWebpackConfig(
defines,
{
filename: "viewer.mjs",
library: {
type: "module",
},
const viewerFileConfig = createWebpackConfig(defines, {
filename: "viewer.mjs",
library: {
type: "module",
},
{
defaultPreferencesDir: options.defaultPreferencesDir,
}
);
});
return gulp
.src("./web/viewer.js", { encoding: false })
.pipe(webpack2Stream(viewerFileConfig));
}
function createGVWebBundle(defines, options) {
const viewerFileConfig = createWebpackConfig(
defines,
{
filename: "viewer-geckoview.mjs",
library: {
type: "module",
},
const viewerFileConfig = createWebpackConfig(defines, {
filename: "viewer-geckoview.mjs",
library: {
type: "module",
},
{
defaultPreferencesDir: options.defaultPreferencesDir,
}
);
});
return gulp
.src("./web/viewer-geckoview.js", { encoding: false })
.pipe(webpack2Stream(viewerFileConfig));
@ -1063,11 +1047,7 @@ function buildGeneric(defines, dir) {
createMainBundle(defines).pipe(gulp.dest(dir + "build")),
createWorkerBundle(defines).pipe(gulp.dest(dir + "build")),
createSandboxBundle(defines).pipe(gulp.dest(dir + "build")),
createWebBundle(defines, {
defaultPreferencesDir: defines.SKIP_BABEL
? "generic/"
: "generic-legacy/",
}).pipe(gulp.dest(dir + "web")),
createWebBundle(defines).pipe(gulp.dest(dir + "web")),
gulp
.src(COMMON_WEB_FILES, { base: "web/", encoding: false })
.pipe(gulp.dest(dir + "web")),
@ -1111,13 +1091,7 @@ gulp.task(
"locale",
function scriptingGeneric() {
const defines = { ...DEFINES, GENERIC: true };
return ordered([
buildDefaultPreferences(defines, "generic/"),
createTemporaryScriptingBundle(defines),
]);
},
async function prefsGeneric() {
await parseDefaultPreferences("generic/");
return createTemporaryScriptingBundle(defines);
},
function createGeneric() {
console.log();
@ -1138,13 +1112,7 @@ gulp.task(
"locale",
function scriptingGenericLegacy() {
const defines = { ...DEFINES, GENERIC: true, SKIP_BABEL: false };
return ordered([
buildDefaultPreferences(defines, "generic-legacy/"),
createTemporaryScriptingBundle(defines),
]);
},
async function prefsGenericLegacy() {
await parseDefaultPreferences("generic-legacy/");
return createTemporaryScriptingBundle(defines);
},
function createGenericLegacy() {
console.log();
@ -1258,13 +1226,7 @@ gulp.task(
"locale",
function scriptingMinified() {
const defines = { ...DEFINES, MINIFIED: true, GENERIC: true };
return ordered([
buildDefaultPreferences(defines, "minified/"),
createTemporaryScriptingBundle(defines),
]);
},
async function prefsMinified() {
await parseDefaultPreferences("minified/");
return createTemporaryScriptingBundle(defines);
},
function createMinified() {
console.log();
@ -1288,13 +1250,7 @@ gulp.task(
GENERIC: true,
SKIP_BABEL: false,
};
return ordered([
buildDefaultPreferences(defines, "minified-legacy/"),
createTemporaryScriptingBundle(defines),
]);
},
async function prefsMinifiedLegacy() {
await parseDefaultPreferences("minified-legacy/");
return createTemporaryScriptingBundle(defines);
},
function createMinifiedLegacy() {
console.log();
@ -1389,12 +1345,12 @@ gulp.task(
createWorkerBundle(defines).pipe(
gulp.dest(MOZCENTRAL_CONTENT_DIR + "build")
),
createWebBundle(defines, { defaultPreferencesDir: "mozcentral/" }).pipe(
createWebBundle(defines).pipe(
gulp.dest(MOZCENTRAL_CONTENT_DIR + "web")
),
createGVWebBundle(gvDefines).pipe(
gulp.dest(MOZCENTRAL_CONTENT_DIR + "web")
),
createGVWebBundle(gvDefines, {
defaultPreferencesDir: "mozcentral/",
}).pipe(gulp.dest(MOZCENTRAL_CONTENT_DIR + "web")),
gulp
.src(MOZCENTRAL_WEB_FILES, { base: "web/", encoding: false })
.pipe(gulp.dest(MOZCENTRAL_CONTENT_DIR + "web")),
@ -1499,7 +1455,7 @@ gulp.task(
createSandboxBundle(defines).pipe(
gulp.dest(CHROME_BUILD_CONTENT_DIR + "build")
),
createWebBundle(defines, { defaultPreferencesDir: "chromium/" }).pipe(
createWebBundle(defines).pipe(
gulp.dest(CHROME_BUILD_CONTENT_DIR + "web")
),
gulp
@ -1634,9 +1590,6 @@ function buildLib(defines, dir) {
BUNDLE_VERSION: versionInfo.version,
BUNDLE_BUILD: versionInfo.commit,
TESTING: defines.TESTING ?? process.env.TESTING === "true",
DEFAULT_PREFERENCES: getDefaultPreferences(
defines.SKIP_BABEL ? "lib/" : "lib-legacy/"
),
DEFAULT_FTL: getDefaultFtl(),
};
@ -1667,13 +1620,7 @@ gulp.task(
createBuildNumber,
function scriptingLib() {
const defines = { ...DEFINES, GENERIC: true, LIB: true };
return ordered([
buildDefaultPreferences(defines, "lib/"),
createTemporaryScriptingBundle(defines),
]);
},
async function prefsLib() {
await parseDefaultPreferences("lib/");
return createTemporaryScriptingBundle(defines);
},
function createLib() {
const defines = { ...DEFINES, GENERIC: true, LIB: true };
@ -1697,13 +1644,7 @@ gulp.task(
LIB: true,
SKIP_BABEL: false,
};
return ordered([
buildDefaultPreferences(defines, "lib-legacy/"),
createTemporaryScriptingBundle(defines),
]);
},
async function prefsLibLegacy() {
await parseDefaultPreferences("lib-legacy/");
return createTemporaryScriptingBundle(defines);
},
function createLibLegacy() {
const defines = {

View File

@ -14,6 +14,7 @@
*/
import { AppOptions, OptionKind } from "../../web/app_options.js";
import { BasePreferences } from "../../web/preferences.js";
import { objectSize } from "../../src/shared/util.js";
describe("AppOptions", function () {
@ -39,3 +40,20 @@ describe("AppOptions", function () {
expect(objectSize(options)).toBeLessThanOrEqual(MAX_NUMBER_OF_PREFS);
});
});
describe("BasePreferences", function () {
it("checks that preference defaults are correct", async function () {
const TestPreferences = class extends BasePreferences {
async _readFromStorage(prefObj) {
return { prefs: Object.create(null) };
}
};
const testPrefs = new TestPreferences();
await testPrefs.initializedPromise;
expect(testPrefs.defaults).toEqual(
AppOptions.getAll(OptionKind.PREFERENCE, /* defaultOnly = */ true)
);
});
});

View File

@ -22,9 +22,7 @@ import { AppOptions, OptionKind } from "./app_options.js";
*/
class BasePreferences {
#defaults = Object.freeze(
typeof PDFJSDev === "undefined"
? AppOptions.getAll(OptionKind.PREFERENCE, /* defaultOnly = */ true)
: PDFJSDev.eval("DEFAULT_PREFERENCES")
AppOptions.getAll(OptionKind.PREFERENCE, /* defaultOnly = */ true)
);
#initializedPromise = null;
@ -37,14 +35,6 @@ class BasePreferences {
throw new Error("Cannot initialize BasePreferences.");
}
if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("CHROME")) {
Object.defineProperty(this, "defaults", {
get() {
return this.#defaults;
},
});
}
this.#initializedPromise = this._readFromStorage(this.#defaults).then(
({ browserPrefs, prefs }) => {
if (
@ -135,6 +125,10 @@ class BasePreferences {
return AppOptions.get(name);
}
get defaults() {
return this.#defaults;
}
get initializedPromise() {
return this.#initializedPromise;
}