Skip to content

Commit 27f22ef

Browse files
authored
fix: Don't copy deprecated Event.path (#7782)
1 parent a14ace2 commit 27f22ef

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

src/js/utils/events.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,10 @@ export function fixEvent(event) {
117117
// Safari 6.0.3 warns you if you try to copy deprecated layerX/Y
118118
// Chrome warns you if you try to copy deprecated keyboardEvent.keyLocation
119119
// and webkitMovementX/Y
120+
// Lighthouse complains if Event.path is copied
120121
if (key !== 'layerX' && key !== 'layerY' && key !== 'keyLocation' &&
121-
key !== 'webkitMovementX' && key !== 'webkitMovementY') {
122+
key !== 'webkitMovementX' && key !== 'webkitMovementY' &&
123+
key !== 'path') {
122124
// Chrome 32+ warns if you try to copy deprecated returnValue, but
123125
// we still want to if preventDefault isn't supported (IE8).
124126
if (!(key === 'returnValue' && old.preventDefault)) {

test/unit/events.test.js

+18
Original file line numberDiff line numberDiff line change
@@ -383,3 +383,21 @@ QUnit.test('only the first event should call listener via any', function(assert)
383383
Events.trigger(el, 'event2');
384384
assert.equal(triggered, 1, 'listener was not triggered again');
385385
});
386+
387+
QUnit.test('fixEvent should not copy excluded properties', function(assert) {
388+
const event = Events.fixEvent({
389+
a: 'a',
390+
layerX: 0,
391+
layerY: 0,
392+
keyLocation: 0,
393+
webkitMovementX: 0,
394+
webkitMovementY: 0,
395+
path: 0
396+
});
397+
398+
assert.true(event.fixed_, 'event is a fixed event');
399+
assert.strictEqual(event.a, 'a', 'other props copied');
400+
['layerX', 'layerY', 'keyLocation', 'webkitMovementX', 'webkitMovementY', 'path'].forEach(prop => {
401+
assert.equal(event[prop], undefined, `${prop} is undefined`);
402+
});
403+
});

0 commit comments

Comments
 (0)