From 8c51e9a8a28afb0a46570fa557dab511d4af6d15 Mon Sep 17 00:00:00 2001 From: Pierre Ossman Date: Thu, 31 Oct 2019 15:36:40 +0100 Subject: [PATCH] Revert iOS keyup workaround It seems Apple has fixed their buggy keyup events, so remove the workaround and allow keys to be kept pressed again. This is a revert of 9e99ce126ca8f6f350fa015c0e58d35103c62f7e. --- core/input/keyboard.js | 4 +--- tests/test.keyboard.js | 48 ------------------------------------------ 2 files changed, 1 insertion(+), 51 deletions(-) diff --git a/core/input/keyboard.js b/core/input/keyboard.js index 0f2a9deb..764288a5 100644 --- a/core/input/keyboard.js +++ b/core/input/keyboard.js @@ -118,9 +118,7 @@ export default class Keyboard { // We cannot handle keys we cannot track, but we also need // to deal with virtual keyboards which omit key info - // (iOS omits tracking info on keyup events, which forces us to - // special treat that platform here) - if ((code === 'Unidentified') || browser.isIOS()) { + if (code === 'Unidentified') { if (keysym) { // If it's a virtual keyboard then it should be // sufficient to just send press and release right diff --git a/tests/test.keyboard.js b/tests/test.keyboard.js index 331a85b5..170149fc 100644 --- a/tests/test.keyboard.js +++ b/tests/test.keyboard.js @@ -175,54 +175,6 @@ describe('Key Event Handling', function () { }; kbd._handleKeyDown(keyevent('keydown', {code: 'Unidentified', key: 'a'})); }); - - describe('iOS', function () { - let origNavigator; - beforeEach(function () { - // window.navigator is a protected read-only property in many - // environments, so we need to redefine it whilst running these - // tests. - origNavigator = Object.getOwnPropertyDescriptor(window, "navigator"); - if (origNavigator === undefined) { - // Object.getOwnPropertyDescriptor() doesn't work - // properly in any version of IE - this.skip(); - } - - Object.defineProperty(window, "navigator", {value: {}}); - if (window.navigator.platform !== undefined) { - // Object.defineProperty() doesn't work properly in old - // versions of Chrome - this.skip(); - } - - window.navigator.platform = "iPhone 9.0"; - }); - afterEach(function () { - Object.defineProperty(window, "navigator", origNavigator); - }); - - it('should fake keyup events on iOS', function (done) { - if (browser.isIE() || browser.isEdge()) this.skip(); - let count = 0; - const kbd = new Keyboard(document); - kbd.onkeyevent = (keysym, code, down) => { - switch (count++) { - case 0: - expect(keysym).to.be.equal(0x61); - expect(code).to.be.equal('KeyA'); - expect(down).to.be.equal(true); - break; - case 1: - expect(keysym).to.be.equal(0x61); - expect(code).to.be.equal('KeyA'); - expect(down).to.be.equal(false); - done(); - } - }; - kbd._handleKeyDown(keyevent('keydown', {code: 'KeyA', key: 'a'})); - }); - }); }); describe('Track Key State', function () {