From 520b63cb1d64fb5a293988122007bd05bacc49db Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Sun, 28 Feb 2016 14:01:16 +0000 Subject: Key bindings; fix tests... ... and fix two bugs: - not suppressing keyup event after keyChar matched in keydown. - we cannot check the passKeys keyChar in keyup because the key state has changed; so we track what the next keyup response should be. --- tests/dom_tests/dom_tests.coffee | 25 +++++++++---------------- tests/dom_tests/dom_tests.html | 1 + tests/unit_tests/commands_test.coffee | 2 +- 3 files changed, 11 insertions(+), 17 deletions(-) (limited to 'tests') diff --git a/tests/dom_tests/dom_tests.coffee b/tests/dom_tests/dom_tests.coffee index 8a96913f..6309525f 100644 --- a/tests/dom_tests/dom_tests.coffee +++ b/tests/dom_tests/dom_tests.coffee @@ -24,15 +24,10 @@ for type in [ "keydown", "keypress", "keyup" ] initializeModeState = -> Mode.reset() handlerStack.reset() - initializeModes() - # We use "m" as the only mapped key, "p" as a passkey, and "u" as an unmapped key. - refreshCompletionKeys - completionKeys: "mp" + initializeModes keyMapping: {m: {}, p: {}, z: {p: {}}} handlerStack.bubbleEvent "registerStateChange", enabled: true passKeys: "p" - handlerStack.bubbleEvent "registerKeyQueue", - keyQueue: "" # Tell Settings that it's been loaded. Settings.isLoaded = true @@ -375,10 +370,14 @@ context "Normal mode", sendKeyboardEvent "p" assert.equal pageKeyboardEventCount, 3 - should "suppress passKeys with a non-empty keyQueue", -> - handlerStack.bubbleEvent "registerKeyQueue", keyQueue: "p" + should "suppress passKeys with a non-empty key state (a count)", -> + sendKeyboardEvent "5" + assert.equal 0, pageKeyboardEventCount + + should "suppress passKeys with a non-empty key state (a key)", -> + sendKeyboardEvent "z" sendKeyboardEvent "p" - assert.equal pageKeyboardEventCount, 0 + assert.equal 0, pageKeyboardEventCount context "Insert mode", setup -> @@ -397,7 +396,7 @@ context "Insert mode", should "resume normal mode after leaving insert mode", -> @insertMode.exit() sendKeyboardEvent "m" - assert.equal pageKeyboardEventCount, 0 + assert.equal 0, pageKeyboardEventCount context "Triggering insert mode", setup -> @@ -502,12 +501,6 @@ context "Mode utilities", assert.isTrue test.enabled == "one" assert.isTrue test.passKeys == "two" - should "register the keyQueue", -> - test = new Mode trackState: true - handlerStack.bubbleEvent "registerKeyQueue", keyQueue: "hello" - - assert.isTrue test.keyQueue == "hello" - context "PostFindMode", setup -> initializeModeState() diff --git a/tests/dom_tests/dom_tests.html b/tests/dom_tests/dom_tests.html index 8d355c6d..8c914d3c 100644 --- a/tests/dom_tests/dom_tests.html +++ b/tests/dom_tests/dom_tests.html @@ -46,6 +46,7 @@ + diff --git a/tests/unit_tests/commands_test.coffee b/tests/unit_tests/commands_test.coffee index 45cb4cf4..f501a960 100644 --- a/tests/unit_tests/commands_test.coffee +++ b/tests/unit_tests/commands_test.coffee @@ -1,6 +1,6 @@ require "./test_helper.js" extend global, require "./test_chrome_stubs.js" -global.Settings = {postUpdateHooks: {}} +global.Settings = {postUpdateHooks: {}, get: (-> ""), set: ->} {Commands} = require "../../background_scripts/commands.js" context "Key mappings", -- cgit v1.2.3 From 9cfa00bc7db3e07c3abbeb09e483d9fdf20bbc17 Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Mon, 29 Feb 2016 06:07:01 +0000 Subject: Key bindings; refactor passKeys. Previously, the key-handling logic (keyQueue, etc) was and the backend whereas passKeys were handled in the content scripts - so they were a long way apart. Now that they're in the same place, it makes more sense to integrate passKey handling into the regular key handling, because they depend upon the same data structures. --- tests/dom_tests/dom_tests.html | 1 - 1 file changed, 1 deletion(-) (limited to 'tests') diff --git a/tests/dom_tests/dom_tests.html b/tests/dom_tests/dom_tests.html index 8c914d3c..9aa804d1 100644 --- a/tests/dom_tests/dom_tests.html +++ b/tests/dom_tests/dom_tests.html @@ -42,7 +42,6 @@ - -- cgit v1.2.3 From e4193e2752ee7132ff16a7ba977857f70df2946b Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Mon, 29 Feb 2016 06:31:43 +0000 Subject: Key bindings; tweaks. --- tests/dom_tests/dom_tests.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'tests') diff --git a/tests/dom_tests/dom_tests.coffee b/tests/dom_tests/dom_tests.coffee index 6309525f..ee61aba9 100644 --- a/tests/dom_tests/dom_tests.coffee +++ b/tests/dom_tests/dom_tests.coffee @@ -377,7 +377,7 @@ context "Normal mode", should "suppress passKeys with a non-empty key state (a key)", -> sendKeyboardEvent "z" sendKeyboardEvent "p" - assert.equal 0, pageKeyboardEventCount + assert.equal pageKeyboardEventCount, 0 context "Insert mode", setup -> @@ -396,7 +396,7 @@ context "Insert mode", should "resume normal mode after leaving insert mode", -> @insertMode.exit() sendKeyboardEvent "m" - assert.equal 0, pageKeyboardEventCount + assert.equal pageKeyboardEventCount, 0 context "Triggering insert mode", setup -> -- cgit v1.2.3 From 29708b3297a645966f7943682f8f7b8c2a332297 Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Mon, 29 Feb 2016 06:48:27 +0000 Subject: Key bindings; refactor passKeys distribution. It makes more sense to pass the passKeys directly to normalMode. So, do so, and remove the trackState mode option - which isn't otherwise being used. --- tests/dom_tests/dom_tests.coffee | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) (limited to 'tests') diff --git a/tests/dom_tests/dom_tests.coffee b/tests/dom_tests/dom_tests.coffee index ee61aba9..b5b91f42 100644 --- a/tests/dom_tests/dom_tests.coffee +++ b/tests/dom_tests/dom_tests.coffee @@ -25,9 +25,7 @@ initializeModeState = -> Mode.reset() handlerStack.reset() initializeModes keyMapping: {m: {}, p: {}, z: {p: {}}} - handlerStack.bubbleEvent "registerStateChange", - enabled: true - passKeys: "p" + normalMode.setPassKeys "p" # Tell Settings that it's been loaded. Settings.isLoaded = true @@ -494,13 +492,6 @@ context "Mode utilities", element.blur() assert.isTrue test.modeIsActive - should "register state change", -> - test = new Mode trackState: true - handlerStack.bubbleEvent "registerStateChange", { enabled: "one", passKeys: "two" } - - assert.isTrue test.enabled == "one" - assert.isTrue test.passKeys == "two" - context "PostFindMode", setup -> initializeModeState() -- cgit v1.2.3 From f6f97b373746b198a68b33040ddc4d42e9898445 Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Mon, 29 Feb 2016 09:34:10 +0000 Subject: Key bindings; add line missing from tests. --- tests/dom_tests/dom_tests.coffee | 1 + 1 file changed, 1 insertion(+) (limited to 'tests') diff --git a/tests/dom_tests/dom_tests.coffee b/tests/dom_tests/dom_tests.coffee index b5b91f42..c2c34fa8 100644 --- a/tests/dom_tests/dom_tests.coffee +++ b/tests/dom_tests/dom_tests.coffee @@ -370,6 +370,7 @@ context "Normal mode", should "suppress passKeys with a non-empty key state (a count)", -> sendKeyboardEvent "5" + sendKeyboardEvent "p" assert.equal 0, pageKeyboardEventCount should "suppress passKeys with a non-empty key state (a key)", -> -- cgit v1.2.3