diff options
| -rw-r--r-- | background_scripts/main.coffee | 2 | ||||
| -rw-r--r-- | content_scripts/mode_visual_edit.coffee | 6 | ||||
| -rw-r--r-- | content_scripts/vimium_frontend.coffee | 2 | ||||
| -rw-r--r-- | lib/settings.coffee | 1 | ||||
| -rw-r--r-- | lib/utils.coffee | 9 | ||||
| -rw-r--r-- | pages/options.coffee | 67 | ||||
| -rw-r--r-- | pages/options.html | 2 | ||||
| -rw-r--r-- | tests/unit_tests/completion_test.coffee | 3 | ||||
| -rw-r--r-- | tests/unit_tests/settings_test.coffee | 8 | ||||
| -rw-r--r-- | tests/unit_tests/test_chrome_stubs.coffee | 5 | 
10 files changed, 62 insertions, 43 deletions
| diff --git a/background_scripts/main.coffee b/background_scripts/main.coffee index d4b14f3c..28959d35 100644 --- a/background_scripts/main.coffee +++ b/background_scripts/main.coffee @@ -217,7 +217,7 @@ openUrlInIncognito = (request) ->  # We return null to avoid the return value from the copy operations being passed to sendResponse.  #  copyToClipboard = (request) -> Clipboard.copy(request.data); null -pasteFromClipboard = (request) -> Clipboard.paste(); null +pasteFromClipboard = (request) -> Clipboard.paste()  #  # Selects the tab with the ID specified in request.id diff --git a/content_scripts/mode_visual_edit.coffee b/content_scripts/mode_visual_edit.coffee index eaaf94d4..ce3caafe 100644 --- a/content_scripts/mode_visual_edit.coffee +++ b/content_scripts/mode_visual_edit.coffee @@ -374,8 +374,10 @@ class Movement extends CountPrefix    # it.    yank: (args = {}) ->      @yankedText = @selection.toString() -    @selection.deleteFromDocument() if @options.deleteFromDocument or args.deleteFromDocument -    @selection.collapseToStart() unless @options.parentMode +    if @options.deleteFromDocument or args.deleteFromDocument +      @selection.deleteFromDocument() +    else +      @selection.collapseToStart()      message = @yankedText.replace /\s+/g, " "      message = message[...12] + "..." if 15 < @yankedText.length diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 6f50fb9d..8f4c7e82 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -122,7 +122,6 @@ window.initializeModes = ->  # Complete initialization work that sould be done prior to DOMReady.  #  initializePreDomReady = -> -  initializeModes()    checkIfEnabledForUrl()    refreshCompletionKeys() @@ -186,6 +185,7 @@ installListener = (element, event, callback) ->  installedListeners = false  window.installListeners = ->    unless installedListeners +    initializeModes()      # Key event handlers fire on window before they do on document. Prefer window for key events so the page      # can't set handlers to grab the keys before us.      for type in [ "keydown", "keypress", "keyup", "click", "focus", "blur", "mousedown", "scroll" ] diff --git a/lib/settings.coffee b/lib/settings.coffee index 437e4d45..99a20963 100644 --- a/lib/settings.coffee +++ b/lib/settings.coffee @@ -163,6 +163,7 @@ Settings =      settingsVersion: Utils.getCurrentVersion()      helpDialog_showAdvancedCommands: false +    optionsPage_showAdvancedOptions: false  Settings.init() diff --git a/lib/utils.coffee b/lib/utils.coffee index 93045f32..d4beff03 100644 --- a/lib/utils.coffee +++ b/lib/utils.coffee @@ -323,10 +323,11 @@ class SimpleCache        null    rotate: (force = false) -> -    if force or @entries < Object.keys(@cache).length or @expiry < new Date() - @lastRotation -      @lastRotation = new Date() -      @previous = @cache -      @cache = {} +    Utils.nextTick => +      if force or @entries < Object.keys(@cache).length or @expiry < new Date() - @lastRotation +        @lastRotation = new Date() +        @previous = @cache +        @cache = {}    clear: ->      @rotate true diff --git a/pages/options.coffee b/pages/options.coffee index 21e81c8f..1cbe88fa 100644 --- a/pages/options.coffee +++ b/pages/options.coffee @@ -181,6 +181,24 @@ class ExclusionRulesOnPopupOption extends ExclusionRulesOption      else        @url + "*" +Options = +  exclusionRules: ExclusionRulesOption +  filterLinkHints: CheckBoxOption +  hideHud: CheckBoxOption +  keyMappings: TextOption +  linkHintCharacters: NonEmptyTextOption +  linkHintNumbers: NonEmptyTextOption +  newTabUrl: NonEmptyTextOption +  nextPatterns: NonEmptyTextOption +  previousPatterns: NonEmptyTextOption +  regexFindMode: CheckBoxOption +  scrollStepSize: NumberOption +  smoothScroll: CheckBoxOption +  grabBackFocus: CheckBoxOption +  searchEngines: TextOption +  searchUrl: NonEmptyTextOption +  userDefinedLinkHintCss: TextOption +  initOptionsPage = ->    onUpdated = ->      $("saveOptions").removeAttribute "disabled" @@ -197,18 +215,20 @@ initOptionsPage = ->        show $("linkHintCharacters")        hide $("linkHintNumbers") -  toggleAdvancedOptions = -    do (advancedMode=false) -> -      (event) -> -        if advancedMode -          $("advancedOptions").style.display = "none" -          $("advancedOptionsButton").innerHTML = "Show Advanced Options" -        else -          $("advancedOptions").style.display = "table-row-group" -          $("advancedOptionsButton").innerHTML = "Hide Advanced Options" -        advancedMode = !advancedMode -        $("advancedOptionsButton").blur() -        event.preventDefault() +  maintainAdvancedOptions = -> +    if bgSettings.get "optionsPage_showAdvancedOptions" +      $("advancedOptions").style.display = "table-row-group" +      $("advancedOptionsButton").innerHTML = "Hide Advanced Options" +    else +      $("advancedOptions").style.display = "none" +      $("advancedOptionsButton").innerHTML = "Show Advanced Options" +  maintainAdvancedOptions() + +  toggleAdvancedOptions = (event) -> +    bgSettings.set "optionsPage_showAdvancedOptions", not bgSettings.get "optionsPage_showAdvancedOptions" +    maintainAdvancedOptions() +    $("advancedOptionsButton").blur() +    event.preventDefault()    activateHelpDialog = ->      showHelpDialog chrome.extension.getBackgroundPage().helpDialogHtml(true, true, "Command Listing"), frameId @@ -236,26 +256,8 @@ initOptionsPage = ->        document.activeElement.blur() if document?.activeElement?.blur        saveOptions() -  options = -    exclusionRules: ExclusionRulesOption -    filterLinkHints: CheckBoxOption -    hideHud: CheckBoxOption -    keyMappings: TextOption -    linkHintCharacters: NonEmptyTextOption -    linkHintNumbers: NonEmptyTextOption -    newTabUrl: NonEmptyTextOption -    nextPatterns: NonEmptyTextOption -    previousPatterns: NonEmptyTextOption -    regexFindMode: CheckBoxOption -    scrollStepSize: NumberOption -    smoothScroll: CheckBoxOption -    grabBackFocus: CheckBoxOption -    searchEngines: TextOption -    searchUrl: NonEmptyTextOption -    userDefinedLinkHintCss: TextOption -    # Populate options. The constructor adds each new object to "Option.all". -  for name, type of options +  for name, type of Options      new type(name,onUpdated)    maintainLinkHintsView() @@ -317,3 +319,6 @@ document.addEventListener "DOMContentLoaded", ->    xhr.send() +# Exported for tests. +root = exports ? window +root.Options = Options diff --git a/pages/options.html b/pages/options.html index 12a3ad21..22b041b7 100644 --- a/pages/options.html +++ b/pages/options.html @@ -283,7 +283,7 @@ b: http://b.com/?q=%s description                </span>              </td>              <td id="saveOptionsTableData" nowrap> -              <button id="advancedOptionsButton">Show Advanced Options</button> +              <button id="advancedOptionsButton"></button>                <button id="saveOptions" disabled="true">No Changes</button>              </td>            </tr> diff --git a/tests/unit_tests/completion_test.coffee b/tests/unit_tests/completion_test.coffee index 4a0cf746..9ce0a466 100644 --- a/tests/unit_tests/completion_test.coffee +++ b/tests/unit_tests/completion_test.coffee @@ -4,9 +4,6 @@ extend(global, require "../../background_scripts/completion_engines.js")  extend(global, require "../../background_scripts/completion.js")  extend global, require "./test_chrome_stubs.js" -global.document = -  createElement: -> {} -  context "bookmark completer",    setup ->      @bookmark3 = { title: "bookmark3", url: "bookmark3.com" } diff --git a/tests/unit_tests/settings_test.coffee b/tests/unit_tests/settings_test.coffee index 6270ae3e..9dc25cef 100644 --- a/tests/unit_tests/settings_test.coffee +++ b/tests/unit_tests/settings_test.coffee @@ -7,6 +7,7 @@ Utils.isBackgroundPage = -> true  Utils.isExtensionPage = -> true  global.localStorage = {}  extend(global,require "../../lib/settings.js") +extend(global,require "../../pages/options.js")  context "settings", @@ -74,3 +75,10 @@ context "synced settings",    should "sync a key which is not a known setting (without crashing)", ->      chrome.storage.sync.set { notASetting: JSON.stringify("notAUsefullValue") } + +context "default valuess", + +  should "have a default value for every option", -> +    for own key of Options +      assert.isTrue key of Settings.defaults + diff --git a/tests/unit_tests/test_chrome_stubs.coffee b/tests/unit_tests/test_chrome_stubs.coffee index c6a56521..0bb6ed81 100644 --- a/tests/unit_tests/test_chrome_stubs.coffee +++ b/tests/unit_tests/test_chrome_stubs.coffee @@ -8,6 +8,10 @@  exports.window = {}  exports.localStorage = {} +global.document = +  createElement: -> {} +  addEventListener: -> +  exports.chrome =    runtime:      getManifest: () -> @@ -21,6 +25,7 @@ exports.chrome =    extension:      getURL: (path) -> path +    getBackgroundPage: -> {}    tabs:      onSelectionChanged: | 
