diff options
| author | Stephen Blott | 2015-01-11 11:42:02 +0000 | 
|---|---|---|
| committer | Stephen Blott | 2015-01-11 11:42:02 +0000 | 
| commit | a8096d235eae39d309c0ffd74e0d2493ff12dd22 (patch) | |
| tree | cb07ff893cbe2a9816d8b4194cfe7a82a6581ad6 | |
| parent | 355bb5fb2a06b4465a354350e2fa78ab5d53cb0b (diff) | |
| download | vimium-a8096d235eae39d309c0ffd74e0d2493ff12dd22.tar.bz2 | |
Modes; tweek tests.
| -rw-r--r-- | content_scripts/mode.coffee | 2 | ||||
| -rw-r--r-- | tests/dom_tests/dom_tests.coffee | 130 | 
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" | 
