Merge pull request #21152 from Snuffleupagus/update-supported

[api-major] Update the minimum supported browsers, and remove no longer needed polyfills
This commit is contained in:
Tim van der Meij 2026-05-01 12:07:45 +02:00 committed by GitHub
commit e6e06cf6b5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 20 additions and 256 deletions

View File

@ -40,10 +40,7 @@ import Metalsmith from "metalsmith";
import ordered from "ordered-read-streams";
import path from "path";
import postcss from "gulp-postcss";
import postcssDirPseudoClass from "postcss-dir-pseudo-class";
import postcssDiscardComments from "postcss-discard-comments";
import postcssLightDarkFunction from "@csstools/postcss-light-dark-function";
import postcssNesting from "postcss-nesting";
import { preprocess } from "./external/builder/builder.mjs";
import relative from "metalsmith-html-relative";
import rename from "gulp-rename";
@ -91,9 +88,9 @@ const config = JSON.parse(fs.readFileSync(CONFIG_FILE).toString());
const ENV_TARGETS = [
"last 2 versions",
"Chrome >= 118",
"Chrome >= 125",
"Firefox ESR",
"Safari >= 16.4",
"Safari >= 18",
"Node >= 22",
"> 1%",
"not IE > 0",
@ -1246,15 +1243,7 @@ function buildGeneric(defines, dir) {
preprocessHTML("web/viewer.html", defines).pipe(gulp.dest(dir + "web")),
preprocessCSS("web/viewer.css", defines)
.pipe(
postcss([
postcssDirPseudoClass(),
discardCommentsCSS(),
postcssNesting(),
postcssLightDarkFunction({ preserve: true }),
autoprefixer(AUTOPREFIXER_CONFIG),
])
)
.pipe(postcss([discardCommentsCSS(), autoprefixer(AUTOPREFIXER_CONFIG)]))
.pipe(gulp.dest(dir + "web")),
gulp
@ -1314,15 +1303,7 @@ function buildComponents(defines, dir) {
.src(COMPONENTS_IMAGES, { encoding: false })
.pipe(gulp.dest(dir + "images")),
preprocessCSS("web/pdf_viewer.css", defines)
.pipe(
postcss([
postcssDirPseudoClass(),
discardCommentsCSS(),
postcssNesting(),
postcssLightDarkFunction({ preserve: true }),
autoprefixer(AUTOPREFIXER_CONFIG),
])
)
.pipe(postcss([discardCommentsCSS(), autoprefixer(AUTOPREFIXER_CONFIG)]))
.pipe(gulp.dest(dir)),
]);
}
@ -1651,13 +1632,7 @@ gulp.task(
),
preprocessCSS("web/viewer.css", defines)
.pipe(
postcss([
postcssDirPseudoClass(),
discardCommentsCSS(),
postcssNesting(),
postcssLightDarkFunction({ preserve: true }),
autoprefixer(AUTOPREFIXER_CONFIG),
])
postcss([discardCommentsCSS(), autoprefixer(AUTOPREFIXER_CONFIG)])
)
.pipe(gulp.dest(CHROME_BUILD_CONTENT_DIR + "web")),
@ -2584,15 +2559,7 @@ function buildInternalViewer(defines, dir) {
gulp.dest(dir + "web")
),
preprocessCSS("web/internal/debugger.css", defines)
.pipe(
postcss([
postcssDirPseudoClass(),
discardCommentsCSS(),
postcssNesting(),
postcssLightDarkFunction({ preserve: true }),
autoprefixer(AUTOPREFIXER_CONFIG),
])
)
.pipe(postcss([discardCommentsCSS(), autoprefixer(AUTOPREFIXER_CONFIG)]))
.pipe(gulp.dest(dir + "web")),
createCMapBundle().pipe(gulp.dest(dir + "web/cmaps")),
createICCBundle().pipe(gulp.dest(dir + "web/iccs")),

135
package-lock.json generated
View File

