Remove createEvent() fallbacks

We can now rely on proper constructors for our events.
This commit is contained in:
Pierre Ossman 2020-12-04 17:03:57 +01:00
parent 27496941a0
commit 6a4c411976
4 changed files with 23 additions and 94 deletions

View File

@ -25,7 +25,6 @@ import DES from "./des.js";
import KeyTable from "./input/keysym.js";
import XtScancode from "./input/xtscancodes.js";
import { encodings } from "./encodings.js";
import "./util/polyfill.js";
import RawDecoder from "./decoders/raw.js";
import CopyRectDecoder from "./decoders/copyrect.js";

View File

@ -1,23 +0,0 @@
/*
* noVNC: HTML5 VNC client
* Copyright (C) 2020 The noVNC Authors
* Licensed under MPL 2.0 or any later version (see LICENSE.txt)
*/
/* Polyfills to provide new APIs in old browsers */
/* CustomEvent constructor (taken from MDN) */
(() => {
function CustomEvent(event, params) {
params = params || { bubbles: false, cancelable: false, detail: undefined };
const evt = document.createEvent( 'CustomEvent' );
evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail );
return evt;
}
CustomEvent.prototype = window.Event.prototype;
if (typeof window.CustomEvent !== "function") {
window.CustomEvent = CustomEvent;
}
})();

View File

@ -1,17 +1,5 @@
import Base64 from '../core/base64.js';
// PhantomJS can't create Event objects directly, so we need to use this
function makeEvent(name, props) {
const evt = document.createEvent('Event');
evt.initEvent(name, true, true);
if (props) {
for (let prop in props) {
evt[prop] = props[prop];
}
}
return evt;
}
export default class FakeWebSocket {
constructor(uri, protocols) {
this.url = uri;
@ -35,7 +23,7 @@ export default class FakeWebSocket {
close(code, reason) {
this.readyState = FakeWebSocket.CLOSED;
if (this.onclose) {
this.onclose(makeEvent("close", { 'code': code, 'reason': reason, 'wasClean': true }));
this.onclose(new CloseEvent("close", { 'code': code, 'reason': reason, 'wasClean': true }));
}
}
@ -58,7 +46,7 @@ export default class FakeWebSocket {
_open() {
this.readyState = FakeWebSocket.OPEN;
if (this.onopen) {
this.onopen(makeEvent('open'));
this.onopen(new Event('open'));
}
}
@ -67,7 +55,7 @@ export default class FakeWebSocket {
// neatly packaged
for (let i = 0;i < data.length;i++) {
let buf = data.subarray(i, i+1);
this.onmessage(makeEvent("message", { 'data': buf }));
this.onmessage(new MessageEvent("message", { 'data': buf }));
}
}
}

View File

@ -2506,23 +2506,11 @@ describe('Remote Frame Buffer Protocol Client', function () {
let pos = elementToClient(x, y);
let ev;
try {
ev = new MouseEvent('mousemove',
{ 'screenX': pos.x + window.screenX,
'screenY': pos.y + window.screenY,
'clientX': pos.x,
'clientY': pos.y });
} catch (e) {
ev = document.createEvent('MouseEvent');
ev.initMouseEvent('mousemove',
true, true, window, 0,
pos.x + window.screenX,
pos.y + window.screenY,
pos.x, pos.y,
false, false, false, false,
0, null);
}
client._canvas.dispatchEvent(ev);
}
@ -2530,7 +2518,6 @@ describe('Remote Frame Buffer Protocol Client', function () {
let pos = elementToClient(x, y);
let ev;
try {
ev = new MouseEvent(down ? 'mousedown' : 'mouseup',
{ 'screenX': pos.x + window.screenX,
'screenY': pos.y + window.screenY,
@ -2538,17 +2525,6 @@ describe('Remote Frame Buffer Protocol Client', function () {
'clientY': pos.y,
'button': button,
'buttons': 1 << button });
} catch (e) {
ev = document.createEvent('MouseEvent');
ev.initMouseEvent(down ? 'mousedown' : 'mouseup',
true, true, window, 0,
pos.x + window.screenX,
pos.y + window.screenY,
pos.x, pos.y,
false, false, false, false,
button, null);
}
client._canvas.dispatchEvent(ev);
}
@ -2783,7 +2759,6 @@ describe('Remote Frame Buffer Protocol Client', function () {
let pos = elementToClient(x, y);
let ev;
try {
ev = new WheelEvent('wheel',
{ 'screenX': pos.x + window.screenX,
'screenY': pos.y + window.screenY,
@ -2792,16 +2767,6 @@ describe('Remote Frame Buffer Protocol Client', function () {
'deltaX': dx,
'deltaY': dy,
'deltaMode': mode });
} catch (e) {
ev = document.createEvent('WheelEvent');
ev.initWheelEvent('wheel', true, true, window, 0,
pos.x + window.screenX,
pos.y + window.screenY,
pos.x, pos.y,
0, null, "",
dx, dy, 0, mode);
}
client._canvas.dispatchEvent(ev);
}