Skip to content

Commit c1a398d

Browse files
Merge pull request #19876 from Snuffleupagus/Node-polyfill-navigator
Add a basic `navigator` polyfill for older Node.js versions
2 parents 2e10ff6 + 3d4e8bb commit c1a398d

3 files changed

Lines changed: 24 additions & 28 deletions

File tree

src/display/node_utils.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,13 @@ if (isNodeJS) {
6767
warn("Cannot polyfill `Path2D`, rendering may be broken.");
6868
}
6969
}
70+
if (!globalThis.navigator?.language) {
71+
globalThis.navigator = {
72+
language: "en-US",
73+
platform: "",
74+
userAgent: "",
75+
};
76+
}
7077
}
7178
}
7279

src/shared/util.js

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -643,30 +643,16 @@ class FeatureTest {
643643
}
644644

645645
static get platform() {
646-
if (
647-
(typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) ||
648-
(typeof navigator !== "undefined" &&
649-
typeof navigator?.platform === "string" &&
650-
typeof navigator?.userAgent === "string")
651-
) {
652-
const { platform, userAgent } = navigator;
653-
654-
return shadow(this, "platform", {
655-
isAndroid: userAgent.includes("Android"),
656-
isLinux: platform.includes("Linux"),
657-
isMac: platform.includes("Mac"),
658-
isWindows: platform.includes("Win"),
659-
isFirefox:
660-
(typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) ||
661-
userAgent.includes("Firefox"),
662-
});
663-
}
646+
const { platform, userAgent } = navigator;
647+
664648
return shadow(this, "platform", {
665-
isAndroid: false,
666-
isLinux: false,
667-
isMac: false,
668-
isWindows: false,
669-
isFirefox: false,
649+
isAndroid: userAgent.includes("Android"),
650+
isLinux: platform.includes("Linux"),
651+
isMac: platform.includes("Mac"),
652+
isWindows: platform.includes("Win"),
653+
isFirefox:
654+
(typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) ||
655+
userAgent.includes("Firefox"),
670656
});
671657
}
672658

web/app_options.js

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,16 @@ if (typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC")) {
1919
if (
2020
typeof PDFJSDev !== "undefined" &&
2121
PDFJSDev.test("LIB") &&
22-
typeof navigator === "undefined"
22+
!globalThis.navigator?.language
2323
) {
24-
globalThis.navigator = Object.create(null);
24+
globalThis.navigator = {
25+
language: "en-US",
26+
maxTouchPoints: 1,
27+
platform: "",
28+
userAgent: "",
29+
};
2530
}
26-
const userAgent = navigator.userAgent || "";
27-
const platform = navigator.platform || "";
28-
const maxTouchPoints = navigator.maxTouchPoints || 1;
31+
const { maxTouchPoints, platform, userAgent } = navigator;
2932

3033
const isAndroid = /Android/.test(userAgent);
3134
const isIOS =

0 commit comments

Comments
 (0)