@ -10,7 +10,6 @@
"@babel/core": "^7.29.0",
"@babel/preset-env": "^7.29.2",
"@babel/runtime": "^7.29.2",
"@csstools/postcss-light-dark-function": "^3.0.0",
"@eslint/json": "^1.2.0",
"@fluent/bundle": "^0.19.1",
"@fluent/dom": "^0.10.2",
@ -53,9 +52,7 @@
"ordered-read-streams": "^2.0.0",
"pngjs": "^7.0.0",
"postcss": "^8.5.10",
"postcss-dir-pseudo-class": "^10.0.0",
"postcss-discard-comments": "^7.0.7",
"postcss-nesting": "^14.0.0",
"postcss-values-parser": "^7.0.0",
"prettier": "^3.8.3",
"puppeteer": "^24.42.0",
@ -1775,61 +1772,6 @@
"@csstools/css-tokenizer": "^4.0.0"
}
},
"node_modules/@csstools/postcss-light-dark-function": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-3.0.0.tgz",
"integrity": "sha512-s++V5/hYazeRUCYIn2lsBVzUsxdeC46gtwpgW6lu5U/GlPOS5UTDT14kkEyPgXmFbCvaWLREqV7YTMJq1K3G6w==",
"dev": true,
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/csstools"
},
{
"type": "opencollective",
"url": "https://opencollective.com/csstools"
}
],
"license": "MIT-0",
"dependencies": {
"@csstools/css-parser-algorithms": "^4.0.0",
"@csstools/css-tokenizer": "^4.0.0",
"@csstools/postcss-progressive-custom-properties": "^5.0.0",
"@csstools/utilities": "^3.0.0"
},
"engines": {
"node": ">=20.19.0"
},
"peerDependencies": {
"postcss": "^8.4"
}
},
"node_modules/@csstools/postcss-progressive-custom-properties": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-5.0.0.tgz",
"integrity": "sha512-NsJoZ89rxmDrUsITf8QIk5w+lQZQ8Xw5K6cLFG+cfiffsLYHb3zcbOOrHLetGl1WIhjWWQ4Cr8MMrg46Q+oACg==",
"dev": true,
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/csstools"
},
{
"type": "opencollective",
"url": "https://opencollective.com/csstools"
}
],
"license": "MIT-0",
"dependencies": {
"postcss-value-parser": "^4.2.0"
},
"engines": {
"node": ">=20.19.0"
},
"peerDependencies": {
"postcss": "^8.4"
}
},
"node_modules/@csstools/selector-resolve-nested": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-4.0.0.tgz",
@ -1876,29 +1818,6 @@
"postcss-selector-parser": "^7.1.1"
}
},
"node_modules/@csstools/utilities": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@csstools/utilities/-/utilities-3.0.0.tgz",
"integrity": "sha512-etDqA/4jYvOGBM6yfKCOsEXfH96BKztZdgGmGqKi2xHnDe0ILIBraRspwgYatJH9JsCZ5HCGoCst8w18EKOAdg==",
"dev": true,
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/csstools"
},
{
"type": "opencollective",
"url": "https://opencollective.com/csstools"
}
],
"license": "MIT-0",
"engines": {
"node": ">=20.19.0"
},
"peerDependencies": {
"postcss": "^8.4"
}
},
"node_modules/@dot/log": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@dot/log/-/log-0.2.1.tgz",
@ -9280,32 +9199,6 @@
"node": "^10 || ^12 || >=14"
}
},
"node_modules/postcss-dir-pseudo-class": {
"version": "10.0.0",
"resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-10.0.0.tgz",
"integrity": "sha512-DmtIzULpyC8XaH4b5AaUgt4Jic4QmrECqidNCdR7u7naQFdnxX80YI06u238a+ZVRXwURDxVzy0s/UQnWmpVeg==",
"dev": true,
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/csstools"
},
{
"type": "opencollective",
"url": "https://opencollective.com/csstools"
}
],
"license": "MIT-0",
"dependencies": {
"postcss-selector-parser": "^7.1.1"
},
"engines": {
"node": ">=20.19.0"
},
"peerDependencies": {
"postcss": "^8.4"
}
},
"node_modules/postcss-discard-comments": {
"version": "7.0.7",
"resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-7.0.7.tgz",
@ -9362,34 +9255,6 @@
}
}
},
"node_modules/postcss-nesting": {
"version": "14.0.0",
"resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-14.0.0.tgz",
"integrity": "sha512-YGFOfVrjxYfeGTS5XctP1WCI5hu8Lr9SmntjfRC+iX5hCihEO+QZl9Ra+pkjqkgoVdDKvb2JccpElcowhZtzpw==",
"dev": true,
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/csstools"
},
{
"type": "opencollective",
"url": "https://opencollective.com/csstools"
}
],
"license": "MIT-0",
"dependencies": {
"@csstools/selector-resolve-nested": "^4.0.0",
"@csstools/selector-specificity": "^6.0.0",
"postcss-selector-parser": "^7.1.1"
},
"engines": {
"node": ">=20.19.0"
},
"peerDependencies": {
"postcss": "^8.4"
}
},
"node_modules/postcss-safe-parser": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz",

View File

