From 6a4c411976cd5a49103d1d79acf771b8697c9f9c Mon Sep 17 00:00:00 2001 From: Pierre Ossman Date: Fri, 4 Dec 2020 17:03:57 +0100 Subject: [PATCH] Remove createEvent() fallbacks We can now rely on proper constructors for our events. --- core/rfb.js | 1 - core/util/polyfill.js | 23 ------------- tests/fake.websocket.js | 18 ++-------- tests/test.rfb.js | 75 +++++++++++------------------------------ 4 files changed, 23 insertions(+), 94 deletions(-) delete mode 100644 core/util/polyfill.js diff --git a/core/rfb.js b/core/rfb.js index 7e177ba..26cdfcd 100644 --- a/core/rfb.js +++ b/core/rfb.js @@ -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"; diff --git a/core/util/polyfill.js b/core/util/polyfill.js deleted file mode 100644 index 78715a8..0000000 --- a/core/util/polyfill.js +++ /dev/null @@ -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; - } -})(); diff --git a/tests/fake.websocket.js b/tests/fake.websocket.js index 623b25e..4db3c59 100644 --- a/tests/fake.websocket.js +++ b/tests/fake.websocket.js @@ -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 })); } } } diff --git a/tests/test.rfb.js b/tests/test.rfb.js index bdca2f7..d5a9adc 100644 --- a/tests/test.rfb.js +++ b/tests/test.rfb.js @@ -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); - } - + ev = new MouseEvent('mousemove', + { 'screenX': pos.x + window.screenX, + 'screenY': pos.y + window.screenY, + 'clientX': pos.x, + 'clientY': pos.y }); client._canvas.dispatchEvent(ev); } @@ -2530,25 +2518,13 @@ 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, - 'clientX': pos.x, - '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); - } - + ev = new MouseEvent(down ? 'mousedown' : 'mouseup', + { 'screenX': pos.x + window.screenX, + 'screenY': pos.y + window.screenY, + 'clientX': pos.x, + 'clientY': pos.y, + 'button': button, + 'buttons': 1 << button }); client._canvas.dispatchEvent(ev); } @@ -2783,25 +2759,14 @@ 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, - 'clientX': pos.x, - 'clientY': pos.y, - '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); - } - + ev = new WheelEvent('wheel', + { 'screenX': pos.x + window.screenX, + 'screenY': pos.y + window.screenY, + 'clientX': pos.x, + 'clientY': pos.y, + 'deltaX': dx, + 'deltaY': dy, + 'deltaMode': mode }); client._canvas.dispatchEvent(ev); } -- 2.39.2