Skip to content

Commit 08f68ff

Browse files
committed
Remove Firefox detection
1 parent a90eda3 commit 08f68ff

File tree

2 files changed

+14
-20
lines changed

2 files changed

+14
-20
lines changed

src/lib/onHidden.ts

+8-17
Original file line numberDiff line numberDiff line change
@@ -19,28 +19,19 @@ export interface OnHiddenCallback {
1919
(event: Event): void;
2020
}
2121

22-
let beforeUnloadFixAdded = false;
2322

2423
export const onHidden = (cb: OnHiddenCallback, once?: boolean) => {
25-
// Adding a `beforeunload` listener is needed to fix this bug:
26-
// https://bugs.chromium.org/p/chromium/issues/detail?id=987409
27-
if (!beforeUnloadFixAdded &&
28-
// Avoid adding this in Firefox as it'll break bfcache:
29-
// https://stackoverflow.com/questions/9847580/how-to-detect-safari-chrome-ie-firefox-and-opera-browser
30-
// @ts-ignore
31-
typeof InstallTrigger === 'undefined') {
32-
// eslint-disable-next-line @typescript-eslint/no-empty-function
33-
addEventListener('beforeunload', () => {});
34-
beforeUnloadFixAdded = true;
35-
}
36-
37-
const onVisibilityChange = (event: Event) => {
38-
if (document.visibilityState === 'hidden') {
24+
const onHiddenOrPageHide = (event: Event) => {
25+
if (event.type === 'pagehide' || document.visibilityState === 'hidden') {
3926
cb(event);
4027
if (once) {
41-
removeEventListener('visibilitychange', onVisibilityChange, true);
28+
removeEventListener('visibilitychange', onHiddenOrPageHide, true);
29+
removeEventListener('pagehide', onHiddenOrPageHide, true);
4230
}
4331
}
4432
}
45-
addEventListener('visibilitychange', onVisibilityChange, true);
33+
addEventListener('visibilitychange', onHiddenOrPageHide, true);
34+
// Some browsers have buggy implementations of visibilitychange,
35+
// so we use pagehide in addition, just to be safe.
36+
addEventListener('pagehide', onHiddenOrPageHide, true);
4637
};

test/e2e/getTTFB-test.js

+6-3
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,13 @@ function assertValidEntry(entry) {
4949

5050
assert.strictEqual(entry.entryType, 'navigation');
5151
for (const timingProp of timingProps) {
52-
if (!(entry[timingProp] >= 0)) {
53-
console.log(timingProp, entry[timingProp]);
52+
if (browser.capabilities.browserName === 'firefox' &&
53+
timingProp === 'fetchStart' &&
54+
entry[timingProp] === -1) {
55+
// Firefox sometimes reports the fetchStart value as -1
56+
// https://bugzilla.mozilla.org/show_bug.cgi?id=1429422
57+
continue;
5458
}
55-
5659
assert(entry[timingProp] >= 0);
5760
}
5861
}

0 commit comments

Comments
 (0)