@ -5,7 +5,6 @@
"@babel/core": "^7.29.0",
"@babel/preset-env": "^7.29.2",
"@babel/runtime": "^7.29.2",
"@csstools/postcss-light-dark-function": "^3.0.0",
"@eslint/json": "^1.2.0",
"@fluent/bundle": "^0.19.1",
"@fluent/dom": "^0.10.2",
@ -48,9 +47,7 @@
"ordered-read-streams": "^2.0.0",
"pngjs": "^7.0.0",
"postcss": "^8.5.10",
"postcss-dir-pseudo-class": "^10.0.0",
"postcss-discard-comments": "^7.0.7",
"postcss-nesting": "^14.0.0",
"postcss-values-parser": "^7.0.0",
"prettier": "^3.8.3",
"puppeteer": "^24.42.0",

View File

@ -42,14 +42,6 @@ import {
CanvasDependencyTracker,
CanvasImagesTracker,
} from "./canvas_dependency_tracker.js";
import {
deprecated,
isDataScheme,
isValidFetchUrl,
PageViewport,
RenderingCancelledException,
StatTimer,
} from "./display_utils.js";
import { FontFaceObject, FontLoader } from "./font_loader.js";
import {
FontInfo,
@ -63,6 +55,13 @@ import {
isRefProxy,
LoopbackPort,
} from "./api_utils.js";
import {
isDataScheme,
isValidFetchUrl,
PageViewport,
RenderingCancelledException,
StatTimer,
} from "./display_utils.js";
import { MessageHandler, wrapReason } from "../shared/message_handler.js";
import {
NodeBinaryDataFactory,
@ -649,18 +648,6 @@ class PDFDataRangeTransport {
this.initialData = initialData;
this.progressiveDone = progressiveDone;
this.contentDispositionFilename = contentDispositionFilename;
if (typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC")) {
Object.defineProperty(this, "onDataProgress", {
value: () => {
deprecated(
"`PDFDataRangeTransport.prototype.onDataProgress` - method was " +
"removed, since loading progress is now reported automatically " +
"through the `PDFDataTransportStream` class (and related code)."
);
},
});
}
}
/**

View File

@ -16,7 +16,6 @@
import {
BaseException,
DrawOPS,
FeatureTest,
shadow,
stripPath,
Util,
@ -677,16 +676,9 @@ function setLayerDimensions(
if (viewport instanceof PageViewport) {
const { pageWidth, pageHeight } = viewport.rawDims;
const { style } = div;
const useRound = FeatureTest.isCSSRoundSupported;
const w = `var(--total-scale-factor) * ${pageWidth}px`,
h = `var(--total-scale-factor) * ${pageHeight}px`;
const widthStr = useRound
? `round(down, ${w}, var(--scale-round-x))`
: `calc(${w})`,
heightStr = useRound
? `round(down, ${h}, var(--scale-round-y))`
: `calc(${h})`;
const widthStr = `round(down, var(--total-scale-factor) * ${pageWidth}px, var(--scale-round-x))`,
heightStr = `round(down, var(--total-scale-factor) * ${pageHeight}px, var(--scale-round-y))`;
if (!mustFlip || viewport.rotation % 180 === 0) {
style.width = widthStr;

View File

@ -601,17 +601,13 @@ function objectSize(obj) {
return Object.keys(obj).length;
}
// Checks the endianness of the platform.
function isLittleEndian() {
const buffer8 = new Uint8Array(4);
buffer8[0] = 1;
const view32 = new Uint32Array(buffer8.buffer, 0, 1);
return view32[0] === 1;
}
class FeatureTest {
static get isLittleEndian() {
return shadow(this, "isLittleEndian", isLittleEndian());
const buffer8 = new Uint8Array(4);
buffer8[0] = 1;
const view32 = new Uint32Array(buffer8.buffer, 0, 1);
return shadow(this, "isLittleEndian", view32[0] === 1);
}
static get isOffscreenCanvasSupported() {
@ -660,14 +656,6 @@ class FeatureTest {
});
}
static get isCSSRoundSupported() {
return shadow(
this,
"isCSSRoundSupported",
globalThis.CSS?.supports?.("width: round(1.5px, 1px)")
);
}
static get isAlphaColorInputSupported() {
return shadow(
this,
@ -1259,38 +1247,6 @@ if (
};
}
// TODO: Remove this once Safari 17.4 is the lowest supported version.
if (
typeof PDFJSDev !== "undefined" &&
!PDFJSDev.test("SKIP_BABEL") &&
typeof AbortSignal.any !== "function"
) {
AbortSignal.any = function (iterable) {
const ac = new AbortController();
const { signal } = ac;
// Return immediately if any of the signals are already aborted.
for (const s of iterable) {
if (s.aborted) {
ac.abort(s.reason);
return signal;
}
}
// Register "abort" listeners for all signals.
for (const s of iterable) {
s.addEventListener(
"abort",
() => {
ac.abort(s.reason);
},
{ signal } // Automatically remove the listener.
);
}
return signal;
};
}
export {
_isValidExplicitDest,
AbortException,