Skip to content

Commit 3f1354f

Browse files
authored
Account for a navigator that has a key of serviceWorker but an undefined value (#6723)
1 parent 4b9da74 commit 3f1354f

File tree

3 files changed

+17
-4
lines changed

3 files changed

+17
-4
lines changed

.changeset/dirty-eggs-deliver.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@firebase/performance': patch
3+
---
4+
5+
Expand check in `getServiceWorkerStatus` to account for a `navigator` that has a key of `serviceWorker` with a falsy value

packages/performance/src/utils/attribute_utils.test.ts

+11-3
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,20 @@ import '../../test/setup';
3232

3333
describe('Firebase Performance > attribute_utils', () => {
3434
describe('#getServiceWorkerStatus', () => {
35+
it('returns unsupported when service workers is in navigator but has a falsy value', () => {
36+
stub(Api, 'getInstance').returns({
37+
navigator: { serviceWorker: undefined }
38+
} as unknown as Api);
39+
40+
expect(getServiceWorkerStatus()).to.be.eql(1 /** UNSUPPORTED */);
41+
});
42+
3543
it('returns unsupported when service workers unsupported', () => {
3644
stub(Api, 'getInstance').returns({
3745
navigator: {}
3846
} as unknown as Api);
3947

40-
expect(getServiceWorkerStatus()).to.be.eql(1);
48+
expect(getServiceWorkerStatus()).to.be.eql(1 /** UNSUPPORTED */);
4149
});
4250

4351
it('returns controlled when service workers controlled', () => {
@@ -49,7 +57,7 @@ describe('Firebase Performance > attribute_utils', () => {
4957
}
5058
} as unknown as Api);
5159

52-
expect(getServiceWorkerStatus()).to.be.eql(2);
60+
expect(getServiceWorkerStatus()).to.be.eql(2 /** CONTROLLED */);
5361
});
5462

5563
it('returns uncontrolled when service workers uncontrolled', () => {
@@ -59,7 +67,7 @@ describe('Firebase Performance > attribute_utils', () => {
5967
}
6068
} as unknown as Api);
6169

62-
expect(getServiceWorkerStatus()).to.be.eql(3);
70+
expect(getServiceWorkerStatus()).to.be.eql(3 /** UNCONTROLLED */);
6371
});
6472
});
6573

packages/performance/src/utils/attributes_utils.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ const MAX_ATTRIBUTE_VALUE_LENGTH = 100;
5959

6060
export function getServiceWorkerStatus(): ServiceWorkerStatus {
6161
const navigator = Api.getInstance().navigator;
62-
if ('serviceWorker' in navigator) {
62+
if (navigator?.serviceWorker) {
6363
if (navigator.serviceWorker.controller) {
6464
return ServiceWorkerStatus.CONTROLLED;
6565
} else {

0 commit comments

Comments
 (0)