diff options
| author | Stephen Blott | 2015-02-01 15:48:54 +0000 |
|---|---|---|
| committer | Stephen Blott | 2015-02-01 15:48:54 +0000 |
| commit | a9b8c4cdc176889c8ef442711109a9b5f4334c16 (patch) | |
| tree | be69020dd730339135510e54eebc450994d86f50 /content_scripts | |
| parent | 68e4aa3931babdf97c5f12dc5f655415e2073402 (diff) | |
| parent | 7939b69ffc2880ff4590d1c8dcfd5eb7492200fd (diff) | |
| download | vimium-a9b8c4cdc176889c8ef442711109a9b5f4334c16.tar.bz2 | |
Merge branch 'modes-rework-dom-tests'
Diffstat (limited to 'content_scripts')
| -rw-r--r-- | content_scripts/mode.coffee | 12 | ||||
| -rw-r--r-- | content_scripts/mode_insert.coffee | 2 | ||||
| -rw-r--r-- | content_scripts/vimium_frontend.coffee | 29 |
3 files changed, 25 insertions, 18 deletions
diff --git a/content_scripts/mode.coffee b/content_scripts/mode.coffee index acc3978e..42ea9930 100644 --- a/content_scripts/mode.coffee +++ b/content_scripts/mode.coffee @@ -169,14 +169,19 @@ class Mode log: (args...) -> console.log args... if @debug - # Return the must-recently activated mode (only used in tests). + # For tests only. @top: -> @modes[@modes.length-1] + # For tests only. + @reset: -> + mode.exit() for mode in @modes + @modes = [] + # BadgeMode is a pseudo mode for triggering badge updates on focus changes and state updates. It sits at the # bottom of the handler stack, and so it receives state changes *after* all other modes, and can override the -# badge choice of the other modes. We create the the one-and-only instance here. -new class BadgeMode extends Mode +# badge choice of the other modes. +class BadgeMode extends Mode constructor: () -> super name: "badge" @@ -200,3 +205,4 @@ new class BadgeMode extends Mode root = exports ? window root.Mode = Mode +root.BadgeMode = BadgeMode diff --git a/content_scripts/mode_insert.coffee b/content_scripts/mode_insert.coffee index eac4a3d0..6932f419 100644 --- a/content_scripts/mode_insert.coffee +++ b/content_scripts/mode_insert.coffee @@ -48,7 +48,7 @@ class InsertMode extends Mode if @insertModeLock != event.target and DomUtils.isFocusable event.target @activateOnElement event.target - # Only for tests. This gives us a hook to test the status of the permanent instance. + # Only for tests. This gives us a hook to test the status of the permanently-installed instance. InsertMode.permanentInstance = @ if @permanent isActive: (event) -> diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 725d8a53..5d56ad5b 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -103,13 +103,8 @@ frameId = Math.floor(Math.random()*999999999) hasModifiersRegex = /^<([amc]-)+.>/ -# -# Complete initialization work that sould be done prior to DOMReady. -# -initializePreDomReady = -> - settings.addEventListener("load", LinkHints.init.bind(LinkHints)) - settings.load() - +# Only exported for tests. +window.initializeModes = -> class NormalMode extends Mode constructor: -> super @@ -122,12 +117,20 @@ initializePreDomReady = -> # Install the permanent modes. The permanently-installed insert mode tracks focus/blur events, and # activates/deactivates itself accordingly. + new BadgeMode new NormalMode new PassKeysMode new InsertMode permanent: true - checkIfEnabledForUrl() +# +# Complete initialization work that sould be done prior to DOMReady. +# +initializePreDomReady = -> + settings.addEventListener("load", LinkHints.init.bind(LinkHints)) + settings.load() + initializeModes() + checkIfEnabledForUrl() refreshCompletionKeys() # Send the key to the key handler in the background page. @@ -179,7 +182,7 @@ installListener = (element, event, callback) -> # Run this as early as possible, so the page can't register any event handlers before us. # installedListeners = false -initializeWhenEnabled = (newPassKeys) -> +window.initializeWhenEnabled = (newPassKeys) -> isEnabledForUrl = true passKeys = newPassKeys if (!installedListeners) @@ -334,11 +337,9 @@ extend window, focusInput: do -> # Track the most recently focused input element. recentlyFocusedElement = null - handlerStack.push - _name: "focus-input-tracker" - focus: (event) -> - recentlyFocusedElement = event.target if DomUtils.isEditable event.target - true + window.addEventListener "focus", + (event) -> recentlyFocusedElement = event.target if DomUtils.isEditable event.target + , true (count) -> # Focus the first input element on the page, and create overlays to highlight all the input elements, with |
