Skip to content

Commit 0e630cc

Browse files
Release build 4.43.0 [ci release]
1 parent 2d20aa3 commit 0e630cc

File tree

6 files changed

+87
-17
lines changed

6 files changed

+87
-17
lines changed

Sources/ContentScopeScripts/dist/contentScope.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2347,7 +2347,7 @@
23472347
this.notificationFix();
23482348
}
23492349
if (this.getFeatureSettingEnabled("permissions")) {
2350-
const settings = this.getFeatureSettingEnabled("permissions");
2350+
const settings = this.getFeatureSetting("permissions");
23512351
this.permissionsFix(settings);
23522352
}
23532353
if (this.getFeatureSettingEnabled("cleanIframeValue")) {
@@ -2438,7 +2438,18 @@
24382438
"notifications",
24392439
"push",
24402440
"persistent-storage",
2441-
"midi"
2441+
"midi",
2442+
"accelerometer",
2443+
"ambient-light-sensor",
2444+
"background-sync",
2445+
"bluetooth",
2446+
"camera",
2447+
"clipboard",
2448+
"device-info",
2449+
"gyroscope",
2450+
"magnetometer",
2451+
"microphone",
2452+
"speaker"
24422453
];
24432454
const validPermissionNames = settings.validPermissionNames || defaultValidPermissionNames;
24442455
permissions.query = new Proxy((query) => {
@@ -2450,7 +2461,7 @@
24502461
throw new TypeError("Failed to execute 'query' on 'Permissions': Failed to read the 'name' property from 'PermissionDescriptor': Required member is undefined.");
24512462
}
24522463
if (!validPermissionNames.includes(query.name)) {
2453-
throw new TypeError("Failed to execute 'query' on 'Permissions': Failed to read the 'name' property from 'PermissionDescriptor': The provided value 's' is not a valid enum value of type PermissionName.");
2464+
throw new TypeError(`Failed to execute 'query' on 'Permissions': Failed to read the 'name' property from 'PermissionDescriptor': The provided value '${query.name}' is not a valid enum value of type PermissionName.`);
24542465
}
24552466
return Promise.resolve(new PermissionStatus(query.name, "denied"));
24562467
}, {

build/android/contentScope.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7464,7 +7464,7 @@
74647464
this.notificationFix();
74657465
}
74667466
if (this.getFeatureSettingEnabled('permissions')) {
7467-
const settings = this.getFeatureSettingEnabled('permissions');
7467+
const settings = this.getFeatureSetting('permissions');
74687468
this.permissionsFix(settings);
74697469
}
74707470
if (this.getFeatureSettingEnabled('cleanIframeValue')) {
@@ -7561,7 +7561,18 @@
75617561
'notifications',
75627562
'push',
75637563
'persistent-storage',
7564-
'midi'
7564+
'midi',
7565+
'accelerometer',
7566+
'ambient-light-sensor',
7567+
'background-sync',
7568+
'bluetooth',
7569+
'camera',
7570+
'clipboard',
7571+
'device-info',
7572+
'gyroscope',
7573+
'magnetometer',
7574+
'microphone',
7575+
'speaker'
75657576
];
75667577
const validPermissionNames = settings.validPermissionNames || defaultValidPermissionNames;
75677578
permissions.query = new Proxy((query) => {
@@ -7573,7 +7584,7 @@
75737584
throw new TypeError("Failed to execute 'query' on 'Permissions': Failed to read the 'name' property from 'PermissionDescriptor': Required member is undefined.")
75747585
}
75757586
if (!validPermissionNames.includes(query.name)) {
7576-
throw new TypeError("Failed to execute 'query' on 'Permissions': Failed to read the 'name' property from 'PermissionDescriptor': The provided value 's' is not a valid enum value of type PermissionName.")
7587+
throw new TypeError(`Failed to execute 'query' on 'Permissions': Failed to read the 'name' property from 'PermissionDescriptor': The provided value '${query.name}' is not a valid enum value of type PermissionName.`)
75777588
}
75787589
return Promise.resolve(new PermissionStatus(query.name, 'denied'))
75797590
}, {

build/contentScope.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11819,7 +11819,7 @@
1181911819
this.notificationFix();
1182011820
}
1182111821
if (this.getFeatureSettingEnabled('permissions')) {
11822-
const settings = this.getFeatureSettingEnabled('permissions');
11822+
const settings = this.getFeatureSetting('permissions');
1182311823
this.permissionsFix(settings);
1182411824
}
1182511825
if (this.getFeatureSettingEnabled('cleanIframeValue')) {
@@ -11916,7 +11916,18 @@
1191611916
'notifications',
1191711917
'push',
1191811918
'persistent-storage',
11919-
'midi'
11919+
'midi',
11920+
'accelerometer',
11921+
'ambient-light-sensor',
11922+
'background-sync',
11923+
'bluetooth',
11924+
'camera',
11925+
'clipboard',
11926+
'device-info',
11927+
'gyroscope',
11928+
'magnetometer',
11929+
'microphone',
11930+
'speaker'
1192011931
];
1192111932
const validPermissionNames = settings.validPermissionNames || defaultValidPermissionNames;
1192211933
permissions.query = new Proxy((query) => {
@@ -11928,7 +11939,7 @@
1192811939
throw new TypeError("Failed to execute 'query' on 'Permissions': Failed to read the 'name' property from 'PermissionDescriptor': Required member is undefined.")
1192911940
}
1193011941
if (!validPermissionNames.includes(query.name)) {
11931-
throw new TypeError("Failed to execute 'query' on 'Permissions': Failed to read the 'name' property from 'PermissionDescriptor': The provided value 's' is not a valid enum value of type PermissionName.")
11942+
throw new TypeError(`Failed to execute 'query' on 'Permissions': Failed to read the 'name' property from 'PermissionDescriptor': The provided value '${query.name}' is not a valid enum value of type PermissionName.`)
1193211943
}
1193311944
return Promise.resolve(new PermissionStatus(query.name, 'denied'))
1193411945
}, {

build/integration/contentScope.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11819,7 +11819,7 @@
1181911819
this.notificationFix();
1182011820
}
1182111821
if (this.getFeatureSettingEnabled('permissions')) {
11822-
const settings = this.getFeatureSettingEnabled('permissions');
11822+
const settings = this.getFeatureSetting('permissions');
1182311823
this.permissionsFix(settings);
1182411824
}
1182511825
if (this.getFeatureSettingEnabled('cleanIframeValue')) {
@@ -11916,7 +11916,18 @@
1191611916
'notifications',
1191711917
'push',
1191811918
'persistent-storage',
11919-
'midi'
11919+
'midi',
11920+
'accelerometer',
11921+
'ambient-light-sensor',
11922+
'background-sync',
11923+
'bluetooth',
11924+
'camera',
11925+
'clipboard',
11926+
'device-info',
11927+
'gyroscope',
11928+
'magnetometer',
11929+
'microphone',
11930+
'speaker'
1192011931
];
1192111932
const validPermissionNames = settings.validPermissionNames || defaultValidPermissionNames;
1192211933
permissions.query = new Proxy((query) => {
@@ -11928,7 +11939,7 @@
1192811939
throw new TypeError("Failed to execute 'query' on 'Permissions': Failed to read the 'name' property from 'PermissionDescriptor': Required member is undefined.")
1192911940
}
1193011941
if (!validPermissionNames.includes(query.name)) {
11931-
throw new TypeError("Failed to execute 'query' on 'Permissions': Failed to read the 'name' property from 'PermissionDescriptor': The provided value 's' is not a valid enum value of type PermissionName.")
11942+
throw new TypeError(`Failed to execute 'query' on 'Permissions': Failed to read the 'name' property from 'PermissionDescriptor': The provided value '${query.name}' is not a valid enum value of type PermissionName.`)
1193211943
}
1193311944
return Promise.resolve(new PermissionStatus(query.name, 'denied'))
1193411945
}, {

integration-test/test-web-compat.js

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ describe('Ensure Notification and Permissions interface is injected', () => {
147147
const page = await browser.newPage()
148148
// Fake the Notification API not existing in this browser
149149
const removePermissionsScript = `
150-
Object.defineProperty(window.navigator, 'permissions', { writable: true })
150+
Object.defineProperty(window.navigator, 'permissions', { writable: true, value: undefined })
151151
`
152152
function checkForPermissions () {
153153
return !!window.navigator.permissions
@@ -156,6 +156,13 @@ describe('Ensure Notification and Permissions interface is injected', () => {
156156
const descriptor = Object.getOwnPropertyDescriptor(window.navigator, 'permissions')
157157
return descriptor === undefined
158158
}
159+
function checkPermissionThrows (name) {
160+
try {
161+
window.navigator.permissions.query({ name })
162+
} catch (e) {
163+
return e.message
164+
}
165+
}
159166

160167
await gotoAndWait(page, `http://localhost:${port}/blank.html`, { site: { enabledFeatures: [] } })
161168
const initialPermissions = await page.evaluate(checkForPermissions)
@@ -181,7 +188,8 @@ describe('Ensure Notification and Permissions interface is injected', () => {
181188
'notifications',
182189
'push',
183190
'persistent-storage',
184-
'midi'
191+
'midi',
192+
'test-value'
185193
]
186194
}
187195
}
@@ -193,5 +201,12 @@ describe('Ensure Notification and Permissions interface is injected', () => {
193201
const modifiedDescriptorSerialization = await page.evaluate(checkObjectDescriptorIsNotPresent)
194202
// This fails in a test condition purely because we have to add a descriptor to modify the prop
195203
expect(modifiedDescriptorSerialization).toEqual(false)
204+
205+
const permissionThrows = await page.evaluate(checkPermissionThrows, 'not-existent')
206+
expect(permissionThrows).not.toBeUndefined()
207+
expect(permissionThrows).toContain('not-existent')
208+
209+
const doesNotThrow = await page.evaluate(checkPermissionThrows, 'test-value')
210+
expect(doesNotThrow).toBeUndefined()
196211
})
197212
})

src/features/web-compat.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export default class WebCompat extends ContentFeature {
2929
this.notificationFix()
3030
}
3131
if (this.getFeatureSettingEnabled('permissions')) {
32-
const settings = this.getFeatureSettingEnabled('permissions')
32+
const settings = this.getFeatureSetting('permissions')
3333
this.permissionsFix(settings)
3434
}
3535
if (this.getFeatureSettingEnabled('cleanIframeValue')) {
@@ -126,7 +126,18 @@ export default class WebCompat extends ContentFeature {
126126
'notifications',
127127
'push',
128128
'persistent-storage',
129-
'midi'
129+
'midi',
130+
'accelerometer',
131+
'ambient-light-sensor',
132+
'background-sync',
133+
'bluetooth',
134+
'camera',
135+
'clipboard',
136+
'device-info',
137+
'gyroscope',
138+
'magnetometer',
139+
'microphone',
140+
'speaker'
130141
]
131142
const validPermissionNames = settings.validPermissionNames || defaultValidPermissionNames
132143
permissions.query = new Proxy((query) => {
@@ -138,7 +149,7 @@ export default class WebCompat extends ContentFeature {
138149
throw new TypeError("Failed to execute 'query' on 'Permissions': Failed to read the 'name' property from 'PermissionDescriptor': Required member is undefined.")
139150
}
140151
if (!validPermissionNames.includes(query.name)) {
141-
throw new TypeError("Failed to execute 'query' on 'Permissions': Failed to read the 'name' property from 'PermissionDescriptor': The provided value 's' is not a valid enum value of type PermissionName.")
152+
throw new TypeError(`Failed to execute 'query' on 'Permissions': Failed to read the 'name' property from 'PermissionDescriptor': The provided value '${query.name}' is not a valid enum value of type PermissionName.`)
142153
}
143154
return Promise.resolve(new PermissionStatus(query.name, 'denied'))
144155
}, {

0 commit comments

Comments
 (0)