aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Blott2015-01-11 11:42:02 +0000
committerStephen Blott2015-01-11 11:42:02 +0000
commita8096d235eae39d309c0ffd74e0d2493ff12dd22 (patch)
treecb07ff893cbe2a9816d8b4194cfe7a82a6581ad6
parent355bb5fb2a06b4465a354350e2fa78ab5d53cb0b (diff)
downloadvimium-a8096d235eae39d309c0ffd74e0d2493ff12dd22.tar.bz2
Modes; tweek tests.
-rw-r--r--content_scripts/mode.coffee2
-rw-r--r--tests/dom_tests/dom_tests.coffee130
2 files changed, 65 insertions, 67 deletions
diff --git a/content_scripts/mode.coffee b/content_scripts/mode.coffee
index 61e51b1c..84e3e75c 100644
--- a/content_scripts/mode.coffee
+++ b/content_scripts/mode.coffee
@@ -44,7 +44,7 @@ count = 0
class Mode
# If Mode.debug is true, then we generate a trace of modes being activated and deactivated on the console, along
# with a list of the currently active modes.
- debug: true
+ debug: false
@modes: []
# Constants; short, readable names for handlerStack event-handler return values.
diff --git a/tests/dom_tests/dom_tests.coffee b/tests/dom_tests/dom_tests.coffee
index c9fab56b..c84d513d 100644
--- a/tests/dom_tests/dom_tests.coffee
+++ b/tests/dom_tests/dom_tests.coffee
@@ -262,25 +262,26 @@ createLinks = (n) ->
link.textContent = "test"
document.getElementById("test-div").appendChild link
+# For these tests, we use "m" as a mapped key, "p" ass a pass key, and "u" as an unmapped key.
context "Normal mode",
setup ->
backupStackState()
refreshCompletionKeys
- completionKeys: "o"
- validFirstKeys: "o"
+ completionKeys: [ "m" ]
+ validFirstKeys: {}
tearDown ->
restoreStackState()
should "suppress mapped keys", ->
for event in [ "keydown", "keypress", "keyup" ]
- key = mockKeyboardEvent "o"
+ key = mockKeyboardEvent "m"
handlerStack.bubbleEvent event, key
assert.isTrue key.suppressed
should "not suppress unmapped keys", ->
for event in [ "keydown", "keypress", "keyup" ]
- key = mockKeyboardEvent "a"
+ key = mockKeyboardEvent "u"
handlerStack.bubbleEvent event, key
assert.isFalse key.suppressed
@@ -288,12 +289,11 @@ context "Passkeys mode",
setup ->
backupStackState()
refreshCompletionKeys
- completionKeys: "oj"
- validFirstKeys: "oj"
+ completionKeys: "mp"
handlerStack.bubbleEvent "registerStateChange",
enabled: true
- passKeys: "j"
+ passKeys: ""
tearDown ->
restoreStackState()
@@ -303,31 +303,42 @@ context "Passkeys mode",
should "not suppress passKeys", ->
# First check normal-mode key (just to verify the framework).
+ for k in [ "m", "p" ]
+ for event in [ "keydown", "keypress", "keyup" ]
+ key = mockKeyboardEvent "p"
+ handlerStack.bubbleEvent event, key
+ assert.isTrue key.suppressed
+
+ # Install passKey.
+ handlerStack.bubbleEvent "registerStateChange",
+ enabled: true
+ passKeys: "p"
+
+ # Then verify passKey.
for event in [ "keydown", "keypress", "keyup" ]
- key = mockKeyboardEvent "o"
+ key = mockKeyboardEvent "p"
handlerStack.bubbleEvent event, key
- assert.isTrue key.suppressed
+ assert.isFalse key.suppressed
- # Then check passKey.
+ # And re-verify mapped key.
for event in [ "keydown", "keypress", "keyup" ]
- key = mockKeyboardEvent "j"
+ key = mockKeyboardEvent "m"
handlerStack.bubbleEvent event, key
- assert.isFalse key.suppressed
+ assert.isTrue key.suppressed
context "Insert mode",
setup ->
backupStackState()
refreshCompletionKeys
- completionKeys: "o"
- validFirstKeys: "o"
+ completionKeys: "m"
tearDown ->
backupStackState()
should "not suppress mapped keys in insert mode", ->
- # First check normal-mode key (just to verify the framework).
+ # First verify normal-mode key (just to verify the framework).
for event in [ "keydown", "keypress", "keyup" ]
- key = mockKeyboardEvent "o"
+ key = mockKeyboardEvent "m"
handlerStack.bubbleEvent event, key
assert.isTrue key.suppressed
@@ -336,7 +347,7 @@ context "Insert mode",
# Then verify insert mode.
for event in [ "keydown", "keypress", "keyup" ]
- key = mockKeyboardEvent "o"
+ key = mockKeyboardEvent "m"
handlerStack.bubbleEvent event, key
assert.isFalse key.suppressed
@@ -344,7 +355,7 @@ context "Insert mode",
# Then verify that insert mode has been successfully removed.
for event in [ "keydown", "keypress", "keyup" ]
- key = mockKeyboardEvent "o"
+ key = mockKeyboardEvent "m"
handlerStack.bubbleEvent event, key
assert.isTrue key.suppressed
@@ -352,8 +363,7 @@ context "Insert-mode trigger",
setup ->
backupStackState()
refreshCompletionKeys
- completionKeys: "o"
- validFirstKeys: "o"
+ completionKeys: "m"
testContent = "<input type='text' id='first'/>
<input style='display:none;' id='second'/>
@@ -409,8 +419,7 @@ context "Mode utilities",
setup ->
backupStackState()
refreshCompletionKeys
- completionKeys: "o"
- validFirstKeys: "o"
+ completionKeys: "m"
testContent = "<input type='text' id='first'/>
<input style='display:none;' id='second'/>
@@ -486,24 +495,24 @@ context "Mode utilities",
should "suppress printable keys", ->
element = document.getElementById("first")
- # Verify key is always passed through.
+ # Verify that a key is not suppressed.
for event in [ "keydown", "keypress", "keyup" ]
- key = mockKeyboardEvent "A"
+ key = mockKeyboardEvent "u"
handlerStack.bubbleEvent event, key
assert.isFalse key.suppressed
new Mode
suppressPrintableEvents: element
- # Verify key is now suppressed for keypress.
- key = mockKeyboardEvent "A"
+ # Verify that the key is now suppressed for keypress.
+ key = mockKeyboardEvent "u"
handlerStack.bubbleEvent "keypress",
extend key,
srcElement: element
assert.isTrue key.suppressed
# Verify key is not suppressed with Control key.
- key = mockKeyboardEvent "A"
+ key = mockKeyboardEvent "u"
handlerStack.bubbleEvent "keypress",
extend key,
srcElement: element
@@ -511,7 +520,7 @@ context "Mode utilities",
assert.isFalse key.suppressed
# Verify key is not suppressed with Meta key.
- key = mockKeyboardEvent "A"
+ key = mockKeyboardEvent "u"
handlerStack.bubbleEvent "keypress",
extend key,
srcElement: element
@@ -519,7 +528,7 @@ context "Mode utilities",
assert.isFalse key.suppressed
# Verify other keyboard events are not suppressed.
- key = mockKeyboardEvent "A"
+ key = mockKeyboardEvent "u"
handlerStack.bubbleEvent "keydown",
extend key,
srcElement: element
@@ -529,21 +538,27 @@ context "PostFindMode",
setup ->
backupStackState()
refreshCompletionKeys
- completionKeys: "o"
- validFirstKeys: "o"
+ completionKeys: "m"
testContent = "<input type='text' id='first'/>
<input style='display:none;' id='second'/>
<input type='password' id='third' value='some value'/>"
document.getElementById("test-div").innerHTML = testContent
+ @escape =
+ keyCode: 27
+ keyIdentifier: ""
+ stopImmediatePropagation: ->
+ preventDefault: ->
+
+ @element = document.getElementById("first")
+ @element.focus()
+
tearDown ->
restoreStackState()
document.getElementById("test-div").innerHTML = ""
should "be a singleton", ->
- element = document.getElementById("first")
- element.focus()
count = 0
class Test extends PostFindMode
@@ -556,76 +571,59 @@ context "PostFindMode",
super()
assert.isTrue count == 0
- new Test element
+ new Test @element
assert.isTrue count == 1
- new Test element
+ new Test @element
assert.isTrue count == 1
should "suppress unmapped printable keypress events", ->
- element = document.getElementById("first")
- element.focus()
-
# Verify key is passed through.
for event in [ "keydown", "keypress", "keyup" ]
- key = mockKeyboardEvent "A"
+ key = mockKeyboardEvent "u"
handlerStack.bubbleEvent event, key
assert.isFalse key.suppressed
- new PostFindMode element
+ new PostFindMode @element
# Verify key is now suppressed for keypress.
- key = mockKeyboardEvent "A"
+ key = mockKeyboardEvent "u"
handlerStack.bubbleEvent "keypress",
extend key,
- srcElement: element
+ srcElement: @element
assert.isTrue key.suppressed
# Verify other keyboard events are not suppressed.
- key = mockKeyboardEvent "A"
+ key = mockKeyboardEvent "u"
handlerStack.bubbleEvent "keydown",
extend key,
- srcElement: element
+ srcElement: @element
assert.isFalse key.suppressed
# Verify keyboard events on other elements are not suppressed.
- key = mockKeyboardEvent "A"
+ key = mockKeyboardEvent "u"
handlerStack.bubbleEvent "keypress",
extend key,
srcElement: document.body
assert.isFalse key.suppressed
should "be clickable to focus", ->
- element = document.getElementById("first")
- element.focus()
-
- new PostFindMode element
+ new PostFindMode @element
assert.isTrue Mode.modes[Mode.modes.length-1].name != "insert"
handlerStack.bubbleEvent "click", { target: document.activeElement }
assert.isTrue Mode.modes[Mode.modes.length-1].name == "insert"
should "enter insert mode on immediate escape", ->
- escape =
- keyCode: 27
- element = document.getElementById("first")
- element.focus()
- new PostFindMode element
+ new PostFindMode @element
assert.isTrue Mode.modes[Mode.modes.length-1].name != "insert"
- handlerStack.bubbleEvent "keydown", escape
+ handlerStack.bubbleEvent "keydown", @escape
assert.isTrue Mode.modes[Mode.modes.length-1].name == "insert"
- should "enter not insert mode on subsequent escape", ->
- escape =
- keyCode: 27
- keyIdentifier: ""
- stopImmediatePropagation: ->
- element = document.getElementById("first")
- element.focus()
-
- new PostFindMode element
+ should "not enter insert mode on subsequent escape", ->
+ new PostFindMode @element
assert.isTrue Mode.modes[Mode.modes.length-1].name == "post-find"
- handlerStack.bubbleEvent "keydown", mockKeyboardEvent "A"
- handlerStack.bubbleEvent "keydown", escape
+ handlerStack.bubbleEvent "keydown", mockKeyboardEvent "u"
+ handlerStack.bubbleEvent "keydown", @escape
assert.isTrue Mode.modes[Mode.modes.length-1].name == "post-find"